Skip to content

Commit 1666e2b

Browse files
Cleanup of loosely related O-derived characters. (#2544)
* Cleanup of #2541 . * Optimize glyph of `OE`/`smcpOE`.
1 parent c8f8799 commit 1666e2b

File tree

4 files changed

+44
-24
lines changed

4 files changed

+44
-24
lines changed

changes/31.9.0.md

+1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
* Add IJ-acute ligatures (#2483).
22
* Allowed customizing menu WWS value to name map (#2488).
33
* Optimize glyphs for `rounded-serifless` and `rounded-serifed` variants for Capital Eszett (``).
4+
* Optimize glyph for Capital OE (`U+0152`) under Quasi-Proportional.
45
* Optimize glyphs for closed epsilon shapes (`U+025E`, `U+029A`).
56
* Optimize glyphs for cursive variants for Greek Lower Beta (`β`) and Cyrillic Lower Ve (`в`).
67
* Optimize glyphs for Cyrillic Capital/Lower Broad On (`U+047A`, `U+047B`).

packages/font-glyphs/src/letter/greek/phi.ptl

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ glyph-block Letter-Greek-Phi : begin
1313
glyph-block-import Letter-Latin-Lower-AE-OE : SubDfAndShift
1414

1515
define [VarPhiRing fFlatTB df y2 y3] : glyph-proc
16-
local gap : Math.max df.mvs : 0.25 * (df.rightSB - df.leftSB)
16+
local gap : Math.max (0.25 * (df.rightSB - df.leftSB)) : HSwToV df.mvs
1717
include : VBar.m df.middle y2 y3 df.mvs
1818
include : if fFlatTB
1919
OShapeFlatTB y3 y2 df.leftSB df.rightSB df.mvs (ArchDepthA * df.div) (ArchDepthB * df.div) gap
@@ -130,7 +130,7 @@ glyph-block Letter-Greek-Phi : begin
130130
local df : include : DivFrame para.diversityM 3
131131
include : df.markSet.capital
132132

133-
local vJut : Math.max (LongJut - 0.5 * Stroke) : if SLAB (1.25 * Stroke - O) 0
133+
local vJut : Math.max (LongJut - 0.5 * Stroke) : if SLAB (1.5 * Stroke) 0
134134

135135
local top : CAP + vJut
136136
local bot : 0 - vJut

packages/font-glyphs/src/letter/latin-ext/upper-ae-oe.ptl

+24-11
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ glyph-block Letter-Latin-Upper-AE-OE : begin
121121
match slabKind
122122
([Just SLAB-E-ALL] || [Just SLAB-E-CAPPED]) : begin
123123
include : VSerif.dr df.rightSB top jutTop swVJut
124-
include : VSerif.ur df.rightSB 0 jutBot swVJut
124+
include : VSerif.ur df.rightSB 0 jutBot swVJut
125125
match slabKind
126126
[Just SLAB-E-CAPPED] : begin
127127
local fine : swVJut * [AdviceStroke 3.5] / Stroke
@@ -210,26 +210,39 @@ glyph-block Letter-Latin-Upper-AE-OE : begin
210210
local yBar : top * eBarPos
211211
local { jutTop jutBot jutMid } : EFVJutLength top eBarPos sw
212212

213+
local ada : df.archDepthA ArchDepth sw
214+
local adb : df.archDepthB ArchDepth sw
215+
213216
# O half
214-
include : dispiro
215-
widths.lhs sw 0
216-
straight.left.start eleft top [heading Leftward]
217-
archv
218-
flat df.leftSB (top - ArchDepthA)
219-
curl df.leftSB (ArchDepthB)
220-
arcvh
221-
straight.right.end eleft 0 [heading Rightward]
217+
if (top > ada + adb) : then : begin
218+
include : dispiro
219+
widths.lhs sw 0
220+
straight.left.start eleft top [heading Leftward]
221+
archv
222+
flat df.leftSB (top - ada)
223+
curl df.leftSB (0 + adb)
224+
arcvh
225+
straight.right.end eleft 0 [heading Rightward]
226+
: else : begin
227+
local yMidLeft : top * (adb / (ada + adb))
228+
include : dispiro
229+
widths.lhs sw 0
230+
straight.left.start eleft top [heading Leftward]
231+
archv
232+
g4 df.leftSB yMidLeft
233+
arcvh
234+
straight.right.end eleft 0 [heading Rightward]
222235

223236
# E half
224237
include : VBar.l eleft 0 top sw
225238
include : HBar.t (eleft - O) df.rightSB top sw
226239
include : HBar.m (eleft - O) xMidRight yBar sw
227-
include : HBar.b (eleft - O) df.rightSB 0 sw
240+
include : HBar.b (eleft - O) df.rightSB 0 sw
228241

229242
match slabKind
230243
([Just SLAB-E-ALL] || [Just SLAB-E-CAPPED]) : begin
231244
include : VSerif.dr df.rightSB top jutTop swVJut
232-
include : VSerif.ur df.rightSB 0 jutBot swVJut
245+
include : VSerif.ur df.rightSB 0 jutBot swVJut
233246
match slabKind
234247
[Just SLAB-E-CAPPED] : begin
235248
local fine : swVJut * [AdviceStroke 3.5] / Stroke

packages/font-glyphs/src/letter/latin/o.ptl

+17-11
Original file line numberDiff line numberDiff line change
@@ -64,19 +64,25 @@ glyph-block Letter-Latin-O : begin
6464
create-glyph 'cyrl/BroadOn' 0x47A : glyph-proc
6565
define df : include : DivFrame [mix 1 para.diversityM 0.5] 3
6666
include : df.markSet.capital
67-
local gap : Math.max (0.25 * (df.rightSB - df.leftSB)) : HSwToV (rBroadOn * Math.SQRT2)
68-
local ada : ArchDepthA * df.div
69-
local adb : ArchDepthB * df.div
67+
local dist : df.rightSB - df.leftSB
68+
local gap : Math.min
69+
Math.max (0.25 * dist) [HSwToV : Math.SQRT2 * rBroadOn]
70+
Math.max (dist - [HSwToV : 3 * df.mvs]) [HSwToV df.mvs]
71+
local ada : df.archDepthA ArchDepth df.mvs
72+
local adb : df.archDepthB ArchDepth df.mvs
7073
include : OShapeFlatTB CAP 0 df.leftSB df.rightSB df.mvs ada adb gap
7174
include : DotAt df.middle (df.mvs / 2 + O) rBroadOn
7275
include : DotAt df.middle (CAP - df.mvs / 2 - O) rBroadOn
7376

7477
create-glyph 'cyrl/broadOn' 0x47B : glyph-proc
7578
define df : include : DivFrame [mix 1 para.diversityM 0.5] 3
7679
include : df.markSet.e
77-
local gap : Math.max (0.25 * (df.rightSB - df.leftSB)) : HSwToV (rBroadOn * Math.SQRT2)
78-
local ada : ArchDepthA * df.div
79-
local adb : ArchDepthB * df.div
80+
local dist : df.rightSB - df.leftSB
81+
local gap : Math.min
82+
Math.max (0.25 * dist) [HSwToV : Math.SQRT2 * rBroadOn]
83+
Math.max (dist - [HSwToV : 3 * df.mvs]) [HSwToV df.mvs]
84+
local ada : df.archDepthA SmallArchDepth df.mvs
85+
local adb : df.archDepthB SmallArchDepth df.mvs
8086
include : OShapeFlatTB XH 0 df.leftSB df.rightSB df.mvs ada adb gap
8187
include : DotAt df.middle (df.mvs / 2 + O) rBroadOn
8288
include : DotAt df.middle (XH - df.mvs / 2 - O) rBroadOn
@@ -183,15 +189,15 @@ glyph-block Letter-Latin-O : begin
183189
local ada : ArchDepthA * df.div
184190
local adb : ArchDepthB * df.div
185191
local innerDist : dist - [HSwToV : 5 * df.mvs]
186-
local arcXL1 : df.leftSB + innerDist * (1 / 4) + [HSwToV : 1 * df.mvs]
187-
local arcXR1 : df.leftSB + innerDist * (3 / 4) + [HSwToV : 4 * df.mvs]
192+
local arcXL : df.leftSB + innerDist * (1 / 4) + [HSwToV : 1 * df.mvs]
193+
local arcXR : df.leftSB + innerDist * (3 / 4) + [HSwToV : 4 * df.mvs]
188194
local heightGap : Math.min (df.mvs + (CAP - df.mvs * 4) / 5) (innerDist / 4 + df.mvs)
189195
local heightInner : CAP - 2 * heightGap
190196
local smInner : clamp (df.mvs * 1.5) (0.499 * heightInner) (ArchDepth * heightInner / CAP)
191-
local adaInner : [ArchDepthAOf smInner : arcXR1 - arcXL1 + df.leftSB * 2] * df.div
192-
local adbInner : [ArchDepthBOf smInner : arcXR1 - arcXL1 + df.leftSB * 2] * df.div
197+
local adaInner : [ArchDepthAOf smInner : arcXR - arcXL + df.leftSB * 2] * df.div
198+
local adbInner : [ArchDepthBOf smInner : arcXR - arcXL + df.leftSB * 2] * df.div
193199
include : OShapeFlatTB CAP 0 df.leftSB df.rightSB df.mvs ada adb gap
194-
include : OShapeFlatTB (CAP - heightGap) (0 + heightGap) arcXL1 arcXR1 df.mvs adaInner adbInner gapInner
200+
include : OShapeFlatTB (CAP - heightGap) (0 + heightGap) arcXL arcXR df.mvs adaInner adbInner gapInner
195201
include : VBar.m df.middle (df.mvs / 2) (CAP - df.mvs / 2) df.mvs
196202

197203
create-glyph 'romanHundredThousand' 0x2188 : glyph-proc

0 commit comments

Comments
 (0)