* Fix serifs of certain letters (#1458):

- LATIN CAPITAL LETTER GAMMA (`U+0194`);
  - LATIN CAPITAL LETTER OU (`U+0222`);
  - LATIN SMALL LETTER OU (`U+0223`);
  - LATIN SMALL LETTER ALPHA (`U+0251`);
  - LATIN SMALL LETTER GAMMA (`U+0263`);
  - LATIN SMALL LETTER RAMS HORN (`U+0264`);
  - LATIN SMALL LETTER TURNED OPEN E (`U+1D08`);
  - LATIN LETTER SMALL CAPITAL OU (`U+1D15`);
  - LATIN LETTER AIN (`U+1D25`);
This commit is contained in:
be5invis 2022-12-09 19:04:09 -08:00
parent 2ca7513f3e
commit 60cccc4ef1
9 changed files with 132 additions and 71 deletions

View file

@ -1,2 +1,12 @@
* Fix metrics of ASCII single quotes under Aile (#1454). * Fix metrics of ASCII single quotes under Aile (#1454).
* Fix overshoot of oval-shaped `0`, and open `6`/`9` (#1455). * Fix overshoot of oval-shaped `0`, and open `6`/`9` (#1455).
* Fix serifs of certain letters (#1458):
- LATIN CAPITAL LETTER GAMMA (`U+0194`);
- LATIN CAPITAL LETTER OU (`U+0222`);
- LATIN SMALL LETTER OU (`U+0223`);
- LATIN SMALL LETTER ALPHA (`U+0251`);
- LATIN SMALL LETTER GAMMA (`U+0263`);
- LATIN SMALL LETTER RAMS HORN (`U+0264`);
- LATIN SMALL LETTER TURNED OPEN E (`U+1D08`);
- LATIN LETTER SMALL CAPITAL OU (`U+1D15`);
- LATIN LETTER AIN (`U+1D25`);

View file

@ -10,6 +10,9 @@ glyph-module
glyph-block CommonShapes : begin glyph-block CommonShapes : begin
glyph-block-import Common-Derivatives glyph-block-import Common-Derivatives
glyph-block-export no-shape
define [no-shape] { .__isNoShape true }
glyph-block-export Rect glyph-block-export Rect
define [Rect u d l r transformShiftOnly] : glyph-proc define [Rect u d l r transformShiftOnly] : glyph-proc
local giz currentGlyph.gizmo local giz currentGlyph.gizmo

View file

@ -191,7 +191,7 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
alias 'grek/epsilon' 0x3B5 'latn/epsilon.serifless' alias 'grek/epsilon' 0x3B5 'latn/epsilon.serifless'
select-variant 'latn/Epsilon' 0x190 select-variant 'latn/Epsilon' 0x190
select-variant 'latn/epsilon' 0x25B select-variant 'latn/epsilon' 0x25B
turned 'turnepsilon' 0x1D08 'grek/epsilon' Middle (XH / 2) turned 'turnepsilon' 0x1D08 'latn/epsilon' Middle (XH / 2)
alias 'cyrl/ZeRev' 0x510 'latn/Epsilon' alias 'cyrl/ZeRev' 0x510 'latn/Epsilon'
alias 'cyrl/zeRev' 0x511 'latn/epsilon' alias 'cyrl/zeRev' 0x511 'latn/epsilon'

View file

@ -9,36 +9,31 @@ glyph-block Letter-Latin-OU : begin
glyph-block-import CommonShapes glyph-block-import CommonShapes
glyph-block-import Common-Derivatives glyph-block-import Common-Derivatives
define [UpperOuShape top] : glyph-proc define [OuShape top yBar gapL gapR] : glyph-proc
include : OShape (top * HBarPos + HalfStroke) 0 SB RightSB nothing ArchDepthA ArchDepthB include : OShape (yBar + HalfStroke) 0 SB RightSB nothing ArchDepthA ArchDepthB
local xLeft : clamp (SB + 1.25 * HVContrast * Stroke) [mix SB RightSB 0.4] (Middle - Width * 0.05)
local d : 0.25 * TanSlope * (RightSB - SB)
include : dispiro include : dispiro
widths.lhs widths.lhs
flat SB top [heading Downward] g4.left.start (xLeft - CorrectionOMidS) (top - gapL)
curl SB (top * HBarPos - O - HalfStroke + ArchDepthB)
arcvh
g4 (Middle + CorrectionOMidS) (top * HBarPos - O - HalfStroke + (Stroke * (1 - CThin))) [widths.lhs (Stroke * CThin)]
archv archv
flat RightSB (top * HBarPos - O - HalfStroke + ArchDepthA) [widths.lhs] g4.down.mid SB ([mix (yBar - HalfStroke) (top - gapL) 0.5] + d)
curl RightSB top [heading Upward] arcvh
g4 (Middle + CorrectionOMidS) (yBar - O - HalfStroke + (Stroke * (1 - CThin))) [widths.lhs (Stroke * CThin)]
archv
g4.up.mid RightSB ([mix (yBar - HalfStroke) (top - gapR) 0.5] - d) [widths.lhs]
arcvh
g4.left.end (Width - xLeft - CorrectionOMidS) (top - gapR)
create-glyph 'OU' 0x222 : glyph-proc create-glyph 'OU' 0x222 : glyph-proc
include : MarkSet.capital include : MarkSet.capital
include : UpperOuShape CAP include : OuShape CAP (CAP * HBarPos) (CAP * 0.05) 0
create-glyph 'smcpOU' 0x1D15 : glyph-proc create-glyph 'smcpOU' 0x1D15 : glyph-proc
include : MarkSet.e include : MarkSet.e
include : UpperOuShape XH include : OuShape XH (XH * HBarPos) 0 0
create-glyph 'ou' 0x223 : glyph-proc create-glyph 'ou' 0x223 : glyph-proc
include : MarkSet.b include : MarkSet.b
local bar : StrokeWidthBlend (XH * 0.9) XH include : OuShape Ascender (Ascender * [mix HBarPos (XH / CAP) 0.5]) 0 0
include : OShape bar 0 SB RightSB
include : dispiro
widths.lhs
flat SB Ascender [heading Downward]
curl SB (bar - O - Stroke + ArchDepthB)
arcvh
g4 (Middle + CorrectionOMidS) (bar - O - Stroke + (Stroke * (1 - CThin))) [widths.lhs (Stroke * CThin)]
archv
flat RightSB (bar - O - Stroke + ArchDepthA) [widths.lhs]
curl RightSB Ascender [heading Upward]

View file

@ -8,8 +8,9 @@ glyph-module
glyph-block Letter-Latin-Rams-Horn : begin glyph-block Letter-Latin-Rams-Horn : begin
glyph-block-import CommonShapes glyph-block-import CommonShapes
glyph-block-import Common-Derivatives glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared-Shapes : SerifFrame
define [RamsHornShape bottom top] : glyph-proc define [LatinGammaShape bottom top] : glyph-proc
local hf : [AdviceStroke 4] / 2 local hf : [AdviceStroke 4] / 2
local d : hf * 2 + Width * 0.05 local d : hf * 2 + Width * 0.05
@ -27,38 +28,60 @@ glyph-block Letter-Latin-Rams-Horn : begin
create-glyph 'latn/gamma' 0x263 : glyph-proc create-glyph 'latn/gamma' 0x263 : glyph-proc
include : MarkSet.p include : MarkSet.p
include : RamsHornShape Descender XH include : LatinGammaShape Descender XH
if SLAB : begin
local sf : SerifFrame XH Descender SB RightSB
include : composite-proc sf.lt.full sf.rt.full
create-glyph 'latn/Gamma' 0x194 : glyph-proc create-glyph 'latn/Gamma' 0x194 : glyph-proc
include : MarkSet.capDesc include : MarkSet.capDesc
include : RamsHornShape Descender Ascender include : LatinGammaShape Descender CAP
if SLAB : begin
local sf : SerifFrame CAP Descender SB RightSB
include : composite-proc sf.lt.full sf.rt.full
define [RamsHornShape fFill bottom top] : glyph-proc
local k1 0.625
local k2 0.7
local kIntersection 0.15
local d : 0.25 * (RightSB - SB) * k1 * TanSlope
local sw : AdviceStroke : if SLAB 3 2.75
local fine : AdviceStroke : if SLAB 3.75 3.5
local coFine : mix sw fine (kIntersection / k2)
local fillOffset : sw * 0.25
include : union
dispiro
widths.rhs sw
straight.right.start SB top [heading Rightward]
g4 Middle [mix top bottom kIntersection] [widths.rhs coFine]
g4.down.mid [mix Middle RightSB k1] ([mix top bottom k2] - d) [widths.rhs fine]
arcvh
g4.left.mid (Middle + CorrectionOMidX * fine) (bottom + O)
archv
g4.up.mid [mix Middle SB k1] ([mix top bottom k2] + d)
g4 Middle [mix top bottom kIntersection] [widths.rhs coFine]
straight.right.end RightSB top [widths.rhs.heading sw Rightward]
if fFill
then : spiro-outline
corner Middle ([mix top bottom kIntersection] - fillOffset)
g4.down.mid ([mix Middle RightSB k1] - fillOffset) ([mix top bottom k2] - d)
g4.left.mid (Middle + CorrectionOMidX * fine) (bottom + fillOffset)
g4.up.mid ([mix Middle SB k1] + fillOffset) ([mix top bottom k2] + d)
close
else : no-shape
if SLAB : begin
include : DownwardLeftSerif SB (top - sw) (VJut * (sw / Stroke) - sw) fine
include : DownwardRightSerif RightSB (top - sw) (VJut * (sw / Stroke) - sw) fine
create-glyph 'ramshorn' 0x264 : glyph-proc create-glyph 'ramshorn' 0x264 : glyph-proc
include : MarkSet.e include : MarkSet.e
include : RamsHornShape 0 XH include : RamsHornShape false 0 XH
### Ayin ### Ayin
create-glyph 'latinAyin' 0x1D25 : glyph-proc create-glyph 'latinAyin' 0x1D25 : glyph-proc
include : MarkSet.e include : MarkSet.e
local k1 0.65 include : RamsHornShape true 0 XH
local k2 0.7 include : FlipAround Middle (XH / 2)
local zmidy (XH * 0.15)
local offset : Stroke * 0.25
include : union
dispiro
widths.lhs
g4.right.start SB 0 [heading Rightward]
g4 Middle zmidy
g4.up.mid [mix Middle RightSB k1] (XH * k2) [heading Upward]
arcvh
g4.left.mid Middle (XH - O) [heading Leftward]
archv
g4.down.mid [mix Middle SB k1] (XH * k2) [heading Downward]
g4 Middle zmidy
g4.right.end RightSB 0 [heading Rightward]
spiro-outline
corner Middle (zmidy + offset)
g4.up.mid ([mix Middle RightSB k1] - offset) (XH * k2)
g4.left.mid Middle (XH - offset)
g4.down.mid ([mix Middle SB k1] + offset) (XH * k2)
close

View file

@ -202,17 +202,31 @@ glyph-block Letter-Latin-Lower-A : begin
corner (RightSB - Stroke * HVContrast) (CAP - Stroke / 2) corner (RightSB - Stroke * HVContrast) (CAP - Stroke / 2)
corner RightSB (CAP - O) corner RightSB (CAP - O)
create-glyph 'scripta' 0x0251 : glyph-proc define [CutRightStroke g] : difference g : spiro-outline
include : MarkSet.e corner RightSB XH
include : union corner (RightSB - Stroke * HVContrast) XH
OBarRightShape corner (RightSB - Stroke * HVContrast) (XH - Stroke / 2)
spiro-outline
corner RightSB 0
corner (RightSB - Stroke * HVContrast) 0
corner (RightSB - Stroke * HVContrast) (XH - Stroke / 2)
corner RightSB (XH - O)
if SLAB : include : tagged 'serifRB' RightwardBottomSerif RightSB 0 SideJut
create-glyph 'scripta.serifless' : glyph-proc
include : MarkSet.e
set-base-anchor 'trailing' RightSB 0
include : OBarRightShape
include : CutRightStroke : VBarRight RightSB 0 XH
create-glyph 'scripta.serifed' : glyph-proc
include : MarkSet.e
set-base-anchor 'trailing' (RightSB + SideJut) 0
include : OBarRightShape
include : VBarRight RightSB 0 XH
include : tagged 'serifRB' : CutRightStroke : RightwardBottomSerif RightSB 0 SideJut
create-glyph 'scripta.tailed' : glyph-proc
include : MarkSet.e
set-base-anchor 'trailing' (RightSB + SideJut) 0
include : OBarRightShape
include : CutRightStroke : RightwardTailedBar RightSB 0 XH
select-variant 'scripta' 0x0251
turned 'turnlargescripta' 0x2C70 'largescripta' Middle (CAP / 2) turned 'turnlargescripta' 0x2C70 'largescripta' Middle (CAP / 2)
turned 'turnscripta' 0x252 'scripta' Middle (XH / 2) turned 'turnscripta' 0x252 'scripta' Middle (XH / 2)

View file

@ -133,19 +133,19 @@ define-macro glyph-block-import : syntax-rules
derive-composites link-reduced-variant alias-reduced-variant glyph-is-needed derive-composites link-reduced-variant alias-reduced-variant glyph-is-needed
HalfAdvance TurnMarks derive-multi-part-glyphs DeriveMeshT] HalfAdvance TurnMarks derive-multi-part-glyphs DeriveMeshT]
CommonShapes `[Rect SquareAt Ring RingAt DotAt RingStroke RingStrokeAt DotStrokeAt CommonShapes `[no-shape Rect SquareAt Ring RingAt DotAt RingStroke RingStrokeAt
CircleRing CircleRingAt CircleDotAt RoundStrokeTerminalAt OShapeT OShape OShapeOutline DotStrokeAt CircleRing CircleRingAt CircleDotAt RoundStrokeTerminalAt OShapeT OShape
OShapeFlatTB OBarLeftShape OBarRightShape LeftwardTopSerif LeftwardBottomSerif OShapeOutline OShapeFlatTB OBarLeftShape OBarRightShape LeftwardTopSerif
RightwardTopSerif RightwardBottomSerif CenterTopSerif CenterTopSerifAsymmetric LeftwardBottomSerif RightwardTopSerif RightwardBottomSerif CenterTopSerif
CenterBottomSerif CenterBottomSerifAsymmetric DownwardRightSerif UpwardRightSerif CenterTopSerifAsymmetric CenterBottomSerif CenterBottomSerifAsymmetric
DownwardLeftSerif UpwardLeftSerif NeedSlab NeedNotItalic HBar HBarTop HBarBottom DownwardRightSerif UpwardRightSerif DownwardLeftSerif UpwardLeftSerif NeedSlab
HOverlayBar VBar VBarLeft VBarRight VerticalHook LeftHook FlatSlashShape hookstart NeedNotItalic HBar HBarTop HBarBottom HOverlayBar VBar VBarLeft VBarRight VerticalHook
hookend Ungizmo Regizmo FlipAround ScaleAround Realign ForceUpright DiagCor NameUni LeftHook FlatSlashShape hookstart hookend Ungizmo Regizmo FlipAround ScaleAround Realign
PointingTo WithTransform clear-anchors OBarLeftToothlessShape OBarLeftRoundedShape ForceUpright DiagCor NameUni PointingTo WithTransform clear-anchors
OBarRightToothlessShape OBarRightRoundedShape AsRadical ExtLineCenter ExtLineLhs OBarLeftToothlessShape OBarLeftRoundedShape OBarRightToothlessShape
ExtLineRhs DiagCorDs HCrossBar VERY-FAR MaskAbove MaskBelow MaskLeft MaskRight OBarRightRoundedShape AsRadical ExtLineCenter ExtLineLhs ExtLineRhs DiagCorDs HCrossBar
HalfRectTriangle MaskAboveLine MaskBelowLine MaskLeftLine MaskRightLine DotVariants VERY-FAR MaskAbove MaskBelow MaskLeft MaskRight HalfRectTriangle MaskAboveLine
WithDotVariants] MaskBelowLine MaskLeftLine MaskRightLine DotVariants WithDotVariants]
define vartiableFilter : if externEnv.$glyphBlockVariableUsage$ define vartiableFilter : if externEnv.$glyphBlockVariableUsage$
lambda [x] externEnv.$glyphBlockVariableUsage$.(x) lambda [x] externEnv.$glyphBlockVariableUsage$.(x)

View file

@ -63,6 +63,8 @@ export class Glyph {
return this.applyTransform(component, copyAnchors); return this.applyTransform(component, copyAnchors);
} else if (component instanceof Glyph) { } else if (component instanceof Glyph) {
return this.includeGlyph(component, copyAnchors, copyWidth); return this.includeGlyph(component, copyAnchors, copyWidth);
} else if (component.__isNoShape) {
// Do nothing. By design.
} else { } else {
throw new Error("Invalid component to be introduced."); throw new Error("Invalid component to be introduced.");
} }

