Fix seam in Cyrillic Capital/Lower Zhwe. (#2527)

This commit is contained in:
John McWilliams 2024-10-03 19:38:22 -04:00 committed by GitHub
parent fdcae239ed
commit 9a01ef12e5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 115 additions and 63 deletions

View file

@ -6,3 +6,4 @@
* Optimize glyph for Tonos Above (`U+0384`) in accented Greek letters. * Optimize glyph for Tonos Above (`U+0384`) in accented Greek letters.
* Optimize stroke width of bar for split bowl variants of Cyrillic Lower Ef (`ф`). * Optimize stroke width of bar for split bowl variants of Cyrillic Lower Ef (`ф`).
* Optimize glyph for Cyrillic Capital Ef (`Ф`) under Bulgarian locale (`'BGR '`) under slab. * Optimize glyph for Cyrillic Capital Ef (`Ф`) under Bulgarian locale (`'BGR '`) under slab.
* Fix seam in glyphs of Cyrillic Capital/Small Letter Zhwe (`U+A684`..`U+A685`).

View file

@ -121,7 +121,13 @@ glyph-block Letter-Cyrillic-De : begin
local sw : AdviceStroke 2.5 ((sr - sl + 2 * SB) / Width) local sw : AdviceStroke 2.5 ((sr - sl + 2 * SB) / Width)
local shapeBot : de.desc - 0.5 * sw local shapeBot : de.desc - 0.5 * sw
local hook : Hook * (0 - shapeBot) / CAP local hook : Hook * (0 - shapeBot) / CAP
local ze : CyrZe 3 sb sw shapeBot sl sr 0.65 hook sw (0.5 * O) (op -- 0.5) local ze : CyrZe 3 sb sw shapeBot
left -- sl
right -- sr
hook -- hook
stroke -- sw
xo -- 0.5 * O
op -- 0.5
return : union [ze.Shape] [ze.AutoEndSerifL] return : union [ze.Shape] [ze.AutoEndSerifL]
create-glyph "cyrl/Dzze.\(suffix)" : glyph-proc create-glyph "cyrl/Dzze.\(suffix)" : glyph-proc
@ -176,7 +182,11 @@ glyph-block Letter-Cyrillic-De : begin
local xZeLeft : dfLeft.leftSB + df.width - dfLeft.width + OX local xZeLeft : dfLeft.leftSB + df.width - dfLeft.width + OX
local xZeRight : dfLeft.rightSB + df.width - dfLeft.width - OX local xZeRight : dfLeft.rightSB + df.width - dfLeft.width - OX
local ze : CyrZe 1 sb XH Descender xZeLeft xZeRight 0.65 Hook df.mvs local ze : CyrZe 1 sb XH Descender
left -- xZeLeft
right -- xZeRight
hook -- Hook
stroke -- df.mvs
include : union [ze.Shape] [ze.AutoEndSerifL] include : union [ze.Shape] [ze.AutoEndSerifL]
select-variant 'cyrl/Dzze' 0xA688 (follow -- 'cyrl/ZeBottomSerifOnly') select-variant 'cyrl/Dzze' 0xA688 (follow -- 'cyrl/ZeBottomSerifOnly')

View file

@ -53,7 +53,12 @@ glyph-block Letter-Cyrillic-Dzzhe-Zhwe : begin
do "ze subglyph" do "ze subglyph"
define [CyrZhweZeShape slabTop slabBot df top hook] : glyph-proc define [CyrZhweZeShape slabTop slabBot df top hook] : glyph-proc
local [object subDf sw] : SubDfDimBy4 0 2 df OX local [object subDf sw] : SubDfDimBy4 0 2 df OX
local ze : CyrZe slabTop slabBot top 0 subDf.leftSB subDf.rightSB 0.65 hook sw (xo -- 0.33 * OX) local ze : CyrZe slabTop slabBot top 0
left -- subDf.leftSB
right -- subDf.rightSB
hook -- hook
stroke -- sw
xo -- 0.33 * OX
include : ze.Shape include : ze.Shape
include : ze.AutoStartSerifL include : ze.AutoStartSerifL
include : ze.AutoEndSerifL include : ze.AutoEndSerifL
@ -85,8 +90,14 @@ glyph-block Letter-Cyrillic-Dzzhe-Zhwe : begin
define [ZhweZheShape legShape fSlab fMidSlab df top hook] : glyph-proc define [ZhweZheShape legShape fSlab fMidSlab df top hook] : glyph-proc
local [object subDf sw] : SubDfDimBy4 0 2 df OX local [object subDf sw] : SubDfDimBy4 0 2 df OX
local ze : CyrZe 0 0 top 0 subDf.leftSB subDf.rightSB 0.65 hook (0.5 * sw) local zeNoO : CyrZe 0 0 top 0
include : difference [CyrRightZheShape legShape fSlab fMidSlab df top subDf.middle] [ze.ShapeMask] left -- subDf.leftSB
right -- subDf.rightSB
hook -- hook
stroke -- 0.5 * sw
xo -- 0
yo -- 0
include : difference [CyrRightZheShape legShape fSlab fMidSlab df top subDf.middle] [zeNoO.ShapeMask]
glyph-block-import Letter-Cyrillic-De : CyrDeItalicShapeT glyph-block-import Letter-Cyrillic-De : CyrDeItalicShapeT
define [DzzheZheItalicShape legShape fSlab fMidSlab df top] : glyph-proc define [DzzheZheItalicShape legShape fSlab fMidSlab df top] : glyph-proc

View file

@ -31,7 +31,8 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
define VolBlend 0.52 define VolBlend 0.52
define [SmallEpsilon] : with-params [ define [SmallEpsilon] : with-params [
slabTop slabBot top bot blend hook slabTop slabBot top bot
[blend StdBlend] [hook Hook]
[ada2 SmallArchDepthA] [adb2 SmallArchDepthB] [ada2 SmallArchDepthA] [adb2 SmallArchDepthB]
] : namespace ] : namespace
export : define [Dim] : begin export : define [Dim] : begin
@ -100,7 +101,8 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
glyph-block-export CyrZe glyph-block-export CyrZe
define [CyrZe] : with-params [ define [CyrZe] : with-params [
slabTop slabBot top bot left right blend 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)]
[xo OX] [yo O] [op OverlayPos] [ada2 SmallArchDepthA] [adb2 SmallArchDepthB] [xo OX] [yo O] [op OverlayPos] [ada2 SmallArchDepthA] [adb2 SmallArchDepthB]
] : namespace ] : namespace
export : define [Dim] : begin export : define [Dim] : begin
@ -218,33 +220,33 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
foreach { suffix { slabTop slabBot } } [Object.entries EpsilonConfig] : do foreach { suffix { slabTop slabBot } } [Object.entries EpsilonConfig] : do
create-glyph "latn/Epsilon.\(suffix)" : glyph-proc create-glyph "latn/Epsilon.\(suffix)" : glyph-proc
include : MarkSet.capital include : MarkSet.capital
include : let [eps : SmallEpsilon slabTop slabBot CAP 0 StdBlend Hook] include : let [eps : SmallEpsilon slabTop slabBot CAP 0 (hook -- Hook)]
union [eps.Shape] [eps.AutoStartSerifR] [eps.AutoEndSerifR] union [eps.Shape] [eps.AutoStartSerifR] [eps.AutoEndSerifR]
create-glyph "latn/epsilon.\(suffix)" : glyph-proc create-glyph "latn/epsilon.\(suffix)" : glyph-proc
include : MarkSet.e include : MarkSet.e
include : let [eps : SmallEpsilon slabTop slabBot XH 0 StdBlend SHook] include : let [eps : SmallEpsilon slabTop slabBot XH 0 (hook -- SHook)]
union [eps.Shape] [eps.AutoStartSerifR] [eps.AutoEndSerifR] union [eps.Shape] [eps.AutoStartSerifR] [eps.AutoEndSerifR]
create-glyph "cyrl/Ze.\(suffix)" : glyph-proc create-glyph "cyrl/Ze.\(suffix)" : glyph-proc
include : MarkSet.capital include : MarkSet.capital
include : let [ze : CyrZe slabTop slabBot CAP 0 SB RightSB StdBlend Hook] include : let [ze : CyrZe slabTop slabBot CAP 0 (hook -- Hook)]
union [ze.Shape] [ze.AutoStartSerifL] [ze.AutoEndSerifL] union [ze.Shape] [ze.AutoStartSerifL] [ze.AutoEndSerifL]
create-glyph "cyrl/ze.\(suffix)" : glyph-proc create-glyph "cyrl/ze.\(suffix)" : glyph-proc
include : MarkSet.e include : MarkSet.e
include : let [ze : CyrZe slabTop slabBot XH 0 SB RightSB StdBlend SHook] include : let [ze : CyrZe slabTop slabBot XH 0 (hook -- SHook)]
union [ze.Shape] [ze.AutoStartSerifL] [ze.AutoEndSerifL] union [ze.Shape] [ze.AutoStartSerifL] [ze.AutoEndSerifL]
create-glyph "cyrl/ze.BGR.\(suffix)" : glyph-proc create-glyph "cyrl/ze.BGR.\(suffix)" : glyph-proc
include : MarkSet.p include : MarkSet.p
include : let [ze : CyrZe slabTop slabBot XH Descender SB RightSB StdBlend SHook] include : let [ze : CyrZe slabTop slabBot XH Descender (hook -- SHook)]
union [ze.Shape] [ze.AutoStartSerifL] [ze.AutoEndSerifL] union [ze.Shape] [ze.AutoStartSerifL] [ze.AutoEndSerifL]
create-glyph "cyrl/Dhe.\(suffix)" : glyph-proc create-glyph "cyrl/Dhe.\(suffix)" : glyph-proc
include [refer-glyph "cyrl/Ze.\(suffix)"] AS_BASE ALSO_METRICS include [refer-glyph "cyrl/Ze.\(suffix)"] AS_BASE ALSO_METRICS
include : ExtendBelowBaseAnchors (-LongJut + 0.5 * Stroke) include : ExtendBelowBaseAnchors (-LongJut + 0.5 * Stroke)
include : let [zeNoO : CyrZe slabTop slabBot CAP 0 SB RightSB StdBlend Hook (xo -- 0) (yo -- 0)] include : let [zeNoO : CyrZe slabTop slabBot CAP 0 (hook -- Hook) (xo -- 0) (yo -- 0)]
difference difference
VBar.m [arch.adjust-x.bot Middle] (-LongJut + 0.5 * Stroke) (Stroke + O) [AdviceStroke 3.5] VBar.m [arch.adjust-x.bot Middle] (-LongJut + 0.5 * Stroke) (Stroke + O) [AdviceStroke 3.5]
zeNoO.ShapeMask zeNoO.ShapeMask
@ -252,21 +254,21 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
create-glyph "cyrl/dhe.\(suffix)" : glyph-proc create-glyph "cyrl/dhe.\(suffix)" : glyph-proc
include [refer-glyph "cyrl/ze.\(suffix)"] AS_BASE ALSO_METRICS include [refer-glyph "cyrl/ze.\(suffix)"] AS_BASE ALSO_METRICS
include : ExtendBelowBaseAnchors (-LongJut + 0.5 * Stroke) include : ExtendBelowBaseAnchors (-LongJut + 0.5 * Stroke)
include : let [zeNoO : CyrZe slabTop slabBot XH 0 SB RightSB StdBlend SHook (xo -- 0) (yo -- 0)] include : let [zeNoO : CyrZe slabTop slabBot XH 0 (hook -- SHook) (xo -- 0) (yo -- 0)]
difference difference
VBar.m [arch.adjust-x.bot Middle] (-LongJut + 0.5 * Stroke) (Stroke + O) [AdviceStroke 3.5] VBar.m [arch.adjust-x.bot Middle] (-LongJut + 0.5 * Stroke) (Stroke + O) [AdviceStroke 3.5]
zeNoO.ShapeMask zeNoO.ShapeMask
create-glyph "cyrl/DzjeKomi.\(suffix)" : glyph-proc create-glyph "cyrl/DzjeKomi.\(suffix)" : glyph-proc
include : MarkSet.capital include : MarkSet.capital
local ze : CyrZe slabTop OPEN-VERTICAL CAP 0 SB RightSB StdBlend Hook local ze : CyrZe slabTop OPEN-VERTICAL CAP 0 (hook -- Hook)
include : ze.Shape include : ze.Shape
include : ze.AutoStartSerifL include : ze.AutoStartSerifL
include : CyrDescender.rSideJut (RightSB - OX * 2) 0 include : CyrDescender.rSideJut (RightSB - OX * 2) 0
create-glyph "cyrl/dzjeKomi.\(suffix)" : glyph-proc create-glyph "cyrl/dzjeKomi.\(suffix)" : glyph-proc
include : MarkSet.e include : MarkSet.e
local ze : CyrZe slabTop OPEN-VERTICAL XH 0 SB RightSB StdBlend SHook local ze : CyrZe slabTop OPEN-VERTICAL XH 0 (hok -- SHook)
include : ze.Shape include : ze.Shape
include : ze.AutoStartSerifL include : ze.AutoStartSerifL
include : CyrDescender.rSideJut (RightSB - OX * 2) 0 include : CyrDescender.rSideJut (RightSB - OX * 2) 0
@ -276,17 +278,21 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
include : df.markSet.capital include : df.markSet.capital
local xm : df.middle + [HSwToV : 0.5 * df.mvs] local xm : df.middle + [HSwToV : 0.5 * df.mvs]
local ze : CyrZe slabTop OPEN-HALF CAP 0 df.leftSB xm StdBlend Hook df.mvs local ze : CyrZe slabTop OPEN-HALF CAP 0
left -- df.leftSB
right -- xm
hook -- Hook
stroke -- df.mvs
define [object stroke midy] : ze.Dim define [object stroke midy] : ze.Dim
include : ze.Shape include : ze.Shape
include : UpwardHookShape include : UpwardHookShape
left -- xm - OX * 2 - [HSwToV stroke] left -- (xm - OX * 2 - [HSwToV stroke])
right -- df.rightSB right -- df.rightSB
ybegin -- [YSmoothMidR (midy + stroke / 2) 0] ybegin -- [YSmoothMidR (midy + stroke / 2) 0]
yend -- (CAP / 2) yend -- (CAP / 2)
ada -- (ArchDepthA * 0.6 * df.div) ada -- (ArchDepthA * 0.6 * df.div)
adb -- (ArchDepthB * 0.6 * df.div) adb -- (ArchDepthB * 0.6 * df.div)
sw -- stroke sw -- stroke
include : ze.AutoStartSerifL include : ze.AutoStartSerifL
local sf2 : [SerifFrame.fromDf df (CAP / 2) 0].slice 1 2 local sf2 : [SerifFrame.fromDf df (CAP / 2) 0].slice 1 2
if SLAB : include sf2.rt.full if SLAB : include sf2.rt.full
@ -296,83 +302,99 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
include : df.markSet.e include : df.markSet.e
local xm : df.middle + [HSwToV : 0.5 * df.mvs] local xm : df.middle + [HSwToV : 0.5 * df.mvs]
local ze : CyrZe slabTop OPEN-HALF XH 0 df.leftSB xm StdBlend SHook df.mvs local ze : CyrZe slabTop OPEN-HALF XH 0
left -- df.leftSB
right -- xm
hook -- SHook
stroke -- df.mvs
define [object stroke midy] : ze.Dim define [object stroke midy] : ze.Dim
include : ze.Shape include : ze.Shape
include : UpwardHookShape include : UpwardHookShape
left -- xm - OX * 2 - [HSwToV stroke] left -- (xm - OX * 2 - [HSwToV stroke])
right -- df.rightSB right -- df.rightSB
ybegin -- [YSmoothMidR (midy + stroke / 2) 0] ybegin -- [YSmoothMidR (midy + stroke / 2) 0]
yend -- (XH / 2) yend -- (XH / 2)
ada -- (SmallArchDepthA * 0.6 * df.div) ada -- (SmallArchDepthA * 0.6 * df.div)
adb -- (SmallArchDepthB * 0.6 * df.div) adb -- (SmallArchDepthB * 0.6 * df.div)
sw -- stroke sw -- stroke
include : ze.AutoStartSerifL include : ze.AutoStartSerifL
local sf2 : [SerifFrame.fromDf df (XH / 2) 0].slice 1 2 local sf2 : [SerifFrame.fromDf df (XH / 2) 0].slice 1 2
if SLAB : include sf2.rt.full if SLAB : include sf2.rt.full
create-glyph "cyrl/KsiBase.\(suffix)" : glyph-proc create-glyph "cyrl/KsiBase.\(suffix)" : glyph-proc
include : MarkSet.capDesc include : MarkSet.capDesc
include : let [ze : CyrZe slabTop SLAB-NONE CAP 0 SB RightSB StdBlend Hook] include : let [ze : CyrZe slabTop SLAB-NONE CAP 0 (hook -- Hook)]
union [ze.KsiBaseShape] [ze.AutoStartSerifL] union [ze.KsiBaseShape] [ze.AutoStartSerifL]
create-glyph "cyrl/ksiBase.\(suffix)" : glyph-proc create-glyph "cyrl/ksiBase.\(suffix)" : glyph-proc
include : MarkSet.p include : MarkSet.p
include : let [ze : CyrZe slabTop SLAB-NONE XH 0 SB RightSB StdBlend SHook] include : let [ze : CyrZe slabTop SLAB-NONE XH 0 (hook -- SHook)]
union [ze.KsiBaseShape] [ze.AutoStartSerifL] union [ze.KsiBaseShape] [ze.AutoStartSerifL]
do "Closed Epsilon Shapes" do "Closed Epsilon Shapes"
create-glyph 'epsilonClosed' 0x29A : glyph-proc create-glyph 'epsilonClosed' 0x29A : glyph-proc
include : MarkSet.e include : MarkSet.e
local eps : SmallEpsilon CLOSED-CIRCLE CLOSED-CIRCLE XH 0 StdBlend SHook local eps : SmallEpsilon CLOSED-CIRCLE CLOSED-CIRCLE XH 0
hook -- SHook
ada2 -- SmallArchDepthA ada2 -- SmallArchDepthA
adb2 -- SmallArchDepthB adb2 -- SmallArchDepthB
include : eps.Shape include : eps.Shape
create-glyph 'epsilonRevClosed' 0x25E : glyph-proc create-glyph 'epsilonRevClosed' 0x25E : glyph-proc
include : MarkSet.e include : MarkSet.e
local ze : CyrZe CLOSED-CIRCLE CLOSED-CIRCLE XH 0 SB RightSB StdBlend SHook local ze : CyrZe CLOSED-CIRCLE CLOSED-CIRCLE XH 0
hook -- SHook
ada2 -- SmallArchDepthA ada2 -- SmallArchDepthA
adb2 -- SmallArchDepthB adb2 -- SmallArchDepthB
include : ze.Shape include : ze.Shape
create-glyph 'OeVolapuk' 0xA79C : glyph-proc create-glyph 'OeVolapuk' 0xA79C : glyph-proc
include : MarkSet.capital include : MarkSet.capital
local eps : SmallEpsilon CLOSED-CIRCLE CLOSED-CIRCLE CAP 0 VolBlend Hook local eps : SmallEpsilon CLOSED-CIRCLE CLOSED-CIRCLE CAP 0
ada2 -- ArchDepthA blend -- VolBlend
adb2 -- ArchDepthB hook -- Hook
ada2 -- ArchDepthA
adb2 -- ArchDepthB
include : eps.Shape include : eps.Shape
create-glyph 'oeVolapuk' 0xA79D : glyph-proc create-glyph 'oeVolapuk' 0xA79D : glyph-proc
include : MarkSet.e include : MarkSet.e
local eps : SmallEpsilon CLOSED-CIRCLE CLOSED-CIRCLE XH 0 VolBlend SHook local eps : SmallEpsilon CLOSED-CIRCLE CLOSED-CIRCLE XH 0
ada2 -- SmallArchDepthA blend -- VolBlend
adb2 -- SmallArchDepthB hook -- SHook
ada2 -- SmallArchDepthA
adb2 -- SmallArchDepthB
include : eps.Shape include : eps.Shape
do "Volapuk AE" do "Volapuk AE"
glyph-block-import Letter-Latin-Lower-A : SingleStorey glyph-block-import Letter-Latin-Lower-A : SingleStorey
define [FullBarBody df height bar hook ada2 adb2] : glyph-proc define [FullBarBody df height bar hook ada2 adb2] : glyph-proc
local eps : SmallEpsilon CLOSED-STEM CLOSED-STEM height 0 VolBlend hook local eps : SmallEpsilon CLOSED-STEM CLOSED-STEM height 0
ada2 -- ada2 blend -- VolBlend
adb2 -- adb2 hook -- hook
ada2 -- ada2
adb2 -- adb2
define [object stroke] : eps.Dim define [object stroke] : eps.Dim
include : eps.Shape include : eps.Shape
include : bar df height no-shape stroke include : bar df height no-shape stroke
define [EarlessCornerBody df height bar hook ada2 adb2] : glyph-proc define [EarlessCornerBody df height bar hook ada2 adb2] : glyph-proc
local eps : SmallEpsilon SLAB-INWARD CLOSED-STEM height 0 VolBlend hook local eps : SmallEpsilon SLAB-INWARD CLOSED-STEM height 0
ada2 -- ada2 blend -- VolBlend
adb2 -- adb2 hook -- hook
ada2 -- ada2
adb2 -- adb2
define [object stroke] : eps.Dim define [object stroke] : eps.Dim
include : eps.Shape include : eps.Shape
include : bar df (height - DToothlessRise) no-shape stroke include : bar df (height - DToothlessRise) no-shape stroke
define [EarlessRoundedBody df height bar hook ada2 adb2] : glyph-proc define [EarlessRoundedBody df height bar hook ada2 adb2] : glyph-proc
local eps : SmallEpsilon CLOSED-ROUND CLOSED-STEM height 0 VolBlend hook local eps : SmallEpsilon CLOSED-ROUND CLOSED-STEM height 0
ada2 -- ada2 blend -- VolBlend
adb2 -- adb2 hook -- hook
ada2 -- ada2
adb2 -- adb2
define [object stroke] : eps.Dim define [object stroke] : eps.Dim
include : eps.Shape include : eps.Shape
include : bar df (height - adb2) no-shape stroke include : bar df (height - adb2) no-shape stroke
@ -408,9 +430,11 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
define [UToothed df height slab hook ada2 adb2] : glyph-proc define [UToothed df height slab hook ada2 adb2] : glyph-proc
set-base-anchor 'trailing' df.rightSB 0 set-base-anchor 'trailing' df.rightSB 0
local eps : SmallEpsilon OPEN-VERTICAL CLOSED-STEM height 0 VolBlend hook local eps : SmallEpsilon OPEN-VERTICAL CLOSED-STEM height 0
ada2 -- ada2 blend -- VolBlend
adb2 -- adb2 hook -- hook
ada2 -- ada2
adb2 -- adb2
define [object stroke] : eps.Dim define [object stroke] : eps.Dim
include : eps.Shape include : eps.Shape
include : VBar.r df.rightSB 0 height stroke include : VBar.r df.rightSB 0 height stroke
@ -418,27 +442,33 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
define [UTailed df height slab hook ada2 adb2] : glyph-proc define [UTailed df height slab hook ada2 adb2] : glyph-proc
set-base-anchor 'trailing' (df.rightSB + SideJut) 0 set-base-anchor 'trailing' (df.rightSB + SideJut) 0
local eps : SmallEpsilon OPEN-VERTICAL CLOSED-STEM height 0 VolBlend hook local eps : SmallEpsilon OPEN-VERTICAL CLOSED-STEM height 0
ada2 -- ada2 blend -- VolBlend
adb2 -- adb2 hook -- hook
ada2 -- ada2
adb2 -- adb2
define [object stroke] : eps.Dim define [object stroke] : eps.Dim
include : eps.Shape include : eps.Shape
include : RightwardTailedBar df.rightSB 0 height stroke include : RightwardTailedBar df.rightSB 0 height stroke
include : slab df height include : slab df height
define [UToothlessRounded df height slab hook ada2 adb2] : glyph-proc define [UToothlessRounded df height slab hook ada2 adb2] : glyph-proc
local eps : SmallEpsilon OPEN-VERTICAL CLOSED-ROUND height 0 VolBlend hook local eps : SmallEpsilon OPEN-VERTICAL CLOSED-ROUND height 0
ada2 -- ada2 blend -- VolBlend
adb2 -- adb2 hook -- hook
ada2 -- ada2
adb2 -- adb2
define [object stroke] : eps.Dim define [object stroke] : eps.Dim
include : eps.Shape include : eps.Shape
include : VBar.r df.rightSB ada2 height stroke include : VBar.r df.rightSB ada2 height stroke
include : slab df height include : slab df height
define [UToothlessCorner df height slab hook ada2 adb2] : glyph-proc define [UToothlessCorner df height slab hook ada2 adb2] : glyph-proc
local eps : SmallEpsilon OPEN-VERTICAL SLAB-INWARD height 0 VolBlend hook local eps : SmallEpsilon OPEN-VERTICAL SLAB-INWARD height 0
ada2 -- ada2 blend -- VolBlend
adb2 -- adb2 hook -- hook
ada2 -- ada2
adb2 -- adb2
define [object stroke] : eps.Dim define [object stroke] : eps.Dim
include : eps.Shape include : eps.Shape
include : VBar.r df.rightSB DToothlessRise height stroke include : VBar.r df.rightSB DToothlessRise height stroke
@ -528,10 +558,10 @@ glyph-block Letter-Greek-Lower-Epsilon : begin
local blend 0.505 local blend 0.505
local midGap : Math.max [AdviceStroke2 3 12 CAP] (CAP / 8 - [AdviceStroke2 3 6 XH]) local midGap : Math.max [AdviceStroke2 3 12 CAP] (CAP / 8 - [AdviceStroke2 3 6 XH])
local strokeV : AdviceStroke 4 local strokeV : AdviceStroke 4
local ze : CyrZe SLAB-NONE SLAB-NONE CAP midGap SB RightSB blend Hook local ze : CyrZe SLAB-NONE SLAB-NONE CAP midGap (blend -- blend) (hook -- Hook)
local dimUpper : ze.Dim local dimUpper : ze.Dim
local epsilon : SmallEpsilon SLAB-NONE SLAB-NONE (CAP - midGap) 0 blend Hook local epsilon : SmallEpsilon SLAB-NONE SLAB-NONE (CAP - midGap) 0 (blend -- blend) (hook -- Hook)
local dimLower : epsilon.Dim local dimLower : epsilon.Dim
include : union [epsilon.LowerShape] [ze.UpperShape] include : union [epsilon.LowerShape] [ze.UpperShape]
Rect (dimUpper.midy + dimUpper.stroke / 2) (dimLower.midy - dimLower.stroke / 2) (Middle - [HSwToV : 0.5 * strokeV]) (Middle + [HSwToV : 0.5 * strokeV]) Rect (dimUpper.midy + dimUpper.stroke / 2) (dimLower.midy - dimLower.stroke / 2) (Middle - [HSwToV : 0.5 * strokeV]) (Middle + [HSwToV : 0.5 * strokeV])