Add v-f-flat-hook-crossbar-at-x-height
and v-t-flat-hook-short-neck2
This commit is contained in:
parent
c4f271e910
commit
7f5df7dba1
8 changed files with 53 additions and 32 deletions
|
@ -4,6 +4,7 @@ import '../support/point' as Point
|
|||
import './kits/spiro-kit' as spirokit
|
||||
import './kits/boole-kit' as BooleKit
|
||||
import '../support/anchor' as Anchor
|
||||
import [ designParameters ] from "../meta/aesthetics"
|
||||
|
||||
extern isFinite
|
||||
|
||||
|
@ -29,7 +30,7 @@ export all : define [buildGlyphs para recursive recursiveCodes] : begin
|
|||
local glyphStore : new GlyphStore
|
||||
|
||||
define metrics : calculateMetrics para
|
||||
define [object GlobalTransform UPM Middle CAP XH SB RightSB Contrast Stroke Superness Width TanSlope OverlayPos Descender SymbolMid ParenTop ParenBot OperTop OperBot PlusTop PlusBot TackTop TackBot adviceBlackness MVertStrokeD] metrics
|
||||
define [object GlobalTransform UPM Middle CAP XH SB RightSB Contrast Stroke Width TanSlope OverlayPos Descender SymbolMid ParenTop ParenBot OperTop OperBot PlusTop PlusBot TackTop TackBot adviceBlackness MVertStrokeD] metrics
|
||||
|
||||
define fontMetrics {.head {.} .hhea {.} .OS_2 {.} .post {.}}
|
||||
setFontMetrics para metrics fontMetrics
|
||||
|
@ -107,7 +108,7 @@ export all : define [buildGlyphs para recursive recursiveCodes] : begin
|
|||
|
||||
### Spiro constructions
|
||||
# Basic knots
|
||||
define spirofns : spirokit.SetupBuilders : object GlobalTransform Contrast Stroke Glyph para Superness
|
||||
define spirofns : spirokit.SetupBuilders : object GlobalTransform Contrast Stroke Glyph para [superness designParameters.superness]
|
||||
define booleFns : BooleKit.SetupBuilders : object GlobalTransform Glyph
|
||||
|
||||
# IDKY, but wrapping "metrics" prevents Node.js on Arch modifying it.
|
||||
|
|
|
@ -5,7 +5,7 @@ import '../../support/transform' as Transform
|
|||
import '../../support/utils' as [object fallback mix bez2 bez3]
|
||||
|
||||
export : define [SetupBuilders args] : begin
|
||||
define [object para Glyph Contrast GlobalTransform Stroke Superness] args
|
||||
define [object para Glyph Contrast GlobalTransform Stroke] args
|
||||
|
||||
define [g4 x y f] {.x x .y y .type 'g4' .af f}
|
||||
define [g2 x y f] {.x x .y y .type 'g2' .af f}
|
||||
|
@ -98,7 +98,7 @@ export : define [SetupBuilders args] : begin
|
|||
define DEFAULT_STEPS 6
|
||||
define {jhv, jvh} : let [cache {}] : begin
|
||||
local [build samples _superness] : begin
|
||||
local superness : fallback _superness Superness
|
||||
local superness : fallback _superness args.superness
|
||||
local hv {}
|
||||
local vh {}
|
||||
foreach [j : range 1 samples] : begin
|
||||
|
|
|
@ -472,7 +472,7 @@ glyph-block CommonShapes : begin
|
|||
# Spiro shapes
|
||||
define [determineMixR w v u sw swash] : begin
|
||||
if (!swash && w < v) : return : 1 - [determineMixR v w u sw swash]
|
||||
local superness Superness
|
||||
local superness designParameters.superness
|
||||
local r : piecewise
|
||||
(w <= v) 0.5
|
||||
true : 1 / ([Math.pow (1 - [Math.pow (1 - v / w) superness]) (1 / superness)] + 1)
|
||||
|
@ -495,7 +495,7 @@ glyph-block CommonShapes : begin
|
|||
local ltr : if isStart (toFinish.x < toStraight.x) (toFinish.x > toStraight.x)
|
||||
local dtu : if isStart (y > toFinish.y) (y < toFinish.y)
|
||||
local doSwash : !tight && para.isItalic && ltr && atBottom && !isStart
|
||||
local superness : if tight para.tightHookSuperness Superness
|
||||
local superness : if tight designParameters.tightHookSuperness designParameters.superness
|
||||
|
||||
# Adjust terminal's position if necessary
|
||||
toFinish.x = toFinish.x + OXHook * [if ltr (-1) 1] * [if isStart (-1) 1]
|
||||
|
|
|
@ -4824,7 +4824,7 @@ glyph-block Letter-Latin-Lower-F : begin
|
|||
include : VerticalHook Middle 0 LongJut Hook
|
||||
|
||||
|
||||
define fbar : XH * designParameters.fBarPos + Stroke * para.fbarStrokeAdj
|
||||
define fbar : XH * designParameters.fBarPosToXH + Stroke * designParameters.fbarStrokeAdj
|
||||
create-glyph : glyph-proc
|
||||
local fovershoot2 (O * 2)
|
||||
include MarkSet.b
|
||||
|
@ -4864,7 +4864,7 @@ glyph-block Letter-Latin-Lower-F : begin
|
|||
curl (RightSB - HalfStroke * TanSlope) fbar
|
||||
|
||||
define dfNarrowF : DivFrame para.diversityF
|
||||
define [NarrowFShape df m] : glyph-proc
|
||||
define [NarrowFShape df m bh] : 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
|
||||
|
@ -4878,17 +4878,21 @@ glyph-block Letter-Latin-Lower-F : begin
|
|||
curl barLeft 0 [heading Downward]
|
||||
include : dispiro
|
||||
widths.rhs
|
||||
flat (crossLeft - HalfStroke * TanSlope) fbar
|
||||
curl (crossRight - HalfStroke * TanSlope) fbar
|
||||
flat (crossLeft - HalfStroke * TanSlope) bh
|
||||
curl (crossRight - HalfStroke * TanSlope) bh
|
||||
|
||||
create-glyph 'f.narrow' : glyph-proc
|
||||
set-width dfNarrowF.width
|
||||
include dfNarrowF.markSet.b
|
||||
include : NarrowFShape dfNarrowF 0.5
|
||||
include : NarrowFShape dfNarrowF 0.5 fbar
|
||||
|
||||
create-glyph 'f.flatHook' : glyph-proc
|
||||
include MarkSet.b
|
||||
include : NarrowFShape [DivFrame 1] 1
|
||||
include : NarrowFShape [DivFrame 1] 1 fbar
|
||||
|
||||
create-glyph 'f.flatHookCrossbarAtXHeight' : glyph-proc
|
||||
include MarkSet.b
|
||||
include : NarrowFShape [DivFrame 1] 1 XH
|
||||
|
||||
create-glyph 'f.tailed' : glyph-proc
|
||||
include [refer-glyph 'longs.italic'] AS_BASE
|
||||
|
@ -4904,6 +4908,7 @@ glyph-block Letter-Latin-Lower-F : begin
|
|||
turned 'turnf.straightTailed' nothing 'f.straightTailed' Middle (XH / 2) MarkSet.p
|
||||
turned 'turnf.tailed' nothing 'f.tailed' 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.narrow' nothing 'f.narrow' dfNarrowF.middle (XH / 2) dfNarrowF.markSet.p
|
||||
select-variant 'turnf' 0x25F (follow -- 'f')
|
||||
|
||||
|
@ -5176,6 +5181,10 @@ glyph-block Letter-Latin-Lower-T : begin
|
|||
include MarkSet.b
|
||||
include : TFlatShape [DivFrame 1] [Math.min CAP ([mix XH CAP 0.75] + Stroke * 0.25)] 1 0
|
||||
|
||||
create-glyph 't.flatHookShortNeck2' : glyph-proc
|
||||
include MarkSet.b
|
||||
include : TFlatShape [DivFrame 1] [Math.min CAP ([mix XH CAP 0.625] + Stroke * 0.25)] 1 0
|
||||
|
||||
define dfNarrowT : DivFrame para.diversityF
|
||||
create-glyph 't.narrow' : glyph-proc
|
||||
set-width dfNarrowT.width
|
||||
|
@ -5213,8 +5222,9 @@ glyph-block Letter-Latin-Lower-T : begin
|
|||
turned 'turnt.standard' nothing 't.standard' Middle (XH / 2) MarkSet.p
|
||||
turned 'turnt.cross' nothing 't.cross' Middle (XH / 2) MarkSet.p
|
||||
turned 'turnt.flatHook' nothing 't.flatHook' Middle (XH / 2) MarkSet.p
|
||||
turned 'turnt.flatHookShortNeck' nothing 't.flatHookShortNeck' Middle (XH / 2) MarkSet.p
|
||||
turned 'turnt.hooklessAsymmetric' nothing 't.hooklessAsymmetric' Middle (XH / 2) MarkSet.p
|
||||
turned 'turnt.flatHookShortNeck' nothing 't.flatHookShortNeck' Middle (XH / 2) MarkSet.p
|
||||
turned 'turnt.flatHookShortNeck2' nothing 't.flatHookShortNeck2' Middle (XH / 2) MarkSet.p
|
||||
turned 'turnt.narrow' nothing 't.narrow' dfNarrowT.middle (XH / 2) dfNarrowT.markSet.p
|
||||
select-variant 'turnt' 0x287 (follow -- 't')
|
||||
|
||||
|
|
|
@ -169,8 +169,7 @@ export : define [calculateMetrics para] : begin
|
|||
define GeometryStroke : adviceBlackness 4.5
|
||||
define ShoulderFine : Math.min (Stroke * para.shoulderfineMin) [adviceBlackness 16]
|
||||
|
||||
define Superness : fallback para.superness 2
|
||||
define [superXY x superness] : Math.pow (1 - [Math.pow x [fallback superness Superness]]) (1 / [fallback superness Superness])
|
||||
define [superXY x superness] : Math.pow (1 - [Math.pow x [fallback superness designParameters.superness]]) (1 / [fallback superness designParameters.superness])
|
||||
|
||||
define [adviceSSmooth y sign _stroke] : begin
|
||||
# Handle with extreme care.
|
||||
|
@ -201,7 +200,7 @@ export : define [calculateMetrics para] : begin
|
|||
HalfStroke RightSB Middle CapMiddle DotRadius PeriodRadius SideJut SmoothA
|
||||
SmoothB SmallSmoothA SmallSmoothB CorrectionOMidX CorrectionOMidS compositeBaseAnchors
|
||||
adviceBlackness adviceBlackness2 MVertStroke MVertStrokeD OverlayStroke OperatorStroke
|
||||
GeometryStroke ShoulderFine Superness superXY adviceSSmooth adviceGlottalStopSmooth
|
||||
GeometryStroke ShoulderFine superXY adviceSSmooth adviceGlottalStopSmooth
|
||||
shoulderMidSlope StrokeWidthBlend SmoothAOf SmoothBOf SmoothAdjust MidJutSide MidJutCenter YSmoothMidR YSmoothMidL]
|
||||
|
||||
export : define [setFontMetrics para metrics fm] : begin
|
||||
|
@ -312,9 +311,13 @@ export : define designParameters : object
|
|||
eBarPos 0.5
|
||||
fiveBarPos 0.64
|
||||
overlayPos 0.52
|
||||
fBarPos 0.91
|
||||
fBarPosToXH 0.91
|
||||
gBarPos 0.42
|
||||
upperEBarPos : lambda [slab] : if slab 0.52 0.53
|
||||
# Fine adjustments
|
||||
fbarStrokeAdj 0.25
|
||||
superness 2.275
|
||||
tightHookSuperness 2.30
|
||||
|
||||
export : define [GenDivFrame metrics] : lambda [_div _hPack _sbMul] : begin
|
||||
local div : fallback _div 1
|
||||
|
|
|
@ -222,7 +222,7 @@ define-macro glyph-block : syntax-rules
|
|||
Middle CapMiddle DotRadius PeriodRadius SideJut SmoothA SmoothB
|
||||
SmallSmoothA SmallSmoothB CorrectionOMidX CorrectionOMidS adviceBlackness
|
||||
adviceBlackness2 MVertStroke OverlayStroke OperatorStroke GeometryStroke ShoulderFine
|
||||
Superness superXY adviceSSmooth adviceGlottalStopSmooth shoulderMidSlope StrokeWidthBlend
|
||||
superXY adviceSSmooth adviceGlottalStopSmooth shoulderMidSlope StrokeWidthBlend
|
||||
SmoothAOf SmoothBOf SmoothAdjust MidJutSide MidJutCenter compositeBaseAnchors YSmoothMidR YSmoothMidL]
|
||||
define spiroFnImports `[g4 g2 corner flat curl close end straight widths disable-gizmo
|
||||
disable-contrast heading unimportant important alsoThru alsoThruThem bezcontrols
|
||||
|
|
|
@ -11,10 +11,6 @@ longjut = 175 # Length of long serifs, like that in `i`.
|
|||
|
||||
smooth = 195 # Vertical arc size in capital letters.
|
||||
smallsmooth = 200 # Vertical arc size in lowercase letters.
|
||||
superness = 2.275 # Superness of arcs.
|
||||
tightHookSuperness = 2.3 # superness of tight hooks
|
||||
|
||||
fbarStrokeAdj = 0.25 # Portion of the fill above the f-bar position
|
||||
|
||||
rbalance = 60
|
||||
rbalance2 = 15
|
||||
|
|
|
@ -261,6 +261,12 @@ sampler = "f"
|
|||
description = '`f` with flat hook'
|
||||
variant.f = 'flatHook'
|
||||
|
||||
[simple.v-f-flat-hook-crossbar-at-x-height]
|
||||
tag = "VXEG"
|
||||
sampler = "f"
|
||||
description = '`f` with flat hook and crossbar placed right at X-height'
|
||||
variant.f = 'flatHookCrossbarAtXHeight'
|
||||
|
||||
[simple.v-g-singlestorey]
|
||||
tag = 'cv12'
|
||||
sampler = 'g'
|
||||
|
@ -557,7 +563,6 @@ variant.m = 'earlessRoundedDoubleArchShortlegTailed'
|
|||
variantUpright."cyrl/te" = "upright"
|
||||
variantItalic."cyrl/te" = "italicNormal"
|
||||
|
||||
|
||||
[simple.v-m-earless-single-arch]
|
||||
tag = "VXEC"
|
||||
sampler = "m"
|
||||
|
@ -745,18 +750,24 @@ sampler = "t"
|
|||
description = "`t` with flat hook"
|
||||
variant.t = 'flatHook'
|
||||
|
||||
[simple.v-t-flat-hook-short-neck]
|
||||
tag = "VXEG"
|
||||
sampler = "t"
|
||||
description = "`t` with flat hook and a slightly shorter neck"
|
||||
variant.t = 'flatHookShortNeck'
|
||||
|
||||
[simple.v-t-hookless-asymmetric]
|
||||
tag = "VXEH"
|
||||
sampler = "t"
|
||||
description = "`t` without hook and ony half the cross bar"
|
||||
variant.t = 'hooklessAsymmetric'
|
||||
|
||||
[simple.v-t-flat-hook-short-neck]
|
||||
tag = "VXEI"
|
||||
sampler = "t"
|
||||
description = "`t` with flat hook and a slightly shorter neck"
|
||||
variant.t = 'flatHookShortNeck'
|
||||
|
||||
[simple.v-t-flat-hook-short-neck2]
|
||||
tag = "VXEJ"
|
||||
sampler = "t"
|
||||
description = "`t` with flat hook and a more shorter neck"
|
||||
variant.t = 'flatHookShortNeck2'
|
||||
|
||||
[simple.v-u-with-bar]
|
||||
tag = "cv89"
|
||||
sampler = "u"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue