Skip to content

Commit 485c21e

Browse files
authored
Theta and Partial Derivative variants (#2630, #2148) (#2687)
* cleanup * add variants * doc * remove nonbreakingtags * update style sets
1 parent c661de7 commit 485c21e

File tree

5 files changed

+77
-20
lines changed

5 files changed

+77
-20
lines changed

changes/33.0.0.md

+3
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
- Adjustable via metric override
44
* \[**Breaking**\] Reordered variants for `W`, `a`, `b`, `g`, `q`, `w`, `α`, Cyrillic `а`, Cyrillic `ф`, and `$`.
55
* \[**Breaking**\] Add variants for Capital Thorn (`Þ`) with symmetric/asymmetric bowl position.
6+
* \[**Breaking**\] Add variant selector for Greek Lower Theta (#2630).
7+
- As a result, feature tags for `cv71` ... `cv99`, `VAAA` are shifted by one place to `cv72` ... `cv99`, `VSAA`, `VSAB`.
8+
* Add `closed-contour` variant for Partial derivative symbol (#2148).
69
* Refine shape of the following characters:
710
- GREEK CAPITAL LETTER HETA (`U+0370`).
811
- GREEK SMALL LETTER HETA (`U+0371`).

packages/font-glyphs/src/common/o-shape-variants.ptl

+1-5
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
$$include '../meta/macros.ptl'
22

3-
import [mix linreg clamp fallback boole boolePn] from "@iosevka/util"
4-
import [Transform] from "@iosevka/geometry/transform"
5-
import [Point] from "@iosevka/geometry/point"
6-
import [FunctionInterpolator AfCombine] from "@iosevka/geometry/spiro-control"
7-
import [RadicalGeometry StrokeGeometry RemoveHolesGeometry] from "@iosevka/geometry"
3+
import [mix clamp fallback] from "@iosevka/util"
84

95
glyph-module
106

packages/font-glyphs/src/letter/greek/lower-theta.ptl

+24-4
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,31 @@ glyph-module
88
glyph-block Letter-Greek-Lower-Theta : begin
99
glyph-block-import CommonShapes
1010
glyph-block-import Common-Derivatives
11+
glyph-block-import Common-OShape-Variants : OvalShapeT DiamondShapeT
1112

12-
create-glyph 'grek/theta' 0x3B8 : glyph-proc
13-
include : MarkSet.b
14-
include : OShape Ascender 0 (SB - O) (RightSB + O) Stroke (SmallArchDepthA * 100) (SmallArchDepthB * 100)
15-
include : HBar.m (SB + HalfStroke) (RightSB - HalfStroke) (0.5 * Ascender)
13+
define [ThetaShapeBase shapeT] : namespace
14+
define [outlineT sink offsetX offsetY top] : shapeT sink (top - offsetY) (offsetY) (SB + offsetX) (RightSB - offsetX)
15+
export : define [Shape top] : outlineT dispiro 0 0 top
16+
export : define [Mask top] : outlineT spiro-outline 1 1 top
17+
18+
define Capsule : ThetaShapeBase OShapeT
19+
define Oval : ThetaShapeBase OvalShapeT
20+
define Diamond : ThetaShapeBase DiamondShapeT
21+
22+
define ThetaConfig : object
23+
'capsule' Capsule
24+
'oval' Oval
25+
'diamond' Diamond
26+
27+
foreach { suffix ShapeBase } [pairs-of ThetaConfig] : begin
28+
create-glyph "grek/theta.\(suffix)" : glyph-proc
29+
include : MarkSet.b
30+
include : ShapeBase.Shape Ascender
31+
include : intersection
32+
ShapeBase.Mask Ascender
33+
HBar.m SB RightSB (0.5 * Ascender)
34+
35+
select-variant 'grek/theta' 0x3B8
1636

1737
glyph-block Letter-Greek-Lower-Theta-Var : begin
1838
glyph-block-import CommonShapes

packages/font-glyphs/src/letter/latin-ext/eth.ptl

+10-3
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,14 @@ glyph-block Letter-Latin-Eth : begin
1515
define yMid2 : YSmoothMidR yMid 0 SmallArchDepthA SmallArchDepthB
1616
define yMid3 : mix yMid yMid2 0.875
1717

18-
define [ArcStartKnots] : list
18+
define [ArcStartKnots _flatY1 _flatY2] : list
1919
widths.lhs fine
2020
straight.up.mid (RightSB - OX - [HSwToV : Stroke - fine]) yMid2
2121
arch.lhs yMid (swBefore -- fine)
2222
g4 (SB + OX) [YSmoothMidL yMid 0 SmallArchDepthA SmallArchDepthB]
2323
arch.lhs 0
24-
flat (RightSB - OX) yMid2
25-
curl (RightSB - OX) yMid3
24+
flat (RightSB - OX) [fallback _flatY1 yMid2]
25+
curl (RightSB - OX) [fallback _flatY2 yMid3]
2626

2727
create-glyph 'dInsular.curly-bar' : glyph-proc
2828
include : MarkSet.b
@@ -41,6 +41,13 @@ glyph-block Letter-Latin-Eth : begin
4141
flat [mix Width xTerminal pStraightBarStart] [mix yMockBarStart CAP pStraightBarStart] [widths.lhs]
4242
curl [mix Width xTerminal 2] [mix yMockBarStart CAP 2]
4343

44+
create-glyph 'dInsular.closed-contour' : glyph-proc
45+
include : MarkSet.b
46+
include : dispiro
47+
ArcStartKnots SmallArchDepthA (Ascender - SmallArchDepthB)
48+
hookend Ascender
49+
g4 (SB + OX) (Ascender - Hook)
50+
4451
select-variant 'dInsular' 0xA77A (follow -- 'eth')
4552
select-variant 'partial' 0x2202 (shapeFrom -- 'dInsular')
4653

params/variants.toml

+39-8
Original file line numberDiff line numberDiff line change
@@ -5595,7 +5595,6 @@ selectorAffix."grek/alpha/sansSerif" = "tailed"
55955595
[prime.lower-beta]
55965596
sampler = "β"
55975597
samplerExplain = "Greek lower Beta"
5598-
nonBreakingTagForNewVariantSelector = "VXAC" # REMOVE IN NEXT MAJOR VERSION CHANGE
55995598
tagKind = "letter"
56005599

56015600
[prime.lower-beta.variants.standard]
@@ -5668,7 +5667,6 @@ selector."cyrl/enghe/ghePart" = "topRightSerifed"
56685667
[prime.lower-gamma]
56695668
sampler = "γ"
56705669
samplerExplain = "Greek lower Gamma"
5671-
nonBreakingTagForNewVariantSelector = "VXAD" # REMOVE IN NEXT MAJOR VERSION CHANGE
56725670
tagKind = "letter"
56735671

56745672
[prime.lower-gamma.variants.straight]
@@ -5722,6 +5720,28 @@ selector."grek/delta" = "flatTop"
57225720

57235721

57245722

5723+
[prime.lower-theta]
5724+
sampler = "θ"
5725+
samplerExplain = "Greek lower Theta"
5726+
tagKind = "letter"
5727+
5728+
[prime.lower-theta.variants.capsule]
5729+
rank = 1
5730+
description = "Greek lower Theta (`θ`) with a capsule (O-like) body shape"
5731+
selector."grek/theta" = "capsule"
5732+
5733+
[prime.lower-theta.variants.oval]
5734+
rank = 2
5735+
description = "Greek lower Theta (`θ`) with a standard (oval) body shape"
5736+
selector."grek/theta" = "oval"
5737+
5738+
[prime.lower-theta.variants.diamond]
5739+
rank = 3
5740+
description = "Greek lower Theta (`θ`) with a diamond body shape"
5741+
selector."grek/theta" = "diamond"
5742+
5743+
5744+
57255745
[prime.lower-iota]
57265746
sampler = "ι"
57275747
samplerExplain = "Greek lower Iota"
@@ -5980,7 +6000,6 @@ selectorAffix."grek/mu/sansSerif" = "serifless"
59806000
[prime.lower-nu]
59816001
sampler = "ν"
59826002
samplerExplain = "Greek lower Nu"
5983-
nonBreakingTagForNewVariantSelector = "VXAE" # REMOVE IN NEXT MAJOR VERSION CHANGE
59846003
tagKind = "letter"
59856004

59866005
[prime.lower-nu.variants.straight]
@@ -6085,7 +6104,6 @@ selector."grek/tau/tailed" = "tau/semiTailed"
60856104
[prime.lower-upsilon]
60866105
sampler = "υ"
60876106
samplerExplain = "Greek lower Upsilon"
6088-
nonBreakingTagForNewVariantSelector = "VXAF" # REMOVE IN NEXT MAJOR VERSION CHANGE
60896107
tagKind = "letter"
60906108

60916109
[prime.lower-upsilon.variants-buildup]
@@ -6125,7 +6143,6 @@ selectorAffix."grek/upsilon/sansSerif" = "serifless"
61256143
[prime.lower-phi]
61266144
sampler = "φ"
61276145
samplerExplain = "Greek lower Phi"
6128-
nonBreakingTagForNewVariantSelector = "VXAG" # REMOVE IN NEXT MAJOR VERSION CHANGE
61296146
tagKind = "letter"
61306147

61316148
[prime.lower-phi.variants.straight]
@@ -6230,7 +6247,6 @@ selectorAffix."grek/chi/sansSerif" = "serifless"
62306247
[prime.lower-psi]
62316248
sampler = "ψ"
62326249
samplerExplain = "Greek lower Psi"
6233-
nonBreakingTagForNewVariantSelector = "VXAH" # REMOVE IN NEXT MAJOR VERSION CHANGE
62346250
tagKind = "letter"
62356251

62366252
[prime.lower-psi.variants-buildup]
@@ -6921,7 +6937,6 @@ selectorAffix."cyrl/em" = "smallCyrl"
69216937
[prime.cyrl-capital-en]
69226938
sampler = "Н"
69236939
samplerExplain = "Cyrillic Capital En"
6924-
nonBreakingTagForNewVariantSelector = "VXAA" # REMOVE IN NEXT MAJOR VERSION CHANGE
69256940
tagKind = "letter"
69266941

69276942
[prime.cyrl-capital-en.variants.serifless]
@@ -7041,7 +7056,6 @@ selectorAffix."cyrl/njeKomi" = "serifedExceptBottomRight"
70417056
[prime.cyrl-capital-er]
70427057
sampler = "Р"
70437058
samplerExplain = "Cyrillic Capital Er"
7044-
nonBreakingTagForNewVariantSelector = "VXAB" # REMOVE IN NEXT MAJOR VERSION CHANGE
70457059
tagKind = "letter"
70467060

70477061
[prime.cyrl-capital-er.variants-buildup]
@@ -8490,6 +8504,11 @@ rank = 2
84908504
description = "The upper bar of the partial derivative symbol is curly"
84918505
selector."partial" = "curly-bar"
84928506

8507+
[prime.partial-derivative.variants.closed-contour]
8508+
rank = 3
8509+
description = "The upper part of the partial derivative symbol is a full hook"
8510+
selector."partial" = "closed-contour"
8511+
84938512

84948513

84958514
[prime.micro-sign]
@@ -8821,6 +8840,7 @@ capital-gamma = "serifless"
88218840
lower-gamma = "casual"
88228841
capital-delta = "straight"
88238842
lower-delta = "rounded"
8843+
lower-theta = "oval"
88248844
lower-iota = "serifed-semi-tailed"
88258845
capital-lambda = "straight-serifless"
88268846
lower-lambda = "straight"
@@ -9113,6 +9133,7 @@ number-sign = "slanted"
91139133
at = "fourfold"
91149134
percent = "rings-continuous-slash"
91159135
pilcrow = "low"
9136+
partial-derivative = "closed-contour"
91169137
micro-sign = "toothed-serifless"
91179138

91189139
[composite.ss01.slab-override.design]
@@ -9321,6 +9342,7 @@ cent = "slanted-through-cap"
93219342
percent = "rings-continuous-slash"
93229343
pilcrow = "curved"
93239344
question = "corner-flat-hooked"
9345+
partial-derivative = "closed-contour"
93249346
micro-sign = "tailed-serifless"
93259347

93269348
[composite.ss03.italic]
@@ -9456,6 +9478,7 @@ ampersand = "upper-open"
94569478
at = "threefold"
94579479
percent = "rings-continuous-slash"
94589480
bar = "force-upright"
9481+
partial-derivative = "closed-contour"
94599482
micro-sign = "tailed-serifless"
94609483

94619484
[composite.ss04.slab-override.design]
@@ -9663,6 +9686,7 @@ cent = "open-cap"
96639686
percent = "rings-continuous-slash"
96649687
bar = "force-upright"
96659688
pilcrow = "low"
9689+
partial-derivative = "closed-contour"
96669690
micro-sign = "toothed-serifless"
96679691

96689692
[composite.ss06.slab-override.design]
@@ -9845,6 +9869,7 @@ capital-lambda = "curly-serifless"
98459869
lower-lambda = "curly-tailed-turn"
98469870
lower-mu = "toothed-serifless"
98479871
lower-chi = "semi-chancery-curly-serifless"
9872+
lower-theta = "diamond"
98489873
cyrl-a = "double-storey-serifless"
98499874
cyrl-capital-zhe = "curly"
98509875
cyrl-zhe = "curly"
@@ -9873,6 +9898,7 @@ at = "threefold"
98739898
dollar = "open"
98749899
cent = "open"
98759900
percent = "dots"
9901+
partial-derivative = "closed-contour"
98769902
micro-sign = "toothed-serifless"
98779903
lig-ltgteq = "slanted"
98789904
lig-neq = "slightly-slanted-dotted"
@@ -9993,6 +10019,7 @@ dollar = "open"
999310019
cent = "through-cap"
999410020
percent = "rings-segmented-slash"
999510021
bar = "force-upright"
10022+
partial-derivative = "closed-contour"
999610023
micro-sign = "tailed-serifless"
999710024

999810025
[composite.ss09.italic]
@@ -10255,6 +10282,7 @@ dollar = "open"
1025510282
cent = "open"
1025610283
percent = "rings-continuous-slash"
1025710284
pilcrow = "low"
10285+
partial-derivative = "closed-contour"
1025810286
micro-sign = "toothless-corner-serifless"
1025910287

1026010288
[composite.ss12.italic]
@@ -10380,6 +10408,7 @@ at = "threefold"
1038010408
cent = "through-cap"
1038110409
percent = "rings-continuous-slash"
1038210410
pilcrow = "low"
10411+
partial-derivative = "closed-contour"
1038310412
micro-sign = "toothed-serifless"
1038410413

1038510414
[composite.ss13.slab-override.design]
@@ -10454,6 +10483,7 @@ lower-alpha = "barred"
1045410483
lower-gamma = "straight"
1045510484
lower-delta = "flat-top"
1045610485
lower-iota = "serifed-flat-tailed"
10486+
lower-theta = "capsule"
1045710487
lower-lambda = "straight"
1045810488
lower-mu = "toothed-serifless"
1045910489
lower-nu = "straight"
@@ -11005,6 +11035,7 @@ long-s = "bent-hook-middle-serifed-xh"
1100511035
eszet = "longs-s-lig-serifless"
1100611036
lower-alpha = "barred-tailed"
1100711037
lower-gamma = "straight"
11038+
lower-theta = "capsule"
1100811039
lower-lambda = "straight-turn"
1100911040
lower-tau = "short-tailed"
1101011041
lower-upsilon = "straight-serifless"

0 commit comments

Comments
 (0)