3195 lines
92 KiB
Plaintext
3195 lines
92 KiB
Plaintext
###########################################################################################
|
|
# UNIFIED LETTERFORMS : LATIN ORIGINALS
|
|
###########################################################################################
|
|
|
|
### I
|
|
symbol-block 'I'
|
|
sketch # I.straight
|
|
include capitalMarks
|
|
include : VBar MIDDLE 0 CAP
|
|
set currentGlyph.cmpPriority (-2)
|
|
save 'I.straight'
|
|
|
|
define [ISerifShape top] : glyph-construction
|
|
include : VBar MIDDLE 0 top
|
|
include : CenterBottomSerif MIDDLE 0 (LONGJUT * 0.8)
|
|
include : CenterTopSerif MIDDLE top (LONGJUT * 0.8)
|
|
|
|
sketch # I.serifed
|
|
include capitalMarks
|
|
include : ISerifShape CAP
|
|
|
|
save 'I.serifed'
|
|
|
|
select-variant 'I' 'I' 'serifed'
|
|
alias 'Iota' 0x399 'I'
|
|
alias 'cyrUkrainianI' 0x406 'I'
|
|
alias 'Palochka' 0x4C0 'I'
|
|
|
|
sketch # smcpI
|
|
include eMarks
|
|
include : ISerifShape XH
|
|
save 'smcpI' 0x26A
|
|
|
|
### dotless i, i and iota
|
|
define IotaShape : symbol-block 'i'
|
|
# iota
|
|
define [IotaShape top] : glyph-construction
|
|
local middle MIDDLE
|
|
set-anchor 'above' BASE middle top
|
|
include : LeftwardTopSerif middle top LONGJUT
|
|
include : dispiro
|
|
widths.center
|
|
flat middle top [heading DOWNWARD]
|
|
curl middle HOOK
|
|
arcvh
|
|
flat (middle + HOOK - HALFSTROKE) HALFSTROKE
|
|
curl (middle + LONGJUT * 1.05) HALFSTROKE [heading RIGHTWARD]
|
|
|
|
sketch # iota
|
|
include eMarks
|
|
include : IotaShape XH
|
|
save 'iota' 0x3B9
|
|
save 'latiniota' 0x269
|
|
|
|
sketch # latinIota
|
|
include capitalMarks
|
|
include : IotaShape CAP
|
|
save 'latinIota' 0x196
|
|
|
|
sketch # dotlessi.straight
|
|
include eMarks
|
|
include : VBar (MIDDLE) 0 XH
|
|
set currentGlyph.cmpPriority (-2)
|
|
save 'dotlessi.straight'
|
|
|
|
sketch # dotlessi.hooky
|
|
include eMarks
|
|
include : VBar (MIDDLE + IBALANCE) 0 XH
|
|
include : LeftwardTopSerif (MIDDLE + IBALANCE) XH LONGJUT
|
|
save 'dotlessi.hooky'
|
|
|
|
sketch # dotlessi.zshaped
|
|
include eMarks
|
|
include : VBar (MIDDLE) 0 XH
|
|
include : LeftwardTopSerif (MIDDLE) XH LONGJUT
|
|
include : RightwardBottomSerif MIDDLE 0 LONGJUT
|
|
save 'dotlessi.zshaped'
|
|
|
|
sketch # dotlessi.serifed
|
|
include eMarks
|
|
local balance IBALANCE
|
|
include : VBar (MIDDLE + balance) 0 XH
|
|
include : LeftwardTopSerif (MIDDLE + balance) XH (LONGJUT - balance)
|
|
include : RightwardBottomSerif MIDDLE 0 LONGJUT
|
|
include : LeftwardBottomSerif MIDDLE 0 LONGJUT
|
|
save 'dotlessi.serifed'
|
|
|
|
sketch # dotlessi.italic
|
|
if para.isItalic
|
|
: then : begin
|
|
local left : [mix SB RIGHTSB [linreg 18 0.42 126 0.46 STROKE]] - HALFSTROKE * HVCONTRAST
|
|
local right : mix SB RIGHTSB 1.1
|
|
local middle : mix left right 0.55
|
|
include : dispiro
|
|
widths.lhs
|
|
flat left XH [heading DOWNWARD]
|
|
curl left (SMALLSMOOTHB * 0.8)
|
|
hookend O
|
|
g4 right (HOOK * [linreg 18 0.85 126 1 STROKE])
|
|
include : dispiro
|
|
flat (left - LONGJUT + HALFSTROKE * HVCONTRAST) XH [widths 0 STROKE]
|
|
curl left XH
|
|
include eMarks
|
|
set-anchor 'above' BASE (left + HALFSTROKE * HVCONTRAST + [linreg 18 0.25 126 0 STROKE] * TANSLANT * WIDTH) XH
|
|
set-anchor 'below' BASE middle 0
|
|
: else : begin
|
|
include eMarks
|
|
include : IotaShape XH
|
|
save 'dotlessi.italic'
|
|
|
|
select-variant 'dotlessi' 0x131 [if para.isItalic 'italic' 'serifed'] {
|
|
.'cv03' 'dotlessi.serifed'
|
|
.'cv04' 'dotlessi.italic'
|
|
.'cv05' 'dotlessi.hooky'
|
|
.'cv06' 'dotlessi.zshaped'
|
|
}
|
|
|
|
sketch # iogonek.dotless
|
|
include glyphs.dotlessi AS_BASE
|
|
include glyphs.ogonekBelow
|
|
save 'iogonek.dotless'
|
|
|
|
|
|
composite 'i' glyphs.dotlessi glyphs.dotAbove [into-unicode 'i']
|
|
if (glyphs.i && glyphs.dotlessi) : begin
|
|
composite 'i.cv03' glyphs.(glyphs.dotlessi.featureSelector.cv03) glyphs.dotAbove
|
|
composite 'i.cv04' glyphs.(glyphs.dotlessi.featureSelector.cv04) glyphs.dotAbove
|
|
composite 'i.cv05' glyphs.(glyphs.dotlessi.featureSelector.cv05) glyphs.dotAbove
|
|
composite 'i.cv06' glyphs.(glyphs.dotlessi.featureSelector.cv06) glyphs.dotAbove
|
|
set glyphs.i.featureSelector {
|
|
.cv03 'i.cv03'
|
|
.cv04 'i.cv04'
|
|
.cv05 'i.cv05'
|
|
.cv06 'i.cv06'
|
|
}
|
|
alias 'cyrUkrainiani' 0x456 'i'
|
|
turned nothing 0x1D09 'i' MIDDLE (XH / 2) pMarks
|
|
* IotaShape
|
|
|
|
### J
|
|
symbol-block 'J'
|
|
sketch # J.straight
|
|
set-width WIDTH
|
|
include capitalMarks
|
|
set-anchor 'above' BASE (RIGHTSB - STROKE * HVCONTRAST * 0.75 - JBALANCE2) CAP
|
|
set-anchor 'overlay' BASE (RIGHTSB - STROKE * HVCONTRAST * 0.75 - JBALANCE2) (CAP * OVERLAYPOS)
|
|
|
|
local slope (STROKE * 0.00092)
|
|
local expand 0.35
|
|
local coexpand ((1 - expand) / 2)
|
|
|
|
local hookx (0.75 * SB)
|
|
|
|
include : dispiro
|
|
widths.rhs
|
|
flat (RIGHTSB - JBALANCE2) CAP [heading DOWNWARD]
|
|
curl (RIGHTSB - JBALANCE2) SMOOTH
|
|
hookend O
|
|
g4 hookx HOOK
|
|
|
|
save 'J.straight'
|
|
|
|
sketch # J.shorthook
|
|
set-width WIDTH
|
|
include capitalMarks
|
|
|
|
local slope (STROKE * 0.00092)
|
|
local expand 0.35
|
|
local coexpand ((1 - expand) / 2)
|
|
local smooth : HOOK + 0.75 * STROKE
|
|
|
|
local hookx (0.5 * SB)
|
|
|
|
include : dispiro
|
|
widths.rhs
|
|
flat (RIGHTSB - JBALANCE2) CAP [heading DOWNWARD]
|
|
curl (RIGHTSB - JBALANCE2) smooth
|
|
straight.left.end [mix SB RIGHTSB 0.3] O [heading LEFTWARD]
|
|
|
|
save 'J.shorthook'
|
|
|
|
sketch # J.serifed
|
|
set-width WIDTH
|
|
include glyphs.'J.straight' AS_BASE
|
|
include : LeftwardTopSerif (RIGHTSB - HALFSTROKE * HVCONTRAST - JBALANCE2) CAP LONGJUT
|
|
|
|
save 'J.serifed'
|
|
|
|
select-variant 'J' 'J' 'serifed'
|
|
alias 'cyrJe' 0x408 'J'
|
|
alias 'grkJ' 0x37F 'J'
|
|
|
|
### dotless j and j
|
|
symbol-block 'j'
|
|
sketch # dotlessj.straight
|
|
include pMarks
|
|
local center : MIDDLE + JBALANCE + HALFSTROKE * HVCONTRAST
|
|
set-anchor 'above' BASE (center - HVCONTRAST * HALFSTROKE) XH
|
|
set-anchor 'overlay' BASE (center - HVCONTRAST * HALFSTROKE) (XH / 2)
|
|
local hookx : center - (WIDTH * 0.5) - STROKE * HVCONTRAST + OXHOOK
|
|
local turn : [mix center hookx 0.5] + CORRECTION_OMIDS
|
|
include : dispiro
|
|
widths.rhs
|
|
flat center XH [heading DOWNWARD]
|
|
curl center (DESCENDER + SMOOTHA)
|
|
hookend (DESCENDER + O)
|
|
g4 hookx (DESCENDER + JHOOK)
|
|
|
|
save 'dotlessj.straight'
|
|
|
|
sketch # dotlessj.serifed
|
|
include pMarks
|
|
include glyphs.'dotlessj.straight' AS_BASE
|
|
include : LeftwardTopSerif (MIDDLE + JBALANCE) XH LONGJUT
|
|
|
|
set-anchor 'above' BASE (MIDDLE + JBALANCE - STROKE * 0.166 * HVCONTRAST) XH
|
|
set-anchor 'overlay' BASE (MIDDLE + JBALANCE - STROKE * 0.166 * HVCONTRAST) (XH / 2)
|
|
save 'dotlessj.serifed'
|
|
|
|
select-variant 'dotlessj' 0x237 'serifed'
|
|
|
|
sketch # j
|
|
set-width WIDTH
|
|
|
|
include glyphs.dotlessj AS_BASE
|
|
include glyphs.dotAbove
|
|
save 'j' 'j'
|
|
save 'grkj' 0x3F3
|
|
save 'cyrje' 0x458
|
|
|
|
sketch # jcurlytail
|
|
include pMarks
|
|
set-anchor 'above' BASE (MIDDLE + JBALANCE) XH
|
|
local fine : adviceBlackness 3.5
|
|
local rinner : LONGJUT / 2 - fine / 2
|
|
local m1 : MIDDLE - HALFSTROKE * HVCONTRAST + JBALANCE
|
|
local x2 : mix RIGHTSB m1 0.25
|
|
local y2 : DESCENDER + O
|
|
include : LeftwardTopSerif (MIDDLE + JBALANCE) XH LONGJUT
|
|
include : dispiro
|
|
widths.lhs
|
|
flat m1 XH [heading DOWNWARD]
|
|
curl m1 (DESCENDER + fine + rinner * 2)
|
|
CurlyTail fine rinner m1 DESCENDER (m1 - LONGJUT) x2 y2
|
|
include glyphs.dotAbove
|
|
save 'jcurlytail' 0x29D
|
|
|
|
|
|
### L
|
|
symbol-block 'L'
|
|
define [LShape top] : glyph-construction
|
|
include : VBarLeft (SB * 1.5) 0 top
|
|
include : HBarBottom (SB * 1.5 - O) (RIGHTSB - OX) 0
|
|
if SLAB : begin
|
|
include : LeftwardBottomSerif (SB * 1.5) 0 SIDEJUT
|
|
include : CenterTopSerif (SB * 1.5 + HVCONTRAST * HALFSTROKE) top JUT
|
|
include : UpwardRightSerif (RIGHTSB - OX) 0 VJUT
|
|
|
|
sketch # L
|
|
set-width WIDTH
|
|
include capitalMarks
|
|
include : LShape CAP
|
|
|
|
save 'L' 'L'
|
|
turned 'turnL' 0xA780 'L' MIDDLE (CAP / 2)
|
|
|
|
sketch # Lcaron
|
|
include glyphs.commaAbove
|
|
apply-transform : Translate (WIDTH + (RIGHTSB - SB) * 0.375) 0
|
|
include glyphs.L AS_BASE
|
|
|
|
save 'Lcaron' 0x13D
|
|
|
|
sketch # Lslash
|
|
include glyphs.L AS_BASE
|
|
local fine : 0.5 * OVERLAYSTROKE
|
|
local middle : mix STROKE CAP 0.5
|
|
include : dispiro
|
|
flat [mix 0 SB 0.5] (middle - LONGJUT * 0.4) [widths fine fine]
|
|
curl (1.6 * LONGJUT + [mix 0 SB 0.5]) (middle + LONGJUT * 0.4)
|
|
|
|
save 'Lslash' 0x141
|
|
|
|
sketch # Ldot
|
|
include glyphs.L AS_BASE
|
|
include : Ring ([mix STROKE CAP 0.5] + DOTRADIUS) ([mix STROKE CAP 0.5] - DOTRADIUS) ([mix SB RIGHTSB 0.65] - DOTRADIUS) ([mix SB RIGHTSB 0.65] + DOTRADIUS)
|
|
|
|
save 'Ldot' 0x13F
|
|
|
|
sketch # Lbar
|
|
include glyphs.L AS_BASE
|
|
include : HOverlayBar (SB * 0.3) [mix (SB + STROKE) (RIGHTSB - STROKE) 0.55] (CAP * OVERLAYPOS)
|
|
|
|
save 'Lbar' 0x23D
|
|
|
|
sketch # smcpL
|
|
include eMarks
|
|
include : LShape XH
|
|
save 'smcpL' 0x29F
|
|
|
|
### l
|
|
symbol-block 'l'
|
|
create-glyph 'l.straight' : glyph-construction
|
|
include bMarks
|
|
set currentGlyph.cmpPriority (-2)
|
|
include : VBar MIDDLE 0 CAP
|
|
|
|
sketch # l.hooky
|
|
include bMarks
|
|
include : VBar (MIDDLE + LBALANCE) 0 (CAP - STROKE)
|
|
include : LeftwardTopSerif (MIDDLE + LBALANCE) CAP LONGJUT
|
|
|
|
save 'l.hooky'
|
|
|
|
sketch # l.zshaped
|
|
include bMarks
|
|
include : VBar MIDDLE 0 (CAP - STROKE)
|
|
include : LeftwardTopSerif MIDDLE CAP LONGJUT
|
|
include : RightwardBottomSerif MIDDLE 0 LONGJUT
|
|
|
|
save 'l.zshaped'
|
|
|
|
sketch # l.serifed
|
|
include bMarks
|
|
include : VBar (MIDDLE + LBALANCE) 0 CAP
|
|
include : LeftwardTopSerif (MIDDLE + LBALANCE) CAP (LONGJUT - LBALANCE)
|
|
include : CenterBottomSerif MIDDLE 0 LONGJUT
|
|
set-anchor 'overlay' BASE (MIDDLE + LBALANCE / 2) (CAP * OVERLAYPOS)
|
|
|
|
save 'l.serifed'
|
|
|
|
sketch # l.italic
|
|
include bMarks
|
|
if para.isItalic
|
|
: then : begin
|
|
local left : mix SB RIGHTSB 0.3
|
|
local right : mix SB RIGHTSB 1.1
|
|
local middle : mix left right 0.54
|
|
include : dispiro
|
|
widths.lhs
|
|
flat left CAP [heading DOWNWARD]
|
|
curl left (SMALLSMOOTHB * 0.85)
|
|
hookend O
|
|
g4 right HOOK
|
|
include : dispiro
|
|
flat SB CAP [widths 0 STROKE]
|
|
curl left CAP
|
|
set-anchor 'above' BASE (left + HALFSTROKE) CAP
|
|
set-anchor 'below' BASE middle 0
|
|
set-anchor 'overlay' BASE (left + HALFSTROKE) (CAP * OVERLAYPOS)
|
|
: else : include : IotaShape CAP
|
|
save 'l.italic'
|
|
|
|
select-variant 'l' 'l' [if para.isItalic 'italic' 'serifed'] {
|
|
.'cv07' 'l.serifed'
|
|
.'cv08' 'l.italic'
|
|
.'cv09' 'l.hooky'
|
|
.'cv10' 'l.zshaped'
|
|
}
|
|
alias 'palochka' 0x4CF 'l'
|
|
turned 'turnl' 0xA781 'l' MIDDLE (XH / 2) pMarks
|
|
|
|
sketch # ldot
|
|
include glyphs.l AS_BASE
|
|
apply-transform : Translate (-DOTRADIUS / 2) 0
|
|
include : Ring ([mix STROKE CAP 0.5] + DOTRADIUS) ([mix STROKE CAP 0.5] - DOTRADIUS) ([mix SB RIGHTSB 1] - DOTSIZE) [mix SB RIGHTSB 1]
|
|
|
|
save 'ldot' 0x140
|
|
|
|
sketch # lrtail
|
|
include glyphs.rtailBR
|
|
apply-transform : Translate (MIDDLE + LBALANCE + HALFSTROKE * HVCONTRAST) 0
|
|
include glyphs.'l.hooky'
|
|
include ifMarks
|
|
|
|
save 'lrtail' 0x26D
|
|
|
|
sketch # lcurlytail
|
|
include bMarks
|
|
local fine : adviceBlackness 3.5
|
|
local rinner : LONGJUT / 2 - fine / 2
|
|
local m1 : MIDDLE + HALFSTROKE * HVCONTRAST
|
|
local x2 : mix SB m1 0.25
|
|
local y2 : - fine
|
|
include : LeftwardTopSerif MIDDLE CAP LONGJUT
|
|
include : dispiro
|
|
widths.rhs
|
|
flat m1 CAP [heading DOWNWARD]
|
|
curl m1 (fine + rinner * 2)
|
|
CurlyTail fine rinner m1 0 (m1 + LONGJUT) x2 y2
|
|
|
|
save 'lcurlytail' 0x234
|
|
|
|
sketch # ltildeover
|
|
include glyphs.'l.serifed' AS_BASE
|
|
include : create-glyph : glyph-construction
|
|
include glyphs.tildeAbove
|
|
apply-transform : Upright
|
|
apply-transform : Translate (MIDDLE - markMiddle) (CAP * 0.525 - [mix aboveMarkBot aboveMarkTop 0.5])
|
|
apply-transform : Italify
|
|
|
|
save 'ltildeover' 0x26B
|
|
define [Belt] : glyph-construction
|
|
local fine : adviceBlackness 4.5
|
|
local r : XH * 0.05
|
|
include : dispiro
|
|
widths.rhs fine
|
|
flat MIDDLE (CAPMIDDLE + r) [heading LEFTWARD]
|
|
curl (MIDDLE - HALFSTROKE - r * 1.5) (CAPMIDDLE + r)
|
|
archv
|
|
g4.down.mid (MIDDLE - HALFSTROKE - r * 2.5) CAPMIDDLE [heading DOWNWARD]
|
|
arcvh
|
|
flat (MIDDLE - HALFSTROKE - r * 1.5) (CAPMIDDLE - r)
|
|
curl (MIDDLE + HALFSTROKE + r * 1.5 + fine) (CAPMIDDLE - r)
|
|
|
|
sketch # lbelt
|
|
include glyphs.'l.serifed' AS_BASE
|
|
include : Belt
|
|
|
|
save 'lbelt' 0x26C
|
|
|
|
sketch # lbeltrtail
|
|
include glyphs.lrtail AS_BASE
|
|
include : Belt
|
|
|
|
save 'lbeltrtail' 0xA78E
|
|
|
|
sketch # looprevesh
|
|
include ifMarks
|
|
local fine : adviceBlackness 4
|
|
include : dispiro
|
|
widths.center fine
|
|
g4.down.start MIDDLE (CAP - fine * 1.5) [heading DOWNWARD]
|
|
arcvh
|
|
g4 (MIDDLE - fine * 1) (CAP - fine * 2.5) [heading LEFTWARD]
|
|
archv
|
|
g4 (MIDDLE - fine * 2) (CAP - fine * 1.5) [heading UPWARD]
|
|
arcvh
|
|
g4 (MIDDLE - fine * 1) (CAP - fine * 0.5) [heading RIGHTWARD]
|
|
archv
|
|
flat MIDDLE (CAP - fine * 1.5) [widths.heading HALFSTROKE HALFSTROKE DOWNWARD]
|
|
curl MIDDLE 0 [heading DOWNWARD]
|
|
arcvh
|
|
straight.right.end (MIDDLE + HOOKX) (-HOOK)
|
|
save 'looprevesh' 0x1AA
|
|
|
|
### V and v
|
|
define VShape : symbol-block 'V, v and nu'
|
|
local cornerdist : HALFSTROKE * HVCONTRAST * [if SLAB 1.2 1]
|
|
local vcurviness : if (SLAB && !para.isItalic) 0.15 0.3
|
|
define [VShape] : params [top [sw STROKE]] : glyph-construction
|
|
include : dispiro
|
|
widths.lhs sw
|
|
flat SB top [heading DOWNWARD]
|
|
curl SB (top * 0.9) [heading DOWNWARD]
|
|
quadcontrols 0 vcurviness 9 unimportant
|
|
g4 (MIDDLE - cornerdist) 0 [widths.lhs (VShape.fine * sw / STROKE)]
|
|
|
|
#bottom cap
|
|
start-from (MIDDLE + cornerdist) 0
|
|
line-to (MIDDLE - cornerdist) 0
|
|
line-to MIDDLE (VShape.fine * sw / STROKE)
|
|
|
|
include : dispiro
|
|
widths.rhs sw
|
|
flat RIGHTSB top [heading DOWNWARD]
|
|
curl RIGHTSB (top * 0.9) [heading DOWNWARD]
|
|
quadcontrols 0 vcurviness 9 unimportant
|
|
g4 (MIDDLE + cornerdist) 0 [widths.rhs (VShape.fine * sw / STROKE)]
|
|
tag-contour 'strokeUp'
|
|
include : AIVSerifs top
|
|
set VShape.fine : STROKE * [fallback para.vtipfine : if SLAB 0.9 0.8]
|
|
|
|
sketch # V
|
|
set-width WIDTH
|
|
include capitalMarks
|
|
include : VShape CAP
|
|
|
|
save 'V' 'V'
|
|
|
|
sketch # v
|
|
include eMarks
|
|
include : VShape XH
|
|
|
|
save 'v' 'v'
|
|
define [VHooktopShape top] : glyph-construction
|
|
include : VShape top
|
|
eject-contour 'serifRT'
|
|
eject-contour 'strokeUp'
|
|
|
|
include : dispiro
|
|
widths.rhs
|
|
straight.left.start (RIGHTSB + HOOKX / 3) (top - STROKE)
|
|
g4 (RIGHTSB - HOOKX / 3) (top - HALFSTROKE - HOOK)
|
|
quadcontrols 0.4 0.75 64 unimportant
|
|
g4 (MIDDLE + cornerdist) 0 [widths.rhs VShape.fine]
|
|
|
|
sketch # vhooktop
|
|
include eMarks
|
|
include : VHooktopShape XH
|
|
save 'vhooktop' 0x2C71
|
|
save 'cyrizhitsa' 0x475
|
|
|
|
sketch # cyrIzhitsa
|
|
include capitalMarks
|
|
include : VHooktopShape CAP
|
|
save 'cyrIzhitsa' 0x474
|
|
|
|
turned 'turnv' 0x28C 'v' MIDDLE (XH / 2)
|
|
|
|
sketch # nu
|
|
include eMarks
|
|
|
|
local xmid : MIDDLE + HALFSTROKE * 0.75
|
|
|
|
include : dispiro
|
|
g4 (SB + 0.4 * STROKE * HVCONTRAST) (XH - O) [widths.rhs]
|
|
bezcontrols 0.33 0.2 1 0.76 6 important
|
|
g4.down.end xmid 0 [heading DOWNWARD]
|
|
|
|
include : dispiro
|
|
widths.rhs
|
|
flat RIGHTSB XH [heading DOWNWARD]
|
|
curl RIGHTSB (XH * 0.9) [heading DOWNWARD]
|
|
quadcontrols 0 0.3 6
|
|
g4 xmid 0
|
|
|
|
save 'nu' 0x3BD
|
|
* VShape
|
|
|
|
### A
|
|
symbol-block 'A'
|
|
sketch # A
|
|
set-width WIDTH
|
|
include capitalMarks
|
|
set-anchor 'trailing' BASE (RIGHTSB - markHalfStroke) 0
|
|
|
|
include : VShape CAP
|
|
include : FlipAround MIDDLE (CAP / 2)
|
|
|
|
local p : linreg 18 0.075 108 0.075 STROKE
|
|
if (SLAB && !para.isItalic) : set p : p * 1.33
|
|
include : HBarTop [mix SB RIGHTSB p] [mix RIGHTSB SB p] (XH / 2)
|
|
save 'A' 'A'
|
|
save 'Alpha' 0x391
|
|
save 'cyrA' 0x410
|
|
turned nothing 0x2C6F 'A' MIDDLE (CAP / 2)
|
|
### a
|
|
symbol-block 'a'
|
|
sketch # a.doublestorey
|
|
set-width WIDTH
|
|
include eMarks
|
|
set-anchor 'trailing' BASE (RIGHTSB - markHalfStroke) 0
|
|
local bartop (XH * OVERLAYPOS * 1.02 + HALFSTROKE)
|
|
local lowslope : shoulderMidSlope SHOULDERFINE nothing (-1)
|
|
local lowmiddle : [mix (SB + OX) (RIGHTSB - HALFSTROKE * HVCONTRAST) [linreg 72 0.51 126 0.58 STROKE]] + CORRECTION_OMIDS * 0.5
|
|
local barsmooth : mix SB RIGHTSB 0.55
|
|
include : dispiro
|
|
widths.lhs
|
|
flat RIGHTSB 0 [heading UPWARD]
|
|
curl RIGHTSB (XH - SMOOTHB * [linreg 18 0.9 126 0.81 STROKE])
|
|
hookend XO
|
|
g4 (SB - OXHOOK / 2) (XH - AHOOK)
|
|
include : dispiro
|
|
widths.lhs
|
|
flat (RIGHTSB + O) bartop [heading LEFTWARD]
|
|
curl barsmooth bartop
|
|
archv
|
|
g4 (SB + OX) (bartop * 0.95 * (SMALLSMOOTHB / (SMALLSMOOTHA + SMALLSMOOTHB)))
|
|
arcvh
|
|
g4 (lowmiddle + (-lowslope) * STROKE) O [heading {.y 1 .x lowslope}]
|
|
archv 16
|
|
straight.up.end (RIGHTSB - STROKE * HVCONTRAST + SHOULDERFINE * HVCONTRAST) (SMALLSMOOTHB * 0.9) [widths.lhs SHOULDERFINE]
|
|
if SLAB : begin
|
|
include : tagged 'serifRB' : RightwardBottomSerif RIGHTSB 0 SIDEJUT
|
|
|
|
save 'a.doublestorey'
|
|
|
|
sketch # a.singlestorey
|
|
set-width WIDTH
|
|
include eMarks
|
|
set-anchor 'trailing' BASE (RIGHTSB - markHalfStroke) 0
|
|
include : OBarRightShape
|
|
if SLAB
|
|
: then : begin
|
|
include : VBarRight RIGHTSB 0 XH
|
|
include : RightwardBottomSerif RIGHTSB 0 SIDEJUT
|
|
tag-contour 'serifRB'
|
|
: else : begin
|
|
include : dispiro
|
|
widths.rhs
|
|
flat RIGHTSB XH [heading DOWNWARD]
|
|
curl RIGHTSB SMOOTHA [heading DOWNWARD]
|
|
g4 [mix SB RIGHTSB 1.075] 0 [heading DOWNWARD]
|
|
save 'a.singlestorey'
|
|
|
|
select-variant 'a' 'a' [if para.isItalic 'singlestorey' 'doublestorey'] {
|
|
.'cv01' 'a.doublestorey'
|
|
.'cv02' 'a.singlestorey'
|
|
}
|
|
alias 'cyra' 0x430 'a'
|
|
|
|
sketch # turnlargescripta
|
|
include capitalMarks
|
|
include : OBarRightShape CAP
|
|
start-from RIGHTSB 0
|
|
line-to (RIGHTSB - STROKE * HVCONTRAST) 0
|
|
line-to (RIGHTSB - STROKE * HVCONTRAST) (CAP - STROKE / 2)
|
|
line-to RIGHTSB (CAP - O)
|
|
save 'largescripta' 0x2C6D
|
|
|
|
include : FlipAround MIDDLE (CAP / 2)
|
|
save 'turnlargescripta' 0x2C70
|
|
|
|
sketch # scripta
|
|
include eMarks
|
|
include : OBarRightShape
|
|
start-from RIGHTSB 0
|
|
line-to (RIGHTSB - STROKE * HVCONTRAST) 0
|
|
line-to (RIGHTSB - STROKE * HVCONTRAST) (XH - STROKE / 2)
|
|
line-to RIGHTSB (XH - O)
|
|
if SLAB : begin
|
|
include : RightwardBottomSerif RIGHTSB 0 SIDEJUT
|
|
tag-contour 'serifRB'
|
|
|
|
save 'scripta' 0x0251
|
|
|
|
turned 'turna' 0x250 'a.doublestorey' MIDDLE (XH / 2)
|
|
turned nothing 0x252 'scripta' MIDDLE (XH / 2)
|
|
|
|
### W and w
|
|
symbol-block 'W'
|
|
define [WShape top] : glyph-construction
|
|
local wheight (top * 0.6)
|
|
|
|
include : dispiro
|
|
widths.lhs
|
|
flat SB top [heading DOWNWARD]
|
|
curl SB (top * 0.75) [heading DOWNWARD]
|
|
quadcontrols 0 0.3 6 unimportant
|
|
g4 (WShape.m1 - WShape.fine / 2 * HVCONTRAST) 0 [widths.lhs (WShape.fine * 0.8)]
|
|
|
|
# bottom cap 1
|
|
start-from (WShape.m1 + WShape.fine / 2 * HVCONTRAST) 0
|
|
line-to (WShape.m1 - WShape.fine / 2 * HVCONTRAST) 0
|
|
line-to WShape.m1 WShape.fine
|
|
|
|
include : dispiro
|
|
widths.rhs WShape.fine
|
|
flat (MIDDLE + WShape.fine / 2 * HVCONTRAST) wheight [heading DOWNWARD]
|
|
#quadcontrols 0 0.1 6 unimportant
|
|
g4 (WShape.m1 + WShape.fine / 2 * HVCONTRAST) 0 [widths.rhs WShape.fine]
|
|
include : dispiro
|
|
widths.lhs WShape.fine
|
|
flat (MIDDLE - WShape.fine / 2 * HVCONTRAST) wheight [heading DOWNWARD]
|
|
#quadcontrols 0 0.1 6 unimportant
|
|
curl (WShape.m2 - WShape.fine / 2 * HVCONTRAST) 0 [widths.lhs WShape.fine]
|
|
|
|
# bottom cap 2
|
|
start-from (WShape.m2 + WShape.fine / 2 * HVCONTRAST) 0
|
|
line-to (WShape.m2 - WShape.fine / 2 * HVCONTRAST) 0
|
|
line-to WShape.m2 WShape.fine
|
|
|
|
include : dispiro
|
|
widths.rhs
|
|
flat RIGHTSB top [heading DOWNWARD]
|
|
curl RIGHTSB (top * 0.75) [heading DOWNWARD]
|
|
quadcontrols 0 0.3 6 unimportant
|
|
g4 (WShape.m2 + WShape.fine / 2 * HVCONTRAST) 0 [widths.rhs (WShape.fine * 0.8)]
|
|
include : AIVSerifs top
|
|
set WShape.fine : adviceBlackness 6
|
|
set WShape.m1 : WIDTH * 0.325
|
|
set WShape.m2 : WIDTH * 0.675
|
|
|
|
sketch # W
|
|
set-width WIDTH
|
|
include capitalMarks
|
|
include : WShape CAP
|
|
save 'W' 'W'
|
|
save 'cyrWe' 0x51C
|
|
|
|
sketch # w
|
|
set-width WIDTH
|
|
include eMarks
|
|
include : WShape XH
|
|
save 'w' 'w'
|
|
save 'cyrwe' 0x51D
|
|
|
|
turned nothing 0x28D 'w' MIDDLE (XH / 2)
|
|
|
|
define [WHooktopShape top] : glyph-construction
|
|
include : WShape top
|
|
this.contours.pop
|
|
if SLAB : begin
|
|
local s : this.contours.pop
|
|
this.contours.pop
|
|
this.contours.push s
|
|
|
|
include : dispiro
|
|
widths.rhs
|
|
straight.down.start RIGHTSB (top - HOOK) [heading DOWNWARD]
|
|
quadcontrols 0 0.3 6 unimportant g2
|
|
g4 (WShape.m2 + WShape.fine / 2 * HVCONTRAST) 0 [widths.rhs (WShape.fine * 0.8)]
|
|
include : VerticalHook (RIGHTSB - HALFSTROKE * HVCONTRAST) (top - HOOK) (HOOKX * 0.65) (-HOOK + HALFSTROKE)
|
|
|
|
sketch # Whooktop
|
|
include capitalMarks
|
|
|
|
include : WHooktopShape CAP
|
|
save 'Whooktop' 0x2C72
|
|
|
|
sketch # whooktop
|
|
include eMarks
|
|
|
|
include : WHooktopShape XH
|
|
|
|
save 'whooktop' 0x2C73
|
|
|
|
sketch # ww
|
|
include : WShape (CAP / 2)
|
|
apply-transform : Upright
|
|
apply-transform : Translate 0 (CAP / 2)
|
|
apply-transform : Italify
|
|
include : WShape (CAP / 2)
|
|
save 'ww' 0x2AC
|
|
|
|
### X and x
|
|
symbol-block 'X'
|
|
sketch # X
|
|
set-width WIDTH
|
|
include capitalMarks
|
|
|
|
include : xStrand SB 0 RIGHTSB CAP 0.1 0.4 0.28
|
|
include : xStrand SB CAP RIGHTSB 0 0.1 0.4 0.28
|
|
include : AIHSerifs CAP
|
|
save 'X' 'X'
|
|
save 'Chi' 0x3A7
|
|
save 'cyrHa' 0x425
|
|
|
|
sketch # x
|
|
include eMarks
|
|
local TURN (XH * 0.1)
|
|
|
|
include : xStrand SB 0 RIGHTSB XH 0.02 0.4 0.14
|
|
include : xStrand SB XH RIGHTSB 0 0.02 0.4 0.14
|
|
include : AIHSerifs XH
|
|
save 'x' 'x'
|
|
save 'cyrha' 0x445
|
|
|
|
sketch # chi
|
|
set-width WIDTH
|
|
include pMarks
|
|
|
|
include : xStrand SB DESCENDER RIGHTSB XH 0.05 0.4 0.11
|
|
include : xStrand SB XH RIGHTSB DESCENDER 0.05 0.4 0.11
|
|
save 'chi' 0x3C7
|
|
save 'latinchi' 0xAB53
|
|
|
|
composite 'cyrHadescender' glyphs.cyrHa [CyrDescender RIGHTSB] [into-unicode 0x4B2]
|
|
composite 'cyrhadescender' glyphs.cyrha [CyrDescender RIGHTSB] [into-unicode 0x4B3]
|
|
|
|
### Y
|
|
symbol-block 'Y'
|
|
define [YShape top bot] : glyph-construction
|
|
local cross : mix [fallback bot 0] top 0.4
|
|
include : halfXStrand SB top MIDDLE cross 0.1 0.4 0.28
|
|
include : halfXStrand RIGHTSB top MIDDLE cross 0.1 0.4 0.28
|
|
tag-contour 'strokeRT'
|
|
include : VBar MIDDLE [fallback bot 0] (cross + HALFSTROKE)
|
|
set-anchor 'overlay' BASE MIDDLE cross
|
|
if SLAB : begin
|
|
include : AIVSerifs top
|
|
include : CenterBottomSerif MIDDLE [fallback bot 0] JUT
|
|
|
|
sketch # Y
|
|
set-width WIDTH
|
|
include capitalMarks
|
|
include : YShape CAP
|
|
save 'Y' 'Y'
|
|
save 'Upsilon' 0x3A5
|
|
save 'cyrUe' 0x4AE
|
|
|
|
sketch # Yhooktop
|
|
include glyphs.Y AS_BASE
|
|
eject-contour 'strokeRT'
|
|
eject-contour 'serifRT'
|
|
local cross (CAP * 0.4)
|
|
include : dispiro
|
|
widths.rhs
|
|
straight.left.start (RIGHTSB + HOOKX / 3) (CAP - STROKE)
|
|
g4 (RIGHTSB - HOOKX / 3) (CAP - HOOK)
|
|
quadcontrols 0.55 0.7 32 unimportant
|
|
g4 (MIDDLE + STROKE / 2 * HVCONTRAST) cross
|
|
end [function : set this.loose true]
|
|
|
|
save 'Yhooktop' 0x1B3
|
|
|
|
sketch # cyrue
|
|
include pMarks
|
|
include : YShape XH DESCENDER
|
|
|
|
save 'cyrue' 0x4AF
|
|
|
|
sketch # smcpY
|
|
include eMarks
|
|
include : YShape XH
|
|
save 'smcpY' 0x28F
|
|
|
|
### y
|
|
symbol-block 'y'
|
|
local px1 0.84
|
|
local py1 : linreg 18 0.8 126 0.76 STROKE
|
|
local px2 0.95
|
|
local py20 0.88
|
|
local py2 : if SLAB [linreg 18 0.97 126 0.85 STROKE] py20
|
|
local pds 0.05
|
|
local pds2 0.01
|
|
local dpy1 : (1 - [linreg (1 - px2) (1 - py2) px1 py1 1]) / (1 - py1)
|
|
local dpy20 : (1 - [linreg (1 - px1) (1 - py1) px2 py20 1]) / (1 - py20)
|
|
local dpy2 : (1 - [linreg (1 - px1) (1 - py1) px2 py2 1]) / (1 - py2)
|
|
local yrstrokel0 : MIDDLE - WIDTH * 0.1
|
|
local yrstrokel : MIDDLE - WIDTH * [if SLAB 0.15 0.1] + [if SLAB HALFSTROKE 0]
|
|
local yrstroker : RIGHTSB - HALFSTROKE * HVCONTRAST
|
|
local yshrink : linreg 18 1 126 0.85 STROKE
|
|
local slabysize : JUT * [linreg 18 0.85 126 1 STROKE]
|
|
local slabyvx : linreg 18 0.7 126 0.5 STROKE
|
|
define [yBaseKnots top bottom] : begin
|
|
local ds : (top - bottom) * pds
|
|
local ds2 : (top - bottom) * pds2 + [if SLAB (slabysize * slabyvx) 0]
|
|
return : list
|
|
flat [mix yrstrokel yrstroker px1] [mix (bottom + ds2) (top - ds) py1]
|
|
curl [mix yrstrokel yrstroker (1 - px2)] [mix (bottom + ds2) (top - ds) (1 - py2)] [widths.center : STROKE * [if SLAB yshrink 1]]
|
|
if SLAB : then : list
|
|
flat (yrstrokel - slabysize) (bottom + HALFSTROKE) [widths.center]
|
|
curl [Math.min (yrstrokel - slabysize - 0.1) (yrstrokel - HALFSTROKE - JUT)] (bottom + HALFSTROKE)
|
|
: else : list
|
|
quadcontrols 1 (1 - dpy2) 16
|
|
flat yrstrokel (bottom + ds2) [heading DOWNWARD]
|
|
curl yrstrokel bottom [heading DOWNWARD]
|
|
|
|
define [SmallYShape top bottom] : glyph-construction
|
|
local ds : (top - bottom) * pds
|
|
local ds2 : (top - bottom) * pds2 + [if SLAB (slabysize * slabyvx) 0]
|
|
include : tagged 'strokeR' : dispiro
|
|
widths.center
|
|
flat yrstroker top [heading DOWNWARD]
|
|
curl yrstroker (top - ds) [heading DOWNWARD]
|
|
quadcontrols 0 dpy1 16
|
|
yBaseKnots top bottom
|
|
end [function : set this.cleanmore true]
|
|
include : dispiro
|
|
widths.center
|
|
flat (WIDTH - yrstroker) top [heading DOWNWARD]
|
|
curl (WIDTH - yrstroker) (top - ds) [heading DOWNWARD]
|
|
quadcontrols 0 dpy1 16
|
|
flat [mix (WIDTH - yrstrokel) (WIDTH - yrstroker) px1] [mix (bottom + ds2) (top - ds) py1]
|
|
curl MIDDLE [mix (bottom + ds2) (top - ds) [linreg (1 - px2) (1 - py2) px1 py1 ((MIDDLE - yrstrokel) / (yrstroker - yrstrokel))]] [widths.center (STROKE * yshrink)]
|
|
end [function : set this.cleanmore true]
|
|
if SLAB : begin
|
|
include : AIVSerifs top
|
|
|
|
sketch # y.upright
|
|
include pMarks
|
|
include : SmallYShape XH DESCENDER
|
|
save 'y.upright'
|
|
|
|
|
|
sketch # y.italic
|
|
if SLAB
|
|
: then
|
|
include pMarks
|
|
include : nShoulder
|
|
left -- (SB + STROKE * HVCONTRAST)
|
|
right -- RIGHTSB
|
|
fine -- SHOULDERFINE
|
|
include : FlipAround MIDDLE (XH / 2)
|
|
include : dispiro
|
|
widths.rhs
|
|
flat RIGHTSB XH [heading DOWNWARD]
|
|
curl RIGHTSB (DESCENDER + SMALLSMOOTHA)
|
|
hookend (DESCENDER + O)
|
|
g4 SB (DESCENDER + SHOOK)
|
|
if SLAB : begin
|
|
include : LeftwardTopSerif SB XH SIDEJUT
|
|
: else
|
|
include glyphs.'y.upright' AS_BASE
|
|
save 'y.italic'
|
|
|
|
italic-variant 'y' 'y'
|
|
alias 'cyru' 0x443 'y'
|
|
|
|
turned nothing 0x28E 'y.upright' MIDDLE (XH / 2) bMarks
|
|
|
|
sketch # yhooktop
|
|
include glyphs.'y.upright' AS_BASE
|
|
eject-contour 'strokeR'
|
|
eject-contour 'serifRT'
|
|
|
|
include : tagged 'strokeR' : dispiro
|
|
widths.center
|
|
straight.left.start ([mix yrstrokel yrstroker px1] + HOOKX) (XH - HALFSTROKE)
|
|
yBaseKnots XH DESCENDER
|
|
end [function : set this.cleanmore true]
|
|
|
|
save 'yhooktop' 0x1B4
|
|
|
|
sketch # cyrU
|
|
include capitalMarks
|
|
include : SmallYShape CAP 0
|
|
|
|
save 'cyrU' 0x423
|
|
|
|
sketch # lambda
|
|
include bMarks
|
|
local top CAP
|
|
local bottom 0
|
|
local ds : (top - bottom) * pds
|
|
local ds2 : (top - bottom) * pds2
|
|
include : tagged 'strokeR' : dispiro
|
|
widths.center
|
|
flat yrstroker bottom [heading UPWARD]
|
|
curl yrstroker (bottom + ds) [heading UPWARD]
|
|
quadcontrols 0 dpy1 16
|
|
flat [mix yrstroker yrstrokel0 (1 - px1)] [mix (top - ds2) (bottom + ds) py1]
|
|
curl [mix yrstroker yrstrokel0 px2] [mix (top - ds2) (bottom + ds) (1 - py20)]
|
|
quadcontrols 1 (1 - dpy20) 16
|
|
flat yrstrokel0 (top - ds2) [heading UPWARD]
|
|
curl yrstrokel0 top [heading UPWARD]
|
|
end [function : set this.cleanmore true]
|
|
|
|
include : dispiro
|
|
widths.center
|
|
flat (WIDTH - yrstroker) bottom [heading UPWARD]
|
|
curl (WIDTH - yrstroker) (bottom + ds) [heading UPWARD]
|
|
quadcontrols 0 dpy1 16
|
|
flat [mix (WIDTH - yrstrokel0) (WIDTH - yrstroker) px1] [mix (top - ds2) (bottom + ds) py1]
|
|
curl MIDDLE [mix (top - ds2) (bottom + ds) [linreg (1 - px2) (1 - py20) px1 py1 ((MIDDLE - yrstrokel0) / (yrstroker - yrstrokel0))]]
|
|
end [function : set this.cleanmore true]
|
|
|
|
save 'lambda' 0x3BB
|
|
|
|
sketch # lambdaslash
|
|
include glyphs.lambda AS_BASE
|
|
include : FlatSlashShape ([tp [Upright] glyphs.l.anchors.above].x) [mix 0 CAP 0.7] (OVERLAYSTROKE / 2)
|
|
save 'lambdaslash' 0x19B
|
|
|
|
### K and k
|
|
symbol-block 'K'
|
|
define [KShape top] : glyph-construction
|
|
local turn (top * 0.99)
|
|
|
|
local attach (top * [if SLAB 0.325 0.375])
|
|
local attach2 [if SLAB [mix SB RIGHTSB 0.48] MIDDLE]
|
|
|
|
local fine : adviceBlackness 3.5
|
|
include : dispiro
|
|
g4.down.start (RIGHTSB) top [widths.heading 0 (STROKE * [if SLAB 1.15 1.05] * (WIDTH * 2 / UPM)) DOWNWARD]
|
|
bezcontrols 0 [if SLAB 0.1 0.2] 0.5 [if SLAB 0.55 0.65] 8
|
|
g4 (SB + STROKE) attach [widths 0 fine]
|
|
include : dispiro
|
|
widths.center
|
|
g4.up.start (RIGHTSB - O - HALFSTROKE * HVCONTRAST) 0 [heading UPWARD]
|
|
quadcontrols 0 [if SLAB 0.125 0.25] 8
|
|
g4 attach2 (top * 0.61) [widths.center fine]
|
|
if SLAB : begin
|
|
include : RightwardTopSerif (RIGHTSB - (STROKE * [if SLAB 1.15 1.05] * (WIDTH * 2 / UPM) / 2 - HALFSTROKE) * HVCONTRAST * [if para.isItalic 1 0] - HALFSTROKE * 0.5 * HVCONTRAST) top (SIDEJUT + HALFSTROKE * 0.5 * HVCONTRAST)
|
|
include : RightwardBottomSerif (RIGHTSB - O * [if para.isItalic 1 0]) 0 SIDEJUT
|
|
|
|
sketch # K
|
|
set-width WIDTH
|
|
include capitalMarks
|
|
include : VBarLeft SB 0 CAP
|
|
include : KShape CAP
|
|
if SLAB : begin
|
|
include : CenterTopSerif (SB + HALFSTROKE * HVCONTRAST) CAP JUT
|
|
include : CenterBottomSerif (SB + HALFSTROKE * HVCONTRAST) 0 JUT
|
|
save 'K' 'K'
|
|
save 'Kappa' 0x39A
|
|
save 'cyrKa' 0x41A
|
|
|
|
composite nothing glyphs.cyrKa [CyrDescender (RIGHTSB - O)] [into-unicode 0x49A]
|
|
|
|
sketch # k
|
|
set-width WIDTH
|
|
include bMarks
|
|
include : VBarLeft SB 0 CAP
|
|
include : KShape XH
|
|
if SLAB : begin
|
|
include : LeftwardTopSerif SB CAP SIDEJUT
|
|
if (!para.isItalic) : begin
|
|
include : CenterBottomSerif (SB + HALFSTROKE * HVCONTRAST) 0 JUT
|
|
tag-contour 'serifLB'
|
|
|
|
save 'k' 'k'
|
|
|
|
sketch # kappa
|
|
set-width WIDTH
|
|
include eMarks
|
|
include : VBarLeft SB 0 XH
|
|
include : KShape XH
|
|
if SLAB : begin
|
|
include : LeftwardTopSerif SB XH SIDEJUT
|
|
|
|
save 'kappa' 0x3BA
|
|
|
|
sketch # cyrka
|
|
set-width WIDTH
|
|
include eMarks
|
|
include : VBarLeft SB 0 XH
|
|
include : KShape XH
|
|
if SLAB : begin
|
|
include : CenterBottomSerif (SB + HALFSTROKE * HVCONTRAST) 0 JUT
|
|
include : CenterTopSerif (SB + HALFSTROKE * HVCONTRAST) XH JUT
|
|
save 'cyrka' 0x43A
|
|
save 'latinkappa' 0x138
|
|
composite nothing glyphs.cyrka [CyrDescender (RIGHTSB - O)] [into-unicode 0x49B]
|
|
|
|
|
|
sketch # Khooktop
|
|
include capitalMarks
|
|
include : KShape CAP
|
|
include : VBarLeft SB 0 (CAP - HOOK - HALFSTROKE)
|
|
include : VerticalHook (SB + HALFSTROKE * HVCONTRAST) (CAP - HOOK - HALFSTROKE) HOOKX (-HOOK)
|
|
|
|
save 'Khooktop' 0x198
|
|
|
|
sketch # khooktop
|
|
include bMarks
|
|
include : KShape XH
|
|
include : VBarLeft SB 0 (CAP - HOOK - HALFSTROKE)
|
|
include : VerticalHook (SB + HALFSTROKE * HVCONTRAST) (CAP - HOOK - HALFSTROKE) HOOKX (-HOOK)
|
|
|
|
save 'khooktop' 0x199
|
|
turned nothing 0xA7B0 'K' MIDDLE (CAP / 2)
|
|
turned nothing 0x29E 'k' MIDDLE (XH / 2) pMarks
|
|
|
|
|
|
### B
|
|
symbol-block 'B'
|
|
define [BShape top] : glyph-construction
|
|
local bowl : top * 0.52 + HALFSTROKE
|
|
local barleft SB
|
|
local curvleft : RIGHTSB - SB * 0.5 - (top - (bowl - STROKE)) * 0.45
|
|
local curvleftTop : Math.min curvleft (RIGHTSB - SB * 0.5 - OX - STROKE * 1.375)
|
|
local fine : STROKE * CTHIN
|
|
|
|
include : dispiro
|
|
widths.rhs
|
|
flat (barleft - O) top [heading RIGHTWARD]
|
|
curl (curvleftTop - CORRECTION_OMIDS) top
|
|
archv
|
|
g4 (RIGHTSB - SB * 0.5 - OX) [mix top (bowl - STROKE) (SMOOTHB / (SMOOTHA + SMOOTHB))]
|
|
arcvh
|
|
flat (curvleftTop + CORRECTION_OMIDS) (bowl - fine) [widths.rhs fine]
|
|
curl (barleft - O) (bowl - fine) [heading LEFTWARD]
|
|
include : dispiro
|
|
widths.rhs fine
|
|
flat (barleft - O) (bowl - STROKE + fine) [heading RIGHTWARD]
|
|
curl (curvleft - CORRECTION_OMIDS) (bowl - STROKE + fine)
|
|
archv
|
|
g4 (RIGHTSB - OX) [mix bowl 0 (SMOOTHB / (SMOOTHA + SMOOTHB))] [widths.rhs STROKE]
|
|
arcvh
|
|
flat (curvleft + CORRECTION_OMIDS) 0
|
|
curl (barleft - O) 0 [heading LEFTWARD]
|
|
include : VBarLeft barleft 0 top
|
|
if SLAB : begin
|
|
include : LeftwardTopSerif barleft top SIDEJUT
|
|
tag-contour 'serifLT'
|
|
include : LeftwardBottomSerif barleft 0 SIDEJUT
|
|
tag-contour 'serifLB'
|
|
|
|
sketch # B
|
|
set-width WIDTH
|
|
include capitalMarks
|
|
include : BShape CAP
|
|
save 'B' 'B'
|
|
save 'Beta' 0x392
|
|
save 'cyrVe' 0x412
|
|
|
|
sketch # Bhookleft
|
|
include glyphs.B AS_BASE
|
|
eject-contour "serifLT"
|
|
include : LeftHook SB CAP
|
|
|
|
save 'Bhookleft' 0x181
|
|
|
|
define [ItalicCyrveShape top] : glyph-construction
|
|
local mid : mix RIGHTSB SB 0.65
|
|
local midy : top * BARPOS
|
|
local smb : top - [mix (midy + HALFSTROKE) (top - O - STROKE) (SMOOTHA / (SMOOTHA + SMOOTHB))] + TANSLANT * HVCONTRAST * STROKE
|
|
local sma : [mix (STROKE + O) (midy - HALFSTROKE) (SMOOTHA / (SMOOTHA + SMOOTHB))] - TANSLANT * HVCONTRAST * STROKE
|
|
include : dispiro
|
|
widths.lhs
|
|
flat mid (midy - HALFSTROKE) [heading RIGHTWARD]
|
|
curl MIDDLE (midy - HALFSTROKE)
|
|
archv
|
|
g4 (RIGHTSB + O) (top - smb)
|
|
arcvh
|
|
g4 (MIDDLE - CORRECTION_OMIDS) (top - O)
|
|
archv
|
|
flat.ai (SB + O) (top - SMALLSMOOTHA)
|
|
curl.ai (SB + O) SMALLSMOOTHB
|
|
arcvh
|
|
g4 (MIDDLE + CORRECTION_OMIDS) O
|
|
archv
|
|
g4 (RIGHTSB - O) (sma)
|
|
arcvh
|
|
flat MIDDLE (midy + HALFSTROKE)
|
|
curl mid (midy + HALFSTROKE) [heading LEFTWARD]
|
|
sketch # cyrve.italic
|
|
include eMarks
|
|
include : ItalicCyrveShape XH
|
|
save 'cyrve.italic'
|
|
save 'closeturnepsilon' 0x25E
|
|
sketch # cyrve.BGR
|
|
include eMarks
|
|
include : ItalicCyrveShape CAP
|
|
save 'cyrve.BGR'
|
|
sketch # cyrve.upright
|
|
include eMarks
|
|
include : BShape XH
|
|
save 'cyrve.upright'
|
|
save 'smcpB' 0x299
|
|
italic-variant 'cyrve' 0x432
|
|
|
|
sketch # Bbar
|
|
|
|
include glyphs.B AS_BASE
|
|
include : HOverlayBar [mix SB 0 0.7] [mix SB RIGHTSB 0.5] [mix 0 CAP 0.3] [Math.min ((CAP - STROKE * 3) / 4) OVERLAYSTROKE]
|
|
save 'Bbar' 0x243
|
|
|
|
sketch # beta
|
|
include ifMarks
|
|
local ymiddle : [mix 0 CAP 0.55] - HALFSTROKE
|
|
local fine : STROKE * CTHIN
|
|
include : dispiro
|
|
widths.rhs
|
|
flat SB DESCENDER [heading UPWARD]
|
|
curl SB (CAP - SMALLSMOOTHA)
|
|
arcvh
|
|
g4 ([mix SB (RIGHTSB - OX + O * 3) 0.5] - CORRECTION_OMIDS) CAPO
|
|
archv
|
|
g4 (RIGHTSB - OX + O * 3) [mix CAP ymiddle 0.5]
|
|
arcvh
|
|
flat [mix SB (RIGHTSB - OX + O * 3) 0.5] (ymiddle + STROKE - fine) [widths.rhs fine]
|
|
curl [mix SB RIGHTSB 0.3] (ymiddle + STROKE - fine)
|
|
include : dispiro
|
|
widths.rhs fine
|
|
flat ([mix SB RIGHTSB 0.3] - (2 * fine - STROKE) * TANSLANT) (ymiddle + fine)
|
|
curl (RIGHTSB - ymiddle / 2 - HALFSTROKE) (ymiddle + fine)
|
|
archv
|
|
g4 (RIGHTSB - OX) [mix 0 (ymiddle + STROKE) 0.5] [widths.rhs]
|
|
arcvh
|
|
flat (RIGHTSB - ymiddle / 2 - HALFSTROKE) 0
|
|
curl (SB + HALFSTROKE) 0 [heading LEFTWARD]
|
|
save 'beta' 0x3B2
|
|
|
|
### b
|
|
symbol-block 'b'
|
|
sketch # b
|
|
set-width WIDTH
|
|
include bMarks
|
|
|
|
include : OBarLeftShape
|
|
include : VBarLeft SB 0 CAP
|
|
if SLAB : begin
|
|
include : LeftwardTopSerif SB CAP SIDEJUT
|
|
tag-contour 'serifLT'
|
|
include : LeftwardBottomSerif SB 0 SIDEJUT
|
|
tag-contour 'serifLB'
|
|
|
|
save 'b' 'b'
|
|
|
|
sketch # bhooktop
|
|
include bMarks
|
|
include : OBarLeftShape
|
|
include : HooktopLeftBar
|
|
if SLAB : begin
|
|
include : LeftwardBottomSerif SB 0 SIDEJUT
|
|
tag-contour 'serifLB'
|
|
|
|
|
|
save 'bhooktop' 0x253
|
|
|
|
sketch # bbar
|
|
|
|
include glyphs.b AS_BASE
|
|
include : HOverlayBar [mix SB 0 0.7] [mix SB RIGHTSB 0.5] [mix XH CAP 0.45]
|
|
|
|
save 'bbar' 0x180
|
|
|
|
sketch # bdot
|
|
include glyphs.dotAbove
|
|
apply-transform : Translate (WIDTH + HALFSTROKE) 0
|
|
include glyphs.b AS_BASE
|
|
save 'bdot' 0x1E03
|
|
|
|
sketch # latinbe
|
|
include glyphs.b AS_BASE
|
|
include : HBarTop (SB - O) [mix SB RIGHTSB 0.9] CAP
|
|
if SLAB : begin
|
|
include : DownwardRightSerif [mix SB RIGHTSB 0.9] CAP VJUT
|
|
save 'latinbe' 0x183
|
|
|
|
sketch # zhuangtonesix
|
|
include glyphs.b AS_BASE
|
|
eject-contour 'serifLT'
|
|
local s : Math.max (XH * 0.1) STROKE
|
|
start-from (SB - O) CAP
|
|
line-to SB CAP
|
|
line-to (SB - s) (CAP - s)
|
|
line-to SB (CAP - s * 2)
|
|
line-to (SB - O) (CAP - s * 2)
|
|
reverse-last
|
|
save 'zhuangtonesix' 0x185
|
|
### D
|
|
symbol-block 'D'
|
|
sketch # D
|
|
set-width WIDTH
|
|
include capitalMarks
|
|
|
|
local dsmooth : Math.min (CAP * 0.499) (SMOOTH * 1.35)
|
|
local bsmooth : Math.min ((WIDTH - SB * 2) * 0.75) (SMOOTH * 1.1)
|
|
|
|
local barleft SB
|
|
|
|
include : VBarLeft barleft 0 CAP
|
|
|
|
include : dispiro
|
|
widths.rhs
|
|
flat (barleft - O) CAP [heading RIGHTWARD]
|
|
curl (RIGHTSB - bsmooth) CAP
|
|
archv
|
|
flat (RIGHTSB - OX) (CAP - dsmooth - (SMOOTHB - SMOOTH))
|
|
curl (RIGHTSB - OX) (dsmooth + (SMOOTHA - SMOOTH))
|
|
arcvh
|
|
flat (RIGHTSB - bsmooth) 0
|
|
curl (barleft - O) 0 [heading LEFTWARD]
|
|
if SLAB : begin
|
|
include : LeftwardTopSerif barleft CAP SIDEJUT
|
|
tag-contour 'serifLT'
|
|
include : LeftwardBottomSerif barleft 0 SIDEJUT
|
|
tag-contour 'serifLB'
|
|
save 'D' 'D'
|
|
|
|
sketch # arficanD
|
|
include glyphs.D AS_BASE
|
|
include : HOverlayBar (SB * 0.3) [mix (SB + STROKE) (RIGHTSB - STROKE) 0.55] (CAP * OVERLAYPOS)
|
|
save 'Eth' 0xD0
|
|
save 'Dcroat' 0x110
|
|
save 'arficanD' 0x189
|
|
|
|
sketch # Dhookleft
|
|
include glyphs.D AS_BASE
|
|
eject-contour "serifLT"
|
|
include : LeftHook SB CAP
|
|
save 'Dhookleft' 0x18A
|
|
|
|
### d
|
|
symbol-block 'd'
|
|
sketch # d
|
|
set-width WIDTH
|
|
include bMarks
|
|
|
|
include : OBarRightShape
|
|
include : VBarRight RIGHTSB 0 CAP
|
|
if SLAB : begin
|
|
include : RightwardBottomSerif RIGHTSB 0 SIDEJUT
|
|
tag-contour 'serifRB'
|
|
include : LeftwardTopSerif (RIGHTSB - STROKE * HVCONTRAST) CAP SIDEJUT
|
|
|
|
save 'd' 'd'
|
|
|
|
sketch # dcroat
|
|
include glyphs.d AS_BASE
|
|
include : HBar [mix (SB + STROKE) (RIGHTSB - STROKE) 0.5] [mix RIGHTSB WIDTH 0.7] [mix XH CAP 0.45] OVERLAYSTROKE
|
|
|
|
save 'dcroat' 0x111
|
|
|
|
sketch # dcaron
|
|
include glyphs.commaAbove
|
|
apply-transform : Translate (WIDTH + (RIGHTSB - SB) / 2 + markExtend / 2) 0
|
|
local f : Widen {'d'} 0.95 1
|
|
include f.d
|
|
include bMarks
|
|
|
|
save 'dcaron' 0x10F
|
|
|
|
sketch # dcurlytail
|
|
local fine : adviceBlackness 4
|
|
local rinner : clamp (WIDTH * 0.065) (XH * 0.05) (fine * 0.35)
|
|
local wide STROKE
|
|
local m1 : Math.min RIGHTSB (WIDTH - rinner * 2 - fine - OX)
|
|
local x2 : mix SB m1 0.5
|
|
local y2 : 0 - fine - rinner * 1.25
|
|
include eMarks
|
|
include : OBarRightShape XH m1
|
|
include : dispiro
|
|
widths.rhs
|
|
flat m1 CAP [heading DOWNWARD]
|
|
curl m1 (rinner * 2 + fine)
|
|
CurlyTail fine rinner m1 0 (m1 + rinner * 2 + fine) x2 y2
|
|
if SLAB : begin
|
|
include : LeftwardTopSerif (m1 - STROKE * HVCONTRAST) CAP SIDEJUT
|
|
|
|
save 'dcurlytail' 0x221
|
|
|
|
sketch # dhooktop
|
|
include bMarks
|
|
include glyphs.'a.singlestorey'
|
|
include : VerticalHook (RIGHTSB - HALFSTROKE * HVCONTRAST) XH HOOKX (-HOOK)
|
|
|
|
save 'dhooktop' 0x257
|
|
|
|
sketch # ddot
|
|
include glyphs.dotAbove
|
|
apply-transform : Translate (WIDTH - HALFSTROKE) 0
|
|
include glyphs.d AS_BASE
|
|
save 'ddot' 0x1E0B
|
|
|
|
sketch # latinde
|
|
include glyphs.d AS_BASE
|
|
include : HBarTop [mix RIGHTSB SB 0.9] (RIGHTSB + O) CAP
|
|
if SLAB : begin
|
|
include : DownwardLeftSerif [mix RIGHTSB SB 0.9] CAP VJUT
|
|
save 'latinde' 0x18C
|
|
|
|
### P
|
|
define {PShape} : symbol-block 'P'
|
|
define [PShape top _mul bp] : glyph-construction
|
|
local mul : fallback _mul 1.25
|
|
local bowlTop (top * 1)
|
|
local bowlBottom ((top - STROKE) * [fallback bp PBARPOS] - HALFSTROKE)
|
|
|
|
local turn : mix bowlTop bowlBottom (SMOOTHB / (SMOOTHA + SMOOTHB))
|
|
local turnRadius : (bowlTop - bowlBottom) * 0.45
|
|
include : dispiro
|
|
widths.rhs
|
|
flat (SB * mul - O) bowlTop [heading RIGHTWARD]
|
|
curl (RIGHTSB - turnRadius - CORRECTION_OMIDS) bowlTop
|
|
archv
|
|
g4 (RIGHTSB - OX) turn
|
|
arcvh
|
|
flat (RIGHTSB - turnRadius + CORRECTION_OMIDS) bowlBottom
|
|
curl (SB * mul - O) bowlBottom [heading LEFTWARD]
|
|
include : VBarLeft (SB * mul) 0 top
|
|
tag-contour 'strokeL'
|
|
if SLAB : begin
|
|
include : LeftwardTopSerif (SB * mul) top SIDEJUT
|
|
tag-contour 'serifLT'
|
|
include : CenterBottomSerif (SB * mul + HALFSTROKE * HVCONTRAST) 0 JUT
|
|
|
|
sketch # P
|
|
set-width WIDTH
|
|
include capitalMarks
|
|
include : PShape CAP
|
|
save 'P' 'P'
|
|
save 'Rho' 0x3A1
|
|
save 'cyrEr' 0x420
|
|
|
|
sketch # Phookleft
|
|
include glyphs.P AS_BASE
|
|
eject-contour "serifLT"
|
|
include : LeftHook (SB * 1.25) CAP
|
|
|
|
save 'Phookleft' 0x1A4
|
|
list PShape
|
|
|
|
### p
|
|
symbol-block 'p'
|
|
sketch # p
|
|
set-width WIDTH
|
|
include pMarks
|
|
|
|
include : tagged 'bowl' : OBarLeftShape
|
|
include : VBarLeft SB DESCENDER XH
|
|
if SLAB : begin
|
|
include : LeftwardTopSerif SB XH SIDEJUT
|
|
tag-contour 'serifLT'
|
|
include : CenterBottomSerif (SB + HALFSTROKE * HVCONTRAST) DESCENDER JUT
|
|
tag-contour 'serifLB'
|
|
save 'p' 'p'
|
|
save 'cyrer' 0x440
|
|
|
|
sketch # phooktop
|
|
include ifMarks
|
|
include : OBarLeftShape
|
|
include : HooktopLeftBar nothing DESCENDER
|
|
if SLAB : begin
|
|
include : CenterBottomSerif (SB + HALFSTROKE * HVCONTRAST) DESCENDER JUT
|
|
tag-contour 'serifLB'
|
|
|
|
save 'phooktop' 0x1A5
|
|
### rho
|
|
sketch # rho
|
|
include pMarks
|
|
include : OShape XH 0 (SB - OX + O) RIGHTSB
|
|
include : VBar (SB + HALFSTROKE * HVCONTRAST + O) DESCENDER SMALLSMOOTHB
|
|
save 'rho' 0x3C1
|
|
|
|
### R and CyrYa
|
|
symbol-block 'R and CyrYa'
|
|
define [RShape top] : glyph-construction
|
|
local m : if SLAB (0.5 + HALFSTROKE / CAP) PBARPOS
|
|
include : PShape top 1 m
|
|
local right (RIGHTSB - O - [if SLAB (JUT / 8) 0])
|
|
include : dispiro
|
|
widths.center
|
|
g4.up.start (right - HALFSTROKE * HVCONTRAST) 0 [heading UPWARD]
|
|
quadcontrols 0 [if SLAB 0.3 0.4] 8
|
|
g4 MIDDLE ((top - STROKE) * m)
|
|
if SLAB : begin
|
|
include : RightwardBottomSerif (RIGHTSB - JUT / 8) 0 (SIDEJUT + JUT / 8)
|
|
|
|
sketch # R
|
|
set-width WIDTH
|
|
include capitalMarks
|
|
include : RShape CAP
|
|
set-anchor 'overlay' BASE (SB + STROKE * HVCONTRAST) (CAP * PBARPOS - HALFSTROKE)
|
|
save 'R' 'R'
|
|
eject-contour 'strokeL'
|
|
save 'Rrotunda' 0xA75A
|
|
|
|
sketch # smcpR
|
|
include eMarks
|
|
include : RShape XH
|
|
save 'smcpR' 0x280
|
|
eject-contour 'strokeL'
|
|
save 'rrotunda' 0xA75B
|
|
|
|
sketch # Yr
|
|
include ifMarks
|
|
local top : CAP * 0.85
|
|
local bp 0.45
|
|
include : PShape top 1 bp
|
|
include : VBarLeft SB (top - 1) CAP
|
|
|
|
local TURN (XH * 0.1)
|
|
local right (RIGHTSB - O)
|
|
include : dispiro
|
|
widths.center
|
|
g4.up.start (right - HALFSTROKE) DESCENDER [heading UPWARD]
|
|
quadcontrols 0 0.4 8
|
|
g4 MIDDLE ((top - STROKE) * bp)
|
|
|
|
save 'Yr' 0x1A6
|
|
define [CyrYaShape top] : glyph-construction
|
|
local bowlTop (top * 1)
|
|
local m : if SLAB (0.5 + HALFSTROKE / CAP) PBARPOS
|
|
local bowlBottom ((top - STROKE) * m - HALFSTROKE)
|
|
local turn : mix bowlTop bowlBottom (SMOOTHA / (SMOOTHA + SMOOTHB))
|
|
local turnRadius : (bowlTop - bowlBottom) * 0.45
|
|
local barright : WIDTH - SB * 1.25
|
|
include : dispiro
|
|
widths.lhs
|
|
flat (barright - HALFSTROKE * 0.1) bowlTop [heading LEFTWARD]
|
|
curl (SB + turnRadius - CORRECTION_OMIDS) bowlTop
|
|
archv
|
|
g4 (SB + O) turn
|
|
arcvh
|
|
flat (SB + turnRadius + CORRECTION_OMIDS) bowlBottom
|
|
curl (barright - HALFSTROKE * 0.1) bowlBottom [heading RIGHTWARD]
|
|
include : VBarRight barright 0 top
|
|
local left (SB + O + [if SLAB (JUT / 8) 0])
|
|
include : dispiro
|
|
widths.center
|
|
g4.up.start (left + HALFSTROKE * HVCONTRAST) 0 [heading UPWARD]
|
|
quadcontrols 0 [if SLAB 0.3 0.4] 8
|
|
g4 MIDDLE ((top - STROKE) * m)
|
|
|
|
if SLAB : begin
|
|
include : RightwardTopSerif barright top SIDEJUT
|
|
include : CenterBottomSerif (barright - HALFSTROKE * HVCONTRAST) 0 JUT
|
|
include : LeftwardBottomSerif (SB + JUT / 8) 0 (SIDEJUT + JUT / 8)
|
|
|
|
sketch # cyrYa
|
|
include capitalMarks
|
|
include : CyrYaShape CAP
|
|
|
|
save 'cyrYa' 0x42F
|
|
|
|
sketch # cyrya
|
|
include eMarks
|
|
include : CyrYaShape XH
|
|
|
|
save 'cyrya' 0x44F
|
|
turned 'invsmcpR' 0x281 'cyrya' MIDDLE (XH / 2)
|
|
|
|
### r
|
|
symbol-block 'r'
|
|
local rbar : SB + RBALANCE + STROKE * HVCONTRAST
|
|
local [rBottomSerif y] : tagged 'serifLB' : CenterBottomSerif (rbar - HALFSTROKE * HVCONTRAST + RBALANCE * 0.35) y (JUT + RBALANCE * 0.65)
|
|
local [rTopSerif y] : tagged 'serifLT' : LeftwardTopSerif (rbar - STROKE * HVCONTRAST) y (SIDEJUT + RBALANCE * 0.3)
|
|
|
|
sketch # r
|
|
set-width WIDTH
|
|
include eMarks
|
|
|
|
local fine : SHOULDERFINE * CTHIN
|
|
local rhookx (RIGHTSB + RBALANCE2 - OXE)
|
|
local mixp : 0.54 + 2 * TANSLANT * STROKE / WIDTH
|
|
local mixpin : 0.65 + TANSLANT * [linreg 72 0.1 108 0.5 STROKE]
|
|
local rmiddle : mix (rbar - fine) rhookx mixp
|
|
local rmiddlein : [mix rbar (rhookx - STROKE * HVCONTRAST * 1.05) mixpin] - CORRECTION_OMIDS
|
|
local skew : Math.max 0 : (rmiddle - rmiddlein) / STROKE - TANSLANT * [linreg 72 0.25 108 0.75 STROKE]
|
|
include : dispiro
|
|
widths.lhs
|
|
g4 rhookx (XH - RHOOK) [heading {.y [linreg 18 (-0.45) 126 (-0.5) STROKE] .x (-1.04)}]
|
|
alsothru (0.37 - TANSLANT * 0.1) 0.72
|
|
g4.left.mid (rmiddle - CORRECTION_OMIDS * [linreg 72 0.75 108 1 STROKE]) XO [widths.heading STROKE 0 {.y (-1) .x (-skew)}]
|
|
#alsothru 0.75 [linreg 18 0.25 126 0.23 STROKE]
|
|
archv
|
|
straight.down.end (rbar - fine * HVCONTRAST) (XH * 0.53 + (SMALLSMOOTH - SMALLSMOOTHA)) [widths.heading fine 0 DOWNWARD]
|
|
include : VBarRight rbar 0 XH
|
|
set-anchor 'overlay' BASE (rbar - STROKE * 0.25) (XH * 0.5)
|
|
|
|
if SLAB : begin
|
|
include : rBottomSerif 0
|
|
include : rTopSerif XH
|
|
save 'r' 'r'
|
|
turned nothing 0x279 'r' MIDDLE (XH / 2) [anchorDeriv eMarks {.anchors {.bottomright {.type BASE .x RIGHTSB - RBALANCE .y 0}}}]
|
|
|
|
sketch # rlongleg
|
|
include pMarks
|
|
include glyphs.r false
|
|
eject-contour 'serifLB'
|
|
include : VBarRight rbar DESCENDER 0
|
|
if SLAB : include : rBottomSerif DESCENDER
|
|
save 'rlongleg' 0x27C
|
|
turned nothing 0x27A 'rlongleg' MIDDLE (XH / 2) [anchorDeriv bMarks {.anchors {.bottomright {.type BASE .x RIGHTSB - RBALANCE .y 0}}}]
|
|
|
|
sketch # rrtail
|
|
include pMarks
|
|
include glyphs.r false
|
|
eject-contour 'serifLB'
|
|
include : create-glyph : glyph-construction
|
|
include glyphs.rtailBR
|
|
apply-transform : Upright
|
|
apply-transform : Translate rbar 0
|
|
apply-transform : Italify
|
|
save 'rrtail' 0x27D
|
|
|
|
sketch # turnrrtail
|
|
include pMarks
|
|
include glyphs.r false
|
|
eject-contour 'serifLT'
|
|
include : FlipAround MIDDLE (XH / 2)
|
|
include : create-glyph : glyph-construction
|
|
include glyphs.rtailBR
|
|
apply-transform : Upright
|
|
apply-transform : Translate (RIGHTSB - RBALANCE) 0
|
|
apply-transform : Italify
|
|
|
|
save 'turnrrtail' 0x27B
|
|
|
|
sketch # rflap
|
|
include eMarks
|
|
local rhookx (RIGHTSB + RBALANCE2 - OXE)
|
|
local rmiddle : [mix rbar (rhookx - HALFSTROKE) 0.5] - CORRECTION_OMIDS
|
|
|
|
include : dispiro
|
|
widths.lhs
|
|
g4 rhookx (XH - RHOOK)
|
|
hookstart XO
|
|
flat (rbar - STROKE * HVCONTRAST) (XH - SMALLSMOOTHA)
|
|
curl (rbar - STROKE * HVCONTRAST) 0 [heading DOWNWARD]
|
|
if SLAB : include : rBottomSerif 0
|
|
|
|
save 'rflap' 0x27E
|
|
turned nothing 0x2C79 'rrtail' MIDDLE (XH / 2)
|
|
|
|
### C and c, also cyre
|
|
define {CShape} : symbol-block 'C'
|
|
define [CShape top bot] : glyph-construction
|
|
include : dispiro
|
|
widths.lhs
|
|
g4 RIGHTSB (top - HOOK)
|
|
hookstart (top - O)
|
|
flat (SB + OX) (top - SMOOTHA)
|
|
curl (SB + OX) (bot + SMOOTHB)
|
|
hookend (bot + O)
|
|
g4 RIGHTSB (bot + HOOK)
|
|
|
|
sketch # C
|
|
set-width WIDTH
|
|
include capitalMarks
|
|
include : CShape CAP 0
|
|
save 'C' 'C'
|
|
save 'cyrEs' 0x421
|
|
save 'lunateSigma' 0x3F9
|
|
|
|
sketch # c
|
|
set-width WIDTH
|
|
include eMarks
|
|
|
|
include : dispiro
|
|
widths.lhs
|
|
g4 RIGHTSB (XH - HOOK)
|
|
hookstart XO
|
|
flat.ai (SB + OX) (XH - SMALLSMOOTHA)
|
|
curl.ai (SB + OX) (0 + SMALLSMOOTHB)
|
|
hookend O
|
|
g4 RIGHTSB HOOK
|
|
save 'c' 'c'
|
|
save 'cyres' 0x441
|
|
save 'lunatesigma' 0x3F2
|
|
|
|
turned nothing 0x186 'C' MIDDLE (CAP / 2)
|
|
turned nothing 0x254 'c' MIDDLE (XH / 2)
|
|
|
|
sketch # strenchedC
|
|
set-width WIDTH
|
|
include pMarks
|
|
include : CShape XH DESCENDER
|
|
|
|
save 'strenchedC' 0x297
|
|
|
|
sketch # Chooktop
|
|
include glyphs.C AS_BASE
|
|
include : VBarRight (RIGHTSB - OXHOOK) (CAP - HOOK) CAP
|
|
include : VerticalHook (RIGHTSB - HALFSTROKE * HVCONTRAST - OXHOOK) CAP HOOKX (-HOOK)
|
|
|
|
save 'Chooktop' 0x187
|
|
|
|
sketch # chooktop
|
|
include glyphs.c AS_BASE
|
|
include : VBarRight (RIGHTSB - OXHOOK) (XH - HOOK) XH
|
|
include : VerticalHook (RIGHTSB - HALFSTROKE * HVCONTRAST - OXHOOK) XH HOOKX (-HOOK)
|
|
|
|
save 'chooktop' 0x188
|
|
|
|
sketch # Cbar
|
|
include glyphs.C AS_BASE
|
|
include : HOverlayBar (SB * 0.3) [mix (SB + STROKE) (RIGHTSB - STROKE) 0.55] (CAP * OVERLAYPOS)
|
|
|
|
save 'Cbar' 0xA792
|
|
|
|
sketch # cbar
|
|
include glyphs.c AS_BASE
|
|
include : HOverlayBar (SB * 0.3) [mix (SB + STROKE) (RIGHTSB - STROKE) 0.55] (XH * OVERLAYPOS)
|
|
|
|
save 'cbar' 0xA793
|
|
|
|
sketch # ccurlytail
|
|
include eMarks
|
|
local fine : adviceBlackness 3
|
|
local rinner : ((XH * 0.45) - fine * 1.5) / 2
|
|
local m1 : SB + O + STROKE * HVCONTRAST
|
|
local x2 : SB + HALFSTROKE * 0.6
|
|
local y2 : -XH * 0.05
|
|
include : dispiro
|
|
widths.lhs
|
|
g4 RIGHTSB (XH - HOOK)
|
|
hookstart XH
|
|
flat.ai (SB + OX) (XH - SMALLSMOOTHA)
|
|
curl.ai (SB + OX) SMALLSMOOTHB
|
|
arcvh
|
|
CurlyTail fine rinner m1 0 RIGHTSB x2 y2 [linreg 500 (0.5) 375 (-0.25) WIDTH] nothing [linreg 500 (0) 375 (1) WIDTH]
|
|
|
|
save 'ccurlytail' 0x255
|
|
|
|
sketch # cyrE
|
|
include capitalMarks
|
|
include glyphs.C
|
|
include : FlipAround MIDDLE (CAP / 2)
|
|
include : HBar [mix SB RIGHTSB 0.25] RIGHTSB (CAP / 2)
|
|
|
|
save 'cyrE' 0x42D
|
|
|
|
sketch # cyre
|
|
include eMarks
|
|
include glyphs.c
|
|
include : FlipAround MIDDLE (XH / 2)
|
|
include : HBar [mix SB RIGHTSB 0.25] RIGHTSB (XH / 2)
|
|
|
|
save 'cyre' 0x44D
|
|
|
|
sketch # cyrYe
|
|
include capitalMarks
|
|
include glyphs.C
|
|
include : HBar SB [mix RIGHTSB SB 0.25] (CAP / 2)
|
|
|
|
save 'cyrYe' 0x404
|
|
|
|
sketch # cyrye
|
|
include eMarks
|
|
include glyphs.c
|
|
include : HBar SB [mix RIGHTSB SB 0.25] (XH / 2)
|
|
|
|
save 'cyrye' 0x454
|
|
|
|
sketch # sigma
|
|
include eMarks
|
|
start-from (RIGHTSB + 0.25 * SB) XH
|
|
line-to (RIGHTSB + 0.25 * SB) (XH - STROKE)
|
|
line-to MIDDLE (XH - STROKE - O * 1.5)
|
|
line-to MIDDLE (XH - O)
|
|
include : dispiro
|
|
widths.lhs
|
|
flat (MIDDLE + 1) (XH - O)
|
|
curl MIDDLE (XH - O)
|
|
archv
|
|
flat.ai (SB + OX) (XH - SMALLSMOOTHA)
|
|
curl.ai (SB + OX) SMALLSMOOTHB
|
|
arcvh
|
|
g4 (MIDDLE + CORRECTION_OMIDS) O
|
|
archv
|
|
flat.ai (RIGHTSB - OX * 0.5) SMALLSMOOTHA
|
|
curl.ai (RIGHTSB - OX * 0.5) (XH - SMALLSMOOTHB)
|
|
arcvh
|
|
flat MIDDLE (XH - HALFSTROKE - O) [widths HALFSTROKE 0]
|
|
curl (MIDDLE - 1) (XH - HALFSTROKE - O)
|
|
save 'sigma' 0x3C3
|
|
|
|
sketch # sigmafinal
|
|
include pMarks
|
|
include : dispiro
|
|
widths.lhs
|
|
g4 RIGHTSB (XH - HOOK)
|
|
hookstart XH
|
|
flat.ai (SB + OX) (XH - SMALLSMOOTHA)
|
|
curl.ai (SB + OX) SMALLSMOOTHB
|
|
arcvh
|
|
g4 (MIDDLE + CORRECTION_OMIDS) 0
|
|
alsothru 0.5 0.1353
|
|
g4.down.mid (RIGHTSB - STROKE * HVCONTRAST + OX) [mix DESCENDER STROKE [linreg 18 0.5 126 0.49 STROKE]] [heading DOWNWARD]
|
|
arcvh
|
|
flat (RIGHTSB - HOOKX + OX) (DESCENDER + STROKE) [heading LEFTWARD]
|
|
curl [Math.min (RIGHTSB - STROKE * HVCONTRAST * 1.5) (RIGHTSB - HOOKX + OX - 1)] (DESCENDER + STROKE) [heading LEFTWARD]
|
|
save 'sigmafinal' 0x3C2
|
|
list CShape
|
|
|
|
### G
|
|
symbol-block 'G'
|
|
define [GShape top sma smb] : glyph-construction
|
|
local ybar : top * 0.52 + STROKE * 0.25
|
|
include : dispiro
|
|
widths.lhs
|
|
g4 RIGHTSB (top - HOOK)
|
|
hookstart (top - O)
|
|
flat (SB + OX) (top - sma)
|
|
curl (SB + OX) smb
|
|
arcvh
|
|
g4 (MIDDLE + CORRECTION_OMIDS) O
|
|
archv
|
|
flat RIGHTSB sma
|
|
curl RIGHTSB ybar [heading UPWARD]
|
|
include : dispiro
|
|
flat MIDDLE ybar [widths 0 STROKE]
|
|
curl RIGHTSB ybar [heading RIGHTWARD]
|
|
|
|
sketch # G
|
|
set-width WIDTH
|
|
include capitalMarks
|
|
|
|
include : GShape CAP SMOOTHA SMOOTHB
|
|
|
|
save 'G' 'G'
|
|
|
|
sketch # smcpG
|
|
include eMarks
|
|
include : GShape XH SMOOTHA SMOOTHB
|
|
|
|
save 'smcpG' 0x262
|
|
|
|
sketch # Ghooktop
|
|
include glyphs.G AS_BASE
|
|
include : VBarRight (RIGHTSB - OXHOOK) (CAP - HOOK) CAP
|
|
include : VerticalHook (RIGHTSB - HALFSTROKE * HVCONTRAST - OXHOOK) CAP HOOKX (-HOOK) nothing O
|
|
|
|
save 'Ghooktop' 0x193
|
|
|
|
sketch # smcpGhooktop
|
|
include glyphs.smcpG AS_BASE
|
|
include : VBarRight (RIGHTSB - OXHOOK) (XH - HOOK) XH
|
|
include : VerticalHook (RIGHTSB - HALFSTROKE * HVCONTRAST - OXHOOK) XH HOOKX (-HOOK) nothing O
|
|
|
|
save 'smcpGhooktop' 0x29B
|
|
|
|
sketch # Gbar
|
|
include glyphs.G AS_BASE
|
|
include : HOverlayBar [mix SB RIGHTSB 0.5] [mix RIGHTSB WIDTH 0.7] [mix 0 CAPMIDDLE 0.55]
|
|
save 'Gbar' 0x1E4
|
|
|
|
### g
|
|
symbol-block 'g'
|
|
sketch # g.doublestorey
|
|
include pMarks
|
|
local obot : XH * GBARPOS - O - HALFSTROKE
|
|
include : OShape XH obot SB (RIGHTSB - 0.3 * SB)
|
|
|
|
local gleftx ([mix 0 SB 0.85] + OX)
|
|
local grightx ([mix WIDTH RIGHTSB 0.825] - OX)
|
|
local groundy : Math.round : [mix DESCENDER (XH * GBARPOS) 0.64] + HALFSTROKE
|
|
local gtipy : [mix groundy (obot + STROKE + O) 1.005] - STROKE * CTHIN
|
|
include : dispiro
|
|
g4.left.start [mix SB RIGHTSB 0.4] gtipy [widths 0 (STROKE * CTHIN)]
|
|
g4 ([mix SB RIGHTSB 0.0575] + STROKE * 0.85) [mix groundy gtipy 0.5] [widths.rhs (STROKE * [mix CTHIN 1 0.5])]
|
|
flat [mix SB RIGHTSB 0.435] groundy [widths 0 STROKE]
|
|
curl [mix RIGHTSB SB 0.435] groundy
|
|
archv 4
|
|
g4 grightx [mix (DESCENDER + O) groundy (1.06 * SMALLSMOOTHA / (SMALLSMOOTHA + SMALLSMOOTHB))]
|
|
arcvh
|
|
g4 (MIDDLE + CORRECTION_OMIDS) (DESCENDER + O)
|
|
archv
|
|
g4 gleftx [mix (DESCENDER + O) groundy (1.06 * SMALLSMOOTHB / (SMALLSMOOTHA + SMALLSMOOTHB))]
|
|
arcvh
|
|
g4 [mix SB RIGHTSB 0.435] groundy [heading RIGHTWARD]
|
|
local gm : mix SB (RIGHTSB - 0.3 * SB) 0.5
|
|
start-from (RIGHTSB + 0.25 * SB - OX) XH
|
|
line-to (RIGHTSB + 0.25 * SB - OX) (XH - STROKE)
|
|
line-to gm (XH - STROKE - O)
|
|
line-to gm XH
|
|
|
|
set-anchor 'overlay' BASE MIDDLE [mix (DESCENDER + O) groundy 0.5]
|
|
|
|
save 'g.doublestorey'
|
|
|
|
sketch # g.singlestorey
|
|
include pMarks
|
|
include : OBarRightShape
|
|
include : dispiro
|
|
widths.rhs
|
|
flat RIGHTSB XH [heading DOWNWARD]
|
|
curl RIGHTSB (DESCENDER + SMALLSMOOTHA)
|
|
hookend (DESCENDER + O)
|
|
g4 SB (DESCENDER + SHOOK)
|
|
if SLAB : begin
|
|
include : RightwardTopSerif RIGHTSB XH SIDEJUT
|
|
tag-contour 'serifRT'
|
|
|
|
save 'g.singlestorey'
|
|
save 'scriptg' 0x261
|
|
save 'cyrde.serbian'
|
|
|
|
select-variant 'g' 'g' 'doublestorey' {
|
|
.cv11 'g.doublestorey'
|
|
.cv12 'g.singlestorey'
|
|
}
|
|
|
|
turned nothing 0x1D77 'g' MIDDLE [mix DESCENDER XH 0.5]
|
|
|
|
sketch # scriptghooktop
|
|
include glyphs.scriptg AS_BASE
|
|
eject-contour 'serifRT'
|
|
include : VerticalHook (RIGHTSB - HALFSTROKE * HVCONTRAST) XH HOOKX (-HOOK) nothing O
|
|
|
|
save 'scriptghooktop' 0x260
|
|
|
|
sketch # gbar
|
|
include glyphs.g AS_BASE
|
|
include : HBar [mix 0 SB 0.3] [mix WIDTH RIGHTSB 0.3] glyphs.g.anchors.overlay.y [Math.min [adviceBlackness 5] (0.5 / 3 * (CAP - STROKE * 4))]
|
|
save 'gbar' 0x1E5
|
|
|
|
### O and o
|
|
symbol-block 'O'
|
|
|
|
sketch
|
|
include capitalMarks
|
|
include : OShape CAP 0 SB RIGHTSB nothing SMOOTHA SMOOTHB
|
|
|
|
save 'O' 'O'
|
|
save 'Omicron' 0x39F
|
|
save 'cyrO' 0x41E
|
|
|
|
sketch # o
|
|
set-width WIDTH
|
|
include eMarks
|
|
include : OShape XH 0 SB RIGHTSB nothing nothing nothing true
|
|
save 'o' 'o'
|
|
save 'omicron' 0x3BF
|
|
save 'cyro' 0x43e
|
|
|
|
sketch # Oslash
|
|
|
|
local fine : 0.5 * OVERLAYSTROKE
|
|
|
|
include glyphs.O AS_BASE
|
|
include : dispiro
|
|
flat (SB + O + fine) [mix CAP 0 1.05] [widths fine fine]
|
|
curl (RIGHTSB - O - fine) [mix 0 CAP 1.05]
|
|
|
|
save 'Oslash' 0xD8
|
|
|
|
sketch # oslash
|
|
|
|
local fine : 0.5 * OVERLAYSTROKE
|
|
|
|
include glyphs.o AS_BASE
|
|
include : dispiro
|
|
flat (SB + O + fine) [mix XH 0 1.05] [widths fine fine]
|
|
curl (RIGHTSB - O - fine) [mix 0 XH 1.05]
|
|
|
|
save 'oslash' 0xF8
|
|
|
|
sketch # Obar
|
|
include glyphs.O AS_BASE
|
|
include : HBar (SB + OX + 1) (RIGHTSB - OX - 1) (CAP * 0.5) OVERLAYSTROKE
|
|
save 'Obar' 0x19F
|
|
save 'cyrOe' 0x4E8
|
|
save 'capSymbolTheta' 0x3F4
|
|
|
|
sketch # obar
|
|
include glyphs.o AS_BASE
|
|
include : HBar (SB + OX + 1) (RIGHTSB - OX - 1) (XH * 0.5) OVERLAYSTROKE
|
|
save 'obar' 0x275
|
|
save 'cyroe' 0x4E9
|
|
|
|
sketch # bulleye
|
|
include glyphs.O AS_BASE
|
|
local radius : Math.min DOTRADIUS ((RIGHTSB - SB - STROKE * 2) / 4)
|
|
include : Ring (CAPMIDDLE + radius) (CAPMIDDLE - radius) (MIDDLE + radius) (MIDDLE - radius)
|
|
|
|
save 'bulleye' 0x298
|
|
|
|
sketch # oupperhalf
|
|
include eMarks
|
|
include : dispiro
|
|
widths.rhs
|
|
flat (SB + OX) (XH / 2) [heading UPWARD]
|
|
curl (SB + OX) (XH - [Math.min (XH / 2 - 0.1) SMALLSMOOTHA])
|
|
arcvh
|
|
g4 (MIDDLE - CORRECTION_OMIDS) (XH - O)
|
|
archv
|
|
flat (RIGHTSB - OX) (XH - [Math.min (XH / 2 - 0.1) SMALLSMOOTHB])
|
|
curl (RIGHTSB - OX) (XH / 2) [heading DOWNWARD]
|
|
save 'oupperhalf' 0x1D16
|
|
|
|
sketch # olowerhalf
|
|
include eMarks
|
|
include : dispiro
|
|
widths.lhs
|
|
flat (SB + OX) (XH / 2) [heading DOWNWARD]
|
|
curl (SB + OX) [Math.min (XH / 2 - 0.1) SMALLSMOOTHB]
|
|
arcvh
|
|
g4 (MIDDLE + CORRECTION_OMIDS) O
|
|
archv
|
|
flat (RIGHTSB - OX) [Math.min (XH / 2 - 0.1) SMALLSMOOTHA]
|
|
curl (RIGHTSB - OX) (XH / 2) [heading UPWARD]
|
|
save 'olowerhalf' 0x1D17
|
|
|
|
### Q
|
|
symbol-block 'Q'
|
|
sketch # Q
|
|
set-width WIDTH
|
|
|
|
include glyphs.O AS_BASE
|
|
local shift : linreg 18 0 126 0.25 STROKE
|
|
include : dispiro
|
|
widths.rhs
|
|
flat (MIDDLE + WIDTH * 0.075 - STROKE * HVCONTRAST * shift) (-CAP * 0.2) [heading UPWARD]
|
|
curl (MIDDLE - STROKE * HVCONTRAST * shift) 0
|
|
#start-from MIDDLE 0
|
|
#line-to (MIDDLE + WIDTH * 0.15 - HALFSTROKE * HVCONTRAST) (-CAP * 0.2)
|
|
#line-to (MIDDLE + WIDTH * 0.15 + HALFSTROKE * HVCONTRAST) (-CAP * 0.2)
|
|
#line-to (MIDDLE + STROKE * HVCONTRAST) 0
|
|
#line-to (MIDDLE + STROKE * (1 - 0.5 / 3) * HVCONTRAST) (STROKE * 0.5)
|
|
#reverse-last
|
|
save 'Q' 'Q'
|
|
save 'cyrQa' 0x51A
|
|
|
|
### q
|
|
symbol-block 'q'
|
|
sketch # q
|
|
set-width WIDTH
|
|
include pMarks
|
|
|
|
include : OBarRightShape
|
|
include : VBarRight RIGHTSB DESCENDER XH
|
|
if SLAB : begin
|
|
include : RightwardTopSerif RIGHTSB XH SIDEJUT
|
|
tag-contour 'serifRT'
|
|
include : CenterBottomSerif (RIGHTSB - HALFSTROKE * HVCONTRAST) DESCENDER JUT
|
|
save 'q' 'q'
|
|
save 'cyrqa' 0x51B
|
|
|
|
sketch # Qrtail
|
|
include capitalMarks
|
|
include : OBarRightShape CAP
|
|
include : VBarRight RIGHTSB 0 CAP
|
|
include : create-glyph : glyph-construction
|
|
include glyphs.rtailBR
|
|
apply-transform : Upright
|
|
apply-transform : Translate RIGHTSB 0
|
|
apply-transform : Italify
|
|
if SLAB : begin
|
|
include : RightwardTopSerif RIGHTSB CAP SIDEJUT
|
|
tag-contour 'serifRT'
|
|
|
|
save 'Qrtail' 0x24A
|
|
|
|
sketch # qrtail
|
|
include eMarks
|
|
include : OBarRightShape
|
|
include : VBarRight RIGHTSB 0 XH
|
|
include : create-glyph : glyph-construction
|
|
include glyphs.rtailBR
|
|
apply-transform : Upright
|
|
apply-transform : Translate RIGHTSB 0
|
|
apply-transform : Italify
|
|
if SLAB : begin
|
|
include : RightwardTopSerif RIGHTSB XH SIDEJUT
|
|
tag-contour 'serifRT'
|
|
|
|
save 'qrtail' 0x24B
|
|
|
|
sketch # qhooktop
|
|
include pMarks
|
|
include glyphs.q
|
|
eject-contour 'serifRT'
|
|
include : VerticalHook (RIGHTSB - HALFSTROKE * HVCONTRAST) XH HOOKX (-HOOK)
|
|
save 'qhooktop' 0x2A0
|
|
|
|
|
|
### N
|
|
define {NShape} : symbol-block 'N'
|
|
define [NShape top left right coward diagcoward xn] : glyph-construction
|
|
local topstroke : adviceBlackness [fallback diagcoward 4]
|
|
local stroke : adviceBlackness [fallback coward 1]
|
|
local halftopstroke : topstroke / 2
|
|
|
|
include : dispiro
|
|
flat left 0 [widths.heading 0 stroke UPWARD]
|
|
curl left (top * 0.4) [heading UPWARD]
|
|
straight.up.end left top [widths.heading 0 topstroke UPWARD]
|
|
include : dispiro
|
|
flat right top [widths.heading 0 stroke DOWNWARD]
|
|
curl right (top * 0.6) [heading DOWNWARD]
|
|
straight.down.end right 0 [widths.heading 0 topstroke DOWNWARD]
|
|
include : dispiro
|
|
flat (left + halftopstroke) top [widths.heading topstroke 0 DOWNWARD]
|
|
curl (right - halftopstroke) 0 [widths.heading 0 topstroke DOWNWARD]
|
|
include : AINSerifs top left right stroke xn
|
|
|
|
sketch # N
|
|
set-width WIDTH
|
|
include capitalMarks
|
|
include : NShape CAP SB RIGHTSB
|
|
save 'N' 'N'
|
|
save 'Nu' 0x39D
|
|
|
|
sketch # smcpN
|
|
include eMarks
|
|
include : NShape XH SB RIGHTSB 3 3.5
|
|
|
|
save 'smcpN' 0x274
|
|
|
|
sketch # Nltail
|
|
include glyphs.N AS_BASE
|
|
eject-contour 'serifLB'
|
|
include : VerticalHook (SB + HALFSTROKE * HVCONTRAST) 0 (-HOOKX) HOOK
|
|
|
|
save 'Nltail' 0x19D
|
|
list NShape
|
|
|
|
### n
|
|
symbol-block 'n'
|
|
sketch # n
|
|
set-width WIDTH
|
|
include eMarks
|
|
|
|
include : nShoulder
|
|
left -- (SB + STROKE * HVCONTRAST)
|
|
right -- RIGHTSB
|
|
fine -- SHOULDERFINE
|
|
include : VBarLeft SB 0 XH
|
|
|
|
if SLAB : begin
|
|
include : LeftwardTopSerif SB XH SIDEJUT
|
|
tag-contour 'serifLT'
|
|
if (para.isItalic)
|
|
: then : include : tagged 'serifRB' : RightwardBottomSerif RIGHTSB 0 SIDEJUT
|
|
: else : include : tagged 'serifRB' : CenterBottomSerif (RIGHTSB - HALFSTROKE * HVCONTRAST) 0 JUT
|
|
if (!para.isItalic) : begin
|
|
include : tagged 'serifLB' : CenterBottomSerif (SB + HALFSTROKE * HVCONTRAST) 0 JUT
|
|
save 'n' 'n'
|
|
save 'cyrpe.italic'
|
|
|
|
sketch # napostrophe
|
|
include glyphs.commaAbove
|
|
apply-transform : Translate (WIDTH + SB - MIDDLE) 0
|
|
include glyphs.n AS_BASE
|
|
|
|
save 'napostrophe' 0x149
|
|
|
|
sketch # eng
|
|
include pMarks
|
|
include glyphs.n false
|
|
eject-contour 'serifRB'
|
|
include : VerticalHook (RIGHTSB - HALFSTROKE * HVCONTRAST) 0 (-HOOKX) HOOK
|
|
|
|
save 'eng' 0x14B
|
|
|
|
sketch # Eng
|
|
include capitalMarks
|
|
|
|
include : nShoulder
|
|
left -- (SB + STROKE)
|
|
right -- RIGHTSB
|
|
top -- CAP
|
|
bottom -- (HOOK + HALFSTROKE + O)
|
|
sma -- SMOOTHA
|
|
smb -- SMOOTHB
|
|
include : VerticalHook (RIGHTSB - HALFSTROKE * HVCONTRAST) (HOOK + HALFSTROKE + O) [Math.max ((SB - RIGHTSB) / 2 + HALFSTROKE) (-HOOKX)] HOOK
|
|
include : VBar (SB + HALFSTROKE * HVCONTRAST) 0 CAP
|
|
|
|
save 'Eng' 0x14A
|
|
|
|
sketch # nltail
|
|
include glyphs.n AS_BASE
|
|
eject-contour 'serifLB'
|
|
include : VerticalHook (SB + HALFSTROKE * HVCONTRAST) 0 (-HOOKX) HOOK
|
|
|
|
save 'nltail' 0x272
|
|
|
|
sketch # ncurlytail
|
|
local fine : adviceBlackness 4
|
|
local rinner : clamp (WIDTH * 0.065) (XH * 0.05) (fine * 0.35)
|
|
local wide : adviceBlackness 3
|
|
local m1 : Math.min RIGHTSB (WIDTH - rinner * 2 - fine - OX)
|
|
local x2 : mix SB m1 0.5
|
|
local y2 : -fine
|
|
include eMarks
|
|
include : VBarLeft SB 0 XH wide
|
|
include : dispiro
|
|
nShoulderKnots
|
|
left -- (SB + wide * HVCONTRAST)
|
|
right -- m1
|
|
fine -- SHOULDERFINE
|
|
bottom -- (rinner * 2 + fine)
|
|
stroke -- wide
|
|
CurlyTail fine rinner m1 0 (m1 + rinner * 2 + fine) x2 y2
|
|
|
|
if SLAB : begin
|
|
include : LeftwardTopSerif SB XH SIDEJUT
|
|
tag-contour 'serifLT'
|
|
if (!para.isItalic) : begin
|
|
include : CenterBottomSerif (SB + HALFSTROKE * HVCONTRAST) 0 JUT
|
|
tag-contour 'serifLB'
|
|
|
|
save 'ncurlytail' 0x235
|
|
# eta
|
|
sketch # eta
|
|
include pMarks
|
|
set-anchor 'lf' BASE (SB + HALFSTROKE) 0
|
|
|
|
include : nShoulder
|
|
left -- (SB + STROKE * HVCONTRAST)
|
|
right -- RIGHTSB
|
|
bottom -- DESCENDER
|
|
include : VBarLeft SB 0 XH
|
|
if SLAB : begin
|
|
include : LeftwardTopSerif SB XH SIDEJUT
|
|
tag-contour 'serifLT'
|
|
|
|
save 'eta' 0x3B7
|
|
|
|
sketch # latinEta
|
|
include ifMarks
|
|
set-anchor 'lf' BASE (SB + HALFSTROKE) 0
|
|
|
|
include : nShoulder
|
|
left -- (SB + STROKE * HVCONTRAST)
|
|
right -- RIGHTSB
|
|
top -- CAP
|
|
bottom -- DESCENDER
|
|
include : VBar (SB + HALFSTROKE * HVCONTRAST) 0 CAP
|
|
if SLAB : begin
|
|
include : LeftwardTopSerif SB CAP SIDEJUT
|
|
tag-contour 'serifLT'
|
|
if (para.isItalic)
|
|
: then : include : tagged 'serifRB' : RightwardBottomSerif RIGHTSB DESCENDER SIDEJUT
|
|
: else : include : tagged 'serifRB' : CenterBottomSerif (RIGHTSB - HALFSTROKE * HVCONTRAST) DESCENDER JUT
|
|
if (!para.isItalic) : begin
|
|
include : CenterBottomSerif (SB + HALFSTROKE * HVCONTRAST) 0 JUT
|
|
tag-contour 'serifLB'
|
|
|
|
save 'latinEta' 0x220
|
|
|
|
sketch # latineta
|
|
include pMarks
|
|
set-anchor 'lf' BASE (SB + HALFSTROKE) 0
|
|
|
|
include : nShoulder
|
|
left -- (SB + STROKE * HVCONTRAST)
|
|
right -- RIGHTSB
|
|
bottom -- DESCENDER
|
|
include : VBarLeft SB 0 XH
|
|
if SLAB : begin
|
|
include : LeftwardTopSerif SB XH SIDEJUT
|
|
tag-contour 'serifLT'
|
|
if (para.isItalic)
|
|
: then : include : tagged 'serifRB' : RightwardBottomSerif RIGHTSB DESCENDER SIDEJUT
|
|
: else : include : tagged 'serifRB' : CenterBottomSerif (RIGHTSB - HALFSTROKE * HVCONTRAST) DESCENDER JUT
|
|
if (!para.isItalic) : begin
|
|
include : CenterBottomSerif (SB + HALFSTROKE * HVCONTRAST) 0 JUT
|
|
tag-contour 'serifLB'
|
|
save 'latineta' 0x19E
|
|
|
|
### U
|
|
define {UShape} : symbol-block 'U'
|
|
define [UShape top bottom stroke oper] : glyph-construction
|
|
include : dispiro
|
|
widths.lhs
|
|
flat SB top [heading DOWNWARD]
|
|
curl SB (bottom + SMOOTHB)
|
|
arcvh
|
|
g4 (MIDDLE + CORRECTION_OMIDS) (bottom + O)
|
|
archv
|
|
flat RIGHTSB (bottom + SMOOTHA)
|
|
curl RIGHTSB top [heading UPWARD]
|
|
if [not oper] : include : AIVSerifs top
|
|
|
|
sketch # U
|
|
set-width WIDTH
|
|
include capitalMarks
|
|
include : UShape CAP 0
|
|
|
|
save 'U' 'U'
|
|
|
|
sketch # smcpU
|
|
include eMarks
|
|
include : UShape XH 0
|
|
|
|
save 'smcpU' 0x1D1C
|
|
list UShape
|
|
|
|
### u
|
|
symbol-block 'u'
|
|
sketch # u
|
|
set-width WIDTH
|
|
include eMarks
|
|
set-anchor 'trailing' BASE (RIGHTSB - markHalfStroke) 0
|
|
include glyphs.n
|
|
eject-contour 'serifRB'
|
|
eject-contour 'serifLB'
|
|
retag-contour 'serifLT' 'serifRB'
|
|
include : FlipAround MIDDLE (XH / 2)
|
|
|
|
if SLAB : begin
|
|
include : LeftwardTopSerif (RIGHTSB - STROKE * HVCONTRAST) XH SIDEJUT
|
|
include : LeftwardTopSerif SB XH SIDEJUT
|
|
|
|
save 'u' 'u'
|
|
# upsilon
|
|
sketch # upsilon
|
|
include eMarks
|
|
include : dispiro
|
|
widths.lhs
|
|
flat (SB + OX - O) XH [heading DOWNWARD]
|
|
curl (SB + OX - O) SMALLSMOOTHB
|
|
arcvh
|
|
g4 (MIDDLE + CORRECTION_OMIDS) O
|
|
archv
|
|
flat (RIGHTSB - OX + O) SMALLSMOOTHA
|
|
curl (RIGHTSB - OX + O) XH [heading UPWARD]
|
|
|
|
save 'upsilon' 0x3C5
|
|
define [LatinUpsilon2Shape top sma smb] : glyph-construction
|
|
include : dispiro
|
|
widths.lhs
|
|
flat SB top [heading DOWNWARD]
|
|
curl SB smb
|
|
arcvh
|
|
g4 (MIDDLE + CORRECTION_OMIDS) O
|
|
archv
|
|
flat RIGHTSB sma
|
|
curl RIGHTSB (top - HOOK - HALFSTROKE) [heading UPWARD]
|
|
include : VerticalHook (RIGHTSB - HALFSTROKE * HVCONTRAST) (top - HOOK - HALFSTROKE) (-(RIGHTSB - HALFSTROKE * HVCONTRAST - MIDDLE)) (-HOOK)
|
|
|
|
sketch # latinUpsilon2
|
|
include eMarks
|
|
include : LatinUpsilon2Shape CAP SMOOTHA SMOOTHB
|
|
|
|
save 'latinUpsilon2' 0x1B2
|
|
|
|
sketch # latinupsilon2
|
|
include eMarks
|
|
include : LatinUpsilon2Shape XH SMALLSMOOTHA SMALLSMOOTHB
|
|
save 'latinupsilon2' 0x28B
|
|
|
|
### M
|
|
symbol-block 'M'
|
|
define [MShape top] : glyph-construction
|
|
local topstroke : adviceBlackness 5
|
|
local halftopstroke : topstroke / 2
|
|
|
|
include : dispiro
|
|
flat SB 0 [widths.heading 0 STROKE UPWARD]
|
|
curl SB (top * 0.2) [heading UPWARD]
|
|
straight.up.end SB top [widths.heading 0 topstroke UPWARD]
|
|
include : dispiro
|
|
flat RIGHTSB 0 [widths.heading STROKE 0 UPWARD]
|
|
curl RIGHTSB (top * 0.2) [heading UPWARD]
|
|
straight.up.end RIGHTSB top [widths.heading topstroke 0 UPWARD]
|
|
include : dispiro
|
|
flat (SB + halftopstroke) top [widths.heading topstroke 0 DOWNWARD]
|
|
curl MIDDLE (top * 0.3) [widths.heading (topstroke / 2) (topstroke / 2) DOWNWARD]
|
|
include : dispiro
|
|
flat (RIGHTSB - halftopstroke) top [widths.heading 0 topstroke DOWNWARD]
|
|
curl MIDDLE (top * 0.3) [widths.heading (topstroke / 2) (topstroke / 2) DOWNWARD]
|
|
include : AIMSerifs top
|
|
|
|
sketch # M
|
|
set-width WIDTH
|
|
include capitalMarks
|
|
include : MShape CAP
|
|
save 'M' 'M'
|
|
save 'Mu' 0x39C
|
|
save 'cyrEm' 0x41C
|
|
|
|
sketch # cyrem
|
|
include eMarks
|
|
include : MShape XH
|
|
save 'cyrem' 0x43C
|
|
|
|
### m
|
|
symbol-block 'm'
|
|
define [SmallMShape top bot] : glyph-construction
|
|
local m1 : mix (SB + O) (MIDDLE + MVERTSTROKE / 2 * HVCONTRAST) 0.5
|
|
local m2 : mix (RIGHTSB - O) (MIDDLE - MVERTSTROKE / 2 * HVCONTRAST) 0.5
|
|
include : mShoulderSpiro
|
|
left -- (SB + O + MVERTSTROKE * HVCONTRAST)
|
|
right -- (MIDDLE + MVERTSTROKE / 2 * HVCONTRAST)
|
|
top -- top
|
|
bottom -- bot
|
|
width -- MVERTSTROKE
|
|
fine -- (MVERTSTROKE * SHOULDERFINE / STROKE)
|
|
include : mShoulderSpiro
|
|
left -- (MIDDLE + MVERTSTROKE * 0.5 * HVCONTRAST)
|
|
right -- (RIGHTSB - O)
|
|
top -- top
|
|
bottom -- bot
|
|
width -- MVERTSTROKE
|
|
fine -- (MVERTSTROKE * SHOULDERFINE / STROKE)
|
|
include : VBarLeft (SB + O) bot top MVERTSTROKE
|
|
if SLAB : begin
|
|
include : LeftwardTopSerif SB top SIDEJUT
|
|
tag-contour 'serifLT'
|
|
if (!para.isItalic) : include : LeftwardBottomSerif SB bot SIDEJUT
|
|
include : RightwardBottomSerif RIGHTSB bot SIDEJUT
|
|
tag-contour 'serifRB'
|
|
|
|
sketch # m
|
|
set-width WIDTH
|
|
include eMarks
|
|
include : SmallMShape XH 0
|
|
save 'm' 'm'
|
|
save 'cyrte.italic'
|
|
composite 'cyrtedescender.italic' glyphs.'cyrte.italic' [CyrDescender RIGHTSB] eMarks
|
|
|
|
sketch # mltail
|
|
include pMarks
|
|
include glyphs.m
|
|
eject-contour 'serifRB'
|
|
include : VerticalHook (RIGHTSB - O - MVERTSTROKE / 2 * HVCONTRAST) 0 (-HOOKX) HOOK MVERTSTROKE
|
|
|
|
save 'mltail' 0x271
|
|
turned nothing 0x26F 'm' MIDDLE (XH / 2)
|
|
|
|
sketch # capitalTurnm
|
|
include capitalMarks
|
|
include : SmallMShape CAP 0
|
|
include : FlipAround MIDDLE (CAP / 2)
|
|
save 'capitalTurnm' 0x19C
|
|
|
|
sketch # turnmleg
|
|
include pMarks
|
|
include glyphs.m
|
|
eject-contour 'serifLT'
|
|
include : FlipAround MIDDLE (XH / 2)
|
|
include : VBarRight (RIGHTSB - O) DESCENDER 0 MVERTSTROKE
|
|
save 'turnmleg' 0x270
|
|
|
|
### H
|
|
symbol-block 'H'
|
|
define [HShape top] : glyph-construction
|
|
include : VBarLeft SB 0 top
|
|
include : VBarRight RIGHTSB 0 top
|
|
include : HBar (SB - O) (RIGHTSB + O) (top * BARPOS)
|
|
include : AIHSerifs top
|
|
|
|
sketch # H
|
|
set-width WIDTH
|
|
include capitalMarks
|
|
include : HShape CAP
|
|
save 'H' 'H'
|
|
save 'Eta' 0x397
|
|
save 'cyrEn' 0x41D
|
|
composite nothing glyphs.cyrEn [CyrDescender RIGHTSB] [into-unicode 0x4A2]
|
|
|
|
sketch # cyren
|
|
include eMarks
|
|
include : HShape XH
|
|
save 'cyren' 0x43D
|
|
save 'smcpH' 0x29C
|
|
composite nothing glyphs.cyren [CyrDescender RIGHTSB] [into-unicode 0x4A3]
|
|
|
|
sketch # Hbar
|
|
|
|
include glyphs.H AS_BASE
|
|
include : HOverlayBar [mix SB 0 0.7] [mix RIGHTSB WIDTH 0.7] [mix CAPMIDDLE CAP 0.45]
|
|
save 'Hbar' 0x126
|
|
|
|
### h
|
|
symbol-block 'h'
|
|
sketch # h
|
|
set-width WIDTH
|
|
include bMarks
|
|
|
|
include : nShoulder
|
|
left -- (SB + STROKE * HVCONTRAST)
|
|
right -- RIGHTSB
|
|
include : VBarLeft SB 0 CAP
|
|
if SLAB : begin
|
|
include : LeftwardTopSerif SB CAP SIDEJUT
|
|
if (para.isItalic)
|
|
: then : include : RightwardBottomSerif RIGHTSB 0 SIDEJUT
|
|
: else : include : CenterBottomSerif (RIGHTSB - HALFSTROKE * HVCONTRAST) 0 JUT
|
|
tag-contour 'serifRB'
|
|
if (!para.isItalic) : begin
|
|
include : CenterBottomSerif (SB + HALFSTROKE * HVCONTRAST) 0 JUT
|
|
tag-contour 'serifLB'
|
|
save 'h' 'h'
|
|
save 'cyrshha' 0x4BB
|
|
|
|
sketch # hhooktop
|
|
include bMarks
|
|
include : nShoulder
|
|
left -- (SB + STROKE * HVCONTRAST)
|
|
right -- RIGHTSB
|
|
include : HooktopLeftBar
|
|
if SLAB : begin
|
|
if (para.isItalic)
|
|
: then : include : RightwardBottomSerif RIGHTSB 0 SIDEJUT
|
|
: else : include : CenterBottomSerif (RIGHTSB - HALFSTROKE * HVCONTRAST) 0 JUT
|
|
tag-contour 'serifRB'
|
|
if (!para.isItalic) : begin
|
|
include : CenterBottomSerif (SB + HALFSTROKE * HVCONTRAST) 0 JUT
|
|
tag-contour 'serifLB'
|
|
|
|
save 'hhooktop' 0x266
|
|
|
|
sketch # hhooktopltail
|
|
include pMarks
|
|
include glyphs.hhooktop
|
|
eject-contour 'serifRB'
|
|
include : VerticalHook (RIGHTSB - HALFSTROKE * HVCONTRAST) 0 (-HOOKX) HOOK
|
|
|
|
save 'hhooktopltail' 0x267
|
|
|
|
sketch # hltail
|
|
include pMarks
|
|
include glyphs.h
|
|
eject-contour 'serifRB'
|
|
include : VerticalHook (RIGHTSB - HALFSTROKE * HVCONTRAST) 0 (-HOOKX) HOOK
|
|
|
|
save 'hltail' 0xA727
|
|
turned nothing 0x265 'h' MIDDLE (XH / 2) pMarks
|
|
|
|
sketch # hookturnh
|
|
include : nShoulder
|
|
left -- (SB + STROKE * HVCONTRAST)
|
|
right -- RIGHTSB
|
|
bottom -- (HOOK + HALFSTROKE + 1)
|
|
include : VBarLeft SB 0 CAP
|
|
include : create-glyph : glyph-construction
|
|
include glyphs.rtailBR
|
|
apply-transform : Upright
|
|
apply-transform : Translate RIGHTSB (HOOK + HALFSTROKE)
|
|
apply-transform : Italify
|
|
include : FlipAround MIDDLE (XH / 2)
|
|
include pMarks
|
|
if SLAB : begin
|
|
include : LeftwardTopSerif (RIGHTSB - STROKE * HVCONTRAST) XH SIDEJUT
|
|
include : CenterBottomSerif (RIGHTSB - HALFSTROKE * HVCONTRAST) DESCENDER JUT
|
|
|
|
save 'hookturnh' 0x2AE
|
|
|
|
sketch # hookturnhrtail
|
|
include : nShoulder
|
|
left -- (SB + STROKE * HVCONTRAST)
|
|
right -- RIGHTSB
|
|
bottom -- (HOOK + HALFSTROKE + 1)
|
|
include : VBarLeft SB 0 (XH - 1)
|
|
include : create-glyph : glyph-construction
|
|
include glyphs.rtailBR
|
|
apply-transform : Upright
|
|
apply-transform : Translate RIGHTSB (HOOK + HALFSTROKE)
|
|
apply-transform : Italify
|
|
include : FlipAround MIDDLE (XH / 2)
|
|
include : create-glyph : glyph-construction
|
|
include glyphs.rtailBR
|
|
apply-transform : Upright
|
|
apply-transform : Translate RIGHTSB 0
|
|
apply-transform : Italify
|
|
include pMarks
|
|
if SLAB : begin
|
|
include : LeftwardTopSerif (RIGHTSB - STROKE * HVCONTRAST) XH SIDEJUT
|
|
|
|
save 'hookturnhrtail' 0x2AF
|
|
|
|
sketch # hbar
|
|
include glyphs.h AS_BASE
|
|
include : HOverlayBar [mix SB 0 0.7] [mix SB RIGHTSB 0.5] [mix XH CAP 0.45]
|
|
save 'hbar' 0x127
|
|
save 'cyrtshe' 0x45B
|
|
|
|
### F
|
|
define {FShape} : symbol-block 'F'
|
|
define [FShape top y] : glyph-construction
|
|
include : VBarLeft (SB * 1.5) 0 [fallback top CAP]
|
|
include : HBarTop (SB * 1.5 - O) RIGHTSB [fallback top CAP]
|
|
include : HBar (SB * 1.5 - O) (RIGHTSB - [Math.max HALFSTROKE ((RIGHTSB - SB) * 0.15)] - [if SLAB (STROKE * 0.25) 0]) ([fallback top CAP] * [fallback y [if SLAB 0.52 0.54]])
|
|
if SLAB : begin
|
|
include : LeftwardTopSerif (SB * 1.5) [fallback top CAP] SIDEJUT
|
|
include : CenterBottomSerif (SB * 1.5 + HALFSTROKE * HVCONTRAST) 0 JUT
|
|
tag-contour 'serifBottom'
|
|
include : DownwardRightSerif RIGHTSB [fallback top CAP] VJUT
|
|
|
|
sketch # F
|
|
set-width WIDTH
|
|
include capitalMarks
|
|
include : FShape
|
|
|
|
save 'F' 'F'
|
|
|
|
sketch # Fltail
|
|
include glyphs.F AS_BASE
|
|
eject-contour 'serifBottom'
|
|
include : VerticalHook (SB * 1.5 + HALFSTROKE * HVCONTRAST) 0 (-HOOKX) HOOK
|
|
|
|
save 'Fltail' 0x191
|
|
list FShape
|
|
|
|
### long s, and f
|
|
define {LongSShape} : symbol-block 'f'
|
|
define fovershoot : fallback para.fovershoot (O * 6)
|
|
|
|
sketch # longs.straight
|
|
set-width WIDTH
|
|
include bMarks
|
|
include : dispiro
|
|
widths.center
|
|
flat (MIDDLE - FBALANCE) 0 [heading UPWARD]
|
|
curl (MIDDLE - FBALANCE) (CAP - FHOOK)
|
|
arcvh
|
|
straight.right.end (MIDDLE - FBALANCE + HOOKX) (CAP - HALFSTROKE - fovershoot)
|
|
set-anchor 'overlay' BASE (MIDDLE - FBALANCE + STROKE * 0.5 * HVCONTRAST) (CAP * OVERLAYPOS)
|
|
if SLAB : begin
|
|
include : CenterBottomSerif (MIDDLE - FBALANCE) 0 JUT
|
|
tag-contour 'serifMB'
|
|
|
|
save 'longs.straight'
|
|
|
|
sketch # longs.upright
|
|
include bMarks
|
|
local m : MIDDLE - JBALANCE - HALFSTROKE * HVCONTRAST
|
|
local r : m + (WIDTH * 0.5) + STROKE * HVCONTRAST - OXHOOK
|
|
include : dispiro
|
|
widths.lhs
|
|
g4 r (CAP - HOOK)
|
|
hookstart (CAP - O)
|
|
flat m (CAP - SMOOTHA)
|
|
curl m 0 [heading DOWNWARD]
|
|
set-anchor 'overlay' BASE (m + STROKE * 0.65 * HVCONTRAST) (CAP * OVERLAYPOS)
|
|
if SLAB : begin
|
|
include : tagged 'serifLB' : CenterBottomSerif (m + HALFSTROKE * HVCONTRAST + RBALANCE * 0.35) 0 (JUT + RBALANCE * 0.65)
|
|
|
|
save 'longs.upright'
|
|
|
|
define [LongSShape top bottom hookx hooky fine] : glyph-construction
|
|
local w [fallback fine STROKE]
|
|
include : dispiro
|
|
widths.center w
|
|
straight.right.start (MIDDLE - hookx) (bottom + w / 2 + fovershoot)
|
|
flat MIDDLE (bottom + hooky)
|
|
curl MIDDLE (top - hooky)
|
|
straight.right.end (MIDDLE + hookx) (top - w / 2 - fovershoot)
|
|
|
|
sketch 'esh'
|
|
include ifMarks
|
|
include : LongSShape CAP (-HOOK) HOOKX HOOK
|
|
|
|
branch
|
|
save 'longs.italic'
|
|
save 'esh' 0x283
|
|
|
|
branch
|
|
include : HOverlayBar (MIDDLE - LONGJUT * 0.6) (MIDDLE + LONGJUT * 0.6) (XH * 0.25)
|
|
save 'eshbar' 0x284
|
|
|
|
sketch # longs
|
|
set-width WIDTH
|
|
|
|
if (para.isItalic)
|
|
then : include glyphs.'longs.italic' AS_BASE
|
|
else : include glyphs.'longs.upright' AS_BASE
|
|
save 'longs' 0x17F
|
|
|
|
sketch # eshcurlytail
|
|
include ifMarks
|
|
local fine : adviceBlackness 3.5
|
|
local rinner : LONGJUT / 2 - fine / 2
|
|
local m1 : MIDDLE - HALFSTROKE * HVCONTRAST - FBALANCE
|
|
local x2 : mix RIGHTSB m1 0.25
|
|
local y2 : DESCENDER + O
|
|
include glyphs.'longs.straight' false
|
|
eject-contour 'serifMB'
|
|
include : dispiro
|
|
widths.lhs
|
|
flat m1 XH [heading DOWNWARD]
|
|
curl m1 (DESCENDER + fine + rinner * 2)
|
|
CurlyTail
|
|
fine -- fine
|
|
rinner -- rinner
|
|
xleft -- m1
|
|
bottom -- DESCENDER
|
|
right -- (m1 - LONGJUT)
|
|
x2 -- x2
|
|
y2 -- y2
|
|
save 'eshcurlytail' 0x286
|
|
|
|
sketch # ifishhook
|
|
include pMarks
|
|
include : VBar MIDDLE DESCENDER (XH - HOOK)
|
|
include : VerticalHook MIDDLE (XH - HOOK) (-LONGJUT + LBALANCE) (-HOOK + HALFSTROKE)
|
|
apply-transform : Translate LBALANCE 0
|
|
if SLAB : begin
|
|
include : CenterBottomSerif MIDDLE DESCENDER JUT
|
|
|
|
save 'ifishhook' 0x27F
|
|
|
|
sketch # iviby
|
|
include pMarks
|
|
include : VBar MIDDLE 0 (XH - HOOK - HALFSTROKE)
|
|
include : VerticalHook MIDDLE (XH - HOOK - HALFSTROKE) (-LONGJUT) (-HOOK)
|
|
include : VerticalHook MIDDLE 0 LONGJUT HOOK
|
|
|
|
save 'iviby' 0x285
|
|
define fbar : XH * 0.91 + STROKE * 0.25
|
|
sketch # f.upright
|
|
local fovershoot2 (O * 2)
|
|
include bMarks
|
|
local barleft : [mix SB RIGHTSB 0.35] - STROKE * 0.25 * HVCONTRAST
|
|
include : dispiro
|
|
widths.lhs
|
|
g4 (RIGHTSB + RBALANCE2 - OXE) (CAP - HOOK * 0.75 - fovershoot2)
|
|
hookstart (CAP - O - fovershoot2) {.shift 0.1 .skew 0.5}
|
|
flat barleft (CAP - SMOOTHA * 0.8 - fovershoot2)
|
|
curl barleft 0 [heading DOWNWARD]
|
|
include : dispiro
|
|
widths.rhs
|
|
flat ([mix SB RIGHTSB 0] - HALFSTROKE * TANSLANT) fbar
|
|
curl ([mix SB RIGHTSB 0.95] - HALFSTROKE * TANSLANT) fbar
|
|
if SLAB : include : dispiro
|
|
widths.lhs
|
|
flat ([mix SB RIGHTSB 0.02] + HALFSTROKE * TANSLANT) 0
|
|
curl ([mix SB RIGHTSB 0.875] + HALFSTROKE * TANSLANT) 0
|
|
|
|
save 'f.upright'
|
|
save 'lenisf' 0xAB35
|
|
|
|
sketch # fltail
|
|
include glyphs.'longs.italic' AS_BASE
|
|
include : dispiro
|
|
widths.rhs
|
|
flat (MIDDLE - LONGJUT - HALFSTROKE * TANSLANT) fbar
|
|
curl (MIDDLE + LONGJUT - HALFSTROKE * TANSLANT) fbar
|
|
save 'f.italic'
|
|
save 'fltail' 0x192
|
|
|
|
italic-variant 'f' 'f'
|
|
turned 'turnf' 0x25F 'f' MIDDLE (XH / 2) pMarks
|
|
|
|
symbol-block 'compatibility ligatures'
|
|
local shift (-(WIDTH * 0.055 + SB * 0.5))
|
|
local barr RIGHTSB
|
|
local hbarleft (SB + shift + STROKE * [if para.slantAngle 0.5 0.25])
|
|
|
|
sketch # f_i
|
|
include bMarks
|
|
include : create-glyph : glyph-construction
|
|
include glyphs.longs
|
|
apply-transform : Translate shift 0
|
|
include : VBarRight barr 0 fbar
|
|
include : HBarTop hbarleft barr fbar
|
|
if SLAB : begin
|
|
if para.isItalic
|
|
: then : include : tagged 'serifRB' : RightwardBottomSerif barr 0 SIDEJUT
|
|
: else : include : tagged 'serifRB' : CenterBottomSerif (barr - HALFSTROKE * HVCONTRAST) 0 JUT
|
|
save 'f_i' 0xFB01
|
|
|
|
sketch # f_l.upright
|
|
local m : MIDDLE - JBALANCE - HALFSTROKE * HVCONTRAST + shift
|
|
include : dispiro
|
|
widths.rhs
|
|
flat m 0 [heading UPWARD]
|
|
curl m (CAP - SMOOTHA)
|
|
hookend (CAP - O)
|
|
g4 (barr + OXHOOK) (CAP - HOOK)
|
|
include : VBarRight barr 0 (CAP - HOOK)
|
|
include : dispiro
|
|
widths.rhs
|
|
flat ([Math.min (m - STROKE * 0.3) hbarleft] - TANSLANT * HALFSTROKE) fbar
|
|
curl ([mix SB barr 0.6] - TANSLANT * HALFSTROKE) fbar
|
|
if SLAB : begin
|
|
include : tagged 'serifLB' : CenterBottomSerif (m + HALFSTROKE * HVCONTRAST + RBALANCE * 0.35) 0 (JUT + RBALANCE * 0.65)
|
|
include : tagged 'serifRB' : CenterBottomSerif (barr - HALFSTROKE * HVCONTRAST) 0 JUT
|
|
save 'f_l.upright'
|
|
|
|
sketch # f_l.italic
|
|
include : create-glyph : glyph-construction
|
|
include glyphs.'longs.italic' AS_BASE
|
|
apply-transform : Translate shift 0
|
|
include : VBarRight barr 0 CAP
|
|
include : HBarTop hbarleft [mix SB barr 0.65] fbar
|
|
if SLAB : include : tagged 'serifRB' : RightwardBottomSerif barr 0 SIDEJUT
|
|
save 'f_l.italic'
|
|
|
|
italic-variant 'f_l' 0xFB02
|
|
|
|
* {LongSShape}
|
|
|
|
### E
|
|
symbol-block 'E'
|
|
define [EShape top] : glyph-construction
|
|
include : FShape top
|
|
include : HBarBottom (SB * 1.5 - O) RIGHTSB 0
|
|
if SLAB : begin
|
|
include : LeftwardBottomSerif (SB * 1.5) 0 SIDEJUT
|
|
include : UpwardRightSerif RIGHTSB 0 VJUT
|
|
|
|
sketch # turnE
|
|
set-width WIDTH
|
|
include capitalMarks
|
|
include : EShape CAP
|
|
save 'E' 'E'
|
|
save 'Epsilon' 0x395
|
|
save 'cyrIe' 0x415
|
|
|
|
include : FlipAround MIDDLE (CAP / 2)
|
|
save 'turnE' 0x18E
|
|
|
|
sketch # smcpturnE
|
|
include eMarks
|
|
include : EShape XH
|
|
include : FlipAround MIDDLE (XH / 2)
|
|
save 'smcpturnE' 0x2C7B
|
|
|
|
### e
|
|
define {SmallEShape} : symbol-block 'e'
|
|
define [SmallEShape top stroke barpos curly] : glyph-construction
|
|
local barbottom (top * [fallback barpos EBARPOS] - HALFSTROKE)
|
|
local hookx (RIGHTSB - OXHOOK + TAILADJX * TANSLANT)
|
|
local hookmiddle : [mix (SB + O) hookx 0.55] + CORRECTION_OMIDS
|
|
|
|
include : dispiro
|
|
widths.lhs stroke
|
|
flat (RIGHTSB - OX) barbottom [heading UPWARD]
|
|
curl (RIGHTSB - OX) (top - SMALLSMOOTHB)
|
|
arcvh
|
|
g4 (MIDDLE - CORRECTION_OMIDS) (top - O)
|
|
archv
|
|
[if ((SMALLSMOOTHA + SMALLSMOOTHB) / top > 0.75) flat.ai flat] (SB + OX) (top - SMALLSMOOTHA)
|
|
[if ((SMALLSMOOTHA + SMALLSMOOTHB) / top > 0.75) curl.ai curl] (SB + OX) (0 + SMALLSMOOTHB)
|
|
hookend O nothing stroke
|
|
g4 (RIGHTSB - OX * [if para.isItalic 0 0.5]) AHOOK
|
|
include : HBarBottom (SB + (stroke / 2) + OX) (RIGHTSB - (stroke / 2) - OX) barbottom stroke
|
|
|
|
sketch # cyrie
|
|
include eMarks
|
|
include : SmallEShape XH STROKE
|
|
save 'e' 'e'
|
|
save 'cyrie' 0x435
|
|
|
|
include : FlipAround MIDDLE (XH / 2)
|
|
save 'turne' 0x1DD
|
|
save 'schwa' 0x259
|
|
save 'cyrschwa' 0x4D9
|
|
|
|
sketch # cyrSchwa
|
|
include capitalMarks
|
|
include : SmallEShape CAP STROKE
|
|
include : FlipAround MIDDLE (CAP / 2)
|
|
save 'turnSmallE' 0x18F
|
|
save 'cyrSchwa' 0x4D8
|
|
|
|
define [RevSmallEShape top stroke barpos] : glyph-construction
|
|
local barbottom (top * [fallback barpos EBARPOS] - HALFSTROKE)
|
|
local hookx SB
|
|
local hookmiddle : [mix (RIGHTSB - O) hookx 0.55] + CORRECTION_OMIDS
|
|
|
|
include : dispiro
|
|
widths.rhs stroke
|
|
flat (SB + OX) barbottom [heading UPWARD]
|
|
curl (SB + OX) (top - SMALLSMOOTHA)
|
|
arcvh
|
|
g4 MIDDLE (top - O)
|
|
archv
|
|
[if ((SMALLSMOOTHA + SMALLSMOOTHB) / top > 0.75) flat.ai flat] (RIGHTSB - OX) (top - SMALLSMOOTHB)
|
|
[if ((SMALLSMOOTHA + SMALLSMOOTHB) / top > 0.75) curl.ai curl] (RIGHTSB - OX) SMALLSMOOTHA
|
|
hookend O nothing stroke
|
|
g4 (SB + O) AHOOK
|
|
include : HBarBottom (SB + (stroke / 2)) (RIGHTSB - (stroke / 2)) barbottom stroke
|
|
|
|
sketch # reve
|
|
include eMarks
|
|
include : RevSmallEShape XH STROKE
|
|
save 'reve' 0x258
|
|
|
|
list SmallEShape
|
|
|
|
### T
|
|
symbol-block 'T'
|
|
define [TShape top] : glyph-construction
|
|
include : VBar MIDDLE 0 top
|
|
local l : SB + OXE
|
|
local r : RIGHTSB - OXE
|
|
include : tagged 'strokeLT' : HBarTop l MIDDLE top
|
|
include : tagged 'strokeRT' : HBarTop MIDDLE r top
|
|
if SLAB : begin
|
|
include : tagged 'serifRT' : DownwardRightSerif r top VJUT MVERTSTROKE
|
|
include : tagged 'serifLT' : DownwardLeftSerif l top VJUT MVERTSTROKE
|
|
include : tagged 'serifRB' : RightwardBottomSerif MIDDLE 0 (LONGJUT * 0.6)
|
|
include : tagged 'serifRB' : LeftwardBottomSerif MIDDLE 0 (LONGJUT * 0.6)
|
|
|
|
sketch # cyrTe
|
|
include capitalMarks
|
|
set-anchor 'bottomright' BASE (MIDDLE + HALFSTROKE * HVCONTRAST) 0
|
|
include : TShape CAP
|
|
|
|
save 'T' 'T'
|
|
save 'Tau' 0x3A4
|
|
save 'cyrTe' 0x422
|
|
|
|
branch
|
|
include [CyrDescender (MIDDLE + HALFSTROKE * HVCONTRAST)]
|
|
include ifMarks
|
|
save 'cyrTedescender' 0x4AC
|
|
|
|
branch
|
|
include : FlipAround MIDDLE (CAP / 2)
|
|
save 'turnT' 0xA7B1
|
|
|
|
branch
|
|
include : HOverlayBar [mix MIDDLE SB 0.8] [mix MIDDLE RIGHTSB 0.8] [mix 0 CAP 0.45]
|
|
save 'Tbar' 0x166
|
|
|
|
branch
|
|
eject-contour 'serifLT'
|
|
eject-contour 'strokeLT'
|
|
include : LeftHook (SB + LeftHook.extension) CAP MIDDLE
|
|
save 'Thookleft' 0x1AC
|
|
|
|
sketch # cyrtedescender.upright
|
|
include eMarks
|
|
include : TShape XH
|
|
save 'cyrte.upright'
|
|
|
|
include [CyrDescender (MIDDLE + HALFSTROKE * HVCONTRAST)]
|
|
include pMarks
|
|
save 'cyrtedescender.upright'
|
|
|
|
italic-variant 'cyrtedescender' 0x4AD
|
|
|
|
sketch # tau
|
|
include eMarks
|
|
include : HBar SB RIGHTSB (XH - HALFSTROKE)
|
|
include : VBar MIDDLE 0 XH
|
|
save 'tau' 0x3C4
|
|
|
|
### t
|
|
symbol-block 't'
|
|
define tcenter : MIDDLE - TBALANCE - STROKE * 0.5 * HVCONTRAST
|
|
define [SmallTShape top bot] : glyph-construction
|
|
local hookx : tcenter + (WIDTH - SB * 2) * 0.8 + STROKE * 0.25 * HVCONTRAST
|
|
local turn : [mix tcenter hookx 0.5] + CORRECTION_OMIDS
|
|
local smb : Math.max HOOK ((turn - tcenter) * 1.2)
|
|
|
|
local g : dispiro
|
|
widths.lhs
|
|
flat tcenter top [heading DOWNWARD]
|
|
curl tcenter (bot + smb)
|
|
hookend (bot + O)
|
|
g4 hookx (bot + HOOK)
|
|
include g
|
|
set-anchor 'bottomright' BASE g.knots.(g.knots.length - 1).x g.knots.(g.knots.length - 1).y
|
|
set-anchor 'below' BASE [mix tcenter g.knots.(g.knots.length - 1).x : linreg 18 0.375 126 0.5 STROKE] bot
|
|
include : dispiro
|
|
widths.rhs
|
|
flat (tcenter + HALFSTROKE - LONGJUT + TBALANCE2 - HALFSTROKE * TANSLANT) XH
|
|
curl (tcenter + HALFSTROKE + LONGJUT + TBALANCE2 - HALFSTROKE * TANSLANT) XH
|
|
|
|
sketch # t
|
|
set-width WIDTH
|
|
include bMarks
|
|
include : SmallTShape CAP 0
|
|
save 't' 't'
|
|
turned nothing 0x287 't' MIDDLE (XH / 2) pMarks
|
|
|
|
sketch # tltail
|
|
include ifMarks
|
|
include glyphs.t
|
|
local attach : utp currentGlyph.gizmo glyphs.t.anchors.bottomright
|
|
include : VBarRight attach.x 0 attach.y
|
|
include : VerticalHook (attach.x - HALFSTROKE * HVCONTRAST) 0 (-HOOKX) HOOK
|
|
|
|
save 'tltail' 0x1AB
|
|
|
|
sketch # thooktop
|
|
include eMarks
|
|
include : SmallTShape (XH - HALFSTROKE) 0
|
|
include : VerticalHook (tcenter + HALFSTROKE * HVCONTRAST) XH HOOKX (-HOOK)
|
|
|
|
save 'thooktop' 0x1AD
|
|
|
|
sketch # trtail
|
|
include ifMarks
|
|
include : SmallTShape CAP DESCENDER
|
|
|
|
save 'trtail' 0x288
|
|
|
|
sketch # tcurlytail
|
|
include bMarks
|
|
local fine : adviceBlackness 3.5
|
|
local rinner : LONGJUT / 2 - fine / 2
|
|
local x2 : mix SB tcenter 0.4
|
|
local y2 : -fine
|
|
include : HBarTop (tcenter + HALFSTROKE - LONGJUT + TBALANCE2) (tcenter + HALFSTROKE + LONGJUT + TBALANCE2) XH
|
|
include : dispiro
|
|
widths.lhs
|
|
flat tcenter CAP [heading DOWNWARD]
|
|
curl tcenter (fine + rinner * 2)
|
|
CurlyTail fine rinner (tcenter+ STROKE * HVCONTRAST) 0 (tcenter + STROKE * HVCONTRAST + LONGJUT) x2 y2
|
|
|
|
save 'tcurlytail' 0x236
|
|
|
|
sketch # tbar
|
|
|
|
include glyphs.t AS_BASE
|
|
include : HOverlayBar ([mix MIDDLE SB 0.7] - TBALANCE * 0.5 - STROKE * 0.25 * HVCONTRAST) ([mix MIDDLE RIGHTSB 0.7] - TBALANCE * 0.5 - STROKE * 0.25 * HVCONTRAST) [mix 0 XH 0.6]
|
|
save 'tbar' 0x167
|
|
|
|
### S and s
|
|
symbol-block 'S'
|
|
sketch # S
|
|
set-width WIDTH
|
|
include capitalMarks
|
|
define smooth : adviceSSmooth CAP (-1)
|
|
include : dispiro
|
|
widths.lhs
|
|
g4 RIGHTSB (CAP - HOOK)
|
|
hookstart CAPO
|
|
g4 SB (CAP - smooth)
|
|
alsothru 0.5 0.5 [widths (ESS / 2) (ESS / 2)]
|
|
g4 RIGHTSB smooth [widths 0 STROKE]
|
|
hookend O
|
|
g4 SB HOOK
|
|
save 'S' 'S'
|
|
save 'cyrDze' 0x405
|
|
|
|
sketch # s
|
|
set-width WIDTH
|
|
include eMarks
|
|
define smooth : adviceSSmooth XH (-1 - [linreg 18 0 126 1 STROKE] * (3 - (WIDTH / 500) * 2.5 * [linreg 18 0 126 1 STROKE]))
|
|
include : dispiro
|
|
widths.lhs
|
|
g4 (RIGHTSB + OX / 4) (XH - SHOOK)
|
|
hookstart XO
|
|
g4.down.mid (SB + OX / 8) (XH - smooth)
|
|
alsothru 0.5 0.5 [widths.center ESS]
|
|
g4.down.mid (RIGHTSB - OX / 8) (smooth) [widths 0 STROKE]
|
|
hookend O
|
|
g4 (SB - OX / 4) SHOOK
|
|
save 's' 's'
|
|
save 'cyrdze' 0x455
|
|
|
|
sketch # revS
|
|
include capitalMarks
|
|
local smooth : adviceSSmooth CAP 1
|
|
include : dispiro
|
|
widths.rhs
|
|
g4 SB (CAP - HOOK)
|
|
hookstart CAPO
|
|
g4 RIGHTSB (CAP - smooth)
|
|
alsothru 0.5 0.5 [widths (ESS / 2) (ESS / 2)]
|
|
g4 SB smooth [widths STROKE 0]
|
|
hookend O
|
|
g4 RIGHTSB HOOK
|
|
|
|
save 'revS' 0x1A7
|
|
|
|
sketch # revs
|
|
include eMarks
|
|
local smooth : adviceSSmooth XH (1 + [linreg 18 0 126 1 STROKE] * (3.25 - (WIDTH / 500) * 2 * [linreg 18 0 126 1 STROKE]))
|
|
include : dispiro
|
|
widths.rhs
|
|
g4 SB (XH - SHOOK)
|
|
hookstart XO
|
|
g4 RIGHTSB (XH - smooth)
|
|
alsothru 0.5 0.5 [widths.center ESS]
|
|
g4 SB (smooth) [widths STROKE 0]
|
|
hookend O
|
|
g4 RIGHTSB SHOOK
|
|
|
|
save 'revs' 0x1A8
|
|
save 'cyrghe.italic'
|
|
|
|
sketch # srtail
|
|
include glyphs.rtailBR
|
|
apply-transform : Upright
|
|
apply-transform : Translate (SB + STROKE * HVCONTRAST + OXHOOK) 0
|
|
apply-transform : Italify
|
|
include pMarks
|
|
include glyphs.s
|
|
include : VBarLeft (SB + OXHOOK) 0 SHOOK
|
|
|
|
save 'srtail' 0x282
|
|
|
|
sketch # Sswash
|
|
include ifMarks
|
|
include glyphs.S
|
|
include : dispiro
|
|
widths.lhs [adviceBlackness 4.5]
|
|
g4 (SB + OXHOOK) HOOK
|
|
alsothru 0.15 0.6 important
|
|
flat (RIGHTSB - 1) DESCENDER [widths STROKE 0]
|
|
curl RIGHTSB DESCENDER
|
|
|
|
save 'Sswash' 0x2C7E
|
|
|
|
sketch # sswash
|
|
include pMarks
|
|
include glyphs.s
|
|
include : dispiro
|
|
widths.lhs [adviceBlackness 4.5]
|
|
g4 (SB + OXHOOK) SHOOK
|
|
alsothru 0.2 0.6 important
|
|
flat (RIGHTSB - 1) DESCENDER [widths STROKE 0]
|
|
curl RIGHTSB DESCENDER
|
|
save 'sswash' 0x23F
|
|
|
|
### Z and z
|
|
symbol-block 'Z'
|
|
sketch # Z
|
|
set-width WIDTH
|
|
include capitalMarks
|
|
|
|
local cor : 1.15 * HVCONTRAST
|
|
|
|
include : HBarTop SB RIGHTSB CAP
|
|
|
|
start-from SB STROKE
|
|
line-to (SB + STROKE * cor) STROKE
|
|
line-to RIGHTSB (CAP - STROKE)
|
|
line-to (RIGHTSB - STROKE * cor) (CAP - STROKE)
|
|
reverse-last
|
|
|
|
include : HBarBottom SB RIGHTSB 0
|
|
tag-contour 'strokeBottom'
|
|
|
|
if SLAB : begin
|
|
include : DownwardLeftSerif SB CAP VJUT
|
|
include : UpwardRightSerif RIGHTSB 0 VJUT
|
|
tag-contour 'serifRB'
|
|
save 'Z' 'Z'
|
|
save 'Zeta' 0x396
|
|
|
|
sketch # z
|
|
set-width WIDTH
|
|
include eMarks
|
|
|
|
local cor : 1.2 * HVCONTRAST
|
|
|
|
include : HBarTop SB RIGHTSB XH
|
|
|
|
start-from SB STROKE
|
|
line-to (SB + STROKE * cor) STROKE
|
|
line-to RIGHTSB (XH - STROKE)
|
|
line-to (RIGHTSB - STROKE * cor) (XH - STROKE)
|
|
reverse-last
|
|
|
|
include : HBarBottom SB RIGHTSB 0
|
|
tag-contour 'strokeBottom'
|
|
if SLAB : begin
|
|
include : DownwardLeftSerif SB XH VJUT
|
|
include : UpwardRightSerif RIGHTSB 0 VJUT
|
|
tag-contour 'serifRB'
|
|
|
|
save 'z' 'z'
|
|
|
|
sketch # Zdtail
|
|
include glyphs.Z AS_BASE
|
|
eject-contour 'strokeBottom'
|
|
eject-contour 'serifRB'
|
|
include : dispiro
|
|
widths.lhs
|
|
flat SB 0 [heading RIGHTWARD]
|
|
curl (RIGHTSB - HOOKX) 0
|
|
archv
|
|
straight.down.end RIGHTSB (-HOOK) [widths.heading 0 STROKE DOWNWARD]
|
|
|
|
save 'Zdtail' 0x224
|
|
|
|
sketch # zdtail
|
|
include glyphs.z AS_BASE
|
|
eject-contour 'strokeBottom'
|
|
eject-contour 'serifRB'
|
|
include : dispiro
|
|
widths.lhs
|
|
flat SB 0 [heading RIGHTWARD]
|
|
curl (RIGHTSB - HOOKX) 0
|
|
archv
|
|
straight.down.end RIGHTSB (-HOOK) [widths.heading 0 STROKE DOWNWARD]
|
|
|
|
save 'zdtail' 0x225
|
|
|
|
sketch # Zswash
|
|
include ifMarks
|
|
local cor 1.15
|
|
|
|
include : HBarTop SB RIGHTSB CAP
|
|
|
|
start-from SB 0
|
|
line-to (SB + STROKE * cor) 0
|
|
line-to RIGHTSB (CAP - STROKE)
|
|
line-to (RIGHTSB - STROKE * cor) (CAP - STROKE)
|
|
reverse-last
|
|
|
|
include : dispiro
|
|
widths.lhs
|
|
g4 SB 0
|
|
alsothru 0.36 0.6 important
|
|
flat (RIGHTSB - 1) DESCENDER
|
|
curl RIGHTSB DESCENDER
|
|
if SLAB : begin
|
|
include : DownwardLeftSerif SB CAP VJUT
|
|
|
|
save 'Zswash' 0x2C7F
|
|
|
|
sketch # zswash
|
|
include pMarks
|
|
|
|
include : HBarTop SB RIGHTSB XH
|
|
|
|
local cor 1.2
|
|
start-from SB 0
|
|
line-to (SB + STROKE * cor) 0
|
|
line-to RIGHTSB (XH - STROKE)
|
|
line-to (RIGHTSB - STROKE * cor) (XH - STROKE)
|
|
reverse-last
|
|
|
|
include : dispiro
|
|
widths.lhs
|
|
g4 (SB - OXHOOK) 0
|
|
alsothru 0.36 0.6 important
|
|
flat (RIGHTSB - 1) DESCENDER
|
|
curl RIGHTSB DESCENDER
|
|
|
|
if SLAB : begin
|
|
include : DownwardLeftSerif SB XH VJUT
|
|
|
|
save 'zswash' 0x240
|
|
|
|
sketch # Zdesc
|
|
include glyphs.Z AS_BASE
|
|
eject-contour 'serifRB'
|
|
include : VBarRight [mix SB RIGHTSB 1.05] (HALFSTROKE - LONGJUT) STROKE
|
|
|
|
save 'Zdesc' 0x2C6B
|
|
|
|
sketch # zdesc
|
|
include glyphs.z AS_BASE
|
|
eject-contour 'serifRB'
|
|
include : VBarRight [mix SB RIGHTSB 1.05] (HALFSTROKE - LONGJUT) STROKE
|
|
|
|
save 'zdesc' 0x2C6C
|
|
|
|
sketch # zcurlytail
|
|
include eMarks
|
|
|
|
local fine : adviceBlackness 4
|
|
local rinner : Math.max (XH * 0.04) (fine * 0.3)
|
|
local x2 : mix (SB + STROKE) RIGHTSB 0.3
|
|
local x1 : mix x2 (RIGHTSB - fine - rinner * 1.5) 0.45
|
|
local y2 : -XH * 0.2
|
|
local m1 : RIGHTSB - fine / 2 - rinner * 1.5 + O
|
|
include : HCurlyTail fine STROKE rinner SB m1 (RIGHTSB + fine / 2) x1 x2 y2
|
|
|
|
include glyphs.z
|
|
eject-contour 'strokeBottom'
|
|
eject-contour 'serifRB'
|
|
save 'zcurlytail' 0x291
|