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