Reorder and reorganize character variants of i
, l
, and f
, including:
* The “italic” variants are removed, or renamed to reflect its shape; * Reorder variants of `i` and `l` to let them get synchronized; * Make `f`'s variant more matrix-like.
This commit is contained in:
parent
cb96e828c1
commit
10f2596115
9 changed files with 475 additions and 334 deletions
60
README.md
60
README.md
|
@ -488,18 +488,22 @@ Subsection `variants` is used to configure character variants in the font. Prope
|
|||
+ `d = 'toothless-rounded'`, `cv14 = 3`: `d` without bottom-right tooth, with a rounded transition.
|
||||
+ `d = 'tailed'`, `cv14 = 4`: `d` with a slightly tail bottom-right tail (default for Italic).
|
||||
- Styles for `f`:
|
||||
+ `f = 'straight'`, `cv15 = 1`: `f` without bottom hook (default for Sans Upright).
|
||||
+ `f = 'tailed'`, `cv15 = 2`: `f` with a leftward bottom hook (default for Italic).
|
||||
+ `f = 'serifed'`, `cv15 = 3`: `f` with bottom serif (default for Slab Upright).
|
||||
+ `f = 'straight-tailed'`, `cv15 = 4`: `f` with straight tail.
|
||||
+ `f = 'flat-hook'`, `cv15 = 5`: `f` with flat hook.
|
||||
+ `f = 'flat-hook-crossbar-at-x-height'`, `cv15 = 6`: `f` with flat hook and crossbar placed right at X-height.
|
||||
+ `f = 'flat-hook-serifed'`, `cv15 = 7`: `f` with flat hook and bottom serif.
|
||||
+ `f = 'flat-hook-serifed-crossbar-at-x-height'`, `cv15 = 8`: `f` with flat hook, bottom serif, and crossbar placed right at X-height.
|
||||
+ `f = 'flat-hook-round-tailed'`, `cv15 = 9`: `f` with flat hook.
|
||||
+ `f = 'flat-hook-round-tailed-crossbar-at-x-height'`, `cv15 = 10`: `f` with flat hook and crossbar placed right at X-height.
|
||||
+ `f = 'flat-hook-flat-tailed'`, `cv15 = 11`: `f` with flat hook and bottom serif.
|
||||
+ `f = 'flat-hook-flat-tailed-crossbar-at-x-height'`, `cv15 = 12`: `f` with flat hook, bottom serif, and crossbar placed right at X-height.
|
||||
+ `f = 'serifless'`, `cv15 = 1`: `f` without bottom serif, hook or exension (default for Sans Upright).
|
||||
+ `f = 'serifed'`, `cv15 = 2`: `f` with bottom serif (default for Slab Upright).
|
||||
+ `f = 'tailed'`, `cv15 = 3`: `f` with bottom hook.
|
||||
+ `f = 'extended'`, `cv15 = 4`: `f` with bar extended to descender.
|
||||
+ `f = 'serifless-crossbar-at-x-height'`, `cv15 = 5`: `f` without bottom serif, hook or exension; crossbar is placed right at X-height.
|
||||
+ `f = 'serifed-crossbar-at-x-height'`, `cv15 = 6`: `f` with bottom serif; crossbar is placed right at X-height.
|
||||
+ `f = 'tailed-crossbar-at-x-height'`, `cv15 = 7`: `f` with bottom hook; crossbar is placed right at X-height.
|
||||
+ `f = 'extended-crossbar-at-x-height'`, `cv15 = 8`: `f` with bar extended to descender; crossbar is placed right at X-height.
|
||||
+ `f = 'flat-hook'`, `cv15 = 9`: `f` with flat top hook, without bottom serif, hook or exension.
|
||||
+ `f = 'flat-hook-serifed'`, `cv15 = 10`: `f` with flat top hook and bottom serif.
|
||||
+ `f = 'flat-hook-tailed'`, `cv15 = 11`: `f` with flat top hook and bottom hook (default for Italic).
|
||||
+ `f = 'flat-hook-extended'`, `cv15 = 12`: `f` with flat top hook and bar extended to descender.
|
||||
+ `f = 'flat-hook-crossbar-at-x-height'`, `cv15 = 13`: `f` with flat top hook, without bottom serif, hook or exension; crossbar is placed right at X-height.
|
||||
+ `f = 'flat-hook-serifed-crossbar-at-x-height'`, `cv15 = 14`: `f` with flat top hook, bottom serif; crossbar is placed right at X-height.
|
||||
+ `f = 'flat-hook-tailed-crossbar-at-x-height'`, `cv15 = 15`: `f` with flat top hook, bottom hook; crossbar is placed right at X-height.
|
||||
+ `f = 'flat-hook-extended-crossbar-at-x-height'`, `cv15 = 16`: `f` with flat top hook, bar extended to descender; crossbar is placed right at X-height.
|
||||
- Styles for `g`:
|
||||
+ `g = 'singlestorey'`, `cv16 = 1`: Single-storey `g` (default).
|
||||
+ `g = 'doublestorey'`, `cv16 = 2`: Double-storey `g`.
|
||||
|
@ -513,13 +517,15 @@ Subsection `variants` is used to configure character variants in the font. Prope
|
|||
+ `h = 'motion-serifed-tailed'`, `cv17 = 4`: `h` with curly tailed ending.
|
||||
- Styles for `i`:
|
||||
+ `i = 'serifed'`, `cv18 = 1`: Serifed `i` (default for Upright).
|
||||
+ `i = 'italic'`, `cv18 = 2`: Italic `i` (default for Italic).
|
||||
+ `i = 'serifless'`, `cv18 = 2`: `i` like a straight line.
|
||||
+ `i = 'hooky'`, `cv18 = 3`: Hooky `i`.
|
||||
+ `i = 'serifless'`, `cv18 = 4`: `i` like a straight line.
|
||||
+ `i = 'zshaped'`, `cv18 = 5`: Z-shaped `i`.
|
||||
+ `i = 'tailed'`, `cv18 = 6`: Tailed `i`.
|
||||
+ `i = 'hookybottom'`, `cv18 = 7`: `i` with a straight tail.
|
||||
+ `i = 'serifed-asymmetric'`, `cv18 = 8`: `i` with shorter top serif and full bottom serif.
|
||||
+ `i = 'zshaped'`, `cv18 = 4`: Z-shaped `i`.
|
||||
+ `i = 'hooky-bottom'`, `cv18 = 5`: `i` with a straight tail.
|
||||
+ `i = 'serifed-asymmetric'`, `cv18 = 6`: `i` with shorter top serif and full bottom serif.
|
||||
+ `i = 'tailed'`, `cv18 = 7`: `i` with curly tail.
|
||||
+ `i = 'serifed-tailed'`, `cv18 = 8`: `i` with curly tail and top serif (default for Italic).
|
||||
+ `i = 'flat-tailed'`, `cv18 = 9`: `i` with top serif and a curly-then-flat tail.
|
||||
+ `i = 'serifed-flat-tailed'`, `cv18 = 10`: `i` with top serif and a curly-then-flat tail.
|
||||
- Styles for `j`:
|
||||
+ `j = 'serifed'`, `cv19 = 1`: `j` with top serif (default).
|
||||
+ `j = 'serifless'`, `cv19 = 2`: `j` without serif.
|
||||
|
@ -531,14 +537,16 @@ Subsection `variants` is used to configure character variants in the font. Prope
|
|||
+ `k = 'curly'`, `cv20 = 2`: Slightly curly `k`, like Iosevka 2.x.
|
||||
+ `k = 'cursive'`, `cv20 = 3`: `k` with a cursive loop (default for Italic).
|
||||
- Styles for `l`:
|
||||
+ `l = 'hooky'`, `cv21 = 1`: Hooky `l`.
|
||||
+ `l = 'zshaped'`, `cv21 = 2`: Z-shaped `l`.
|
||||
+ `l = 'serifed'`, `cv21 = 3`: Serifed `l` (default for Upright).
|
||||
+ `l = 'italic'`, `cv21 = 4`: Italic, cursive `l` (default for Italic).
|
||||
+ `l = 'serifless'`, `cv21 = 5`: `l` like a straight line.
|
||||
+ `l = 'tailed'`, `cv21 = 6`: `l` with a curved tail.
|
||||
+ `l = 'hookybottom'`, `cv21 = 7`: `l` with a straight tail.
|
||||
+ `l = 'serifed-asymmetric'`, `cv21 = 8`: `l` with shorter top serif and full bottom serif.
|
||||
+ `l = 'serifed'`, `cv21 = 1`: Serifed `l` (default for Upright).
|
||||
+ `l = 'serifless'`, `cv21 = 2`: `l` like a straight line.
|
||||
+ `l = 'hooky'`, `cv21 = 3`: Hooky `l`.
|
||||
+ `l = 'zshaped'`, `cv21 = 4`: Z-shaped `l`.
|
||||
+ `l = 'hooky-bottom'`, `cv21 = 5`: `l` with a straight tail.
|
||||
+ `l = 'serifed-asymmetric'`, `cv21 = 6`: `l` with shorter top serif and full bottom serif.
|
||||
+ `l = 'tailed'`, `cv21 = 7`: `l` with curly tail.
|
||||
+ `l = 'serifed-tailed'`, `cv21 = 8`: `l` with top serif and curly tail (default for Italic).
|
||||
+ `l = 'flat-tailed'`, `cv21 = 9`: `l` with top serif and a curly-then-flat tail.
|
||||
+ `l = 'serifed-flat-tailed'`, `cv21 = 10`: `l` with top serif and a curly-then-flat tail.
|
||||
- Styles for `m`:
|
||||
+ `m = 'normal'`, `cv22 = 1`: `m` with normal middle leg, touching the baseline (default).
|
||||
+ `m = 'shortleg'`, `cv22 = 2`: `m` with shorter middle leg, like Ubuntu Mono.
|
||||
|
|
|
@ -482,9 +482,9 @@ l = 'serifed'
|
|||
f = 'flat-hook'
|
||||
|
||||
[buildPlans.iosevka-aile.derivingVariants.mathtt.italic]
|
||||
i = 'italic'
|
||||
l = 'italic'
|
||||
f = 'flat-hook-flat-tailed'
|
||||
i = 'serifed-tailed'
|
||||
l = 'serifed-tailed'
|
||||
f = 'flat-hook-tailed'
|
||||
|
||||
[buildPlans.iosevka-aile.variants.design]
|
||||
at = 'fourfold'
|
||||
|
@ -521,18 +521,6 @@ quasiProportionalDiversity = 1
|
|||
at = 'fourfold'
|
||||
j = 'serifed'
|
||||
|
||||
[buildPlans.iosevka-etoile.variants.upright]
|
||||
i = 'serifed'
|
||||
l = 'serifed'
|
||||
|
||||
[buildPlans.iosevka-etoile.variants.oblique]
|
||||
i = 'serifed'
|
||||
l = 'serifed'
|
||||
|
||||
[buildPlans.iosevka-etoile.variants.italic]
|
||||
i = 'italic'
|
||||
l = 'italic'
|
||||
|
||||
[buildPlans.iosevka-etoile.widths.normal]
|
||||
shape = 576
|
||||
menu = 5
|
||||
|
@ -565,9 +553,9 @@ f = 'serifed'
|
|||
r = 'serifed'
|
||||
|
||||
[buildPlans.iosevka-sparkle.variants.italic]
|
||||
i = 'italic'
|
||||
l = 'italic'
|
||||
f = 'tailed'
|
||||
i = 'serifed-tailed'
|
||||
l = 'serifed-tailed'
|
||||
f = 'flat-hook-tailed'
|
||||
r = 'top-serifed'
|
||||
|
||||
[buildPlans.iosevka-sparkle.derivingVariants.mathtt.design]
|
||||
|
@ -587,9 +575,9 @@ f = 'serifed'
|
|||
r = 'serifed'
|
||||
|
||||
[buildPlans.iosevka-sparkle.derivingVariants.mathtt.italic]
|
||||
i = 'italic'
|
||||
l = 'italic'
|
||||
f = 'tailed'
|
||||
i = 'serifed-tailed'
|
||||
l = 'serifed-tailed'
|
||||
f = 'flat-hook-tailed'
|
||||
r = 'top-serifed'
|
||||
|
||||
[buildPlans.iosevka-sparkle.widths.normal]
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
* [**Breaking**] Reorder and reorganize character variants of `i`, `l`, and `f`, including:
|
||||
* The “italic” variants are removed, or renamed to reflect its shape;
|
||||
* Reorder variants of `i` and `l` to let them get synchronized;
|
||||
* Make `f`'s variant more matrix-like.
|
||||
* Fix inconsistent italic serif of U+0463 CYRILLIC SMALL LETTER YAT (#729).
|
||||
* Fix dotless form of mathematical derived letters if it ia aliased (#731).
|
||||
* Fix inconsistent serif on Bulgarian U+044E CYRILLIC SMALL LETTER YU (#732).
|
||||
|
|
|
@ -426,6 +426,16 @@ glyph-block CommonShapes : begin
|
|||
widths.center [fallback s OverlayStroke]
|
||||
flat xleft y
|
||||
curl xright y
|
||||
define [HCrossBar xl xr y s] : dispiro
|
||||
widths.center [fallback s OverlayStroke]
|
||||
flat xl y
|
||||
curl xr y
|
||||
set HCrossBar.top : lambda [xl xr y _s] : begin
|
||||
local s : fallback _s Stroke
|
||||
return : HCrossBar (xl - 0 * s * TanSlope) (xr - 0 * s * TanSlope) (y - 0.5 * s) s
|
||||
set HCrossBar.bottom : lambda [xl xr y _s] : begin
|
||||
local s : fallback _s Stroke
|
||||
return : HCrossBar (xl + 0 * s * TanSlope) (xr + 0 * s * TanSlope) (y + 0.5 * s) s
|
||||
define [VBar x ydown yup _fine] : glyph-proc
|
||||
local fine : fallback _fine Stroke
|
||||
include : dispiro
|
||||
|
@ -678,4 +688,4 @@ glyph-block CommonShapes : begin
|
|||
corner [mix x1 x2 (-k)] [mix y1 y2 (-k)]
|
||||
corner [mix x1 x2 (1+k)] [mix y1 y2 (1+k)]
|
||||
|
||||
glyph-block-export Rect SquareAt Ring RingAt DotAt RingStroke RingStrokeAt DotStrokeAt CircleRing CircleRingAt CircleDotAt OShape OShapeOutline OBarLeftShape OBarRightShape LeftwardTopSerif LeftwardBottomSerif RightwardTopSerif RightwardBottomSerif CenterTopSerif CenterBottomSerif DownwardRightSerif UpwardRightSerif DownwardLeftSerif UpwardLeftSerif AIVSerifs AIHSerifs AINSerifs AICyrISerifs AIMSerifs HBar HBarTop HBarBottom HOverlayBar VBar VBarLeft VBarRight VerticalHook LegShape LeftHook HooktopLeftBar FlatSlashShape hookstart hookend CyrDescender CyrLeftDescender FlipAround ScaleAround Realign ForceUpright DiagCor CreateWaveShape NameUni PointingTo WithAIHSerifsMask WithTransform ReverseContours clear-anchors OBarLeftToothlessShape OBarLeftRoundedShape OBarRightToothlessShape OBarRightRoundedShape AsRadical ExtLineCenter DiagCorDs
|
||||
glyph-block-export Rect SquareAt Ring RingAt DotAt RingStroke RingStrokeAt DotStrokeAt CircleRing CircleRingAt CircleDotAt OShape OShapeOutline OBarLeftShape OBarRightShape LeftwardTopSerif LeftwardBottomSerif RightwardTopSerif RightwardBottomSerif CenterTopSerif CenterBottomSerif DownwardRightSerif UpwardRightSerif DownwardLeftSerif UpwardLeftSerif AIVSerifs AIHSerifs AINSerifs AICyrISerifs AIMSerifs HBar HBarTop HBarBottom HOverlayBar VBar VBarLeft VBarRight VerticalHook LegShape LeftHook HooktopLeftBar FlatSlashShape hookstart hookend CyrDescender CyrLeftDescender FlipAround ScaleAround Realign ForceUpright DiagCor CreateWaveShape NameUni PointingTo WithAIHSerifsMask WithTransform ReverseContours clear-anchors OBarLeftToothlessShape OBarLeftRoundedShape OBarRightToothlessShape OBarRightRoundedShape AsRadical ExtLineCenter DiagCorDs HCrossBar
|
||||
|
|
|
@ -151,6 +151,12 @@ glyph-block Letter-Shared-Shapes : begin
|
|||
glyph-proc
|
||||
include : spiro-outline : nShoulderKnots.apply null [a.concat { (fMask -- true) }]
|
||||
|
||||
glyph-block-export FlatHookDepth
|
||||
define [FlatHookDepth df] : object
|
||||
x : FlatHookDepthImpl [Math.min 1 : Math.sqrt df.div] HVContrast
|
||||
y : 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)
|
||||
|
||||
glyph-block Letter-Latin-Upper-I : begin
|
||||
glyph-block-import CommonShapes
|
||||
|
@ -210,27 +216,69 @@ glyph-block Letter-Latin-Lower-I : begin
|
|||
glyph-block-import CommonShapes
|
||||
glyph-block-import Common-Derivatives
|
||||
glyph-block-import Letter-Shared : CreateDottedComposition
|
||||
glyph-block-export IotaShape TailedIShape
|
||||
glyph-block-import Letter-Shared-Shapes : FlatHookDepth
|
||||
|
||||
### dotless i, i and iota
|
||||
define [IotaShape top] : glyph-proc
|
||||
glyph-block-export IotaShape
|
||||
define [IotaShape] : params [top [addTopSerif false]] : glyph-proc
|
||||
local df : DivFrame para.diversityI
|
||||
local middle df.middle
|
||||
local hd : FlatHookDepth df
|
||||
set-base-anchor 'above' middle top
|
||||
include : tagged 'serifLT' : LeftwardTopSerif middle top (LongJut * df.div)
|
||||
if addTopSerif : include : tagged 'serifLT'
|
||||
LeftwardTopSerif middle top (LongJut * df.div)
|
||||
include : dispiro
|
||||
widths.center
|
||||
flat middle top [heading Downward]
|
||||
curl middle Hook
|
||||
curl middle hd.y
|
||||
arcvh.superness DesignParameters.tightHookSuperness
|
||||
flat (middle + hd.x - HalfStroke * HVContrast) HalfStroke
|
||||
curl (middle + [Math.max (hd.x - HalfStroke * HVContrast + 1) (LongJut * 1.05 * df.div)] + HalfStroke * TanSlope) HalfStroke
|
||||
|
||||
glyph-block-export ItalicDotlessIShape
|
||||
define [ItalicDotlessIShape] : params [df top [addTopSerif false] [setMarks true]] : glyph-proc
|
||||
local shift : (1 - df.div) * 0.2
|
||||
local left : [mix SB df.rightSB ([StrokeWidthBlend 0.42 0.46] - shift)] - HalfStroke * HVContrast
|
||||
local right : mix SB df.rightSB (1.1 - shift)
|
||||
local rightTerm : Math.max right (left + HookX + Stroke)
|
||||
local middle : mix left right (0.55 * df.div)
|
||||
include : dispiro
|
||||
widths.lhs
|
||||
flat left top [heading Downward]
|
||||
curl left (SmallSmoothB * 0.8)
|
||||
hookend O
|
||||
g4 rightTerm (Hook * [StrokeWidthBlend 0.85 1] * df.div)
|
||||
if addTopSerif : include : dispiro
|
||||
flat (left - (LongJut * df.div) + HalfStroke * HVContrast) top [widths 0 Stroke]
|
||||
curl left top
|
||||
if setMarks : begin
|
||||
set-base-anchor 'above' (left + HalfStroke * HVContrast + [StrokeWidthBlend 0.25 0] * TanSlope * df.width) top
|
||||
set-base-anchor 'below' middle 0
|
||||
|
||||
glyph-block-export TailedDotlessShape
|
||||
define [TailedDotlessShape] : params [df top [xMiddle (df.middle - LBalance2)] [setMarks true] [hookScale 1] [addTopSerif false]] : glyph-proc
|
||||
local x0 : mix HalfStroke (HalfStroke + (Hook - Stroke + 1) * 0.85 * df.div + LBalance2) hookScale
|
||||
local x1 : mix HalfStroke ([Math.max (Hook - HalfStroke + 1) (LongJut * df.div)] + LBalance2) hookScale
|
||||
include : dispiro
|
||||
widths.center
|
||||
flat xMiddle top [heading Downward]
|
||||
curl xMiddle [mix Stroke Hook hookScale]
|
||||
arcvh
|
||||
flat (middle + Hook - HalfStroke) HalfStroke
|
||||
curl (middle + [Math.max HookX (LongJut * 1.05 * df.div)]) HalfStroke [heading Rightward]
|
||||
g4.right.mid (xMiddle + x0) (HalfStroke + O) [heading Rightward]
|
||||
g4 (xMiddle + x1) (HalfStroke + (1 - 2 * hookScale) * O) [heading Rightward]
|
||||
if setMarks : begin
|
||||
set-base-anchor 'above' xMiddle top
|
||||
set-base-anchor 'below' xMiddle 0
|
||||
set-base-anchor 'overlay' xMiddle (top * OverlayPos)
|
||||
set-base-anchor 'topright' (xMiddle + RightSB - Middle) top
|
||||
if addTopSerif : begin
|
||||
include : tagged 'serifLT' : LeftwardTopSerif xMiddle top (LongJut * df.div)
|
||||
|
||||
create-glyph 'grek/iota' 0x3B9 : glyph-proc
|
||||
local df : DivFrame para.diversityI
|
||||
set-width df.width
|
||||
include : df.markSet.e
|
||||
include : IotaShape XH
|
||||
include : IotaShape XH (addTopSerif -- true)
|
||||
|
||||
alias 'latiniota' 0x269 'grek/iota'
|
||||
|
||||
|
@ -238,7 +286,7 @@ glyph-block Letter-Latin-Lower-I : begin
|
|||
local df : DivFrame para.diversityI
|
||||
set-width df.width
|
||||
include : df.markSet.capital
|
||||
include : IotaShape CAP
|
||||
include : IotaShape CAP (addTopSerif -- true)
|
||||
|
||||
create-glyph 'dotlessi.straight' : glyph-proc
|
||||
local df : DivFrame para.diversityI
|
||||
|
@ -290,54 +338,39 @@ glyph-block Letter-Latin-Lower-I : begin
|
|||
include : RightwardBottomSerif df.middle 0 (LongJut * df.div)
|
||||
include : LeftwardBottomSerif df.middle 0 (LongJut * df.div)
|
||||
|
||||
create-glyph 'dotlessi.italic' : glyph-proc
|
||||
create-glyph 'dotlessi.tailed' : glyph-proc
|
||||
local df : DivFrame para.diversityI
|
||||
set-width df.width
|
||||
include : df.markSet.e
|
||||
if para.isItalic
|
||||
: then : begin
|
||||
local shift : (1 - df.div) * 0.2
|
||||
local left : [mix SB df.rightSB ([StrokeWidthBlend 0.42 0.46] - shift)] - HalfStroke * HVContrast
|
||||
local right : mix SB df.rightSB (1.1 - shift)
|
||||
local rightTerm : Math.max right (left + HookX + Stroke)
|
||||
local middle : mix left right (0.55 * df.div)
|
||||
include : dispiro
|
||||
widths.lhs
|
||||
flat left XH [heading Downward]
|
||||
curl left (SmallSmoothB * 0.8)
|
||||
hookend O
|
||||
g4 rightTerm (Hook * [StrokeWidthBlend 0.85 1] * df.div)
|
||||
include : dispiro
|
||||
flat (left - (LongJut * df.div) + HalfStroke * HVContrast) XH [widths 0 Stroke]
|
||||
curl left XH
|
||||
set-base-anchor 'above' (left + HalfStroke * HVContrast + [StrokeWidthBlend 0.25 0] * TanSlope * df.width) XH
|
||||
set-base-anchor 'below' middle 0
|
||||
include : ItalicDotlessIShape df XH (setMarks -- true) (addTopSerif -- false)
|
||||
: else : begin
|
||||
include : IotaShape XH
|
||||
include : TailedDotlessShape df XH (addTopSerif -- false)
|
||||
|
||||
define [TailedIShape] : params [df top [xMiddle (df.middle - LBalance2)] [setMarks true] [hookScale 1]] : glyph-proc
|
||||
local x0 : mix HalfStroke (HalfStroke + (Hook - Stroke + 1) * 0.85 * df.div + LBalance2) hookScale
|
||||
local x1 : mix HalfStroke ([Math.max (Hook - HalfStroke + 1) (LongJut * df.div)] + LBalance2) hookScale
|
||||
include : dispiro
|
||||
widths.center
|
||||
flat xMiddle top [heading Downward]
|
||||
curl xMiddle [mix Stroke Hook hookScale]
|
||||
arcvh
|
||||
g4.right.mid (xMiddle + x0) (HalfStroke + O) [heading Rightward]
|
||||
g4 (xMiddle + x1) (HalfStroke + (1 - 2 * hookScale) * O) [heading Rightward]
|
||||
if setMarks : begin
|
||||
set-base-anchor 'above' xMiddle top
|
||||
set-base-anchor 'below' xMiddle 0
|
||||
set-base-anchor 'overlay' xMiddle (top * OverlayPos)
|
||||
set-base-anchor 'topright' (xMiddle + RightSB - Middle) top
|
||||
|
||||
create-glyph 'dotlessi.tailed' : glyph-proc
|
||||
create-glyph 'dotlessi.serifedTailed' : glyph-proc
|
||||
local df : DivFrame para.diversityI
|
||||
set-width df.width
|
||||
include : df.markSet.e
|
||||
include : TailedIShape df XH
|
||||
if para.isItalic
|
||||
: then : begin
|
||||
include : ItalicDotlessIShape df XH (setMarks -- true) (addTopSerif -- true)
|
||||
: else : begin
|
||||
include : TailedDotlessShape df XH (addTopSerif -- true)
|
||||
|
||||
create-glyph 'dotlessi.hookybottom' : glyph-proc
|
||||
create-glyph 'dotlessi.flatTailed' : glyph-proc
|
||||
local df : DivFrame para.diversityI
|
||||
set-width df.width
|
||||
include : df.markSet.e
|
||||
include : IotaShape XH (addTopSerif -- false)
|
||||
|
||||
create-glyph 'dotlessi.serifedFlatTailed' : glyph-proc
|
||||
local df : DivFrame para.diversityI
|
||||
set-width df.width
|
||||
include : df.markSet.e
|
||||
include : IotaShape XH (addTopSerif -- true)
|
||||
|
||||
create-glyph 'dotlessi.hookyBottom' : glyph-proc
|
||||
local df : DivFrame para.diversityI
|
||||
set-width df.width
|
||||
include : df.markSet.e
|
||||
|
@ -514,7 +547,7 @@ glyph-block Letter-Latin-Lower-J : begin
|
|||
widths.lhs
|
||||
flat [Math.min terminal (bar - tTurn - [Math.max (Stroke / 3) (df.width / 6)])] Descender
|
||||
curl (bar - tTurn) Descender
|
||||
archv
|
||||
archv.superness DesignParameters.tightHookSuperness
|
||||
flat bar (Descender + tTurn)
|
||||
curl bar XH [heading Upward]
|
||||
set-base-anchor 'above' barCenter XH
|
||||
|
@ -653,7 +686,7 @@ glyph-block Letter-Latin-Lower-L : begin
|
|||
glyph-block-import CommonShapes
|
||||
glyph-block-import Common-Derivatives
|
||||
glyph-block-import Marks : markMiddle aboveMarkBot aboveMarkTop
|
||||
glyph-block-import Letter-Latin-Lower-I : IotaShape TailedIShape
|
||||
glyph-block-import Letter-Latin-Lower-I : IotaShape TailedDotlessShape ItalicDotlessIShape
|
||||
glyph-block-import Letter-Shared : CreateCommaCaronComposition
|
||||
glyph-block-import Letter-Shared-Shapes : CurlyTail
|
||||
|
||||
|
@ -711,33 +744,37 @@ glyph-block Letter-Latin-Lower-L : begin
|
|||
set-base-anchor 'overlay' (df.middle + balance / 2) (CAP * OverlayPos)
|
||||
set-base-anchor 'topright' (df.middle + RightSB - Middle) CAP
|
||||
|
||||
create-glyph 'l.italic' : glyph-proc
|
||||
create-glyph 'l.tailed' : glyph-proc
|
||||
local df : DivFrame para.diversityI
|
||||
set-width df.width
|
||||
include : df.markSet.b
|
||||
if para.isItalic
|
||||
: then : begin
|
||||
local shift : (1 - df.div) * 0.4
|
||||
local left : mix SB df.rightSB (0.3 - shift)
|
||||
local right : mix SB df.rightSB (1.1 - shift)
|
||||
local rightTerm : Math.max right (left + HookX + Stroke)
|
||||
local middle : mix left right (0.54 * df.div)
|
||||
include : dispiro
|
||||
widths.lhs
|
||||
flat left CAP [heading Downward]
|
||||
curl left (SmallSmoothB * 0.85)
|
||||
hookend O
|
||||
g4 rightTerm (Hook * [StrokeWidthBlend 0.85 1] * df.div)
|
||||
include : tagged 'serifLT': dispiro
|
||||
flat (left - (LongJut * df.div) + HalfStroke * HVContrast) CAP [widths 0 Stroke]
|
||||
curl left CAP
|
||||
set-base-anchor 'above' (left + HalfStroke) CAP
|
||||
set-base-anchor 'below' middle 0
|
||||
set-base-anchor 'overlay' (left + HalfStroke) (CAP * OverlayPos)
|
||||
set-base-anchor 'topright' (left + HalfStroke + RightSB - Middle) CAP
|
||||
include : ItalicDotlessIShape df CAP (addTopSerif -- false)
|
||||
: else : begin
|
||||
include : IotaShape CAP
|
||||
set-base-anchor 'topright' (df.middle + RightSB - Middle) CAP
|
||||
include : TailedDotlessShape df CAP (addTopSerif -- false)
|
||||
|
||||
create-glyph 'l.serifedTailed' : glyph-proc
|
||||
local df : DivFrame para.diversityI
|
||||
set-width df.width
|
||||
include : df.markSet.b
|
||||
if para.isItalic
|
||||
: then : begin
|
||||
include : ItalicDotlessIShape df CAP (addTopSerif -- true)
|
||||
: else : begin
|
||||
include : TailedDotlessShape df CAP (addTopSerif -- true)
|
||||
|
||||
create-glyph 'l.flatTailed' : glyph-proc
|
||||
local df : DivFrame para.diversityI
|
||||
set-width df.width
|
||||
include : df.markSet.b
|
||||
include : IotaShape CAP (addTopSerif -- false)
|
||||
|
||||
create-glyph 'l.serifedFlatTailed' : glyph-proc
|
||||
local df : DivFrame para.diversityI
|
||||
set-width df.width
|
||||
include : df.markSet.b
|
||||
include : IotaShape CAP (addTopSerif -- true)
|
||||
|
||||
create-glyph 'l.phoneticLeft' : glyph-proc
|
||||
local df : DivFrame 1
|
||||
|
@ -753,13 +790,7 @@ glyph-block Letter-Latin-Lower-L : begin
|
|||
curl [Math.max RightSB (middle + [Math.max HookX (LongJut * 1.05 * df.div)])] HalfStroke [heading Rightward]
|
||||
set-base-anchor 'topright' (df.middle + RightSB - Middle) CAP
|
||||
|
||||
create-glyph 'l.tailed' : glyph-proc
|
||||
local df : DivFrame para.diversityI
|
||||
set-width df.width
|
||||
include : df.markSet.b
|
||||
include : TailedIShape df CAP
|
||||
|
||||
create-glyph 'l.hookybottom' : glyph-proc
|
||||
create-glyph 'l.hookyBottom' : glyph-proc
|
||||
local df : DivFrame para.diversityI
|
||||
set-width df.width
|
||||
include : df.markSet.b
|
||||
|
@ -794,11 +825,13 @@ glyph-block Letter-Latin-Lower-L : begin
|
|||
list 'hooky' 0
|
||||
list 'zshaped' Stroke
|
||||
list 'serifed' Stroke
|
||||
list 'italic' Stroke
|
||||
list 'serifedTailed' Stroke
|
||||
list 'serifless' 0
|
||||
list 'tailed' Stroke
|
||||
list 'hookybottom' Stroke
|
||||
list 'hookyBottom' Stroke
|
||||
list 'serifedAsymmetric' Stroke
|
||||
list 'flatTailed' Stroke
|
||||
list 'serifedFlatTailed' Stroke
|
||||
|
||||
foreach {suffix y0} [items-of LDotOptions] : if [query-glyph ('l.' + suffix)]
|
||||
create-glyph ('ldot.' + suffix) : glyph-proc
|
||||
|
@ -2396,15 +2429,15 @@ glyph-block Letter-Latin-K : begin
|
|||
define [BashkirKaShape top straightBar] : glyph-proc
|
||||
local left : if SLAB ([mix SB RightSB 0.35] - MVertStroke / 2 * HVContrast) [mix SB RightSB 0.2]
|
||||
local leftNB : left - [KBalance straightBar]
|
||||
local barleft : mix 0 SB [if SLAB 0.25 0.375]
|
||||
local barLeft : mix 0 SB [if SLAB 0.25 0.375]
|
||||
local sw : AdviceStroke 3
|
||||
|
||||
include : HBarTop barleft (Stroke * 0.1 + left) top
|
||||
include : HBarTop barLeft (Stroke * 0.1 + left) top
|
||||
include : VBarLeft left 0 top sw
|
||||
include : KLegShape leftNB RightSB top straightBar sw
|
||||
if SLAB : begin
|
||||
include : CenterBottomSerif (left + HalfStroke * HVContrast) 0 Jut
|
||||
include : DownwardLeftSerif barleft top VJut (MVertStroke / HVContrast)
|
||||
include : DownwardLeftSerif barLeft top VJut (MVertStroke / HVContrast)
|
||||
|
||||
create-glyph 'cyrl/BashkirUpperKa.straight' : glyph-proc
|
||||
include : MarkSet.capital
|
||||
|
@ -4233,7 +4266,6 @@ glyph-block Letter-Latin-Lower-Q : begin
|
|||
glyph-block-import CommonShapes
|
||||
glyph-block-import Common-Derivatives
|
||||
glyph-block-import Marks : markHalfStroke
|
||||
glyph-block-import Letter-Latin-Lower-I : TailedIShape
|
||||
glyph-block-import Letter-Shared-Shapes : RightwardTailedBar DToothlessRise DMBlend
|
||||
|
||||
create-glyph 'q.straight' : glyph-proc
|
||||
|
@ -5736,7 +5768,7 @@ glyph-block Letter-Latin-Upper-F : begin
|
|||
glyph-block Letter-Latin-Lower-F : begin
|
||||
glyph-block-import CommonShapes
|
||||
glyph-block-import Common-Derivatives
|
||||
glyph-block-import Letter-Shared-Shapes : CurlyTail
|
||||
glyph-block-import Letter-Shared-Shapes : CurlyTail FlatHookDepth
|
||||
|
||||
define fovershoot : fallback para.fovershoot (O * 6)
|
||||
|
||||
|
@ -5778,10 +5810,12 @@ glyph-block Letter-Latin-Lower-F : begin
|
|||
local w [fallback fine Stroke]
|
||||
include : dispiro
|
||||
widths.center w
|
||||
straight.right.start (Middle - hookx) (bottom + w / 2 + fovershoot)
|
||||
flat (Middle - hookx) (bottom + w / 2 + fovershoot)
|
||||
curl (Middle - [Math.min hooky (hookx - 0.1)]) (bottom + w / 2 + fovershoot)
|
||||
flat Middle (bottom + hooky)
|
||||
curl Middle (top - hooky)
|
||||
straight.right.end (Middle + hookx) (top - w / 2 - fovershoot)
|
||||
flat (Middle + [Math.min hooky (hookx - 0.1)]) (top - w / 2 - fovershoot)
|
||||
curl (Middle + hookx) (top - w / 2 - fovershoot)
|
||||
|
||||
create-glyph 'longs.italic' : glyph-proc
|
||||
include : MarkSet.if
|
||||
|
@ -5842,6 +5876,7 @@ glyph-block Letter-Latin-Lower-F : begin
|
|||
|
||||
|
||||
define fbar : XH * DesignParameters.fBarPosToXH + Stroke * DesignParameters.fbarStrokeAdj
|
||||
define fbarFH : XH * DesignParameters.fBarPosToXH + Stroke * DesignParameters.fbarStrokeAdjFH
|
||||
define [SmallFBottomSerif] : dispiro
|
||||
widths.lhs
|
||||
flat ([mix SB RightSB 0.02] + HalfStroke * TanSlope) 0
|
||||
|
@ -5856,78 +5891,109 @@ glyph-block Letter-Latin-Lower-F : begin
|
|||
[if offset corner curl] (barleft + offset) 0 [heading Downward]
|
||||
if offset {[corner (RightSB + RBalance2 - (OX - O) - offset) 0]} {}
|
||||
|
||||
create-glyph : glyph-proc
|
||||
include : MarkSet.b
|
||||
define [SmallFDownExtension barLeft] : VBarLeft barLeft 0.1 (Descender * 0.9)
|
||||
|
||||
local barleft : [mix SB RightSB 0.35] - Stroke * 0.25 * HVContrast
|
||||
include : StdFShapeT dispiro 0 barleft Stroke
|
||||
define [SmallFDownHook df barRight counterHookLeft] : begin
|
||||
local hd : FlatHookDepth df
|
||||
return : dispiro
|
||||
widths.lhs
|
||||
flat counterHookLeft Descender
|
||||
curl [Math.max (barRight - hd.x) (counterHookLeft + 0.1)] Descender
|
||||
archv.superness DesignParameters.tightHookSuperness
|
||||
flat barRight [Math.min 0 (Descender + hd.y)]
|
||||
curl barRight 0.1 [heading Upward]
|
||||
|
||||
create-derived 'f.straight' : glyph-proc
|
||||
include : HBarTop SB [mix SB RightSB 0.95] fbar
|
||||
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
|
||||
|
||||
create-derived 'fltail' 0x192
|
||||
VerticalHook (barleft + HalfStroke * HVContrast) 0 (-HookX) Hook
|
||||
include : StdFShapeT dispiro 0 barLeft0 Stroke
|
||||
include : Translate (barLeft - barLeft0) 0
|
||||
include : HCrossBar.top SB [mix SB RightSB m] bh
|
||||
if (counterHook === 1) : include : SmallFDownExtension barLeft
|
||||
if (counterHook === 2) : begin
|
||||
local barRight : barLeft + Stroke * HVContrast
|
||||
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
|
||||
|
||||
create-derived 'f.serifed' : SmallFBottomSerif
|
||||
|
||||
create-derived 'f.straightTailed' : glyph-proc
|
||||
include : MarkSet.if
|
||||
include : VBarLeft barleft 0 (Descender * 0.9)
|
||||
|
||||
alias 'lenisf' 0xAB35 'f.straight'
|
||||
|
||||
create-derived 'f.phoneticLeft' : glyph-proc
|
||||
include : HBarTop SB RightSB fbar
|
||||
if SLAB : include : SmallFBottomSerif
|
||||
|
||||
glyph-block-import Letter-Blackboard : BBS BBD
|
||||
create-glyph 'mathbb/f' 0x1D557 : glyph-proc
|
||||
include : MarkSet.b
|
||||
local barleft : [mix SB RightSB 0.35] - BBD * 0.25 * HVContrast
|
||||
include : StdFShapeT dispiro 0 barleft BBS
|
||||
include : intersection
|
||||
VBarLeft (barleft + BBD) 0 CAP BBS
|
||||
StdFShapeT spiro-outline 1 barleft BBS
|
||||
include : difference
|
||||
HBarTop SB [mix SB RightSB 0.95] fbar BBS
|
||||
Rect CAP 0 barleft (barleft + BBD)
|
||||
include : HBarBottom barleft (barleft + BBD) 0 BBS
|
||||
|
||||
define dfNarrowF : DivFrame para.diversityF
|
||||
define [NarrowFShape df m bh counterHook] : glyph-proc
|
||||
local crossLeft : mix 0 SB m
|
||||
local crossRight : mix df.width df.rightSB m
|
||||
local barLeft : [mix crossLeft crossRight 0.42] - Stroke * 0.375 * HVContrast + df.width / 32
|
||||
local tTurn : Math.max (Hook * [Math.min 1 : Math.sqrt df.div]) (Stroke * 1.375) : Math.min Hook (Stroke * 1.75)
|
||||
local barLeft : if (counterHook > 1)
|
||||
df.middle - HalfStroke * HVContrast
|
||||
[mix crossLeft crossRight 0.42] - Stroke * 0.375 * HVContrast + df.width / 32
|
||||
local hd : FlatHookDepth df
|
||||
include : dispiro
|
||||
widths.lhs
|
||||
flat crossRight CAP
|
||||
curl [Math.min (barLeft + tTurn) (crossRight - 0.1)] CAP
|
||||
archv
|
||||
flat barLeft [Math.max XH (CAP - tTurn)]
|
||||
curl [Math.min (barLeft + hd.x) (crossRight - 0.1)] CAP
|
||||
archv.superness DesignParameters.tightHookSuperness
|
||||
flat barLeft [Math.max XH (CAP - hd.y)]
|
||||
curl barLeft 0 [heading Downward]
|
||||
include : HBarTop crossLeft crossRight bh
|
||||
if (counterHook === 1) : begin
|
||||
include : VerticalHook (barLeft + HalfStroke * HVContrast) 0 (-HookX) Hook
|
||||
include : HCrossBar.top crossLeft crossRight bh
|
||||
if (counterHook === 1) : include : SmallFDownExtension barLeft
|
||||
if (counterHook === 2) : begin
|
||||
local barRight : barLeft + Stroke * HVContrast
|
||||
local crossRight : mix df.width df.rightSB m
|
||||
local counterHookLeft : barRight - (crossRight - barLeft)
|
||||
include : dispiro
|
||||
widths.lhs
|
||||
flat counterHookLeft Descender
|
||||
curl [Math.max (barRight - tTurn) (counterHookLeft + 0.1)] Descender
|
||||
archv
|
||||
flat barRight [Math.min 0 (Descender + tTurn)]
|
||||
curl barRight 0.1 [heading Upward]
|
||||
include : SmallFDownHook df barRight counterHookLeft
|
||||
|
||||
|
||||
create-glyph 'f.serifless' : glyph-proc
|
||||
include : MarkSet.b
|
||||
include : StandardSmallFShape [DivFrame 1] 0.95 fbarFH
|
||||
|
||||
create-glyph 'f.phoneticLeft' : glyph-proc
|
||||
include : MarkSet.b
|
||||
include : StandardSmallFShape [DivFrame 1] 1 fbarFH
|
||||
if SLAB : include : SmallFBottomSerif
|
||||
|
||||
create-glyph 'f.serifed' : glyph-proc
|
||||
include : MarkSet.b
|
||||
include : StandardSmallFShape [DivFrame 1] 0.95 fbarFH
|
||||
include : SmallFBottomSerif
|
||||
|
||||
create-glyph 'fltail' 0x192 : glyph-proc
|
||||
include : MarkSet.if
|
||||
include : StandardSmallFShape [DivFrame 1] 1 fbarFH 2
|
||||
|
||||
create-glyph 'f.tailed' : glyph-proc
|
||||
include : MarkSet.if
|
||||
include : StandardSmallFShape [DivFrame 1] 1 fbarFH 2
|
||||
|
||||
create-glyph 'f.extended' : glyph-proc
|
||||
include : MarkSet.if
|
||||
include : StandardSmallFShape [DivFrame 1] 0.95 fbarFH 1
|
||||
|
||||
create-glyph 'f.seriflessCrossbarAtXHeight' : glyph-proc
|
||||
include : MarkSet.b
|
||||
include : StandardSmallFShape [DivFrame 1] 0.95 XH
|
||||
|
||||
create-glyph 'f.serifedCrossbarAtXHeight' : glyph-proc
|
||||
include : MarkSet.b
|
||||
include : StandardSmallFShape [DivFrame 1] 0.95 XH
|
||||
include : SmallFBottomSerif
|
||||
|
||||
create-glyph 'f.tailedCrossbarAtXHeight' : glyph-proc
|
||||
include : MarkSet.if
|
||||
include : StandardSmallFShape [DivFrame 1] 1 XH 2
|
||||
|
||||
create-glyph 'f.extendedCrossbarAtXHeight' : glyph-proc
|
||||
include : MarkSet.if
|
||||
include : StandardSmallFShape [DivFrame 1] 0.95 XH 1
|
||||
|
||||
create-glyph 'f.narrow' : glyph-proc
|
||||
set-width dfNarrowF.width
|
||||
include : dfNarrowF.markSet.b
|
||||
include : NarrowFShape dfNarrowF 0.5 fbar
|
||||
define df : DivFrame para.diversityF
|
||||
set-width df.width
|
||||
include : df.markSet.b
|
||||
include : NarrowFShape df 0.5 fbarFH
|
||||
|
||||
create-glyph 'f.flatHook' : glyph-proc
|
||||
include : MarkSet.b
|
||||
include : NarrowFShape [DivFrame 1] 1 fbar
|
||||
include : NarrowFShape [DivFrame 1] 1 fbarFH
|
||||
|
||||
create-glyph 'f.flatHookCrossbarAtXHeight' : glyph-proc
|
||||
include : MarkSet.b
|
||||
|
@ -5935,7 +6001,7 @@ glyph-block Letter-Latin-Lower-F : begin
|
|||
|
||||
create-glyph 'f.flatHookSerifed' : glyph-proc
|
||||
include : MarkSet.b
|
||||
include : NarrowFShape [DivFrame 1] 1 fbar
|
||||
include : NarrowFShape [DivFrame 1] 1 fbarFH
|
||||
include : WithTransform [Translate ((RightSB - SB) * 0.035) 0] : SmallFBottomSerif
|
||||
|
||||
create-glyph 'f.flatHookSerifedCrossbarAtXHeight' : glyph-proc
|
||||
|
@ -5943,43 +6009,57 @@ glyph-block Letter-Latin-Lower-F : begin
|
|||
include : NarrowFShape [DivFrame 1] 1 XH
|
||||
include : WithTransform [Translate ((RightSB - SB) * 0.035) 0] : SmallFBottomSerif
|
||||
|
||||
create-glyph 'f.flatHookRoundTailed' : glyph-proc
|
||||
create-glyph 'f.flatHookTailed' : glyph-proc
|
||||
include : MarkSet.if
|
||||
include : NarrowFShape [DivFrame 1] 1 fbar 1
|
||||
include : NarrowFShape [DivFrame 1] 1 fbarFH 2
|
||||
|
||||
create-glyph 'f.flatHookRoundTailedCrossbarAtXHeight' : glyph-proc
|
||||
include : MarkSet.if
|
||||
include : NarrowFShape [DivFrame 1] 1 XH 1
|
||||
|
||||
create-glyph 'f.flatHookFlatTailed' : glyph-proc
|
||||
include : MarkSet.if
|
||||
include : NarrowFShape [DivFrame 1] 1 fbar 2
|
||||
|
||||
create-glyph 'f.flatHookFlatTailedCrossbarAtXHeight' : glyph-proc
|
||||
create-glyph 'f.flatHookTailedCrossbarAtXHeight' : glyph-proc
|
||||
include : MarkSet.if
|
||||
include : NarrowFShape [DivFrame 1] 1 XH 2
|
||||
|
||||
create-glyph 'f.tailed' : glyph-proc
|
||||
include [refer-glyph 'longs.italic'] AS_BASE
|
||||
include : HBarTop (Middle - LongJut) (Middle + LongJut) fbar
|
||||
create-glyph 'f.flatHookExtended' : glyph-proc
|
||||
include : MarkSet.if
|
||||
include : NarrowFShape [DivFrame 1] 1 fbarFH 1
|
||||
|
||||
create-glyph 'f.flatHookExtendedCrossbarAtXHeight' : glyph-proc
|
||||
include : MarkSet.if
|
||||
include : NarrowFShape [DivFrame 1] 1 XH 1
|
||||
|
||||
select-variant 'f' 'f'
|
||||
alias 'lenisf' 0xAB35 'f.serifless'
|
||||
|
||||
turned 'turnf.straight' nothing 'f.straight' Middle (XH / 2) [MarkSet.p]
|
||||
turned 'turnf.serifless' nothing 'f.serifless' Middle (XH / 2) [MarkSet.p]
|
||||
turned 'turnf.serifed' nothing 'f.serifed' Middle (XH / 2) [MarkSet.p]
|
||||
turned 'turnf.straightTailed' nothing 'f.straightTailed' Middle (XH / 2) [MarkSet.if]
|
||||
turned 'turnf.tailed' nothing 'f.tailed' Middle [mix Descender CAP 0.5] [MarkSet.if]
|
||||
turned 'turnf.tailed' nothing 'f.tailed' 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.extendedCrossbarAtXHeight' nothing 'f.extendedCrossbarAtXHeight' Middle (XH / 2) [MarkSet.if]
|
||||
turned 'turnf.flatHook' nothing 'f.flatHook' Middle (XH / 2) [MarkSet.p]
|
||||
turned 'turnf.flatHookCrossbarAtXHeight' nothing 'f.flatHookCrossbarAtXHeight' Middle (XH / 2) [MarkSet.p]
|
||||
turned 'turnf.flatHookSerifed' nothing 'f.flatHookSerifed' Middle (XH / 2) [MarkSet.p]
|
||||
turned 'turnf.flatHookTailed' nothing 'f.flatHookTailed' Middle [mix Descender CAP 0.5] [MarkSet.if]
|
||||
turned 'turnf.flatHookExtended' nothing 'f.flatHookExtended' Middle [mix Descender CAP 0.5] [MarkSet.if]
|
||||
turned 'turnf.flatHookCrossbarAtXHeight' nothing 'f.flatHookCrossbarAtXHeight' Middle (XH / 2) [MarkSet.p]
|
||||
turned 'turnf.flatHookSerifedCrossbarAtXHeight' nothing 'f.flatHookSerifedCrossbarAtXHeight' Middle (XH / 2) [MarkSet.p]
|
||||
turned 'turnf.flatHookRoundTailed' nothing 'f.flatHookRoundTailed' Middle [mix Descender CAP 0.5] [MarkSet.if]
|
||||
turned 'turnf.flatHookRoundTailedCrossbarAtXHeight' nothing 'f.flatHookRoundTailedCrossbarAtXHeight' Middle [mix Descender CAP 0.5] [MarkSet.if]
|
||||
turned 'turnf.flatHookFlatTailed' nothing 'f.flatHookFlatTailed' Middle [mix Descender CAP 0.5] [MarkSet.if]
|
||||
turned 'turnf.flatHookFlatTailedCrossbarAtXHeight' nothing 'f.flatHookFlatTailedCrossbarAtXHeight' Middle [mix Descender CAP 0.5] [MarkSet.if]
|
||||
turned 'turnf.narrow' nothing 'f.narrow' dfNarrowF.middle (XH / 2) [dfNarrowF.markSet.p]
|
||||
turned 'turnf.flatHookTailedCrossbarAtXHeight' nothing 'f.flatHookTailedCrossbarAtXHeight' Middle [mix Descender CAP 0.5] [MarkSet.if]
|
||||
turned 'turnf.flatHookExtendedCrossbarAtXHeight' nothing 'f.flatHookExtendedCrossbarAtXHeight' Middle [mix Descender CAP 0.5] [MarkSet.if]
|
||||
let [df : DivFrame para.diversityF] : turned 'turnf.narrow' nothing 'f.narrow' df.middle (XH / 2) [df.markSet.p]
|
||||
select-variant 'turnf' 0x25F (follow -- 'f')
|
||||
|
||||
glyph-block-import Letter-Blackboard : BBS BBD
|
||||
create-glyph 'mathbb/f' 0x1D557 : glyph-proc
|
||||
include : MarkSet.b
|
||||
local barLeft : [mix SB RightSB 0.35] - BBD * 0.25 * HVContrast
|
||||
include : StdFShapeT dispiro 0 barLeft BBS
|
||||
include : intersection
|
||||
VBarLeft (barLeft + BBD) 0 CAP BBS
|
||||
StdFShapeT spiro-outline 1 barLeft BBS
|
||||
include : difference
|
||||
HCrossBar.top SB [mix SB RightSB 0.95] fbar BBS
|
||||
Rect CAP 0 barLeft (barLeft + BBD)
|
||||
include : HBarBottom barLeft (barLeft + BBD) 0 BBS
|
||||
|
||||
do "f ligatures"
|
||||
local shift (-(Width * 0.055 + SB * 0.5))
|
||||
local barr RightSB
|
||||
|
@ -6226,7 +6306,7 @@ glyph-block Letter-Latin-Lower-T : begin
|
|||
glyph-block-import CommonShapes
|
||||
glyph-block-import Common-Derivatives
|
||||
glyph-block-import Letter-Shared : CreateCommaCaronComposition
|
||||
glyph-block-import Letter-Shared-Shapes : CurlyTail
|
||||
glyph-block-import Letter-Shared-Shapes : CurlyTail FlatHookDepth
|
||||
|
||||
define xSmallTBarLeft : Middle - TBalance - Stroke * 0.5 * HVContrast
|
||||
define [SmallTHookShapeT sink offset top bot sw] : begin
|
||||
|
@ -6247,7 +6327,7 @@ glyph-block Letter-Latin-Lower-T : begin
|
|||
local g : G.call currentGlyph # Not using include
|
||||
set-base-anchor 'bottomright' g.knots.(g.knots.length - 1).x g.knots.(g.knots.length - 1).y
|
||||
set-base-anchor 'below' [mix xSmallTBarLeft g.knots.(g.knots.length - 1).x : StrokeWidthBlend 0.375 0.5] bot
|
||||
include : HBarTop
|
||||
include : HCrossBar.top
|
||||
xSmallTBarLeft + HalfStroke - LongJut + TBalance2
|
||||
xSmallTBarLeft + HalfStroke + LongJut + TBalance2
|
||||
begin XH
|
||||
|
@ -6265,7 +6345,7 @@ glyph-block Letter-Latin-Lower-T : begin
|
|||
VBarLeft (xSmallTBarLeft + BBD) 0 CAP BBS
|
||||
SmallTHookShapeT spiro-outline 1 CAP 0 BBS
|
||||
include : difference
|
||||
HBarTop
|
||||
HCrossBar.top
|
||||
xSmallTBarLeft + (BBD / 2) - LongJut + TBalance2
|
||||
xSmallTBarLeft + (BBD / 2) + LongJut + TBalance2
|
||||
begin XH
|
||||
|
@ -6276,15 +6356,15 @@ glyph-block Letter-Latin-Lower-T : begin
|
|||
local xCrossLeft : mix 0 SB m
|
||||
local xCrossRight : mix df.width df.rightSB m
|
||||
local xBarLeft : [mix xCrossLeft xCrossRight 0.42] - Stroke * 0.375 * HVContrast
|
||||
local tTurn : Math.max (Hook * [Math.min 1 : Math.sqrt df.div]) (Stroke * 1.375) : Math.min Hook (Stroke * 1.75)
|
||||
local hd : FlatHookDepth df
|
||||
include : union
|
||||
HBarTop xCrossLeft (xCrossRight + ext) XH
|
||||
HCrossBar.top xCrossLeft (xCrossRight + ext) XH
|
||||
dispiro
|
||||
widths.rhs
|
||||
flat xCrossRight 0
|
||||
curl [Math.min (xBarLeft + tTurn) (xCrossRight - 1)] 0
|
||||
archv
|
||||
flat xBarLeft tTurn
|
||||
curl [Math.min (xBarLeft + hd.x) (xCrossRight - 1)] 0
|
||||
archv.superness DesignParameters.tightHookSuperness
|
||||
flat xBarLeft hd.y
|
||||
curl xBarLeft top [heading Upward]
|
||||
set-base-anchor 'topright' xCrossRight CAP
|
||||
|
||||
|
@ -6324,13 +6404,13 @@ glyph-block Letter-Latin-Lower-T : begin
|
|||
set-width Width
|
||||
include : MarkSet.b
|
||||
include : VBar Middle 0 CAP
|
||||
include : HBarTop (Middle - LongJut) (Middle + LongJut) XH
|
||||
include : HCrossBar.top (Middle - LongJut) (Middle + LongJut) XH
|
||||
|
||||
create-glyph 't.hooklessAsymmetric' : glyph-proc
|
||||
set-width Width
|
||||
include : MarkSet.b
|
||||
include : VBarLeft xSmallTBarLeft 0 CAP
|
||||
include : HBarTop xSmallTBarLeft (Middle + LongJut) XH
|
||||
include : HCrossBar.top xSmallTBarLeft (Middle + LongJut) XH
|
||||
|
||||
select-variant 't' 't'
|
||||
|
||||
|
|
|
@ -118,7 +118,9 @@ export : define [SetupBuilders args] : begin
|
|||
return cache.(samples).vh
|
||||
list hv vh
|
||||
define [archv samples superness] : alsoThruThem [jhv [fallback samples DEFAULT_STEPS] superness]
|
||||
set archv.superness : lambda [s] : archv DEFAULT_STEPS s
|
||||
define [arcvh samples superness] : alsoThruThem [jvh [fallback samples DEFAULT_STEPS] superness]
|
||||
set arcvh.superness : lambda [s] : arcvh DEFAULT_STEPS s
|
||||
|
||||
define [complexThru] : begin
|
||||
local a : {}.slice.call arguments
|
||||
|
|
|
@ -324,6 +324,7 @@ export : define DesignParameters : object
|
|||
upperEBarPos : lambda [slab] : if slab 0.52 0.53
|
||||
# Fine adjustments
|
||||
fbarStrokeAdj 0.25
|
||||
fbarStrokeAdjFH 0.125
|
||||
superness 2.275
|
||||
tightHookSuperness 2.30
|
||||
|
||||
|
|
|
@ -119,7 +119,7 @@ define-macro glyph-block-import : syntax-rules
|
|||
ScaleAround Realign ForceUpright DiagCor CreateWaveShape NameUni PointingTo
|
||||
WithAIHSerifsMask WithTransform ReverseContours clear-anchors OBarLeftToothlessShape
|
||||
OBarLeftRoundedShape OBarRightToothlessShape OBarRightRoundedShape AsRadical
|
||||
ExtLineCenter DiagCorDs]
|
||||
ExtLineCenter DiagCorDs HCrossBar]
|
||||
|
||||
define vartiableFilter : if externEnv.$glyphBlockVariableUsage$
|
||||
lambda [x] externEnv.$glyphBlockVariableUsage$.(x)
|
||||
|
|
|
@ -306,65 +306,85 @@ selector.d = "tailed"
|
|||
sampler = 'f'
|
||||
tag = 'cv15'
|
||||
|
||||
[prime.f.variants.straight]
|
||||
[prime.f.variants.serifless]
|
||||
rank = 1
|
||||
description = '`f` without bottom hook'
|
||||
selector.f = "straight"
|
||||
|
||||
[prime.f.variants.tailed]
|
||||
rank = 2
|
||||
description = '`f` with a leftward bottom hook'
|
||||
selector.f = "tailed"
|
||||
description = '`f` without bottom serif, hook or exension'
|
||||
selector.f = "serifless"
|
||||
|
||||
[prime.f.variants.serifed]
|
||||
rank = 3
|
||||
rank = 2
|
||||
description = '`f` with bottom serif'
|
||||
selector.f = "serifed"
|
||||
|
||||
[prime.f.variants.straight-tailed]
|
||||
[prime.f.variants.tailed]
|
||||
rank = 3
|
||||
description = '`f` with bottom hook'
|
||||
selector.f = "tailed"
|
||||
|
||||
[prime.f.variants.extended]
|
||||
rank = 4
|
||||
description = '`f` with straight tail'
|
||||
selector.f = "straightTailed"
|
||||
description = '`f` with bar extended to descender'
|
||||
selector.f = "extended"
|
||||
|
||||
[prime.f.variants.serifless-crossbar-at-x-height]
|
||||
rank = 5
|
||||
description = '`f` without bottom serif, hook or exension; crossbar is placed right at X-height'
|
||||
selector.f = "seriflessCrossbarAtXHeight"
|
||||
|
||||
[prime.f.variants.serifed-crossbar-at-x-height]
|
||||
rank = 6
|
||||
description = '`f` with bottom serif; crossbar is placed right at X-height'
|
||||
selector.f = "serifedCrossbarAtXHeight"
|
||||
|
||||
[prime.f.variants.tailed-crossbar-at-x-height]
|
||||
rank = 7
|
||||
description = '`f` with bottom hook; crossbar is placed right at X-height'
|
||||
selector.f = "tailedCrossbarAtXHeight"
|
||||
|
||||
[prime.f.variants.extended-crossbar-at-x-height]
|
||||
rank = 8
|
||||
description = '`f` with bar extended to descender; crossbar is placed right at X-height'
|
||||
selector.f = "extendedCrossbarAtXHeight"
|
||||
|
||||
[prime.f.variants.flat-hook]
|
||||
rank = 5
|
||||
description = '`f` with flat hook'
|
||||
rank = 9
|
||||
description = '`f` with flat top hook, without bottom serif, hook or exension'
|
||||
selector.f = 'flatHook'
|
||||
|
||||
[prime.f.variants.flat-hook-crossbar-at-x-height]
|
||||
rank = 6
|
||||
description = '`f` with flat hook and crossbar placed right at X-height'
|
||||
selector.f = 'flatHookCrossbarAtXHeight'
|
||||
|
||||
[prime.f.variants.flat-hook-serifed]
|
||||
rank = 7
|
||||
description = '`f` with flat hook and bottom serif'
|
||||
rank = 10
|
||||
description = '`f` with flat top hook and bottom serif'
|
||||
selector.f = 'flatHookSerifed'
|
||||
|
||||
[prime.f.variants.flat-hook-tailed]
|
||||
rank = 11
|
||||
description = '`f` with flat top hook and bottom hook'
|
||||
selector.f = 'flatHookTailed'
|
||||
|
||||
[prime.f.variants.flat-hook-extended]
|
||||
rank = 12
|
||||
description = '`f` with flat top hook and bar extended to descender'
|
||||
selector.f = 'flatHookExtended'
|
||||
|
||||
[prime.f.variants.flat-hook-crossbar-at-x-height]
|
||||
rank = 13
|
||||
description = '`f` with flat top hook, without bottom serif, hook or exension; crossbar is placed right at X-height'
|
||||
selector.f = 'flatHookCrossbarAtXHeight'
|
||||
|
||||
[prime.f.variants.flat-hook-serifed-crossbar-at-x-height]
|
||||
rank = 8
|
||||
description = '`f` with flat hook, bottom serif, and crossbar placed right at X-height'
|
||||
rank = 14
|
||||
description = '`f` with flat top hook, bottom serif; crossbar is placed right at X-height'
|
||||
selector.f = 'flatHookSerifedCrossbarAtXHeight'
|
||||
|
||||
[prime.f.variants.flat-hook-round-tailed]
|
||||
rank = 9
|
||||
description = '`f` with flat hook'
|
||||
selector.f = 'flatHookRoundTailed'
|
||||
[prime.f.variants.flat-hook-tailed-crossbar-at-x-height]
|
||||
rank = 15
|
||||
description = '`f` with flat top hook, bottom hook; crossbar is placed right at X-height'
|
||||
selector.f = 'flatHookTailedCrossbarAtXHeight'
|
||||
|
||||
[prime.f.variants.flat-hook-round-tailed-crossbar-at-x-height]
|
||||
rank = 10
|
||||
description = '`f` with flat hook and crossbar placed right at X-height'
|
||||
selector.f = 'flatHookRoundTailedCrossbarAtXHeight'
|
||||
|
||||
[prime.f.variants.flat-hook-flat-tailed]
|
||||
rank = 11
|
||||
description = '`f` with flat hook and bottom serif'
|
||||
selector.f = 'flatHookFlatTailed'
|
||||
|
||||
[prime.f.variants.flat-hook-flat-tailed-crossbar-at-x-height]
|
||||
rank = 12
|
||||
description = '`f` with flat hook, bottom serif, and crossbar placed right at X-height'
|
||||
selector.f = 'flatHookFlatTailedCrossbarAtXHeight'
|
||||
[prime.f.variants.flat-hook-extended-crossbar-at-x-height]
|
||||
rank = 16
|
||||
description = '`f` with flat top hook, bar extended to descender; crossbar is placed right at X-height'
|
||||
selector.f = 'flatHookExtendedCrossbarAtXHeight'
|
||||
|
||||
|
||||
|
||||
|
@ -438,41 +458,51 @@ rank = 1
|
|||
description = 'Serifed `i`'
|
||||
selector.dotlessi = 'serifed'
|
||||
|
||||
[prime.i.variants.italic]
|
||||
[prime.i.variants.serifless]
|
||||
rank = 2
|
||||
description = 'Italic `i`'
|
||||
selector.dotlessi = 'italic'
|
||||
description = '`i` like a straight line'
|
||||
selector.dotlessi = "serifless"
|
||||
|
||||
[prime.i.variants.hooky]
|
||||
rank = 3
|
||||
description = 'Hooky `i`'
|
||||
selector.dotlessi = 'hooky'
|
||||
|
||||
[prime.i.variants.serifless]
|
||||
rank = 4
|
||||
description = '`i` like a straight line'
|
||||
selector.dotlessi = "serifless"
|
||||
|
||||
[prime.i.variants.zshaped]
|
||||
rank = 5
|
||||
rank = 4
|
||||
description = 'Z-shaped `i`'
|
||||
selector.dotlessi = 'zshaped'
|
||||
|
||||
[prime.i.variants.tailed]
|
||||
rank = 6
|
||||
description = "Tailed `i`"
|
||||
selector.dotlessi = 'tailed'
|
||||
|
||||
[prime.i.variants.hookybottom]
|
||||
rank = 7
|
||||
[prime.i.variants.hooky-bottom]
|
||||
rank = 5
|
||||
description = "`i` with a straight tail"
|
||||
selector.dotlessi = 'hookybottom'
|
||||
selector.dotlessi = 'hookyBottom'
|
||||
|
||||
[prime.i.variants.serifed-asymmetric]
|
||||
rank = 8
|
||||
rank = 6
|
||||
description = "`i` with shorter top serif and full bottom serif"
|
||||
selector.dotlessi = 'serifedAsymmetric'
|
||||
|
||||
[prime.i.variants.tailed]
|
||||
rank = 7
|
||||
description = "`i` with curly tail"
|
||||
selector.dotlessi = 'tailed'
|
||||
|
||||
[prime.i.variants.serifed-tailed]
|
||||
rank = 8
|
||||
description = '`i` with curly tail and top serif'
|
||||
selector.dotlessi = 'serifedTailed'
|
||||
|
||||
[prime.i.variants.flat-tailed]
|
||||
rank = 9
|
||||
description = "`i` with top serif and a curly-then-flat tail"
|
||||
selector.dotlessi = 'flatTailed'
|
||||
|
||||
[prime.i.variants.serifed-flat-tailed]
|
||||
rank = 10
|
||||
description = "`i` with top serif and a curly-then-flat tail"
|
||||
selector.dotlessi = 'serifedFlatTailed'
|
||||
|
||||
|
||||
|
||||
[prime.j]
|
||||
|
@ -531,46 +561,55 @@ selector.k = 'cursive'
|
|||
sampler = 'l'
|
||||
tag = 'cv21'
|
||||
|
||||
[prime.l.variants.hooky]
|
||||
[prime.l.variants.serifed]
|
||||
rank = 1
|
||||
description = 'Serifed `l`'
|
||||
selector.l = 'serifed'
|
||||
|
||||
[prime.l.variants.serifless]
|
||||
rank = 2
|
||||
description = '`l` like a straight line'
|
||||
selector.l = "serifless"
|
||||
|
||||
[prime.l.variants.hooky]
|
||||
rank = 3
|
||||
description = 'Hooky `l`'
|
||||
selector.l = 'hooky'
|
||||
|
||||
[prime.l.variants.zshaped]
|
||||
rank = 2
|
||||
rank = 4
|
||||
description = 'Z-shaped `l`'
|
||||
selector.l = 'zshaped'
|
||||
|
||||
[prime.l.variants.serifed]
|
||||
rank = 3
|
||||
description = 'Serifed `l`'
|
||||
selector.l = 'serifed'
|
||||
|
||||
[prime.l.variants.italic]
|
||||
rank = 4
|
||||
description = 'Italic, cursive `l`'
|
||||
selector.l = 'italic'
|
||||
|
||||
[prime.l.variants.serifless]
|
||||
[prime.l.variants.hooky-bottom]
|
||||
rank = 5
|
||||
description = '`l` like a straight line'
|
||||
selector.l = "serifless"
|
||||
|
||||
[prime.l.variants.tailed]
|
||||
rank = 6
|
||||
description = '`l` with a curved tail'
|
||||
selector.l = 'tailed'
|
||||
|
||||
[prime.l.variants.hookybottom]
|
||||
rank = 7
|
||||
description = '`l` with a straight tail'
|
||||
selector.l = 'hookybottom'
|
||||
selector.l = 'hookyBottom'
|
||||
|
||||
[prime.l.variants.serifed-asymmetric]
|
||||
rank = 8
|
||||
rank = 6
|
||||
description = '`l` with shorter top serif and full bottom serif'
|
||||
selector.l = 'serifedAsymmetric'
|
||||
|
||||
[prime.l.variants.tailed]
|
||||
rank = 7
|
||||
description = '`l` with curly tail'
|
||||
selector.l = 'tailed'
|
||||
|
||||
[prime.l.variants.serifed-tailed]
|
||||
rank = 8
|
||||
description = '`l` with top serif and curly tail'
|
||||
selector.l = 'serifedTailed'
|
||||
|
||||
[prime.l.variants.flat-tailed]
|
||||
rank = 9
|
||||
description = "`l` with top serif and a curly-then-flat tail"
|
||||
selector.l = 'flatTailed'
|
||||
|
||||
[prime.l.variants.serifed-flat-tailed]
|
||||
rank = 10
|
||||
description = "`l` with top serif and a curly-then-flat tail"
|
||||
selector.l = 'serifedFlatTailed'
|
||||
|
||||
|
||||
[prime.m]
|
||||
|
@ -1716,7 +1755,7 @@ digit-form = 'lining'
|
|||
[default.upright-oblique]
|
||||
a = 'doublestorey'
|
||||
d = 'toothed'
|
||||
f = 'straight'
|
||||
f = 'serifless'
|
||||
i = 'serifed'
|
||||
j = 'serifed'
|
||||
k = 'straight'
|
||||
|
@ -1727,11 +1766,11 @@ y = 'straight'
|
|||
[default.italic]
|
||||
a = 'singlestorey-tailed'
|
||||
d = 'tailed'
|
||||
f = 'tailed'
|
||||
i = 'italic'
|
||||
f = 'flat-hook-tailed'
|
||||
i = 'serifed-tailed'
|
||||
j = 'serifed'
|
||||
k = 'cursive'
|
||||
l = 'italic'
|
||||
l = 'serifed-tailed'
|
||||
u = 'tailed'
|
||||
y = 'cursive'
|
||||
|
||||
|
@ -1741,21 +1780,16 @@ y = 'cursive'
|
|||
one = 'base'
|
||||
seven = 'serifed'
|
||||
|
||||
[composite.slab.upright]
|
||||
[composite.slab.upright-oblique]
|
||||
f = 'serifed'
|
||||
r = 'serifed'
|
||||
y = 'straight-turn'
|
||||
|
||||
[composite.slab.italic]
|
||||
f = 'tailed'
|
||||
f = 'flat-hook-tailed'
|
||||
r = 'top-serifed'
|
||||
y = 'cursive'
|
||||
|
||||
[composite.slab.oblique]
|
||||
f = 'serifed'
|
||||
r = 'serifed'
|
||||
y = 'straight-turn'
|
||||
|
||||
|
||||
|
||||
[composite.ss01]
|
||||
|
@ -1778,6 +1812,7 @@ asterisk = 'hexhigh'
|
|||
one = 'base'
|
||||
six = 'open-contour'
|
||||
nine = 'open-contour'
|
||||
percent = "rings-connected"
|
||||
|
||||
|
||||
|
||||
|
@ -1798,6 +1833,7 @@ one = 'base'
|
|||
seven = 'serifed'
|
||||
six = 'closed-contour'
|
||||
nine = 'closed-contour'
|
||||
percent = "rings-connected"
|
||||
|
||||
|
||||
|
||||
|
@ -1814,6 +1850,7 @@ asterisk = 'hexhigh'
|
|||
one = 'base'
|
||||
six = 'open-contour'
|
||||
nine = 'open-contour'
|
||||
percent = "rings-connected"
|
||||
|
||||
[composite.ss03.upright-oblique]
|
||||
g = 'doublestorey'
|
||||
|
@ -1835,7 +1872,7 @@ a = 'doublestorey'
|
|||
underscore = 'low'
|
||||
i = 'serifed'
|
||||
k = 'straight'
|
||||
l = 'italic'
|
||||
l = 'serifed-flat-tailed'
|
||||
y = 'straight-turn'
|
||||
brace = 'straight'
|
||||
number-sign = 'slanted'
|
||||
|
@ -1844,6 +1881,7 @@ one = 'base'
|
|||
ampersand = 'upper-open'
|
||||
six = 'closed-contour'
|
||||
nine = 'closed-contour'
|
||||
percent = "rings-connected"
|
||||
|
||||
|
||||
|
||||
|
@ -1858,7 +1896,7 @@ a = 'doublestorey'
|
|||
g = 'opendoublestorey'
|
||||
i = 'serifed'
|
||||
k = 'straight'
|
||||
l = 'italic'
|
||||
l = 'serifed-tailed'
|
||||
y = 'straight-turn'
|
||||
number-sign = 'slanted'
|
||||
zero = 'dotted'
|
||||
|
@ -1867,6 +1905,7 @@ ampersand = 'et'
|
|||
four = 'semi-open'
|
||||
six = 'closed-contour'
|
||||
nine = 'open-contour'
|
||||
percent = "rings-connected"
|
||||
|
||||
|
||||
|
||||
|
@ -1887,6 +1926,7 @@ number-sign = 'slanted'
|
|||
one = 'base'
|
||||
six = 'closed-contour'
|
||||
nine = 'closed-contour'
|
||||
percent = "rings-connected"
|
||||
|
||||
|
||||
|
||||
|
@ -1908,6 +1948,7 @@ one = 'base'
|
|||
paren = 'large-contour'
|
||||
six = 'closed-contour'
|
||||
nine = 'closed-contour'
|
||||
percent = "rings-connected"
|
||||
|
||||
|
||||
|
||||
|
@ -1957,7 +1998,7 @@ description = 'Source Code Pro Style'
|
|||
capital-g = 'toothless'
|
||||
at = 'threefold'
|
||||
k = 'straight'
|
||||
l = 'italic'
|
||||
l = 'serifed-tailed'
|
||||
y = 'straight-turn'
|
||||
asterisk = 'low'
|
||||
zero = 'dotted'
|
||||
|
@ -1992,6 +2033,7 @@ asterisk = 'low'
|
|||
one = 'base'
|
||||
nine = 'straight-bar'
|
||||
six = 'straight-bar'
|
||||
percent = "rings-connected"
|
||||
|
||||
|
||||
|
||||
|
@ -2021,8 +2063,8 @@ a = "doublestorey-toothless-corner"
|
|||
b = "toothless-corner"
|
||||
d = "toothless-corner"
|
||||
g = "earless-corner"
|
||||
i = "italic"
|
||||
l = "italic"
|
||||
i = "serifed-tailed"
|
||||
l = "serifed-tailed"
|
||||
m = "earless-corner-double-arch-shortleg"
|
||||
n = "earless-corner-straight"
|
||||
p = "earless-corner"
|
||||
|
@ -2055,6 +2097,7 @@ number-sign = 'slanted'
|
|||
one = 'base'
|
||||
six = 'closed-contour'
|
||||
nine = 'closed-contour'
|
||||
percent = "rings-connected"
|
||||
|
||||
|
||||
|
||||
|
@ -2063,20 +2106,25 @@ tag = 'ss14'
|
|||
description = 'JetBrains Mono Style'
|
||||
|
||||
[composite.ss14.design]
|
||||
i = 'serifed'
|
||||
k = 'straight'
|
||||
l = 'italic'
|
||||
u = 'toothless-rounded'
|
||||
zero = 'long-dotted'
|
||||
three = 'flattop'
|
||||
capital-q = 'straight'
|
||||
asterisk = 'low'
|
||||
one = 'base'
|
||||
seven = 'serifed'
|
||||
ampersand = 'upper-open'
|
||||
four = 'semi-open-non-crossing'
|
||||
nine = 'straight-bar'
|
||||
six = 'straight-bar'
|
||||
capital-q = "straight"
|
||||
capital-g = "toothless"
|
||||
f = "flat-hook-crossbar-at-x-height"
|
||||
i = "serifed"
|
||||
l = "serifed-flat-tailed"
|
||||
u = "toothless-rounded"
|
||||
zero = "dotted"
|
||||
three = "flattop"
|
||||
one = "base"
|
||||
asterisk = "low"
|
||||
tilde = "low"
|
||||
lig-ltgteq = "slanted"
|
||||
percent = "rings-connected"
|
||||
ampersand = "upper-open"
|
||||
brace = "straight"
|
||||
number-sign = "slanted"
|
||||
|
||||
[composite.ss14.italic]
|
||||
f = "flat-hook-tailed-crossbar-at-x-height"
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue