Iosevka/glyphs/latin-basic-lower.patel

734 lines
No EOL
20 KiB
Text

###### LOWER CASE
### o b d p q g
create-glyph 'o' : glyph-construction {
set-width WIDTH
assign-unicode 'o'
include eMarks
include : smallo XH 0 SB RIGHTSB
}
define [oLeft] : glyph-construction {
include : spiro {
widths.lhs
g4 [MIDDLE - OMIDCOR_S + HALFSTROKE / 4] XO
archv
flat [SB + HALFSTROKE * ITALICCOR] [XH - SMALLSMOOTHA] [widths HALFSTROKE 0]
curl [SB + HALFSTROKE * ITALICCOR] [0 + SMALLSMOOTHB] [widths HALFSTROKE 0]
arcvh
g4 [MIDDLE + OMIDCOR_S + HALFSTROKE / 4] O [widths STROKE 0]
archv
flat [RIGHTSB - O] [0 + SMALLSMOOTHA]
curl [RIGHTSB - O] [XH - SMALLSMOOTHB]
arcvh
close
}
}
define [oRight] : glyph-construction {
include : create-glyph [oLeft]
include : FlipAround MIDDLE [XH / 2]
}
create-glyph 'p' : glyph-construction {
set-width WIDTH
assign-unicode 'p'
include pMarks
include : oLeft
include : create-stroke
:.start-from SB XH
:.heads-to DOWNWARD
:.set-width STROKE 0
:.line-to SB DESCENDER
:.heads-to DOWNWARD
}
create-glyph 'b' : glyph-construction {
set-width WIDTH
assign-unicode 'b'
include bMarks
include : oLeft
include : create-stroke
:.start-from SB 0
:.heads-to UPWARD
:.set-width 0 STROKE
:.line-to SB CAP
:.heads-to UPWARD
}
create-glyph 'q' : glyph-construction {
set-width WIDTH
assign-unicode 'q'
include pMarks
include : oRight
include : create-stroke
:.start-from RIGHTSB XH
:.heads-to DOWNWARD
:.set-width 0 STROKE
:.line-to RIGHTSB DESCENDER
:.heads-to DOWNWARD
}
create-glyph 'd' : glyph-construction {
set-width WIDTH
assign-unicode 'd'
include bMarks
include : oRight
include : create-stroke
:.start-from RIGHTSB 0
:.heads-to UPWARD
:.set-width STROKE 0
:.line-to RIGHTSB CAP
:.heads-to UPWARD
:.to-outline
}
create-glyph 'g' : glyph-construction {
set-width WIDTH
assign-unicode 'g'
include pMarks
include : smallo XH [XH * GBARPOS - O] SB [RIGHTSB - 0.3 * SB]
local gleftx [SB * 0.8 + O]
local grightx [RIGHTSB + SB * 0.1 - O]
local groundy : [mix DESCENDER [XH * GBARPOS] 0.7] + HALFSTROKE
include : create-stroke
:.start-from MIDDLE [XH * GBARPOS]
:.set-width 0 [STROKE * 0.75]
:.arc-hv-to [SB * 1.25 + STROKE] [mix groundy [XH * GBARPOS] 0.5]
:.set-width 0 STROKE
:.arc-vh-to [MIDDLE + DESCENDER * 0.15] groundy
:.line-to [MIDDLE - DESCENDER * 0.15] groundy
:.arc-hv-to grightx [mix [DESCENDER + O] groundy 0.53]
:.arc-vh-to [mix gleftx grightx 0.5] [DESCENDER + O]
:.arc-hv-to gleftx [mix [DESCENDER + O] groundy 0.53]
:.arc-vh-to [MIDDLE + DESCENDER * 0.15] groundy
start-from [RIGHTSB + 0.25 * SB] XH
line-to [RIGHTSB + 0.25 * SB] [XH - STROKE]
line-to MIDDLE [XH - STROKE - O]
line-to MIDDLE XH
}
### c e t
create-glyph 'c' : glyph-construction {
set-width WIDTH
assign-unicode 'c'
include eMarks
include : spiro {
widths.lhs
g4 RIGHTSB [XH - HOOK]
hookstart XO
flat [SB + O] [XH - SMALLSMOOTHA]
curl [SB + O] [0 + SMALLSMOOTHB]
hookend O
g4 RIGHTSB HOOK
}
}
define [SmallEShape top stroke barpos] : glyph-construction {
local barbottom [top * [fallback barpos EBARPOS]]
local hookx [RIGHTSB - OXHOOK + TAILADJX * globalTransform.yx]
local hookmiddle : [mix [SB + O] hookx 0.55] + OMIDCOR_S
include : spiro {
widths.lhs
flat [RIGHTSB - O] barbottom [heading UPWARD]
curl [RIGHTSB - O] [top - SMALLSMOOTHB]
arcvh
g4 [MIDDLE - OMIDCOR_S] [top - O]
archv
flat [SB + O] [top - SMALLSMOOTHA]
curl [SB + O] [0 + SMALLSMOOTHB]
hookend O
g4 [RIGHTSB - O] HOOK
}
include : create-stroke
:.start-from [SB + [stroke / 2]] barbottom
:.set-width stroke 0
:.heads-to RIGHTWARD
:.line-to [RIGHTSB - [stroke / 2]] barbottom
:.heads-to RIGHTWARD
}
create-glyph 'e.upright' : glyph-construction {
set-width WIDTH
dont-export
include : SmallEShape XH STROKE
}
create-glyph 'e.italic' : glyph-construction {
set-width WIDTH
dont-export
local barbottom [XH * EBARPOS]
include : spiro-stroke {
widths.lhs
g4 [SB + O + STROKE] barbottom
archv 8
g4 [RIGHTSB - O] [XH - SMALLSMOOTHB * 0.95]
#complexThru [alsothru 0.015 0.4] [arcvh]
arcvh 8
g4 [MIDDLE - OMIDCOR_S] [XH - O]
archv
flat [SB + O] [XH - SMALLSMOOTHA]
curl [SB + O] [0 + SMALLSMOOTHB]
hookend O
g4 [RIGHTSB - O] HOOK
}
}
create-glyph 'e' : glyph-construction {
set-width WIDTH
assign-unicode 'e'
include eMarks
if [para.italicangle > 0] {
then : include glyphs.'e.italic'
else : include glyphs.'e.upright'
}
}
define [SmallTShape top bot] : glyph-construction {
local center : MIDDLE - TBALANCE + HALFSTROKE
local hookx [center - STROKE * 2 + [WIDTH - SB * 2] * 0.8 - OXHOOK + TAILADJX * globalTransform.yx]
local turn : [mix center hookx 0.5] + OMIDCOR_S - ITALICCORS
local smb : [turn - center] * 1.2
include : spiro {
widths.rhs
flat center top [heading DOWNWARD]
curl center [bot + smb + STROKE]
arcvh
g4 turn [bot + O + STROKE]
quadcontrols [KAPPA_HOOK + TAILADJKAPPA * globalTransform.yx + 0.1] 0
g4 hookx [bot + HOOK + STROKE * 0.24]
}
include : HBarTop [center - HALFSTROKE - LONGJUT + TBALANCE2] [center - HALFSTROKE + LONGJUT + TBALANCE2] [top * XH / CAP]
}
create-glyph 't' : glyph-construction {
set-width WIDTH
assign-unicode 't'
include bMarks
include : SmallTShape CAP 0
}
### a u
create-glyph 'a.upright' : glyph-construction {
set-width WIDTH
dont-export
include eMarks
set-anchor 'trailing' BASE [RIGHTSB - markHalfStroke] 0
local bartop [XH * BARPOS + HALFSTROKE]
local lowmiddle : mix SB [RIGHTSB - STROKE] [linreg 80 0.55 120 0.625 STROKE]
local barsmooth : mix SB RIGHTSB 0.6
include : create-stroke
:.start-from RIGHTSB 0
:.heads-to UPWARD
:.set-width STROKE 0
:.line-to RIGHTSB [XH - SMOOTHA]
:.arc-vh-to [MIDDLE - OMIDCOR_S] XO
:.curve-to [MIDDLE - KAPPA_AHOOK * [MIDDLE - SB]] XO [SB + OXHOOK] [XH - AHOOK]
include : create-stroke
:.start-from [lowmiddle + OMIDCOR_S] O
:.set-width 0 STROKE
:.arc-hv-to [SB + O] [bartop * 0.45]
:.arc-vh-to barsmooth bartop
:.line-to RIGHTSB bartop
:.heads-to RIGHTWARD
include : create-stroke
:.start-from [lowmiddle + OMIDCOR_S - ITALICCORS] [O + STROKE]
:.set-width 0 STROKE
:.heads-to RIGHTWARD
:.arc-hv-to [RIGHTSB - STROKE] [SMALLSMOOTHB * 0.65]
:.heads-to UPWARD
:.set-width 0 [STROKE * 0.4]
}
create-glyph 'a.italic' : glyph-construction {
set-width WIDTH
dont-export
include eMarks
set-anchor 'trailing' BASE [RIGHTSB - markHalfStroke] 0
include : oRight
include : create-stroke
:.start-from RIGHTSB 0
:.heads-to UPWARD
:.set-width STROKE 0
:.line-to RIGHTSB XH
:.heads-to UPWARD
}
create-glyph 'a' : glyph-construction {
set-width WIDTH
assign-unicode 'a'
if [para.italicangle > 0] {
then : include glyphs.'a.italic' AS_BASE
else : include glyphs.'a.upright' AS_BASE
}
}
### n u h m
create-glyph 'n' : glyph-construction {
set-width WIDTH
assign-unicode 'n'
include eMarks
include : nShoulder [SB + STROKE * ITALICCOR] MIDDLE RIGHTSB [STROKE * 0.4]
include : VBarLeft SB 0 XH
}
create-glyph 'u' : glyph-construction {
set-width WIDTH
assign-unicode 'u'
include eMarks
set-anchor 'trailing' BASE [RIGHTSB - markHalfStroke] 0
include glyphs.n
include : FlipAround MIDDLE [XH / 2]
}
create-glyph 'h' : glyph-construction {
set-width WIDTH
assign-unicode 'h'
include bMarks
include : nShoulder [SB + STROKE * ITALICCOR] MIDDLE RIGHTSB [STROKE * 0.4]
include : create-stroke
:.start-from SB 0
:.heads-to UPWARD
:.set-width 0 STROKE
:.line-to SB CAP
:.heads-to UPWARD
}
create-glyph 'm' : glyph-construction {
set-width WIDTH
assign-unicode 'm'
include eMarks
local sw : adviceBlackness 3.5
local m1 : mix [SB + O] [MIDDLE + sw / 2 * ITALICCOR] 0.5
local m2 : mix [RIGHTSB - O] [MIDDLE - sw / 2 * ITALICCOR] 0.5
include : mShoulderSpiro [SB + O + sw] [MIDDLE + sw / 2 * ITALICCOR] XH 0 sw [sw * 0.4]
include : mShoulderSpiro [MIDDLE + sw * 0.48 * ITALICCOR] [RIGHTSB - O] XH 0 sw [sw * 0.8]
include : create-stroke
:.start-from [SB + O] 0
:.heads-to UPWARD
:.set-width 0 sw
:.line-to [SB + O] XH
:.heads-to UPWARD
}
### i j l
create-glyph 'dotlessi.straight' : glyph-construction {
dont-export
include eMarks
include : create-stroke
:.start-from MIDDLE 0
:.heads-to UPWARD
:.set-width HALFSTROKE HALFSTROKE
:.line-to MIDDLE XH
:.heads-to UPWARD
}
create-glyph 'dotlessi.hooky' : glyph-construction {
dont-export
include glyphs.'dotlessi.straight' AS_BASE
include : leftwardTopSerif MIDDLE XH LONGJUT
}
create-glyph 'dotlessi.zshaped' : glyph-construction {
dont-export
include glyphs.'dotlessi.hooky' AS_BASE
include : rightwardBottomSerif MIDDLE 0 LONGJUT
}
create-glyph 'dotlessi.serifed' : glyph-construction {
dont-export
include eMarks
local balance ILBALANCE
include : create-stroke
:.start-from [MIDDLE + balance] 0
:.heads-to UPWARD
:.set-width HALFSTROKE HALFSTROKE
:.line-to [MIDDLE + balance] XH
:.heads-to UPWARD
include : leftwardTopSerif [MIDDLE + balance] XH [LONGJUT - balance]
include : rightwardBottomSerif MIDDLE 0 LONGJUT
include : leftwardBottomSerif MIDDLE 0 LONGJUT
}
create-glyph 'dotlessi.italic' : glyph-construction {
local left : MIDDLE - HALFSTROKE
local right : mix SB RIGHTSB 1.1
local middle : mix left right 0.55
include : spiro {
widths.lhs
flat left XH [heading DOWNWARD]
curl left [SMALLSMOOTHB * 0.7]
hookend O
g4 right [SHOOK * 0.8]
}
include : create-stroke
:.start-from [left - LONGJUT + ILBALANCE + HALFSTROKE] XH
:.set-width 0 STROKE
:.line-to left XH
include eMarks
set-anchor 'above' BASE [left + HALFSTROKE] XH
set-anchor 'below' BASE middle 0
}
select-variant 'dotlessi' 0x131 [if para.italicangle 'italic' 'serifed']
create-glyph 'i' : glyph-construction {
set-width WIDTH
assign-unicode 'i'
include glyphs.dotlessi AS_BASE
include glyphs.dotAbove
}
create-glyph 'dotlessj.straight' : glyph-construction {
dont-export
include pMarks
set-anchor 'above' BASE [MIDDLE + JBALANCE] XH
set-anchor 'overlay' BASE [MIDDLE + JBALANCE] [XH / 2]
include : spiro {
widths.center
flat [MIDDLE + JBALANCE] XH [heading DOWNWARD]
curl [MIDDLE + JBALANCE] 0
arcvh 3
g4 [MIDDLE + DESCENDER * 0.85] [DESCENDER + HALFSTROKE]
}
}
create-glyph 'dotlessj.serifed' : glyph-construction {
dont-export
include pMarks
include glyphs.'dotlessj.straight' AS_BASE
include : leftwardTopSerif [MIDDLE + JBALANCE] XH LONGJUT
}
select-variant 'dotlessj' 0x237 'serifed'
create-glyph 'j' : glyph-construction {
set-width WIDTH
assign-unicode 'j'
include glyphs.dotlessj AS_BASE
include glyphs.dotAbove
}
create-glyph 'l.straight' : glyph-construction {
include bMarks
dont-export
include : VBar MIDDLE 0 CAP
}
create-glyph 'l.hooky' : glyph-construction {
include bMarks
dont-export
include : VBar MIDDLE 0 [CAP - STROKE]
include : leftwardTopSerif MIDDLE CAP LONGJUT
}
create-glyph 'l.zshaped' : glyph-construction {
include bMarks
dont-export
include glyphs.'l.hooky'
include : rightwardBottomSerif MIDDLE 0 LONGJUT
}
create-glyph 'l.serifed' : glyph-construction {
include bMarks
dont-export
local balance ILBALANCE
include : create-stroke
:.start-from [MIDDLE + balance] 0
:.heads-to UPWARD
:.set-width HALFSTROKE HALFSTROKE
:.line-to [MIDDLE + balance] CAP
:.heads-to UPWARD
include : leftwardTopSerif [MIDDLE + balance] CAP [LONGJUT - balance]
include : centerBottomSerif MIDDLE 0 LONGJUT
set this.barx [MIDDLE + balance]
}
create-glyph 'l.italic' : glyph-construction {
local left : mix SB RIGHTSB 0.3
local right : mix SB RIGHTSB 1.1
local middle : mix left right 0.54
include : spiro {
widths.lhs
flat left CAP [heading DOWNWARD]
curl left [SMALLSMOOTHB * 0.75]
hookend O
g4 right SHOOK
}
include : create-stroke
:.start-from SB CAP
:.set-width 0 STROKE
:.line-to left CAP
include bMarks
set-anchor 'above' BASE [left + HALFSTROKE] CAP
set-anchor 'below' BASE middle 0
set this.barx [left + HALFSTROKE]
}
select-variant 'l' 'l' [if para.italicangle 'italic' 'serifed']
### x v w y z k
create-glyph 'x' : glyph-construction {
set-width WIDTH
assign-unicode 'x'
include eMarks
local TURN [XH * 0.1]
include : xStrand SB 0 RIGHTSB XH 0.05 0.4 0.14
include : xStrand SB XH RIGHTSB 0 0.05 0.4 0.14
}
create-glyph 'v' : glyph-construction {
set-width WIDTH
assign-unicode 'v'
include eMarks
local TURN [XH * 0.9]
include : create-stroke
:.start-from SB XH
:.heads-to DOWNWARD
:.set-width STROKE 0
:.line-to SB TURN
:.heads-to DOWNWARD
:.curve-to SB [[1 - 0.27] * TURN] [MIDDLE - STROKE / 2] 0
:.set-width [STROKE * 0.8] 0
include : create-stroke
:.start-from RIGHTSB XH
:.heads-to DOWNWARD
:.set-width 0 STROKE
:.line-to RIGHTSB TURN
:.heads-to DOWNWARD
:.curve-to RIGHTSB [[1 - 0.27] * TURN] [MIDDLE + STROKE / 2] 0
:.set-width 0 [STROKE * 0.8]
#bottom cap
start-from [MIDDLE + STROKE / 2] 0
line-to [MIDDLE - STROKE / 2] 0
line-to MIDDLE [STROKE * 0.8]
}
create-glyph 'w' : glyph-construction {
set-width WIDTH
assign-unicode 'w'
include eMarks
local TURN [XH * 0.75]
local turn2 [XH * 0.59]
local wheight [XH * 0.6]
local bottomStroke : adviceBlackness 5.2
local m1 : WIDTH * 0.325
local m2 : WIDTH * 0.675
include : create-stroke
:.start-from SB XH
:.heads-to DOWNWARD
:.set-width STROKE 0
:.line-to SB TURN
:.heads-to DOWNWARD
:.curve-to SB [[1 - 0.27] * TURN] [m1 - bottomStroke / 2] 0
:.set-width bottomStroke 0
include : create-stroke
:.start-from RIGHTSB XH
:.heads-to DOWNWARD
:.set-width 0 STROKE
:.line-to RIGHTSB TURN
:.heads-to DOWNWARD
:.curve-to RIGHTSB [[1 - 0.27] * TURN] [m2 + bottomStroke / 2] 0
:.set-width 0 bottomStroke
include : create-stroke
:.start-from [MIDDLE + bottomStroke / 2] wheight
:.heads-to DOWNWARD
:.set-width 0 bottomStroke
:.line-to [MIDDLE + bottomStroke / 2] turn2
:.heads-to DOWNWARD
:.curve-to [MIDDLE + bottomStroke / 2] [[1 - 0.1] * turn2] [m1 + bottomStroke / 2] 0
:.set-width 0 bottomStroke
include : create-stroke
:.start-from [MIDDLE - bottomStroke / 2] wheight
:.heads-to DOWNWARD
:.set-width bottomStroke 0
:.line-to [MIDDLE - bottomStroke / 2] turn2
:.heads-to DOWNWARD
:.curve-to [MIDDLE - bottomStroke / 2] [[1 - 0.1] * turn2] [m2 - bottomStroke / 2] 0
:.set-width bottomStroke 0
#bottom cap
start-from [m1 + bottomStroke / 2] 0
line-to [m1 - bottomStroke / 2] 0
line-to m1 bottomStroke
start-from [m2 + bottomStroke / 2] 0
line-to [m2 - bottomStroke / 2] 0
line-to m2 bottomStroke
}
create-glyph 'y' : glyph-construction {
set-width WIDTH
assign-unicode 'y'
include pMarks
local xbottom : mix SB RIGHTSB 0.28
local turnp : XH / [XH - DESCENDER]
local xb : mix SB RIGHTSB 0.51
local yb : mix 0 XH [0.05 * turnp]
include : xStrand xbottom DESCENDER RIGHTSB XH 0.1 0.6 0.14
include : halfXStrand SB XH xb yb [0.1 * turnp] 0.4 [0.14 * turnp]
}
create-glyph 'z' : glyph-construction {
set-width WIDTH
assign-unicode 'z'
include eMarks
local cor 1.2
include : HBarTop SB RIGHTSB XH
include : HBarBottom SB RIGHTSB 0
start-from SB STROKE
line-to [SB + STROKE * cor] STROKE
line-to RIGHTSB [XH - STROKE]
line-to [RIGHTSB - STROKE * cor] [XH - STROKE]
reverse-last
}
define [SmallKShape] : glyph-construction {
local TURN [XH * 0.99]
local rturn [XH * 0.1]
local right [RIGHTSB - O]
local attach [XH * 0.4]
local attach2 MIDDLE
local fine : adviceBlackness 3.5
include : create-stroke
:.start-from RIGHTSB XH
:.heads-to DOWNWARD
:.set-width 0 STROKE
:.line-to RIGHTSB TURN
:.heads-to DOWNWARD
:.curve-to RIGHTSB [[1 - 0.18] * TURN] [SB + STROKE] attach
:.set-width 0 fine
include : create-stroke
:.start-from [right - HALFSTROKE] 0
:.heads-to UPWARD
:.set-width HALFSTROKE HALFSTROKE
:.curve-to [right - HALFSTROKE] [rturn + 0.05 * [XH - rturn]] attach2 [XH * 0.52 + HALFSTROKE]
:.set-width [fine / 2] [fine / 2]
}
create-glyph 'k' : glyph-construction {
set-width WIDTH
assign-unicode 'k'
include bMarks
include : create-stroke
:.start-from SB 0
:.set-width 0 STROKE
:.heads-to UPWARD
:.line-to SB CAP
:.heads-to UPWARD
include : SmallKShape
}
### s
create-glyph 's' : glyph-construction {
set-width WIDTH
assign-unicode 's'
include eMarks
include : spiro {
widths.lhs
g4 RIGHTSB [XH - SHOOK]
hookstart XO SBALANCE
g4 SB [XH - SMOOTHA * 0.85]
alsothru 0.5 0.5 [widths HALFSTROKE HALFSTROKE]
#sband STROKE false 1 0.75 [linreg 75 1 120 0.55 STROKE]
g4 RIGHTSB [SMOOTHA * 0.85] [widths 0 STROKE]
hookend O SBALANCE
g4 SB SHOOK
}
# throw 'w'
}
### r
create-glyph 'r' : glyph-construction {
set-width WIDTH
assign-unicode 'r'
include eMarks
local rhookx : RIGHTSB + JBALANCE / 2 - STROKE
local rmiddle : [mix [SB + RBALANCE + STROKE] [rhookx - HALFSTROKE] 0.5] - OMIDCOR_S
local barright : SB + STROKE * ITALICCOR + RBALANCE
include : spiro {
widths.rhs
g4 rhookx [XH - RHOOK - STROKE * 0.5]
g4 [mix barright rhookx 0.52] [XO - STROKE] [heading LEFTWARD]
archv 8 'notiny'
flat barright [XH - SMALLSMOOTHA] [widths 0 [STROKE * 0.3]]
curl barright [XH - SMALLSMOOTHA - 1]
}
include : create-stroke
:.start-from [SB + RBALANCE] 0
:.heads-to UPWARD
:.set-width 0 STROKE
:.line-to [SB + RBALANCE] XH
:.heads-to UPWARD
}
### f
define [fBar left right y] : glyph-construction {
include : create-stroke
:.start-from [fallback left [MIDDLE - LONGJUT]] [fallback y XH]
:.heads-to RIGHTWARD
:.set-width 0 STROKE
:.line-to [fallback right [MIDDLE + LONGJUT]] [fallback y XH]
:.heads-to RIGHTWARD
}
create-glyph 'longs.upright' : glyph-construction {
set-width WIDTH
dont-export
include bMarks
include : create-stroke
:.start-from MIDDLE 0
:.heads-to UPWARD
:.set-width HALFSTROKE HALFSTROKE
:.line-to MIDDLE [CAP - SHOOK * 1.4]
:.arc-vh-to [MIDDLE + HOOKX] [CAP - HALFSTROKE - O * 6]
:.heads-to RIGHTWARD
}
define [eshHook attach] : glyph-construction {
include : create-stroke
:.start-from [attach.x - SHOOK * 2] [attach.y + HALFSTROKE + O * 6 - SHOOK]
:.heads-to RIGHTWARD
:.set-width HALFSTROKE HALFSTROKE
:.arc-hv-to attach.x attach.y
:.line-to attach.x [attach.y + STROKE]
}
define [LongSShape top bottom hookx hooky fine] : glyph-construction {
include : create-stroke
:.start-from [MIDDLE - hookx] [bottom + [[fallback fine STROKE] / 2] + O * 6]
:.heads-to RIGHTWARD
:.set-width [[fallback fine STROKE] / 2] [[fallback fine STROKE] / 2]
:.arc-hv-to MIDDLE [bottom + hooky]
:.line-to MIDDLE [top - hooky]
:.arc-vh-to [MIDDLE + hookx] [top - [[fallback fine STROKE] / 2] - O * 6]
:.heads-to RIGHTWARD
}
create-glyph 'longs.italic' : glyph-construction {
set-width WIDTH
dont-export
include ifMarks
include : LongSShape CAP [-HOOK] HOOKX HOOK
}
create-glyph 'longs' : glyph-construction {
set-width WIDTH
assign-unicode 0x17f
if [para.italicangle > 0] {
then : include glyphs.'longs.italic' AS_BASE
else : include glyphs.'longs.upright' AS_BASE
}
}
create-glyph 'f' : glyph-construction {
set-width WIDTH
assign-unicode 'f'
include glyphs.longs AS_BASE
include : fBar
}