Add descending variants for Long-S and Eszet (#1070).

This commit is contained in:
be5invis 2021-05-26 01:17:20 -07:00
parent b9be37f71f
commit 293717d6de
4 changed files with 101 additions and 27 deletions

View file

@ -15,6 +15,8 @@
- `n`.
- `q`.
- `u`.
- Long-S (`ſ`).
- Eszet (`ß`).
- Greek Small Iota (`ι`).
- Upper Gamma (`Γ`).
- Cyrillic Ze (`З` and `з`).
@ -72,6 +74,7 @@
- Add tailed variants for Cyrillic El, En, Che, Yery and Ya (#972).
- Add more serifed variants for `K`, `k`, `n`, Cyrillic Ka (`К` and `к`) and Cyrillic Ef (`ф`) to better reproduce PT Mono (#986).
- Add top-left serifed variant for `m` (#1052).
- Add descending variants for Long-S and Eszet (#1070).
- Add SS18 to represent Input Mono (#990).
* Fixes of variant selector application on derived letters or letter forms, including:
- Cyrillic En (#1006).

View file

@ -11,6 +11,10 @@ glyph-block Letter-Latin-Eszet : begin
glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared-Shapes : FlatHookDepth
define NO-TAIL 0
define DESCENDING 1
define TAILED 2
local ymiddle : [mix 0 CAP 0.5] - HalfStroke
local ymiddleCap : [mix 0 CAP 0.54] - HalfStroke
local xmiddle : Math.max (SB + Stroke * HVContrast * 1.2) (RightSB - ymiddle / 2 - Stroke * 0.75)
@ -53,8 +57,12 @@ glyph-block Letter-Latin-Eszet : begin
widths.center (Stroke * 1.1)
corner tl (tm - Stroke) [heading Upward]
corner (RightSB - HalfStroke * 1.2 - OX) t [heading Upward]
if tail : include : VerticalHook (l + HalfStroke * HVContrast) 0 (-Hook * 1.2) Hook
if slab : include : LeftwardBottomSerif SB 0 SideJut
include : match tail
[Just DESCENDING] : VBarLeft l Descender 0
[Just TAILED] : VerticalHook (l + HalfStroke * HVContrast) 0 (-Hook * 1.2) Hook
__ : glyph-proc
define [SulzbacherBody slab tail] : glyph-proc
@ -76,8 +84,12 @@ glyph-block Letter-Latin-Eszet : begin
arcvh
flat xmiddleBot 0
curl xfinal 0 [heading Leftward]
if tail : include : VerticalHook (SB + HalfStroke * HVContrast) 0 (-Hook * 1.2) Hook
if slab : include : LeftwardBottomSerif SB 0 SideJut
include : match tail
[Just DESCENDING] : VBarLeft SB Descender 0
[Just TAILED] : VerticalHook (SB + HalfStroke * HVContrast) 0 (-Hook * 1.2) Hook
__ : glyph-proc
define [LongSSLigBody slab tail] : glyph-proc
@ -113,20 +125,28 @@ glyph-block Letter-Latin-Eszet : begin
alsoThru.g2 0.5 0.50 [widths.center swInner]
g4 (RightSB - OX) (innerSmoothB - 2 * TanSlope * swInner) [widths.rhs.heading swInner Downward]
arcvh
flat ([Math.max (sEndX + 1) : Math.min (RightSB - innerSmoothB) [mix sEndX RightSB 0.375]] + CorrectionOMidX * swInner / 2 ) 0
flat ([Math.max (sEndX + 1) : Math.min (RightSB - innerSmoothB) [mix sEndX RightSB 0.375]] + CorrectionOMidX * swInner / 2 + TanSlope * swInner ) 0
curl sEndX 0 [heading Leftward]
if tail : include : VerticalHook (SB + 0.5 * swOuter * HVContrast) 0 (-Hook * 1.2) Hook swOuter
if slab : include : LeftwardBottomSerif SB 0 SideJut
include : match tail
[Just DESCENDING] : VBarLeft SB Descender 0
[Just TAILED] : VerticalHook (SB + 0.5 * swOuter * HVContrast) 0 (-Hook * 1.2) Hook
__ : glyph-proc
create-glyph 'eszet.traditional' : TraditionalBody false SLAB false
create-glyph 'eszet.traditionalTailed' : TraditionalBody false false true
create-glyph 'eszet.traditionalFlatHook' : TraditionalBody true SLAB false
create-glyph 'eszet.traditionalFlatHookTailed' : TraditionalBody true false true
create-glyph 'eszet.sulzbacher' : SulzbacherBody SLAB false
create-glyph 'eszet.sulzbacherTailed' : SulzbacherBody false true
create-glyph 'eszet.longSSLig' : LongSSLigBody SLAB false
create-glyph 'eszet.longSSLigTailed' : LongSSLigBody false true
create-glyph 'eszet.traditional' : TraditionalBody false SLAB NO-TAIL
create-glyph 'eszet.traditionalDescending' : TraditionalBody false false DESCENDING
create-glyph 'eszet.traditionalTailed' : TraditionalBody false false TAILED
create-glyph 'eszet.traditionalFlatHook' : TraditionalBody true SLAB NO-TAIL
create-glyph 'eszet.traditionalFlatHookDescending' : TraditionalBody true false DESCENDING
create-glyph 'eszet.traditionalFlatHookTailed' : TraditionalBody true false TAILED
create-glyph 'eszet.sulzbacher' : SulzbacherBody SLAB NO-TAIL
create-glyph 'eszet.sulzbacherDescending' : SulzbacherBody false DESCENDING
create-glyph 'eszet.sulzbacherTailed' : SulzbacherBody false TAILED
create-glyph 'eszet.longSSLig' : LongSSLigBody SLAB NO-TAIL
create-glyph 'eszet.longSSLigDescending' : LongSSLigBody false DESCENDING
create-glyph 'eszet.longSSLigTailed' : LongSSLigBody false TAILED
select-variant 'eszet' 0xDF

View file

@ -80,23 +80,42 @@ glyph-block Letter-Latin-Long-S : begin
create-forked-glyph 'longsbar.bentHookTailed' : LongSBentHookOverlayBar m
create-glyph 'longs.flatHook' : glyph-proc
include : MarkSet.b
create-glyph 'longs.bentHookDescending' : glyph-proc
include : MarkSet.if
local m : StdSmallFBarLeftPos true
include : LongSBentHookBase (XH / 2) m false
include : VBarLeft m Descender 0
create-forked-glyph 'longsbar.bentHookDescending' : LongSBentHookOverlayBar m
define [LongSFlatHookNoTailShape m yBot fSlab] : glyph-proc
local hd : FlatHookDepth [DivFrame 1]
local m : Middle - JBalance - HalfStroke * HVContrast
include : dispiro
widths.lhs
flat RightSB CAP
curl (m + hd.x) CAP
archv
flat m (CAP - hd.y)
curl m 0 [heading Downward]
curl m yBot [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 : begin
include : tagged 'serifLB' : CenterBottomSerif (m + HalfStroke * HVContrast + RBalance * 0.35) yBot (Jut + RBalance * 0.65)
create-glyph 'longs.flatHook' : glyph-proc
include : MarkSet.b
local m : Middle - JBalance - HalfStroke * HVContrast
include : LongSFlatHookNoTailShape m 0 SLAB
create-forked-glyph 'longsbar.flatHook' : LongSBentHookOverlayBar m
create-glyph 'longs.flatHookDescending' : glyph-proc
include : MarkSet.if
local m : Middle - JBalance - HalfStroke * HVContrast
include : LongSFlatHookNoTailShape m Descender false
create-forked-glyph 'longsbar.flatHookDescending' : LongSBentHookOverlayBar m
create-glyph 'longs.flatHookTailed' : glyph-proc
include : MarkSet.if
include : LongSShape CAP Descender (HookX + 0.25 * Stroke) Hook

View file

@ -4372,13 +4372,23 @@ rank = 2
description = "Long-S with flat hook"
selector."longs" = "flatHook"
[prime.long-s.variants.bent-hook-tailed]
[prime.long-s.variants.bent-hook-descending]
rank = 3
description = "Long-S with standard bending hook and descends baseline"
selector."longs" = "bentHookDescending"
[prime.long-s.variants.flat-hook-descending]
rank = 4
description = "Long-S with flat hook and descends baseline"
selector."longs" = "flatHookDescending"
[prime.long-s.variants.bent-hook-tailed]
rank = 5
description = "Long-S with standard bending hook and tail"
selector."longs" = "bentHookTailed"
[prime.long-s.variants.flat-hook-tailed]
rank = 4
rank = 6
description = "Long-S with flat hook and tail"
selector."longs" = "flatHookTailed"
@ -4394,38 +4404,58 @@ rank = 1
description = "Traditional, Fraktur-like Eszet (`ß`)"
selector.eszet = "traditional"
[prime.eszet.variants.traditional-tailed]
[prime.eszet.variants.traditional-descending]
rank = 2
description = "Traditional, Fraktur-like Eszet (`ß`) with descending bar"
selector.eszet = "traditionalDescending"
[prime.eszet.variants.traditional-tailed]
rank = 3
description = "Traditional, Fraktur-like Eszet (`ß`) with descending tail"
selector.eszet = "traditionalTailed"
[prime.eszet.variants.traditional-flat-hook]
rank = 3
rank = 4
description = "Traditional, Fraktur-like Eszet (`ß`) with flat hook"
selector.eszet = "traditionalFlatHook"
[prime.eszet.variants.traditional-flat-hook-descending]
rank = 5
description = "Traditional, Fraktur-like Eszet (`ß`) with flat hook and descending bar"
selector.eszet = "traditionalFlatHookDescending"
[prime.eszet.variants.traditional-flat-hook-tailed]
rank = 4
rank = 6
description = "Traditional, Fraktur-like Eszet (`ß`) with flat hook and descending tail"
selector.eszet = "traditionalFlatHookTailed"
[prime.eszet.variants.sulzbacher]
rank = 5
rank = 7
description = "More modern, beta-like Eszet (`ß`)"
selector.eszet = "sulzbacher"
[prime.eszet.variants.sulzbacher-descending]
rank = 8
description = "More modern, beta-like Eszet (`ß`) with descending bar"
selector.eszet = "sulzbacherDescending"
[prime.eszet.variants.sulzbacher-tailed]
rank = 6
rank = 9
description = "More modern, beta-like Eszet (`ß`) with descending tail"
selector.eszet = "sulzbacherTailed"
[prime.eszet.variants.longs-s-lig]
rank = 7
rank = 10
description = "Eszet (`ß`) shown as a ligature of long-S (`ſ`) and `s`"
selector.eszet = "longSSLig"
[prime.eszet.variants.longs-s-lig-descending]
rank = 11
description = "Eszet (`ß`) shown as a ligature of long-S (`ſ`) and `s`, with descending bar"
selector.eszet = "longSSLigDescending"
[prime.eszet.variants.longs-s-lig-tailed]
rank = 8
rank = 12
description = "Eszet (`ß`) shown as a ligature of long-S (`ſ`) and `s`, with descending tail"
selector.eszet = "longSSLigTailed"
@ -6402,6 +6432,8 @@ f = "flat-hook-tailed"
i = "tailed-serifed"
k = "cursive-serifless"
l = "tailed"
eszet = "longs-s-lig-descending"
long-s = "flat-hook-descending"
lower-iota = "tailed-serifed"
[composite.ss03.slab-override.design]