* Fix broken serif shapes in Italic Cyrillic Small I (#717).

* Make variant selectors for `m` and `u` have more effect on Cyrillic letters.
This commit is contained in:
be5invis 2020-11-08 09:17:09 -08:00
parent 8a1ded959a
commit 4998206c50
8 changed files with 126 additions and 62 deletions

View file

@ -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.

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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);
}

View file

@ -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'