* Add diagonal-tailed variant of f (#795).

This commit is contained in:
be5invis 2021-01-19 03:40:09 -08:00
parent 3bca9bf91d
commit b8c11f57fc
5 changed files with 87 additions and 33 deletions

View file

@ -1,4 +1,4 @@
* Add diagonal-tailed variant of `i`, `j`, `k`, `l`, `t` (#795).
* Add diagonal-tailed variant of `f`, `i`, `j`, `k`, `l`, `t` (#795).
* Fix broken geometry of `K` and `%` under ultra-wide (#800).
* Add straight-bar AE (`Æ`), follows variant selector for `A` (#800).
* Refine the shape of Slab `S` and `s` to add serifs at both terminals (#800).

View file

@ -10,6 +10,7 @@ glyph-block Letter-Latin-Lower-F : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared-Shapes : CurlyTail FlatHookDepth
glyph-block-import Letter-Shared-Shapes : DiagonalTailL DiagonalTailStdDepth
define fovershoot : fallback para.fovershoot (O * 6)
@ -142,6 +143,12 @@ glyph-block Letter-Latin-Lower-F : begin
flat barRight [Math.min 0 (Descender + hd.y)]
curl barRight 0.1 [heading Upward]
define [SmallFDiagonalTail df barLeft] : begin
local xBarMiddle : barLeft + HalfStroke * HVContrast
return : dispiro
flat xBarMiddle 0.1 [widths.center.heading Stroke Downward]
DiagonalTailL df xBarMiddle Descender [DiagonalTailStdDepth df Stroke] Stroke
define [StandardSmallFShape df m bh counterHook] : glyph-proc
local barLeft0 : [mix SB RightSB 0.35] - Stroke * 0.25 * HVContrast
local barLeft : [mix SB RightSB : if (counterHook > 1) 0.45 0.35] - Stroke * [if (counterHook > 1) 0.45 0.25] * HVContrast
@ -155,8 +162,7 @@ glyph-block Letter-Latin-Lower-F : begin
local crossRight : mix df.width df.rightSB m
local counterHookLeft : Math.max SB : barRight - (crossRight - barLeft)
include : SmallFDownHook df barRight counterHookLeft
if (counterHook === 3) : begin
include : VerticalHook (barLeft + HalfStroke * HVContrast) 0 (-HookX) Hook
if (counterHook === 3) : include : SmallFDiagonalTail df barLeft
define [NarrowFShape df m bh counterHook] : glyph-proc
local crossLeft : mix 0 SB m
@ -179,6 +185,7 @@ glyph-block Letter-Latin-Lower-F : begin
local crossRight : mix df.width df.rightSB m
local counterHookLeft : barRight - (crossRight - barLeft)
include : SmallFDownHook df barRight counterHookLeft
if (counterHook === 3) : include : SmallFDiagonalTail df barLeft
create-glyph 'f.serifless' : glyph-proc
@ -199,13 +206,17 @@ glyph-block Letter-Latin-Lower-F : begin
include : MarkSet.if
include : StandardSmallFShape [DivFrame 1] 1 fbar 2
create-glyph 'f.extended' : glyph-proc
include : MarkSet.if
include : StandardSmallFShape [DivFrame 1] 0.95 fbar 1
create-glyph 'f.tailed' : glyph-proc
include : MarkSet.if
include : StandardSmallFShape [DivFrame 1] 1 fbar 2
create-glyph 'f.extended' : glyph-proc
create-glyph 'f.diagonalTailed' : glyph-proc
include : MarkSet.if
include : StandardSmallFShape [DivFrame 1] 0.95 fbar 1
include : StandardSmallFShape [DivFrame 1] 1 fbar 3
create-glyph 'f.seriflessCrossbarAtXHeight' : glyph-proc
include : MarkSet.b
@ -216,13 +227,17 @@ glyph-block Letter-Latin-Lower-F : begin
include : StandardSmallFShape [DivFrame 1] 0.95 XH
include : SmallFBottomSerif [DivFrame 1] 0
create-glyph 'f.extendedCrossbarAtXHeight' : glyph-proc
include : MarkSet.if
include : StandardSmallFShape [DivFrame 1] 0.95 XH 1
create-glyph 'f.tailedCrossbarAtXHeight' : glyph-proc
include : MarkSet.if
include : StandardSmallFShape [DivFrame 1] 1 XH 2
create-glyph 'f.extendedCrossbarAtXHeight' : glyph-proc
create-glyph 'f.diagonalTailedCrossbarAtXHeight' : glyph-proc
include : MarkSet.if
include : StandardSmallFShape [DivFrame 1] 0.95 XH 1
include : StandardSmallFShape [DivFrame 1] 1 XH 3
create-glyph 'f.narrow' : glyph-proc
@ -254,16 +269,6 @@ glyph-block Letter-Latin-Lower-F : begin
include : NarrowFShape dfNarrowF [mix 1 dfNarrowF.div 2] XH
include : SmallFBottomSerif dfNarrowF 0.035
create-glyph 'f.flatHookTailed' : glyph-proc
set-width dfNarrowF.width
include : dfNarrowF.markSet.if
include : NarrowFShape dfNarrowF [mix 1 dfNarrowF.div 2] fbar 2
create-glyph 'f.flatHookTailedCrossbarAtXHeight' : glyph-proc
set-width dfNarrowF.width
include : dfNarrowF.markSet.if
include : NarrowFShape dfNarrowF [mix 1 dfNarrowF.div 2] XH 2
create-glyph 'f.flatHookExtended' : glyph-proc
set-width dfNarrowF.width
include : dfNarrowF.markSet.if
@ -274,24 +279,48 @@ glyph-block Letter-Latin-Lower-F : begin
include : dfNarrowF.markSet.if
include : NarrowFShape dfNarrowF [mix 1 dfNarrowF.div 2] XH 1
create-glyph 'f.flatHookTailed' : glyph-proc
set-width dfNarrowF.width
include : dfNarrowF.markSet.if
include : NarrowFShape dfNarrowF [mix 1 dfNarrowF.div 2] fbar 2
create-glyph 'f.flatHookTailedCrossbarAtXHeight' : glyph-proc
set-width dfNarrowF.width
include : dfNarrowF.markSet.if
include : NarrowFShape dfNarrowF [mix 1 dfNarrowF.div 2] XH 2
create-glyph 'f.flatHookDiagonalTailed' : glyph-proc
set-width dfNarrowF.width
include : dfNarrowF.markSet.if
include : NarrowFShape dfNarrowF [mix 1 dfNarrowF.div 2] fbar 3
create-glyph 'f.flatHookDiagonalTailedCrossbarAtXHeight' : glyph-proc
set-width dfNarrowF.width
include : dfNarrowF.markSet.if
include : NarrowFShape dfNarrowF [mix 1 dfNarrowF.div 2] XH 3
select-variant 'f' 'f'
alias 'lenisf' 0xAB35 'f.serifless'
turned 'turnf.serifless' nothing 'f.serifless' Middle (XH / 2) [MarkSet.p]
turned 'turnf.serifed' nothing 'f.serifed' Middle (XH / 2) [MarkSet.p]
turned 'turnf.tailed' nothing 'f.tailed' Middle (XH / 2) [MarkSet.if]
turned 'turnf.diagonalTailed' nothing 'f.diagonalTailed' Middle (XH / 2) [MarkSet.if]
turned 'turnf.extended' nothing 'f.extended' Middle (XH / 2) [MarkSet.if]
turned 'turnf.seriflessCrossbarAtXHeight' nothing 'f.seriflessCrossbarAtXHeight' Middle (XH / 2) [MarkSet.p]
turned 'turnf.serifedCrossbarAtXHeight' nothing 'f.serifedCrossbarAtXHeight' Middle (XH / 2) [MarkSet.p]
turned 'turnf.tailedCrossbarAtXHeight' nothing 'f.tailedCrossbarAtXHeight' Middle (XH / 2) [MarkSet.if]
turned 'turnf.diagonalTailedCrossbarAtXHeight' nothing 'f.diagonalTailedCrossbarAtXHeight' Middle (XH / 2) [MarkSet.if]
turned 'turnf.extendedCrossbarAtXHeight' nothing 'f.extendedCrossbarAtXHeight' Middle (XH / 2) [MarkSet.if]
turned 'turnf.flatHook' nothing 'f.flatHook' dfNarrowF.middle (XH / 2) [dfNarrowF.markSet.p]
turned 'turnf.flatHookSerifed' nothing 'f.flatHookSerifed' dfNarrowF.middle (XH / 2) [dfNarrowF.markSet.p]
turned 'turnf.flatHookTailed' nothing 'f.flatHookTailed' dfNarrowF.middle [mix Descender CAP 0.5] [dfNarrowF.markSet.if]
turned 'turnf.flatHookDiagonalTailed' nothing 'f.flatHookDiagonalTailed' dfNarrowF.middle [mix Descender CAP 0.5] [dfNarrowF.markSet.if]
turned 'turnf.flatHookExtended' nothing 'f.flatHookExtended' dfNarrowF.middle [mix Descender CAP 0.5] [dfNarrowF.markSet.if]
turned 'turnf.flatHookCrossbarAtXHeight' nothing 'f.flatHookCrossbarAtXHeight' dfNarrowF.middle (XH / 2) [dfNarrowF.markSet.p]
turned 'turnf.flatHookSerifedCrossbarAtXHeight' nothing 'f.flatHookSerifedCrossbarAtXHeight' dfNarrowF.middle (XH / 2) [dfNarrowF.markSet.p]
turned 'turnf.flatHookTailedCrossbarAtXHeight' nothing 'f.flatHookTailedCrossbarAtXHeight' dfNarrowF.middle [mix Descender CAP 0.5] [dfNarrowF.markSet.if]
turned 'turnf.flatHookDiagonalTailedCrossbarAtXHeight' nothing 'f.flatHookDiagonalTailedCrossbarAtXHeight' dfNarrowF.middle [mix Descender CAP 0.5] [dfNarrowF.markSet.if]
turned 'turnf.flatHookExtendedCrossbarAtXHeight' nothing 'f.flatHookExtendedCrossbarAtXHeight' dfNarrowF.middle [mix Descender CAP 0.5] [dfNarrowF.markSet.if]
select-variant 'turnf' 0x25F (follow -- 'f')

View file

@ -10,7 +10,8 @@ glyph-block Letter-Latin-Lower-J : begin
glyph-block-import CommonShapes
glyph-block-import Common-Derivatives
glyph-block-import Letter-Shared : CreateDottedComposition
glyph-block-import Letter-Shared-Shapes : CurlyTail DiagonalTailL DiagonalTailStdDepth
glyph-block-import Letter-Shared-Shapes : CurlyTail FlatHookDepth
glyph-block-import Letter-Shared-Shapes : DiagonalTailL DiagonalTailStdDepth
glyph-block-import Letter-Blackboard : BBS BBD
### j and dotless j
@ -71,14 +72,14 @@ glyph-block Letter-Latin-Lower-J : begin
define [FlatHookDotlessJShape] : params [df crossLeft crossRight barCenter serif] : glyph-proc
local terminal : crossLeft - OX * 2
local bar : barCenter + HalfStroke * HVContrast
local tTurn : Math.max (Hook * 0.9) (Stroke * 1.5) : Math.min Hook (Stroke * 1.75)
local hd : FlatHookDepth df
if serif : include : LeftwardTopSerif barCenter XH (LongJut * df.div)
include : dispiro
widths.lhs
flat [Math.min terminal (bar - tTurn - [Math.max (Stroke / 3) (df.width / 6)])] Descender
curl (bar - tTurn) Descender
flat [Math.min terminal (bar - hd.x - [Math.max (Stroke / 3) (df.width / 6)])] Descender
curl (bar - hd.x) Descender
archv.superness DesignParameters.tightHookSuperness
flat bar (Descender + tTurn)
flat bar (Descender + hd.y)
curl bar XH [heading Upward]
set-base-anchor 'above' barCenter XH
set-base-anchor 'overlay' barCenter (XH / 2)
@ -93,16 +94,6 @@ glyph-block Letter-Latin-Lower-J : begin
barCenter -- (df.middle + 0.5 * JBalance * df.div * [mix 1 para.diversityII 2])
serif -- false
define [DiagTailDotlessJShape] : params [df crossLeft crossRight barCenter serif] : glyph-proc
local terminal : crossLeft - OX * 2
if serif : include : LeftwardTopSerif barCenter XH (LongJut * df.div)
include : dispiro
widths.center
flat barCenter XH [heading Downward]
DiagonalTailL df barCenter Descender [DiagonalTailStdDepth df Stroke] Stroke
set-base-anchor 'above' barCenter XH
set-base-anchor 'overlay' barCenter (XH / 2)
create-glyph 'dotlessj.flatHookSerifed' : glyph-proc
local df : DivFrame para.diversityI
set-width df.width
@ -113,6 +104,16 @@ glyph-block Letter-Latin-Lower-J : begin
barCenter -- (df.middle + JBalance * df.div)
serif -- true
define [DiagTailDotlessJShape] : params [df crossLeft crossRight barCenter serif] : glyph-proc
local terminal : crossLeft - OX * 2
if serif : include : LeftwardTopSerif barCenter XH (LongJut * df.div)
include : dispiro
widths.center
flat barCenter XH [heading Downward]
DiagonalTailL df barCenter Descender [DiagonalTailStdDepth df Stroke] Stroke
set-base-anchor 'above' barCenter XH
set-base-anchor 'overlay' barCenter (XH / 2)
create-glyph 'dotlessj.diagonalTailedSerifless' : glyph-proc
local df : DivFrame para.diversityII
set-width df.width

View file

@ -171,7 +171,13 @@ glyph-block Letter-Shared-Shapes : begin
x : [fallback s 1] * [FlatHookDepthImpl [Math.min 1 : Math.sqrt df.div] HVContrast]
y : [fallback s 1] * [FlatHookDepthImpl [Math.min 1 : Math.sqrt df.div] 1]
define [FlatHookDepthImpl sHook sStroke] : begin
return : Math.max (sHook * Hook) (sStroke * Stroke * 1.375) : Math.min (sHook * Hook) (sStroke * Stroke * 1.75)
define kFlathook 0.875
return : Math.max
kFlathook * sHook * Hook
sStroke * Stroke * 1.375
Math.min
kFlathook * sHook * Hook
sStroke * Stroke * 1.625
glyph-block-export ConnectedCedilla
define [ConnectedCedilla src sel] : glyph-proc

View file

@ -547,7 +547,25 @@ rank = 16
description = '`f` with flat top hook, bar extended to descender; crossbar is placed right at X-height'
selector.f = 'flatHookExtendedCrossbarAtXHeight'
[prime.f.variants.diagonal-tailed]
rank = 17
description = '`f` with bottom diagonal tail'
selector.f = "diagonalTailed"
[prime.f.variants.diagonal-tailed-crossbar-at-x-height]
rank = 18
description = '`f` with bottom diagonal tail; crossbar is placed right at X-height'
selector.f = "diagonalTailedCrossbarAtXHeight"
[prime.f.variants.flat-hook-diagonal-tailed]
rank = 19
description = '`f` with falt hook and bottom diagonal tail'
selector.f = "flatHookDiagonalTailed"
[prime.f.variants.flat-hook-diagonal-tailed-crossbar-at-x-height]
rank = 20
description = '`f` with falt hook and bottom diagonal tail; crossbar is placed right at X-height'
selector.f = "flatHookDiagonalTailedCrossbarAtXHeight"
[prime.g]
sampler = 'g'