709 lines
No EOL
20 KiB
Text
709 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
|
|
|
|
local outline : create-stroke
|
|
:.start-from MIDDLE XO
|
|
:.set-width STROKE 0
|
|
:.heads-to LEFTWARD
|
|
:.arc-hv-to [SB + O] [XH - SMALLSMOOTHA]
|
|
:.line-to [SB + O] SMALLSMOOTHB
|
|
:.arc-vh-to MIDDLE O
|
|
:.heads-to RIGHTWARD
|
|
:.arc-hv-to [RIGHTSB - O] SMALLSMOOTHA
|
|
:.line-to [RIGHTSB - O] [XH - SMALLSMOOTHB]
|
|
:.arc-vh-to MIDDLE XO
|
|
:.heads-to LEFTWARD
|
|
put-shapes : outline.form-stroke
|
|
}
|
|
create-glyph 'o.left' : glyph-construction {
|
|
set-width WIDTH
|
|
# right half
|
|
put-shapes : create-stroke
|
|
:.start-from MIDDLE XO
|
|
:.heads-to RIGHTWARD
|
|
:.set-width 0 STROKE
|
|
:.arc-hv-to [RIGHTSB - O] [XH - SMALLSMOOTHB]
|
|
:.line-to [RIGHTSB - O] SMALLSMOOTHA
|
|
:.arc-vh-to MIDDLE O
|
|
:.heads-to LEFTWARD
|
|
:.form-stroke
|
|
# left half
|
|
put-shapes : create-stroke
|
|
:.start-from MIDDLE [O + STROKE]
|
|
:.heads-to LEFTWARD
|
|
:.set-width STROKE 0
|
|
:.arc-hv-to [SB + STROKE] [SMALLSMOOTHB - STROKE * 0.05]
|
|
:.set-width HALFSTROKE 0
|
|
:.line-to [SB + STROKE] [XH - SMALLSMOOTHA + STROKE * 0.05]
|
|
:.set-width HALFSTROKE 0
|
|
:.arc-vh-to MIDDLE [XO - STROKE]
|
|
:.set-width STROKE 0
|
|
:.heads-to RIGHTWARD
|
|
:.form-stroke
|
|
}
|
|
create-glyph 'o.right' : glyph-construction {
|
|
set-width WIDTH
|
|
# left half
|
|
put-shapes : create-stroke
|
|
:.start-from MIDDLE XO
|
|
:.heads-to LEFTWARD
|
|
:.set-width STROKE 0
|
|
:.arc-hv-to [SB + O] [XH - SMALLSMOOTHA]
|
|
:.line-to [SB + O] SMALLSMOOTHB
|
|
:.arc-vh-to MIDDLE O
|
|
:.heads-to RIGHTWARD
|
|
:.form-stroke
|
|
# right half
|
|
put-shapes : create-stroke
|
|
:.start-from MIDDLE [O + STROKE]
|
|
:.heads-to RIGHTWARD
|
|
:.set-width 0 STROKE
|
|
:.arc-hv-to [RIGHTSB - STROKE] [SMALLSMOOTHA - STROKE * 0.05]
|
|
:.set-width 0 HALFSTROKE
|
|
:.line-to [RIGHTSB - STROKE] [XH - SMALLSMOOTHB + STROKE * 0.05]
|
|
:.set-width 0 HALFSTROKE
|
|
:.arc-vh-to MIDDLE [XO - STROKE]
|
|
:.set-width 0 STROKE
|
|
:.heads-to LEFTWARD
|
|
:.form-stroke
|
|
}
|
|
create-glyph 'p' : glyph-construction {
|
|
set-width WIDTH
|
|
assign-unicode 'p'
|
|
include eMarks
|
|
|
|
include glyphs.'o.left'
|
|
put-shapes : create-stroke
|
|
:.start-from SB XH
|
|
:.heads-to DOWNWARD
|
|
:.set-width STROKE 0
|
|
:.line-to SB DESCENDER
|
|
:.heads-to DOWNWARD
|
|
:.form-stroke
|
|
}
|
|
create-glyph 'b' : glyph-construction {
|
|
set-width WIDTH
|
|
assign-unicode 'b'
|
|
include bMarks
|
|
|
|
put-shapes glyphs.'o.left'.contours
|
|
put-shapes : create-stroke
|
|
:.start-from SB 0
|
|
:.heads-to UPWARD
|
|
:.set-width 0 STROKE
|
|
:.line-to SB CAP
|
|
:.heads-to UPWARD
|
|
:.form-stroke
|
|
}
|
|
create-glyph 'q' : glyph-construction {
|
|
set-width WIDTH
|
|
assign-unicode 'q'
|
|
include eMarks
|
|
|
|
put-shapes glyphs.'o.right'.contours
|
|
put-shapes : create-stroke
|
|
:.start-from RIGHTSB XH
|
|
:.heads-to DOWNWARD
|
|
:.set-width 0 STROKE
|
|
:.line-to RIGHTSB DESCENDER
|
|
:.heads-to DOWNWARD
|
|
:.form-stroke
|
|
}
|
|
create-glyph 'd' : glyph-construction {
|
|
set-width WIDTH
|
|
assign-unicode 'd'
|
|
include bMarks
|
|
|
|
put-shapes glyphs.'o.right'.contours
|
|
put-shapes : create-stroke
|
|
:.start-from RIGHTSB 0
|
|
:.heads-to UPWARD
|
|
:.set-width STROKE 0
|
|
:.line-to RIGHTSB CAP
|
|
:.heads-to UPWARD
|
|
:.form-stroke
|
|
}
|
|
create-glyph 'g' : glyph-construction {
|
|
set-width WIDTH
|
|
assign-unicode 'g'
|
|
include pMarks
|
|
|
|
put-shapes : list {
|
|
Ring XO [XH * GBARPOS] [SB * 1.25] [RIGHTSB - 0.25 * SB] SMALLSMOOTH
|
|
Ring [XO - STROKE] [[XH * GBARPOS] + STROKE] [SB * 1.25 + STROKE] [[RIGHTSB - 0.25 * SB] - STROKE] [SMALLSMOOTH - STROKE]
|
|
}
|
|
reverse-last
|
|
|
|
put-shapes : create-stroke
|
|
:.start-from MIDDLE [XH * GBARPOS]
|
|
:.set-width 0 [STROKE * 0.75]
|
|
:.arc-hv-to [SB * 1.5 + STROKE] [[O - DESCENDER * 0.85 + XH * GBARPOS] * 0.47]
|
|
:.set-width 0 STROKE
|
|
:.arc-vh-to [MIDDLE + DESCENDER * 0.15] [O - DESCENDER * 0.85]
|
|
:.line-to [MIDDLE - DESCENDER * 0.15] [O - DESCENDER * 0.85]
|
|
:.arc-hv-to [RIGHTSB - O * 2] [[-STROKE] * globalTransform.yx * 2]
|
|
:.arc-vh-to MIDDLE [DESCENDER + O]
|
|
:.arc-hv-to SB [DESCENDER * 0.1]
|
|
:.arc-vh-to [MIDDLE + DESCENDER * 0.15] [O - DESCENDER * 0.85]
|
|
:.form-stroke
|
|
|
|
start-from [RIGHTSB + 0.5 * SB] XH
|
|
line-to [RIGHTSB + 0.5 * SB] [XH - STROKE]
|
|
line-to MIDDLE [XH - STROKE - O]
|
|
line-to MIDDLE XH
|
|
}
|
|
### c e
|
|
create-glyph 'c' : glyph-construction {
|
|
set-width WIDTH
|
|
assign-unicode 'c'
|
|
include eMarks
|
|
|
|
local outline : create-stroke
|
|
outline.start-from [RIGHTSB - OXHOOK] [XH - HOOK]
|
|
:.curve-to [MIDDLE + KAPPA_HOOK * [MIDDLE - para.sb]] XO MIDDLE XO
|
|
:.heads-to LEFTWARD
|
|
:.arc-hv-to [SB + O] [XH - SMALLSMOOTHA]
|
|
:.line-to [SB + O] SMALLSMOOTHB
|
|
:.arc-vh-to MIDDLE O
|
|
:.heads-to RIGHTWARD
|
|
:.curve-to [MIDDLE + [KAPPA_HOOK + TAILADJKAPPA * globalTransform.yx] * [MIDDLE - SB]] O [RIGHTSB - OXHOOK + TAILADJX * globalTransform.yx] [HOOK - TAILADJY * globalTransform.yx]
|
|
put-shapes : outline.form-stroke STROKE 0
|
|
}
|
|
create-glyph 'e.upright' : glyph-construction {
|
|
set-width WIDTH
|
|
|
|
local barbottom [XH * BARPOS]
|
|
|
|
local outline : create-stroke
|
|
:.start-from [RIGHTSB - O] barbottom
|
|
:.heads-to UPWARD
|
|
:.set-width STROKE 0
|
|
:.line-to [RIGHTSB - O] [XH - SMALLSMOOTHB]
|
|
:.arc-vh-to MIDDLE XO
|
|
:.heads-to LEFTWARD
|
|
:.arc-hv-to [SB + O] [XH - SMALLSMOOTHA]
|
|
:.line-to [SB + O] SMALLSMOOTHB
|
|
:.arc-vh-to MIDDLE O
|
|
:.heads-to RIGHTWARD
|
|
:.curve-to [MIDDLE + [KAPPA_HOOK + TAILADJKAPPA * globalTransform.yx] * [MIDDLE - SB]] O [RIGHTSB - OXHOOK + TAILADJX * globalTransform.yx] [HOOK - TAILADJY * globalTransform.yx]
|
|
|
|
local bar : create-stroke
|
|
:.start-from [SB + HALFSTROKE] barbottom
|
|
:.set-width STROKE 0
|
|
:.heads-to RIGHTWARD
|
|
:.line-to [RIGHTSB - HALFSTROKE] barbottom
|
|
:.heads-to RIGHTWARD
|
|
|
|
put-shapes : outline.form-stroke
|
|
put-shapes : bar.form-stroke
|
|
}
|
|
create-glyph 'e.italic' : glyph-construction {
|
|
set-width WIDTH
|
|
|
|
local barbottom [XH * [BARPOS - 0.04]]
|
|
|
|
local outline : create-stroke
|
|
:.start-from [SB + O + STROKE] barbottom
|
|
:.set-width STROKE 0
|
|
:.arc-hv-to [RIGHTSB - O] [XH - SMALLSMOOTHB]
|
|
:.arc-vh-to MIDDLE XO
|
|
:.heads-to LEFTWARD
|
|
:.arc-hv-to [SB + O] [XH - SMALLSMOOTHA]
|
|
:.line-to [SB + O] SMALLSMOOTHB
|
|
:.arc-vh-to MIDDLE O
|
|
:.heads-to RIGHTWARD
|
|
:.curve-to [MIDDLE + [KAPPA_HOOK + TAILADJKAPPA * globalTransform.yx] * [MIDDLE - SB]] O [RIGHTSB - OXHOOK + TAILADJX * globalTransform.yx] [HOOK - TAILADJY * globalTransform.yx]
|
|
|
|
put-shapes : outline.form-stroke
|
|
}
|
|
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'
|
|
}
|
|
}
|
|
|
|
### a u
|
|
create-glyph 'a.upright' : glyph-construction {
|
|
set-width WIDTH
|
|
local bartop [XH * BARPOS + STROKE]
|
|
put-shapes : create-stroke
|
|
:.start-from RIGHTSB 0
|
|
:.heads-to UPWARD
|
|
:.set-width STROKE 0
|
|
:.line-to RIGHTSB [XH - SMOOTHA]
|
|
:.arc-vh-to MIDDLE XO
|
|
:.heads-to LEFTWARD
|
|
:.curve-to [MIDDLE - KAPPA_AHOOK * [MIDDLE - SB]] XO [SB + OXHOOK] [XH - AHOOK]
|
|
:.form-stroke
|
|
put-shapes : create-stroke
|
|
:.start-from [WIDTH * 0.47] O
|
|
:.set-width 0 STROKE
|
|
:.heads-to LEFTWARD
|
|
:.arc-hv-to [SB + O] [bartop * 0.45]
|
|
:.arc-vh-to [WIDTH * 0.6] bartop
|
|
:.line-to RIGHTSB bartop
|
|
:.heads-to RIGHTWARD
|
|
:.form-stroke
|
|
put-shapes : create-stroke
|
|
:.start-from [WIDTH * 0.47] [O + STROKE]
|
|
:.set-width 0 STROKE
|
|
:.heads-to RIGHTWARD
|
|
:.arc-hv-to [RIGHTSB - STROKE] [SMALLSMOOTHA * 0.65]
|
|
:.heads-to UPWARD
|
|
:.set-width 0 [STROKE * 0.4]
|
|
:.form-stroke
|
|
}
|
|
create-glyph 'a.italic' : glyph-construction {
|
|
set-width WIDTH
|
|
include glyphs.'o.right'
|
|
put-shapes : create-stroke
|
|
:.start-from RIGHTSB 0
|
|
:.heads-to UPWARD
|
|
:.set-width STROKE 0
|
|
:.line-to RIGHTSB XH
|
|
:.heads-to UPWARD
|
|
:.form-stroke
|
|
}
|
|
|
|
create-glyph 'a' : glyph-construction {
|
|
set-width WIDTH
|
|
assign-unicode 'a'
|
|
include eMarks
|
|
|
|
if [para.italicangle > 0] {
|
|
then : include glyphs.'a.italic'
|
|
else : include glyphs.'a.upright'
|
|
}
|
|
}
|
|
create-glyph 'u' : glyph-construction {
|
|
set-width WIDTH
|
|
assign-unicode 'u'
|
|
include eMarks
|
|
|
|
put-shapes : create-stroke
|
|
:.start-from SB XH
|
|
:.heads-to DOWNWARD
|
|
:.set-width STROKE 0
|
|
:.line-to SB SMALLSMOOTHA
|
|
:.arc-vh-to MIDDLE O
|
|
:.heads-to RIGHTWARD
|
|
:.form-stroke
|
|
put-shapes : create-stroke
|
|
:.start-from MIDDLE [O + STROKE]
|
|
:.set-width 0 STROKE
|
|
:.heads-to RIGHTWARD
|
|
:.arc-hv-to [RIGHTSB - STROKE * ITALICCOR] SMALLSMOOTHA
|
|
:.heads-to UPWARD
|
|
:.set-width 0 [STROKE * 0.4]
|
|
:.form-stroke
|
|
put-shapes : create-stroke
|
|
:.start-from RIGHTSB 0
|
|
:.heads-to UPWARD
|
|
:.set-width STROKE 0
|
|
:.line-to RIGHTSB XH
|
|
:.heads-to UPWARD
|
|
:.form-stroke
|
|
}
|
|
|
|
### n h m
|
|
create-glyph 'nbowl' : glyph-construction {
|
|
put-shapes : create-stroke
|
|
:.start-from RIGHTSB 0
|
|
:.heads-to UPWARD
|
|
:.set-width STROKE 0
|
|
:.line-to RIGHTSB [XH - SMALLSMOOTHB]
|
|
:.arc-vh-to MIDDLE XO
|
|
:.heads-to LEFTWARD
|
|
:.form-stroke
|
|
put-shapes : create-stroke
|
|
:.start-from MIDDLE [XO - STROKE]
|
|
:.set-width 0 STROKE
|
|
:.heads-to LEFTWARD
|
|
:.arc-hv-to [SB + STROKE * ITALICCOR] [XH - SMALLSMOOTHA]
|
|
:.heads-to DOWNWARD
|
|
:.set-width 0 [STROKE * 0.4]
|
|
:.form-stroke
|
|
}
|
|
create-glyph 'n' : glyph-construction {
|
|
set-width WIDTH
|
|
assign-unicode 'n'
|
|
include eMarks
|
|
|
|
include glyphs.nbowl
|
|
put-shapes : create-stroke
|
|
:.start-from SB 0
|
|
:.heads-to UPWARD
|
|
:.set-width 0 STROKE
|
|
:.line-to SB XH
|
|
:.heads-to UPWARD
|
|
:.form-stroke
|
|
}
|
|
create-glyph 'h' : glyph-construction {
|
|
set-width WIDTH
|
|
assign-unicode 'h'
|
|
include bMarks
|
|
|
|
include glyphs.nbowl
|
|
put-shapes : create-stroke
|
|
:.start-from SB 0
|
|
:.heads-to UPWARD
|
|
:.set-width 0 STROKE
|
|
:.line-to SB CAP
|
|
:.heads-to UPWARD
|
|
:.form-stroke
|
|
}
|
|
create-glyph 'm' : glyph-construction {
|
|
set-width WIDTH
|
|
assign-unicode 'm'
|
|
include eMarks
|
|
|
|
local sw : Math.min STROKE [[WIDTH - SB * 2] * 0.24]
|
|
local m1 : [MIDDLE + SB + sw * 0.25] / 2
|
|
local m2 : m1 + [MIDDLE - sw / 2 - SB]
|
|
put-shapes : create-stroke
|
|
:.start-from [MIDDLE - sw / 2] 0
|
|
:.set-width 0 sw :.heads-to UPWARD
|
|
:.line-to [MIDDLE - sw / 2] [XH - SMALLSMOOTHA]
|
|
:.arc-vh-to m1 [XO - STROKE]
|
|
:.set-width 0 STROKE
|
|
:.heads-to LEFTWARD
|
|
:.arc-hv-to [SB + sw * 0.75] [XH - SMALLSMOOTHA]
|
|
:.heads-to DOWNWARD
|
|
:.set-width 0 [sw * 0.4]
|
|
:.form-stroke
|
|
put-shapes : create-stroke
|
|
:.start-from [RIGHTSB - sw] 0
|
|
:.set-width 0 sw :.heads-to UPWARD
|
|
:.line-to [RIGHTSB - sw] [XH - SMALLSMOOTHA]
|
|
:.arc-vh-to m2 [XO - STROKE]
|
|
:.set-width 0 STROKE
|
|
:.heads-to LEFTWARD
|
|
:.arc-hv-to [MIDDLE + sw * 0.25] [XH - SMALLSMOOTHA]
|
|
:.heads-to DOWNWARD
|
|
:.set-width 0 [sw * 0.4]
|
|
:.form-stroke
|
|
put-shapes : create-stroke
|
|
:.start-from SB 0
|
|
:.heads-to UPWARD
|
|
:.set-width 0 sw
|
|
:.line-to SB XH
|
|
:.heads-to UPWARD
|
|
:.form-stroke
|
|
}
|
|
|
|
### i j l
|
|
create-glyph 'dotlessi.straight' : glyph-construction {
|
|
include eMarks
|
|
put-shapes : create-stroke
|
|
:.start-from MIDDLE 0
|
|
:.heads-to UPWARD
|
|
:.set-width HALFSTROKE HALFSTROKE
|
|
:.line-to MIDDLE XH
|
|
:.heads-to UPWARD
|
|
:.form-stroke
|
|
}
|
|
create-glyph 'dotlessi.hooky' : glyph-construction {
|
|
include glyphs.'dotlessi.straight' true
|
|
put-shapes : leftwardTopSerif MIDDLE XH LONGSERIF
|
|
}
|
|
create-glyph 'dotlessi.zshaped' : glyph-construction {
|
|
include glyphs.'dotlessi.hooky' true
|
|
put-shapes : rightwardBottomSerif MIDDLE 0 LONGSERIF
|
|
}
|
|
create-glyph 'dotlessi.serifed' : glyph-construction {
|
|
include eMarks
|
|
|
|
local balance ILBALANCE
|
|
put-shapes : create-stroke
|
|
:.start-from [MIDDLE + balance] 0
|
|
:.heads-to UPWARD
|
|
:.set-width HALFSTROKE HALFSTROKE
|
|
:.line-to [MIDDLE + balance] XH
|
|
:.heads-to UPWARD
|
|
:.form-stroke
|
|
put-shapes : leftwardTopSerif [MIDDLE + balance] XH [LONGSERIF - balance]
|
|
put-shapes : rightwardBottomSerif MIDDLE 0 LONGSERIF
|
|
put-shapes : leftwardBottomSerif MIDDLE 0 LONGSERIF
|
|
}
|
|
create-glyph 'dotlessi' : glyph-construction {
|
|
set-width WIDTH
|
|
assign-unicode 0x131
|
|
|
|
include glyphs.[match variantSelector.zero {
|
|
'straight' 'dotlessi.straight'
|
|
'hooky' 'dotlessi.hooky'
|
|
'zshaped' 'dotlessi.zshaped'
|
|
'serifed' 'dotlessi.serifed'
|
|
otherwise 'dotlessi.serifed'
|
|
}] true
|
|
}
|
|
create-glyph 'dotaccent' : glyph-construction {
|
|
set-width WIDTH
|
|
set-anchor 'above' MARK MIDDLE XH MIDDLE [XH + ACCENT]
|
|
put-shapes : list {
|
|
Ring [XH + ACCENT + DOTRADIUS] [XH + ACCENT - DOTRADIUS] [MIDDLE - DOTRADIUS] [MIDDLE + DOTRADIUS]
|
|
}
|
|
}
|
|
create-glyph 'i' : glyph-construction {
|
|
set-width WIDTH
|
|
assign-unicode 'i'
|
|
|
|
include glyphs.dotlessi BASE
|
|
include glyphs.dotaccent
|
|
}
|
|
|
|
create-glyph 'dotlessj.straight' : glyph-construction {
|
|
put-shapes : create-stroke
|
|
:.start-from [MIDDLE + JBALANCE] XH
|
|
:.heads-to DOWNWARD
|
|
:.set-width HALFSTROKE HALFSTROKE
|
|
:.line-to [MIDDLE + JBALANCE] 0
|
|
:.arc-vh-to [MIDDLE + DESCENDER] [DESCENDER + HALFSTROKE]
|
|
:.form-stroke
|
|
}
|
|
create-glyph 'dotlessj.serifed' : glyph-construction {
|
|
include glyphs.'dotlessj.straight'
|
|
put-shapes : leftwardTopSerif [MIDDLE + JBALANCE] XH LONGSERIF
|
|
}
|
|
|
|
create-glyph 'dotlessj' : glyph-construction {
|
|
set-width WIDTH
|
|
set-anchor 'above' BASE [MIDDLE + JBALANCE] XH
|
|
assign-unicode 0x237
|
|
include glyphs.'dotlessj.serifed'
|
|
}
|
|
create-glyph 'j' : glyph-construction {
|
|
set-width WIDTH
|
|
assign-unicode 'j'
|
|
|
|
include glyphs.dotlessj BASE
|
|
include glyphs.dotaccent
|
|
}
|
|
|
|
create-glyph 'l.straight' : glyph-construction {
|
|
put-shapes : create-stroke
|
|
:.start-from MIDDLE 0
|
|
:.heads-to UPWARD
|
|
:.set-width HALFSTROKE HALFSTROKE
|
|
:.line-to MIDDLE CAP
|
|
:.heads-to UPWARD
|
|
:.form-stroke
|
|
}
|
|
create-glyph 'l.hooky' : glyph-construction {
|
|
include glyphs.'l.straight'
|
|
put-shapes : leftwardTopSerif MIDDLE CAP LONGSERIF
|
|
}
|
|
create-glyph 'l.zshaped' : glyph-construction {
|
|
include glyphs.'l.hooky'
|
|
put-shapes : rightwardBottomSerif MIDDLE 0 LONGSERIF
|
|
}
|
|
create-glyph 'l.serifed' : glyph-construction {
|
|
local balance ILBALANCE
|
|
put-shapes : create-stroke
|
|
:.start-from [MIDDLE + balance] 0
|
|
:.heads-to UPWARD
|
|
:.set-width HALFSTROKE HALFSTROKE
|
|
:.line-to [MIDDLE + balance] CAP
|
|
:.heads-to UPWARD
|
|
:.form-stroke
|
|
put-shapes : leftwardTopSerif [MIDDLE + balance] CAP [LONGSERIF - balance]
|
|
put-shapes : rightwardBottomSerif MIDDLE 0 LONGSERIF
|
|
put-shapes : leftwardBottomSerif MIDDLE 0 LONGSERIF
|
|
}
|
|
create-glyph 'l' : glyph-construction {
|
|
set-width WIDTH
|
|
assign-unicode 'l'
|
|
include bMarks
|
|
|
|
include glyphs.[match variantSelector.zero {
|
|
'straight' 'l.straight'
|
|
'hooky' 'l.hooky'
|
|
'zshaped' 'l.zshaped'
|
|
'serifed' 'l.serifed'
|
|
otherwise 'l.serifed'
|
|
}]
|
|
}
|
|
|
|
### x v w z
|
|
create-glyph 'x' : glyph-construction {
|
|
set-width WIDTH
|
|
assign-unicode 'x'
|
|
include eMarks
|
|
|
|
local TURN [XH * 0.1]
|
|
|
|
local barone : create-stroke
|
|
:.start-from [SB + HALFSTROKE + O] 0
|
|
:.heads-to UPWARD
|
|
:.set-width HALFSTROKE HALFSTROKE
|
|
:.cubic-to [SB + HALFSTROKE + O] [TURN + 0.17 * [XH - TURN]] [RIGHTSB - HALFSTROKE - O] [XH - TURN - 0.17 * [XH - TURN]] [RIGHTSB - HALFSTROKE - O] XH
|
|
:.heads-to UPWARD
|
|
|
|
local bartwo : create-stroke
|
|
:.start-from [RIGHTSB - HALFSTROKE - O] 0
|
|
:.heads-to UPWARD
|
|
:.set-width HALFSTROKE HALFSTROKE
|
|
:.cubic-to [RIGHTSB - HALFSTROKE - O] [TURN + 0.17 * [XH - TURN]] [SB + HALFSTROKE + O] [XH - TURN - 0.17 * [XH - TURN]] [SB + HALFSTROKE + O] XH
|
|
:.heads-to UPWARD
|
|
|
|
put-shapes : barone.form-stroke
|
|
put-shapes : bartwo.form-stroke
|
|
}
|
|
create-glyph 'v' : glyph-construction {
|
|
set-width WIDTH
|
|
assign-unicode 'v'
|
|
include eMarks
|
|
|
|
local TURN [XH * 0.9]
|
|
|
|
local leftbar : create-stroke
|
|
leftbar.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
|
|
|
|
local rightbar : create-stroke
|
|
rightbar.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]
|
|
|
|
put-shapes : leftbar.form-stroke
|
|
put-shapes : rightbar.form-stroke
|
|
|
|
#bottom cap
|
|
start-from [MIDDLE + STROKE / 2] 0
|
|
line-to [MIDDLE - STROKE / 2] 0
|
|
line-to MIDDLE STROKE
|
|
}
|
|
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 : Math.min [STROKE * 0.8] [[WIDTH - SB * 2] * 0.175]
|
|
local m1 : WIDTH * 0.325
|
|
local m2 : WIDTH * 0.675
|
|
|
|
put-shapes: 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
|
|
:.form-stroke
|
|
|
|
put-shapes : 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
|
|
:.form-stroke
|
|
|
|
put-shapes: 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
|
|
:.form-stroke
|
|
|
|
put-shapes : 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
|
|
:.form-stroke
|
|
|
|
#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 'z' : glyph-construction {
|
|
set-width WIDTH
|
|
assign-unicode 'z'
|
|
include eMarks
|
|
|
|
local cor 1.2
|
|
|
|
put-shapes : create-stroke :.start-from SB XH :.heads-to RIGHTWARD :.set-width 0 STROKE
|
|
:.line-to RIGHTSB XH :.heads-to RIGHTWARD :.form-stroke
|
|
put-shapes : create-stroke :.start-from SB 0 :.heads-to RIGHTWARD :.set-width STROKE 0
|
|
:.line-to RIGHTSB 0 :.heads-to RIGHTWARD :.form-stroke
|
|
|
|
start-from SB STROKE
|
|
line-to [SB + STROKE * cor] STROKE
|
|
line-to RIGHTSB [XH - STROKE]
|
|
line-to [RIGHTSB - STROKE * cor] [XH - STROKE]
|
|
reverse-last
|
|
}
|
|
|
|
### s
|
|
create-glyph 's' : glyph-construction {
|
|
set-width WIDTH
|
|
assign-unicode 's'
|
|
include eMarks
|
|
|
|
local slope 0.015
|
|
local expand 0.175
|
|
local coexpand [[1 - expand] / 2]
|
|
local ssmootha [SMOOTHA * 0.87]
|
|
|
|
local bowltop : create-stroke
|
|
bowltop.start-from [RIGHTSB - OXHOOK] [XH - SHOOK]
|
|
:.set-width STROKE 0
|
|
:.curve-to [MIDDLE + KAPPA_AHOOK * [MIDDLE - para.sb]] XO MIDDLE XO
|
|
:.heads-to LEFTWARD
|
|
:.arc-hv-to SB [XH - ssmootha]
|
|
|
|
local strokemiddle : create-stroke
|
|
strokemiddle.start-from [SB + STROKE / 2] [XH - ssmootha]
|
|
:.set-width [STROKE / 2] [STROKE / 2]
|
|
:.curve-to [SB + STROKE / 2] [[0.5 + slope] * XH + [2 * slope * XH] / [expand * WIDTH] * [coexpand * WIDTH - SB - STROKE / 2]] [coexpand * WIDTH] [[0.5 + slope] * XH]
|
|
:.line-to [[1 - coexpand] * WIDTH] [[0.5 - slope] * XH]
|
|
:.curve-to [RIGHTSB - STROKE / 2] [[0.5 - slope] * XH - [2 * slope * XH] / [expand * WIDTH] * [coexpand * WIDTH - SB - STROKE / 2]] [RIGHTSB - STROKE / 2] ssmootha
|
|
|
|
local bowlbottom : create-stroke
|
|
bowlbottom.start-from RIGHTSB ssmootha :.set-width 0 STROKE
|
|
:.arc-vh-to MIDDLE O
|
|
:.heads-to LEFTWARD
|
|
:.curve-to [MIDDLE - KAPPA_AHOOK * [MIDDLE - para.sb]] O [SB + OXHOOK] SHOOK
|
|
|
|
put-shapes : bowltop.form-stroke
|
|
put-shapes : strokemiddle.form-stroke
|
|
put-shapes : bowlbottom.form-stroke
|
|
} |