Skip to content

Commit 70554e6

Browse files
Make ɚ/ɝ slightly wider under Quasi-Proportional. (#2636)
1 parent 52c5e55 commit 70554e6

File tree

6 files changed

+63
-62
lines changed

6 files changed

+63
-62
lines changed

changes/32.4.0.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
* Add `curved` variant for `` (#2045).
22
* Add `top-cut` variants for `a`/`g`/`q`.
33
* Add `bottom-cut` variants for `b`.
4+
Make certain characters slightly wider under Quasi-Proportional. Affected characters:
5+
- LATIN SMALL LETTER SCHWA WITH HOOK (`U+025A`).
6+
- LATIN SMALL LETTER REVERSED OPEN E WITH HOOK (`U+025D`).
47
* Add characters:
5-
- CURVED STEM PARAGRAPH SIGN ORNAMENT (`U+2761`).
8+
- CURVED STEM PARAGRAPH SIGN ORNAMENT (`U+2761`).

packages/font-glyphs/src/auto-build/composite.ptl

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1669,35 +1669,6 @@ glyph-block Autobuild-Pnonetic-Ligatures : begin
16691669
createPhoneticLigatures ToLetter 'thSlash' 1 2 stdShrink 1 : list
16701670
list 0x1D7A { 't/phoneticLeft1' 'h' 'wideSlash' } 'b'
16711671

1672-
glyph-block Autobuild-Rhotic : begin
1673-
glyph-block-import Mark-Shared-Metrics : markFine
1674-
glyph-block-import CommonShapes
1675-
glyph-block-import Common-Derivatives
1676-
glyph-block-import Recursive-Build : Widen
1677-
glyph-block-import Letter-Latin-Rhotic : ErTail
1678-
glyph-block-import Autobuild-Transformed-Shared : extendRelatedGlyphs link-relations
1679-
1680-
define [createRhotics groupName yTail _records] : begin
1681-
local {records relSets targetNameMap} : extendRelatedGlyphs "rhotic_\(groupName)" _records
1682-
local pendingGlyphs : records.map : [record] => record.1
1683-
local thinFont : Widen pendingGlyphs 0.85 1
1684-
foreach {unicode glyphid pri} [items-of records]
1685-
if [not : query-glyph targetNameMap.(glyphid)]
1686-
create-glyph (targetNameMap.(glyphid)) unicode : glyph-proc
1687-
if [not : thinFont.queryByName glyphid] : begin
1688-
throw : new Error "Cannot find glyph \(glyphid)"
1689-
include : MarkSet.e
1690-
include : thinFont.queryByName glyphid
1691-
include : ErTail (Width * 0.85 - SB - [HSwToV : 1.25 * markFine]) yTail (XH * 0.2)
1692-
1693-
link-relations relSets
1694-
return { targetNameMap records }
1695-
1696-
createRhotics 'er' (XH / 2)
1697-
list { 0x25A 'schwa' }
1698-
createRhotics 'revLatinEpsilonEr' (XH * [mix 0.65 1 0.5])
1699-
list { 0x25D 'latn/epsilonRev' }
1700-
17011672
glyph-block Autobuild-Double-Emotions : begin
17021673
glyph-block-import CommonShapes
17031674
glyph-block-import Common-Derivatives

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

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,15 @@ glyph-module
99
glyph-block Letter-Greek-Lower-Epsilon : begin
1010
glyph-block-import CommonShapes
1111
glyph-block-import Common-Derivatives
12+
glyph-block-import Mark-Shared-Metrics : markFine
1213
glyph-block-import Mark-Adjustment : ExtendBelowBaseAnchors
1314
glyph-block-import Letter-Shared : CreateTurnedLetter
1415
glyph-block-import Letter-Shared-Shapes : SerifedArcStart SerifedArcEnd SerifFrame
1516
glyph-block-import Letter-Shared-Shapes : InwardSlabArcStart InwardSlabArcEnd
1617
glyph-block-import Letter-Shared-Shapes : ArcStartSerif ArcEndSerif
1718
glyph-block-import Letter-Shared-Shapes : OBarLeft OBarRight
18-
glyph-block-import Letter-Shared-Shapes : DToothlessRise RetroflexHook CyrDescender UpwardHookShape
19+
glyph-block-import Letter-Shared-Shapes : DToothlessRise RetroflexHook CyrDescender
20+
glyph-block-import Letter-Shared-Shapes : UpwardHookShape RhoticHookShape
1921

2022
define SLAB-NONE 0
2123
define SLAB-CLASSICAL 1
@@ -262,6 +264,20 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
262264
VBar.m [arch.adjust-x.bot Middle] desc (Stroke + O) VJutStroke
263265
zeNoO.ShapeMask
264266

267+
create-glyph "cyrl/zeRhoticHook.\(suffix)" : glyph-proc
268+
local df : include : DivFrame para.diversityM 1
269+
include : df.markSet.e
270+
local divSub : Math.min 1 : 0.85 * para.diversityM
271+
local dfSub : DivFrame divSub 2
272+
local stroke : AdviceStroke2 2 3 XH divSub
273+
local ze : CyrZe slabTop slabBot XH 0
274+
left -- dfSub.leftSB
275+
right -- dfSub.rightSB
276+
hook -- SHook
277+
stroke -- stroke
278+
include : union [ze.Shape] [ze.AutoStartSerifL] [ze.AutoEndSerifL]
279+
include : RhoticHookShape (dfSub.rightSB - [HSwToV : 1.25 * markFine]) df.width (XH * 0.825) (XH * 0.2)
280+
265281
create-glyph "cyrl/DzjeKomi.\(suffix)" : glyph-proc
266282
include : MarkSet.capital
267283
local ze : CyrZe slabTop OPEN-VERTICAL CAP 0 (hook -- Hook)
@@ -537,7 +553,6 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
537553
include : MarkSet.e
538554
include : Base df XH Slabs SHook SmallArchDepthA SmallArchDepthB
539555

540-
541556
select-variant 'AeVolapuk' 0xA79A (follow -- [conditional-follow SLAB 'a/singleStorey/autoSerifed/slab' 'a/singleStorey/autoSerifed/sans'])
542557
select-variant 'aeVolapuk' 0xA79B (follow -- [conditional-follow SLAB 'a/singleStorey/autoSerifed/slab' 'a/singleStorey/autoSerifed/sans'])
543558
select-variant 'UeVolapuk' 0xA79E (follow -- 'u')
@@ -559,6 +574,7 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
559574

560575
alias 'latn/EpsilonRev' 0xA7AB 'cyrl/Ze'
561576
alias 'latn/epsilonRev' 0x25C 'cyrl/ze'
577+
select-variant 'latn/epsilonRevRhoticHook' 0x25D (shapeFrom -- 'cyrl/zeRhoticHook') (follow -- 'cyrl/ze')
562578

563579
select-variant 'cyrl/KsiBase' (follow -- 'cyrl/ZeTopSerifOnly')
564580
select-variant 'cyrl/ksiBase' (follow -- 'cyrl/zeTopSerifOnly')

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

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -8,30 +8,14 @@ glyph-module
88
glyph-block Letter-Latin-Rhotic : begin
99
glyph-block-import CommonShapes
1010
glyph-block-import Common-Derivatives
11-
glyph-block-import Mark-Shared-Metrics : markFine
12-
13-
glyph-block-export ErTail
14-
define [ErTail left y rise w dohook] : glyph-proc
15-
local right Width
16-
local mid : mix left right 0.5
17-
local sw : fallback w [AdviceStroke 5]
18-
include : dispiro
19-
widths.rhs sw
20-
g2 (left - [HSwToV : 0.5 * sw]) (y)
21-
g2 (mid - [HSwToV : 0.5 * sw]) (y + rise)
22-
include : dispiro
23-
widths.center sw
24-
flat mid (y + rise) [heading Downward]
25-
curl mid (y + [if dohook 0 (rise - 1)]) [heading Downward]
26-
if dohook {[hookend (y - rise) (sw -- sw)]} {[arcvh]}
27-
g4 (right - [if dohook sw 0]) (y - [if dohook (rise * 0.5) rise]) [if dohook nothing [heading Rightward]]
11+
glyph-block-import Letter-Shared-Shapes : RhoticHookShape
2812

2913
create-glyph 'rhoticHook' 0x2DE : glyph-proc
30-
include : ErTail (-[HSwToV Stroke]) (XH / 2) (XH * 0.3) Stroke true
14+
include : RhoticHookShape (-[HSwToV Stroke]) Width (XH / 2) (XH * 0.3) Stroke true
3115

3216
create-glyph 'rhoticHook/sup' : glyph-proc
3317
local sw : [AdviceStroke 3.5] / 0.7
34-
include : ErTail (-[HSwToV Stroke] - 3 * SB) (XH / 2) (XH * 0.3) sw true
18+
include : RhoticHookShape (-[HSwToV Stroke] - 3 * SB) Width (XH / 2) (XH * 0.3) sw true
3519
include : Ungizmo
3620
include : Translate (-Middle) (-CAP)
3721
include : Scale 0.7

packages/font-glyphs/src/letter/latin/lower-e.ptl

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ glyph-block Letter-Latin-Lower-E : begin
99
glyph-block-import CommonShapes
1010
glyph-block-import Common-Derivatives
1111
glyph-block-import Letter-Shared : CreateSelectorVariants DefineSelectorGlyph CreateTurnedLetter
12-
glyph-block-import Letter-Shared-Shapes : FlatHookDepth RetroflexHook
12+
glyph-block-import Letter-Shared-Shapes : FlatHookDepth RetroflexHook RhoticHookShape
1313
glyph-block-import Letter-Shared-Shapes : SerifedArcEnd InwardSlabArcEnd ArcEndSerif
1414
glyph-block-import Mark-Shared-Metrics : markExtend markStroke markStress markFine
1515
glyph-block-import Mark-Above : aboveMarkTop aboveMarkBot aboveMarkMid aboveMarkStack
@@ -235,6 +235,19 @@ glyph-block Letter-Latin-Lower-E : begin
235235
include [refer-glyph "e.\(suffix)"] AS_BASE ALSO_METRICS
236236
include : FlipAround Middle (XH / 2)
237237

238+
create-glyph "schwaRhoticHook.\(suffix)" : glyph-proc
239+
local df : include : DivFrame para.diversityM 1
240+
include : df.markSet.e
241+
local divSub : Math.min 1 : 0.85 * para.diversityM
242+
local dfSub : DivFrame divSub 2
243+
local stroke : AdviceStroke2 2 3 XH divSub
244+
include : Body dfSub XH
245+
stroke -- stroke
246+
ada -- [dfSub.archDepthA SmallArchDepth stroke]
247+
adb -- [dfSub.archDepthB SmallArchDepth stroke]
248+
include : FlipAround dfSub.middle (XH / 2)
249+
include : RhoticHookShape (dfSub.rightSB - [HSwToV : 1.25 * markFine]) df.width (XH * 0.5) (XH * 0.2)
250+
238251
create-glyph "schwaRetroflexHook.\(suffix)" : glyph-proc
239252
local df : include : DivFrame para.diversityM 1
240253
include : df.markSet.e
@@ -340,6 +353,7 @@ glyph-block Letter-Latin-Lower-E : begin
340353

341354
select-variant 'Schwa' 0x18F
342355
select-variant 'schwa' 0x259
356+
select-variant 'schwaRhoticHook' 0x25A (follow -- 'schwa')
343357
select-variant 'schwaRetroflexHook' 0x1D95 (follow -- 'schwa')
344358

345359
select-variant 'eRev' 0x258 (follow -- 'e')

packages/font-glyphs/src/letter/shared.ptl

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -160,8 +160,7 @@ glyph-block Letter-Shared-Shapes : begin
160160
flat (x + hookTurn) (high - overshoot) [heading Rightward]
161161
curl (x + hookDepth + sw * TanSlope) (high - overshoot)
162162

163-
glyph-block-export DToothlessRise
164-
glyph-block-export DMBlend
163+
glyph-block-export DToothlessRise DMBlend
165164
define DToothlessRise : Hook * 0.25 + Stroke / 16
166165
define DMBlend 0.80
167166

@@ -589,7 +588,7 @@ glyph-block Letter-Shared-Shapes : begin
589588
glyph-block-export ArcStartSerifDepth
590589
define [ArcStartSerifDepth hook] : hook - 0
591590

592-
define [ArcStartInwardSerifDepth hook stroke] : Math.max hook (DToothlessRise + stroke)
591+
define [ArcStartInwardSerifDepth hook stroke] : Math.max hook : DToothlessRise + stroke
593592

594593
glyph-block-export : ArcStartSerif
595594
define ArcStartSerif : namespace
@@ -641,8 +640,8 @@ glyph-block Letter-Shared-Shapes : begin
641640
define dxTurn : [HSwToV : 0.5 * sw] + rIn + 0.5 * sign * TanSlope * fine
642641
define dxTailStart : dxTurn + sinAngle * (r * [mix 1 HVContrast sinAngle])
643642
define dyTailStart : (rIn + fine) - cosAngle * r
644-
define dxDepth : (depth - 0.25 * sw) * +dSinAngle
645-
define dyDepth : (depth - 0.25 * sw) * -dCosAngle
643+
define dxDepth : (depth - 0.25 * sw) * (+dSinAngle)
644+
define dyDepth : (depth - 0.25 * sw) * (-dCosAngle)
646645
return : list
647646
g4.[if (sign > 0) "right" "left"].mid
648647
cx + sign * dxTurn
@@ -688,7 +687,7 @@ glyph-block Letter-Shared-Shapes : begin
688687
define [JutIn left right jut swRef hSplit] : begin
689688
local ink : HSwToV swRef
690689
local gap : (right - left - hSplit * ink) / (hSplit - 1)
691-
Math.min jut (0.5 * ink + [Math.max (Stroke * TanSlope) (0.375 * gap)])
690+
Math.min jut : 0.5 * ink + [Math.max (Stroke * TanSlope) (0.375 * gap)]
692691

693692
class CSerifFrame
694693
public [new top bot left right swRef swSerif div hSplit fForceSymmetric] : begin
@@ -707,7 +706,7 @@ glyph-block Letter-Shared-Shapes : begin
707706

708707

709708
local jutFS MidJutSide
710-
local jut : mix [HSwToV : 0.5 * swRef] Jut [Math.min 1 : div * 2.25 / hSplit]
709+
local jut : mix [HSwToV : 0.5 * swRef] Jut : Math.min 1 : div * 2.25 / hSplit
711710
local sideJut : jut - 0.5 * ink
712711

713712
local jutIn : if fForceSymmetric jut : JutIn left right jut swRef hSplit
@@ -824,6 +823,20 @@ glyph-block Letter-Shared-Shapes : begin
824823
flat right ada
825824
curl right yend [heading Upward]
826825

826+
glyph-block-export RhoticHookShape
827+
define [RhoticHookShape] : with-params [left right y rise [sw [AdviceStroke 5]] [doHook false]] : glyph-proc
828+
local mid : mix left right 0.5
829+
include : dispiro
830+
widths.rhs sw
831+
g2 (left - [HSwToV : 0.5 * sw]) (y)
832+
g2 (mid - [HSwToV : 0.5 * sw]) (y + rise)
833+
include : dispiro
834+
widths.center sw
835+
flat mid (y + rise) [heading Downward]
836+
curl mid (y + [if doHook 0 (rise - 1)]) [heading Downward]
837+
if doHook {[hookend (y - rise) (sw -- sw)]} {[arcvh]}
838+
g4 (right - [if doHook sw 0]) (y - [if doHook (rise * 0.5) rise]) [if doHook nothing [heading Rightward]]
839+
827840
# Generic "connected" vertical hooks
828841
glyph-block-export VerticalHook
829842
define VerticalHook : namespace
@@ -941,7 +954,7 @@ glyph-block Letter-Shared-Shapes : begin
941954
xDepth -- (-TailX)
942955
yDepth -- TailY
943956
sw -- sw
944-
yExtension -- [Math.max 0 (yAttach + yOverflow - y + (fullDepth - TailY))]
957+
yExtension -- [Math.max 0 : yAttach + yOverflow - y + (fullDepth - TailY)]
945958
if maskOut maskOut [no-shape]
946959

947960
# Retroflex hooks
@@ -957,7 +970,7 @@ glyph-block Letter-Shared-Shapes : begin
957970
xDepth -- TailX
958971
yDepth -- TailY
959972
sw -- sw
960-
yExtension -- [Math.max 0 (yAttach + yOverflow - y + (fullDepth - TailY))]
973+
yExtension -- [Math.max 0 : yAttach + yOverflow - y + (fullDepth - TailY)]
961974

962975
# Cyrillic "Middle Hook" Characters
963976
glyph-block-export MidHook
@@ -983,7 +996,7 @@ glyph-block Letter-Shared-Shapes : begin
983996
ada -- ArchDepthA
984997
adb -- ArchDepthB
985998
sw -- df.mvs
986-
xDepth -- (-[Math.max [HSwToV df.mvs] : Math.min HookX (0.5 * (df.rightSB - df.leftSB - [HSwToV : 2 * df.mvs]))])
999+
xDepth -- (-[Math.max [HSwToV df.mvs] : Math.min HookX : 0.5 * (df.rightSB - df.leftSB) - [HSwToV df.mvs]])
9871000

9881001
# Hook for Eng shape
9891002
glyph-block-export EngHook

0 commit comments

Comments
 (0)