From 5baff3b7ac1d30f31eb18286bececde8fc9e1e47 Mon Sep 17 00:00:00 2001 From: be5invis Date: Sun, 16 May 2021 02:04:32 -0700 Subject: [PATCH] Move long-s variants selectable, like eszet (#999) --- .../glyphs/letter/latin-ext/f-ligatures.ptl | 6 +- font-src/glyphs/letter/latin-ext/long-s.ptl | 65 +++++++++++-------- .../glyphs/letter/latin-ext/orthography.ptl | 2 - font-src/glyphs/letter/latin/lower-f.ptl | 17 +++-- params/variants.toml | 22 +++++-- 5 files changed, 68 insertions(+), 44 deletions(-) diff --git a/font-src/glyphs/letter/latin-ext/f-ligatures.ptl b/font-src/glyphs/letter/latin-ext/f-ligatures.ptl index 87f38731d..9ebff9d43 100644 --- a/font-src/glyphs/letter/latin-ext/f-ligatures.ptl +++ b/font-src/glyphs/letter/latin-ext/f-ligatures.ptl @@ -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 diff --git a/font-src/glyphs/letter/latin-ext/long-s.ptl b/font-src/glyphs/letter/latin-ext/long-s.ptl index e2879df20..c4753e4b1 100644 --- a/font-src/glyphs/letter/latin-ext/long-s.ptl +++ b/font-src/glyphs/letter/latin-ext/long-s.ptl @@ -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 - m + HalfStroke * HVContrast - LongJut * 0.75 - m + HalfStroke * HVContrast + LongJut * 0.75 - [mix (XH - Stroke) CAP 0.5] - HalfStroke + 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 diff --git a/font-src/glyphs/letter/latin-ext/orthography.ptl b/font-src/glyphs/letter/latin-ext/orthography.ptl index 2b53e4f06..f8450c139 100644 --- a/font-src/glyphs/letter/latin-ext/orthography.ptl +++ b/font-src/glyphs/letter/latin-ext/orthography.ptl @@ -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 diff --git a/font-src/glyphs/letter/latin/lower-f.ptl b/font-src/glyphs/letter/latin/lower-f.ptl index 7e91e1342..c693ce57c 100644 --- a/font-src/glyphs/letter/latin/lower-f.ptl +++ b/font-src/glyphs/letter/latin/lower-f.ptl @@ -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 diff --git a/params/variants.toml b/params/variants.toml index 150c529ec..65e1f6ec6 100644 --- a/params/variants.toml +++ b/params/variants.toml @@ -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"