* Add diagonal-tailed variant of f
(#795).
This commit is contained in:
parent
3bca9bf91d
commit
b8c11f57fc
5 changed files with 87 additions and 33 deletions
|
@ -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).
|
|
@ -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')
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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'
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue