Optimize glyph of Latin Upper Lambda with Stroke. (#2775)

This commit is contained in:
John McWilliams 2025-05-19 20:07:58 -04:00 committed by GitHub
parent 6a03c478fe
commit 10a21041b1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 44 additions and 23 deletions

2
changes/33.2.4.md Normal file
View file

@ -0,0 +1,2 @@
* Refine shape of the following characters:
- LATIN CAPITAL LETTER LAMBDA WITH STROKE (`U+A7DC`).

View file

@ -42,6 +42,8 @@ glyph-block Letter-Latin-Upper-Y : begin
HalfXStrand bodyType SLAB RightSB top Middle cross 0.1 0.4 0.28
include : tagged 'strokeVMid' : VBar.m Middle bot (cross + HalfStroke)
set-base-anchor 'overlay' Middle cross
set-base-anchor 'overlayOnExtension' Middle
[mix (bot + [if (slabType === SLAB-NONE || slabType === SLAB-BASE) 0 Stroke]) cross 0.5] + (Stroke - OverlayStroke) / 2
define [YenOverlayShape slabType] : glyph-proc
define { ks bot } : match slabType
@ -52,14 +54,14 @@ glyph-block Letter-Latin-Upper-Y : begin
define [YHookLeftHookedStroke top bot cross] : dispiro
widths.lhs
straight.right.start (SB - TailX / 3) (top - Stroke - O)
straight.right.start (SB - TailX / 3) (top - O - Stroke)
g4 (SB + TailX / 3) (top - TailY) [widths.lhs : AdviceStroke 2.75]
quadControls 0.55 0.7 32 unimportant
g4 (Middle - [HSwToV HalfStroke]) cross [widths.lhs : AdviceStroke 3.5]
define [YHookRightHookedStroke top bot cross] : dispiro
widths.rhs
straight.left.start (RightSB + TailX / 3) (top - Stroke - O)
straight.left.start (RightSB + TailX / 3) (top - O - Stroke)
g4 (RightSB - TailX / 3) (top - TailY) [widths.rhs : AdviceStroke 2.75]
quadControls 0.55 0.7 32 unimportant
g4 (Middle + [HSwToV HalfStroke]) cross [widths.rhs : AdviceStroke 3.5]
@ -92,8 +94,7 @@ glyph-block Letter-Latin-Upper-Y : begin
create-glyph "grek/Upsilon.\(suffix)" : glyph-proc
include [refer-glyph "Y.\(suffix)"] AS_BASE ALSO_METRICS
include : SetGrekUpperTonos
if (slabType === SLAB-NONE || slabType === SLAB-BASE) OX (OX - SideJut)
include : SetGrekUpperTonos (OX - [if (slabType === SLAB-NONE || slabType === SLAB-BASE) 0 SideJut])
create-glyph "smcpY.\(suffix)" : glyph-proc
include : MarkSet.e
@ -129,10 +130,7 @@ glyph-block Letter-Latin-Upper-Y : begin
link-reduced-variant 'Y/sansSerif' 'Y' MathSansSerif
select-variant 'smcpY' 0x28F (follow -- 'Y')
select-variant 'YHookTop' 0x1B3 (follow -- 'Y')
select-variant 'Y/LambdaBase' (shapeFrom -- 'Y')
CreateAccentedComposition 'YBar/LambdaBase' null 'Y/LambdaBase' 'barOver'
CreateTurnedLetter 'turnY/sansSerif' 0x2144 'Y/sansSerif' HalfAdvance (CAP / 2)
CreateAccentedComposition 'YStrokeBottom' null 'Y' 'barOverOnExtension'
select-variant 'grek/Upsilon' 0x3A5 (follow -- 'Y')
link-reduced-variant 'grek/Upsilon/sansSerif' 'grek/Upsilon' MathSansSerif (follow -- 'Y/sansSerif')
@ -143,18 +141,19 @@ glyph-block Letter-Latin-Upper-Y : begin
CreateAccentedComposition 'cyrl/Uo' 0x4B0 'cyrl/Ue' 'barOver'
CreateAccentedComposition 'cyrl/uo' 0x4B1 'cyrl/ue' 'barOver'
create-glyph 'YStroke/Overlay' : HOverlayBar ([mix 0 SB 0.5]) ([mix Width RightSB 0.5]) [mix 0 CAP 0.75]
create-glyph 'YStroke/Overlay' : HOverlayBar [mix 0 SB 0.5] [mix Width RightSB 0.5] [mix 0 CAP 0.75]
derive-composites 'YStroke' 0x24E 'Y' 'YStroke/Overlay'
CreateTurnedLetter 'latn/Lambda' 0xA7DA 'Y/LambdaBase' HalfAdvance (CAP / 2)
CreateTurnedLetter 'latn/LambdaStroke' 0xA7DC 'YBar/LambdaBase' HalfAdvance (CAP / 2)
CreateTurnedLetter 'latn/Lambda' 0xA7DA 'Y' HalfAdvance (CAP / 2)
CreateTurnedLetter 'latn/LambdaStroke' 0xA7DC 'YStrokeBottom' HalfAdvance (CAP / 2)
CreateTurnedLetter 'turnY/sansSerif' 0x2144 'Y/sansSerif' HalfAdvance (CAP / 2)
select-variant 'currency/yenSign' 0xA5 (follow -- 'Y')
# Blackboard
glyph-block-import Letter-Blackboard : BBS BBD
create-glyph 'mathbb/Y' 0x1D550 : glyph-proc
local yCross : CAP * 0.4
local yCross : YCrossPos CAP 0
include : MarkSet.capital
include : HBar.t SB (SB + BBD) CAP BBS

View file

@ -99,6 +99,11 @@ glyph-block Mark-Overlay : begin
include : HOverlayBar (markMiddle - LongJut * 0.75) (markMiddle + LongJut * 0.75) (XH / 2 + 0.5 * gap)
include : HOverlayBar (markMiddle - LongJut * 0.75) (markMiddle + LongJut * 0.75) (XH / 2 - 0.5 * gap)
create-glyph 'barOverOnExtension' : glyph-proc
set-width 0
set-mark-anchor 'overlayOnExtension' markMiddle (XH / 2) markMiddle (XH / 2)
include : HOverlayBar (markMiddle - LongJut * 0.75) (markMiddle + LongJut * 0.75) (XH / 2)
create-glyph 'shortSlashOver' : glyph-proc
set-width 0
set-mark-anchor 'overlay' markMiddle (XH / 2) markMiddle (XH / 2)

View file

@ -6165,7 +6165,6 @@ descriptionAffix = "straight shape"
selectorAffix."grek/Lambda" = "straight"
selectorAffix."grek/Lambda/sansSerif" = "straight"
selectorAffix."cyrl/Yus" = "straight"
selectorAffix."Y/LambdaBase" = "straight"
[prime.capital-lambda.variants-buildup.stages.body.curly]
rank = 2
@ -6173,7 +6172,6 @@ descriptionAffix = "curly shape"
selectorAffix."grek/Lambda" = "curly"
selectorAffix."grek/Lambda/sansSerif" = "curly"
selectorAffix."cyrl/Yus" = "curly"
selectorAffix."Y/LambdaBase" = "curly"
[prime.capital-lambda.variants-buildup.stages.serifs.serifless]
rank = 1
@ -6182,7 +6180,6 @@ descriptionJoiner = "without"
selectorAffix."grek/Lambda" = "serifless"
selectorAffix."grek/Lambda/sansSerif" = "serifless"
selectorAffix."cyrl/Yus" = ""
selectorAffix."Y/LambdaBase" = "serifless"
[prime.capital-lambda.variants-buildup.stages.serifs.top-serifed]
rank = 2
@ -6190,7 +6187,6 @@ descriptionAffix = "serifs at top"
selectorAffix."grek/Lambda" = "topSerifed"
selectorAffix."grek/Lambda/sansSerif" = "serifless"
selectorAffix."cyrl/Yus" = ""
selectorAffix."Y/LambdaBase" = "baseSerifed"
[prime.capital-lambda.variants-buildup.stages.serifs.base-serifed]
rank = 3
@ -6198,7 +6194,6 @@ descriptionAffix = "serifs at base"
selectorAffix."grek/Lambda" = "baseSerifed"
selectorAffix."grek/Lambda/sansSerif" = "serifless"
selectorAffix."cyrl/Yus" = ""
selectorAffix."Y/LambdaBase" = "serifed"
[prime.capital-lambda.variants-buildup.stages.serifs.tri-serifed]
rank = 4
@ -6206,7 +6201,6 @@ descriptionAffix = "serifs at both top and base"
selectorAffix."grek/Lambda" = "triSerifed"
selectorAffix."grek/Lambda/sansSerif" = "serifless"
selectorAffix."cyrl/Yus" = ""
selectorAffix."Y/LambdaBase" = "serifed"
@ -9454,6 +9448,7 @@ i = "hooky"
j = "serifed"
k = "straight-serifless"
l = "zshaped"
r = "serifless"
t = "bent-hook-short-neck"
u = "toothed-serifless"
v = "straight-serifless"
@ -9685,6 +9680,7 @@ j = "serifed"
k = "symmetric-touching-serifless"
l = "serifed"
q = "top-cut-straight-serifless"
r = "serifless"
t = "bent-hook-short-neck"
u = "toothed-serifless"
v = "straight-serifless"
@ -9763,6 +9759,7 @@ d = "toothed-serifed"
f = "flat-hook-serifed"
k = "symmetric-touching-serifed"
q = "top-cut-straight-serifed"
r = "serifed"
u = "toothed-serifed"
v = "straight-serifed"
w = "straight-serifed"
@ -9791,6 +9788,7 @@ a = "single-storey-top-cut-serifed"
f = "flat-hook-tailed"
k = "cursive-top-left-and-bottom-right-serifed"
l = "tailed-serifed"
r = "top-serifed"
u = "toothed-motion-serifed"
v = "straight-motion-serifed"
w = "straight-motion-serifed"
@ -9829,6 +9827,7 @@ i = "serifed"
j = "flat-hook-serifed"
k = "straight-serifless"
l = "serifed-flat-tailed"
r = "serifless"
t = "flat-hook-short-neck"
u = "toothed-serifless"
v = "straight-serifless"
@ -10281,6 +10280,7 @@ i = "serifed"
j = "serifed"
k = "curly-serifless"
l = "zshaped"
r = "serifless"
t = "bent-hook"
u = "toothed-serifless"
v = "curly-serifless"
@ -10360,6 +10360,7 @@ a = "double-storey-serifed"
d = "toothed-serifed"
f = "serifed"
k = "curly-serifed"
r = "serifed"
u = "toothed-serifed"
v = "curly-serifed"
w = "curly-serifed"
@ -10388,6 +10389,7 @@ micro-sign = "toothed-serifed"
[composite.ss08.slab-override.italic]
k = "curly-top-left-and-bottom-right-serifed"
r = "top-serifed"
u = "toothed-motion-serifed"
v = "curly-motion-serifed"
w = "curly-motion-serifed"
@ -10544,6 +10546,7 @@ j = "flat-hook-serifed"
k = "symmetric-connected-serifless"
l = "hooky"
q = "straight-serifless"
r = "serifless"
t = "flat-hook"
u = "toothed-serifless"
v = "straight-serifless"
@ -10605,6 +10608,7 @@ i = "serifed"
k = "symmetric-connected-serifed"
l = "serifed"
q = "straight-serifed"
r = "serifed"
u = "toothed-serifed"
v = "straight-serifed"
w = "rounded-vertical-sides-serifed"
@ -10630,6 +10634,7 @@ i = "serifed-flat-tailed"
k = "symmetric-connected-top-left-and-bottom-right-serifed"
l = "serifed-flat-tailed"
q = "top-cut-straight-serifed"
r = "top-serifed"
u = "tailed-motion-serifed"
v = "straight-motion-serifed"
w = "rounded-vertical-sides-motion-serifed"
@ -10671,6 +10676,8 @@ at = "threefold"
dollar = "through-cap"
cent = "through-cap"
percent = "rings-continuous-slash"
question = "smooth"
pilcrow = "high"
[composite.ss11.slab-override.design]
two = "straight-neck-serifed"
@ -10968,6 +10975,7 @@ i = "serifed"
j = "flat-hook-serifed"
k = "symmetric-connected-serifless"
l = "serifed-flat-tailed"
r = "serifless"
t = "flat-hook-short-neck"
u = "toothless-rounded-serifless"
v = "straight-serifless"
@ -11042,6 +11050,7 @@ d = "toothed-serifed"
f = "flat-hook-serifed"
g = "single-storey-flat-hook-serifed"
k = "symmetric-connected-serifed"
r = "serifed"
u = "toothless-rounded-serifed"
v = "straight-serifed"
w = "straight-flat-top-serifed"
@ -11072,6 +11081,7 @@ a = "single-storey-tailed"
f = "flat-hook-tailed"
g = "single-storey-flat-hook-serifless"
k = "symmetric-connected-top-left-and-bottom-right-serifed"
r = "top-serifed"
u = "toothless-rounded-motion-serifed"
v = "straight-motion-serifed"
w = "straight-flat-top-motion-serifed"
@ -11580,6 +11590,7 @@ j = "serifed"
k = "symmetric-connected-serifless"
l = "serifed"
q = "earless-corner-straight-serifless"
r = "serifless"
t = "bent-hook"
u = "toothed-serifless"
v = "straight-serifless"
@ -11638,6 +11649,7 @@ d = "toothed-serifed"
f = "serifed-crossbar-at-x-height"
k = "symmetric-connected-serifed"
q = "earless-corner-straight-serifed"
r = "serifed"
u = "toothed-serifed"
v = "straight-serifed"
w = "straight-serifed"
@ -11664,6 +11676,7 @@ micro-sign = "tailed-serifed"
[composite.ss18.slab-override.italic]
f = "extended-crossbar-at-x-height"
k = "symmetric-connected-top-left-and-bottom-right-serifed"
r = "top-serifed"
u = "toothed-motion-serifed"
v = "straight-motion-serifed"
w = "straight-motion-serifed"
@ -11699,11 +11712,13 @@ w = "curly-serifless"
x = "curly-serifless"
y = "curly-serifless"
z = "curly-serifless"
lower-eth = "curly-bar"
capital-delta = "curly"
lower-kappa = "curly-serifless"
capital-lambda = "curly-serifless"
lower-lambda = "curly"
lower-chi = "curly-serifless"
partial-derivative = "curly-bar"
cyrl-capital-u = "curly-serifless"
cyrl-u = "curly-serifless"
cyrl-capital-ya = "curly-serifless"