This commit is contained in:
be5invis 2023-05-24 23:34:09 -07:00
parent 539c828605
commit 942deb3bbe
7 changed files with 395 additions and 430 deletions

View file

@ -707,7 +707,7 @@ lower-lambda = "straight-turn"
cyrl-ef = "serifless"
cyrl-capital-ka = "symmetric-connected-serifless"
cyrl-ka = "symmetric-connected-serifless"
cyrl-capital-u = "straight"
cyrl-capital-u = "straight-serifless"
at = "fourfold"
percent = "rings-continuous-slash"
@ -739,7 +739,7 @@ lower-lambda = "straight-turn"
cyrl-ef = "serifless"
cyrl-capital-ka = "symmetric-connected-serifless"
cyrl-ka = "symmetric-connected-serifless"
cyrl-capital-u = "straight"
cyrl-capital-u = "straight-serifless"
at = "fourfold"
percent = "rings-continuous-slash"

View file

@ -1,10 +1,7 @@
* \[**BREAKING**\] Add taller slash, broken slash and broken zero variants for Zero. As a result, current variants are reordered (#1307, #1509, #1678).
* \[**BREAKING**\] Add above-baseline crossed variant for Q. As a result, current variants are reordered (#1533).
* \[**BREAKING**\] Rectify the variant atlas. As a result, if a character's variant list has motion-serifed, then it will have serifless and serifed variants: the serifed-ness will no longer be controlled by SLAB variable. The characters influenced are `M`, `N`, `P`, `R`, `U`, `V`, `W`, `b`, `h`, `m`, `n`, `p`, `q`, `u`, `v`, `w`, `y`.
* \[**BREAKING**\] Renamed and/or reordered the variants of the following letters:
- `K`, `k`, Cyrillic Ka.
- `r`.
- `W`, `w`.
* \[**BREAKING**\] Renamed and/or reordered various variants.
* Add Characters:
- CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN (`U+29BC`).
- CIRCLED WHITE BULLET (`U+29BE`).

View file

@ -1,6 +1,6 @@
$$include '../../../meta/macros.ptl'
import [mix linreg clamp fallback] from"../../../support/utils.mjs"
import [mix linreg fallback SuffixCfg] from"../../../support/utils.mjs"
import [LowerYDotAtBelow Dotless CvDecompose MathSansSerif OgonekTrY] from"../../../support/gr.mjs"
glyph-module
@ -242,35 +242,18 @@ glyph-block Letter-Latin-Lower-Y : begin
include : Scale 1 (-1)
include : Translate 0 (+[mix bottom top 0.5])
define NonCursiveConfig : object
# suffix straightBar bottomShape slabKind
straight { true BS-STRAIGHT SLAB-AUTO }
straightTurn { true BS-TURN SLAB-AUTO }
straightLoop { true BS-LOOP SLAB-AUTO }
curly { false BS-STRAIGHT SLAB-AUTO }
curlyTurn { false BS-TURN SLAB-AUTO }
curlyLoop { false BS-LOOP SLAB-AUTO }
straightSerifless { true BS-STRAIGHT SLAB-NONE }
straightTurnSerifless { true BS-TURN SLAB-NONE }
straightLoopSerifless { true BS-LOOP SLAB-NONE }
curlySerifless { false BS-STRAIGHT SLAB-NONE }
curlyTurnSerifless { false BS-TURN SLAB-NONE }
curlyLoopSerifless { false BS-LOOP SLAB-NONE }
straightSerifed { true BS-STRAIGHT SLAB-ALL }
straightTurnSerifed { true BS-TURN SLAB-ALL }
straightLoopSerifed { true BS-LOOP SLAB-ALL }
curlySerifed { false BS-STRAIGHT SLAB-ALL }
curlyTurnSerifed { false BS-TURN SLAB-ALL }
curlyLoopSerifed { false BS-LOOP SLAB-ALL }
straightMotionSerifed { true BS-STRAIGHT SLAB-MOTION }
straightTurnMotionSerifed { true BS-TURN SLAB-MOTION }
straightLoopMotionSerifed { true BS-LOOP SLAB-MOTION }
curlyMotionSerifed { false BS-STRAIGHT SLAB-MOTION }
curlyTurnMotionSerifed { false BS-TURN SLAB-MOTION }
curlyLoopMotionSerifed { false BS-LOOP SLAB-MOTION }
define NonCursiveConfig : SuffixCfg.weave
object # body
straight true
curly false
object # hook
"" BS-STRAIGHT
turn BS-TURN
loop BS-LOOP
object # serifs
serifless SLAB-NONE
serifed SLAB-ALL
motionSerifed SLAB-MOTION
foreach { suffix { straightBar bottomShape slabKind } } [Object.entries NonCursiveConfig] : do
define Shapes : GenNonCursiveShape straightBar bottomShape slabKind
@ -336,15 +319,14 @@ glyph-block Letter-Latin-Lower-Y : begin
if doSlabMotion sf.lt.outer sf.lt.full
if doSlabMotion [no-shape] sf.rt.full
define CursiveConfig : object
cursive { Cursive.Hook SLAB-AUTO }
cursiveFlatHook { Cursive.FlatHook SLAB-AUTO }
cursiveSerifless { Cursive.Hook SLAB-NONE }
cursiveFlatHookSerifless { Cursive.FlatHook SLAB-NONE }
cursiveMotionSerifed { Cursive.Hook SLAB-CURSIVE-MOTION }
cursiveFlatHookMotionSerifed { Cursive.FlatHook SLAB-CURSIVE-MOTION }
cursiveSerifed { Cursive.Hook SLAB-ALL }
cursiveFlatHookSerifed { Cursive.FlatHook SLAB-ALL }
define CursiveConfig : SuffixCfg.weave
object # body
cursive Cursive.Hook
cursiveFlatHook Cursive.FlatHook
object # serifs
serifless SLAB-NONE
serifed SLAB-ALL
motionSerifed SLAB-MOTION
foreach { suffix { hookShape slabKind } } [Object.entries CursiveConfig] : do
create-glyph "y.\(suffix)" : glyph-proc

View file

@ -390,12 +390,17 @@ function byTagPreference(a, b) {
}
function queryCvFeatureTagsOf(sink, gid, glyph, tagSet) {
const cvs = AnyCv.query(glyph).sort(byTagPreference);
let existingFeatures = new Map();
let existingTargets = new Set();
for (const gr of cvs) {
const target = gr.get(glyph);
if (target === gid) continue;
if (existingTargets.has(target)) continue;
existingTargets.add(target);
let series = existingFeatures.get(gr.tag);
if (!series) {
if (tagSet) {

View file

@ -295,7 +295,7 @@ class VbStageAlternative {
for (const [selector, suffix] of Object.entries(this.selectorAffix))
ans.addSelectorAffix(this.mode, selector, suffix);
if (!this.next) {
if (!this.next || this.next === "END") {
ans.rank = ++globalState.rank;
globalState.sink.push(ans);
return null;

File diff suppressed because it is too large Load diff

View file

@ -78,7 +78,9 @@ function putFeatSeries(store, k, featSeriesList) {
if (!featSeriesList) return null;
let reduced = [];
for (const featSeries of featSeriesList) {
for (const _featSeries of featSeriesList) {
const featSeries = ValidateFeatureSeries(_featSeries);
const key =
featSeries.name +
";;" +
@ -89,9 +91,8 @@ function putFeatSeries(store, k, featSeriesList) {
reduced.push(vs[0]);
} else {
const idNeo = store.size;
const validated = ValidateFeatureSeries(featSeries);
if (!validated) continue;
store.set(key, [idNeo, validated]);
if (!featSeries) continue;
store.set(key, [idNeo, featSeries]);
reduced.push(idNeo);
}
}