Move long-s variants selectable, like eszet (#999)

This commit is contained in:
be5invis 2021-05-16 02:04:32 -07:00
parent 0a032ddeef
commit 5baff3b7ac
5 changed files with 68 additions and 44 deletions

View file

@ -19,7 +19,7 @@ glyph-block Letter-Latin-F-ligatures : begin
create-glyph 'f_i.upright' : glyph-proc
include : MarkSet.b
include : new-glyph : glyph-proc
include : refer-glyph "longs.upright"
include : refer-glyph "longs.bentHook"
include : Translate shift 0
include : VBarRight barr 0 fbar
include : HBarTop hbarleft barr fbar
@ -28,7 +28,7 @@ glyph-block Letter-Latin-F-ligatures : begin
create-glyph 'f_i.italic' : glyph-proc
include : MarkSet.b
include : new-glyph : glyph-proc
include : refer-glyph "longs.italic"
include : refer-glyph "longs.flatHookTailed"
include : Translate shift 0
include : VBarRight barr 0 fbar
include : HBarTop hbarleft barr fbar
@ -53,7 +53,7 @@ glyph-block Letter-Latin-F-ligatures : begin
create-glyph 'f_l.italic' : glyph-proc
include : new-glyph : glyph-proc
include [refer-glyph 'longs.italic'] AS_BASE
include [refer-glyph 'longs.flatHookTailed'] AS_BASE
include : Translate shift 0
include : VBarRight barr 0 CAP
include : HBarTop hbarleft [mix SB barr 0.65] fbar

View file

@ -10,6 +10,7 @@ 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-Latin-Lower-F : StdSmallFBarLeftPos StdSmallFBarLeftPos0
define [LongSUpperHalf sign x top bottom hookX hookY _sw] : begin
local hd : FlatHookDepth [DivFrame 1]
@ -42,27 +43,44 @@ glyph-block Letter-Latin-Long-S : begin
LongSUpperHalf (-1) Middle top [mix top bottom 0.5] hookx hooky fine
LongSLowerHalf (-1) Middle [mix top bottom 0.5] bottom hookx hooky fine
create-glyph 'longs.upright.standard' : glyph-proc
include : MarkSet.b
local m : Middle - JBalance - HalfStroke * HVContrast
local r : m + (Width * 0.5) + Stroke * HVContrast - OXHook
define [LongSBentHookBase y0 m fSlab] : glyph-proc
include : dispiro
widths.lhs
g4 r (CAP - Hook)
g4 (RightSB + RBalance2 + [Math.max 0 (m - [StdSmallFBarLeftPos0])]) (CAP - Hook)
hookstart (CAP - O)
flat m (CAP - SmoothA)
curl m 0 [heading Downward]
set-base-anchor 'overlay' (m + Stroke * 0.65 * HVContrast) (CAP * OverlayPos)
if SLAB : begin
include : tagged 'serifLB' : CenterBottomSerif (m + HalfStroke * HVContrast + RBalance * 0.35) 0 (Jut + RBalance * 0.65)
if fSlab : include : tagged 'serifLB'
CenterBottomSerif (m + HalfStroke * HVContrast + RBalance * 0.35) 0 (Jut + RBalance * 0.65)
create-forked-glyph 'longsbar.upright.standard' : glyph-proc
include : HOverlayBar
define [LongSBentHookOverlayBar m] : HOverlayBar
m + HalfStroke * HVContrast - LongJut * 0.75
m + HalfStroke * HVContrast + LongJut * 0.75
[mix (XH - Stroke) CAP 0.5] - HalfStroke
create-glyph 'longs.upright.flatHook' : glyph-proc
define [LongSSymmetricOverlayBar m] : HOverlayBar
m - LongJut * 0.75
m + LongJut * 0.75
[mix (XH - Stroke) CAP 0.5] - HalfStroke
create-glyph 'longs.bentHook' : glyph-proc
include : MarkSet.b
local m : Middle - JBalance - HalfStroke * HVContrast
include : LongSBentHookBase 0 m SLAB
create-forked-glyph 'longsbar.bentHook' : LongSBentHookOverlayBar m
create-glyph 'longs.bentHookTailed' : glyph-proc
include : MarkSet.b
local m : StdSmallFBarLeftPos true
include : LongSBentHookBase (XH / 2) m false
include : LongSLowerHalf 1 (m + HalfStroke * HVContrast) (XH / 2 - O) Descender (HookX + 0.25 * Stroke) Hook Stroke
create-forked-glyph 'longsbar.bentHookTailed' : LongSBentHookOverlayBar m
create-glyph 'longs.flatHook' : glyph-proc
include : MarkSet.b
local hd : FlatHookDepth [DivFrame 1]
local m : Middle - JBalance - HalfStroke * HVContrast
@ -77,26 +95,17 @@ glyph-block Letter-Latin-Long-S : begin
if SLAB : begin
include : tagged 'serifLB' : CenterBottomSerif (m + HalfStroke * HVContrast + RBalance * 0.35) 0 (Jut + RBalance * 0.65)
create-forked-glyph 'longsbar.upright.flatHook' : glyph-proc
include : HOverlayBar
m + HalfStroke * HVContrast - LongJut * 0.75
m + HalfStroke * HVContrast + LongJut * 0.75
[mix (XH - Stroke) CAP 0.5] - HalfStroke
create-forked-glyph 'longsbar.flatHook' : LongSBentHookOverlayBar m
create-glyph 'longs.italic' : glyph-proc
create-glyph 'longs.flatHookTailed' : glyph-proc
include : MarkSet.if
include : LongSShape CAP Descender (HookX + 0.25 * Stroke) Hook
create-forked-glyph 'longsbar.italic' : glyph-proc
include : HOverlayBar
Middle - LongJut * 0.75
Middle + LongJut * 0.75
[mix (XH - Stroke) CAP 0.5] - HalfStroke
create-forked-glyph 'longsbar.flatHookTailed' : LongSSymmetricOverlayBar Middle
select-variant 'longs.upright'
select-variant 'longsbar.upright' null (follow -- 'longs.upright')
alias 'esh' 0x283 'longs.italic'
select-variant 'longs' 0x17F
select-variant 'longsbar' 0x1E9D (follow -- 'longs')
alias 'esh' 0x283 'longs.flatHookTailed'
create-glyph 'eshCurlyTail' 0x286 : glyph-proc
include : MarkSet.if

View file

@ -5,7 +5,5 @@ glyph-module
glyph-block Letter-Cyrillic-Orthography : begin
glyph-block-import Common-Derivatives
orthographic-italic 'longs' 0x17F
orthographic-italic 'longsbar' 0x1E9D
orthographic-italic 'f_i' 0xFB01
orthographic-italic 'f_l' 0xFB02

View file

@ -17,12 +17,11 @@ glyph-block Letter-Latin-Lower-F : begin
flat ([mix df.leftSB df.rightSB 0.02] + HalfStroke * TanSlope + (df.rightSB - df.leftSB) * shift) 0
curl ([mix df.leftSB df.rightSB 0.875] + HalfStroke * TanSlope + (df.rightSB - df.leftSB) * shift) 0
define SmallFOvershoot2 (O * 2)
define [StdFShapeT sink offset barleft sw] : sink
widths.lhs sw
g4 (RightSB + RBalance2 - (OX - O) - offset) (CAP - Hook * 0.75 - SmallFOvershoot2)
hookstart (CAP - O - SmallFOvershoot2 - offset) (tight -- true)
flat (barleft + offset) (CAP - SmoothA * 0.8 - SmallFOvershoot2)
g4 (RightSB + RBalance2 - (OX - O) - offset) (CAP - Hook * 0.75)
hookstart (CAP - O - offset) (tight -- true)
flat (barleft + offset) (CAP - SmoothA * 0.8)
[if offset corner curl] (barleft + offset) 0 [heading Downward]
if offset {[corner (RightSB + RBalance2 - (OX - O) - offset) 0]} {}
@ -44,10 +43,16 @@ glyph-block Letter-Latin-Lower-F : begin
flat xBarMiddle 0.1 [widths.center.heading Stroke Downward]
DiagonalTailL df xBarMiddle Descender [DiagonalTailStdDepth df Stroke] Stroke
glyph-block-export StdSmallFBarLeftPos
define [StdSmallFBarLeftPos barAtCenter] : [mix SB RightSB : if barAtCenter 0.45 0.35] - Stroke * [if barAtCenter 0.45 0.25] * HVContrast
glyph-block-export StdSmallFBarLeftPos0
define [StdSmallFBarLeftPos0] : [mix SB RightSB 0.35] - Stroke * 0.25 * HVContrast
define [StandardSmallFShape df m bh counterHook] : glyph-proc
local barAtCenter : (counterHook === CH-HOOK) || (counterHook === CH-DIAGONAL-HOOK)
local barLeft0 : [mix SB RightSB 0.35] - Stroke * 0.25 * HVContrast
local barLeft : [mix SB RightSB : if barAtCenter 0.45 0.35] - Stroke * [if barAtCenter 0.45 0.25] * HVContrast
local barLeft0 : StdSmallFBarLeftPos0
local barLeft : StdSmallFBarLeftPos barAtCenter
include : StdFShapeT dispiro 0 barLeft0 Stroke
include : Translate (barLeft - barLeft0) 0

View file

@ -3420,15 +3420,25 @@ sampler = "ſ"
samplerExplain = "Long-S"
tag = "cv51"
[prime.long-s.variants.standard]
[prime.long-s.variants.bent-hook]
rank = 1
description = "Long-S with standard hook"
selector."longs.upright" = "standard"
description = "Long-S with standard bending hook"
selector."longs" = "bentHook"
[prime.long-s.variants.flat-hook]
rank = 2
description = "Long-S with flat hook"
selector."longs.upright" = "flatHook"
selector."longs" = "flatHook"
[prime.long-s.variants.bent-hook-tailed]
rank = 3
description = "Long-S with standard bending hook and tail"
selector."longs" = "bentHookTailed"
[prime.long-s.variants.flat-hook-tailed]
rank = 4
description = "Long-S with flat hook and tail"
selector."longs" = "flatHookTailed"
@ -5054,7 +5064,7 @@ w = "straight"
x = "straight-serifless"
z = "straight-serifless"
# Non-latin
long-s = "standard"
long-s = "bent-hook"
turn-v = "straight"
latn-phi = "serifless"
lower-alpha = "crossing"
@ -5138,6 +5148,7 @@ l = "serifed-tailed"
u = "tailed"
y = "cursive"
eszet = "sulzbacher-tailed"
long-s = "flat-hook-tailed"
cyrl-ef = "cursive"
cyrl-yeri = "round"
cyrl-yery = "round"
@ -5833,6 +5844,7 @@ question = "corner-flat-hooked"
a = "single-storey-serifless"
f = "flat-hook-tailed"
y = "cursive-flat-hook"
long-s = "flat-hook-tailed"
[composite.ss14.slab-override.design]
capital-g = "toothless-rounded-serifed-hooked"