Add variant selectors For Cyrillic Lower A/Ve. (#2428)

This commit is contained in:
John McWilliams 2024-07-23 20:22:26 -04:00 committed by GitHub
parent 4e9c3bce9d
commit 0a222e1989
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 274 additions and 32 deletions

View file

@ -706,10 +706,9 @@ eszet = "longs-s-lig-serifless"
lower-iota = "flat-tailed"
lower-lambda = "straight-turn"
lower-tau = "short-tailed"
cyrl-a = "double-storey-serifless"
cyrl-u = "straight-serifless"
cyrl-ef = "split-serifless"
cyrl-yeri = "corner"
cyrl-yery = "corner"
four = "closed-serifless"
six = "closed-contour"
nine = "closed-contour"

View file

@ -1 +1,2 @@
* Add separate variant selectors For Cyrillic Lower A/Ve (`VXAF`, `VXAG`).
* Optimize the shape of rounded `e` (#2424).

View file

@ -171,5 +171,5 @@ glyph-block Letter-Cyrillic-Iotified-A : begin
include : Iotified.full df XH df.middle (XH / 2)
select-variant 'cyrl/AIotified' 0xA656 (follow -- 'A')
select-variant 'cyrl/aIotified' 0xA657 (follow -- 'a')
select-variant 'cyrl/aIotified' 0xA657 (follow -- 'cyrl/a')
select-variant 'latn/eIotified' 0xAB61 (follow -- 'e')

View file

@ -8,7 +8,6 @@ glyph-block Letter-Cyrillic-Orthography : begin
glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared : CreateAccentedComposition
orthographic-italic 'cyrl/ve' 0x432
orthographic-italic 'cyrl/ghe' 0x433
orthographic-italic 'cyrl/de' 0x434
orthographic-italic 'cyrl/i' 0x438

View file

@ -404,6 +404,7 @@ glyph-block Letter-Latin-Lower-AE-OE : begin
select-variant "ue/u"
select-variant "au/u" (follow -- [if [MEnoughSpaceForFullSerifs : dfM] 'au/u/full' 'au/u/reduced'])
select-variant "oeOpenO/left" (follow -- 'c')
select-variant "cyrl/ae/a" (shapeFrom -- 'ae/a')
select-variant "cyrl/yae/left"
select-variant "cyrl/rha/left" (follow -- 'cyrl/er')
select-variant "cyrl/rha/right"
@ -418,13 +419,13 @@ glyph-block Letter-Latin-Lower-AE-OE : begin
derive-composites 'oo' 0xA74F 'oe/o' 'ao/o'
derive-composites 'uo' 0xAB63 'ue/u' 'ao/o'
derive-composites 'oeOpenO' 0xAB62 'oeOpenO/left' 'ae/e'
derive-composites 'aeInvE' 0xAB31 'ae/a' 'aeInvE/right'
derive-composites 'oeInv' 0xAB40 'oe/o' 'aeInvE/right'
derive-composites 'aeInvE' 0xAB31 'ae/a' 'aeInvE/right'
derive-composites 'oeInv' 0xAB40 'oe/o' 'aeInvE/right'
derive-composites 'cyrl/ae' 0x4D5 'cyrl/ae/a' 'ae/e'
derive-composites 'cyrl/lha' 0x515 'cyrl/lha/left' 'cyrl/lha/right'
derive-composites 'cyrl/Lha' 0x514 'cyrl/Lha/left' 'cyrl/Lha/right'
derive-composites 'cyrl/yae' 0x519 'cyrl/yae/left' 'ae/e'
alias 'cyrl/ae' 0x4D5 'ae'
alias 'cyrl/oo' 0xA699 'oo'
CreateTurnedLetter 'turnae' 0x1D02 'ae' HalfAdvance (XH / 2) [DivFrame para.diversityM 3]

View file

@ -292,7 +292,7 @@ glyph-block Letter-Latin-Lower-A : begin
link-reduced-variant 'a/sansSerif' 'a' MathSansSerif
link-reduced-variant 'a/rtailBase' 'a'
link-reduced-variant 'a/turnABase' 'a'
alias 'cyrl/a' 0x430 'a'
select-variant 'cyrl/a' 0x430 (shapeFrom -- 'a')
CreateTurnedLetter 'turna' 0x250 'a/turnABase' HalfAdvance (XH / 2)

View file

@ -149,12 +149,12 @@ glyph-block Letter-Latin-Upper-B : begin
include [refer-glyph "B.\(suffix)"] AS_BASE ALSO_METRICS
include : BOverlayBar CAP bp
if (!fAsymmetric) : create-glyph "smcpB.\(suffix)" : glyph-proc
if (!fAsymmetric) : create-glyph "cyrl/ve.\(suffix)" : glyph-proc
include : MarkSet.e
include : body XH [AdviceStroke2 2 3 XH] ts bs
if (!fGap && !fAsymmetric) : create-glyph "smcpBBar.\(suffix)" : glyph-proc
include [refer-glyph "smcpB.\(suffix)"] AS_BASE ALSO_METRICS
include [refer-glyph "cyrl/ve.\(suffix)"] AS_BASE ALSO_METRICS
include : BOverlayBar XH bp
create-glyph "currency/baht.\(suffix)" : union
@ -185,26 +185,12 @@ glyph-block Letter-Latin-Upper-B : begin
alias-reduced-variant 'grek/Beta/sansSerif' 'grek/Beta' 'B/sansSerif' MathSansSerif
alias 'cyrl/Ve' 0x412 'B'
select-variant 'smcpB' 0x299
alias 'cyrl/ve.upright' null 'smcpB'
select-variant 'BBar'
select-variant 'smcpBBar' 0x1D03
select-variant 'Bhookleft' 0x181
create-glyph 'mathbb/B' 0x1D539 : glyph-proc
include : MarkSet.capital
include : union
BShape CAP (stroke -- BBS) (serifs -- false)
intersection
BShapeMask CAP (stroke -- BBS)
union
VBar.r (RightSB - BBD - OX * 2) 0 (CAP * BBarPos) BBS
VBar.r ([mix SB RightSB BArcMix] - BBD - OX * 2) (CAP * BBarPos) CAP BBS
VBar.l (SB + BBD) 0 CAP BBS
define [ItalicCyrveShape top] : glyph-proc
define [CursiveCyrveShape top] : glyph-proc
local stroke : AdviceStroke2 2 3 top
local mid : mix RightSB SB 0.65
local midy : top * HBarPos
@ -226,15 +212,30 @@ glyph-block Letter-Latin-Upper-B : begin
flat Middle (midy + (fine - stroke / 2)) [widths.heading fine 0 Leftward]
curl mid (midy + (fine - stroke / 2)) [widths.heading fine 0 Leftward]
create-glyph 'cyrl/ve.italic' : glyph-proc
create-glyph 'cyrl/ve.cursive' : glyph-proc
include : MarkSet.e
include : ItalicCyrveShape XH
include : CursiveCyrveShape XH
create-glyph 'grek/betaSymbol' 0x3D0 : glyph-proc
create-glyph 'cyrl/ve.cursiveTall' : glyph-proc
include : MarkSet.b
include : ItalicCyrveShape Ascender
include : CursiveCyrveShape Ascender
alias 'cyrl/ve.BGR' null 'grek/betaSymbol'
select-variant 'cyrl/ve' 0x432
select-variant 'smcpB' 0x299 (shapeFrom -- 'cyrl/ve')
alias 'grek/betaSymbol' 0x3D0 'cyrl/ve.cursiveTall'
alias 'cyrl/ve.BGR' null 'cyrl/ve.cursiveTall'
create-glyph 'mathbb/B' 0x1D539 : glyph-proc
include : MarkSet.capital
include : union
BShape CAP (stroke -- BBS) (serifs -- false)
intersection
BShapeMask CAP (stroke -- BBS)
union
VBar.r (RightSB - BBD - OX * 2) 0 (CAP * BBarPos) BBS
VBar.r ([mix SB RightSB BArcMix] - BBD - OX * 2) (CAP * BBarPos) CAP BBS
VBar.l (SB + BBD) 0 CAP BBS
create-glyph 'grek/beta' 0x3B2 : glyph-proc
include : MarkSet.bp

View file

@ -5372,6 +5372,183 @@ selectorAffix."grek/chi/sansSerif" = "serifless"
[prime.cyrl-a]
sampler = "а"
samplerExplain = "Cyrillic A"
nonBreakingTagForNewVariantSelector = "VXAF" # REMOVE IN NEXT MAJOR VERSION CHANGE
tagKind = "letter"
[prime.cyrl-a.variants-buildup]
entry = "storey"
descriptionLeader = "Cyrillic Lower A (`а`)"
[prime.cyrl-a.variants-buildup.stages.storey.double-storey]
rank = 1
next = "double-storey-hook"
descriptionAffix = "double-storey body"
selectorAffix."cyrl/a" = "doubleStorey"
selectorAffix."cyrl/ae/a" = "doubleStorey"
[prime.cyrl-a.variants-buildup.stages.storey.single-storey]
rank = 2
next = "ear"
descriptionAffix = "single-storey body"
selectorAffix."cyrl/a" = "singleStorey"
selectorAffix."cyrl/ae/a" = "doubleStorey"
[prime.cyrl-a.variants-buildup.stages.double-storey-hook."*"]
next = "bar"
[prime.cyrl-a.variants-buildup.stages.double-storey-hook.hook-serifless]
rank = 1
keyAffix = ""
descriptionAffix = "serifless hook"
selectorAffix."cyrl/a" = ""
selectorAffix."cyrl/ae/a" = ""
[prime.cyrl-a.variants-buildup.stages.double-storey-hook.hook-serifed]
rank = 2
keyAffix = "hook-inward-serifed"
descriptionAffix = "serifed hook"
selectorAffix."cyrl/a" = "hookInwardSerifed"
selectorAffix."cyrl/ae/a" = "hookInwardSerifed"
[prime.cyrl-a.variants-buildup.stages.ear."*"]
next = "bar"
[prime.cyrl-a.variants-buildup.stages.ear.eared]
rank = 1
keyAffix = ""
selectorAffix."cyrl/a" = ""
selectorAffix."cyrl/ae/a" = ""
[prime.cyrl-a.variants-buildup.stages.ear.earless-corner]
rank = 2
descriptionAffix = "earless (cornered top-right)"
selectorAffix."cyrl/a" = "earlessCorner"
selectorAffix."cyrl/ae/a" = ""
[prime.cyrl-a.variants-buildup.stages.ear.earless-rounded]
rank = 3
descriptionAffix = "earless (rounded top-right)"
selectorAffix."cyrl/a" = "earlessRounded"
selectorAffix."cyrl/ae/a" = ""
[prime.cyrl-a.variants-buildup.stages.bar.serifless]
rank = 1
descriptionAffix = "serif at terminal"
descriptionJoiner = "without"
selectorAffix."cyrl/a" = "serifless"
selectorAffix."cyrl/ae/a" = "serifless"
[prime.cyrl-a.variants-buildup.stages.bar.serifed]
rank = 2
descriptionAffix = "serif at terminal"
selectorAffix."cyrl/a" = "serifed"
selectorAffix."cyrl/ae/a" = "serifless"
[prime.cyrl-a.variants-buildup.stages.bar.double-serifed]
rank = 3
disableIf = [{ storey = "double-storey" }, { ear = "NOT eared" }]
descriptionAffix = "serifs at top and bottom"
selectorAffix."cyrl/a" = "doubleSerifed"
selectorAffix."cyrl/ae/a" = "serifless"
[prime.cyrl-a.variants-buildup.stages.bar.tailed]
rank = 4
descriptionAffix = "curly tail"
selectorAffix."cyrl/a" = "tailed"
selectorAffix."cyrl/ae/a" = "serifless"
[prime.cyrl-a.variants-buildup.stages.bar.tailed-serifed]
rank = 5
disableIf = [{ storey = "double-storey" }, { ear = "NOT eared" }]
descriptionAffix = "curly tail; with serifs at top and bottom"
selectorAffix."cyrl/a" = "tailedSerifed"
selectorAffix."cyrl/ae/a" = "serifless"
[prime.cyrl-a.variants-buildup.stages.bar.toothless-corner]
rank = 6
disableIf = [{ storey = "single-storey" }]
descriptionAffix = "toothless (cornered bottom-right)"
selectorAffix."cyrl/a" = "toothlessCorner"
selectorAffix."cyrl/ae/a" = "serifless"
[prime.cyrl-a.variants-buildup.stages.bar.toothless-rounded]
rank = 7
disableIf = [{ storey = "single-storey" }]
descriptionAffix = "toothless (rounded bottom-right)"
selectorAffix."cyrl/a" = "toothlessRounded"
selectorAffix."cyrl/ae/a" = "serifless"
[prime.cyrl-ve]
sampler = "в"
samplerExplain = "Cyrillic Ve"
nonBreakingTagForNewVariantSelector = "VXAG" # REMOVE IN NEXT MAJOR VERSION CHANGE
tagKind = "letter"
[prime.cyrl-ve.variants-buildup]
entry = "body"
descriptionLeader = "Cyrillic Lower Ve (`в`)"
[prime.cyrl-ve.variants-buildup.stages.body.standard]
rank = 1
next = "openness"
descriptionAffix = "standard body"
selectorAffix."cyrl/ve" = "standard"
[prime.cyrl-ve.variants-buildup.stages.openness."*"]
next = "serifs"
[prime.cyrl-ve.variants-buildup.stages.openness.closed]
rank = 1
keyAffix = ""
selectorAffix."cyrl/ve" = ""
[prime.cyrl-ve.variants-buildup.stages.openness.interrupted]
rank = 2
descriptionAffix = "interrupted middle bar"
selectorAffix."cyrl/ve" = "interrupted"
[prime.cyrl-ve.variants-buildup.stages.serifs."*"]
next = "END"
[prime.cyrl-ve.variants-buildup.stages.serifs.serifless]
rank = 1
descriptionAffix = "serifs"
descriptionJoiner = "without"
selectorAffix."cyrl/ve" = "serifless"
[prime.cyrl-ve.variants-buildup.stages.serifs.unilateral-serifed]
rank = 2
descriptionAffix = "serifs at top"
selectorAffix."cyrl/ve" = "unilateralSerifed"
[prime.cyrl-ve.variants-buildup.stages.serifs.bilateral-serifed]
rank = 3
descriptionAffix = "serifs at both top and bottom"
selectorAffix."cyrl/ve" = "bilateralSerifed"
[prime.cyrl-ve.variants-buildup.stages.body.cursive]
rank = 2
next = "height"
descriptionAffix = "cursive body"
selectorAffix."cyrl/ve" = "cursive"
[prime.cyrl-ve.variants-buildup.stages.height.normal]
rank = 1
keyAffix = ""
selectorAffix."cyrl/ve" = ""
[prime.cyrl-ve.variants-buildup.stages.height.tall]
rank = 2
descriptionAffix = "tall height"
selectorAffix."cyrl/ve" = "tall"
[prime.cyrl-capital-zhe]
sampler = "Ж"
samplerExplain = "Cyrillic Capital Zhe"
@ -8108,6 +8285,8 @@ lower-xi = "flat-top"
lower-pi = "tailed"
lower-tau = "semi-tailed"
lower-chi = "straight-serifless"
cyrl-a = "double-storey-serifless"
cyrl-ve = "standard-serifless"
cyrl-capital-zhe = "symmetric-connected"
cyrl-zhe = "symmetric-connected"
cyrl-capital-ze = "serifless"
@ -8196,6 +8375,8 @@ long-s = "flat-hook-tailed"
eszet = "sulzbacher-tailed-serifless"
lower-iota = "tailed-serifed"
lower-tau = "tailed"
cyrl-a = "single-storey-tailed"
cyrl-ve = "cursive"
cyrl-u = "cursive-serifless"
cyrl-ef = "cursive"
cyrl-yeri = "round"
@ -8257,6 +8438,8 @@ capital-lambda = "straight-base-serifed"
lower-lambda = "straight-turn"
lower-mu = "tailed-serifed"
lower-chi = "straight-serifed"
cyrl-a = "double-storey-serifed"
cyrl-ve = "standard-bilateral-serifed"
cyrl-capital-ze = "unilateral-serifed"
cyrl-ze = "unilateral-serifed"
cyrl-capital-ka = "symmetric-connected-serifed"
@ -8302,6 +8485,8 @@ long-s = "flat-hook-tailed"
eszet = "sulzbacher-tailed-serifless"
lower-lambda = "straight"
lower-mu = "tailed-motion-serifed"
cyrl-a = "single-storey-tailed"
cyrl-ve = "cursive"
cyrl-ze = "unilateral-bottom-inward-serifed"
cyrl-ka = "symmetric-connected-top-left-serifed"
cyrl-en = "top-left-bottom-right-serifed"
@ -8343,6 +8528,8 @@ lower-mu = "toothed-serifless"
lower-pi = "tailless"
lower-tau = "tailless"
lower-chi = "semi-chancery-straight"
cyrl-a = "double-storey-serifless"
cyrl-ve = "standard-serifless"
cyrl-capital-zhe = "straight"
cyrl-zhe = "straight"
cyrl-capital-ka = "straight-serifless"
@ -8396,6 +8583,8 @@ long-s = "flat-hook-double-serifed"
eszet = "longs-s-lig-bottom-serifed"
lower-iota = "tailed-serifed"
lower-mu = "toothed-serifed"
cyrl-a = "double-storey-serifed"
cyrl-ve = "standard-bilateral-serifed"
cyrl-ze = "unilateral-serifed"
cyrl-capital-ka = "straight-serifed"
cyrl-ka = "straight-serifed"
@ -8447,6 +8636,8 @@ lower-iota = "serifed-flat-tailed"
lower-lambda = "straight-turn"
lower-xi = "rounded"
lower-tau = "short-tailed"
cyrl-a = "double-storey-serifless"
cyrl-ve = "standard-serifless"
cyrl-capital-zhe = "straight"
cyrl-zhe = "straight"
cyrl-capital-ze = "unilateral-serifed"
@ -8497,6 +8688,8 @@ w = "straight-flat-top-serifed"
y = "straight-turn-serifed"
eszet = "longs-s-lig-bottom-serifed"
lower-mu = "tailed-serifed"
cyrl-a = "double-storey-serifed"
cyrl-ve = "standard-bilateral-serifed"
cyrl-ze = "unilateral-serifed"
cyrl-capital-ka = "straight-serifed"
cyrl-ka = "straight-serifed"
@ -8537,6 +8730,8 @@ eszet = "longs-s-lig-serifless"
lower-chi = "semi-chancery-straight"
lower-eth = "straight-bar"
lower-lambda = "tailed-turn"
cyrl-a = "double-storey-serifless"
cyrl-ve = "standard-serifless"
cyrl-capital-zhe = "symmetric-touching"
cyrl-zhe = "symmetric-touching"
cyrl-capital-ka = "symmetric-touching-serifless"
@ -8571,6 +8766,8 @@ k = "cursive-serifless"
l = "tailed"
long-s = "flat-hook-descending"
eszet = "longs-s-lig-descending-serifless"
cyrl-a = "single-storey-serifless"
cyrl-ve = "cursive-tall"
cyrl-zhe = "symmetric-connected"
cyrl-ka = "symmetric-connected-serifless"
cyrl-yeri = "round"
@ -8592,6 +8789,8 @@ z = "straight-serifed"
capital-eszet = "rounded-serifed"
long-s = "flat-hook-bottom-serifed"
eszet = "longs-s-lig-bottom-serifed"
cyrl-a = "double-storey-serifed"
cyrl-ve = "standard-bilateral-serifed"
cyrl-capital-ka = "symmetric-touching-serifed"
cyrl-ka = "symmetric-touching-serifed"
cyrl-em = "slanted-sides-hanging-serifed"
@ -8613,6 +8812,8 @@ x = "straight-motion-serifed"
y = "straight-turn-motion-serifed"
long-s = "flat-hook-descending"
eszet = "longs-s-lig-descending-serifless"
cyrl-a = "single-storey-serifed"
cyrl-ve = "cursive-tall"
cyrl-ka = "symmetric-connected-top-left-serifed"
cyrl-u = "straight-turn-motion-serifed"
cyrl-ef = "serifless"
@ -8650,6 +8851,8 @@ lower-iota = "serifed-flat-tailed"
lower-lambda = "straight-turn"
lower-tau = "flat-tailed"
lower-chi = "semi-chancery-straight"
cyrl-a = "double-storey-serifless"
cyrl-ve = "standard-serifless"
cyrl-capital-zhe = "straight"
cyrl-zhe = "straight"
cyrl-capital-ka = "straight-serifless"
@ -8709,6 +8912,8 @@ capital-eszet = "rounded-serifed"
long-s = "flat-hook-double-serifed"
eszet = "longs-s-lig-bottom-serifed"
lower-mu = "tailed-serifed"
cyrl-a = "double-storey-serifed"
cyrl-ve = "standard-bilateral-serifed"
cyrl-ze = "unilateral-serifed"
cyrl-capital-ka = "straight-serifed"
cyrl-ka = "straight-serifed"
@ -8754,6 +8959,8 @@ lower-lambda = "straight-turn"
lower-mu = "toothed-serifless"
lower-xi = "rounded"
lower-tau = "semi-tailed"
cyrl-a = "double-storey-tailed"
cyrl-ve = "standard-serifless"
cyrl-em = "slanted-sides-hanging-serifless"
cyrl-capital-u = "straight-turn-serifless"
cyrl-u = "straight-turn-serifless"
@ -8807,6 +9014,7 @@ z = "straight-serifed"
long-s = "bent-hook-bottom-serifed"
eszet = "longs-s-lig-bottom-serifed"
lower-mu = "toothed-serifed"
cyrl-ve = "standard-bilateral-serifed"
cyrl-ze = "unilateral-serifed"
cyrl-ka = "symmetric-connected-serifed"
cyrl-em = "slanted-sides-hanging-serifed"
@ -8849,6 +9057,8 @@ lower-iota = "tailed-serifed"
lower-lambda = "straight-turn"
lower-tau = "short-tailed"
lower-chi = "straight-motion-serifed"
cyrl-a = "double-storey-tailed"
cyrl-ve = "standard-serifless"
cyrl-capital-u = "straight-turn-serifless"
cyrl-u = "straight-turn-serifless"
cyrl-ef = "serifless"
@ -8901,6 +9111,7 @@ long-s = "flat-hook-bottom-serifed"
eszet = "longs-s-lig-bottom-serifed"
lower-mu = "tailed-serifed"
lower-chi = "straight-serifed"
cyrl-ve = "standard-bilateral-serifed"
cyrl-ze = "unilateral-serifed"
cyrl-ka = "symmetric-connected-serifed"
cyrl-capital-u = "straight-turn-serifed"
@ -8946,6 +9157,8 @@ lower-iota = "zshaped"
lower-lambda = "straight-turn"
lower-pi = "tailless"
lower-tau = "tailless"
cyrl-a = "double-storey-serifless"
cyrl-ve = "standard-serifless"
cyrl-capital-u = "straight-turn-serifless"
cyrl-u = "straight-turn-serifless"
cyrl-ef = "serifless"
@ -8992,6 +9205,8 @@ z = "straight-serifed"
long-s = "flat-hook-bottom-serifed"
eszet = "longs-s-lig-bottom-serifed"
lower-mu = "tailed-serifed"
cyrl-a = "double-storey-serifed"
cyrl-ve = "standard-bilateral-serifed"
cyrl-ze = "unilateral-serifed"
cyrl-ka = "symmetric-connected-serifed"
cyrl-capital-u = "straight-turn-serifed"
@ -9047,6 +9262,7 @@ capital-lambda = "curly-serifless"
lower-lambda = "curly-tailed-turn"
lower-mu = "toothed-serifless"
lower-chi = "semi-chancery-curly"
cyrl-a = "double-storey-serifless"
cyrl-capital-zhe = "curly"
cyrl-zhe = "curly"
cyrl-capital-ka = "curly-serifless"
@ -9111,6 +9327,7 @@ long-s = "bent-hook-double-serifed"
eszet = "longs-s-lig-bottom-serifed"
capital-lambda = "curly-base-serifed"
lower-mu = "toothed-serifed"
cyrl-a = "double-storey-serifed"
cyrl-capital-ka = "curly-serifed"
cyrl-ka = "curly-serifed"
cyrl-em = "hanging-serifed"
@ -9165,6 +9382,8 @@ long-s = "flat-hook-middle-serifed"
eszet = "longs-s-lig-serifless"
lower-lambda = "straight-turn"
lower-tau = "short-tailed"
cyrl-a = "double-storey-serifless"
cyrl-ve = "standard-serifless"
cyrl-capital-u = "straight-turn-serifless"
cyrl-u = "straight-turn-serifless"
cyrl-ef = "split-serifless"
@ -9211,6 +9430,8 @@ z = "straight-serifed"
capital-eszet = "rounded-serifed"
long-s = "flat-hook-double-serifed"
eszet = "longs-s-lig-bottom-serifed"
cyrl-a = "double-storey-serifed"
cyrl-ve = "standard-bilateral-serifed"
cyrl-capital-u = "straight-turn-serifed"
cyrl-u = "straight-turn-serifed"
cyrl-ef = "split-serifed"
@ -9229,6 +9450,7 @@ u = "toothed-motion-serifed"
w = "straight-flat-top-motion-serifed"
x = "straight-motion-serifed"
y = "straight-turn-motion-serifed"
cyrl-ve = "standard-unilateral-serifed"
cyrl-u = "straight-turn-motion-serifed"
micro-sign = "tailed-motion-serifed"
@ -9381,6 +9603,7 @@ lower-lambda = "straight-turn"
lower-mu = "toothless-corner-serifless"
lower-xi = "rounded"
lower-pi = "small-capital"
cyrl-a = "double-storey-tailed"
cyrl-capital-zhe = "symmetric-touching"
cyrl-zhe = "symmetric-touching"
cyrl-capital-ka = "symmetric-touching-serifless"
@ -9420,6 +9643,7 @@ u = "tailed-serifless"
long-s = "bent-hook-tailed"
eszet = "longs-s-lig-tailed-serifless"
lower-mu = "tailed-serifless"
cyrl-a = "single-storey-earless-corner-tailed"
cyrl-zhe = "cursive"
micro-sign = "tailed-serifless"
@ -9504,6 +9728,8 @@ lower-lambda = "straight-turn"
lower-mu = "toothed-serifless"
lower-pi = "tailless"
lower-tau = "tailless"
cyrl-a = "double-storey-tailed"
cyrl-ve = "standard-serifless"
cyrl-capital-u = "straight-turn-serifless"
cyrl-u = "straight-turn-serifless"
cyrl-ef = "split-serifless"
@ -9556,6 +9782,7 @@ long-s = "flat-hook-double-serifed"
eszet = "longs-s-lig-bottom-serifed"
lower-iota = "tailed-serifed"
lower-mu = "toothed-serifed"
cyrl-ve = "standard-bilateral-serifed"
cyrl-ze = "unilateral-serifed"
cyrl-ka = "symmetric-connected-serifed"
cyrl-capital-u = "straight-turn-serifed"
@ -9601,6 +9828,7 @@ lower-lambda = "straight"
lower-mu = "toothed-serifless"
lower-xi = "rounded"
lower-tau = "flat-tailed"
cyrl-ve = "standard-serifless"
cyrl-em = "hanging-serifless"
cyrl-yeri = "corner"
cyrl-yery = "corner"
@ -9656,6 +9884,7 @@ long-s = "flat-hook-bottom-serifed"
eszet = "sulzbacher-bottom-serifed"
lower-alpha = "barred-double-serifed"
lower-mu = "toothed-serifed"
cyrl-ve = "standard-bilateral-serifed"
cyrl-em = "hanging-serifed"
cyrl-capital-u = "straight-serifed"
cyrl-u = "straight-serifed"
@ -9678,6 +9907,7 @@ long-s = "flat-hook-tailed"
eszet = "sulzbacher-tailed-serifless"
lower-alpha = "barred-tailed"
lower-mu = "toothed-motion-serifed"
cyrl-ve = "standard-unilateral-serifed"
cyrl-u = "cursive-flat-hook-motion-serifed"
micro-sign = "toothed-motion-serifed"
@ -9712,6 +9942,7 @@ lower-iota = "serifed-flat-tailed"
lower-lambda = "tailed-turn"
lower-tau = "flat-tailed"
lower-chi = "semi-chancery-straight"
cyrl-a = "double-storey-tailed"
cyrl-capital-ka = "symmetric-connected-bottom-right-serifed"
cyrl-ka = "symmetric-connected-bottom-right-serifed"
cyrl-em = "hanging-serifless"
@ -9759,6 +9990,7 @@ z = "cursive"
long-s = "flat-hook-diagonal-tailed-middle-serifed"
lower-iota = "serifed-diagonal-tailed"
lower-tau = "diagonal-tailed"
cyrl-a = "single-storey-tailed"
cyrl-zhe = "cursive"
cyrl-u = "cursive-serifless"
cyrl-ef = "split-cursive"
@ -9843,6 +10075,8 @@ lower-iota = "serifed-semi-tailed"
lower-lambda = "straight-turn"
lower-mu = "toothed-bottom-right-serifed"
lower-tau = "semi-tailed"
cyrl-a = "double-storey-serifed"
cyrl-ve = "standard-serifless"
cyrl-capital-ze = "bilateral-inward-serifed"
cyrl-ze = "unilateral-inward-serifed"
cyrl-ka = "symmetric-connected-bottom-right-serifed"
@ -9897,6 +10131,7 @@ long-s = "flat-hook-double-serifed"
eszet = "longs-s-lig-dual-serifed"
lower-thorn = "serifed"
lower-mu = "toothed-serifed"
cyrl-ve = "standard-bilateral-serifed"
cyrl-ka = "symmetric-connected-serifed"
cyrl-em = "hanging-serifed"
cyrl-er = "eared-serifed"
@ -9961,6 +10196,7 @@ lower-iota = "serifed-flat-tailed"
lower-lambda = "tailed-turn"
lower-tau = "flat-tailed"
lower-chi = "semi-chancery-straight"
cyrl-a = "double-storey-tailed"
cyrl-capital-ze = "unilateral-inward-serifed"
cyrl-ze = "serifless"
cyrl-capital-ka = "symmetric-connected-bottom-right-serifed"
@ -10015,6 +10251,7 @@ y = "cursive-serifless"
z = "cursive"
long-s = "bent-hook-descending"
eszet = "longs-s-lig-descending-serifless"
cyrl-a = "single-storey-tailed"
cyrl-ze = "unilateral-bottom-inward-serifed"
cyrl-ka = "symmetric-connected-bottom-right-serifed"
cyrl-u = "cursive-serifless"
@ -10111,6 +10348,8 @@ eszet = "longs-s-lig-serifless"
lower-alpha = "barred-tailed"
lower-lambda = "straight-turn"
lower-tau = "short-tailed"
cyrl-a = "double-storey-tailed"
cyrl-ve = "standard-serifless"
cyrl-em = "hanging-serifless"
cyrl-capital-u = "straight-turn-serifless"
cyrl-u = "straight-turn-serifless"
@ -10156,6 +10395,7 @@ z = "straight-serifed"
long-s = "flat-hook-double-serifed-xh"
eszet = "longs-s-lig-bottom-serifed"
lower-alpha = "barred-tailed-serifed"
cyrl-ve = "standard-bilateral-serifed"
cyrl-em = "hanging-serifed"
cyrl-capital-u = "straight-turn-serifed"
cyrl-u = "straight-turn-serifed"
@ -10174,6 +10414,7 @@ y = "straight-turn-motion-serifed"
long-s = "flat-hook-descending-middle-serifed-xh"
eszet = "longs-s-lig-descending-serifless"
lower-alpha = "barred-tailed"
cyrl-ve = "standard-unilateral-serifed"
cyrl-u = "straight-turn-motion-serifed"
micro-sign = "tailed-motion-serifed"

View file

@ -5,7 +5,7 @@ export const ssStrings = [
["ABC.DEF.GHI.JKL.MNO.PQRS.TUV.WXYZ", "abc.def.ghi.jkl.mno.pqrs.tuv.wxyz"],
["!iIlL17|¦ ¢coO08BbDQ $5SZ2zs 96µm", "float il1[]={1-2/3.4,5+6=7/8%90};"],
["1234567890 ,._-+= >< «¯-¬_» ~–÷+×", "{*}[]()<>`+-=$/#_%^@\\&|~?'\" !,.;:"],
["CG6Qg9q¶ äöü Þẞðþſß ΓΔΛαδιλμξπτχ∂", [..."ЖЗКУЭЯжзклмнруфчъыьэя ", "<=", " ", "!=", " ", "==", " ", "=>"]]
["CG6Qg9q¶ äöü Þẞðþſß ΓΔΛαδιλμξπτχ∂", [..."ЖЗКУЭЯавжзклмнруфчъыьэя ", "<=", " ", "!=", " ", "=="]]
];
function* makeSample(lbm, hotChars) {

View file

@ -5,7 +5,7 @@ const ssStrings = [
["ABC.DEF.GHI.JKL.MNO.PQRS.TUV.WXYZ", "abc.def.ghi.jkl.mno.pqrs.tuv.wxyz"],
["!iIlL17|¦ ¢coO08BbDQ $5SZ2zs 96µm", "float il1[]={1-2/3.4,5+6=7/8%90};"],
["1234567890 ,._-+= >< «¯-¬_» ~–÷+×", "{*}[]()<>`+-=$/#_%^@\\&|~?'\" !,.;:"],
["CG6Qg9q¶ äöü Þẞðþſß ΓΔΛαδιλμξπτχ∂", [..."ЖЗКУЭЯжзклмнруфчъыьэя ", "<=", " ", "!=", " ", "==", " ", "=>"]]
["CG6Qg9q¶ äöü Þẞðþſß ΓΔΛαδιλμξπτχ∂", [..."ЖЗКУЭЯавжзклмнруфчъыьэя ", "<=", " ", "!=", " ", "=="]]
];
function* makeSample(theme, lbm, features, hotChars) {