Add cursive variant for Greek Lower Theta. (#2702)

* Add `cursive` variants for Greek Lower Theta.

* Cleanup.

---------

Co-authored-by: Belleve <belleve@typeof.net>
This commit is contained in:
John McWilliams 2025-03-07 22:36:12 -05:00 committed by GitHub
parent 627a2193a1
commit d176efd53d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 43 additions and 29 deletions

View file

@ -1,2 +1,3 @@
* Add full-serifed variants for `K` and `k`, and related letters (#2696).
* Add cursive variant for Greek Lower Theta (`θ`).
* Add IPA localization form for Latin Lower G with Stroke (`ǥ`).

View file

@ -32,13 +32,7 @@ glyph-block Letter-Greek-Lower-Theta : begin
ShapeBase.Mask Ascender
HBar.m SB RightSB (0.5 * Ascender)
select-variant 'grek/theta' 0x3B8
glyph-block Letter-Greek-Lower-Theta-Var : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
create-glyph 'grek/thetaSymbol' 0x03D1 : glyph-proc
create-glyph 'grek/theta.cursive' : glyph-proc
include : MarkSet.b
define pXTopLeft 0.2
@ -59,3 +53,7 @@ glyph-block Letter-Greek-Lower-Theta-Var : begin
g4 [mix xTopLeft RightSB 0.5] [mix (Ascender - topSMA) (Ascender / 2 - HalfStroke) 0.9]
g4 [mix RightSB Width 0.5] (Ascender / 2 - HalfStroke)
g4 coXTopLeft (Ascender - topSMA)
select-variant 'grek/theta' 0x3B8
select-variant 'grek/theta/nonCursive' (shapeFrom -- 'grek/theta')
alias 'grek/thetaSymbol' 0x03D1 'grek/theta.cursive'

View file

@ -9,6 +9,7 @@ glyph-block Letter-Greek-Orthography : begin
# Link localization forms
link-gr LocalizedForm.IPPH 'gBar' 'gScriptBar'
link-gr LocalizedForm.IPPH 'grek/beta' 'latn/beta'
link-gr LocalizedForm.IPPH 'grek/chi' 'latn/chi'
link-gr LocalizedForm.IPPH 'gBar' 'gScriptBar'
link-gr LocalizedForm.IPPH 'grek/beta' 'latn/beta'
link-gr LocalizedForm.IPPH 'grek/theta' 'grek/theta/nonCursive'
link-gr LocalizedForm.IPPH 'grek/chi' 'latn/chi'

View file

@ -2154,7 +2154,6 @@ rank = 1
next = "double-storey-hook"
descriptionAffix = "double-storey body"
selectorAffix.a = "doubleStorey"
selectorAffix."ae/a" = "doubleStorey"
selectorAffix."a/sansSerif" = "doubleStorey"
selectorAffix."aRetroflexHook" = "doubleStorey"
selectorAffix."a/doubleStorey" = "doubleStorey"
@ -2162,13 +2161,13 @@ selectorAffix."a/singleStorey/autoSerifed/slab" = "singleStorey"
selectorAffix."a/singleStorey/autoSerifed/sans" = "singleStorey"
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/slab" = "singleStorey"
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/sans" = "singleStorey"
selectorAffix."ae/a" = "doubleStorey"
[prime.a.variants-buildup.stages.storey.single-storey]
rank = 2
next = "ear"
descriptionAffix = "single-storey body"
selectorAffix.a = "singleStorey"
selectorAffix."ae/a" = "doubleStorey"
selectorAffix."a/sansSerif" = "singleStorey"
selectorAffix."aRetroflexHook" = "singleStorey"
selectorAffix."a/doubleStorey" = "doubleStorey"
@ -2176,6 +2175,7 @@ selectorAffix."a/singleStorey/autoSerifed/slab" = "singleStorey"
selectorAffix."a/singleStorey/autoSerifed/sans" = "singleStorey"
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/slab" = "singleStorey"
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/sans" = "singleStorey"
selectorAffix."ae/a" = "doubleStorey"
[prime.a.variants-buildup.stages.double-storey-hook."*"]
next = "bar"
@ -2185,7 +2185,6 @@ rank = 1
keyAffix = ""
descriptionAffix = "serifless hook"
selectorAffix.a = ""
selectorAffix."ae/a" = ""
selectorAffix."a/sansSerif" = ""
selectorAffix."aRetroflexHook" = ""
selectorAffix."a/doubleStorey" = ""
@ -2193,13 +2192,13 @@ selectorAffix."a/singleStorey/autoSerifed/slab" = ""
selectorAffix."a/singleStorey/autoSerifed/sans" = ""
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/slab" = ""
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/sans" = ""
selectorAffix."ae/a" = ""
[prime.a.variants-buildup.stages.double-storey-hook.hook-serifed]
rank = 2
keyAffix = "hook-inward-serifed"
descriptionAffix = "serifed hook"
selectorAffix.a = "hookInwardSerifed"
selectorAffix."ae/a" = "hookInwardSerifed"
selectorAffix."a/sansSerif" = ""
selectorAffix."aRetroflexHook" = "hookInwardSerifed"
selectorAffix."a/doubleStorey" = "hookInwardSerifed"
@ -2207,6 +2206,7 @@ selectorAffix."a/singleStorey/autoSerifed/slab" = ""
selectorAffix."a/singleStorey/autoSerifed/sans" = ""
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/slab" = ""
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/sans" = ""
selectorAffix."ae/a" = "hookInwardSerifed"
[prime.a.variants-buildup.stages.ear."*"]
next = "bar"
@ -2215,7 +2215,6 @@ next = "bar"
rank = 1
keyAffix = ""
selectorAffix.a = ""
selectorAffix."ae/a" = ""
selectorAffix."a/sansSerif" = ""
selectorAffix."aRetroflexHook" = ""
selectorAffix."a/doubleStorey" = ""
@ -2223,12 +2222,12 @@ selectorAffix."a/singleStorey/autoSerifed/slab" = ""
selectorAffix."a/singleStorey/autoSerifed/sans" = ""
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/slab" = ""
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/sans" = ""
selectorAffix."ae/a" = ""
[prime.a.variants-buildup.stages.ear.top-cut]
rank = 2
descriptionAffix = "a diagonal cut at top"
selectorAffix.a = "topCut"
selectorAffix."ae/a" = ""
selectorAffix."a/sansSerif" = "topCut"
selectorAffix."aRetroflexHook" = "topCut"
selectorAffix."a/doubleStorey" = ""
@ -2236,12 +2235,12 @@ selectorAffix."a/singleStorey/autoSerifed/slab" = "topCut"
selectorAffix."a/singleStorey/autoSerifed/sans" = "topCut"
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/slab" = "topCut"
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/sans" = "topCut"
selectorAffix."ae/a" = ""
[prime.a.variants-buildup.stages.ear.earless-corner]
rank = 3
descriptionAffix = "earless (cornered top-right)"
selectorAffix.a = "earlessCorner"
selectorAffix."ae/a" = ""
selectorAffix."a/sansSerif" = "earlessCorner"
selectorAffix."aRetroflexHook" = "earlessCorner"
selectorAffix."a/doubleStorey" = ""
@ -2249,12 +2248,12 @@ selectorAffix."a/singleStorey/autoSerifed/slab" = "earlessCorner"
selectorAffix."a/singleStorey/autoSerifed/sans" = "earlessCorner"
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/slab" = "earlessCorner"
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/sans" = "earlessCorner"
selectorAffix."ae/a" = ""
[prime.a.variants-buildup.stages.ear.earless-rounded]
rank = 4
descriptionAffix = "earless (rounded top-right)"
selectorAffix.a = "earlessRounded"
selectorAffix."ae/a" = ""
selectorAffix."a/sansSerif" = "earlessRounded"
selectorAffix."aRetroflexHook" = "earlessRounded"
selectorAffix."a/doubleStorey" = ""
@ -2262,13 +2261,13 @@ selectorAffix."a/singleStorey/autoSerifed/slab" = "earlessRounded"
selectorAffix."a/singleStorey/autoSerifed/sans" = "earlessRounded"
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/slab" = "earlessRounded"
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/sans" = "earlessRounded"
selectorAffix."ae/a" = ""
[prime.a.variants-buildup.stages.bar.serifless]
rank = 1
descriptionAffix = "serif at terminal"
descriptionJoiner = "without"
selectorAffix.a = "serifless"
selectorAffix."ae/a" = "serifless"
selectorAffix."a/sansSerif" = "serifless"
selectorAffix."aRetroflexHook" = "serifless"
selectorAffix."a/doubleStorey" = "serifless"
@ -2276,12 +2275,12 @@ selectorAffix."a/singleStorey/autoSerifed/slab" = "serifless"
selectorAffix."a/singleStorey/autoSerifed/sans" = "serifless"
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/slab" = "serifless"
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/sans" = "serifless"
selectorAffix."ae/a" = "serifless"
[prime.a.variants-buildup.stages.bar.serifed]
rank = 2
descriptionAffix = "serif at terminal"
selectorAffix.a = "serifed"
selectorAffix."ae/a" = "serifless"
selectorAffix."a/sansSerif" = "serifless"
selectorAffix."aRetroflexHook" = "serifless"
selectorAffix."a/doubleStorey" = "serifed"
@ -2289,13 +2288,13 @@ selectorAffix."a/singleStorey/autoSerifed/slab" = { if = [{ storey = "double-sto
selectorAffix."a/singleStorey/autoSerifed/sans" = "serifed"
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/slab" = { if = [{ storey = "double-storey" }], then = "topSerifed", else = "serifless" }
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/sans" = "serifless"
selectorAffix."ae/a" = "serifless"
[prime.a.variants-buildup.stages.bar.double-serifed]
rank = 3
disableIf = [{ storey = "double-storey" }, { ear = "NOT eared" }]
descriptionAffix = "serifs at top and bottom"
selectorAffix.a = "doubleSerifed"
selectorAffix."ae/a" = "serifless"
selectorAffix."a/sansSerif" = "serifless"
selectorAffix."aRetroflexHook" = "topSerifed"
selectorAffix."a/doubleStorey" = "serifed"
@ -2303,12 +2302,12 @@ selectorAffix."a/singleStorey/autoSerifed/slab" = "doubleSerifed"
selectorAffix."a/singleStorey/autoSerifed/sans" = "doubleSerifed"
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/slab" = "topSerifed"
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/sans" = "topSerifed"
selectorAffix."ae/a" = "serifless"
[prime.a.variants-buildup.stages.bar.tailed]
rank = 4
descriptionAffix = "curly tail"
selectorAffix.a = "tailed"
selectorAffix."ae/a" = "serifless"
selectorAffix."a/sansSerif" = "tailed"
selectorAffix."aRetroflexHook" = "serifless"
selectorAffix."a/doubleStorey" = "tailed"
@ -2316,13 +2315,13 @@ selectorAffix."a/singleStorey/autoSerifed/slab" = { if = [{ storey = "double-sto
selectorAffix."a/singleStorey/autoSerifed/sans" = "tailed"
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/slab" = { if = [{ storey = "double-storey" }], then = "topSerifed", else = "serifless" }
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/sans" = "serifless"
selectorAffix."ae/a" = "serifless"
[prime.a.variants-buildup.stages.bar.tailed-serifed]
rank = 5
disableIf = [{ storey = "double-storey" }, { ear = "NOT eared" }]
descriptionAffix = "curly tail; with serifs at top and bottom"
selectorAffix.a = "tailedSerifed"
selectorAffix."ae/a" = "serifless"
selectorAffix."a/sansSerif" = "tailed"
selectorAffix."aRetroflexHook" = "topSerifed"
selectorAffix."a/doubleStorey" = "tailed"
@ -2330,13 +2329,13 @@ selectorAffix."a/singleStorey/autoSerifed/slab" = "tailedSerifed"
selectorAffix."a/singleStorey/autoSerifed/sans" = "tailedSerifed"
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/slab" = "topSerifed"
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/sans" = "topSerifed"
selectorAffix."ae/a" = "serifless"
[prime.a.variants-buildup.stages.bar.toothless-corner]
rank = 6
disableIf = [{ storey = "single-storey" }]
descriptionAffix = "toothless (cornered bottom-right)"
selectorAffix.a = "toothlessCorner"
selectorAffix."ae/a" = "serifless"
selectorAffix."a/sansSerif" = "toothlessCorner"
selectorAffix."aRetroflexHook" = "serifless"
selectorAffix."a/doubleStorey" = "toothlessCorner"
@ -2344,13 +2343,13 @@ selectorAffix."a/singleStorey/autoSerifed/slab" = "doubleSerifed"
selectorAffix."a/singleStorey/autoSerifed/sans" = "serifless"
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/slab" = "topSerifed"
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/sans" = "serifless"
selectorAffix."ae/a" = "serifless"
[prime.a.variants-buildup.stages.bar.toothless-rounded]
rank = 7
disableIf = [{ storey = "single-storey" }]
descriptionAffix = "toothless (rounded bottom-right)"
selectorAffix.a = "toothlessRounded"
selectorAffix."ae/a" = "serifless"
selectorAffix."a/sansSerif" = "toothlessRounded"
selectorAffix."aRetroflexHook" = "serifless"
selectorAffix."a/doubleStorey" = "toothlessRounded"
@ -2358,6 +2357,7 @@ selectorAffix."a/singleStorey/autoSerifed/slab" = "doubleSerifed"
selectorAffix."a/singleStorey/autoSerifed/sans" = "serifless"
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/slab" = "topSerifed"
selectorAffix."aRetroflexHook/singleStorey/autoSerifed/sans" = "serifless"
selectorAffix."ae/a" = "serifless"
@ -5785,16 +5785,25 @@ tagKind = "letter"
rank = 1
description = "Greek lower Theta (`θ`) with a capsule (O-like) body shape"
selector."grek/theta" = "capsule"
selector."grek/theta/nonCursive" = "capsule"
[prime.lower-theta.variants.oval]
rank = 2
description = "Greek lower Theta (`θ`) with a standard (oval) body shape"
selector."grek/theta" = "oval"
selector."grek/theta/nonCursive" = "oval"
[prime.lower-theta.variants.diamond]
rank = 3
description = "Greek lower Theta (`θ`) with a diamond body shape"
selector."grek/theta" = "diamond"
selector."grek/theta/nonCursive" = "diamond"
[prime.lower-theta.variants.cursive]
rank = 4
description = "Greek lower Theta (`θ`) with a cursive body shape"
selector."grek/theta" = "cursive"
selector."grek/theta/nonCursive" = "oval"
@ -6350,12 +6359,12 @@ tagKind = "letter"
[prime.partial-derivative.variants.straight-bar]
rank = 1
description = "Partial derivative symbol (`∂`) with a straight upper bar"
description = "Partial derivative symbol (`∂`) with a straight bar"
selector."partial" = "straight-bar"
[prime.partial-derivative.variants.curly-bar]
rank = 2
description = "Partial derivative symbol (`∂`) with a curly upper bar"
description = "Partial derivative symbol (`∂`) with a curly bar"
selector."partial" = "curly-bar"
[prime.partial-derivative.variants.closed-contour]
@ -9366,11 +9375,12 @@ y = "straight-turn-serifless"
capital-eszet = "rounded-serifless"
long-s = "flat-hook-serifless"
eszet = "longs-s-lig-serifless"
lower-beta = "standard"
lower-chi = "semi-chancery-straight-serifless"
lower-eth = "straight-bar"
lower-beta = "standard"
lower-theta = "oval"
lower-lambda = "tailed-turn"
lower-phi = "straight"
lower-chi = "semi-chancery-straight-serifless"
partial-derivative = "closed-contour"
cyrl-a = "double-storey-serifless"
cyrl-ve = "standard-serifless"
@ -9411,6 +9421,7 @@ l = "tailed"
long-s = "flat-hook-descending"
eszet = "longs-s-lig-descending-serifless"
lower-beta = "cursive"
lower-theta = "cursive"
lower-phi = "cursive"
cyrl-a = "single-storey-top-cut-serifless"
cyrl-ve = "cursive-tall"
@ -10668,6 +10679,7 @@ capital-eszet = "corner-serifless"
long-s = "flat-hook-double-serifed-xh"
eszet = "traditional-flat-hook-serifless"
lower-delta = "flat-top"
lower-theta = "oval"
lower-iota = "serifed-flat-tailed"
lower-lambda = "tailed-turn"
lower-tau = "flat-tailed"
@ -10719,6 +10731,7 @@ x = "cursive"
y = "cursive-serifless"
z = "cursive"
long-s = "flat-hook-diagonal-tailed-middle-serifed-xh"
lower-theta = "cursive"
lower-iota = "serifed-diagonal-tailed"
lower-tau = "diagonal-tailed"
cyrl-a = "single-storey-tailed"
@ -10930,6 +10943,7 @@ long-s = "bent-hook-serifless"
eszet = "longs-s-lig-serifless"
lower-eth = "straight-bar"
capital-thorn = "motion-serifed"
lower-theta = "capsule"
lower-iota = "serifed-flat-tailed"
lower-lambda = "tailed-turn"
lower-tau = "flat-tailed"