Add variant selectors for Cyrillic Capital En/Er. (#2439)

This commit is contained in:
John McWilliams 2024-07-28 17:39:43 -04:00 committed by GitHub
parent bff9e0b1c5
commit a038c05a26
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 123 additions and 29 deletions

View file

@ -1,3 +1,4 @@
* Add separate variant selectors for Cyrillic Capital En/Er (`VXAA`, `VXAB`).
* Add characters:
- BLACK-LETTER CAPITAL H (`U+210C`).
- BLACK-LETTER CAPITAL I (`U+2111`).

View file

@ -169,7 +169,7 @@ glyph-block Letter-Latin-Upper-AA-AO : begin
set-mark-anchor 'cvDecompose' 0 0
include : letterShape df CAP 0 0.1 0.28
select-variant "cyrl/Rha/left" (follow -- 'P')
select-variant "cyrl/Rha/left" (follow -- 'cyrl/Er')
select-variant "cyrl/Rha/right"
derive-multi-part-glyphs "cyrl/Rha" 0x516 {'cyrl/Rha/left' 'cyrl/Rha/right'} BuildRha

View file

@ -243,8 +243,8 @@ glyph-block Letter-Latin-Upper-H : begin
select-variant 'grek/Eta' 0x397 (follow -- 'H')
select-variant 'HTurned' 0xA78D (follow -- 'H')
link-reduced-variant 'grek/Eta/sansSerif' 'grek/Eta' MathSansSerif (follow -- 'H/sansSerif')
alias 'cyrl/En' 0x41D 'H'
alias 'cyrl/En/descBase' null 'H/descBase'
select-variant 'cyrl/En' 0x41D (shapeFrom -- 'H')
select-variant 'cyrl/En/descBase' (shapeFrom -- 'H')
select-variant 'leftHalfH' 0x2C75
select-variant 'rightHalfH' 0xA7F5
select-variant 'grek/Heta' 0x370 (shapeFrom -- 'leftHalfH')
@ -265,7 +265,7 @@ glyph-block Letter-Latin-Upper-H : begin
derive-composites 'cyrl/EnTail' 0x4C9 'cyrl/En/descBase' [CyrTailDescender.rSideJut RightSB 0]
derive-composites 'cyrl/enTail' 0x4CA 'cyrl/en/descBase' [CyrTailDescender.rSideJut RightSB 0]
CreateSelectorVariants 'cyrl/EnGhe' 0x4A4 [Object.keys HConfig] (follow -- 'H')
CreateSelectorVariants 'cyrl/EnGhe' 0x4A4 [Object.keys HConfig] (follow -- 'cyrl/En')
CreateSelectorVariants 'cyrl/enghe' 0x4A5 [Object.keys HConfig] (follow -- 'cyrl/en')
select-variant 'Hwair' 0x1F6
@ -274,10 +274,10 @@ glyph-block Letter-Latin-Upper-H : begin
select-variant 'HStroke' 0x126 (follow -- 'H')
select-variant 'smcpHStroke' null (follow -- 'H')
select-variant 'cyrl/EnMidHook' 0x0522 (follow -- 'H')
select-variant 'cyrl/EnMidHook' 0x0522 (follow -- 'cyrl/En')
select-variant 'cyrl/enMidHook' 0x0523 (follow -- 'cyrl/en')
select-variant 'cyrl/NjeKomi' 0x050A (follow -- 'Hwair')
select-variant 'cyrl/NjeKomi' 0x050A
select-variant 'cyrl/njeKomi' 0x050B
create-glyph 'mathbb/H' 0x210D : glyph-proc

View file

@ -115,7 +115,7 @@ glyph-block Letter-Latin-Upper-N : begin
local [object swEnd] : include : NShape bodyType slabType CAP SB RightSB (crDiag -- crD)
include : EngHook RightSB 0 Descender (sw -- [Math.min Stroke (swEnd * 1.5)])
create-glyph "NLTail.\(suffix)" : glyph-proc
create-glyph "NHookLeft.\(suffix)" : glyph-proc
include [refer-glyph "N.\(suffix)"] AS_BASE ALSO_METRICS
eject-contour 'serifLB'
include : PalatalHook.lExt SB 0
@ -141,9 +141,9 @@ glyph-block Letter-Latin-Upper-N : begin
derive-composites 'NDescender' 0xA790 'N' [CyrDescender.rSideJut RightSB 0]
select-variant 'Eng' 0x14A (follow -- 'N')
select-variant 'smcpN' 0x274 (follow -- 'N')
select-variant 'NLTail' 0x19D (follow -- 'N')
select-variant 'Eng' 0x14A (follow -- 'N')
select-variant 'smcpN' 0x274 (follow -- 'N')
select-variant 'NHookLeft' 0x19D (follow -- 'N')
select-variant 'currency/nairaSignBase' (follow -- 'N')
create-glyph 'cyrl/I' 0x418 : glyph-proc

View file

@ -217,13 +217,13 @@ glyph-block Letter-Latin-Upper-P : begin
select-variant 'P' 'P'
link-reduced-variant 'P/sansSerif' 'P' MathSansSerif
select-variant 'grek/Rho' 0x3A1 (follow -- 'P')
link-reduced-variant 'grek/Rho/sansSerif' 'grek/Rho' MathSansSerif (follow -- 'P/sansSerif')
select-variant 'grek/Rho' 0x3A1
link-reduced-variant 'grek/Rho/sansSerif' 'grek/Rho' MathSansSerif
select-variant 'smcpP' 0x1D18 (follow -- 'P')
alias 'grek/smcpRho' 0x1D29 'smcpP'
select-variant 'grek/smcpRho' 0x1D29 (shapeFrom -- 'smcpP') (follow -- 'grek/Rho')
alias 'cyrl/Er' 0x420 'P'
select-variant 'cyrl/Er' 0x420 (shapeFrom -- 'P')
select-variant 'PHookLeft' 0x1A4

View file

@ -962,8 +962,6 @@ selector."grek/Heta" = "serifless"
selector."grek/heta" = "serifless"
selector.Hwair = "serifless"
selector.HHookTop = "serifless"
selector."cyrl/Nje/leftHalf" = "serifless"
selector."cyrl/Nje/leftHalf/reduced" = "serifless"
[prime.capital-h.variants.top-left-serifed]
rank = 2
@ -977,8 +975,6 @@ selector."grek/Heta" = "topLeftSerifed"
selector."grek/heta" = "topLeftSerifed"
selector.Hwair = "topLeftSerifed"
selector.HHookTop = "serifless"
selector."cyrl/Nje/leftHalf" = "topLeftSerifed"
selector."cyrl/Nje/leftHalf/reduced" = "topLeftSerifed"
[prime.capital-h.variants.top-left-bottom-right-serifed]
rank = 3
@ -992,8 +988,6 @@ selector."grek/Heta" = "topLeftSerifed"
selector."grek/heta" = "topLeftSerifed"
selector.Hwair = "topLeftSerifed"
selector.HHookTop = "topLeftBottomRightSerifed"
selector."cyrl/Nje/leftHalf" = "topLeftSerifed"
selector."cyrl/Nje/leftHalf/reduced" = "topLeftSerifed"
[prime.capital-h.variants.serifed]
rank = 4
@ -1007,8 +1001,6 @@ selector."grek/Heta" = "serifed"
selector."grek/heta" = "topLeftSerifed"
selector.Hwair = "serifedExceptBottomRight"
selector.HHookTop = "serifed"
selector."cyrl/Nje/leftHalf" = "serifed"
selector."cyrl/Nje/leftHalf/reduced" = "serifedExceptBottomRight"
@ -1343,7 +1335,6 @@ descriptionAffix = "closed shape"
selectorAffix.P = "closed"
selectorAffix."P/sansSerif" = "closed"
selectorAffix.PHookLeft = "closed"
selectorAffix."currency/rubleSign" = "closed"
[prime.capital-p.variants-buildup.stages.body.open]
rank = 2
@ -1351,7 +1342,6 @@ descriptionAffix = "open shape"
selectorAffix.P = "open"
selectorAffix."P/sansSerif" = "open"
selectorAffix.PHookLeft = "open"
selectorAffix."currency/rubleSign" = "closed"
[prime.capital-p.variants-buildup.stages.serifs.serifless]
rank = 1
@ -1360,7 +1350,6 @@ descriptionJoiner = "without"
selectorAffix.P = "serifless"
selectorAffix."P/sansSerif" = "serifless"
selectorAffix.PHookLeft = "serifless"
selectorAffix."currency/rubleSign" = "serifless"
[prime.capital-p.variants-buildup.stages.serifs.motion-serifed]
rank = 2
@ -1368,7 +1357,6 @@ descriptionAffix = "motion serifs"
selectorAffix.P = "motionSerifed"
selectorAffix."P/sansSerif" = "serifless"
selectorAffix.PHookLeft = "serifless"
selectorAffix."currency/rubleSign" = "motionSerifed"
[prime.capital-p.variants-buildup.stages.serifs.serifed]
rank = 3
@ -1376,7 +1364,6 @@ descriptionAffix = "serifs"
selectorAffix.P = "serifed"
selectorAffix."P/sansSerif" = "serifless"
selectorAffix.PHookLeft = "serifed"
selectorAffix."currency/rubleSign" = "serifed"
@ -6602,6 +6589,50 @@ selectorAffix."cyrl/em" = "smallCyrl"
[prime.cyrl-capital-en]
sampler = "Н"
samplerExplain = "Cyrillic Capital En"
nonBreakingTagForNewVariantSelector = "VXAA" # REMOVE IN NEXT MAJOR VERSION CHANGE
tagKind = "letter"
[prime.cyrl-capital-en.variants.serifless]
rank = 1
description = "Cyrillic Capital En (`Н`) without serifs"
selector."cyrl/En" = "serifless"
selector."cyrl/En/descBase" = "serifless"
selector."cyrl/NjeKomi" = "serifless"
selector."cyrl/Nje/leftHalf" = "serifless"
selector."cyrl/Nje/leftHalf/reduced" = "serifless"
[prime.cyrl-capital-en.variants.top-left-serifed]
rank = 2
description = "Cyrillic Capital En (`Н`) with serif only at top left"
selector."cyrl/En" = "topLeftSerifed"
selector."cyrl/En/descBase" = "topLeftSerifed"
selector."cyrl/NjeKomi" = "topLeftSerifed"
selector."cyrl/Nje/leftHalf" = "topLeftSerifed"
selector."cyrl/Nje/leftHalf/reduced" = "topLeftSerifed"
[prime.cyrl-capital-en.variants.top-left-bottom-right-serifed]
rank = 3
description = "Cyrillic Capital En (`Н`) with serif only at top left and bottom right"
selector."cyrl/En" = "topLeftBottomRightSerifed"
selector."cyrl/En/descBase" = "topLeftSerifed"
selector."cyrl/NjeKomi" = "topLeftSerifed"
selector."cyrl/Nje/leftHalf" = "topLeftSerifed"
selector."cyrl/Nje/leftHalf/reduced" = "topLeftSerifed"
[prime.cyrl-capital-en.variants.serifed]
rank = 4
description = "Cyrillic Capital En (`Н`) with serifs"
selector."cyrl/En" = "serifed"
selector."cyrl/En/descBase" = "serifed"
selector."cyrl/NjeKomi" = "serifedExceptBottomRight"
selector."cyrl/Nje/leftHalf" = "serifed"
selector."cyrl/Nje/leftHalf/reduced" = "serifedExceptBottomRight"
[prime.cyrl-en]
sampler = "н"
samplerExplain = "Cyrillic Lower En"
@ -6678,6 +6709,62 @@ selectorAffix."cyrl/njeKomi" = "serifedExceptBottomRight"
[prime.cyrl-capital-er]
sampler = "Р"
samplerExplain = "Cyrillic Capital Er"
nonBreakingTagForNewVariantSelector = "VXAB" # REMOVE IN NEXT MAJOR VERSION CHANGE
tagKind = "letter"
[prime.cyrl-capital-er.variants-buildup]
entry = "body"
descriptionLeader = "Cyrillic Capital Er (`Р`)"
[prime.cyrl-capital-er.variants-buildup.stages.body."*"]
next = "serifs"
[prime.cyrl-capital-er.variants-buildup.stages.body.closed]
rank = 1
descriptionAffix = "closed shape"
selectorAffix."grek/Rho" = "closed"
selectorAffix."grek/Rho/sansSerif" = "closed"
selectorAffix."cyrl/Er" = "closed"
selectorAffix."currency/rubleSign" = "closed"
[prime.cyrl-capital-er.variants-buildup.stages.body.open]
rank = 2
descriptionAffix = "open shape"
selectorAffix."grek/Rho" = "open"
selectorAffix."grek/Rho/sansSerif" = "open"
selectorAffix."cyrl/Er" = "open"
selectorAffix."currency/rubleSign" = "closed"
[prime.cyrl-capital-er.variants-buildup.stages.serifs.serifless]
rank = 1
descriptionAffix = "serifs"
descriptionJoiner = "without"
selectorAffix."grek/Rho" = "serifless"
selectorAffix."grek/Rho/sansSerif" = "serifless"
selectorAffix."cyrl/Er" = "serifless"
selectorAffix."currency/rubleSign" = "serifless"
[prime.cyrl-capital-er.variants-buildup.stages.serifs.motion-serifed]
rank = 2
descriptionAffix = "motion serifs"
selectorAffix."grek/Rho" = "motionSerifed"
selectorAffix."grek/Rho/sansSerif" = "serifless"
selectorAffix."cyrl/Er" = "motionSerifed"
selectorAffix."currency/rubleSign" = "motionSerifed"
[prime.cyrl-capital-er.variants-buildup.stages.serifs.serifed]
rank = 3
descriptionAffix = "serifs"
selectorAffix."grek/Rho" = "serifed"
selectorAffix."grek/Rho/sansSerif" = "serifless"
selectorAffix."cyrl/Er" = "serifed"
selectorAffix."currency/rubleSign" = "serifed"
[prime.cyrl-er]
sampler = "р"
samplerExplain = "Cyrillic Lower Er"
@ -8331,7 +8418,9 @@ cyrl-capital-ka = "symmetric-connected-serifless"
cyrl-ka = "symmetric-connected-serifless"
cyrl-el = "straight"
cyrl-em = "flat-bottom-serifless"
cyrl-capital-en = "serifless"
cyrl-en = "serifless"
cyrl-capital-er = "closed-serifless"
cyrl-er = "eared-serifless"
cyrl-capital-u = "straight-serifless"
cyrl-u = "straight-serifless"
@ -8481,7 +8570,9 @@ cyrl-ze = "unilateral-serifed"
cyrl-capital-ka = "symmetric-connected-serifed"
cyrl-ka = "symmetric-connected-serifed"
cyrl-em = "flat-bottom-serifed"
cyrl-capital-en = "serifed"
cyrl-en = "serifed"
cyrl-capital-er = "closed-serifed"
cyrl-er = "eared-serifed"
cyrl-capital-u = "straight-turn-serifed"
cyrl-u = "straight-turn-serifed"
@ -10250,6 +10341,7 @@ cyrl-capital-ze = "unilateral-inward-serifed"
cyrl-ze = "serifless"
cyrl-capital-ka = "symmetric-connected-bottom-right-serifed"
cyrl-ka = "symmetric-connected-serifless"
cyrl-capital-er = "closed-motion-serifed"
cyrl-capital-u = "straight-turn-serifless"
cyrl-u = "straight-turn-serifless"
cyrl-capital-e = "unilateral-inward-serifed"
@ -10338,6 +10430,7 @@ capital-thorn = "serifed"
cyrl-ze = "unilateral-inward-serifed"
cyrl-capital-ka = "symmetric-connected-serifed"
cyrl-ka = "symmetric-connected-serifed"
cyrl-capital-er = "closed-serifed"
cyrl-capital-u = "straight-turn-serifed"
cyrl-u = "straight-turn-serifed"
cyrl-e = "unilateral-inward-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) {