Cont
This commit is contained in:
parent
539c828605
commit
942deb3bbe
7 changed files with 395 additions and 430 deletions
|
@ -707,7 +707,7 @@ lower-lambda = "straight-turn"
|
||||||
cyrl-ef = "serifless"
|
cyrl-ef = "serifless"
|
||||||
cyrl-capital-ka = "symmetric-connected-serifless"
|
cyrl-capital-ka = "symmetric-connected-serifless"
|
||||||
cyrl-ka = "symmetric-connected-serifless"
|
cyrl-ka = "symmetric-connected-serifless"
|
||||||
cyrl-capital-u = "straight"
|
cyrl-capital-u = "straight-serifless"
|
||||||
at = "fourfold"
|
at = "fourfold"
|
||||||
percent = "rings-continuous-slash"
|
percent = "rings-continuous-slash"
|
||||||
|
|
||||||
|
@ -739,7 +739,7 @@ lower-lambda = "straight-turn"
|
||||||
cyrl-ef = "serifless"
|
cyrl-ef = "serifless"
|
||||||
cyrl-capital-ka = "symmetric-connected-serifless"
|
cyrl-capital-ka = "symmetric-connected-serifless"
|
||||||
cyrl-ka = "symmetric-connected-serifless"
|
cyrl-ka = "symmetric-connected-serifless"
|
||||||
cyrl-capital-u = "straight"
|
cyrl-capital-u = "straight-serifless"
|
||||||
at = "fourfold"
|
at = "fourfold"
|
||||||
percent = "rings-continuous-slash"
|
percent = "rings-continuous-slash"
|
||||||
|
|
||||||
|
|
|
@ -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 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**\] 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**\] 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:
|
* \[**BREAKING**\] Renamed and/or reordered various variants.
|
||||||
- `K`, `k`, Cyrillic Ka.
|
|
||||||
- `r`.
|
|
||||||
- `W`, `w`.
|
|
||||||
* Add Characters:
|
* Add Characters:
|
||||||
- CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN (`U+29BC`).
|
- CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN (`U+29BC`).
|
||||||
- CIRCLED WHITE BULLET (`U+29BE`).
|
- CIRCLED WHITE BULLET (`U+29BE`).
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
$$include '../../../meta/macros.ptl'
|
$$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"
|
import [LowerYDotAtBelow Dotless CvDecompose MathSansSerif OgonekTrY] from"../../../support/gr.mjs"
|
||||||
|
|
||||||
glyph-module
|
glyph-module
|
||||||
|
@ -242,35 +242,18 @@ glyph-block Letter-Latin-Lower-Y : begin
|
||||||
include : Scale 1 (-1)
|
include : Scale 1 (-1)
|
||||||
include : Translate 0 (+[mix bottom top 0.5])
|
include : Translate 0 (+[mix bottom top 0.5])
|
||||||
|
|
||||||
define NonCursiveConfig : object
|
define NonCursiveConfig : SuffixCfg.weave
|
||||||
# suffix straightBar bottomShape slabKind
|
object # body
|
||||||
straight { true BS-STRAIGHT SLAB-AUTO }
|
straight true
|
||||||
straightTurn { true BS-TURN SLAB-AUTO }
|
curly false
|
||||||
straightLoop { true BS-LOOP SLAB-AUTO }
|
object # hook
|
||||||
curly { false BS-STRAIGHT SLAB-AUTO }
|
"" BS-STRAIGHT
|
||||||
curlyTurn { false BS-TURN SLAB-AUTO }
|
turn BS-TURN
|
||||||
curlyLoop { false BS-LOOP SLAB-AUTO }
|
loop BS-LOOP
|
||||||
|
object # serifs
|
||||||
straightSerifless { true BS-STRAIGHT SLAB-NONE }
|
serifless SLAB-NONE
|
||||||
straightTurnSerifless { true BS-TURN SLAB-NONE }
|
serifed SLAB-ALL
|
||||||
straightLoopSerifless { true BS-LOOP SLAB-NONE }
|
motionSerifed SLAB-MOTION
|
||||||
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 }
|
|
||||||
|
|
||||||
foreach { suffix { straightBar bottomShape slabKind } } [Object.entries NonCursiveConfig] : do
|
foreach { suffix { straightBar bottomShape slabKind } } [Object.entries NonCursiveConfig] : do
|
||||||
define Shapes : GenNonCursiveShape straightBar bottomShape slabKind
|
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 sf.lt.outer sf.lt.full
|
||||||
if doSlabMotion [no-shape] sf.rt.full
|
if doSlabMotion [no-shape] sf.rt.full
|
||||||
|
|
||||||
define CursiveConfig : object
|
define CursiveConfig : SuffixCfg.weave
|
||||||
cursive { Cursive.Hook SLAB-AUTO }
|
object # body
|
||||||
cursiveFlatHook { Cursive.FlatHook SLAB-AUTO }
|
cursive Cursive.Hook
|
||||||
cursiveSerifless { Cursive.Hook SLAB-NONE }
|
cursiveFlatHook Cursive.FlatHook
|
||||||
cursiveFlatHookSerifless { Cursive.FlatHook SLAB-NONE }
|
object # serifs
|
||||||
cursiveMotionSerifed { Cursive.Hook SLAB-CURSIVE-MOTION }
|
serifless SLAB-NONE
|
||||||
cursiveFlatHookMotionSerifed { Cursive.FlatHook SLAB-CURSIVE-MOTION }
|
serifed SLAB-ALL
|
||||||
cursiveSerifed { Cursive.Hook SLAB-ALL }
|
motionSerifed SLAB-MOTION
|
||||||
cursiveFlatHookSerifed { Cursive.FlatHook SLAB-ALL }
|
|
||||||
|
|
||||||
foreach { suffix { hookShape slabKind } } [Object.entries CursiveConfig] : do
|
foreach { suffix { hookShape slabKind } } [Object.entries CursiveConfig] : do
|
||||||
create-glyph "y.\(suffix)" : glyph-proc
|
create-glyph "y.\(suffix)" : glyph-proc
|
||||||
|
|
|
@ -390,12 +390,17 @@ function byTagPreference(a, b) {
|
||||||
}
|
}
|
||||||
function queryCvFeatureTagsOf(sink, gid, glyph, tagSet) {
|
function queryCvFeatureTagsOf(sink, gid, glyph, tagSet) {
|
||||||
const cvs = AnyCv.query(glyph).sort(byTagPreference);
|
const cvs = AnyCv.query(glyph).sort(byTagPreference);
|
||||||
|
|
||||||
let existingFeatures = new Map();
|
let existingFeatures = new Map();
|
||||||
|
let existingTargets = new Set();
|
||||||
|
|
||||||
for (const gr of cvs) {
|
for (const gr of cvs) {
|
||||||
const target = gr.get(glyph);
|
const target = gr.get(glyph);
|
||||||
if (target === gid) continue;
|
if (target === gid) continue;
|
||||||
|
|
||||||
|
if (existingTargets.has(target)) continue;
|
||||||
|
existingTargets.add(target);
|
||||||
|
|
||||||
let series = existingFeatures.get(gr.tag);
|
let series = existingFeatures.get(gr.tag);
|
||||||
if (!series) {
|
if (!series) {
|
||||||
if (tagSet) {
|
if (tagSet) {
|
||||||
|
|
|
@ -295,7 +295,7 @@ class VbStageAlternative {
|
||||||
for (const [selector, suffix] of Object.entries(this.selectorAffix))
|
for (const [selector, suffix] of Object.entries(this.selectorAffix))
|
||||||
ans.addSelectorAffix(this.mode, selector, suffix);
|
ans.addSelectorAffix(this.mode, selector, suffix);
|
||||||
|
|
||||||
if (!this.next) {
|
if (!this.next || this.next === "END") {
|
||||||
ans.rank = ++globalState.rank;
|
ans.rank = ++globalState.rank;
|
||||||
globalState.sink.push(ans);
|
globalState.sink.push(ans);
|
||||||
return null;
|
return null;
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -78,7 +78,9 @@ function putFeatSeries(store, k, featSeriesList) {
|
||||||
if (!featSeriesList) return null;
|
if (!featSeriesList) return null;
|
||||||
|
|
||||||
let reduced = [];
|
let reduced = [];
|
||||||
for (const featSeries of featSeriesList) {
|
for (const _featSeries of featSeriesList) {
|
||||||
|
const featSeries = ValidateFeatureSeries(_featSeries);
|
||||||
|
|
||||||
const key =
|
const key =
|
||||||
featSeries.name +
|
featSeries.name +
|
||||||
";;" +
|
";;" +
|
||||||
|
@ -89,9 +91,8 @@ function putFeatSeries(store, k, featSeriesList) {
|
||||||
reduced.push(vs[0]);
|
reduced.push(vs[0]);
|
||||||
} else {
|
} else {
|
||||||
const idNeo = store.size;
|
const idNeo = store.size;
|
||||||
const validated = ValidateFeatureSeries(featSeries);
|
if (!featSeries) continue;
|
||||||
if (!validated) continue;
|
store.set(key, [idNeo, featSeries]);
|
||||||
store.set(key, [idNeo, validated]);
|
|
||||||
reduced.push(idNeo);
|
reduced.push(idNeo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue