Fix shape and variant assignment for LATIN SMALL LETTER DOTLESS J WITH STROKE (U+025F) (#1458).

This commit is contained in:
be5invis 2022-12-10 00:14:06 -08:00
parent 60cccc4ef1
commit a6111714f4
23 changed files with 233 additions and 134 deletions

View file

@ -265,7 +265,7 @@ glyph-block Autobuild-Transformed : begin
list 0x1D9E 'eth'
list 0x1D9F 'latn/epsilonRev'
list 0x1DA0 'f'
list 0x1DA1 'turnf'
list 0x1DA1 'dotlessjBar'
list 0x1DA2 'gScript'
list 0x1DA3 'turnh'
list 0x1DA4 'iBarOver'

View file

@ -8,6 +8,7 @@ glyph-block Letter-Cyrillic-Yat : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared-Metrics : BowlXDepth
glyph-block-import Letter-Shared-Shapes : LetterBarOverlay
glyph-block-import Letter-Cyrillic-Yeri : CyrlYeriUprightShape
create-glyph 'cyrl/Yat' 0x462 : glyph-proc
@ -15,14 +16,22 @@ glyph-block Letter-Cyrillic-Yat : begin
local pBar 0.5
include : CyrlYeriUprightShape CAP (pBar -- pBar)
local cTop : if SLAB (CAP - Stroke / 2) CAP
include : HOverlayBar [mix SB 0 0.7] [mix SB RightSB 0.5] [mix (CAP * pBar) cTop 0.5]
include : LetterBarOverlay.l.in
x -- SB
bot -- (CAP * pBar + HalfStroke)
top -- (CAP - [if SLAB Stroke 0])
py -- 0.5
create-glyph 'cyrl/yat.upright' : glyph-proc
include : MarkSet.b
local pBar 0.4
include : CyrlYeriUprightShape Ascender (pBar -- pBar)
local cTop : if SLAB (Ascender - Stroke / 2) Ascender
include : HOverlayBar [mix SB 0 0.7] [mix SB RightSB 0.5] [mix (Ascender * pBar) cTop 0.5]
include : LetterBarOverlay.l.in
x -- SB
bot -- (Ascender * pBar + HalfStroke)
top -- (Ascender - [if SLAB Stroke 0])
py -- 0.5
if SLAB : begin
eject-contour 'serifYeriLT'

View file

@ -9,9 +9,12 @@ glyph-block Letter-Cyrillic-Yeri : begin
glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared-Metrics : BowlXDepth
glyph-block-import Letter-Shared-Shapes : ShoulderMidKnotLhsRev RightwardTailedBar
glyph-block-import Letter-Shared-Shapes : LetterBarOverlay
define DefaultBarPos 0.55
glyph-block-export CyrlYeriUprightShape
define [CyrlYeriUprightShape] : params [top [left SB] [right RightSB] [stroke Stroke] [jut Jut] [pBar 0.55]] : glyph-proc
define [CyrlYeriUprightShape] : params [top [left SB] [right RightSB] [stroke Stroke] [jut Jut] [pBar DefaultBarPos]] : glyph-proc
local bowl : top * pBar + HalfStroke
local turnRadius : BowlXDepth bowl 0 left right stroke
local ada : ArchDepthAOf ArchDepth (right - left + SB * 2)
@ -38,7 +41,7 @@ glyph-block Letter-Cyrillic-Yeri : begin
include : tagged 'serifYeriLT' : CenterTopSerif (left + stroke / 2 * HVContrast) top jut
glyph-block-export CyrlYeriRoundShape
define [CyrlYeriRoundShape] : params [top [left SB] [right RightSB] [stroke Stroke] [jut Jut] [pBar 0.55]] : glyph-proc
define [CyrlYeriRoundShape] : params [top [left SB] [right RightSB] [stroke Stroke] [jut Jut] [pBar DefaultBarPos]] : glyph-proc
local bowl : top * pBar + HalfStroke
local turnRadius : BowlXDepth bowl 0 left right stroke
local ada : ArchDepthAOf ArchDepth (right - left + SB * 2)
@ -63,7 +66,7 @@ glyph-block Letter-Cyrillic-Yeri : begin
include : tagged 'serifYeriLT' : LeftwardTopSerif left top (jut - stroke / 2 * HVContrast)
glyph-block-export CyrlYeriCursiveShape
define [CyrlYeriCursiveShape] : params [top [left SB] [right RightSB] [stroke Stroke] [jut Jut] [pBar 0.55]] : glyph-proc
define [CyrlYeriCursiveShape] : params [top [left SB] [right RightSB] [stroke Stroke] [jut Jut] [pBar DefaultBarPos]] : glyph-proc
local bowl : top * pBar + HalfStroke
local turnRadius : BowlXDepth bowl 0 left right stroke
local ada : ArchDepthAOf ArchDepth (right - left + SB * 2)
@ -88,7 +91,7 @@ glyph-block Letter-Cyrillic-Yeri : begin
if SLAB : begin
include : tagged 'serifYeriLT' : LeftwardTopSerif left top (jut - stroke / 2 * HVContrast)
define [RevCyrYeriShape] : params [top [left SB] [right RightSB] [stroke Stroke] [jut Jut] [pBar 0.55]] : glyph-proc
define [RevCyrYeriShape] : params [top [left SB] [right RightSB] [stroke Stroke] [jut Jut] [pBar DefaultBarPos]] : glyph-proc
local bowl : top * pBar + HalfStroke
local turnRadius : bowl * 0.45
local turnbottom : mix 0 bowl (ArchDepthB / (ArchDepthA + ArchDepthB))
@ -162,11 +165,11 @@ glyph-block Letter-Cyrillic-Yeri : begin
define [YeriOverlayBar df top] : begin
local stroke : AdviceStroke2 2 3 top
return : HOverlayBar
mix df.leftSB 0 0.7
mix df.leftSB df.rightSB 0.5
mix (top * 0.52 + stroke / 2) top 0.5
Math.min ((top - Stroke * 3) / 3) OverlayStroke
return : LetterBarOverlay.l.in
x -- df.leftSB
bot -- top * DefaultBarPos + stroke / 2
top -- top - [if SLAB Stroke 0]
py -- 0.5
foreach { suffix { Yeri fTail } } [Object.entries YerConfig] : do
create-glyph "cyrl/Yeri.\(suffix)" : glyph-proc

View file

@ -8,6 +8,7 @@ glyph-module
glyph-block Letter-Greek-Lower-Rho : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared-Shapes : LetterBarOverlay
create-glyph 'grek/rho' 0x3C1 : glyph-proc
include : MarkSet.p
@ -29,4 +30,4 @@ glyph-block Letter-Greek-Lower-Rho : begin
create-glyph 'grek/rhoBar' 0x3FC : glyph-proc
include [refer-glyph 'grek/rho'] AS_BASE ALSO_METRICS
include : HOverlayBar [mix SB 0 0.7] [mix SB RightSB 0.5] [mix 0 Descender 0.45]
include : LetterBarOverlay.l.in SB Descender 0 (1 - OverlayPos)

View file

@ -10,6 +10,7 @@ glyph-block Letter-Greek-Upper-Gamma: begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared-Shapes : nShoulder CyrDescender CyrHookDescender
glyph-block-import Letter-Shared-Shapes : LetterBarOverlay
glyph-block-import Letter-Blackboard : BBS BBD BBBarLeft
glyph-block-import Letter-Latin-Upper-F : xMidBarShrink
@ -133,10 +134,7 @@ glyph-block Letter-Greek-Upper-Gamma: begin
adb -- ArchDepthB * [Math.pow HBarPos 0.3]
include : VerticalHook (RightSB - HalfStroke * HVContrast) 0 (-HookX) Hook
define [GhaynOverlayBar top] : HOverlayBar
GammaBarLeft - GammaBarLeft * 0.75
GammaBarLeft + Stroke * HVContrast + SB * 0.625 + 0.125 * (RightSB - SB)
top * (1 - OverlayPos)
define [GhaynOverlayBar top] : LetterBarOverlay.l GammaBarLeft (top * (1 - OverlayPos))
derive-composites 'cyrl/Ghayn' 0x492 'cyrl/Ghe' [GhaynOverlayBar CAP]
derive-composites 'cyrl/ghayn.upright' null 'cyrl/ghe.upright' [GhaynOverlayBar XH]

View file

@ -9,6 +9,7 @@ glyph-block Letter-Latin-Glottal-Stop : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
glyph-block-import Mark-Shared-Metrics : markHalfStroke
glyph-block-import Letter-Shared-Shapes : LetterBarOverlay
create-glyph 'glottalstop' 0x294 : glyph-proc
include : MarkSet.b
@ -83,8 +84,8 @@ glyph-block Letter-Latin-Glottal-Stop : begin
create-glyph 'glottalstopbar' 0x2A1 : glyph-proc
include [refer-glyph 'glottalstop'] AS_BASE
include : HOverlayBar (Middle - LongJut * 0.6) (Middle + LongJut * 0.6) (Ascender * 0.25)
include : LetterBarOverlay.m.in Middle [if SLAB Stroke 0] (Ascender * 0.5)
create-glyph 'revglottalstopbar' 0x2A2 : glyph-proc
include [refer-glyph 'revglottalstop'] AS_BASE
include : HOverlayBar (Middle - LongJut * 0.6) (Middle + LongJut * 0.6) (Ascender * 0.25)
include : LetterBarOverlay.m.in Middle [if SLAB Stroke 0] (Ascender * 0.5)

View file

@ -8,7 +8,7 @@ glyph-module
glyph-block Letter-Latin-Long-S : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared-Shapes : CurlyTail FlatHookDepth
glyph-block-import Letter-Shared-Shapes : CurlyTail FlatHookDepth LetterBarOverlay
glyph-block-import Letter-Latin-Lower-F : StdSmallFBarLeftPos StdSmallFBarLeftPos0
define [LongSUpperHalf sign x top bottom hookX hookY _sw] : begin
@ -54,15 +54,15 @@ glyph-block Letter-Latin-Long-S : begin
if fSlab : include : tagged 'serifLB'
CenterBottomSerif (m + HalfStroke * HVContrast + RBalance * 0.35) 0 (Jut + RBalance * 0.65)
define [LongSBentHookOverlayBar m] : HOverlayBar
m + HalfStroke * HVContrast - LongJut * 0.75
m + HalfStroke * HVContrast + LongJut * 0.75
[mix (XH - Stroke) Ascender 0.5] - HalfStroke
define [LongSBentHookOverlayBar m] : LetterBarOverlay.m.in
x -- (m + HalfStroke * HVContrast)
bot -- (0.75 * XH - Stroke)
top -- (Ascender - Stroke)
define [LongSSymmetricOverlayBar m] : HOverlayBar
m - LongJut * 0.75
m + LongJut * 0.75
[mix (XH - Stroke) Ascender 0.5] - HalfStroke
define [LongSSymmetricOverlayBar m] : LetterBarOverlay.m.in
x -- m
bot -- (0.75 * XH - Stroke)
top -- (Ascender - Stroke)
create-glyph 'longs.bentHook' : glyph-proc
include : MarkSet.b

View file

@ -17,6 +17,7 @@ glyph-block Letter-Latin-C : begin
glyph-block-import Letter-Shared-Shapes : ArcStartInwardSerifL ArcStartInwardSerifR
glyph-block-import Letter-Shared-Shapes : ArcEndInwardSerifL ArcEndInwardSerifR
glyph-block-import Letter-Shared-Shapes : InwardSlabArcStart_RtlLhs
glyph-block-import Letter-Shared-Shapes : LetterBarOverlay
glyph-block-import Letter-Blackboard : BBS BBD
define SLAB-NONE 0
@ -399,11 +400,11 @@ glyph-block Letter-Latin-C : begin
derive-glyphs 'Cbar' 0xA792 'C' : lambda [src gr] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS
include : HOverlayBar (SB * 0.3) [mix (SB + Stroke) (RightSB - Stroke) 0.55] (CAP * OverlayPos)
include : LetterBarOverlay.l.in SB 0 CAP 0.5
derive-glyphs 'cbar' 0xA793 'c' : lambda [src gr] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS
include : HOverlayBar (SB * 0.3) [mix (SB + Stroke) (RightSB - Stroke) 0.55] (XH * OverlayPos)
include : LetterBarOverlay.l.in SB 0 XH 0.5
derive-glyphs 'cyrl/E' 0x42D 'revC' : lambda [src gr] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS

View file

@ -10,6 +10,7 @@ glyph-block Letter-Latin-K : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared-Shapes : DiagonalTailInnerRadius DiagonalTailF CyrDescender
glyph-block-import Letter-Shared-Shapes : LetterBarOverlay
local [KBalance slab straightBar] : if slab (Width / 16) : if straightBar (Width / 32) 0
local [KBalanceRight slab straightBar] : if slab 0 : if straightBar (Width / 32) 0
@ -397,7 +398,12 @@ glyph-block Letter-Latin-K : begin
create-glyph "KBar.\(suffix)" : glyph-proc
include [refer-glyph "K.\(suffix)"] AS_BASE ALSO_METRICS
include : HOverlayBar [mix (SB + [KBalance slabTop straightBar]) 0 0.7] [mix (SB + [KBalance slabTop straightBar]) RightSB 0.5] [mix XH (CAP - [if slabTop Stroke 0]) 0.45]
include : LetterBarOverlay.l.in
x -- (SB + [KBalance slabTop straightBar])
bot -- XH
top -- (CAP - [if slabTop Stroke 0])
py -- (1 - OverlayPos)
space -- { 0 [mix SB RightSB 0.75] }
create-glyph "KVBar.\(suffix)" : glyph-proc
include : MarkSet.capital
@ -505,7 +511,11 @@ glyph-block Letter-Latin-K : begin
create-glyph "kBar.\(suffix)" : glyph-proc
include [refer-glyph "k.\(suffix)"] AS_BASE ALSO_METRICS
include : HOverlayBar [mix (SB + [KBalance slabTop straightBar]) 0 0.7] [mix (SB + [KBalance slabTop straightBar]) RightSB 0.5] [mix XH (Ascender - [if slabTop Stroke 0]) 0.45]
include : LetterBarOverlay.l.in
x -- (SB + [KBalance slabTop straightBar])
bot -- XH
top -- (Ascender - [if slabTop Stroke 0])
py -- (1 - OverlayPos)
create-glyph "kHookTop.\(suffix)" : glyph-proc
include : MarkSet.b

View file

@ -9,7 +9,7 @@ glyph-block Letter-Latin-Lower-B : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared : CreateAccentedComposition
glyph-block-import Letter-Shared-Shapes : DToothlessRise DMBlend HooktopLeftBar
glyph-block-import Letter-Shared-Shapes : DToothlessRise DMBlend HooktopLeftBar LetterBarOverlay
define [ToothedBody] : union
OBarLeftShape
@ -41,7 +41,7 @@ glyph-block Letter-Latin-Lower-B : begin
toothlessRoundedMotionSerifed { ToothlessRoundedBody MotionSerifs true }
foreach { suffix { Body Serifs doTS }} [Object.entries BConfig] : do
local yOverlay : mix XH (Ascender - [if doTS Stroke 0]) 0.45
local yOverlay : mix XH (Ascender - [if doTS Stroke 0]) (1 - OverlayPos)
create-glyph "b.\(suffix)" : glyph-proc
include : MarkSet.b
include : Body
@ -49,7 +49,7 @@ glyph-block Letter-Latin-Lower-B : begin
set-base-anchor 'overlayOnBar' (SB + 0.5 * Stroke * HVContrast) yOverlay
create-glyph "bBar.\(suffix)" : glyph-proc
include [refer-glyph "b.\(suffix)"] AS_BASE ALSO_METRICS
include : HOverlayBar [mix SB 0 0.7] [mix SB RightSB 0.625] yOverlay
include : LetterBarOverlay.l.in SB XH (Ascender - [if doTS Stroke 0]) (1 - OverlayPos)
create-glyph "bSlash.\(suffix)" : glyph-proc
include [refer-glyph "b.\(suffix)"] AS_BASE ALSO_METRICS
include : dispiro

View file

@ -10,6 +10,7 @@ glyph-block Letter-Latin-Lower-D : begin
glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared : CreateAccentedComposition
glyph-block-import Letter-Shared-Shapes : RightwardTailedBar DToothlessRise DMBlend CurlyTail
glyph-block-import Letter-Shared-Shapes : LetterBarOverlay
define [ToothedBody] : union
OBarRightShape
@ -65,7 +66,7 @@ glyph-block Letter-Latin-Lower-D : begin
create-glyph "dcroat.\(suffix)" : glyph-proc
include [refer-glyph "d.\(suffix)"] AS_BASE ALSO_METRICS
include : HOverlayBar [mix SB RightSB 0.5] [mix RightSB Width 0.7] [mix XH (Ascender - [if topSerif Stroke 0]) 0.45]
include : LetterBarOverlay.r.in RightSB XH (Ascender - [if topSerif Stroke 0]) (1 - OverlayPos)
create-glyph "latn/de.\(suffix)" : glyph-proc
include [refer-glyph "d.\(suffix)"] AS_BASE ALSO_METRICS

View file

@ -119,52 +119,49 @@ glyph-block Letter-Latin-Lower-F : begin
define pNarrowSide : mix 1 para.diversityF 1.5
define SmallFConfig : object
'serifless' { { StandardSmallFShape [DivFrame 1] } { 0.95 fbar CH-NONE } { 'b' 'p' } }
'serifed' { { StandardSmallFShape [DivFrame 1] } { 0.95 fbar CH-SERIF } { 'b' 'p' } }
'extended' { { StandardSmallFShape [DivFrame 1] } { 0.95 fbar CH-EXTENSION } { 'if' 'if' } }
'tailed' { { StandardSmallFShape [DivFrame 1] } { 1 fbar CH-HOOK } { 'if' 'if' } }
'diagonalTailed' { { StandardSmallFShape [DivFrame 1] } { 1 fbar CH-DIAGONAL-HOOK } { 'if' 'if' } }
'seriflessCrossbarAtXHeight' { { StandardSmallFShape [DivFrame 1] } { 0.95 XH CH-NONE } { 'b' 'p' } }
'serifedCrossbarAtXHeight' { { StandardSmallFShape [DivFrame 1] } { 0.95 XH CH-SERIF } { 'b' 'p' } }
'extendedCrossbarAtXHeight' { { StandardSmallFShape [DivFrame 1] } { 0.95 XH CH-EXTENSION } { 'if' 'if' } }
'tailedCrossbarAtXHeight' { { StandardSmallFShape [DivFrame 1] } { 1 XH CH-HOOK } { 'if' 'if' } }
'diagonalTailedCrossbarAtXHeight' { { StandardSmallFShape [DivFrame 1] } { 1 XH CH-DIAGONAL-HOOK } { 'if' 'if' } }
'flatHook' { { [NarrowFShape 0] dfNarrowF } { pNarrowSide fbar CH-NONE } { 'b' 'p' } }
'flatHookSerifed' { { [NarrowFShape 0] dfNarrowF } { pNarrowSide fbar CH-SERIF } { 'b' 'p' } }
'flatHookExtended' { { [NarrowFShape 0] dfNarrowF } { pNarrowSide fbar CH-EXTENSION } { 'if' 'if' } }
'flatHookTailed' { { [NarrowFShape 0] dfNarrowF } { pNarrowSide fbar CH-HOOK } { 'if' 'if' } }
'flatHookDiagonalTailed' { { [NarrowFShape 0] dfNarrowF } { pNarrowSide fbar CH-DIAGONAL-HOOK } { 'if' 'if' } }
'flatHookCrossbarAtXHeight' { { [NarrowFShape 0] dfNarrowF } { pNarrowSide XH CH-NONE } { 'b' 'p' } }
'flatHookSerifedCrossbarAtXHeight' { { [NarrowFShape 0] dfNarrowF } { pNarrowSide XH CH-SERIF } { 'b' 'p' } }
'flatHookExtendedCrossbarAtXHeight' { { [NarrowFShape 0] dfNarrowF } { pNarrowSide XH CH-EXTENSION } { 'if' 'if' } }
'flatHookTailedCrossbarAtXHeight' { { [NarrowFShape 0] dfNarrowF } { pNarrowSide XH CH-HOOK } { 'if' 'if' } }
'flatHookDiagonalTailedCrossbarAtXHeight' { { [NarrowFShape 0] dfNarrowF } { pNarrowSide XH CH-DIAGONAL-HOOK } { 'if' 'if' } }
'serifless' { { StandardSmallFShape [DivFrame 1] } { 0.95 fbar CH-NONE } 'b' }
'serifed' { { StandardSmallFShape [DivFrame 1] } { 0.95 fbar CH-SERIF } 'b' }
'extended' { { StandardSmallFShape [DivFrame 1] } { 0.95 fbar CH-EXTENSION } 'if' }
'tailed' { { StandardSmallFShape [DivFrame 1] } { 1 fbar CH-HOOK } 'if' }
'diagonalTailed' { { StandardSmallFShape [DivFrame 1] } { 1 fbar CH-DIAGONAL-HOOK } 'if' }
'seriflessCrossbarAtXHeight' { { StandardSmallFShape [DivFrame 1] } { 0.95 XH CH-NONE } 'b' }
'serifedCrossbarAtXHeight' { { StandardSmallFShape [DivFrame 1] } { 0.95 XH CH-SERIF } 'b' }
'extendedCrossbarAtXHeight' { { StandardSmallFShape [DivFrame 1] } { 0.95 XH CH-EXTENSION } 'if' }
'tailedCrossbarAtXHeight' { { StandardSmallFShape [DivFrame 1] } { 1 XH CH-HOOK } 'if' }
'diagonalTailedCrossbarAtXHeight' { { StandardSmallFShape [DivFrame 1] } { 1 XH CH-DIAGONAL-HOOK } 'if' }
'flatHook' { { [NarrowFShape 0] dfNarrowF } { pNarrowSide fbar CH-NONE } 'b' }
'flatHookSerifed' { { [NarrowFShape 0] dfNarrowF } { pNarrowSide fbar CH-SERIF } 'b' }
'flatHookExtended' { { [NarrowFShape 0] dfNarrowF } { pNarrowSide fbar CH-EXTENSION } 'if' }
'flatHookTailed' { { [NarrowFShape 0] dfNarrowF } { pNarrowSide fbar CH-HOOK } 'if' }
'flatHookDiagonalTailed' { { [NarrowFShape 0] dfNarrowF } { pNarrowSide fbar CH-DIAGONAL-HOOK } 'if' }
'flatHookCrossbarAtXHeight' { { [NarrowFShape 0] dfNarrowF } { pNarrowSide XH CH-NONE } 'b' }
'flatHookSerifedCrossbarAtXHeight' { { [NarrowFShape 0] dfNarrowF } { pNarrowSide XH CH-SERIF } 'b' }
'flatHookExtendedCrossbarAtXHeight' { { [NarrowFShape 0] dfNarrowF } { pNarrowSide XH CH-EXTENSION } 'if' }
'flatHookTailedCrossbarAtXHeight' { { [NarrowFShape 0] dfNarrowF } { pNarrowSide XH CH-HOOK } 'if' }
'flatHookDiagonalTailedCrossbarAtXHeight' { { [NarrowFShape 0] dfNarrowF } { pNarrowSide XH CH-DIAGONAL-HOOK } 'if' }
'flatHookCLC1' { { [NarrowFShape 1] dfNarrowF } { pNarrowSide XH CH-NONE } { 'b' 'p' } }
'flatHookSerifedCLC1' { { [NarrowFShape 1] dfNarrowF } { pNarrowSide XH CH-SERIF } { 'b' 'p' } }
'flatHookExtendedCLC1' { { [NarrowFShape 1] dfNarrowF } { pNarrowSide XH CH-EXTENSION } { 'if' 'if' } }
'flatHookTailedCLC1' { { [NarrowFShape 1] dfNarrowF } { pNarrowSide XH CH-HOOK } { 'if' 'if' } }
'flatHookDiagonalTailedCLC1' { { [NarrowFShape 1] dfNarrowF } { pNarrowSide XH CH-DIAGONAL-HOOK } { 'if' 'if' } }
'flatHookCLC1' { { [NarrowFShape 1] dfNarrowF } { pNarrowSide XH CH-NONE } 'b' }
'flatHookSerifedCLC1' { { [NarrowFShape 1] dfNarrowF } { pNarrowSide XH CH-SERIF } 'b' }
'flatHookExtendedCLC1' { { [NarrowFShape 1] dfNarrowF } { pNarrowSide XH CH-EXTENSION } 'if' }
'flatHookTailedCLC1' { { [NarrowFShape 1] dfNarrowF } { pNarrowSide XH CH-HOOK } 'if' }
'flatHookDiagonalTailedCLC1' { { [NarrowFShape 1] dfNarrowF } { pNarrowSide XH CH-DIAGONAL-HOOK } 'if' }
'flatHookCLC2' { { [NarrowFShape 2] dfNarrowF } { pNarrowSide fbar CH-NONE } { 'b' 'p' } }
'flatHookSerifedCLC2' { { [NarrowFShape 2] dfNarrowF } { pNarrowSide fbar CH-SERIF } { 'b' 'p' } }
'flatHookExtendedCLC2' { { [NarrowFShape 2] dfNarrowF } { pNarrowSide fbar CH-EXTENSION } { 'if' 'if' } }
'flatHookTailedCLC2' { { [NarrowFShape 2] dfNarrowF } { pNarrowSide fbar CH-HOOK } { 'if' 'if' } }
'flatHookDiagonalTailedCLC2' { { [NarrowFShape 2] dfNarrowF } { pNarrowSide fbar CH-DIAGONAL-HOOK } { 'if' 'if' } }
'flatHookCLC2' { { [NarrowFShape 2] dfNarrowF } { pNarrowSide fbar CH-NONE } 'b' }
'flatHookSerifedCLC2' { { [NarrowFShape 2] dfNarrowF } { pNarrowSide fbar CH-SERIF } 'b' }
'flatHookExtendedCLC2' { { [NarrowFShape 2] dfNarrowF } { pNarrowSide fbar CH-EXTENSION } 'if' }
'flatHookTailedCLC2' { { [NarrowFShape 2] dfNarrowF } { pNarrowSide fbar CH-HOOK } 'if' }
'flatHookDiagonalTailedCLC2' { { [NarrowFShape 2] dfNarrowF } { pNarrowSide fbar CH-DIAGONAL-HOOK } 'if' }
foreach { suffix {{Body df} {pBar yBar ch} {mk mkTurn}}} [Object.entries SmallFConfig] : do
foreach { suffix {{Body df} {pBar yBar ch} mk}} [Object.entries SmallFConfig] : do
create-glyph "f.\(suffix)" : glyph-proc
set-width df.width
include : df.markSet.(mk)
include : Body df pBar yBar ch
turned "turnf.\(suffix)" nothing "f.\(suffix)" df.middle (XH / 2) [df.markSet.(mkTurn)]
select-variant 'f' 'f'
link-reduced-variant 'f/sansSerif' 'f' MathSansSerif
select-variant 'turnf' 0x25F (follow -- 'f')
select-variant 'fLenis' 0xAB35 (shapeFrom -- 'f')
select-variant 'fLTail' 0x192 (shapeFrom -- 'f')
select-variant 'dotlessjWithStrokeAndHook' 0x284 (shapeFrom -- 'turnf')
select-variant 'f/compLigLeft1' (shapeFrom -- 'f')
select-variant 'f/compLigLeft2' (shapeFrom -- 'f')
select-variant 'f/phoneticLeft' (shapeFrom -- 'f')

View file

@ -9,7 +9,7 @@ glyph-block Letter-Latin-Lower-J : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared : CreateAccentedComposition
glyph-block-import Letter-Shared-Shapes : CurlyTail FlatHookDepth
glyph-block-import Letter-Shared-Shapes : CurlyTail FlatHookDepth HooktopLeftBar LetterBarOverlay
glyph-block-import Letter-Shared-Shapes : DiagonalTailL DiagonalTailStdDepth
glyph-block-import Letter-Blackboard : BBS BBD
@ -88,26 +88,39 @@ glyph-block Letter-Latin-Lower-J : begin
set-base-anchor 'overlay' xMiddle (top / 2)
define JConfig : object
'serifless' { Body.Regular null XMiddle.Regular Marks.FullHook 1 }
'serifed' { Body.Regular Serifs.Long XMiddle.Regular Marks.FullHook 1 }
'straightLine' { Body.Straight null XMiddle.Straight Marks.Straight para.diversityII }
'hooky' { Body.Straight Serifs.Long XMiddle.Hooky Marks.Straight para.diversityII }
'flatHookSerifless' { Body.FlatHook null XMiddle.FlatHookSerifless Marks.FullHook para.diversityII }
'flatHookSerifed' { Body.FlatHook Serifs.Long XMiddle.FlatHookSerifed Marks.FullHook para.diversityI }
'diagonalTailedSerifless' { Body.DiagonalTailed null XMiddle.FlatHookSerifless Marks.FullHook para.diversityII }
'diagonalTailedSerifed' { Body.DiagonalTailed Serifs.Long XMiddle.FlatHookSerifed Marks.FullHook para.diversityI }
'serifless' { "Regular" null XMiddle.Regular Marks.FullHook 1 }
'serifed' { "Regular" Serifs.Long XMiddle.Regular Marks.FullHook 1 }
'straightLine' { "Straight" null XMiddle.Straight Marks.Straight para.diversityII }
'hooky' { "Straight" Serifs.Long XMiddle.Hooky Marks.Straight para.diversityII }
'flatHookSerifless' { "FlatHook" null XMiddle.FlatHookSerifless Marks.FullHook para.diversityII }
'flatHookSerifed' { "FlatHook" Serifs.Long XMiddle.FlatHookSerifed Marks.FullHook para.diversityI }
'diagonalTailedSerifless' { "DiagonalTailed" null XMiddle.FlatHookSerifless Marks.FullHook para.diversityII }
'diagonalTailedSerifed' { "DiagonalTailed" Serifs.Long XMiddle.FlatHookSerifed Marks.FullHook para.diversityI }
foreach {suffix { shapeId Serif xMiddleT Marks div } } [Object.entries JConfig] : do
local df : DivFrame div
local xMiddle : xMiddleT df
foreach {suffix { Body Serif xMiddleT Marks div } } [Object.entries JConfig] : do
create-glyph "dotlessj.\(suffix)" : glyph-proc
local df : DivFrame div
set-width df.width
include : df.markSet.p
local xMiddle : xMiddleT df
include : Body df XH xMiddle
include : Body.(shapeId) df XH xMiddle
if Serif : include : tagged 'serifLT' : Serif df XH xMiddle
include : Marks df XH xMiddle (!(!Serif))
create-glyph "dotlessjBar.\(suffix)" : glyph-proc
include [refer-glyph "dotlessj.\(suffix)"] AS_BASE ALSO_METRICS
include : LetterBarOverlay.m xMiddle (XH / 2) (space -- {0 df.width})
create-glyph "dotlessjBarHookTop.\(suffix)" : glyph-proc
set-width df.width
include : df.markSet.if
include [refer-glyph "dotlessjBar.\(suffix)"]
include : WithTransform [ApparentTranslate (xMiddle - HalfStroke * HVContrast - SB) 0] : HooktopLeftBar XH
select-variant 'dotlessj' 0x237
select-variant 'dotlessjBar' 0x25F (follow -- 'dotlessj')
select-variant 'dotlessjBarHookTop' 0x284 (follow -- 'dotlessj/sansSerif')
link-reduced-variant 'dotlessj/sansSerif' 'dotlessj' MathSansSerif
CreateAccentedComposition 'j' 'j' 'dotlessj' 'dotAbove'
CreateAccentedComposition 'j/sansSerif' null 'dotlessj/sansSerif' 'dotAbove'

View file

@ -9,7 +9,7 @@ glyph-block Letter-Latin-Upper-B : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared-Metrics : BowlXDepth
glyph-block-import Letter-Shared-Shapes : ShoulderMidKnotRhs
glyph-block-import Letter-Shared-Shapes : ShoulderMidKnotRhs LetterBarOverlay
glyph-block-import Letter-Blackboard : BBS BBD
define BArcMix 0.93
@ -94,11 +94,8 @@ glyph-block Letter-Latin-Upper-B : begin
define [BOverlayBar top bp] : begin
local stroke : AdviceStroke2 2 3 top
return : HOverlayBar
mix SB 0 0.7
mix SB RightSB 0.5
mix 0 (top * bp + stroke / 2) 0.5
Math.min ((top - Stroke * 3) / 4) OverlayStroke
return : LetterBarOverlay.l.in SB stroke (top * bp - 0.5 * stroke) 0.5
space -- { 0 (RightSB - Stroke * HVContrast) }
define [BahtBar sw] : VBar [mix SB RightSB 0.475] (CAP - Descender / 2) (Descender / 2) sw
define [BitcoinBar sw] : begin

View file

@ -8,6 +8,7 @@ glyph-module
glyph-block Letter-Latin-Upper-D : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared-Shapes : LetterBarOverlay
define [DArcShapeT sink df top right offset sw fRound] : glyph-proc
local mockWidth : right + (df.width - df.rightSB)
@ -85,14 +86,16 @@ glyph-block Letter-Latin-Upper-D : begin
link-reduced-variant 'D/sansSerif' 'D' MathSansSerif
derive-glyphs 'Eth' 0xD0 'D' : lambda [src gr] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS
include : HOverlayBar (SB * 0.3) [mix (SB + Stroke) (RightSB - Stroke) 0.55] (CAP * OverlayPos)
include : LetterBarOverlay.l.in SB Stroke (CAP - Stroke)
space -- { 0 (RightSB - Stroke * HVContrast) }
alias 'Dcroat' 0x110 'Eth'
alias 'arficanD' 0x189 'Eth'
select-variant 'smcpD' 0x1D05 (follow -- 'D')
derive-glyphs 'smcpEth' 0x1D06 'smcpD' : lambda [src gr] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS
include : HOverlayBar (SB * 0.3) [mix (SB + Stroke) (RightSB - Stroke) 0.55] (XH * OverlayPos)
include : LetterBarOverlay.l.in SB Stroke (XH - Stroke)
space -- { 0 (RightSB - Stroke * HVContrast) }
derive-glyphs 'Dhookleft' 0x18a 'D' : lambda [src gr] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS

View file

@ -8,6 +8,7 @@ glyph-module
glyph-block Letter-Latin-Upper-F : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared-Shapes : LetterBarOverlay
glyph-block-export xMidBarShrink
define [xMidBarShrink serifV] : [Math.max HalfStroke ((RightSB - SB) * 0.15)] + [if serifV (Stroke * 0.25) 0]
@ -62,9 +63,11 @@ glyph-block Letter-Latin-Upper-F : begin
create-glyph "currency/frenchFrancSign.\(suffix)" : glyph-proc
include [refer-glyph "F.\(suffix)"] AS_BASE ALSO_METRICS
include : HOverlayBar (SB * 0.5) (SB * 3 + Stroke * HVContrast) : Math.max
mix [if lb Stroke 0] ([yMidBar CAP] - HalfStroke) (1 / 2)
[mix [if lb Stroke 0] ([yMidBar CAP] - HalfStroke) (2 / 3)] - OverlayStroke / 2
include : LetterBarOverlay.l.in
x -- SB
bot -- [if lb Stroke 0]
top -- [yMidBar CAP] - HalfStroke
py -- 0.5
create-glyph "smcpF.\(suffix)" : glyph-proc
include : MarkSet.e

View file

@ -10,7 +10,7 @@ glyph-block Letter-Latin-Upper-G : begin
glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared-Shapes : DToothlessRise ShoulderMidKnotLhs
glyph-block-import Letter-Shared-Shapes : SerifedArcStart_RtlLhs ArcStartHookTop
glyph-block-import Letter-Shared-Shapes : ArcStartSerifR ArcStartInwardSerifR
glyph-block-import Letter-Shared-Shapes : ArcStartSerifR ArcStartInwardSerifR LetterBarOverlay
define TOOTHED 0
define TOOTHLESS-CORNER 1
@ -68,7 +68,13 @@ glyph-block Letter-Latin-Upper-G : begin
[Just TOOTHLESS-ROUNDED] : glyph-proc
define [OverlayBarOfG top] : begin
return : HOverlayBar [mix SB RightSB 0.5] [mix RightSB Width 0.7] [mix 0 (top / 2) 0.55]
return : LetterBarOverlay.r.in RightSB 0 (top / 2) OverlayPos (space -- {(SB + Stroke * HVContrast) Width})
create-glyph 'GBarOverlay' : LetterBarOverlay.r.in
x -- RightSB
bot -- 0
top -- (CAP / 2)
space -- { (SB + Stroke * HVContrast) Width }
define GConfig : object
toothedSeriflessHookless { TOOTHED CROSSBAR-NONE SLAB-NONE }
@ -104,7 +110,6 @@ glyph-block Letter-Latin-Upper-G : begin
create-glyph "G.\(suffix)" : glyph-proc
include : MarkSet.capital
include : GShape shape slabType crossBarShape CAP ArchDepthA ArchDepthB
create-forked-glyph "Gbar.\(suffix)" : OverlayBarOfG CAP
create-glyph "GHookTop.\(suffix)" : glyph-proc
include : MarkSet.capital
include : GShape shape SLAB-HOOK-TOP crossBarShape CAP ArchDepthA ArchDepthB
@ -122,9 +127,10 @@ glyph-block Letter-Latin-Upper-G : begin
select-variant 'smcpG' 0x262 (follow -- 'G')
select-variant 'GHookTop' 0x193
select-variant 'smcpGHookTop' 0x29B (follow -- 'GHookTop')
select-variant 'Gbar' 0x1E4 (follow -- 'G')
turned 'turnSansSerifG' 0x2141 'G/sansSerif' Middle (CAP / 2)
derive-composites 'Gbar' 0x1E4 'G' 'GBarOverlay'
glyph-block-import Letter-Blackboard : BBS BBD BBBarRight
define [BBGArcT sink offset top ada adb xTerm yTerm] : sink
widths.lhs BBS

View file

@ -11,7 +11,7 @@ glyph-block Letter-Latin-Upper-L : begin
glyph-block-import Mark-Shared-Metrics : markMiddle
glyph-block-import Mark-Above : aboveMarkMid
glyph-block-import Letter-Blackboard : BBS BBD
glyph-block-import Letter-Shared-Shapes : BeltOverlay
glyph-block-import Letter-Shared-Shapes : BeltOverlay LetterBarOverlay
define LBarLeftX : SB * 1.5
define [LShape top sgr] : glyph-proc
@ -36,14 +36,10 @@ glyph-block Letter-Latin-Upper-L : begin
create-glyph "smcpL.\(suffix)" : glyph-proc
include : MarkSet.e
include : LShape XH serifGrade
create-glyph "LBelt.\(suffix)" : glyph-proc
include [refer-glyph "L.\(suffix)"] AS_BASE ALSO_METRICS
include : BeltOverlay CAP (LBarLeftX + 0.5 * HVContrast * Stroke)
select-variant 'L' 'L'
link-reduced-variant 'L/sansSerif' 'L' MathSansSerif
select-variant 'smcpL' 0x29F (follow -- 'L')
select-variant 'LBelt' 0xA7AD (follow -- 'L')
turned 'turnL' 0xA780 'L' Middle (CAP / 2)
turned 'turnSansSerifL' 0x2142 'L.serifless' Middle (CAP / 2)
@ -82,5 +78,7 @@ glyph-block Letter-Latin-Upper-L : begin
include : refer-glyph "tildeAboveOverlay"
include : ApparentTranslate (SB * 1.5 + Stroke * HVContrast / 2 - markMiddle) (CAP * 0.525 - aboveMarkMid)
create-glyph 'LBarOverlay' : HOverlayBar (SB * 0.3) [mix (SB + Stroke) (RightSB - Stroke) 0.55] (CAP * OverlayPos)
create-glyph 'LBarOverlay' : LetterBarOverlay.l.in LBarLeftX 0 CAP
create-glyph 'LBeltOverlay' : BeltOverlay CAP (LBarLeftX + 0.5 * HVContrast * Stroke)
derive-composites 'LBar' 0x23D 'L' 'LBarOverlay'
derive-composites 'LBelt' 0xA7AD 'L' 'LBeltOverlay'

View file

@ -10,7 +10,7 @@ glyph-block Letter-Latin-Upper-T : begin
glyph-block-import Common-Derivatives
glyph-block-import Letter-Blackboard : BBS BBD
glyph-block-import Letter-Latin-Lower-M
glyph-block-import Letter-Shared-Shapes : CyrDescender
glyph-block-import Letter-Shared-Shapes : CyrDescender LetterBarOverlay
define [TLeftX df] : df.leftSB + OX * 1.5
define [TRightX df] : df.rightSB - OX * 1.5
@ -51,10 +51,7 @@ glyph-block Letter-Latin-Upper-T : begin
create-glyph "TBar.\(suffix)" : glyph-proc
include [refer-glyph "T.\(suffix)"] AS_BASE ALSO_METRICS
include : HOverlayBar
mix df.middle df.leftSB 0.8
mix df.middle df.rightSB 0.8
mix 0 CAP 0.45
include : LetterBarOverlay.m.in df.middle 0 CAP 0.45
create-glyph "Thookleft.\(suffix)" : glyph-proc
include [refer-glyph "T.\(suffix)"] AS_BASE ALSO_METRICS

View file

@ -40,7 +40,7 @@ glyph-block Letter-Latin-Upper-Y : begin
include : VBar Middle bot (cross + HalfStroke)
set-base-anchor 'overlay' Middle cross
define [YOverlayShape] : glyph-proc
define [YenOverlayShape] : glyph-proc
include : HOverlayBar SB RightSB (CAP * 0.45)
include : HOverlayBar SB RightSB (CAP * 0.25)
@ -119,6 +119,13 @@ glyph-block Letter-Latin-Upper-Y : begin
eject-contour 'serifRT'
include : SetGrekUpperTonos (OX - HookX / 3)
create-glyph "YStroke.\(suffix)" : glyph-proc
include [refer-glyph "Y.\(suffix)"] AS_BASE ALSO_METRICS
local b : YCrossPos CAP 0
local t : CAP - [if (slabType === SLAB-ALL || slabType === SLAB-MOTION) Stroke 0]
include : HOverlayBar [mix 0 SB 0.5] [mix Width RightSB 0.5] [mix b t 0.5]
Math.min OverlayStroke ((t - b) * 0.625)
select-variant 'Y' 'Y'
link-reduced-variant 'Y/sansSerif' 'Y' MathSansSerif
select-variant 'YHookTop' 0x1B3 (follow -- 'Y')
@ -132,7 +139,7 @@ glyph-block Letter-Latin-Upper-Y : begin
alias 'cyrl/Ue' 0x4AE 'Y'
derive-glyphs 'currency/yenSign' 0xA5 'Y' : lambda [src gr] : glyph-proc
include [refer-glyph src] AS_BASE ALSO_METRICS
include : YOverlayShape
include : YenOverlayShape
create-glyph 'YStrokeOverlay' : HOverlayBar ([mix 0 SB 0.5]) ([mix Width RightSB 0.5]) [mix 0 CAP 0.75]
derive-composites 'YStroke' 0x24E 'Y' 'YStrokeOverlay'

View file

@ -525,13 +525,20 @@ glyph-block Letter-Shared-Shapes : begin
glyph-proc
glyph-block-export HooktopLeftBar
define [HooktopLeftBar] : params [bottom] : glyph-proc
include : dispiro
define [HooktopLeftBar] : params [[bottom 0]] : glyph-proc
local yTurn : CAP - Hook - HalfStroke
if (bottom + TanSlope * HVContrast * Stroke < yTurn)
: then : include : dispiro
widths.lhs
straight.left.start (SB + HalfStroke * HVContrast + HookX) Ascender
archv
flat SB (CAP - Hook - HalfStroke)
curl SB [fallback bottom 0] [heading Downward]
curl SB bottom [heading Downward]
: else : include : dispiro
widths.lhs
straight.left.start (SB + HalfStroke * HVContrast + HookX) Ascender
archv
straight.down.end SB bottom [heading Downward]
glyph-block-export BeltOverlay
define [BeltOverlay top xMiddle] : begin
@ -546,3 +553,46 @@ glyph-block Letter-Shared-Shapes : begin
arcvh
flat (xMiddle - HalfStroke - r * 1.5) (0.5 * top - r)
curl (xMiddle + HalfStroke + r * 1.5 + fine) (0.5 * top - r)
glyph-block-export LetterBarOverlay
define [LetterBarOverlay] : params [x y space refSw pXInSw sw] : begin
local {xLeftSpace xRightSpace} space
local xLeftEdge : x - pXInSw * refSw * HVContrast
local xRightEdge : x + (1 - pXInSw) * refSw * HVContrast
local xStrokeCenter : mix xLeftEdge xRightEdge 0.5
return : HOverlayBar
Math.max [mix xLeftSpace xLeftEdge 0.3] (xStrokeCenter - 0.75 * LongJut)
Math.min [mix xRightSpace xRightEdge 0.3] (xStrokeCenter + 0.75 * LongJut)
begin y
begin sw
set LetterBarOverlay.l : function []
params [x y [space {0 Width}] [refSw Stroke] [sw OverlayStroke]] : begin
LetterBarOverlay x y (space -- space) (refSw -- refSw) (pXInSw -- 0) (sw -- sw)
set LetterBarOverlay.m : function []
params [x y [space {0 Width}] [refSw Stroke] [sw OverlayStroke]] : begin
LetterBarOverlay x y (space -- space) (refSw -- refSw) (pXInSw -- 0.5) (sw -- sw)
set LetterBarOverlay.r : function []
params [x y [space {0 Width}] [refSw Stroke] [sw OverlayStroke]] : begin
LetterBarOverlay x y (space -- space) (refSw -- refSw) (pXInSw -- 1) (sw -- sw)
define [calcYAndSw bot top py sw] : begin
local y : mix bot top py
local sw1 : Math.min sw (1.25 * (top - bot) * py) (1.25 * (top - bot) * (1 - py))
return { y sw1 }
set LetterBarOverlay.l.in : function []
params [x bot top [py OverlayPos] [space {0 Width}] [refSw Stroke] [sw OverlayStroke]]
: begin
local { y sw1 } : calcYAndSw bot top py sw
LetterBarOverlay x y (space -- space) (refSw -- refSw) (pXInSw -- 0) (sw -- sw1)
set LetterBarOverlay.m.in : function []
params [x bot top [py OverlayPos] [space {0 Width}] [refSw Stroke] [sw OverlayStroke]]
: begin
local { y sw1 } : calcYAndSw bot top py sw
LetterBarOverlay x y (space -- space) (refSw -- refSw) (pXInSw -- 0.5) (sw -- sw1)
set LetterBarOverlay.r.in : function []
params [x bot top [py OverlayPos] [space {0 Width}] [refSw Stroke] [sw OverlayStroke]]
: begin
local { y sw1 } : calcYAndSw bot top py sw
LetterBarOverlay x y (space -- space) (refSw -- refSw) (pXInSw -- 1) (sw -- sw1)

View file

@ -10,6 +10,7 @@ glyph-module
glyph-block Symbol-Currency : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared-Shapes : LetterBarOverlay
create-glyph 'currency' 0xA4 : glyph-proc
local sw : AdviceStroke 3.5
@ -22,28 +23,30 @@ glyph-block Symbol-Currency : begin
flat (Middle + radius * 0.87 * [Math.cos angle]) (SymbolMid + radius * 0.87 * [Math.sin angle])
curl (Middle + radius * [Math.sqrt 2] * [Math.cos angle]) (SymbolMid + radius * [Math.sqrt 2] * [Math.sin angle])
define [SterlineBaseShape] : glyph-proc
local barLeft : [mix SB RightSB 0.2] - Stroke * 0.1
local hookEndX : Math.max (barLeft + Stroke * 2.25 * HVContrast) [mix SB RightSB 0.95]
include : union
dispiro
g4 hookEndX (CAP - Hook * 0.85) [widths.lhs]
hookstart (CAP - O) (tight -- true)
flat barLeft [CAP - ArchDepthA * 0.75]
curl barLeft [mix Stroke CAP 0.3]
g4 SB Stroke
HBarBottom SB RightSB 0
do "Sterling"
define xBarLeft : [mix SB RightSB 0.2] - Stroke * 0.1
define [BaseShape] : glyph-proc
local xBarLeft : [mix SB RightSB 0.2] - Stroke * 0.1
local hookEndX : Math.max (xBarLeft + Stroke * 2.25 * HVContrast) [mix SB RightSB 0.95]
include : union
dispiro
g4 hookEndX (CAP - Hook * 0.85) [widths.lhs]
hookstart (CAP - O) (tight -- true)
flat xBarLeft [CAP - ArchDepthA * 0.75]
curl xBarLeft [mix Stroke CAP 0.3]
g4 SB Stroke
HBarBottom SB RightSB 0
create-glyph 'currency/sterlingSign' 0xA3 : glyph-proc
set-width Width
include : SterlineBaseShape
include : HOverlayBar [mix SB RightSB 0.05] [mix SB RightSB 0.7] (CAP * 0.53)
create-glyph 'currency/sterlingSign' 0xA3 : glyph-proc
set-width Width
include : BaseShape
include : LetterBarOverlay.l xBarLeft (CAP * 0.5)
create-glyph 'currency/liraSymbolSign' 0x20A4 : glyph-proc
set-width Width
include : SterlineBaseShape
include : HOverlayBar [mix SB RightSB 0.05] [mix SB RightSB 0.7] (CAP * 0.4)
include : HOverlayBar [mix SB RightSB 0.05] [mix SB RightSB 0.7] (CAP * 0.63)
create-glyph 'currency/liraSymbolSign' 0x20A4 : glyph-proc
set-width Width
include : BaseShape
include : LetterBarOverlay.l xBarLeft (CAP * 0.37)
include : LetterBarOverlay.l xBarLeft (CAP * 0.60 - OverlayStroke * 0.25)
glyph-block Symbol-Currency-Letter-Derived : begin
glyph-block-import CommonShapes