View file

@ -1785,6 +1785,7 @@ selector.a = "doubleStoreySerifless"
selector."a/sansSerif" = "doubleStoreySerifless" selector."a/sansSerif" = "doubleStoreySerifless"
selector."a/rtailBase" = "doubleStoreySerifless" selector."a/rtailBase" = "doubleStoreySerifless"
selector."a/turnABase" = "doubleStoreySerifless" selector."a/turnABase" = "doubleStoreySerifless"
selector.scripta = "serifless"
[prime.a.variants.double-storey-tailed] [prime.a.variants.double-storey-tailed]
rank = 2 rank = 2
@ -1793,6 +1794,7 @@ selector.a = "doubleStoreyTailed"
selector."a/sansSerif" = "doubleStoreyTailed" selector."a/sansSerif" = "doubleStoreyTailed"
selector."a/rtailBase" = "doubleStoreySerifless" selector."a/rtailBase" = "doubleStoreySerifless"
selector."a/turnABase" = "doubleStoreyTailed" selector."a/turnABase" = "doubleStoreyTailed"
selector.scripta = "tailed"
[prime.a.variants.double-storey-toothless-corner] [prime.a.variants.double-storey-toothless-corner]
rank = 3 rank = 3
@ -1801,6 +1803,7 @@ selector.a = "doubleStoreyToothlessCorner"
selector."a/sansSerif" = "doubleStoreyToothlessCorner" selector."a/sansSerif" = "doubleStoreyToothlessCorner"
selector."a/rtailBase" = "doubleStoreySerifless" selector."a/rtailBase" = "doubleStoreySerifless"
selector."a/turnABase" = "doubleStoreyToothlessCorner" selector."a/turnABase" = "doubleStoreyToothlessCorner"
selector.scripta = "serifless"
[prime.a.variants.double-storey-toothless-rounded] [prime.a.variants.double-storey-toothless-rounded]
rank = 4 rank = 4
@ -1809,6 +1812,7 @@ selector.a = "doubleStoreyToothlessRounded"
selector."a/sansSerif" = "doubleStoreyToothlessRounded" selector."a/sansSerif" = "doubleStoreyToothlessRounded"
selector."a/rtailBase" = "doubleStoreySerifless" selector."a/rtailBase" = "doubleStoreySerifless"
selector."a/turnABase" = "doubleStoreyToothlessRounded" selector."a/turnABase" = "doubleStoreyToothlessRounded"
selector.scripta = "serifless"
[prime.a.variants.double-storey-serifed] [prime.a.variants.double-storey-serifed]
rank = 5 rank = 5
@ -1817,6 +1821,7 @@ selector.a = "doubleStoreySerifed"
selector."a/sansSerif" = "doubleStoreySerifless" selector."a/sansSerif" = "doubleStoreySerifless"
selector."a/rtailBase" = "doubleStoreySerifless" selector."a/rtailBase" = "doubleStoreySerifless"
selector."a/turnABase" = "doubleStoreySerifed" selector."a/turnABase" = "doubleStoreySerifed"
selector.scripta = "serifed"
[prime.a.variants.single-storey-serifless] [prime.a.variants.single-storey-serifless]
rank = 6 rank = 6
@ -1825,6 +1830,7 @@ selector.a = "singleStoreySerifless"
selector."a/sansSerif" = "singleStoreySerifless" selector."a/sansSerif" = "singleStoreySerifless"
selector."a/rtailBase" = "singleStoreySerifless" selector."a/rtailBase" = "singleStoreySerifless"
selector."a/turnABase" = "doubleStoreySerifless" selector."a/turnABase" = "doubleStoreySerifless"
selector.scripta = "serifless"
[prime.a.variants.single-storey-earless-corner-serifless] [prime.a.variants.single-storey-earless-corner-serifless]
rank = 7 rank = 7
@ -1833,6 +1839,7 @@ selector.a = "singleStoreyEarlessCornerSerifless"
selector."a/sansSerif" = "singleStoreyEarlessCornerSerifless" selector."a/sansSerif" = "singleStoreyEarlessCornerSerifless"
selector."a/rtailBase" = "singleStoreyEarlessCornerSerifless" selector."a/rtailBase" = "singleStoreyEarlessCornerSerifless"
selector."a/turnABase" = "doubleStoreySerifless" selector."a/turnABase" = "doubleStoreySerifless"
selector.scripta = "serifless"
[prime.a.variants.single-storey-earless-rounded-serifless] [prime.a.variants.single-storey-earless-rounded-serifless]
rank = 8 rank = 8
@ -1841,6 +1848,7 @@ selector.a = "singleStoreyEarlessRoundedSerifless"
selector."a/sansSerif" = "singleStoreyEarlessRoundedSerifless" selector."a/sansSerif" = "singleStoreyEarlessRoundedSerifless"
selector."a/rtailBase" = "singleStoreyEarlessRoundedSerifless" selector."a/rtailBase" = "singleStoreyEarlessRoundedSerifless"
selector."a/turnABase" = "doubleStoreySerifless" selector."a/turnABase" = "doubleStoreySerifless"
selector.scripta = "serifless"
[prime.a.variants.single-storey-tailed] [prime.a.variants.single-storey-tailed]
rank = 9 rank = 9
@ -1849,6 +1857,7 @@ selector.a = "singleStoreyTailed"
selector."a/sansSerif" = "singleStoreyTailed" selector."a/sansSerif" = "singleStoreyTailed"
selector."a/rtailBase" = "singleStoreySerifless" selector."a/rtailBase" = "singleStoreySerifless"
selector."a/turnABase" = "doubleStoreyTailed" selector."a/turnABase" = "doubleStoreyTailed"
selector.scripta = "tailed"
[prime.a.variants.single-storey-earless-corner-tailed] [prime.a.variants.single-storey-earless-corner-tailed]
rank = 10 rank = 10
@ -1857,6 +1866,7 @@ selector.a = "singleStoreyEarlessCornerTailed"
selector."a/sansSerif" = "singleStoreyEarlessCornerTailed" selector."a/sansSerif" = "singleStoreyEarlessCornerTailed"
selector."a/rtailBase" = "singleStoreyEarlessCornerSerifless" selector."a/rtailBase" = "singleStoreyEarlessCornerSerifless"
selector."a/turnABase" = "doubleStoreyTailed" selector."a/turnABase" = "doubleStoreyTailed"
selector.scripta = "tailed"
[prime.a.variants.single-storey-earless-rounded-tailed] [prime.a.variants.single-storey-earless-rounded-tailed]
rank = 11 rank = 11
@ -1865,6 +1875,7 @@ selector.a = "singleStoreyEarlessRoundedTailed"
selector."a/sansSerif" = "singleStoreyEarlessRoundedTailed" selector."a/sansSerif" = "singleStoreyEarlessRoundedTailed"
selector."a/rtailBase" = "singleStoreyEarlessRoundedSerifless" selector."a/rtailBase" = "singleStoreyEarlessRoundedSerifless"
selector."a/turnABase" = "doubleStoreyTailed" selector."a/turnABase" = "doubleStoreyTailed"
selector.scripta = "tailed"
[prime.a.variants.single-storey-serifed] [prime.a.variants.single-storey-serifed]
rank = 12 rank = 12
@ -1873,6 +1884,7 @@ selector.a = "singleStoreySerifed"
selector."a/sansSerif" = "singleStoreySerifless" selector."a/sansSerif" = "singleStoreySerifless"
selector."a/rtailBase" = "singleStoreySerifless" selector."a/rtailBase" = "singleStoreySerifless"
selector."a/turnABase" = "doubleStoreySerifed" selector."a/turnABase" = "doubleStoreySerifed"
selector.scripta = "serifed"
[prime.a.variants.single-storey-earless-corner-serifed] [prime.a.variants.single-storey-earless-corner-serifed]
rank = 13 rank = 13
@ -1881,6 +1893,7 @@ selector.a = "singleStoreyEarlessCornerSerifed"
selector."a/sansSerif" = "singleStoreyEarlessCornerSerifless" selector."a/sansSerif" = "singleStoreyEarlessCornerSerifless"
selector."a/rtailBase" = "singleStoreyEarlessCornerSerifless" selector."a/rtailBase" = "singleStoreyEarlessCornerSerifless"
selector."a/turnABase" = "doubleStoreySerifed" selector."a/turnABase" = "doubleStoreySerifed"
selector.scripta = "serifed"
[prime.a.variants.single-storey-earless-rounded-serifed] [prime.a.variants.single-storey-earless-rounded-serifed]
rank = 14 rank = 14
@ -1889,6 +1902,7 @@ selector.a = "singleStoreyEarlessRoundedSerifed"
selector."a/sansSerif" = "singleStoreyEarlessRoundedSerifless" selector."a/sansSerif" = "singleStoreyEarlessRoundedSerifless"
selector."a/rtailBase" = "singleStoreyEarlessRoundedSerifless" selector."a/rtailBase" = "singleStoreyEarlessRoundedSerifless"
selector."a/turnABase" = "doubleStoreySerifed" selector."a/turnABase" = "doubleStoreySerifed"
selector.scripta = "serifed"
[prime.b] [prime.b]