diff --git a/changes/5.0.0-beta.2.md b/changes/5.0.0-beta.2.md index 5c594de5b..0ebda8467 100644 --- a/changes/5.0.0-beta.2.md +++ b/changes/5.0.0-beta.2.md @@ -1,3 +1,4 @@ * Fix broken curly variants of `x` and `X` (#824). * Add compact-serifed and compact-top-serifed variants of `r` (#826). - * Allow Zeta to share variants with `Z` (#827). \ No newline at end of file + * Allow Zeta to share variants with `Z` (#827). + * Add serifed and top-serifed variants for `S` and `s` (#822). \ No newline at end of file diff --git a/font-src/glyphs/auto-build/composite.ptl b/font-src/glyphs/auto-build/composite.ptl index 3b38a0302..bc666c4a4 100644 --- a/font-src/glyphs/auto-build/composite.ptl +++ b/font-src/glyphs/auto-build/composite.ptl @@ -1103,15 +1103,15 @@ glyph-block Autobuild-Pnonetic-Ligatures : if [not recursive] : begin createPhoneticLigatures stdShrink stdShrink 1 1 : list list 0x02A3 'd' 'z' 'b' list 0x02A4 'd' 'ezh' 'if' - list 0x02A5 'd' 'zcurlytail' 'if' + list 0x02A5 'd' 'zCurlyTail' 'if' list 0x02A6 't.phoneticLeft' 's.phoneticRight' 'b' 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 0x02AA 'l.phoneticLeft' 's.phoneticRight' 'b' list 0x02AB 'l.phoneticLeft' 'z' 'b' 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-import CommonShapes diff --git a/font-src/glyphs/auto-build/transformed.ptl b/font-src/glyphs/auto-build/transformed.ptl index d3adafca5..6b4a2098a 100644 --- a/font-src/glyphs/auto-build/transformed.ptl +++ b/font-src/glyphs/auto-build/transformed.ptl @@ -255,7 +255,7 @@ glyph-block Autobuild-Transformed : begin list 0x1D78 'smcpH' list 0x1D9B 'turnscripta' list 0x1D9C 'c' - list 0x1D9D 'ccurlytail' + list 0x1D9D 'cCurlyTail' list 0x1D9E 'eth' list 0x1D9F 'revLatinEpsilon' list 0x1DA0 'f' @@ -276,7 +276,7 @@ glyph-block Autobuild-Transformed : begin list 0x1DB0 'smcpN' list 0x1DB1 'obar' list 0x1DB2 'latinphi' - list 0x1DB3 'srtail' + list 0x1DB3 'sRTail' list 0x1DB4 'esh' list 0x1DB5 'tltail' list 0x1DB6 'ulongBarOver' @@ -285,7 +285,7 @@ glyph-block Autobuild-Transformed : begin list 0x1DB9 'latinupsilon2' list 0x1DBA 'turnv' list 0x1DBC 'zrtailBR' - list 0x1DBD 'zcurlytail' + list 0x1DBD 'zCurlyTail' list 0x1DBE 'ezh' list 0x1DBF 'grek/theta' list 0x1DBB 'z' diff --git a/font-src/glyphs/letter/latin/c.ptl b/font-src/glyphs/letter/latin/c.ptl index 86f7d344e..ec8066c4f 100644 --- a/font-src/glyphs/letter/latin/c.ptl +++ b/font-src/glyphs/letter/latin/c.ptl @@ -157,7 +157,7 @@ glyph-block Letter-Latin-C : begin include [refer-glyph 'c'] AS_BASE 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 local stroke : AdviceStroke2 2 3 XH local fine : AdviceStroke2 3 3 XH diff --git a/font-src/glyphs/letter/latin/s.ptl b/font-src/glyphs/letter/latin/s.ptl index 84efad393..3b920dc09 100644 --- a/font-src/glyphs/letter/latin/s.ptl +++ b/font-src/glyphs/letter/latin/s.ptl @@ -149,20 +149,78 @@ glyph-block Letter-Latin-S : begin hookend O (sw -- stroke) (swItalicAdj -- Stroke) g4 (RightSB + OX - SOBot) SHook - create-glyph 'S' 'S' : glyph-proc - include : MarkSet.capital - if SLAB : include : ArcStartSerif RightSB CAP Stroke Hook - if SLAB : include : ArcEndSerif SB 0 Stroke Hook - include : [if SLAB SlabSStroke SStroke] + define SConfig : object + 'serifless' { SStroke SmallSStroke 0 0 } + 'serifed' { SlabSStroke SlabSmallSStroke 1 1 } + 'topSerifed' { HalfSlabSStroke HalfSlabSmallSStroke 1 0 } + + 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' - - 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' create-glyph 's.phoneticRight' : glyph-proc @@ -239,50 +297,6 @@ glyph-block Letter-Latin-S : begin local start : currentGlyph.gizmo.unapply stroke.rhsKnots.(0) 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 include : MarkSet.capital diff --git a/font-src/glyphs/letter/latin/z.ptl b/font-src/glyphs/letter/latin/z.ptl index 829880d63..92e6bec2d 100644 --- a/font-src/glyphs/letter/latin/z.ptl +++ b/font-src/glyphs/letter/latin/z.ptl @@ -236,7 +236,7 @@ glyph-block Letter-Latin-Z : begin with-related-glyphs 'Zdesc' 0x2C6B '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 local fine : AdviceStroke2 5 4 XH diff --git a/params/variants.toml b/params/variants.toml index fee6f78c9..06ca7c5ca 100644 --- a/params/variants.toml +++ b/params/variants.toml @@ -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] sampler = 'U' -tag = 'cv18' +tag = 'cv19' [prime.capital-u.variants.toothed] rank = 1 @@ -593,7 +617,7 @@ selector.U = "toothlessRoundedBilateralMotionSerifed" [prime.capital-v] sampler = 'V' -tag = 'cv19' +tag = 'cv20' [prime.capital-v.variants.straight] rank = 1 @@ -623,7 +647,7 @@ selector.Vhooktop = "curly" [prime.capital-w] sampler = 'W' -tag = 'cv20' +tag = 'cv21' [prime.capital-w.variants.straight] rank = 1 @@ -689,7 +713,7 @@ selector.Whooktop = "straightFlatTop" [prime.capital-x] sampler = 'X' -tag = 'cv21' +tag = 'cv22' [prime.capital-x.variants.straight] rank = 1 @@ -715,7 +739,7 @@ selector.X = "curlyMotionSerifed" [prime.capital-y] sampler = 'Y' -tag = 'cv22' +tag = 'cv23' [prime.capital-y.variants.straight] rank = 1 @@ -741,7 +765,7 @@ selector.Y = "curlyMotionSerifed" [prime.capital-z] sampler = 'Z' -tag = 'cv23' +tag = 'cv24' [prime.capital-z.variants.standard] rank = 1 @@ -811,7 +835,7 @@ selector."grek/Zeta" = 'curlyTopMotionSerifed' [prime.a] sampler = 'a' -tag = 'cv24' +tag = 'cv25' [prime.a.variants.double-storey] rank = 1 @@ -886,7 +910,7 @@ selector.a = 'singleStoreyEarlessRoundedMotionSerifed' [prime.b] sampler = 'b' -tag = 'cv25' +tag = 'cv26' [prime.b.variants.toothed] rank = 1 @@ -928,7 +952,7 @@ selector.bhooktop = "toothlessRounded" [prime.d] sampler = 'd' -tag = 'cv26' +tag = 'cv27' [prime.d.variants.toothed] rank = 1 @@ -982,7 +1006,7 @@ selector.dhooktop = "tailed" [prime.e] sampler = 'e' -tag = 'cv27' +tag = 'cv28' [prime.e.variants.flat-crossbar] rank = 1 @@ -998,7 +1022,7 @@ selector.e = 'rounded' [prime.f] sampler = 'f' -tag = 'cv28' +tag = 'cv29' [prime.f.variants.serifless] rank = 1 @@ -1102,7 +1126,7 @@ selector.f = "flatHookDiagonalTailedCrossbarAtXHeight" [prime.g] sampler = 'g' -tag = 'cv29' +tag = 'cv30' [prime.g.variants.double-storey] rank = 1 @@ -1158,7 +1182,7 @@ selector.g = 'singleStoreyMotionSerifedFlatHook' [prime.h] sampler = 'h' -tag = 'cv30' +tag = 'cv31' [prime.h.variants.straight] rank = 1 @@ -1192,7 +1216,7 @@ selector.heng = 'straightMotionSerifed' [prime.i] sampler = 'i' -tag = 'cv31' +tag = 'cv32' [prime.i.variants.serifed] rank = 1 @@ -1258,7 +1282,7 @@ selector.dotlessi = 'serifedDiagonalTailed' [prime.j] sampler = 'j' -tag = 'cv32' +tag = 'cv33' [prime.j.variants.serifed] rank = 1 @@ -1299,7 +1323,7 @@ selector.dotlessj = 'diagonalTailedSerifed' [prime.k] sampler = 'k' -tag = 'cv33' +tag = 'cv34' [prime.k.variants.straight] rank = 1 @@ -1388,7 +1412,7 @@ selector.kDescender = 'symmetricConnectedMotionSerifed' [prime.l] sampler = 'l' -tag = 'cv34' +tag = 'cv35' [prime.l.variants.serifed] rank = 1 @@ -1453,7 +1477,7 @@ selector.l = 'serifedDiagonalTailed' [prime.m] sampler = 'm' -tag = 'cv35' +tag = 'cv36' [prime.m.variants.normal] rank = 1 @@ -1579,7 +1603,7 @@ selector."cyrl/te.italic" = "motionSerifedTailed" [prime.n] sampler = 'n' -tag = 'cv36' +tag = 'cv37' [prime.n.variants.straight] rank = 1 @@ -1641,7 +1665,7 @@ selector."cyrl/pe.italic" = "motionSerifedTailed" [prime.p] sampler = 'p' -tag = 'cv37' +tag = 'cv38' [prime.p.variants.eared] rank = 1 @@ -1670,7 +1694,7 @@ selector."cyrl/er" = "motionSerifed" [prime.q] sampler = 'q' -tag = 'cv38' +tag = 'cv39' [prime.q.variants.straight] rank = 1 @@ -1735,7 +1759,7 @@ selector.q = 'motionSerifedDiagonalTailed' [prime.r] sampler = 'r' -tag = 'cv39' +tag = 'cv40' [prime.r.variants.serifless] 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] sampler = 't' -tag = 'cv40' +tag = 'cv42' [prime.t.variants.standard] rank = 1 @@ -1862,7 +1910,7 @@ selector.t = 'diagonalTailed' [prime.u] sampler = 'u' -tag = 'cv41' +tag = 'cv43' [prime.u.variants.toothed] rank = 1 @@ -1940,7 +1988,7 @@ selector."cyrl/tse.italic" = "motionSerifed" [prime.v] sampler = 'v' -tag = 'cv42' +tag = 'cv44' [prime.v.variants.straight] rank = 1 @@ -1970,7 +2018,7 @@ selector.vhooktop = "curly" [prime.w] sampler = 'w' -tag = 'cv43' +tag = 'cv45' [prime.w.variants.straight] rank = 1 @@ -2036,7 +2084,7 @@ selector.whooktop = "straightFlatTop" [prime.x] sampler = 'x' -tag = 'cv44' +tag = 'cv46' [prime.x.variants.straight] rank = 1 @@ -2066,7 +2114,7 @@ selector."grek/chi" = "curly" [prime.y] sampler = 'y' -tag = 'cv45' +tag = 'cv47' [prime.y.variants.straight] rank = 1 @@ -2142,7 +2190,7 @@ selector.yhooktop = "cursiveFlatHook" [prime.z] sampler = 'z' -tag = 'cv46' +tag = 'cv48' [prime.z.variants.standard] rank = 1 @@ -2203,7 +2251,7 @@ selector.z = 'curlyTopMotionSerifed' [prime.eszet] sampler = 'ß' samplerExplain = 'Eszet' -tag = 'cv47' +tag = 'cv49' [prime.eszet.variants.traditional] rank = 1 @@ -2224,7 +2272,7 @@ selector.eszet = 'longsslig' [prime.turn-v] sampler = 'ΛΔ' -tag = 'cv48' +tag = 'cv50' [prime.turn-v.variants.straight] rank = 1 @@ -2243,7 +2291,7 @@ selector."grek/Delta" = "curly" [prime.lambda] sampler = 'λ' samplerExplain = 'Greek small Lambda' -tag = 'cv49' +tag = 'cv51' [prime.lambda.variants.straight] rank = 1 @@ -2260,7 +2308,7 @@ selector."grek/lambda" = "curly" [prime.cyrl-capital-u] sampler = 'У' samplerExplain = 'Cyrillic Capital U' -tag = 'cv50' +tag = 'cv52' [prime.cyrl-capital-u.variants.straight] rank = 1 @@ -2296,7 +2344,7 @@ selector."cyrl/U" = "cursiveFlatHook" [prime.zero] sampler = '0' -tag = 'cv51' +tag = 'cv53' [prime.zero.variants.slashed] rank = 1 @@ -2327,7 +2375,7 @@ selector.zero = 'longDotted' [prime.one] sampler = '1' -tag = 'cv52' +tag = 'cv54' [prime.one.variants.nobase] rank = 1 @@ -2368,7 +2416,7 @@ selector.one = "baseFlatTopSerif" [prime.two] sampler = '2' -tag = 'cv53' +tag = 'cv55' [prime.two.variants.straight-neck] rank = 1 @@ -2384,7 +2432,7 @@ selector.two = "curlyNeck" [prime.three] sampler = '3' -tag = 'cv54' +tag = 'cv56' [prime.three.variants.flattop] rank = 1 @@ -2400,7 +2448,7 @@ selector.three = 'twoarcs' [prime.four] sampler = '4' -tag = 'cv55' +tag = 'cv57' [prime.four.variants.closed] rank = 1 @@ -2436,7 +2484,7 @@ selector.four = 'openNonCrossing' [prime.six] sampler = '6' -tag = 'cv56' +tag = 'cv58' [prime.six.variants.closed-contour] rank = 1 @@ -2457,7 +2505,7 @@ selector.six = "straightBar" [prime.seven] sampler = '7' -tag = 'cv57' +tag = 'cv59' [prime.seven.variants.noserif] rank = 1 @@ -2483,7 +2531,7 @@ selector.seven = "crossbarSerifed" [prime.eight] sampler = '8' -tag = 'cv58' +tag = 'cv60' [prime.eight.variants.crossing] rank = 1 @@ -2499,7 +2547,7 @@ selector.eight = 'twoCircles' [prime.nine] sampler = '9' -tag = 'cv59' +tag = 'cv61' [prime.nine.variants.closed-contour] rank = 1 @@ -2520,7 +2568,7 @@ selector.nine = "straightBar" [prime.tilde] sampler = '~' -tag = 'cv60' +tag = 'cv62' [prime.tilde.variants.high] rank = 1 @@ -2536,7 +2584,7 @@ selector.asciiTilde = 'low' [prime.asterisk] sampler = '*' -tag = 'cv61' +tag = 'cv63' [prime.asterisk.variants.high] rank = 1 @@ -2578,7 +2626,7 @@ selector."asterisk/lowered" = 'turnPentaLow' [prime.underscore] sampler = '_' -tag = 'cv62' +tag = 'cv64' [prime.underscore.variants.high] rank = 1 @@ -2599,7 +2647,7 @@ selector.underscore = 'aboveBaseline' [prime.paragraph-sign] sampler = '¶' -tag = 'cv63' +tag = 'cv65' [prime.paragraph-sign.variants.high] rank = 1 @@ -2617,7 +2665,7 @@ selector.revertParagraph = 'low' [prime.caret] sampler = '^' -tag = 'cv64' +tag = 'cv66' [prime.caret.variants.high] rank = 1 @@ -2633,7 +2681,7 @@ selector.asciiCaret = 'low' [prime.paren] sampler = '( )' -tag = 'cv65' +tag = 'cv67' [prime.paren.variants.normal] rank = 1 @@ -2651,7 +2699,7 @@ selector.parenRight = 'largeContour' [prime.brace] sampler = '{ }' -tag = 'cv66' +tag = 'cv68' [prime.brace.variants.straight] rank = 1 @@ -2669,7 +2717,7 @@ selector.braceRight = 'curly' [prime.number-sign] sampler = '#' -tag = 'cv67' +tag = 'cv69' [prime.number-sign.variants.upright] rank = 1 @@ -2695,7 +2743,7 @@ selector.numberSign = 'slantedOpen' [prime.ampersand] sampler = '&' -tag = 'cv68' +tag = 'cv70' [prime.ampersand.variants.closed] rank = 1 @@ -2736,7 +2784,7 @@ selector.ampersand = 'flatTop' [prime.at] sampler = '@' -tag = 'cv69' +tag = 'cv71' [prime.at.variants.threefold] rank = 1 @@ -2757,7 +2805,7 @@ selector.at = 'short' [prime.dollar] sampler = '$' -tag = 'cv70' +tag = 'cv72' [prime.dollar.variants.open] rank = 1 @@ -2783,7 +2831,7 @@ selector.dollar = "throughcap" [prime.percent] sampler = '%' -tag = 'cv71' +tag = 'cv73' [prime.percent.variants.dots] rank = 1 @@ -2804,7 +2852,7 @@ selector.percent = "ringsConnected" [prime.bar] sampler = '|' -tag = 'cv72' +tag = 'cv74' slopeDependent = true [prime.bar.variants.natural-slope] @@ -2821,7 +2869,7 @@ selector."bar.italic" = "forceUpright" [prime.lig-ltgteq] sampler = '<= >=' -tag = 'cv73' +tag = 'cv75' [prime.lig-ltgteq.variants.flat] rank = 1 @@ -2839,7 +2887,7 @@ selector."eq.at-gteq.lig2" = "slanted" [prime.ascii-single-quote] sampler = "'" -tag = 'cv74' +tag = 'cv76' [prime.ascii-single-quote.variants.straight] rank = 1 @@ -2855,7 +2903,7 @@ selector.asciiSingleQuote = 'raisedComma' [prime.ascii-grave] sampler = '`' -tag = 'cv75' +tag = 'cv77' [prime.ascii-grave.variants.straight] rank = 1 @@ -2901,6 +2949,7 @@ capital-n = 'standard' capital-p = 'closed' capital-q = 'curly-tailed' capital-r = 'straight' +capital-s = 'serifless' capital-t = 'standard' capital-u = 'toothless-rounded' capital-v = 'straight' @@ -2914,6 +2963,7 @@ g = 'single-storey' p = 'eared' q = 'straight' r = 'serifless' +s = 'serifless' t = 'standard' v = 'straight' w = 'straight' @@ -2986,6 +3036,8 @@ y = 'cursive' ################################################################################################### [composite.slab.design] +capital-s = 'serifed' +s = 'serifed' one = 'base' seven = 'serifed' cyrl-capital-u = 'straight-turn'