Allow script a/g to access all single-storey variants of a/g. (#2699)

* Allow script a/g to access all single-storey variants of `a`/`g`.

* Consolidate Greek Lower Alpha into `lower-a.ptl`.

---------

Co-authored-by: Belleve <belleve@typeof.net>
This commit is contained in:
John McWilliams 2025-03-02 10:44:24 -05:00 committed by GitHub
parent 2af9a8403b
commit d4bdbe8bc9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 121 additions and 126 deletions

View file

@ -39,7 +39,6 @@
- LATIN SMALL LETTER REVERSED HALF H (`U+A7F6`).
* Make certain characters slightly wider under Quasi-Proportional. Affected characters:
- CYRILLIC CAPITAL LETTER UK (`U+0478`).
- LATIN SMALL LETTER TH WITH STRIKETHROUGH (`U+1D7A`).
- LATIN SMALL LIGATURE FF (`U+FB00`) ... LATIN SMALL LIGATURE FFL (`U+FB04`).
* Add Characters:
- OBSERVER EYE SYMBOL (`U+23FF`).

3
changes/33.0.1.md Normal file
View file

@ -0,0 +1,3 @@
* Make certain characters slightly wider under Quasi-Proportional. Affected characters:
- LATIN SMALL LETTER TH WITH STRIKETHROUGH (`U+1D7A`).
* Allow Latin Alpha (`ɑ`) and Script G (`ɡ`) to use eared/earless variants of `a` (`cv36`) and `g` (`cv42`) respectively.

View file

@ -12,11 +12,10 @@ export : define [apply] : begin
run-glyph-module "./greek/psi.mjs"
run-glyph-module "./greek/upper-omega.mjs"
run-glyph-module "./greek/lower-alpha.mjs"
run-glyph-module "./greek/lower-gamma.mjs"
run-glyph-module "./greek/lower-delta.mjs"
run-glyph-module "./greek/lower-epsilon.mjs"
run-glyph-module "./greek/lower-lunate-epsilon.mjs"
run-glyph-module "./greek/lower-gamma.mjs"
run-glyph-module "./greek/lower-zeta.mjs"
run-glyph-module "./greek/lower-theta.mjs"
run-glyph-module "./greek/lower-kappa-symbol.mjs"

View file

@ -1,46 +0,0 @@
$$include '../../meta/macros.ptl'
import [mix linreg fallback SuffixCfg] from "@iosevka/util"
import [MathSansSerif] from "@iosevka/glyph/relation"
glyph-module
glyph-block Letter-Greek-Lower-Alpha : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
glyph-block-import Letter-Latin-Lower-A : SingleStoreyConfig
###########################################################################################
# UNIFIED LETTERFORMS : GREEK ORIGINALS
###########################################################################################
create-glyph 'grek/alpha.crossing' : glyph-proc
include : MarkSet.e
local middle : mix SB RightSB 0.42
local fine : AdviceStroke 3.25
local k1 0.25
local k2 0.5
local k3 0.35
include : dispiro
widths.rhs fine
g4 (RightSB - OX * 1.75) XH [heading Downward]
bezControls k1 k2 k3 1 6
arch.rhs.centerAt.rtl.b middle 0
archv
flat (SB + OX * 2) SmallArchDepthB
curl (SB + OX * 2) (XH - SmallArchDepthA)
arcvh
arch.rhs.centerAt.ltr.t middle XH
bezControls (1 - k3) 0 (1 - k1) (1 - k2) 6
g4 (RightSB - OX * 2) 0 [widths.heading 0 fine Downward]
set-base-anchor 'overlay' (middle - OX) (XH * OverlayPos)
foreach { suffix { body bar } } [Object.entries SingleStoreyConfig] : do
create-glyph "grek/alpha.\(suffix)" : glyph-proc
local df : include : DivFrame 1
include : df.markSet.e
include : body df XH bar
select-variant 'grek/alpha' 0x3B1
link-reduced-variant 'grek/alpha/sansSerif' 'grek/alpha' MathSansSerif

View file

@ -120,6 +120,9 @@ glyph-block Letter-Latin-Lower-A : begin
include : df.markSet.e
if xTrailing : set-base-anchor 'trailing' xTrailing 0
include : body df hookStyle
create-glyph "aRetroflexHook.\(suffix)" : glyph-proc
include [refer-glyph "a.\(suffix)"] AS_BASE ALSO_METRICS
include : RetroflexHook.rSideJut RightSB 0 (yOverflow -- Stroke)
glyph-block-import Letter-Blackboard : BBS BBD
create-glyph 'mathbb/a' 0x1D552 : glyph-proc
@ -139,6 +142,30 @@ glyph-block Letter-Latin-Lower-A : begin
Rect XH 0 (RightSB - BBD) Width
include : HBar.b (RightSB - BBD) RightSB 0 BBS
# Greek Lower Alpha
create-glyph 'a.crossing' : glyph-proc
include : MarkSet.e
local middle : mix SB RightSB 0.42
local fine : AdviceStroke 3.25
local k1 0.25
local k2 0.5
local k3 0.35
include : dispiro
widths.rhs fine
g4 (RightSB - OX * 1.75) XH [heading Downward]
bezControls k1 k2 k3 1 6
arch.rhs.centerAt.rtl.b middle 0
archv
flat (SB + OX * 2) SmallArchDepthB
curl (SB + OX * 2) (XH - SmallArchDepthA)
arcvh
arch.rhs.centerAt.ltr.t middle XH
bezControls (1 - k3) 0 (1 - k1) (1 - k2) 6
g4 (RightSB - OX * 2) 0 [widths.heading 0 fine Downward]
set-base-anchor 'overlay' (middle - OX) (XH * OverlayPos)
glyph-block-export SingleStorey
define SingleStorey : namespace
define [EaredBodyImpl df top sw] : OBarRight.shape
@ -247,23 +274,26 @@ glyph-block Letter-Latin-Lower-A : begin
local df : include : DivFrame 1
include : df.markSet.capital
include : body df CAP bar
create-glyph "aRetroflexHook.\(suffix)" : glyph-proc
include [refer-glyph "a.\(suffix)"] AS_BASE ALSO_METRICS
include : RetroflexHook.rSideJut RightSB 0 (yOverflow -- Stroke)
select-variant 'a' 'a'
link-reduced-variant 'a/sansSerif' 'a' MathSansSerif
link-reduced-variant 'a/rtailBase' 'a'
link-reduced-variant 'a/doubleStorey' 'a'
select-variant 'cyrl/a' 0x430 (shapeFrom -- 'a')
CreateTurnedLetter 'turna' 0x250 'a/doubleStorey' HalfAdvance (XH / 2)
derive-composites 'aRetroflexHook' 0x1D8F 'a/rtailBase'
RetroflexHook.rSideJut RightSB 0 (yOverflow -- Stroke)
select-variant 'aRetroflexHook' 0x1D8F
select-variant 'aScript' 0x251 (follow -- [conditional-follow SLAB 'aScript/autoSerifed/slab' 'aScript/autoSerifed/sans']) (shapeFrom -- 'a')
select-variant 'AScript' 0x2C6D (follow -- [conditional-follow SLAB 'aScript/autoSerifed/slab' 'aScript/autoSerifed/sans'])
select-variant 'grek/alpha' 0x3B1 (shapeFrom -- 'a')
link-reduced-variant 'grek/alpha/sansSerif' 'grek/alpha' MathSansSerif (shapeFrom -- 'a')
derive-composites 'aScriptRetroflexHook' 0x1D90 'a.singleStoreyTopCutSerifless'
RetroflexHook.rSideJut RightSB 0 (yOverflow -- Stroke)
select-variant 'aScript' 0x251 (follow -- [conditional-follow SLAB 'a/singleStorey/autoSerifed/slab' 'a/singleStorey/autoSerifed/sans']) (shapeFrom -- 'a')
select-variant 'AScript' 0x2C6D (follow -- [conditional-follow SLAB 'a/singleStorey/autoSerifed/slab' 'a/singleStorey/autoSerifed/sans'])
select-variant 'aScriptRetroflexHook' 0x1D90 (follow -- [conditional-follow SLAB 'aRetroflexHook/singleStorey/autoSerifed/slab' 'aRetroflexHook/singleStorey/autoSerifed/sans']) (shapeFrom -- 'aRetroflexHook')
CreateTurnedLetter 'turnaScript' 0x252 'aScript' HalfAdvance (XH / 2)
CreateTurnedLetter 'turnAScript' 0x2C70 'AScript' HalfAdvance (CAP / 2)

View file

@ -195,17 +195,25 @@ glyph-block Letter-Latin-Lower-G : begin
include [refer-glyph "g.\(suffix)"] AS_BASE ALSO_METRICS
include : OverlayW [AdviceStroke2 2 4 XH]
create-glyph "gScriptCrossedTail.\(suffix)" : glyph-proc
local df : include : DivFrame 1
include : df.markSet.p
set-base-anchor 'overlay' Middle (XH / 2)
include : bodyShape df XH
include : SingleStorey.CrossedHook df (XH - hookStart)
select-variant 'g' 'g'
link-reduced-variant 'g/sansSerif' 'g' MathSansSerif
CreateTurnedLetter 'turng' 0x1D77 'g' HalfAdvance [mix Descender XH 0.5]
select-variant "gBar" 0x1E5 (follow -- 'g')
select-variant 'gScript' 0x261 (shapeFrom -- 'g') (follow -- 'gScript')
select-variant 'GScript' 0xA7AC (follow -- 'gScript')
select-variant 'gScriptPalatalHook' 0x1D83 (shapeFrom -- 'gPalatalHook') (follow -- 'gScript')
select-variant 'gScript' 0x261 (follow -- [conditional-follow SLAB 'g/singleStorey/autoSerifed/slab' 'g/singleStorey/autoSerifed/sans']) (shapeFrom -- 'g')
select-variant 'GScript' 0xA7AC (follow -- [conditional-follow SLAB 'g/singleStorey/autoSerifed/slab' 'g/singleStorey/autoSerifed/sans'])
select-variant 'gScriptPalatalHook' 0x1D83 (follow -- [conditional-follow SLAB 'g/singleStorey/autoSerifed/slab' 'g/singleStorey/autoSerifed/sans']) (shapeFrom -- 'gPalatalHook')
select-variant 'gScriptCrossedTail' 0xAB36 (follow -- [conditional-follow SLAB 'g/singleStoreyBentHook/autoSerifed/slab' 'g/singleStoreyBentHook/autoSerifed/sans'])
select-variant 'cyrl/de.BGR' (shapeFrom -- 'g') (follow -- [conditional-follow SLAB 'g/singleStorey/autoSerifed/slab' 'g/singleStorey/autoSerifed/sans'])
alias 'cyrl/de.SRB' null 'cyrl/de.BGR'
alias 'cyrl/de.BGR' null 'gScript'
alias 'cyrl/de.SRB' null 'gScript'
select-variant 'g/hookTopBase' (shapeFrom -- 'g')
derive-glyphs 'gHookTop' 0x260 "g/hookTopBase" : function [src gr] : glyph-proc
@ -213,13 +221,6 @@ glyph-block Letter-Latin-Lower-G : begin
include : TopHook.toRight.rBarOuter RightSB 0 XH
include : LeaningAnchor.Above.VBar.r RightSB
create-glyph 'gScriptCrossedTail' 0xAB36 : glyph-proc
include : MarkSet.p
set-base-anchor 'overlay' Middle (XH / 2)
define df : DivFrame 1
include : SingleStorey.TopCutBody df XH
include : SingleStorey.CrossedHook df (XH - HalfStroke)
glyph-block-import Letter-Blackboard : BBS BBD BBBarRight
create-glyph 'mathbb/g' 0x1D558 : glyph-proc
include : MarkSet.p

View file

@ -1857,7 +1857,6 @@ selectorAffix.W = "curly"
selectorAffix."W/sansSerif" = "curly"
selectorAffix.WHookTop = "curly"
[prime.capital-w.variants-buildup.stages.serifs.serifless]
rank = 1
descriptionAffix = "serifs"
@ -2149,12 +2148,12 @@ descriptionAffix = "double-storey body"
selectorAffix.a = "doubleStorey"
selectorAffix."ae/a" = "doubleStorey"
selectorAffix."a/sansSerif" = "doubleStorey"
selectorAffix."a/rtailBase" = "doubleStorey"
selectorAffix."aRetroflexHook" = "doubleStorey"
selectorAffix."a/doubleStorey" = "doubleStorey"
selectorAffix."a/singleStorey/autoSerifed/slab" = "singleStorey"
selectorAffix."a/singleStorey/autoSerifed/sans" = "singleStorey"
selectorAffix."aScript/autoSerifed/slab" = "singleStoreyTopCut"
selectorAffix."aScript/autoSerifed/sans" = "singleStoreyTopCut"
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/slab" = "singleStorey"
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/sans" = "singleStorey"
[prime.a.variants-buildup.stages.storey.single-storey]
rank = 2
@ -2163,12 +2162,12 @@ descriptionAffix = "single-storey body"
selectorAffix.a = "singleStorey"
selectorAffix."ae/a" = "doubleStorey"
selectorAffix."a/sansSerif" = "singleStorey"
selectorAffix."a/rtailBase" = "singleStorey"
selectorAffix."aRetroflexHook" = "singleStorey"
selectorAffix."a/doubleStorey" = "doubleStorey"
selectorAffix."a/singleStorey/autoSerifed/slab" = "singleStorey"
selectorAffix."a/singleStorey/autoSerifed/sans" = "singleStorey"
selectorAffix."aScript/autoSerifed/slab" = "singleStorey"
selectorAffix."aScript/autoSerifed/sans" = "singleStorey"
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/slab" = "singleStorey"
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/sans" = "singleStorey"
[prime.a.variants-buildup.stages.double-storey-hook."*"]
next = "bar"
@ -2180,12 +2179,12 @@ descriptionAffix = "serifless hook"
selectorAffix.a = ""
selectorAffix."ae/a" = ""
selectorAffix."a/sansSerif" = ""
selectorAffix."a/rtailBase" = ""
selectorAffix."aRetroflexHook" = ""
selectorAffix."a/doubleStorey" = ""
selectorAffix."a/singleStorey/autoSerifed/slab" = ""
selectorAffix."a/singleStorey/autoSerifed/sans" = ""
selectorAffix."aScript/autoSerifed/slab" = ""
selectorAffix."aScript/autoSerifed/sans" = ""
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/slab" = ""
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/sans" = ""
[prime.a.variants-buildup.stages.double-storey-hook.hook-serifed]
rank = 2
@ -2194,12 +2193,12 @@ descriptionAffix = "serifed hook"
selectorAffix.a = "hookInwardSerifed"
selectorAffix."ae/a" = "hookInwardSerifed"
selectorAffix."a/sansSerif" = ""
selectorAffix."a/rtailBase" = "hookInwardSerifed"
selectorAffix."aRetroflexHook" = "hookInwardSerifed"
selectorAffix."a/doubleStorey" = "hookInwardSerifed"
selectorAffix."a/singleStorey/autoSerifed/slab" = ""
selectorAffix."a/singleStorey/autoSerifed/sans" = ""
selectorAffix."aScript/autoSerifed/slab" = ""
selectorAffix."aScript/autoSerifed/sans" = ""
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/slab" = ""
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/sans" = ""
[prime.a.variants-buildup.stages.ear."*"]
next = "bar"
@ -2210,12 +2209,12 @@ keyAffix = ""
selectorAffix.a = ""
selectorAffix."ae/a" = ""
selectorAffix."a/sansSerif" = ""
selectorAffix."a/rtailBase" = ""
selectorAffix."aRetroflexHook" = ""
selectorAffix."a/doubleStorey" = ""
selectorAffix."a/singleStorey/autoSerifed/slab" = ""
selectorAffix."a/singleStorey/autoSerifed/sans" = ""
selectorAffix."aScript/autoSerifed/slab" = "topCut"
selectorAffix."aScript/autoSerifed/sans" = "topCut"
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/slab" = ""
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/sans" = ""
[prime.a.variants-buildup.stages.ear.top-cut]
rank = 2
@ -2223,12 +2222,12 @@ descriptionAffix = "a diagonal cut at top"
selectorAffix.a = "topCut"
selectorAffix."ae/a" = ""
selectorAffix."a/sansSerif" = "topCut"
selectorAffix."a/rtailBase" = "topCut"
selectorAffix."aRetroflexHook" = "topCut"
selectorAffix."a/doubleStorey" = ""
selectorAffix."a/singleStorey/autoSerifed/slab" = "topCut"
selectorAffix."a/singleStorey/autoSerifed/sans" = "topCut"
selectorAffix."aScript/autoSerifed/slab" = "topCut"
selectorAffix."aScript/autoSerifed/sans" = "topCut"
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/slab" = "topCut"
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/sans" = "topCut"
[prime.a.variants-buildup.stages.ear.earless-corner]
rank = 3
@ -2236,12 +2235,12 @@ descriptionAffix = "earless (cornered top-right)"
selectorAffix.a = "earlessCorner"
selectorAffix."ae/a" = ""
selectorAffix."a/sansSerif" = "earlessCorner"
selectorAffix."a/rtailBase" = "earlessCorner"
selectorAffix."aRetroflexHook" = "earlessCorner"
selectorAffix."a/doubleStorey" = ""
selectorAffix."a/singleStorey/autoSerifed/slab" = "earlessCorner"
selectorAffix."a/singleStorey/autoSerifed/sans" = "earlessCorner"
selectorAffix."aScript/autoSerifed/slab" = "topCut"
selectorAffix."aScript/autoSerifed/sans" = "topCut"
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/slab" = "earlessCorner"
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/sans" = "earlessCorner"
[prime.a.variants-buildup.stages.ear.earless-rounded]
rank = 4
@ -2249,12 +2248,12 @@ descriptionAffix = "earless (rounded top-right)"
selectorAffix.a = "earlessRounded"
selectorAffix."ae/a" = ""
selectorAffix."a/sansSerif" = "earlessRounded"
selectorAffix."a/rtailBase" = "earlessRounded"
selectorAffix."aRetroflexHook" = "earlessRounded"
selectorAffix."a/doubleStorey" = ""
selectorAffix."a/singleStorey/autoSerifed/slab" = "earlessRounded"
selectorAffix."a/singleStorey/autoSerifed/sans" = "earlessRounded"
selectorAffix."aScript/autoSerifed/slab" = "topCut"
selectorAffix."aScript/autoSerifed/sans" = "topCut"
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/slab" = "earlessRounded"
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/sans" = "earlessRounded"
[prime.a.variants-buildup.stages.bar.serifless]
rank = 1
@ -2263,12 +2262,12 @@ descriptionJoiner = "without"
selectorAffix.a = "serifless"
selectorAffix."ae/a" = "serifless"
selectorAffix."a/sansSerif" = "serifless"
selectorAffix."a/rtailBase" = "serifless"
selectorAffix."aRetroflexHook" = "serifless"
selectorAffix."a/doubleStorey" = "serifless"
selectorAffix."a/singleStorey/autoSerifed/slab" = "serifless"
selectorAffix."a/singleStorey/autoSerifed/sans" = "serifless"
selectorAffix."aScript/autoSerifed/slab" = "serifless"
selectorAffix."aScript/autoSerifed/sans" = "serifless"
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/slab" = "serifless"
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/sans" = "serifless"
[prime.a.variants-buildup.stages.bar.serifed]
rank = 2
@ -2276,12 +2275,12 @@ descriptionAffix = "serif at terminal"
selectorAffix.a = "serifed"
selectorAffix."ae/a" = "serifless"
selectorAffix."a/sansSerif" = "serifless"
selectorAffix."a/rtailBase" = "serifless"
selectorAffix."aRetroflexHook" = "serifless"
selectorAffix."a/doubleStorey" = "serifed"
selectorAffix."a/singleStorey/autoSerifed/slab" = { if = [{ storey = "double-storey" }], then = "doubleSerifed", else = "serifed" }
selectorAffix."a/singleStorey/autoSerifed/sans" = "serifed"
selectorAffix."aScript/autoSerifed/slab" = "serifed"
selectorAffix."aScript/autoSerifed/sans" = "serifed"
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/slab" = { if = [{ storey = "double-storey" }], then = "topSerifed", else = "serifless" }
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/sans" = "serifless"
[prime.a.variants-buildup.stages.bar.double-serifed]
rank = 3
@ -2290,12 +2289,12 @@ descriptionAffix = "serifs at top and bottom"
selectorAffix.a = "doubleSerifed"
selectorAffix."ae/a" = "serifless"
selectorAffix."a/sansSerif" = "serifless"
selectorAffix."a/rtailBase" = "topSerifed"
selectorAffix."aRetroflexHook" = "topSerifed"
selectorAffix."a/doubleStorey" = "serifed"
selectorAffix."a/singleStorey/autoSerifed/slab" = "doubleSerifed"
selectorAffix."a/singleStorey/autoSerifed/sans" = "doubleSerifed"
selectorAffix."aScript/autoSerifed/slab" = "serifed"
selectorAffix."aScript/autoSerifed/sans" = "serifed"
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/slab" = "topSerifed"
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/sans" = "topSerifed"
[prime.a.variants-buildup.stages.bar.tailed]
rank = 4
@ -2303,12 +2302,12 @@ descriptionAffix = "curly tail"
selectorAffix.a = "tailed"
selectorAffix."ae/a" = "serifless"
selectorAffix."a/sansSerif" = "tailed"
selectorAffix."a/rtailBase" = "serifless"
selectorAffix."aRetroflexHook" = "serifless"
selectorAffix."a/doubleStorey" = "tailed"
selectorAffix."a/singleStorey/autoSerifed/slab" = { if = [{ storey = "double-storey" }], then = "tailedSerifed", else = "tailed" }
selectorAffix."a/singleStorey/autoSerifed/sans" = "tailed"
selectorAffix."aScript/autoSerifed/slab" = "tailed"
selectorAffix."aScript/autoSerifed/sans" = "tailed"
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/slab" = { if = [{ storey = "double-storey" }], then = "topSerifed", else = "serifless" }
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/sans" = "serifless"
[prime.a.variants-buildup.stages.bar.tailed-serifed]
rank = 5
@ -2317,12 +2316,12 @@ descriptionAffix = "curly tail; with serifs at top and bottom"
selectorAffix.a = "tailedSerifed"
selectorAffix."ae/a" = "serifless"
selectorAffix."a/sansSerif" = "tailed"
selectorAffix."a/rtailBase" = "topSerifed"
selectorAffix."aRetroflexHook" = "topSerifed"
selectorAffix."a/doubleStorey" = "tailed"
selectorAffix."a/singleStorey/autoSerifed/slab" = "tailedSerifed"
selectorAffix."a/singleStorey/autoSerifed/sans" = "tailedSerifed"
selectorAffix."aScript/autoSerifed/slab" = "tailed"
selectorAffix."aScript/autoSerifed/sans" = "tailed"
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/slab" = "topSerifed"
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/sans" = "topSerifed"
[prime.a.variants-buildup.stages.bar.toothless-corner]
rank = 6
@ -2331,12 +2330,12 @@ descriptionAffix = "toothless (cornered bottom-right)"
selectorAffix.a = "toothlessCorner"
selectorAffix."ae/a" = "serifless"
selectorAffix."a/sansSerif" = "toothlessCorner"
selectorAffix."a/rtailBase" = "serifless"
selectorAffix."aRetroflexHook" = "serifless"
selectorAffix."a/doubleStorey" = "toothlessCorner"
selectorAffix."a/singleStorey/autoSerifed/slab" = "doubleSerifed"
selectorAffix."a/singleStorey/autoSerifed/sans" = "serifless"
selectorAffix."aScript/autoSerifed/slab" = "serifed"
selectorAffix."aScript/autoSerifed/sans" = "serifless"
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/slab" = "topSerifed"
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/sans" = "serifless"
[prime.a.variants-buildup.stages.bar.toothless-rounded]
rank = 7
@ -2345,12 +2344,12 @@ descriptionAffix = "toothless (rounded bottom-right)"
selectorAffix.a = "toothlessRounded"
selectorAffix."ae/a" = "serifless"
selectorAffix."a/sansSerif" = "toothlessRounded"
selectorAffix."a/rtailBase" = "serifless"
selectorAffix."aRetroflexHook" = "serifless"
selectorAffix."a/doubleStorey" = "toothlessRounded"
selectorAffix."a/singleStorey/autoSerifed/slab" = "doubleSerifed"
selectorAffix."a/singleStorey/autoSerifed/sans" = "serifless"
selectorAffix."aScript/autoSerifed/slab" = "serifed"
selectorAffix."aScript/autoSerifed/sans" = "serifless"
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/slab" = "topSerifed"
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/sans" = "serifless"
@ -2802,7 +2801,8 @@ selectorAffix."g/sansSerif" = "doubleStorey"
selectorAffix."g/hookTopBase" = "singleStoreyBentHookSerifless"
selectorAffix."g/singleStorey/autoSerifed/slab" = "singleStoreyBentHookSerifed"
selectorAffix."g/singleStorey/autoSerifed/sans" = "singleStoreyBentHookSerifless"
selectorAffix.gScript = "singleStoreyBentHookTopCut"
selectorAffix."g/singleStoreyBentHook/autoSerifed/slab" = "singleStoreyBentHookSerifed"
selectorAffix."g/singleStoreyBentHook/autoSerifed/sans" = "singleStoreyBentHookSerifless"
[prime.g.variants-buildup.stages.openness."*"]
next = "END"
@ -2815,7 +2815,8 @@ selectorAffix."g/sansSerif" = "closed"
selectorAffix."g/hookTopBase" = ""
selectorAffix."g/singleStorey/autoSerifed/slab" = ""
selectorAffix."g/singleStorey/autoSerifed/sans" = ""
selectorAffix.gScript = ""
selectorAffix."g/singleStoreyBentHook/autoSerifed/slab" = ""
selectorAffix."g/singleStoreyBentHook/autoSerifed/sans" = ""
[prime.g.variants-buildup.stages.openness.open]
rank = 1
@ -2825,7 +2826,8 @@ selectorAffix."g/sansSerif" = "open"
selectorAffix."g/hookTopBase" = ""
selectorAffix."g/singleStorey/autoSerifed/slab" = ""
selectorAffix."g/singleStorey/autoSerifed/sans" = ""
selectorAffix.gScript = ""
selectorAffix."g/singleStoreyBentHook/autoSerifed/slab" = ""
selectorAffix."g/singleStoreyBentHook/autoSerifed/sans" = ""
[prime.g.variants-buildup.stages.storey.single-storey]
next = "hook"
@ -2836,7 +2838,8 @@ selectorAffix."g/sansSerif" = "singleStorey"
selectorAffix."g/hookTopBase" = "singleStorey"
selectorAffix."g/singleStorey/autoSerifed/slab" = "singleStorey"
selectorAffix."g/singleStorey/autoSerifed/sans" = "singleStorey"
selectorAffix.gScript = "singleStorey"
selectorAffix."g/singleStoreyBentHook/autoSerifed/slab" = "singleStorey"
selectorAffix."g/singleStoreyBentHook/autoSerifed/sans" = "singleStorey"
[prime.g.variants-buildup.stages.hook."*"]
next = "ear"
@ -2849,7 +2852,8 @@ selectorAffix."g/sansSerif" = "bentHook"
selectorAffix."g/hookTopBase" = "bentHook"
selectorAffix."g/singleStorey/autoSerifed/slab" = "bentHook"
selectorAffix."g/singleStorey/autoSerifed/sans" = "bentHook"
selectorAffix.gScript = "bentHook"
selectorAffix."g/singleStoreyBentHook/autoSerifed/slab" = "bentHook"
selectorAffix."g/singleStoreyBentHook/autoSerifed/sans" = "bentHook"
[prime.g.variants-buildup.stages.hook.flat-hook]
rank = 2
@ -2859,7 +2863,8 @@ selectorAffix."g/sansSerif" = "flatHook"
selectorAffix."g/hookTopBase" = "flatHook"
selectorAffix."g/singleStorey/autoSerifed/slab" = "flatHook"
selectorAffix."g/singleStorey/autoSerifed/sans" = "flatHook"
selectorAffix.gScript = "flatHook"
selectorAffix."g/singleStoreyBentHook/autoSerifed/slab" = "bentHook"
selectorAffix."g/singleStoreyBentHook/autoSerifed/sans" = "bentHook"
[prime.g.variants-buildup.stages.ear.serifless]
rank = 1
@ -2868,7 +2873,8 @@ selectorAffix."g/sansSerif" = "serifless"
selectorAffix."g/hookTopBase" = "serifless"
selectorAffix."g/singleStorey/autoSerifed/slab" = "serifless"
selectorAffix."g/singleStorey/autoSerifed/sans" = "serifless"
selectorAffix.gScript = "topCut"
selectorAffix."g/singleStoreyBentHook/autoSerifed/slab" = "serifless"
selectorAffix."g/singleStoreyBentHook/autoSerifed/sans" = "serifless"
[prime.g.variants-buildup.stages.ear.serifed]
rank = 2
@ -2878,7 +2884,8 @@ selectorAffix."g/sansSerif" = "serifless"
selectorAffix."g/hookTopBase" = "serifless"
selectorAffix."g/singleStorey/autoSerifed/slab" = "serifed"
selectorAffix."g/singleStorey/autoSerifed/sans" = "serifed"
selectorAffix.gScript = "topCut"
selectorAffix."g/singleStoreyBentHook/autoSerifed/slab" = "serifed"
selectorAffix."g/singleStoreyBentHook/autoSerifed/sans" = "serifed"
[prime.g.variants-buildup.stages.ear.top-cut]
rank = 3
@ -2888,7 +2895,8 @@ selectorAffix."g/sansSerif" = "topCut"
selectorAffix."g/hookTopBase" = "serifless"
selectorAffix."g/singleStorey/autoSerifed/slab" = "topCut"
selectorAffix."g/singleStorey/autoSerifed/sans" = "topCut"
selectorAffix.gScript = "topCut"
selectorAffix."g/singleStoreyBentHook/autoSerifed/slab" = "topCut"
selectorAffix."g/singleStoreyBentHook/autoSerifed/sans" = "topCut"
[prime.g.variants-buildup.stages.ear.earless-corner]
rank = 4
@ -2898,7 +2906,8 @@ selectorAffix."g/sansSerif" = "earlessCorner"
selectorAffix."g/hookTopBase" = "earlessCornerHTB"
selectorAffix."g/singleStorey/autoSerifed/slab" = "earlessCorner"
selectorAffix."g/singleStorey/autoSerifed/sans" = "earlessCorner"
selectorAffix.gScript = "topCut"
selectorAffix."g/singleStoreyBentHook/autoSerifed/slab" = "earlessCorner"
selectorAffix."g/singleStoreyBentHook/autoSerifed/sans" = "earlessCorner"
[prime.g.variants-buildup.stages.ear.earless-rounded]
rank = 5
@ -2908,7 +2917,8 @@ selectorAffix."g/sansSerif" = "earlessRounded"
selectorAffix."g/hookTopBase" = "serifless"
selectorAffix."g/singleStorey/autoSerifed/slab" = "earlessRounded"
selectorAffix."g/singleStorey/autoSerifed/sans" = "earlessRounded"
selectorAffix.gScript = "topCut"
selectorAffix."g/singleStoreyBentHook/autoSerifed/slab" = "earlessRounded"
selectorAffix."g/singleStoreyBentHook/autoSerifed/sans" = "earlessRounded"
@ -4800,7 +4810,6 @@ selectorAffix.w = "cursive"
selectorAffix."w/sansSerif" = "cursive"
selectorAffix.wHookTop = "cursive"
[prime.w.variants-buildup.stages.serifs.serifless]
rank = 1
descriptionAffix = "serifs"