Optimize closed epsilon shapes under heavier weights. (#2534)

* Optimize closed epsilon shapes for heavier weights

* Unify parameters between beta symbol and beta.
This commit is contained in:
John McWilliams 2024-10-06 16:24:11 -04:00 committed by GitHub
parent a03ee9ff6e
commit b5acd21122
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 85 additions and 64 deletions

View file

@ -1 +1,5 @@
* Optimize glyphs for `rounded-serifless` and `rounded-serifed` variants for Capital Eszett (`ẞ`).
* Optimize glyphs for closed epsilon shapes (`U+025E`, `U+029A`).
* Optimize glyphs for cursive variants for Greek Lower Beta (`β`) and Cyrillic Lower Ve (`в`).
* Optimize glyphs for Volapük Ae/Oe/Ue (`U+A79A`..`U+A79F`).
* Optimize glyph for Cyrillic Lower Dzze (`U+A689`) under italics.

View file

@ -185,7 +185,9 @@ glyph-block Letter-Cyrillic-De : begin
local ze : CyrZe 1 sb XH Descender
left -- xZeLeft
right -- xZeRight
blend -- 0.7
hook -- Hook
overflow -- 0
stroke -- df.mvs
include : union [ze.Shape] [ze.AutoEndSerifL]

View file

@ -28,16 +28,16 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
define CLOSED-STEM 8
define StdBlend 0.65
define VolBlend 0.52
define VolBlend 0.56
define [SmallEpsilon] : with-params [
slabTop slabBot top bot
[blend StdBlend] [hook Hook]
[stroke : AdviceStroke2 2 3 (top - bot)] [overflow : HSwToV stroke]
[ada2 SmallArchDepthA] [adb2 SmallArchDepthB]
] : namespace
export : define [Dim] : begin
local stroke : AdviceStroke2 2 3 (top - bot)
local midx : mix SB RightSB blend
local midx : mix (SB + [HSwToV stroke] - overflow) (RightSB - [HSwToV stroke] + overflow) blend
local midy : mix bot top OverlayPos
local topHeight : top - bot
local midyHeight : midy - bot
@ -101,12 +101,13 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
glyph-block-export CyrZe
define [CyrZe] : with-params [
slabTop slabBot top bot [left SB] [right RightSB]
[blend StdBlend] [hook Hook] [stroke : AdviceStroke2 2 3 (top - bot)]
slabTop slabBot top bot
[left SB] [right RightSB] [blend StdBlend] [hook Hook]
[stroke : AdviceStroke2 2 3 (top - bot)] [overflow : HSwToV stroke]
[xo OX] [yo O] [op OverlayPos] [ada2 SmallArchDepthA] [adb2 SmallArchDepthB]
] : namespace
export : define [Dim] : begin
local midx : mix right left blend
local midx : mix (right - [HSwToV stroke] + overflow) (left + [HSwToV stroke] - overflow) blend
local midy : mix bot top op
local topHeight : top - bot
local midyHeight : midy - bot
@ -268,7 +269,7 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
create-glyph "cyrl/dzjeKomi.\(suffix)" : glyph-proc
include : MarkSet.e
local ze : CyrZe slabTop OPEN-VERTICAL XH 0 (hok -- SHook)
local ze : CyrZe slabTop OPEN-VERTICAL XH 0 (hoоk -- SHook)
include : ze.Shape
include : ze.AutoStartSerifL
include : CyrDescender.rSideJut (RightSB - OX * 2) 0
@ -335,7 +336,9 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
create-glyph 'epsilonClosed' 0x29A : glyph-proc
include : MarkSet.e
local eps : SmallEpsilon CLOSED-CIRCLE CLOSED-CIRCLE XH 0
blend -- 0.7
hook -- SHook
overflow -- 0
ada2 -- SmallArchDepthA
adb2 -- SmallArchDepthB
include : eps.Shape
@ -343,7 +346,9 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
create-glyph 'epsilonRevClosed' 0x25E : glyph-proc
include : MarkSet.e
local ze : CyrZe CLOSED-CIRCLE CLOSED-CIRCLE XH 0
blend -- 0.7
hook -- SHook
overflow -- 0
ada2 -- SmallArchDepthA
adb2 -- SmallArchDepthB
include : ze.Shape
@ -353,6 +358,7 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
local eps : SmallEpsilon CLOSED-CIRCLE CLOSED-CIRCLE CAP 0
blend -- VolBlend
hook -- Hook
overflow -- 0
ada2 -- ArchDepthA
adb2 -- ArchDepthB
include : eps.Shape
@ -362,6 +368,7 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
local eps : SmallEpsilon CLOSED-CIRCLE CLOSED-CIRCLE XH 0
blend -- VolBlend
hook -- SHook
overflow -- 0
ada2 -- SmallArchDepthA
adb2 -- SmallArchDepthB
include : eps.Shape
@ -373,6 +380,7 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
local eps : SmallEpsilon CLOSED-STEM CLOSED-STEM height 0
blend -- VolBlend
hook -- hook
overflow -- 0
ada2 -- ada2
adb2 -- adb2
define [object stroke] : eps.Dim
@ -383,6 +391,7 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
local eps : SmallEpsilon SLAB-INWARD CLOSED-STEM height 0
blend -- VolBlend
hook -- hook
overflow -- 0
ada2 -- ada2
adb2 -- adb2
define [object stroke] : eps.Dim
@ -393,6 +402,7 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
local eps : SmallEpsilon CLOSED-ROUND CLOSED-STEM height 0
blend -- VolBlend
hook -- hook
overflow -- 0
ada2 -- ada2
adb2 -- adb2
define [object stroke] : eps.Dim
@ -433,6 +443,7 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
local eps : SmallEpsilon OPEN-VERTICAL CLOSED-STEM height 0
blend -- VolBlend
hook -- hook
overflow -- 0
ada2 -- ada2
adb2 -- adb2
define [object stroke] : eps.Dim
@ -445,6 +456,7 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
local eps : SmallEpsilon OPEN-VERTICAL CLOSED-STEM height 0
blend -- VolBlend
hook -- hook
overflow -- 0
ada2 -- ada2
adb2 -- adb2
define [object stroke] : eps.Dim
@ -456,6 +468,7 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
local eps : SmallEpsilon OPEN-VERTICAL CLOSED-ROUND height 0
blend -- VolBlend
hook -- hook
overflow -- 0
ada2 -- ada2
adb2 -- adb2
define [object stroke] : eps.Dim
@ -467,6 +480,7 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
local eps : SmallEpsilon OPEN-VERTICAL SLAB-INWARD height 0
blend -- VolBlend
hook -- hook
overflow -- 0
ada2 -- ada2
adb2 -- adb2
define [object stroke] : eps.Dim

View file

@ -190,25 +190,26 @@ glyph-block Letter-Latin-Upper-B : begin
define [CursiveCyrveShape top] : glyph-proc
local stroke : AdviceStroke2 2 3 top
local mid : mix RightSB SB 0.65
local midy : top * HBarPos
local adb : top - [mix (midy + stroke / 2) (top - O - stroke) (ArchDepthA / (ArchDepthA + ArchDepthB))] + [HSwToV TanSlope] * stroke
local ada : [mix (stroke + O) (midy - stroke / 2) (ArchDepthA / (ArchDepthA + ArchDepthB))] - [HSwToV TanSlope] * stroke
local fine : stroke * CThin
local yMiddle : top * HBarPos
local adb : top - [mix (yMiddle + stroke / 2) (top - O - stroke) (ArchDepthA / (ArchDepthA + ArchDepthB))] + [HSwToV TanSlope] * stroke
local ada : [mix (stroke + O) (yMiddle - stroke / 2) (ArchDepthA / (ArchDepthA + ArchDepthB))] - [HSwToV TanSlope] * stroke
local xMidLeft : mix (RightSB - [HSwToV stroke]) (SB + [HSwToV stroke]) 0.7
local xMidArc : Math.max [mix xMidLeft RightSB 0.1] [mix SB RightSB 0.5]
include : dispiro
widths.lhs fine
flat mid (midy - (fine - stroke / 2)) [heading Rightward]
curl Middle (midy - (fine - stroke / 2)) [heading Rightward]
flat xMidLeft (yMiddle - (fine - stroke / 2)) [heading Rightward]
curl xMidArc (yMiddle - (fine - stroke / 2)) [heading Rightward]
archv
g4 (RightSB - (OX - O)) (top - adb) [widths.lhs stroke]
arch.lhs top
flat (SB + O) (top - SmallArchDepthA)
curl (SB + O) SmallArchDepthB
curl (SB + O) (0 + SmallArchDepthB)
arch.lhs 0
g4 (RightSB - (OX - O) - O * 2) (ada)
g4 (RightSB - (OX + O)) (0 + ada)
arcvh
flat Middle (midy + (fine - stroke / 2)) [widths.heading fine 0 Leftward]
curl mid (midy + (fine - stroke / 2)) [widths.heading fine 0 Leftward]
flat xMidArc (yMiddle + (fine - stroke / 2)) [widths.heading fine 0 Leftward]
curl xMidLeft (yMiddle + (fine - stroke / 2)) [widths.heading fine 0 Leftward]
create-glyph 'cyrl/ve.cursive' : glyph-proc
include : MarkSet.e
@ -241,7 +242,7 @@ glyph-block Letter-Latin-Upper-B : begin
define yMiddle : [mix 0 Ascender pBar] - Stroke * 0.7 # Bottom edge
define ada : ArchDepthAOf (ArchDepth * 0.75) (0.5 * Width)
define adb : ArchDepthBOf (ArchDepth * 0.75) (0.5 * Width)
define xMidLeft : mix (SB + [HSwToV Stroke]) (RightSB - [HSwToV Stroke]) 0.3
define xMidLeft : mix (RightSB - [HSwToV Stroke]) (SB + [HSwToV Stroke]) 0.7
define xMidArc : Math.max [mix xMidLeft RightSB 0.1] [mix SB RightSB 0.5]
include : dispiro
widths.rhs