diff --git a/changes/4.0.0-beta.1.md b/changes/4.0.0-beta.1.md index cd221ef9f..1874d1c4b 100644 --- a/changes/4.0.0-beta.1.md +++ b/changes/4.0.0-beta.1.md @@ -1 +1,3 @@ - * Fix broken Bulgarian localized of Cyrillic Small Sha (#716). + * Fix broken Bulgarian localized of Cyrillic Small Sha and Cyrillic Capital El (#716). + * Fix broken serif shapes in Italic Cyrillic Small I (#717). + * Make variant selectors for `m` and `u` have more effect on Cyrillic letters. diff --git a/font-src/glyphs/letter/cyrillic.ptl b/font-src/glyphs/letter/cyrillic.ptl index 5ba7e57d5..98b301f6d 100644 --- a/font-src/glyphs/letter/cyrillic.ptl +++ b/font-src/glyphs/letter/cyrillic.ptl @@ -166,18 +166,20 @@ glyph-block Letter-Cyrillic-I : begin alias 'cyrl/i.italicMotionSerifed' null 'u.motionSerifed' alias 'cyrl/i.italicMotionSerifedTailed' null 'u.motionSerifedTailed' alias 'cyrl/i.italicTailed' null 'u.tailed' - select-variant 'cyrl/i' 0x438 - create-glyph 'cyrl/i.BGR' : glyph-proc - include [refer-glyph 'u.toothed'] AS_BASE ALSO_METRICS + alias 'cyrl/i.BGR.toothed' null 'u.toothed' + alias 'cyrl/i.BGR.motionSerifed' null 'u.motionSerifed' + alias 'cyrl/i.BGR.motionSerifedTailed' null 'u.motionSerifedTailed' + alias 'cyrl/i.BGR.tailed' null 'u.tailed' + select-variant 'cyrl/i.BGR' - create-glyph 'cyrl/ibreve.BGR' : glyph-proc - include [refer-glyph 'u.toothed'] AS_BASE ALSO_METRICS + with-related-glyphs 'cyrl/i.BGR' 'cyrl/ibreve.BGR' null : lambda [src sel] : glyph-proc + include [refer-glyph src] AS_BASE ALSO_METRICS include [refer-glyph 'breveAbove'] - create-glyph 'cyrl/igrave.BGR' : glyph-proc - include [refer-glyph 'u.toothed'] AS_BASE ALSO_METRICS + with-related-glyphs 'cyrl/i.BGR' 'cyrl/igrave.BGR' null : lambda [src sel] : glyph-proc + include [refer-glyph src] AS_BASE ALSO_METRICS include [refer-glyph 'graveAbove'] glyph-block Letter-Cyrillic-Tse : begin @@ -202,13 +204,20 @@ glyph-block Letter-Cyrillic-Tse : begin include : MarkSet.e include : CyrTseShape XH - create-glyph 'cyrl/tse.italic' : glyph-proc + create-glyph 'cyrl/tse.italicToothed' : glyph-proc include [refer-glyph "u.toothed"] AS_BASE - eject-contour 'serifLT' + eject-contour 'serifRB' include : CyrDescender RightSB (shift -- 0.05) + create-aliased-glyph 'cyrl/tse.BGR.toothed' - italic-variant 'cyrl/tse' 0x446 + create-glyph 'cyrl/tse.italicMotionSerifed' : glyph-proc + include [refer-glyph "u.motionSerifed"] AS_BASE + eject-contour 'serifRB' + include : CyrDescender RightSB (shift -- 0.05) + create-aliased-glyph 'cyrl/tse.BGR.motionSerifed' + select-variant 'cyrl/tse' 0x446 + select-variant 'cyrl/tse.BGR' glyph-block Letter-Cyrillic-Dzhe : begin glyph-block-import CommonShapes @@ -232,7 +241,7 @@ glyph-block Letter-Cyrillic-Dzhe : begin include : MarkSet.p include : CyrDzheShape XH - create-glyph 'cyrl/dzhe.italicStraight' : glyph-proc + create-glyph 'cyrl/dzhe.italicToothed' : glyph-proc include [refer-glyph 'u.toothed'] AS_BASE ALSO_METRICS include [refer-glyph 'descenderBarBelow'] @@ -333,6 +342,9 @@ glyph-block Letter-Cyrillic-El : begin include : MarkSet.e include : CyrElShape XH + alias 'cyrl/El.BGR' null 'grek/Lambda' + alias 'cyrl/el.BGR' null 'turnv' + glyph-block Letter-Cyrillic-Zhe : begin glyph-block-import CommonShapes glyph-block-import Common-Derivatives @@ -580,7 +592,7 @@ glyph-block Letter-Cyrillic-Sha : begin include : df.markSet.e include : CyrShaShape XH df - turned 'cyrl/sha.italicStraight' null 'm.normal' [DivFrame para.diversityM 3].middle (XH / 2) + turned 'cyrl/sha.italicToothed' null 'm.normal' [DivFrame para.diversityM 3].middle (XH / 2) create-glyph 'cyrl/sha.italicTailed' : glyph-proc local df : DivFrame para.diversityM 3 include [refer-glyph 'm.normal'] AS_BASE @@ -600,7 +612,7 @@ glyph-block Letter-Cyrillic-Sha : begin select-variant 'cyrl/sha' 0x448 - alias 'cyrl/sha.BGR.straight' null 'cyrl/sha.italicStraight' + alias 'cyrl/sha.BGR.toothed' null 'cyrl/sha.italicToothed' alias 'cyrl/sha.BGR.tailed' null 'cyrl/sha.italicTailed' alias 'cyrl/sha.BGR.motionSerifed' null 'cyrl/sha.italicMotionSerifed' alias 'cyrl/sha.BGR.motionSerifedTailed' null 'cyrl/sha.italicMotionSerifedTailed' @@ -626,7 +638,7 @@ glyph-block Letter-Cyrillic-Sha : begin create-glyph 'cyrl/shcha.italic' : glyph-proc local df : DivFrame para.diversityM 3 set-width df.width - include [refer-glyph 'cyrl/sha.italicStraight'] AS_BASE + include [refer-glyph 'cyrl/sha.italicToothed'] AS_BASE include : CyrDescender df.rightSB (shift -- 0.05) italic-variant 'cyrl/shcha' 0x449 @@ -635,7 +647,7 @@ glyph-block Letter-Cyrillic-Sha : begin create-glyph 'cyrl/te.SRB' : glyph-proc local df : DivFrame para.diversityM 3 set-width df.width - include [refer-glyph 'cyrl/sha.italicStraight'] AS_BASE + include [refer-glyph 'cyrl/sha.italicToothed'] AS_BASE include : refer-glyph "macronAbove" select-variant 'cyrl/te' 0x442 diff --git a/font-src/glyphs/letter/latin.ptl b/font-src/glyphs/letter/latin.ptl index 145b9de33..d6a366c7c 100644 --- a/font-src/glyphs/letter/latin.ptl +++ b/font-src/glyphs/letter/latin.ptl @@ -2273,6 +2273,7 @@ glyph-block Letter-Latin-K : begin include : LowerKCursiveShape true select-variant 'k' 'k' + alias 'cyrl/ka.BGR' null 'k' glyph-block-import Letter-Blackboard : BBS BBD BBBarLeft define [BBKLegShape top left right] : begin @@ -4554,6 +4555,7 @@ glyph-block Letter-Latin-Lower-N : begin alias 'cyrl/pe.italicEarlessCornerTailed' null 'n.earlessCornerTailed' alias 'cyrl/pe.italicEarlessRoundedStraight' null 'n.earlessRoundedStraight' alias 'cyrl/pe.italicEarlessRoundedTailed' null 'n.earlessRoundedTailed' + alias 'cyrl/pe.BGR' null 'n' with-related-glyphs 'n' 'nApostrophe' 0x149 : lambda [src srl] : glyph-proc include : refer-glyph "commaAbove" @@ -4798,14 +4800,14 @@ glyph-block Letter-Latin-Lower-U : begin include : VBarRight RightSB 0 XH if SLAB : begin include : UTopLeftSerif XH - include : UTopRightSerif XH + if [not para.isItalic] : include : UTopRightSerif XH include : UBottomRightSerif XH create-derived 'u.tailed' : glyph-proc include : RightwardTailedBar RightSB 0 XH if SLAB : begin include : UTopLeftSerif XH - include : UBottomRightSerif XH + if [not para.isItalic] : include : UTopRightSerif XH create-derived 'u.motionSerifed' : glyph-proc include : VBarRight RightSB 0 XH @@ -5300,6 +5302,7 @@ glyph-block Letter-Latin-Lower-M : begin include : RightwardTailedBar df.rightSB 0 [SmallMSmoothHeight df] (sw -- df.mvs) select-variant 'm' 'm' + alias 'cyrl/te.italicNormal' null 'm.normal' alias 'cyrl/te.italicTailed' null 'm.tailed' alias 'cyrl/te.italicMotionSerifed' null 'm.motionSerifed' @@ -5307,6 +5310,11 @@ glyph-block Letter-Latin-Lower-M : begin refer-glyph 'm.normal' CyrDescender (Width * para.diversityM - SB) + alias 'cyrl/te.BGR.normal' null 'm.normal' + alias 'cyrl/te.BGR.tailed' null 'm.tailed' + alias 'cyrl/te.BGR.motionSerifed' null 'm.motionSerifed' + select-variant 'cyrl/te.BGR' + create-glyph 'mltail' 0x271 : glyph-proc local df : dfM include : df.markSet.p diff --git a/font-src/otl/gsub-cv-ss.ptl b/font-src/otl/gsub-cv-ss.ptl index c39357b17..d07ae320a 100644 --- a/font-src/otl/gsub-cv-ss.ptl +++ b/font-src/otl/gsub-cv-ss.ptl @@ -39,7 +39,7 @@ export : define [buildCVSS sink para glyphStore] : begin local st [pick-lookup sink lookupName].subtables.0 if [not st.(gn)] : set st.(gn) { } - set st.(gn).(gr.rank - 1) : gr.get glyph + set st.(gn).(gr.rank - 1) : glyphStore.ensureExists : gr.get glyph # ssxx foreach {name composition} para.variants.composites : if composition.tag : do diff --git a/font-src/otl/gsub-locl.ptl b/font-src/otl/gsub-locl.ptl index 6c5a07c8f..3af3cd683 100644 --- a/font-src/otl/gsub-locl.ptl +++ b/font-src/otl/gsub-locl.ptl @@ -1,6 +1,6 @@ import [copy-language add-feature add-lookup BeginLookupBlock EndLookupBlock] from "./table-util" -export : define [buildLOCL sink para] : begin +export : define [buildLOCL sink para glyphStore] : begin local rec : BeginLookupBlock sink define cyrlSRB : copy-language sink 'cyrl_SRB ' 'cyrl_DFLT' @@ -15,13 +15,13 @@ export : define [buildLOCL sink para] : begin type 'gsub_single' subtables : list : if para.isItalic object - 'cyrl/be' 'cyrl/be.SRB' - 'cyrl/ghe' 'cyrl/ghe.SRB' - 'cyrl/de' 'cyrl/de.SRB' - 'cyrl/pe' 'cyrl/pe.SRB' - 'cyrl/te' 'cyrl/te.SRB' + 'cyrl/be' : glyphStore.ensureExists 'cyrl/be.SRB' + 'cyrl/ghe' : glyphStore.ensureExists 'cyrl/ghe.SRB' + 'cyrl/de' : glyphStore.ensureExists 'cyrl/de.SRB' + 'cyrl/pe' : glyphStore.ensureExists 'cyrl/pe.SRB' + 'cyrl/te' : glyphStore.ensureExists 'cyrl/te.SRB' object - 'cyrl/be' 'cyrl/be.SRB' + 'cyrl/be' : glyphStore.ensureExists 'cyrl/be.SRB' # BGR define loclBGR : add-feature sink 'locl' @@ -29,22 +29,22 @@ export : define [buildLOCL sink para] : begin loclBGR.lookups.push : add-lookup sink : object type 'gsub_single' subtables : list : object - 'cyrl/ve' 'cyrl/ve.BGR' - 'cyrl/ghe' 'cyrl/ghe.italic' - 'cyrl/de' 'cyrl/de.BGR' - 'cyrl/zhe' 'cyrl/zhe.BGR' - 'cyrl/ze' 'cyrl/ze.BGR' - 'cyrl/i' 'cyrl/i.BGR' - 'cyrl/ibreve' 'cyrl/ibreve.BGR' - 'cyrl/igrave' 'cyrl/igrave.BGR' - 'cyrl/ka' 'k' - 'cyrl/El' 'Lambda' - 'cyrl/el' 'turnv' - 'cyrl/pe' 'n' - 'cyrl/te' 'm.normal' - 'cyrl/sha' 'cyrl/sha.BGR' - 'cyrl/shcha' 'cyrl/shcha.BGR' - 'cyrl/yu' 'cyrl/yu.BGR' - 'cyrl/tse' 'cyrl/tse.italic' + 'cyrl/ve' : glyphStore.ensureExists 'cyrl/ve.BGR' + 'cyrl/ghe' : glyphStore.ensureExists 'cyrl/ghe.italic' + 'cyrl/de' : glyphStore.ensureExists 'cyrl/de.BGR' + 'cyrl/zhe' : glyphStore.ensureExists 'cyrl/zhe.BGR' + 'cyrl/ze' : glyphStore.ensureExists 'cyrl/ze.BGR' + 'cyrl/i' : glyphStore.ensureExists 'cyrl/i.BGR' + 'cyrl/ibreve' : glyphStore.ensureExists 'cyrl/ibreve.BGR' + 'cyrl/igrave' : glyphStore.ensureExists 'cyrl/igrave.BGR' + 'cyrl/ka' : glyphStore.ensureExists 'cyrl/ka.BGR' + 'cyrl/El' : glyphStore.ensureExists 'cyrl/El.BGR' + 'cyrl/el' : glyphStore.ensureExists 'cyrl/el.BGR' + 'cyrl/pe' : glyphStore.ensureExists 'cyrl/pe.BGR' + 'cyrl/te' : glyphStore.ensureExists 'cyrl/te.BGR' + 'cyrl/sha' : glyphStore.ensureExists 'cyrl/sha.BGR' + 'cyrl/shcha' : glyphStore.ensureExists 'cyrl/shcha.BGR' + 'cyrl/yu' : glyphStore.ensureExists 'cyrl/yu.BGR' + 'cyrl/tse' : glyphStore.ensureExists 'cyrl/tse.BGR' EndLookupBlock.Front rec sink diff --git a/font-src/otl/index.ptl b/font-src/otl/index.ptl index e704e4ea7..b3071b805 100644 --- a/font-src/otl/index.ptl +++ b/font-src/otl/index.ptl @@ -47,7 +47,7 @@ define [buildGSUB para glyphStore markGlyphs] : begin # locl # Builds last, but the lookups are added into the beginning of the lookup list - buildLOCL gsub para + buildLOCL gsub para glyphStore MoveBackUtilityLookups gsub finalizeTable gsub diff --git a/font-src/support/glyph-store.js b/font-src/support/glyph-store.js index 5e94920a2..135722c8b 100644 --- a/font-src/support/glyph-store.js +++ b/font-src/support/glyph-store.js @@ -34,6 +34,11 @@ class GlyphStore { if (!g) throw new Error(`Glyph ${name} doesn't exist.`); return g; } + ensureExists(name) { + const g = this.nameForward.get(name); + if (!g) throw new Error(`Glyph ${name} doesn't exist.`); + return name; + } queryNameOf(g) { return this.nameBackward.get(g); } diff --git a/params/variants.toml b/params/variants.toml index 6b0e2b24d..7a33e8d6b 100644 --- a/params/variants.toml +++ b/params/variants.toml @@ -562,6 +562,7 @@ description = '`m` with normal middle leg, touching the baseline' selector.m = 'normal' selectorUpright."cyrl/te" = "upright" selectorItalic."cyrl/te" = "italicNormal" +selector."cyrl/te.BGR" = "normal" [prime.m.variants.shortleg] rank = 2 @@ -569,6 +570,7 @@ description = '`m` with shorter middle leg, like Ubuntu Mono' selector.m = 'shortleg' selectorUpright."cyrl/te" = "upright" selectorItalic."cyrl/te" = "italicNormal" +selector."cyrl/te.BGR" = "normal" [prime.m.variants.tailed] rank = 3 @@ -576,6 +578,7 @@ description = '`m` with normal middle leg, touching the baseline, and a curly ta selector.m = 'tailed' selectorUpright."cyrl/te" = "upright" selectorItalic."cyrl/te" = "italicTailed" +selector."cyrl/te.BGR" = "tailed" [prime.m.variants.shortleg-tailed] rank = 4 @@ -583,6 +586,7 @@ description = '`m` with shorter middle leg, like Ubuntu Mono, and a curly tail' selector.m = 'shortlegTailed' selectorUpright."cyrl/te" = "upright" selectorItalic."cyrl/te" = "italicTailed" +selector."cyrl/te.BGR" = "tailed" [prime.m.variants.earless-corner-double-arch] rank = 5 @@ -590,6 +594,7 @@ description = "Earless (corner top-left) `m` with normal middle leg touching bas selector.m = 'earlessCornerDoubleArch' selectorUpright."cyrl/te" = "upright" selectorItalic."cyrl/te" = "italicNormal" +selector."cyrl/te.BGR" = "normal" [prime.m.variants.earless-corner-double-arch-shortleg] rank = 6 @@ -597,6 +602,7 @@ description = "Earless (corner top-left) `m` with a shorter middle leg like Ubun selector.m = 'earlessCornerDoubleArchShortleg' selectorUpright."cyrl/te" = "upright" selectorItalic."cyrl/te" = "italicNormal" +selector."cyrl/te.BGR" = "normal" [prime.m.variants.earless-corner-double-arch-tailed] rank = 7 @@ -604,6 +610,7 @@ description = "Earless (corner top-left) `m` with normal middle leg touching bas selector.m = 'earlessCornerDoubleArchTailed' selectorUpright."cyrl/te" = "upright" selectorItalic."cyrl/te" = "italicNormal" +selector."cyrl/te.BGR" = "normal" [prime.m.variants.earless-corner-double-arch-shortleg-tailed] rank = 8 @@ -611,6 +618,7 @@ description = "Earless (corner top-left) `m` with a shorter middle leg like Ubun selector.m = 'earlessCornerDoubleArchShortlegTailed' selectorUpright."cyrl/te" = "upright" selectorItalic."cyrl/te" = "italicNormal" +selector."cyrl/te.BGR" = "normal" [prime.m.variants.earless-rounded-double-arch] rank = 9 @@ -618,6 +626,7 @@ description = "Earless (rounded top-left) `m` with normal middle leg touching ba selector.m = 'earlessRoundedDoubleArch' selectorUpright."cyrl/te" = "upright" selectorItalic."cyrl/te" = "italicNormal" +selector."cyrl/te.BGR" = "normal" [prime.m.variants.earless-rounded-double-arch-shortleg] rank = 10 @@ -632,6 +641,7 @@ description = "Earless (rounded top-left) `m` with normal middle leg touching ba selector.m = 'earlessRoundedDoubleArchTailed' selectorUpright."cyrl/te" = "upright" selectorItalic."cyrl/te" = "italicNormal" +selector."cyrl/te.BGR" = "normal" [prime.m.variants.earless-rounded-double-arch-shortleg-tailed] rank = 12 @@ -639,6 +649,7 @@ description = "Earless (rounded top-left) `m` with a shorter middle leg like Ubu selector.m = 'earlessRoundedDoubleArchShortlegTailed' selectorUpright."cyrl/te" = "upright" selectorItalic."cyrl/te" = "italicNormal" +selector."cyrl/te.BGR" = "normal" [prime.m.variants.earless-single-arch] rank = 13 @@ -646,6 +657,7 @@ description = "Earless (single-arch) `m` with normal middle leg touching baselin selector.m = 'earlessSingleArch' selectorUpright."cyrl/te" = "upright" selectorItalic."cyrl/te" = "italicNormal" +selector."cyrl/te.BGR" = "normal" [prime.m.variants.earless-single-arch-shortleg] rank = 14 @@ -653,6 +665,7 @@ description = "Earless (single-arch) `m` with a shorter middle leg like Ubuntu M selector.m = 'earlessSingleArchShortleg' selectorUpright."cyrl/te" = "upright" selectorItalic."cyrl/te" = "italicNormal" +selector."cyrl/te.BGR" = "normal" [prime.m.variants.earless-single-arch-tailed] rank = 15 @@ -660,6 +673,7 @@ description = "Earless (single-arch) `m` with normal middle leg touching baselin selector.m = 'earlessSingleArchTailed' selectorUpright."cyrl/te" = "upright" selectorItalic."cyrl/te" = "italicNormal" +selector."cyrl/te.BGR" = "normal" [prime.m.variants.earless-single-arch-shortleg-tailed] rank = 16 @@ -667,6 +681,7 @@ description = "Earless (single-arch) `m` with a shorter middle leg like Ubuntu M selector.m = 'earlessSingleArchShortlegTailed' selectorUpright."cyrl/te" = "upright" selectorItalic."cyrl/te" = "italicNormal" +selector."cyrl/te.BGR" = "normal" [prime.m.variants.motion-serifed] rank = 17 @@ -674,6 +689,7 @@ description = "`m` with motion serifs, normal middle leg touching baseline" selector.m = 'motionSerifed' selectorUpright."cyrl/te" = "upright" selectorItalic."cyrl/te" = "italicMotionSerifed" +selector."cyrl/te.BGR" = "motionSerifed" [prime.m.variants.motion-serifed-shortleg] rank = 18 @@ -681,6 +697,7 @@ description = "`m` with motion serifs, a shorter middle leg like Ubuntu Mono" selector.m = 'motionSerifedShortleg' selectorUpright."cyrl/te" = "upright" selectorItalic."cyrl/te" = "italicMotionSerifed" +selector."cyrl/te.BGR" = "motionSerifed" [prime.m.variants.motion-serifed-tailed] rank = 19 @@ -688,6 +705,7 @@ description = "`m` with motion serifs, normal middle leg touching baseline, and selector.m = 'motionSerifedTailed' selectorUpright."cyrl/te" = "upright" selectorItalic."cyrl/te" = "italicMotionSerifed" +selector."cyrl/te.BGR" = "motionSerifed" [prime.m.variants.motion-serifed-shortleg-tailed] rank = 20 @@ -695,6 +713,7 @@ description = "`m` with motion serifs, a shorter middle leg like Ubuntu Mono, an selector.m = 'motionSerifedShortlegTailed' selectorUpright."cyrl/te" = "upright" selectorItalic."cyrl/te" = "italicMotionSerifed" +selector."cyrl/te.BGR" = "motionSerifed" @@ -918,11 +937,14 @@ selector.u = "toothed" selectorUpright."cyrl/i" = "upright" selectorItalic."cyrl/i" = "italicToothed" selectorUpright."cyrl/sha" = "upright" -selectorItalic."cyrl/sha" = "italicStraight" -selectorUpright."cyrl/sha.BGR" = "straight" -selectorItalic."cyrl/sha.BGR" = "straight" +selectorItalic."cyrl/sha" = "italicToothed" selectorUpright."cyrl/dzhe" = "upright" -selectorItalic."cyrl/dzhe" = "italicStraight" +selectorItalic."cyrl/dzhe" = "italicToothed" +selectorUpright."cyrl/tse" = "upright" +selectorItalic."cyrl/tse" = "italicToothed" +selector."cyrl/i.BGR" = "toothed" +selector."cyrl/sha.BGR" = "toothed" +selector."cyrl/tse.BGR" = "toothed" [prime.u.variants.toothless-corner] rank = 2 @@ -931,11 +953,14 @@ selector.u = 'toothlessCorner' selectorUpright."cyrl/i" = "upright" selectorItalic."cyrl/i" = "italicToothed" selectorUpright."cyrl/sha" = "upright" -selectorItalic."cyrl/sha" = "italicStraight" -selectorUpright."cyrl/sha.BGR" = "straight" -selectorItalic."cyrl/sha.BGR" = "straight" +selectorItalic."cyrl/sha" = "italicToothed" selectorUpright."cyrl/dzhe" = "upright" -selectorItalic."cyrl/dzhe" = "italicStraight" +selectorItalic."cyrl/dzhe" = "italicToothed" +selectorUpright."cyrl/tse" = "upright" +selectorItalic."cyrl/tse" = "italicToothed" +selector."cyrl/i.BGR" = "toothed" +selector."cyrl/sha.BGR" = "toothed" +selector."cyrl/tse.BGR" = "toothed" [prime.u.variants.toothless-rounded] rank = 3 @@ -944,11 +969,14 @@ selector.u = "toothlessRounded" selectorUpright."cyrl/i" = "upright" selectorItalic."cyrl/i" = "italicToothed" selectorUpright."cyrl/sha" = "upright" -selectorItalic."cyrl/sha" = "italicStraight" -selectorUpright."cyrl/sha.BGR" = "straight" -selectorItalic."cyrl/sha.BGR" = "straight" +selectorItalic."cyrl/sha" = "italicToothed" selectorUpright."cyrl/dzhe" = "upright" -selectorItalic."cyrl/dzhe" = "italicStraight" +selectorItalic."cyrl/dzhe" = "italicToothed" +selectorUpright."cyrl/tse" = "upright" +selectorItalic."cyrl/tse" = "italicToothed" +selector."cyrl/i.BGR" = "toothed" +selector."cyrl/sha.BGR" = "toothed" +selector."cyrl/tse.BGR" = "toothed" [prime.u.variants.tailed] rank = 4 @@ -958,10 +986,13 @@ selectorUpright."cyrl/i" = "upright" selectorItalic."cyrl/i" = "italicTailed" selectorUpright."cyrl/sha" = "upright" selectorItalic."cyrl/sha" = "italicTailed" -selectorUpright."cyrl/sha.BGR" = "tailed" -selectorItalic."cyrl/sha.BGR" = "tailed" selectorUpright."cyrl/dzhe" = "upright" selectorItalic."cyrl/dzhe" = "italicTailed" +selectorUpright."cyrl/tse" = "upright" +selectorItalic."cyrl/tse" = "italicToothed" +selector."cyrl/i.BGR" = "tailed" +selector."cyrl/sha.BGR" = "tailed" +selector."cyrl/tse.BGR" = "toothed" [prime.u.variants.motion-serifed] rank = 5 @@ -971,10 +1002,13 @@ selectorUpright."cyrl/i" = "upright" selectorItalic."cyrl/i" = "italicMotionSerifed" selectorUpright."cyrl/sha" = "upright" selectorItalic."cyrl/sha" = "italicMotionSerifed" -selectorUpright."cyrl/sha.BGR" = "motionSerifed" -selectorItalic."cyrl/sha.BGR" = "motionSerifed" selectorUpright."cyrl/dzhe" = "upright" selectorItalic."cyrl/dzhe" = "italicMotionSerifed" +selectorUpright."cyrl/tse" = "upright" +selectorItalic."cyrl/tse" = "italicMotionSerifed" +selector."cyrl/i.BGR" = "motionSerifed" +selector."cyrl/sha.BGR" = "motionSerifed" +selector."cyrl/tse.BGR" = "motionSerifed" [prime.u.variants.motion-serifed-tailed] rank = 6 @@ -984,10 +1018,13 @@ selectorUpright."cyrl/i" = "upright" selectorItalic."cyrl/i" = "italicMotionSerifedTailed" selectorUpright."cyrl/sha" = "upright" selectorItalic."cyrl/sha" = "italicMotionSerifedTailed" -selectorUpright."cyrl/sha.BGR" = "motionSerifedTailed" -selectorItalic."cyrl/sha.BGR" = "motionSerifedTailed" selectorUpright."cyrl/dzhe" = "upright" selectorItalic."cyrl/dzhe" = "italicMotionSerifedTailed" +selectorUpright."cyrl/tse" = "upright" +selectorItalic."cyrl/tse" = "italicMotionSerifed" +selector."cyrl/i.BGR" = "motionSerifedTailed" +selector."cyrl/sha.BGR" = "motionSerifedTailed" +selector."cyrl/tse.BGR" = "motionSerifed" [prime.v] sampler = 'vV'