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`.
|
- `n`.
|
||||||
- `q`.
|
- `q`.
|
||||||
- `u`.
|
- `u`.
|
||||||
|
- Long-S (`ſ`).
|
||||||
|
- Eszet (`ß`).
|
||||||
- Greek Small Iota (`ι`).
|
- Greek Small Iota (`ι`).
|
||||||
- Upper Gamma (`Γ`).
|
- Upper Gamma (`Γ`).
|
||||||
- Cyrillic Ze (`З` and `з`).
|
- Cyrillic Ze (`З` and `з`).
|
||||||
|
@ -72,6 +74,7 @@
|
||||||
- Add tailed variants for Cyrillic El, En, Che, Yery and Ya (#972).
|
- 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 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 top-left serifed variant for `m` (#1052).
|
||||||
|
- Add descending variants for Long-S and Eszet (#1070).
|
||||||
- Add SS18 to represent Input Mono (#990).
|
- Add SS18 to represent Input Mono (#990).
|
||||||
* Fixes of variant selector application on derived letters or letter forms, including:
|
* Fixes of variant selector application on derived letters or letter forms, including:
|
||||||
- Cyrillic En (#1006).
|
- Cyrillic En (#1006).
|
||||||
|
|
|
@ -11,6 +11,10 @@ glyph-block Letter-Latin-Eszet : begin
|
||||||
glyph-block-import Common-Derivatives
|
glyph-block-import Common-Derivatives
|
||||||
glyph-block-import Letter-Shared-Shapes : FlatHookDepth
|
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 ymiddle : [mix 0 CAP 0.5] - HalfStroke
|
||||||
local ymiddleCap : [mix 0 CAP 0.54] - HalfStroke
|
local ymiddleCap : [mix 0 CAP 0.54] - HalfStroke
|
||||||
local xmiddle : Math.max (SB + Stroke * HVContrast * 1.2) (RightSB - ymiddle / 2 - Stroke * 0.75)
|
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)
|
widths.center (Stroke * 1.1)
|
||||||
corner tl (tm - Stroke) [heading Upward]
|
corner tl (tm - Stroke) [heading Upward]
|
||||||
corner (RightSB - HalfStroke * 1.2 - OX) t [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
|
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
|
define [SulzbacherBody slab tail] : glyph-proc
|
||||||
|
@ -76,8 +84,12 @@ glyph-block Letter-Latin-Eszet : begin
|
||||||
arcvh
|
arcvh
|
||||||
flat xmiddleBot 0
|
flat xmiddleBot 0
|
||||||
curl xfinal 0 [heading Leftward]
|
curl xfinal 0 [heading Leftward]
|
||||||
if tail : include : VerticalHook (SB + HalfStroke * HVContrast) 0 (-Hook * 1.2) Hook
|
|
||||||
if slab : include : LeftwardBottomSerif SB 0 SideJut
|
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
|
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]
|
alsoThru.g2 0.5 0.50 [widths.center swInner]
|
||||||
g4 (RightSB - OX) (innerSmoothB - 2 * TanSlope * swInner) [widths.rhs.heading swInner Downward]
|
g4 (RightSB - OX) (innerSmoothB - 2 * TanSlope * swInner) [widths.rhs.heading swInner Downward]
|
||||||
arcvh
|
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]
|
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
|
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.traditional' : TraditionalBody false SLAB NO-TAIL
|
||||||
create-glyph 'eszet.traditionalFlatHook' : TraditionalBody true SLAB false
|
create-glyph 'eszet.traditionalDescending' : TraditionalBody false false DESCENDING
|
||||||
create-glyph 'eszet.traditionalFlatHookTailed' : TraditionalBody true false true
|
create-glyph 'eszet.traditionalTailed' : TraditionalBody false false TAILED
|
||||||
create-glyph 'eszet.sulzbacher' : SulzbacherBody SLAB false
|
create-glyph 'eszet.traditionalFlatHook' : TraditionalBody true SLAB NO-TAIL
|
||||||
create-glyph 'eszet.sulzbacherTailed' : SulzbacherBody false true
|
create-glyph 'eszet.traditionalFlatHookDescending' : TraditionalBody true false DESCENDING
|
||||||
create-glyph 'eszet.longSSLig' : LongSSLigBody SLAB false
|
create-glyph 'eszet.traditionalFlatHookTailed' : TraditionalBody true false TAILED
|
||||||
create-glyph 'eszet.longSSLigTailed' : LongSSLigBody false true
|
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
|
select-variant 'eszet' 0xDF
|
||||||
|
|
||||||
|
|
|
@ -80,23 +80,42 @@ glyph-block Letter-Latin-Long-S : begin
|
||||||
|
|
||||||
create-forked-glyph 'longsbar.bentHookTailed' : LongSBentHookOverlayBar m
|
create-forked-glyph 'longsbar.bentHookTailed' : LongSBentHookOverlayBar m
|
||||||
|
|
||||||
create-glyph 'longs.flatHook' : glyph-proc
|
create-glyph 'longs.bentHookDescending' : glyph-proc
|
||||||
include : MarkSet.b
|
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 hd : FlatHookDepth [DivFrame 1]
|
||||||
local m : Middle - JBalance - HalfStroke * HVContrast
|
|
||||||
include : dispiro
|
include : dispiro
|
||||||
widths.lhs
|
widths.lhs
|
||||||
flat RightSB CAP
|
flat RightSB CAP
|
||||||
curl (m + hd.x) CAP
|
curl (m + hd.x) CAP
|
||||||
archv
|
archv
|
||||||
flat m (CAP - hd.y)
|
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)
|
set-base-anchor 'overlay' (m + Stroke * 0.65 * HVContrast) (CAP * OverlayPos)
|
||||||
if SLAB : begin
|
if fSlab : begin
|
||||||
include : tagged 'serifLB' : CenterBottomSerif (m + HalfStroke * HVContrast + RBalance * 0.35) 0 (Jut + RBalance * 0.65)
|
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-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
|
create-glyph 'longs.flatHookTailed' : glyph-proc
|
||||||
include : MarkSet.if
|
include : MarkSet.if
|
||||||
include : LongSShape CAP Descender (HookX + 0.25 * Stroke) Hook
|
include : LongSShape CAP Descender (HookX + 0.25 * Stroke) Hook
|
||||||
|
|
|
@ -4372,13 +4372,23 @@ rank = 2
|
||||||
description = "Long-S with flat hook"
|
description = "Long-S with flat hook"
|
||||||
selector."longs" = "flatHook"
|
selector."longs" = "flatHook"
|
||||||
|
|
||||||
[prime.long-s.variants.bent-hook-tailed]
|
[prime.long-s.variants.bent-hook-descending]
|
||||||
rank = 3
|
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"
|
description = "Long-S with standard bending hook and tail"
|
||||||
selector."longs" = "bentHookTailed"
|
selector."longs" = "bentHookTailed"
|
||||||
|
|
||||||
[prime.long-s.variants.flat-hook-tailed]
|
[prime.long-s.variants.flat-hook-tailed]
|
||||||
rank = 4
|
rank = 6
|
||||||
description = "Long-S with flat hook and tail"
|
description = "Long-S with flat hook and tail"
|
||||||
selector."longs" = "flatHookTailed"
|
selector."longs" = "flatHookTailed"
|
||||||
|
|
||||||
|
@ -4394,38 +4404,58 @@ rank = 1
|
||||||
description = "Traditional, Fraktur-like Eszet (`ß`)"
|
description = "Traditional, Fraktur-like Eszet (`ß`)"
|
||||||
selector.eszet = "traditional"
|
selector.eszet = "traditional"
|
||||||
|
|
||||||
[prime.eszet.variants.traditional-tailed]
|
[prime.eszet.variants.traditional-descending]
|
||||||
rank = 2
|
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"
|
description = "Traditional, Fraktur-like Eszet (`ß`) with descending tail"
|
||||||
selector.eszet = "traditionalTailed"
|
selector.eszet = "traditionalTailed"
|
||||||
|
|
||||||
[prime.eszet.variants.traditional-flat-hook]
|
[prime.eszet.variants.traditional-flat-hook]
|
||||||
rank = 3
|
rank = 4
|
||||||
description = "Traditional, Fraktur-like Eszet (`ß`) with flat hook"
|
description = "Traditional, Fraktur-like Eszet (`ß`) with flat hook"
|
||||||
selector.eszet = "traditionalFlatHook"
|
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]
|
[prime.eszet.variants.traditional-flat-hook-tailed]
|
||||||
rank = 4
|
rank = 6
|
||||||
description = "Traditional, Fraktur-like Eszet (`ß`) with flat hook and descending tail"
|
description = "Traditional, Fraktur-like Eszet (`ß`) with flat hook and descending tail"
|
||||||
selector.eszet = "traditionalFlatHookTailed"
|
selector.eszet = "traditionalFlatHookTailed"
|
||||||
|
|
||||||
[prime.eszet.variants.sulzbacher]
|
[prime.eszet.variants.sulzbacher]
|
||||||
rank = 5
|
rank = 7
|
||||||
description = "More modern, beta-like Eszet (`ß`)"
|
description = "More modern, beta-like Eszet (`ß`)"
|
||||||
selector.eszet = "sulzbacher"
|
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]
|
[prime.eszet.variants.sulzbacher-tailed]
|
||||||
rank = 6
|
rank = 9
|
||||||
description = "More modern, beta-like Eszet (`ß`) with descending tail"
|
description = "More modern, beta-like Eszet (`ß`) with descending tail"
|
||||||
selector.eszet = "sulzbacherTailed"
|
selector.eszet = "sulzbacherTailed"
|
||||||
|
|
||||||
[prime.eszet.variants.longs-s-lig]
|
[prime.eszet.variants.longs-s-lig]
|
||||||
rank = 7
|
rank = 10
|
||||||
description = "Eszet (`ß`) shown as a ligature of long-S (`ſ`) and `s`"
|
description = "Eszet (`ß`) shown as a ligature of long-S (`ſ`) and `s`"
|
||||||
selector.eszet = "longSSLig"
|
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]
|
[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"
|
description = "Eszet (`ß`) shown as a ligature of long-S (`ſ`) and `s`, with descending tail"
|
||||||
selector.eszet = "longSSLigTailed"
|
selector.eszet = "longSSLigTailed"
|
||||||
|
|
||||||
|
@ -6402,6 +6432,8 @@ f = "flat-hook-tailed"
|
||||||
i = "tailed-serifed"
|
i = "tailed-serifed"
|
||||||
k = "cursive-serifless"
|
k = "cursive-serifless"
|
||||||
l = "tailed"
|
l = "tailed"
|
||||||
|
eszet = "longs-s-lig-descending"
|
||||||
|
long-s = "flat-hook-descending"
|
||||||
lower-iota = "tailed-serifed"
|
lower-iota = "tailed-serifed"
|
||||||
|
|
||||||
[composite.ss03.slab-override.design]
|
[composite.ss03.slab-override.design]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue