Add serifed and top-serifed variants for S and s (#822).

This commit is contained in:
be5invis 2021-01-24 19:10:40 -08:00
parent 4aff8d3ed1
commit ae4d19f1c3
7 changed files with 190 additions and 123 deletions

View file

@ -1,3 +1,4 @@
* Fix broken curly variants of `x` and `X` (#824). * Fix broken curly variants of `x` and `X` (#824).
* Add compact-serifed and compact-top-serifed variants of `r` (#826). * Add compact-serifed and compact-top-serifed variants of `r` (#826).
* Allow Zeta to share variants with `Z` (#827). * Allow Zeta to share variants with `Z` (#827).
* Add serifed and top-serifed variants for `S` and `s` (#822).

View file

@ -1103,15 +1103,15 @@ glyph-block Autobuild-Pnonetic-Ligatures : if [not recursive] : begin
createPhoneticLigatures stdShrink stdShrink 1 1 : list createPhoneticLigatures stdShrink stdShrink 1 1 : list
list 0x02A3 'd' 'z' 'b' list 0x02A3 'd' 'z' 'b'
list 0x02A4 'd' 'ezh' 'if' list 0x02A4 'd' 'ezh' 'if'
list 0x02A5 'd' 'zcurlytail' 'if' list 0x02A5 'd' 'zCurlyTail' 'if'
list 0x02A6 't.phoneticLeft' 's.phoneticRight' 'b' list 0x02A6 't.phoneticLeft' 's.phoneticRight' 'b'
list 0x02A7 't.phoneticLeft.extended' 'esh' 'if' list 0x02A7 't.phoneticLeft.extended' 'esh' 'if'
list 0x02A8 't.phoneticLeft' 'ccurlytail' 'b' list 0x02A8 't.phoneticLeft' 'cCurlyTail' 'b'
list 0x02A9 'f.phoneticLeft' 'eng' 'if' list 0x02A9 'f.phoneticLeft' 'eng' 'if'
list 0x02AA 'l.phoneticLeft' 's.phoneticRight' 'b' list 0x02AA 'l.phoneticLeft' 's.phoneticRight' 'b'
list 0x02AB 'l.phoneticLeft' 'z' 'b' list 0x02AB 'l.phoneticLeft' 'z' 'b'
list 0xAB66 'd' 'zrtailBR' 'if' list 0xAB66 'd' 'zrtailBR' 'if'
list 0xAB67 't.phoneticLeft' 'srtail' 'if' list 0xAB67 't.phoneticLeft' 'sRTail' 'if'
glyph-block Autobuild-Grouped-Digits : if [not recursive] : begin glyph-block Autobuild-Grouped-Digits : if [not recursive] : begin
glyph-block-import CommonShapes glyph-block-import CommonShapes

View file

@ -255,7 +255,7 @@ glyph-block Autobuild-Transformed : begin
list 0x1D78 'smcpH' list 0x1D78 'smcpH'
list 0x1D9B 'turnscripta' list 0x1D9B 'turnscripta'
list 0x1D9C 'c' list 0x1D9C 'c'
list 0x1D9D 'ccurlytail' list 0x1D9D 'cCurlyTail'
list 0x1D9E 'eth' list 0x1D9E 'eth'
list 0x1D9F 'revLatinEpsilon' list 0x1D9F 'revLatinEpsilon'
list 0x1DA0 'f' list 0x1DA0 'f'
@ -276,7 +276,7 @@ glyph-block Autobuild-Transformed : begin
list 0x1DB0 'smcpN' list 0x1DB0 'smcpN'
list 0x1DB1 'obar' list 0x1DB1 'obar'
list 0x1DB2 'latinphi' list 0x1DB2 'latinphi'
list 0x1DB3 'srtail' list 0x1DB3 'sRTail'
list 0x1DB4 'esh' list 0x1DB4 'esh'
list 0x1DB5 'tltail' list 0x1DB5 'tltail'
list 0x1DB6 'ulongBarOver' list 0x1DB6 'ulongBarOver'
@ -285,7 +285,7 @@ glyph-block Autobuild-Transformed : begin
list 0x1DB9 'latinupsilon2' list 0x1DB9 'latinupsilon2'
list 0x1DBA 'turnv' list 0x1DBA 'turnv'
list 0x1DBC 'zrtailBR' list 0x1DBC 'zrtailBR'
list 0x1DBD 'zcurlytail' list 0x1DBD 'zCurlyTail'
list 0x1DBE 'ezh' list 0x1DBE 'ezh'
list 0x1DBF 'grek/theta' list 0x1DBF 'grek/theta'
list 0x1DBB 'z' list 0x1DBB 'z'

View file

@ -157,7 +157,7 @@ glyph-block Letter-Latin-C : begin
include [refer-glyph 'c'] AS_BASE include [refer-glyph 'c'] AS_BASE
include : HOverlayBar (SB * 0.3) [mix (SB + Stroke) (RightSB - Stroke) 0.55] (XH * OverlayPos) include : HOverlayBar (SB * 0.3) [mix (SB + Stroke) (RightSB - Stroke) 0.55] (XH * OverlayPos)
create-glyph 'ccurlytail' 0x255 : glyph-proc create-glyph 'cCurlyTail' 0x255 : glyph-proc
include : MarkSet.e include : MarkSet.e
local stroke : AdviceStroke2 2 3 XH local stroke : AdviceStroke2 2 3 XH
local fine : AdviceStroke2 3 3 XH local fine : AdviceStroke2 3 3 XH

View file

@ -149,20 +149,78 @@ glyph-block Letter-Latin-S : begin
hookend O (sw -- stroke) (swItalicAdj -- Stroke) hookend O (sw -- stroke) (swItalicAdj -- Stroke)
g4 (RightSB + OX - SOBot) SHook g4 (RightSB + OX - SOBot) SHook
create-glyph 'S' 'S' : glyph-proc define SConfig : object
include : MarkSet.capital 'serifless' { SStroke SmallSStroke 0 0 }
if SLAB : include : ArcStartSerif RightSB CAP Stroke Hook 'serifed' { SlabSStroke SlabSmallSStroke 1 1 }
if SLAB : include : ArcEndSerif SB 0 Stroke Hook 'topSerifed' { HalfSlabSStroke HalfSlabSmallSStroke 1 0 }
include : [if SLAB SlabSStroke SStroke]
foreach { suffix { upperShape lowerShape doTS doBS } } [Object.entries SConfig] : do
create-glyph "S.\(suffix)" : glyph-proc
include : MarkSet.capital
include : upperShape
if doTS : include : ArcStartSerif RightSB CAP Stroke Hook
if doBS : include : ArcEndSerif SB 0 Stroke Hook
create-glyph "s.\(suffix)" : glyph-proc
include : MarkSet.e
include : lowerShape
if doTS : include : ArcStartSerif RightSB XH [AdviceStroke2 2 3 XH] Hook
if doBS : include : ArcEndSerif SB 0 [AdviceStroke2 2 3 XH] Hook
if [not doBS] : create-glyph "SSwash.\(suffix)" : glyph-proc
include : MarkSet.if
if doTS : include : ArcStartSerif RightSB CAP Stroke Hook
local stroke : include : upperShape
local start : currentGlyph.gizmo.unapply stroke.lhsKnots.(stroke.lhsKnots.length - 1)
local sw : AdviceStroke2 2 3 CAP
include : dispiro
widths.lhs [AdviceStroke 4.5]
g4 start.x start.y
alsoThru 0.15 0.6 important
flat (RightSB - 1) Descender [widths sw 0]
curl RightSB Descender
if [not doBS] : create-glyph "sSwash.\(suffix)" : glyph-proc
include : MarkSet.p
if doTS : include : ArcStartSerif RightSB XH [AdviceStroke2 2 3 XH] Hook
local stroke : include : lowerShape
local start : currentGlyph.gizmo.unapply stroke.lhsKnots.(stroke.lhsKnots.length - 1)
local sw : AdviceStroke2 2 3 XH
include : dispiro
widths.lhs [AdviceStroke 4.5]
g4 start.x start.y
alsoThru 0.15 0.6 important
flat (RightSB - 1) Descender [widths sw 0]
curl RightSB Descender
if [not doBS] : create-glyph "sRTail.\(suffix)" : glyph-proc
include : MarkSet.p
if doTS : include : ArcStartSerif RightSB XH [AdviceStroke2 2 3 XH] Hook
local stroke : include : lowerShape
local start : currentGlyph.gizmo.unapply stroke.lhsKnots.(stroke.lhsKnots.length - 1)
include : new-glyph : glyph-proc
local sw : AdviceStroke2 2 3 XH
include : refer-glyph "rtailBR"
include : Upright
include : Translate (start.x + sw * HVContrast) 0
include : Italify
include : VBarLeft start.x 0 start.y
select-variant 'S' 'S'
select-variant 's' 's'
select-variant 'SSwash' 0x2C7E
select-variant 'sSwash' 0x23F
select-variant 'sRTail' 0x282 (follow -- 'sSwash')
alias 'cyrl/Dze' 0x405 'S' alias 'cyrl/Dze' 0x405 'S'
create-glyph 's' 's' : glyph-proc
include : MarkSet.e
if SLAB : include : ArcStartSerif RightSB XH [AdviceStroke2 2 3 XH] Hook
if SLAB : include : ArcEndSerif SB 0 [AdviceStroke2 2 3 XH] Hook
include : [if SLAB SlabSmallSStroke SmallSStroke]
alias 'cyrl/dze' 0x455 's' alias 'cyrl/dze' 0x455 's'
create-glyph 's.phoneticRight' : glyph-proc create-glyph 's.phoneticRight' : glyph-proc
@ -239,50 +297,6 @@ glyph-block Letter-Latin-S : begin
local start : currentGlyph.gizmo.unapply stroke.rhsKnots.(0) local start : currentGlyph.gizmo.unapply stroke.rhsKnots.(0)
include : VBarRight start.x (-Accent) start.y include : VBarRight start.x (-Accent) start.y
create-glyph 'srtail' 0x282 : glyph-proc
include : MarkSet.p
if SLAB : include : ArcStartSerif RightSB XH [AdviceStroke2 2 3 XH] Hook
local stroke : include : [if SLAB HalfSlabSmallSStroke SmallSStroke]
local start : currentGlyph.gizmo.unapply stroke.lhsKnots.(stroke.lhsKnots.length - 1)
include : new-glyph : glyph-proc
local sw : AdviceStroke2 2 3 XH
include : refer-glyph "rtailBR"
include : Upright
include : Translate (start.x + sw * HVContrast) 0
include : Italify
include : VBarLeft start.x 0 start.y
create-glyph 'Sswash' 0x2C7E : glyph-proc
include : MarkSet.if
if SLAB : include : ArcStartSerif RightSB CAP Stroke Hook
local stroke : include : [if SLAB HalfSlabSStroke SStroke]
local start : currentGlyph.gizmo.unapply stroke.lhsKnots.(stroke.lhsKnots.length - 1)
local sw : AdviceStroke2 2 3 CAP
include : dispiro
widths.lhs [AdviceStroke 4.5]
g4 start.x start.y
alsoThru 0.15 0.6 important
flat (RightSB - 1) Descender [widths sw 0]
curl RightSB Descender
create-glyph 'sswash' 0x23F : glyph-proc
include : MarkSet.p
if SLAB : include : ArcStartSerif RightSB XH [AdviceStroke2 2 3 XH] Hook
local stroke : include : [if SLAB HalfSlabSmallSStroke SmallSStroke]
local start : currentGlyph.gizmo.unapply stroke.lhsKnots.(stroke.lhsKnots.length - 1)
local sw : AdviceStroke2 2 3 XH
include : dispiro
widths.lhs [AdviceStroke 4.5]
g4 start.x start.y
alsoThru 0.15 0.6 important
flat (RightSB - 1) Descender [widths sw 0]
curl RightSB Descender
create-glyph 'dollar.open' : glyph-proc create-glyph 'dollar.open' : glyph-proc
include : MarkSet.capital include : MarkSet.capital

View file

@ -236,7 +236,7 @@ glyph-block Letter-Latin-Z : begin
with-related-glyphs 'Zdesc' 0x2C6B 'Z' ZDescCtor with-related-glyphs 'Zdesc' 0x2C6B 'Z' ZDescCtor
with-related-glyphs 'zdesc' 0x2C6C 'z' ZDescCtor with-related-glyphs 'zdesc' 0x2C6C 'z' ZDescCtor
with-related-glyphs 'zcurlytail' 0x291 'z' : lambda [src sel] : glyph-proc with-related-glyphs 'zCurlyTail' 0x291 'z' : lambda [src sel] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS include [refer-glyph src] AS_BASE ALSO_METRICS
local fine : AdviceStroke2 5 4 XH local fine : AdviceStroke2 5 4 XH

View file

@ -535,9 +535,33 @@ selector.T = "motionSerifed"
[prime.capital-s]
sampler = 'S'
tag = 'cv18'
[prime.capital-s.variants.serifless]
rank = 1
description = "Serifless `S`"
selector.S = "serifless"
selector.SSwash = "serifless"
[prime.capital-s.variants.serifed]
rank = 2
description = "`S` with serifs at both end"
selector.S = "serifed"
selector.SSwash = "topSerifed"
[prime.capital-s.variants.top-serifed]
rank = 3
description = "`S` with single serif at top"
selector.S = "topSerifed"
selector.SSwash = "topSerifed"
[prime.capital-u] [prime.capital-u]
sampler = 'U' sampler = 'U'
tag = 'cv18' tag = 'cv19'
[prime.capital-u.variants.toothed] [prime.capital-u.variants.toothed]
rank = 1 rank = 1
@ -593,7 +617,7 @@ selector.U = "toothlessRoundedBilateralMotionSerifed"
[prime.capital-v] [prime.capital-v]
sampler = 'V' sampler = 'V'
tag = 'cv19' tag = 'cv20'
[prime.capital-v.variants.straight] [prime.capital-v.variants.straight]
rank = 1 rank = 1
@ -623,7 +647,7 @@ selector.Vhooktop = "curly"
[prime.capital-w] [prime.capital-w]
sampler = 'W' sampler = 'W'
tag = 'cv20' tag = 'cv21'
[prime.capital-w.variants.straight] [prime.capital-w.variants.straight]
rank = 1 rank = 1
@ -689,7 +713,7 @@ selector.Whooktop = "straightFlatTop"
[prime.capital-x] [prime.capital-x]
sampler = 'X' sampler = 'X'
tag = 'cv21' tag = 'cv22'
[prime.capital-x.variants.straight] [prime.capital-x.variants.straight]
rank = 1 rank = 1
@ -715,7 +739,7 @@ selector.X = "curlyMotionSerifed"
[prime.capital-y] [prime.capital-y]
sampler = 'Y' sampler = 'Y'
tag = 'cv22' tag = 'cv23'
[prime.capital-y.variants.straight] [prime.capital-y.variants.straight]
rank = 1 rank = 1
@ -741,7 +765,7 @@ selector.Y = "curlyMotionSerifed"
[prime.capital-z] [prime.capital-z]
sampler = 'Z' sampler = 'Z'
tag = 'cv23' tag = 'cv24'
[prime.capital-z.variants.standard] [prime.capital-z.variants.standard]
rank = 1 rank = 1
@ -811,7 +835,7 @@ selector."grek/Zeta" = 'curlyTopMotionSerifed'
[prime.a] [prime.a]
sampler = 'a' sampler = 'a'
tag = 'cv24' tag = 'cv25'
[prime.a.variants.double-storey] [prime.a.variants.double-storey]
rank = 1 rank = 1
@ -886,7 +910,7 @@ selector.a = 'singleStoreyEarlessRoundedMotionSerifed'
[prime.b] [prime.b]
sampler = 'b' sampler = 'b'
tag = 'cv25' tag = 'cv26'
[prime.b.variants.toothed] [prime.b.variants.toothed]
rank = 1 rank = 1
@ -928,7 +952,7 @@ selector.bhooktop = "toothlessRounded"
[prime.d] [prime.d]
sampler = 'd' sampler = 'd'
tag = 'cv26' tag = 'cv27'
[prime.d.variants.toothed] [prime.d.variants.toothed]
rank = 1 rank = 1
@ -982,7 +1006,7 @@ selector.dhooktop = "tailed"
[prime.e] [prime.e]
sampler = 'e' sampler = 'e'
tag = 'cv27' tag = 'cv28'
[prime.e.variants.flat-crossbar] [prime.e.variants.flat-crossbar]
rank = 1 rank = 1
@ -998,7 +1022,7 @@ selector.e = 'rounded'
[prime.f] [prime.f]
sampler = 'f' sampler = 'f'
tag = 'cv28' tag = 'cv29'
[prime.f.variants.serifless] [prime.f.variants.serifless]
rank = 1 rank = 1
@ -1102,7 +1126,7 @@ selector.f = "flatHookDiagonalTailedCrossbarAtXHeight"
[prime.g] [prime.g]
sampler = 'g' sampler = 'g'
tag = 'cv29' tag = 'cv30'
[prime.g.variants.double-storey] [prime.g.variants.double-storey]
rank = 1 rank = 1
@ -1158,7 +1182,7 @@ selector.g = 'singleStoreyMotionSerifedFlatHook'
[prime.h] [prime.h]
sampler = 'h' sampler = 'h'
tag = 'cv30' tag = 'cv31'
[prime.h.variants.straight] [prime.h.variants.straight]
rank = 1 rank = 1
@ -1192,7 +1216,7 @@ selector.heng = 'straightMotionSerifed'
[prime.i] [prime.i]
sampler = 'i' sampler = 'i'
tag = 'cv31' tag = 'cv32'
[prime.i.variants.serifed] [prime.i.variants.serifed]
rank = 1 rank = 1
@ -1258,7 +1282,7 @@ selector.dotlessi = 'serifedDiagonalTailed'
[prime.j] [prime.j]
sampler = 'j' sampler = 'j'
tag = 'cv32' tag = 'cv33'
[prime.j.variants.serifed] [prime.j.variants.serifed]
rank = 1 rank = 1
@ -1299,7 +1323,7 @@ selector.dotlessj = 'diagonalTailedSerifed'
[prime.k] [prime.k]
sampler = 'k' sampler = 'k'
tag = 'cv33' tag = 'cv34'
[prime.k.variants.straight] [prime.k.variants.straight]
rank = 1 rank = 1
@ -1388,7 +1412,7 @@ selector.kDescender = 'symmetricConnectedMotionSerifed'
[prime.l] [prime.l]
sampler = 'l' sampler = 'l'
tag = 'cv34' tag = 'cv35'
[prime.l.variants.serifed] [prime.l.variants.serifed]
rank = 1 rank = 1
@ -1453,7 +1477,7 @@ selector.l = 'serifedDiagonalTailed'
[prime.m] [prime.m]
sampler = 'm' sampler = 'm'
tag = 'cv35' tag = 'cv36'
[prime.m.variants.normal] [prime.m.variants.normal]
rank = 1 rank = 1
@ -1579,7 +1603,7 @@ selector."cyrl/te.italic" = "motionSerifedTailed"
[prime.n] [prime.n]
sampler = 'n' sampler = 'n'
tag = 'cv36' tag = 'cv37'
[prime.n.variants.straight] [prime.n.variants.straight]
rank = 1 rank = 1
@ -1641,7 +1665,7 @@ selector."cyrl/pe.italic" = "motionSerifedTailed"
[prime.p] [prime.p]
sampler = 'p' sampler = 'p'
tag = 'cv37' tag = 'cv38'
[prime.p.variants.eared] [prime.p.variants.eared]
rank = 1 rank = 1
@ -1670,7 +1694,7 @@ selector."cyrl/er" = "motionSerifed"
[prime.q] [prime.q]
sampler = 'q' sampler = 'q'
tag = 'cv38' tag = 'cv39'
[prime.q.variants.straight] [prime.q.variants.straight]
rank = 1 rank = 1
@ -1735,7 +1759,7 @@ selector.q = 'motionSerifedDiagonalTailed'
[prime.r] [prime.r]
sampler = 'r' sampler = 'r'
tag = 'cv39' tag = 'cv40'
[prime.r.variants.serifless] [prime.r.variants.serifless]
rank = 1 rank = 1
@ -1819,9 +1843,33 @@ selector."rflap" = "compact"
[prime.s]
sampler = 's'
tag = 'cv41'
[prime.s.variants.serifless]
rank = 1
description = "Serifless `s`"
selector.s = "serifless"
selector.sSwash = "serifless"
[prime.s.variants.serifed]
rank = 2
description = "`s` with serifs at both end"
selector.s = "serifed"
selector.sSwash = "topSerifed"
[prime.s.variants.top-serifed]
rank = 3
description = "`s` with single serif at top"
selector.s = "topSerifed"
selector.sSwash = "topSerifed"
[prime.t] [prime.t]
sampler = 't' sampler = 't'
tag = 'cv40' tag = 'cv42'
[prime.t.variants.standard] [prime.t.variants.standard]
rank = 1 rank = 1
@ -1862,7 +1910,7 @@ selector.t = 'diagonalTailed'
[prime.u] [prime.u]
sampler = 'u' sampler = 'u'
tag = 'cv41' tag = 'cv43'
[prime.u.variants.toothed] [prime.u.variants.toothed]
rank = 1 rank = 1
@ -1940,7 +1988,7 @@ selector."cyrl/tse.italic" = "motionSerifed"
[prime.v] [prime.v]
sampler = 'v' sampler = 'v'
tag = 'cv42' tag = 'cv44'
[prime.v.variants.straight] [prime.v.variants.straight]
rank = 1 rank = 1
@ -1970,7 +2018,7 @@ selector.vhooktop = "curly"
[prime.w] [prime.w]
sampler = 'w' sampler = 'w'
tag = 'cv43' tag = 'cv45'
[prime.w.variants.straight] [prime.w.variants.straight]
rank = 1 rank = 1
@ -2036,7 +2084,7 @@ selector.whooktop = "straightFlatTop"
[prime.x] [prime.x]
sampler = 'x' sampler = 'x'
tag = 'cv44' tag = 'cv46'
[prime.x.variants.straight] [prime.x.variants.straight]
rank = 1 rank = 1
@ -2066,7 +2114,7 @@ selector."grek/chi" = "curly"
[prime.y] [prime.y]
sampler = 'y' sampler = 'y'
tag = 'cv45' tag = 'cv47'
[prime.y.variants.straight] [prime.y.variants.straight]
rank = 1 rank = 1
@ -2142,7 +2190,7 @@ selector.yhooktop = "cursiveFlatHook"
[prime.z] [prime.z]
sampler = 'z' sampler = 'z'
tag = 'cv46' tag = 'cv48'
[prime.z.variants.standard] [prime.z.variants.standard]
rank = 1 rank = 1
@ -2203,7 +2251,7 @@ selector.z = 'curlyTopMotionSerifed'
[prime.eszet] [prime.eszet]
sampler = 'ß' sampler = 'ß'
samplerExplain = 'Eszet' samplerExplain = 'Eszet'
tag = 'cv47' tag = 'cv49'
[prime.eszet.variants.traditional] [prime.eszet.variants.traditional]
rank = 1 rank = 1
@ -2224,7 +2272,7 @@ selector.eszet = 'longsslig'
[prime.turn-v] [prime.turn-v]
sampler = 'ΛΔ' sampler = 'ΛΔ'
tag = 'cv48' tag = 'cv50'
[prime.turn-v.variants.straight] [prime.turn-v.variants.straight]
rank = 1 rank = 1
@ -2243,7 +2291,7 @@ selector."grek/Delta" = "curly"
[prime.lambda] [prime.lambda]
sampler = 'λ' sampler = 'λ'
samplerExplain = 'Greek small Lambda' samplerExplain = 'Greek small Lambda'
tag = 'cv49' tag = 'cv51'
[prime.lambda.variants.straight] [prime.lambda.variants.straight]
rank = 1 rank = 1
@ -2260,7 +2308,7 @@ selector."grek/lambda" = "curly"
[prime.cyrl-capital-u] [prime.cyrl-capital-u]
sampler = 'У' sampler = 'У'
samplerExplain = 'Cyrillic Capital U' samplerExplain = 'Cyrillic Capital U'
tag = 'cv50' tag = 'cv52'
[prime.cyrl-capital-u.variants.straight] [prime.cyrl-capital-u.variants.straight]
rank = 1 rank = 1
@ -2296,7 +2344,7 @@ selector."cyrl/U" = "cursiveFlatHook"
[prime.zero] [prime.zero]
sampler = '0' sampler = '0'
tag = 'cv51' tag = 'cv53'
[prime.zero.variants.slashed] [prime.zero.variants.slashed]
rank = 1 rank = 1
@ -2327,7 +2375,7 @@ selector.zero = 'longDotted'
[prime.one] [prime.one]
sampler = '1' sampler = '1'
tag = 'cv52' tag = 'cv54'
[prime.one.variants.nobase] [prime.one.variants.nobase]
rank = 1 rank = 1
@ -2368,7 +2416,7 @@ selector.one = "baseFlatTopSerif"
[prime.two] [prime.two]
sampler = '2' sampler = '2'
tag = 'cv53' tag = 'cv55'
[prime.two.variants.straight-neck] [prime.two.variants.straight-neck]
rank = 1 rank = 1
@ -2384,7 +2432,7 @@ selector.two = "curlyNeck"
[prime.three] [prime.three]
sampler = '3' sampler = '3'
tag = 'cv54' tag = 'cv56'
[prime.three.variants.flattop] [prime.three.variants.flattop]
rank = 1 rank = 1
@ -2400,7 +2448,7 @@ selector.three = 'twoarcs'
[prime.four] [prime.four]
sampler = '4' sampler = '4'
tag = 'cv55' tag = 'cv57'
[prime.four.variants.closed] [prime.four.variants.closed]
rank = 1 rank = 1
@ -2436,7 +2484,7 @@ selector.four = 'openNonCrossing'
[prime.six] [prime.six]
sampler = '6' sampler = '6'
tag = 'cv56' tag = 'cv58'
[prime.six.variants.closed-contour] [prime.six.variants.closed-contour]
rank = 1 rank = 1
@ -2457,7 +2505,7 @@ selector.six = "straightBar"
[prime.seven] [prime.seven]
sampler = '7' sampler = '7'
tag = 'cv57' tag = 'cv59'
[prime.seven.variants.noserif] [prime.seven.variants.noserif]
rank = 1 rank = 1
@ -2483,7 +2531,7 @@ selector.seven = "crossbarSerifed"
[prime.eight] [prime.eight]
sampler = '8' sampler = '8'
tag = 'cv58' tag = 'cv60'
[prime.eight.variants.crossing] [prime.eight.variants.crossing]
rank = 1 rank = 1
@ -2499,7 +2547,7 @@ selector.eight = 'twoCircles'
[prime.nine] [prime.nine]
sampler = '9' sampler = '9'
tag = 'cv59' tag = 'cv61'
[prime.nine.variants.closed-contour] [prime.nine.variants.closed-contour]
rank = 1 rank = 1
@ -2520,7 +2568,7 @@ selector.nine = "straightBar"
[prime.tilde] [prime.tilde]
sampler = '~' sampler = '~'
tag = 'cv60' tag = 'cv62'
[prime.tilde.variants.high] [prime.tilde.variants.high]
rank = 1 rank = 1
@ -2536,7 +2584,7 @@ selector.asciiTilde = 'low'
[prime.asterisk] [prime.asterisk]
sampler = '*' sampler = '*'
tag = 'cv61' tag = 'cv63'
[prime.asterisk.variants.high] [prime.asterisk.variants.high]
rank = 1 rank = 1
@ -2578,7 +2626,7 @@ selector."asterisk/lowered" = 'turnPentaLow'
[prime.underscore] [prime.underscore]
sampler = '_' sampler = '_'
tag = 'cv62' tag = 'cv64'
[prime.underscore.variants.high] [prime.underscore.variants.high]
rank = 1 rank = 1
@ -2599,7 +2647,7 @@ selector.underscore = 'aboveBaseline'
[prime.paragraph-sign] [prime.paragraph-sign]
sampler = '¶' sampler = '¶'
tag = 'cv63' tag = 'cv65'
[prime.paragraph-sign.variants.high] [prime.paragraph-sign.variants.high]
rank = 1 rank = 1
@ -2617,7 +2665,7 @@ selector.revertParagraph = 'low'
[prime.caret] [prime.caret]
sampler = '^' sampler = '^'
tag = 'cv64' tag = 'cv66'
[prime.caret.variants.high] [prime.caret.variants.high]
rank = 1 rank = 1
@ -2633,7 +2681,7 @@ selector.asciiCaret = 'low'
[prime.paren] [prime.paren]
sampler = '( )' sampler = '( )'
tag = 'cv65' tag = 'cv67'
[prime.paren.variants.normal] [prime.paren.variants.normal]
rank = 1 rank = 1
@ -2651,7 +2699,7 @@ selector.parenRight = 'largeContour'
[prime.brace] [prime.brace]
sampler = '{ }' sampler = '{ }'
tag = 'cv66' tag = 'cv68'
[prime.brace.variants.straight] [prime.brace.variants.straight]
rank = 1 rank = 1
@ -2669,7 +2717,7 @@ selector.braceRight = 'curly'
[prime.number-sign] [prime.number-sign]
sampler = '#' sampler = '#'
tag = 'cv67' tag = 'cv69'
[prime.number-sign.variants.upright] [prime.number-sign.variants.upright]
rank = 1 rank = 1
@ -2695,7 +2743,7 @@ selector.numberSign = 'slantedOpen'
[prime.ampersand] [prime.ampersand]
sampler = '&' sampler = '&'
tag = 'cv68' tag = 'cv70'
[prime.ampersand.variants.closed] [prime.ampersand.variants.closed]
rank = 1 rank = 1
@ -2736,7 +2784,7 @@ selector.ampersand = 'flatTop'
[prime.at] [prime.at]
sampler = '@' sampler = '@'
tag = 'cv69' tag = 'cv71'
[prime.at.variants.threefold] [prime.at.variants.threefold]
rank = 1 rank = 1
@ -2757,7 +2805,7 @@ selector.at = 'short'
[prime.dollar] [prime.dollar]
sampler = '$' sampler = '$'
tag = 'cv70' tag = 'cv72'
[prime.dollar.variants.open] [prime.dollar.variants.open]
rank = 1 rank = 1
@ -2783,7 +2831,7 @@ selector.dollar = "throughcap"
[prime.percent] [prime.percent]
sampler = '%' sampler = '%'
tag = 'cv71' tag = 'cv73'
[prime.percent.variants.dots] [prime.percent.variants.dots]
rank = 1 rank = 1
@ -2804,7 +2852,7 @@ selector.percent = "ringsConnected"
[prime.bar] [prime.bar]
sampler = '|' sampler = '|'
tag = 'cv72' tag = 'cv74'
slopeDependent = true slopeDependent = true
[prime.bar.variants.natural-slope] [prime.bar.variants.natural-slope]
@ -2821,7 +2869,7 @@ selector."bar.italic" = "forceUpright"
[prime.lig-ltgteq] [prime.lig-ltgteq]
sampler = '<= >=' sampler = '<= >='
tag = 'cv73' tag = 'cv75'
[prime.lig-ltgteq.variants.flat] [prime.lig-ltgteq.variants.flat]
rank = 1 rank = 1
@ -2839,7 +2887,7 @@ selector."eq.at-gteq.lig2" = "slanted"
[prime.ascii-single-quote] [prime.ascii-single-quote]
sampler = "'" sampler = "'"
tag = 'cv74' tag = 'cv76'
[prime.ascii-single-quote.variants.straight] [prime.ascii-single-quote.variants.straight]
rank = 1 rank = 1
@ -2855,7 +2903,7 @@ selector.asciiSingleQuote = 'raisedComma'
[prime.ascii-grave] [prime.ascii-grave]
sampler = '`' sampler = '`'
tag = 'cv75' tag = 'cv77'
[prime.ascii-grave.variants.straight] [prime.ascii-grave.variants.straight]
rank = 1 rank = 1
@ -2901,6 +2949,7 @@ capital-n = 'standard'
capital-p = 'closed' capital-p = 'closed'
capital-q = 'curly-tailed' capital-q = 'curly-tailed'
capital-r = 'straight' capital-r = 'straight'
capital-s = 'serifless'
capital-t = 'standard' capital-t = 'standard'
capital-u = 'toothless-rounded' capital-u = 'toothless-rounded'
capital-v = 'straight' capital-v = 'straight'
@ -2914,6 +2963,7 @@ g = 'single-storey'
p = 'eared' p = 'eared'
q = 'straight' q = 'straight'
r = 'serifless' r = 'serifless'
s = 'serifless'
t = 'standard' t = 'standard'
v = 'straight' v = 'straight'
w = 'straight' w = 'straight'
@ -2986,6 +3036,8 @@ y = 'cursive'
################################################################################################### ###################################################################################################
[composite.slab.design] [composite.slab.design]
capital-s = 'serifed'
s = 'serifed'
one = 'base' one = 'base'
seven = 'serifed' seven = 'serifed'
cyrl-capital-u = 'straight-turn' cyrl-capital-u = 'straight-turn'