Add descending variants for Long-S and Eszet (#1070).
This commit is contained in:
parent
b9be37f71f
commit
293717d6de
4 changed files with 101 additions and 27 deletions
|
@ -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).
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue