Iosevka/glyphs/letters-unified-basic.aki

2900 lines
92 KiB
Plaintext

###########################################################################################
# LETTERFORM COMMON PARAMETERS
###########################################################################################
define [CyrDescender x shift] : glyph-construction
local descenderOverflow : if SLAB SIDEJUT ((RIGHTSB - SB) * [fallback shift 0.1])
include : VBarRight (x + descenderOverflow + 0.25 * STROKE) (HALFSTROKE - LONGJUT) STROKE
if (descenderOverflow > HALFSTROKE) : include : HBarTop (x - HALFSTROKE * CORRECTION_HX) (x + descenderOverflow) STROKE
###########################################################################################
# UNIFIED LETTERFORMS : LATIN ORIGINALS
###########################################################################################
### I
symbol-block 'I'
create-glyph 'I.straight' : glyph-construction
include capitalMarks
include : VBar MIDDLE 0 CAP
define [ISerifShape top] : glyph-construction
include : dispiro
widths.rhs
flat (MIDDLE - WIDTH * 0.26 - STROKE * globalTransform.yx) top
curl (MIDDLE + WIDTH * 0.26 - STROKE * globalTransform.yx) top
# Bar
include : VBar MIDDLE 0 top
# Bottom serif
include : dispiro
widths.lhs
flat (MIDDLE - WIDTH * 0.26 + STROKE * globalTransform.yx) 0
curl (MIDDLE + WIDTH * 0.26 + STROKE * globalTransform.yx) 0
create-glyph 'I.serifed' : glyph-construction
include capitalMarks
include : ISerifShape CAP
select-variant 'I' 'I' 'serifed'
alias 'Iota' 0x399 'I'
alias 'cyrUkrainianI' 0x406 'I'
alias 'Palochka' 0x4C0 'I'
create-glyph 'smcpI' : glyph-construction
assign-unicode 0x26A
include eMarks
include : ISerifShape XH
### dotless i and i
symbol-block 'i'
create-glyph 'dotlessi.straight' : glyph-construction
include eMarks
include : VBar (MIDDLE) 0 XH
create-glyph 'dotlessi.hooky' : glyph-construction
include glyphs.'dotlessi.straight' AS_BASE
include : LeftwardTopSerif MIDDLE XH LONGJUT
create-glyph 'dotlessi.zshaped' : glyph-construction
include glyphs.'dotlessi.hooky' AS_BASE
include : RightwardBottomSerif MIDDLE 0 LONGJUT
create-glyph 'dotlessi.serifed' : glyph-construction
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
create-glyph 'dotlessi.italic' : glyph-construction
local left : [mix SB RIGHTSB 0.48] - HALFSTROKE * CORRECTION_HX
local right : mix SB RIGHTSB 1.05
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 (SHOOK * 0.8)
include : dispiro
flat (left - LONGJUT + HALFSTROKE * CORRECTION_HX) XH [widths 0 STROKE]
curl left XH
include eMarks
set-anchor 'above' BASE (left + HALFSTROKE * CORRECTION_HX) XH
set-anchor 'below' BASE middle 0
select-variant 'dotlessi' 0x131 [if para.italicangle 'italic' 'serifed']
create-glyph 'iogonek.dotless' : glyph-construction
include glyphs.dotlessi AS_BASE
include glyphs.ogonekBelow
create-glyph 'i' : glyph-construction
set-width WIDTH
assign-unicode 'i'
include glyphs.dotlessi AS_BASE
include glyphs.dotAbove
alias 'cyrUkrainiani' 0x456 'i'
turned nothing 0x1D09 'i' MIDDLE (XH / 2) pMarks
# 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]
create-glyph 'iota' : glyph-construction
assign-unicode 0x3B9
include eMarks
include : IotaShape XH
alias 'latiniota' 0x269 'iota'
create-glyph 'latinIota' : glyph-construction
assign-unicode 0x196
include capitalMarks
include : IotaShape CAP
### J
symbol-block 'J'
create-glyph 'J.straight' : glyph-construction
set-width WIDTH
include capitalMarks
set-anchor 'overlay' BASE (RIGHTSB - STROKE * CORRECTION_HX - JBALANCE2) (CAP * BARPOS)
local slope (STROKE * 0.00092)
local expand 0.35
local coexpand ((1 - expand) / 2)
local hookx (0.5 * SB + OXHOOK)
include : dispiro
widths.rhs
flat (RIGHTSB - JBALANCE2) CAP [heading DOWNWARD]
curl (RIGHTSB - JBALANCE2) SMOOTH
hookend O
g4 hookx HOOK
create-glyph 'J.shorthook' : glyph-construction
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 + OXHOOK)
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]
create-glyph 'J.serifed' : glyph-construction
set-width WIDTH
include glyphs.'J.straight' AS_BASE
include : LeftwardTopSerif (RIGHTSB - HALFSTROKE * CORRECTION_HX - JBALANCE2) CAP LONGJUT
select-variant 'J' 'J' 'serifed'
alias 'cyrJe' 0x408 'J'
### dotless j and j
symbol-block 'j'
create-glyph 'dotlessj.straight' : glyph-construction
include pMarks
set-anchor 'above' BASE (MIDDLE + JBALANCE - STROKE * 0.166 * CORRECTION_HX) XH
set-anchor 'overlay' BASE (MIDDLE + JBALANCE - STROKE * 0.166 * CORRECTION_HX) (XH / 2)
local center : MIDDLE + JBALANCE + HALFSTROKE * CORRECTION_HX
local hookx : center - (WIDTH * 0.5) - STROKE * CORRECTION_HX + 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)
create-glyph 'dotlessj.serifed' : glyph-construction
include pMarks
include glyphs.'dotlessj.straight' AS_BASE
include : LeftwardTopSerif (MIDDLE + JBALANCE) XH LONGJUT
select-variant 'dotlessj' 0x237 'serifed'
create-glyph 'j' : glyph-construction
set-width WIDTH
assign-unicode 'j'
include glyphs.dotlessj AS_BASE
include glyphs.dotAbove
alias 'cyrje' 0x458 'j'
create-glyph 'jcurlytail' : glyph-construction
assign-unicode 0x29D
include pMarks
set-anchor 'above' BASE (MIDDLE + JBALANCE) XH
local fine : adviceBlackness 3.5
local rinner : LONGJUT / 2 - fine / 2
local m1 : MIDDLE - HALFSTROKE * CORRECTION_HX + 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
### 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 + CORRECTION_HX * HALFSTROKE) top JUT
include : UpwardRightSerif (RIGHTSB - OX) 0 VJUT
create-glyph 'L' : glyph-construction
set-width WIDTH
assign-unicode 'L'
include capitalMarks
include : LShape CAP
turned 'turnL' 0xA780 'L' MIDDLE (CAP / 2)
create-glyph 'Lcaron' : glyph-construction
assign-unicode 0x13D
include glyphs.commaAbove
apply-transform : Translate (WIDTH + (RIGHTSB - SB) * 0.375) 0
include glyphs.L AS_BASE
create-glyph 'Lslash' : glyph-construction
assign-unicode 0x141
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)
create-glyph 'Ldot' : glyph-construction
assign-unicode 0x13F
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)
create-glyph 'Lbar' : glyph-construction
assign-unicode 0x23D
include glyphs.L AS_BASE
include : HOverlayBar (SB * 0.3) [mix (SB + STROKE) (RIGHTSB - STROKE) 0.55] (CAP * BARPOS)
create-glyph 'smcpL' : glyph-construction
assign-unicode 0x29F
include eMarks
include : LShape XH
### l
symbol-block 'l'
create-glyph 'l.straight' : glyph-construction
include bMarks
include : VBar MIDDLE 0 CAP
create-glyph 'l.hooky' : glyph-construction
include bMarks
include : VBar MIDDLE 0 (CAP - STROKE)
include : LeftwardTopSerif MIDDLE CAP LONGJUT
create-glyph 'l.zshaped' : glyph-construction
include bMarks
include glyphs.'l.hooky'
include : RightwardBottomSerif MIDDLE 0 LONGJUT
create-glyph 'l.serifed' : glyph-construction
include bMarks
local balance LBALANCE
include : VBar (MIDDLE + balance) 0 CAP
include : LeftwardTopSerif (MIDDLE + balance) CAP (LONGJUT - balance)
include : CenterBottomSerif MIDDLE 0 LONGJUT
set this.barx (MIDDLE + balance)
create-glyph 'l.italic' : glyph-construction
local left : mix SB RIGHTSB 0.3
local right : mix SB RIGHTSB 1.1
local middle : mix left right 0.54
include : dispiro
widths.lhs
flat left CAP [heading DOWNWARD]
curl left (SMALLSMOOTHB * 0.85)
hookend O
g4 right SHOOK
include : dispiro
flat SB CAP [widths 0 STROKE]
curl left CAP
include bMarks
set-anchor 'above' BASE (left + HALFSTROKE) CAP
set-anchor 'below' BASE middle 0
set this.barx (left + HALFSTROKE)
select-variant 'l' 'l' [if para.italicangle 'italic' 'serifed']
alias 'palochka' 0x4CF 'l'
turned 'turnl' 0xA781 'l' MIDDLE (XH / 2) pMarks
create-glyph 'lcaron' : glyph-construction
assign-unicode 0x13E
include glyphs.commaAbove
apply-transform : Translate (WIDTH + (RIGHTSB - SB) * 0.375) 0
include glyphs.l AS_BASE
create-glyph 'lslash' : glyph-construction
assign-unicode 0x142
include glyphs.l AS_BASE
include : FlatSlashShape [tp [Upright] glyphs.l.anchors.above].x [mix 0 CAP BARPOS] (0.5 * OVERLAYSTROKE)
create-glyph 'ldot' : glyph-construction
assign-unicode 0x140
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]
create-glyph 'lrtail' : glyph-construction
assign-unicode 0x26D
include glyphs.rtailBR
apply-transform : Translate (MIDDLE + HALFSTROKE * CORRECTION_HX) 0
include glyphs.'l.hooky'
include ifMarks
create-glyph 'lcurlytail' : glyph-construction
assign-unicode 0x234
include bMarks
local fine : adviceBlackness 3.5
local rinner : LONGJUT / 2 - fine / 2
local m1 : MIDDLE + HALFSTROKE * CORRECTION_HX
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
create-glyph 'ltildeover' : glyph-construction
assign-unicode 0x26B
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
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)
create-glyph 'lbelt' : glyph-construction
assign-unicode 0x26C
include glyphs.'l.serifed' AS_BASE
include : Belt
create-glyph 'lbeltrtail' : glyph-construction
assign-unicode 0xA78E
include glyphs.lrtail AS_BASE
include : Belt
create-glyph 'looprevesh' : glyph-construction
assign-unicode 0x1AA
include ifMarks
local fine : adviceBlackness 5
include : dispiro
widths.center fine
g4 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
g4 (MIDDLE + HOOKX) (-HOOK) [heading RIGHTWARD]
### V and v
define VShape : symbol-block 'V, v and nu'
local cornerdist : HALFSTROKE * CORRECTION_HX * [if SLAB 1.2 1]
local vcurviness : if (SLAB && !para.isItalic) 0.15 0.3
define [VShape top] : glyph-construction
include : dispiro
widths.lhs
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]
#bottom cap
start-from (MIDDLE + cornerdist) 0
line-to (MIDDLE - cornerdist) 0
line-to MIDDLE VShape.fine
include : dispiro
widths.rhs
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]
tag-contour 'strokeUp'
include : AIVSerifs top
set VShape.fine : if SLAB (STROKE * 0.9) (STROKE * 0.8)
create-glyph 'V' : glyph-construction
set-width WIDTH
assign-unicode 'V'
include capitalMarks
include : VShape CAP
create-glyph 'v' : glyph-construction
assign-unicode 'v'
include eMarks
include : VShape XH
# create-glyph 'v.italic' : glyph-construction
# include eMarks
# include : VShape XH
# if (SLAB && para.isItalic) : begin
# eject-contour 'serifLT'
# eject-contour 'serifRT'
# include : LeftwardTopSerif SB XH SIDEJUT
#
# italic-variant '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 10 unimportant g2
g4 (MIDDLE + cornerdist) 0 [widths.rhs VShape.fine]
create-glyph 'vhooktop' : glyph-construction
assign-unicode 0x2C71
include eMarks
include : VHooktopShape XH
create-glyph 'cyrIzhitsa' : glyph-construction
assign-unicode 0x474
include capitalMarks
include : VHooktopShape CAP
alias 'cyrizhitsa' 0x475 'vhooktop'
turned 'turnv' 0x28C 'v' MIDDLE (XH / 2)
create-glyph 'nu' : glyph-construction
assign-unicode 0x3BD
include eMarks
local xmid : MIDDLE + HALFSTROKE * 0.75
include : dispiro
g4 (SB + 0.4 * STROKE * CORRECTION_HX) (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
if SLAB : begin
include : LeftwardTopSerif SB XH SIDEJUT
* VShape
### A
symbol-block 'A'
create-glyph 'A' : glyph-construction
set-width WIDTH
assign-unicode 'A'
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
include : HBarTop [mix SB RIGHTSB p] [mix RIGHTSB SB p] (XH / 2)
alias 'Alpha' 0x391 'A'
alias 'cyrA' 0x410 'A'
turned nothing 0x2C6F 'A' MIDDLE (CAP / 2)
### a
symbol-block 'a'
create-glyph 'a.upright' : glyph-construction
set-width WIDTH
include eMarks
set-anchor 'trailing' BASE (RIGHTSB - markHalfStroke) 0
local bartop (XH * BARPOS * 1.02 + HALFSTROKE)
local lowslope : shoulderMidSlope SHOULDERFINE nothing (-1)
local lowmiddle : mix SB (RIGHTSB - HALFSTROKE * CORRECTION_HX) [linreg 72 0.51 120 0.56 STROKE]
local barsmooth : mix SB RIGHTSB 0.55
include : dispiro
widths.lhs
flat RIGHTSB 0 [heading UPWARD]
curl RIGHTSB (XH - SMOOTHB * [Math.pow (AHOOK / HOOK) 0.375])
hookend XO
g4 SB (XH - AHOOK)
include : dispiro
widths.lhs
flat (RIGHTSB + O) bartop [heading LEFTWARD]
curl barsmooth bartop
archv
g4 (SB + OX) (bartop * 0.475)
arcvh
g4 (lowmiddle + (-lowslope) * STROKE) O [heading {.y 1 .x lowslope}]
archv
flat (RIGHTSB - STROKE * CORRECTION_HX) (SMALLSMOOTHB * 0.9) [widths 0 SHOULDERFINE]
curl (RIGHTSB - STROKE * CORRECTION_HX) (SMALLSMOOTHB * 0.9 + 1)
if SLAB : begin
include : tagged 'serifRB' : RightwardBottomSerif RIGHTSB 0 SIDEJUT
create-glyph 'a.italic' : glyph-construction
set-width WIDTH
include eMarks
set-anchor 'trailing' BASE (RIGHTSB - markHalfStroke) 0
include : OBarRightShape
include : VBarRight RIGHTSB 0 XH
if SLAB : begin
include : RightwardBottomSerif RIGHTSB 0 SIDEJUT
tag-contour 'serifRB'
create-glyph 'a' : glyph-construction
set-width WIDTH
assign-unicode 'a'
if (para.italicangle > 0)
then : include glyphs.'a.italic' AS_BASE
else : include glyphs.'a.upright' AS_BASE
alias 'cyra' 0x430 'a'
create-glyph 'scripta' : glyph-construction
assign-unicode 0x0251
include eMarks
include : OBarRightShape
start-from RIGHTSB 0
line-to (RIGHTSB - STROKE * CORRECTION_HX) 0
line-to (RIGHTSB - STROKE * CORRECTION_HX) (XH - STROKE / 2)
line-to RIGHTSB (XH - O)
if SLAB : begin
include : RightwardBottomSerif RIGHTSB 0 SIDEJUT
tag-contour 'serifRB'
turned 'turna' 0x250 'a.upright' 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 * CORRECTION_HX) 0 [widths.lhs (WShape.fine * 0.8)]
# bottom cap 1
start-from (WShape.m1 + WShape.fine / 2 * CORRECTION_HX) 0
line-to (WShape.m1 - WShape.fine / 2 * CORRECTION_HX) 0
line-to WShape.m1 WShape.fine
include : dispiro
widths.rhs WShape.fine
straight.down.start (MIDDLE + WShape.fine / 2 * CORRECTION_HX) wheight [heading DOWNWARD]
quadcontrols 0 0.1 6 unimportant
g4 (WShape.m1 + WShape.fine / 2 * CORRECTION_HX) 0 [widths.rhs WShape.fine]
include : dispiro
widths.lhs WShape.fine
straight.down.start (MIDDLE - WShape.fine / 2 * CORRECTION_HX) wheight [heading DOWNWARD]
quadcontrols 0 0.1 6 unimportant
g4 (WShape.m2 - WShape.fine / 2 * CORRECTION_HX) 0 [widths.lhs WShape.fine]
# bottom cap 2
start-from (WShape.m2 + WShape.fine / 2 * CORRECTION_HX) 0
line-to (WShape.m2 - WShape.fine / 2 * CORRECTION_HX) 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 * CORRECTION_HX) 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
create-glyph 'W' : glyph-construction
set-width WIDTH
assign-unicode 'W'
include capitalMarks
include : WShape CAP
alias 'cyrWe' 0x51C 'W'
create-glyph 'w' : glyph-construction
set-width WIDTH
assign-unicode 'w'
include eMarks
include : WShape XH
alias 'cyrwe' 0x51D 'w'
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 * CORRECTION_HX) 0 [widths.rhs (WShape.fine * 0.8)]
include : VerticalHook (RIGHTSB - HALFSTROKE * CORRECTION_HX) (top - HOOK) (HOOKX * 0.65) (-HOOK + HALFSTROKE)
create-glyph 'Whooktop' : glyph-construction
assign-unicode 0x2C72
include capitalMarks
include : WHooktopShape CAP
create-glyph 'whooktop' : glyph-construction
assign-unicode 0x2C73
include eMarks
include : WHooktopShape XH
create-glyph 'ww' : glyph-construction
assign-unicode 0x2AC
include : WShape (CAP / 2)
apply-transform : Upright
apply-transform : Translate 0 (CAP / 2)
apply-transform : Italify
include : WShape (CAP / 2)
### X and x
symbol-block 'X'
create-glyph 'X' : glyph-construction
set-width WIDTH
assign-unicode 'X'
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
alias 'Chi' 0x3A7 'X'
alias 'cyrHa' 0x425 'X'
create-glyph 'x' : glyph-construction
include eMarks
assign-unicode 'x'
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
create-glyph 'chi' : glyph-construction
set-width WIDTH
assign-unicode 0x3C7
include pMarks
include : xStrand SB DESCENDER RIGHTSB XH 0.05 0.4 0.1
include : xStrand SB XH RIGHTSB DESCENDER 0.05 0.4 0.1
alias 'cyrha' 0x445 'x'
composite nothing glyphs.cyrHa [CyrDescender RIGHTSB] [into-unicode 0x4B2]
composite nothing 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
create-glyph 'Y' : glyph-construction
set-width WIDTH
assign-unicode 'Y'
include capitalMarks
include : YShape CAP
alias 'Upsilon' 0x3A5 'Y'
alias 'cyrUe' 0x4AE 'Y'
create-glyph 'Yhooktop' : glyph-construction
assign-unicode 0x1B3
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 8 unimportant
g4 (MIDDLE + STROKE / 2 * CORRECTION_HX) cross
create-glyph 'cyrue' : glyph-construction
assign-unicode 0x4AF
include pMarks
include : YShape XH DESCENDER
create-glyph 'smcpY' : glyph-construction
assign-unicode 0x28F
include eMarks
include : YShape XH
### y
symbol-block 'y'
define [SmallYShape top bottom] : glyph-construction
local turnp : top / (top - bottom)
local xbottom : mix SB RIGHTSB [linreg 18 0.3025 108 0.28 STROKE]
local xb : mix SB RIGHTSB [linreg 10 0.495 108 0.51 STROKE]
local yb : mix [mix bottom top (-DESCENDER / (XH - DESCENDER))] top (0.05 * turnp)
include : tagged 'strokeR' : xStrand xbottom bottom RIGHTSB top 0.1 0.6 0.14
include : tagged 'strokeL' : halfXStrand SB top xb yb (0.1 * turnp) 0.4 (0.14 * turnp)
if SLAB : begin
include : AIVSerifs top
include : LeftwardBottomSerif xbottom bottom (SIDEJUT + JUT / 4)
create-glyph 'y.upright' : glyph-construction
include pMarks
include : SmallYShape XH DESCENDER
create-glyph 'y.italic' : glyph-construction
if SLAB
: then
include pMarks
include : nShoulder (SB + STROKE * CORRECTION_HX) RIGHTSB 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
italic-variant 'y' 'y'
alias 'cyru' 0x443 'y'
turned nothing 0x28E 'y.upright' MIDDLE (XH / 2) bMarks
create-glyph 'yhooktop' : glyph-construction
assign-unicode 0x1B4
include glyphs.'y.upright' AS_BASE
eject-contour 'strokeR'
eject-contour 'serifRT'
local xbottom : mix SB RIGHTSB [linreg 18 0.36 108 0.27 STROKE]
include : dispiro
widths.center
flat (xbottom + HALFSTROKE * CORRECTION_HX) DESCENDER [heading UPWARD]
curl (xbottom + HALFSTROKE * CORRECTION_HX) (DESCENDER + 1) [heading UPWARD]
alsothruthem {{0 0.05} {0.1 0.19} {0.2125 0.33} {0.44 0.6} {0.93 0.98}} important
g2 (RIGHTSB - HOOKX / 6) [mix DESCENDER (XH - HALFSTROKE) 0.98]
flat (RIGHTSB + HOOKX / 4 - 1) (XH - HALFSTROKE)
curl (RIGHTSB + HOOKX / 4) (XH - HALFSTROKE)
create-glyph 'cyrU' : glyph-construction
assign-unicode 0x423
include capitalMarks
include : SmallYShape CAP 0
create-glyph 'lambda' : glyph-construction
assign-unicode 0x3BB
include bMarks
local xTop : mix SB RIGHTSB 0.28
local turnp : XH / (XH - DESCENDER)
local xb : mix SB RIGHTSB 0.51
local yb : mix XH 0 (0.05 * turnp)
include : xStrand xTop CAP RIGHTSB 0 0.1 0.6 0.14
include : halfXStrand SB 0 xb yb (0.1 * turnp) 0.4 (0.14 * turnp)
create-glyph 'lambdaslash' : glyph-construction
assign-unicode 0x19B
include glyphs.lambda AS_BASE
include : FlatSlashShape ([tp [Upright] glyphs.l.anchors.above].x) [mix 0 CAP 0.7] (OVERLAYSTROKE / 2)
### 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 * CORRECTION_HX) 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) * CORRECTION_HX) top (SIDEJUT)
include : RightwardBottomSerif (RIGHTSB - O) 0 SIDEJUT
create-glyph 'K' : glyph-construction
set-width WIDTH
assign-unicode 'K'
include capitalMarks
include : VBarLeft SB 0 CAP
include : KShape CAP
if SLAB : begin
include : CenterTopSerif (SB + HALFSTROKE * CORRECTION_HX) CAP JUT
include : CenterBottomSerif (SB + HALFSTROKE * CORRECTION_HX) 0 JUT
alias 'Kappa' 0x39A 'K'
alias 'cyrKa' 0x41A 'K'
composite nothing glyphs.cyrKa [CyrDescender (RIGHTSB - O)] [into-unicode 0x49A]
create-glyph 'k' : glyph-construction
set-width WIDTH
assign-unicode 'k'
include bMarks
include : VBarLeft SB 0 CAP
include : KShape XH
if SLAB : begin
include : LeftwardTopSerif SB CAP SIDEJUT
if (para.italicangle === 0) : begin
include : CenterBottomSerif (SB + HALFSTROKE * CORRECTION_HX) 0 JUT
tag-contour 'serifLB'
create-glyph 'kappa' : glyph-construction
set-width WIDTH
assign-unicode 0x3BA
include eMarks
include : VBarLeft SB 0 XH
include : KShape XH
if SLAB : begin
include : LeftwardTopSerif SB XH SIDEJUT
create-glyph 'cyrka' : glyph-construction
set-width WIDTH
assign-unicode 0x43A
include eMarks
include : VBarLeft SB 0 XH
include : KShape XH
if SLAB : begin
include : CenterBottomSerif (SB + HALFSTROKE * CORRECTION_HX) 0 JUT
include : CenterTopSerif (SB + HALFSTROKE * CORRECTION_HX) XH JUT
composite nothing glyphs.cyrka [CyrDescender (RIGHTSB - O)] [into-unicode 0x49B]
alias 'latinkappa' 0x138 'cyrka'
create-glyph 'Khooktop' : glyph-construction
assign-unicode 0x198
include capitalMarks
include : KShape CAP
include : VBarLeft SB 0 (CAP - HOOK - HALFSTROKE)
include : VerticalHook (SB + HALFSTROKE * CORRECTION_HX) (CAP - HOOK - HALFSTROKE) HOOKX (-HOOK)
create-glyph 'khooktop' : glyph-construction
assign-unicode 0x199
include bMarks
include : KShape XH
include : VBarLeft SB 0 (CAP - HOOK - HALFSTROKE)
include : VerticalHook (SB + HALFSTROKE * CORRECTION_HX) (CAP - HOOK - HALFSTROKE) HOOKX (-HOOK)
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 fine : STROKE * CTHIN
include : dispiro
widths.rhs
flat (barleft - O) top [heading RIGHTWARD]
curl (curvleft - CORRECTION_OMIDS) top
archv
g4 (RIGHTSB - SB * 0.5 - OX) [mix top (bowl - STROKE) (SMOOTHB / (SMOOTHA + SMOOTHB))]
arcvh
flat (curvleft + 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'
create-glyph 'B' : glyph-construction
set-width WIDTH
assign-unicode 'B'
include capitalMarks
include : BShape CAP
alias 'Beta' 0x392 'B'
alias 'cyrVe' 0x412 'B'
create-glyph 'Bhookleft' : glyph-construction
assign-unicode 0x181
include glyphs.B AS_BASE
eject-contour "serifLT"
include : LeftHook SB CAP
create-glyph 'cyrve.italic' : glyph-construction
include eMarks
local mid : mix RIGHTSB SB 0.65
local midy : XH * BARPOS
local smb : XH - [mix (midy + HALFSTROKE) (XH - O - STROKE) (SMOOTHA / (SMOOTHA + SMOOTHB))] + globalTransform.yx * CORRECTION_HX * STROKE
local sma : [mix (STROKE + O) (midy - HALFSTROKE) (SMOOTHA / (SMOOTHA + SMOOTHB))] - globalTransform.yx * CORRECTION_HX * STROKE
include : dispiro
widths.lhs
flat mid (midy - HALFSTROKE) [heading RIGHTWARD]
curl MIDDLE (midy - HALFSTROKE)
archv
g4 (RIGHTSB + O) (XH - smb)
arcvh
g4 (MIDDLE - CORRECTION_OMIDS) XO
archv
flat.ai (SB + O) (XH - 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]
alias 'closeturnepsilon' 0x25E 'cyrve.italic'
create-glyph 'cyrve.upright' : glyph-construction
include eMarks
include : BShape XH
alias 'smcpB' 0x299 'cyrve.upright'
italic-variant 'cyrve' 0x432
create-glyph 'Bbar' : glyph-construction
assign-unicode 0x243
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 / 8) OVERLAYSTROKE]
create-glyph 'beta' : glyph-construction
assign-unicode 0x3B2
include ifMarks
local ymiddle : [mix 0 CAP 0.55] - HALFSTROKE
include : dispiro
widths.rhs
flat SB DESCENDER [heading UPWARD]
curl SB (CAP - SMALLSMOOTHA)
arcvh
g4 [mix SB (RIGHTSB - OX + O * 3) 0.5] CAPO
archv
g4 (RIGHTSB - OX + O * 3) [mix CAP ymiddle 0.5]
arcvh
flat [mix SB (RIGHTSB - OX + O * 3) 0.5] ymiddle
curl [mix SB RIGHTSB 0.3] ymiddle
include : dispiro
widths.rhs
g4 (RIGHTSB - ymiddle / 2 - HALFSTROKE) (ymiddle + STROKE)
archv
g4 (RIGHTSB - OX) [mix 0 (ymiddle + STROKE) 0.5]
arcvh
flat (RIGHTSB - ymiddle / 2 - HALFSTROKE) 0
curl (SB + HALFSTROKE) 0 [heading LEFTWARD]
### b
symbol-block 'b'
create-glyph 'b' : glyph-construction
set-width WIDTH
assign-unicode 'b'
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'
create-glyph 'bhooktop' : glyph-construction
assign-unicode 0x253
include bMarks
include : OBarLeftShape
include : HooktopLeftBar
if SLAB : begin
include : LeftwardBottomSerif SB 0 SIDEJUT
tag-contour 'serifLB'
create-glyph 'bbar' : glyph-construction
assign-unicode 0x180
include glyphs.b AS_BASE
include : HOverlayBar [mix SB 0 0.7] [mix SB RIGHTSB 0.5] [mix XH CAP 0.45]
create-glyph 'bdot' : glyph-construction
include glyphs.dotAbove
apply-transform : Translate (WIDTH + HALFSTROKE) 0
include glyphs.b AS_BASE
assign-unicode 0x1E03
create-glyph 'latinbe' : glyph-construction
assign-unicode 0x183
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
create-glyph 'zhuangtonesix' : glyph-construction
assign-unicode 0x185
include glyphs.b AS_BASE
eject-contour 'serifLT'
start-from (SB - O) CAP
line-to SB CAP
line-to (SB - STROKE) (CAP - STROKE)
line-to SB (CAP - STROKE * 2)
line-to (SB - O) (CAP - STROKE * 2)
reverse-last
### D
symbol-block 'D'
create-glyph 'D' : glyph-construction
set-width WIDTH
assign-unicode 'D'
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'
create-glyph 'Eth' : glyph-construction
assign-unicode 0xD0
include glyphs.D AS_BASE
include : HOverlayBar (SB * 0.3) [mix (SB + STROKE) (RIGHTSB - STROKE) 0.55] (CAP * BARPOS)
alias 'Dcroat' 0x110 'Eth'
alias 'arficanD' 0x189 'Eth'
create-glyph 'Dhookleft' : glyph-construction
assign-unicode 0x18A
include glyphs.D AS_BASE
eject-contour "serifLT"
include : LeftHook SB CAP
### d
symbol-block 'd'
create-glyph 'd' : glyph-construction
set-width WIDTH
assign-unicode 'd'
include bMarks
include : OBarRightShape
include : VBarRight RIGHTSB 0 CAP
if SLAB : begin
include : RightwardBottomSerif RIGHTSB 0 SIDEJUT
tag-contour 'serifRB'
include : LeftwardTopSerif (RIGHTSB - STROKE * CORRECTION_HX) CAP SIDEJUT
create-glyph 'dcroat' : glyph-construction
assign-unicode 0x111
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
create-glyph 'dcaron' : glyph-construction
assign-unicode 0x10F
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
create-glyph 'dcurlytail' : glyph-construction
assign-unicode 0x221
local fine : adviceBlackness 4
local rinner : clamp (WIDTH * 0.05) (XH * 0.05) (fine * 0.35)
local wide STROKE
local m1 : RIGHTSB - rinner * 2
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 * CORRECTION_HX) CAP SIDEJUT
create-glyph 'dhooktop' : glyph-construction
assign-unicode 0x257
include bMarks
include glyphs.'a.italic'
include : VerticalHook (RIGHTSB - HALFSTROKE * CORRECTION_HX) XH HOOKX (-HOOK)
create-glyph 'ddot' : glyph-construction
include glyphs.dotAbove
apply-transform : Translate (WIDTH - HALFSTROKE) 0
include glyphs.d AS_BASE
assign-unicode 0x1E0B
create-glyph 'latinde' : glyph-construction
assign-unicode 0x18C
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
### 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
if SLAB : begin
include : LeftwardTopSerif (SB * mul) top SIDEJUT
tag-contour 'serifLT'
include : CenterBottomSerif (SB * mul + HALFSTROKE * CORRECTION_HX) 0 JUT
create-glyph 'P' : glyph-construction
set-width WIDTH
assign-unicode 'P'
include capitalMarks
include : PShape CAP
alias 'Rho' 0x3A1 'P'
alias 'cyrEr' 0x420 'P'
create-glyph 'Phookleft' : glyph-construction
assign-unicode 0x1A4
include glyphs.P AS_BASE
eject-contour "serifLT"
include : LeftHook (SB * 1.25) CAP
list PShape
### p
symbol-block 'p'
create-glyph 'p' : glyph-construction
set-width WIDTH
assign-unicode 'p'
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 * CORRECTION_HX) DESCENDER JUT
tag-contour 'serifLB'
alias 'cyrer' 0x440 'p'
create-glyph 'phooktop' : glyph-construction
assign-unicode 0x1A5
include ifMarks
include : OBarLeftShape
include : HooktopLeftBar nothing DESCENDER
if SLAB : begin
include : CenterBottomSerif (SB + HALFSTROKE * CORRECTION_HX) DESCENDER JUT
tag-contour 'serifLB'
### rho
create-glyph 'rho' : glyph-construction
assign-unicode 0x3C1
include pMarks
include : OShape XH 0 (SB - OX + O) RIGHTSB
include : VBar (SB + HALFSTROKE * CORRECTION_HX + O) DESCENDER SMALLSMOOTHB
### 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 * CORRECTION_HX) 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)
create-glyph 'R' : glyph-construction
set-width WIDTH
assign-unicode 'R'
include capitalMarks
include : RShape CAP
set-anchor 'overlay' BASE (SB + STROKE * CORRECTION_HX) (CAP * PBARPOS - HALFSTROKE)
create-glyph 'smcpR' : glyph-construction
assign-unicode 0x280
include eMarks
include : RShape XH
create-glyph 'Yr' : glyph-construction
assign-unicode 0x1A6
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)
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) bowlTop
archv
g4 (SB + O) turn
arcvh
flat (SB + turnRadius) 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 * CORRECTION_HX) 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 * CORRECTION_HX) 0 JUT
include : LeftwardBottomSerif (SB + JUT / 8) 0 (SIDEJUT + JUT / 8)
create-glyph 'cyrYa' : glyph-construction
assign-unicode 0x42F
include capitalMarks
include : CyrYaShape CAP
create-glyph 'cyrya' : glyph-construction
assign-unicode 0x44F
include eMarks
include : CyrYaShape XH
turned 'invsmcpR' 0x281 'cyrya' MIDDLE (XH / 2)
### r
symbol-block 'r'
local rbar : SB + RBALANCE + STROKE * CORRECTION_HX
local [rBottomSerif y] : tagged 'serifLB' : CenterBottomSerif (rbar - HALFSTROKE * CORRECTION_HX + RBALANCE * 0.35) y (JUT + RBALANCE * 0.65)
local [rTopSerif y] : tagged 'serifLT' : LeftwardTopSerif (rbar - STROKE * CORRECTION_HX) y (SIDEJUT + RBALANCE * 0.3)
create-glyph 'r' : glyph-construction
set-width WIDTH
assign-unicode 'r'
include eMarks
local fine : SHOULDERFINE * 0.75
local rhookx (RIGHTSB + RBALANCE2 - OXE)
local mixp : 0.54 + 2 * globalTransform.yx * STROKE / WIDTH
local mixpin : 0.65 + globalTransform.yx * [linreg 72 0.1 108 0.5 STROKE]
local rmiddle : mix (rbar - fine) rhookx mixp
local rmiddlein : [mix rbar (rhookx - STROKE * CORRECTION_HX * 1.05) mixpin] - CORRECTION_OMIDS
local skew : Math.max 0 : (rmiddle - rmiddlein) / STROKE - globalTransform.yx * [linreg 72 0.25 108 0.75 STROKE]
include : dispiro
widths.lhs
g4 rhookx (XH - RHOOK) [heading {.y (-0.45) .x (-1.04 - globalTransform.yx)}]
alsothru 0.37 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 0.25
straight.down.end (rbar - fine * CORRECTION_HX) (XH * 0.53 + (SMALLSMOOTH - SMALLSMOOTHA)) [widths.heading fine 0 DOWNWARD]
include : VBarRight rbar 0 XH
set-anchor 'overlay' BASE rbar (XH * 0.5)
if SLAB : begin
include : rBottomSerif 0
include : rTopSerif XH
turned nothing 0x279 'r' MIDDLE (XH / 2) [anchorDeriv eMarks {.anchors {.bottomright {.type BASE .x RIGHTSB - RBALANCE .y 0}}}]
create-glyph 'rlongleg' : glyph-construction
assign-unicode 0x27C
include pMarks
include glyphs.r false
eject-contour 'serifLB'
include : VBarRight rbar DESCENDER 0
if SLAB : include : rBottomSerif DESCENDER
turned nothing 0x27A 'rlongleg' MIDDLE (XH / 2) [anchorDeriv bMarks {.anchors {.bottomright {.type BASE .x RIGHTSB - RBALANCE .y 0}}}]
create-glyph 'rrtail' : glyph-construction
assign-unicode 0x27D
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
create-glyph 'turnrrtail' : glyph-construction
assign-unicode 0x27B
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
create-glyph 'rflap' : glyph-construction
assign-unicode 0x27E
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 * CORRECTION_HX) (XH - SMALLSMOOTHA)
curl (rbar - STROKE * CORRECTION_HX) 0 [heading DOWNWARD]
if SLAB : include : rBottomSerif 0
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)
create-glyph 'C' : glyph-construction
set-width WIDTH
assign-unicode 'C'
include capitalMarks
include : CShape CAP 0
alias 'cyrEs' 0x421 'C'
create-glyph 'c' : glyph-construction
set-width WIDTH
assign-unicode 'c'
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
alias 'cyres' 0x441 'c'
turned nothing 0x186 'C' MIDDLE (CAP / 2)
turned nothing 0x254 'c' MIDDLE (XH / 2)
create-glyph 'strenchedC' : glyph-construction
set-width WIDTH
assign-unicode 0x297
include pMarks
include : CShape XH DESCENDER
create-glyph 'Chooktop' : glyph-construction
assign-unicode 0x187
include glyphs.C AS_BASE
include : VBarRight (RIGHTSB - OXHOOK) (CAP - HOOK) CAP
include : VerticalHook (RIGHTSB - HALFSTROKE * CORRECTION_HX - OXHOOK) CAP HOOKX (-HOOK)
create-glyph 'chooktop' : glyph-construction
assign-unicode 0x188
include glyphs.c AS_BASE
include : VBarRight (RIGHTSB - OXHOOK) (XH - HOOK) XH
include : VerticalHook (RIGHTSB - HALFSTROKE * CORRECTION_HX - OXHOOK) XH HOOKX (-HOOK)
create-glyph 'Cbar' : glyph-construction
assign-unicode 0xA792
include glyphs.C AS_BASE
include : HOverlayBar (SB * 0.3) [mix (SB + STROKE) (RIGHTSB - STROKE) 0.55] (CAP * BARPOS)
create-glyph 'cbar' : glyph-construction
assign-unicode 0xA793
include glyphs.c AS_BASE
include : HOverlayBar (SB * 0.3) [mix (SB + STROKE) (RIGHTSB - STROKE) 0.55] (XH * BARPOS)
create-glyph 'ccurlytail' : glyph-construction
assign-unicode 0x255
include eMarks
local fine : adviceBlackness 3
local rinner : ((XH * 0.45) - fine * 1.5) / 2
local m1 : SB + O + STROKE * CORRECTION_HX
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
create-glyph 'cyrE' : glyph-construction
assign-unicode 0x42D
include capitalMarks
include glyphs.C
include : FlipAround MIDDLE (CAP / 2)
include : HBar [mix SB RIGHTSB 0.25] RIGHTSB (CAP / 2)
create-glyph 'cyre' : glyph-construction
assign-unicode 0x44D
include eMarks
include glyphs.c
include : FlipAround MIDDLE (XH / 2)
include : HBar [mix SB RIGHTSB 0.25] RIGHTSB (XH / 2)
create-glyph 'cyrYe' : glyph-construction
assign-unicode 0x404
include capitalMarks
include glyphs.C
include : HBar SB [mix RIGHTSB SB 0.25] (CAP / 2)
create-glyph 'cyrye' : glyph-construction
assign-unicode 0x454
include eMarks
include glyphs.c
include : HBar SB [mix RIGHTSB SB 0.25] (XH / 2)
create-glyph 'sigma' : glyph-construction
assign-unicode 0x3C3
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)
create-glyph 'sigmafinal' : glyph-construction
assign-unicode 0x3C2
include pMarks
include : dispiro
widths.lhs
g4 RIGHTSB (XH - HOOK)
hookstart XH
flat.ai (SB + OX) (XH - SMALLSMOOTHA)
curl.ai (SB + OX) SMALLSMOOTHB
alsothru 0.4 0.8
g4 MIDDLE 0
alsothru 0.5 0.135
g4.down.mid (RIGHTSB - STROKE * CORRECTION_HX + OX) [mix DESCENDER STROKE 0.5] [heading DOWNWARD]
arcvh
straight.left.end (RIGHTSB - HOOKX + OX) (DESCENDER + STROKE) [heading LEFTWARD]
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]
create-glyph 'G' : glyph-construction
set-width WIDTH
assign-unicode 'G'
include capitalMarks
include : GShape CAP SMOOTHA SMOOTHB
create-glyph 'smcpG' : glyph-construction
assign-unicode 0x262
include eMarks
include : GShape XH SMOOTHA SMOOTHB
create-glyph 'Ghooktop' : glyph-construction
assign-unicode 0x193
include glyphs.G AS_BASE
include : VBarRight (RIGHTSB - OXHOOK) (CAP - HOOK) CAP
include : VerticalHook (RIGHTSB - HALFSTROKE * CORRECTION_HX - OXHOOK) CAP HOOKX (-HOOK)
create-glyph 'smcpGhooktop' : glyph-construction
assign-unicode 0x29B
include glyphs.smcpG AS_BASE
include : VBarRight (RIGHTSB - OXHOOK) (XH - HOOK) XH
include : VerticalHook (RIGHTSB - HALFSTROKE * CORRECTION_HX - OXHOOK) XH HOOKX (-HOOK)
create-glyph 'Gbar' : glyph-construction
assign-unicode 0x1E4
include glyphs.G AS_BASE
include : HOverlayBar [mix SB RIGHTSB 0.5] [mix RIGHTSB WIDTH 0.7] [mix 0 CAPMIDDLE 0.55]
### g
symbol-block 'g'
create-glyph 'g.doublestorey' : glyph-construction
set-width WIDTH
#assign-unicode 'g'
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 0.53]
arcvh
g4 MIDDLE (DESCENDER + O)
archv
g4 gleftx [mix (DESCENDER + O) groundy 0.53]
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]
create-glyph 'g.singlestorey' : glyph-construction
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'
select-variant 'g' 'g' 'doublestorey'
alias 'scriptg' 0x261 'g.singlestorey'
turned nothing 0x1D77 'g' MIDDLE [mix DESCENDER XH 0.5]
create-glyph 'scriptghooktop' : glyph-construction
assign-unicode 0x260
include glyphs.scriptg AS_BASE
eject-contour 'serifRT'
include : VerticalHook (RIGHTSB - HALFSTROKE * CORRECTION_HX) XH HOOKX (-HOOK)
create-glyph 'gbar' : glyph-construction
assign-unicode 0x1E5
include glyphs.g AS_BASE
include : HBar [mix 0 SB 0.3] [mix WIDTH RIGHTSB 0.3] glyphs.g.anchors.overlay.y [adviceBlackness 5]
### O and o
symbol-block 'O'
create-glyph 'O' : glyph-construction
set-width WIDTH
assign-unicode 'O'
include capitalMarks
include : OShape CAP 0 SB RIGHTSB nothing SMOOTHA SMOOTHB
alias 'Omicron' 0x39F 'O'
alias 'cyrO' 0x41E 'O'
create-glyph 'o' : glyph-construction
set-width WIDTH
assign-unicode 'o'
include eMarks
include : OShape XH 0 SB RIGHTSB nothing nothing nothing true
alias 'omicron' 0x3BF 'o'
alias 'cyro' 0x43e 'o'
create-glyph 'Oslash' : glyph-construction
assign-unicode 0xD8
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]
create-glyph 'oslash' : glyph-construction
assign-unicode 0xF8
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]
create-glyph 'Obar' : glyph-construction
assign-unicode 0x19F
include glyphs.O AS_BASE
include : HOverlayBar (SB - O) (RIGHTSB + O) (CAP * 0.5)
alias 'cyrOe' 0x4E8 'Obar'
create-glyph 'obar' : glyph-construction
assign-unicode 0x275
include glyphs.o AS_BASE
include : HOverlayBar (SB - O) (RIGHTSB + O) (XH * 0.5)
alias 'cyroe' 0x4E9 'obar'
create-glyph 'bulleye' : glyph-construction
assign-unicode 0x298
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)
create-glyph 'oupperhalf' : glyph-construction
assign-unicode 0x1D16
include eMarks
include : dispiro
widths.rhs
flat (SB + OX) (XH / 2) [heading UPWARD]
curl (SB + OX) (XH - SMALLSMOOTHA)
arcvh
g4 (MIDDLE - CORRECTION_OMIDS) (XH - O)
archv
flat (RIGHTSB - OX) (XH - SMALLSMOOTHB)
curl (RIGHTSB - OX) (XH / 2) [heading DOWNWARD]
create-glyph 'olowerhalf' : glyph-construction
assign-unicode 0x1D17
include eMarks
include : dispiro
widths.lhs
flat (SB + OX) (XH / 2) [heading DOWNWARD]
curl (SB + OX) SMALLSMOOTHB
arcvh
g4 (MIDDLE + CORRECTION_OMIDS) O
archv
flat (RIGHTSB - OX) SMALLSMOOTHA
curl (RIGHTSB - OX) (XH / 2) [heading UPWARD]
### Q
symbol-block 'Q'
create-glyph 'Q' : glyph-construction
set-width WIDTH
assign-unicode 'Q'
include glyphs.O AS_BASE
start-from MIDDLE 0
line-to (MIDDLE + WIDTH * 0.1) (-CAP * 0.2)
line-to (MIDDLE + WIDTH * 0.1 + STROKE * CORRECTION_HX) (-CAP * 0.2)
line-to (MIDDLE + STROKE * CORRECTION_HX) 0
line-to (MIDDLE + STROKE * (1 - 0.5 / 3) * CORRECTION_HX) (STROKE * 0.5)
reverse-last
alias 'cyrQa' 0x51A 'Q'
### q
symbol-block 'q'
create-glyph 'q' : glyph-construction
set-width WIDTH
assign-unicode 'q'
include pMarks
include : OBarRightShape
include : VBarRight RIGHTSB DESCENDER XH
if SLAB : begin
include : RightwardTopSerif RIGHTSB XH SIDEJUT
tag-contour 'serifRT'
include : CenterBottomSerif (RIGHTSB - HALFSTROKE * CORRECTION_HX) DESCENDER JUT
alias 'cyrqa' 0x51B 'q'
create-glyph 'Qrtail' : glyph-construction
assign-unicode 0x24A
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'
create-glyph 'qrtail' : glyph-construction
assign-unicode 0x24B
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'
create-glyph 'qhooktop' : glyph-construction
assign-unicode 0x2A0
include pMarks
include glyphs.q
eject-contour 'serifRT'
include : VerticalHook (RIGHTSB - HALFSTROKE * CORRECTION_HX) XH HOOKX (-HOOK)
### 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
create-glyph 'N' : glyph-construction
set-width WIDTH
assign-unicode 'N'
include capitalMarks
include : NShape CAP SB RIGHTSB
alias 'Nu' 0x39D 'N'
create-glyph 'smcpN' : glyph-construction
assign-unicode 0x274
include eMarks
include : NShape XH SB RIGHTSB 3 3.5
create-glyph 'Nltail' : glyph-construction
assign-unicode 0x19D
include glyphs.N AS_BASE
eject-contour 'serifLB'
include : VerticalHook (SB + HALFSTROKE * CORRECTION_HX) 0 (-HOOKX) HOOK
list NShape
### n
symbol-block 'n'
create-glyph 'n' : glyph-construction
set-width WIDTH
assign-unicode 'n'
include eMarks
include : nShoulder (SB + STROKE * CORRECTION_HX) RIGHTSB SHOULDERFINE
include : VBarLeft SB 0 XH
if SLAB : begin
include : LeftwardTopSerif SB XH SIDEJUT
tag-contour 'serifLT'
if (para.italicangle > 0)
: then : include : tagged 'serifRB' : RightwardBottomSerif RIGHTSB 0 SIDEJUT
: else : include : tagged 'serifRB' : CenterBottomSerif (RIGHTSB - HALFSTROKE * CORRECTION_HX) 0 JUT
if (para.italicangle === 0) : begin
include : tagged 'serifLB' : CenterBottomSerif (SB + HALFSTROKE * CORRECTION_HX) 0 JUT
alias 'cyrpe.italic' null 'n'
create-glyph 'napostrophe' : glyph-construction
assign-unicode 0x149
include glyphs.commaAbove
apply-transform : Translate (WIDTH + SB - MIDDLE) 0
include glyphs.n AS_BASE
create-glyph 'eng' : glyph-construction
assign-unicode 0x14B
include pMarks
include glyphs.n false
eject-contour 'serifRB'
include : VerticalHook (RIGHTSB - HALFSTROKE * CORRECTION_HX) 0 (-HOOKX) HOOK
create-glyph 'Eng' : glyph-construction
assign-unicode 0x14A
include capitalMarks
include : nShoulder (SB + STROKE) RIGHTSB SHOULDERFINE CAP (HOOK + HALFSTROKE + O) SMOOTHA SMOOTHB
include : VerticalHook (RIGHTSB - HALFSTROKE * CORRECTION_HX) (HOOK + HALFSTROKE + O) [Math.max ((SB - RIGHTSB) / 2 + HALFSTROKE) (-HOOKX)] HOOK
include : VBar (SB + HALFSTROKE * CORRECTION_HX) 0 CAP
create-glyph 'nltail' : glyph-construction
assign-unicode 0x272
include glyphs.n AS_BASE
eject-contour 'serifLB'
include : VerticalHook (SB + HALFSTROKE * CORRECTION_HX) 0 (-HOOKX) HOOK
create-glyph 'ncurlytail' : glyph-construction
assign-unicode 0x235
local fine : adviceBlackness 4
local rinner : clamp (WIDTH * 0.05) (XH * 0.05) (fine * 0.35)
local wide STROKE
local m1 : RIGHTSB - rinner * 2
local x2 : mix SB m1 0.5
local y2 : -fine
include eMarks
include : VBarLeft SB 0 XH wide
include : dispiro
nShoulderKnots (SB + wide * CORRECTION_HX) m1 SHOULDERFINE nothing (rinner * 2 + fine) nothing nothing 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.italicangle === 0) : begin
include : CenterBottomSerif (SB + HALFSTROKE * CORRECTION_HX) 0 JUT
tag-contour 'serifLB'
# eta
create-glyph 'eta' : glyph-construction
assign-unicode 0x3B7
include pMarks
set-anchor 'lf' BASE (SB + HALFSTROKE) 0
include : nShoulder (SB + STROKE * CORRECTION_HX) RIGHTSB SHOULDERFINE XH DESCENDER SMALLSMOOTHA SMALLSMOOTHB
include : VBarLeft SB 0 XH
if SLAB : begin
include : LeftwardTopSerif SB XH SIDEJUT
tag-contour 'serifLT'
create-glyph 'latinEta' : glyph-construction
assign-unicode 0x220
include ifMarks
set-anchor 'lf' BASE (SB + HALFSTROKE) 0
include : nShoulder (SB + STROKE) RIGHTSB SHOULDERFINE CAP DESCENDER SMALLSMOOTHA SMALLSMOOTHB
include : VBar (SB + HALFSTROKE * CORRECTION_HX) 0 CAP
if SLAB : begin
include : LeftwardTopSerif SB CAP SIDEJUT
tag-contour 'serifLT'
if (para.italicangle > 0)
: then : include : tagged 'serifRB' : RightwardBottomSerif RIGHTSB DESCENDER SIDEJUT
: else : include : tagged 'serifRB' : CenterBottomSerif (RIGHTSB - HALFSTROKE * CORRECTION_HX) DESCENDER JUT
if (para.italicangle === 0) : begin
include : CenterBottomSerif (SB + HALFSTROKE * CORRECTION_HX) 0 JUT
tag-contour 'serifLB'
create-glyph 'latineta' : glyph-construction
assign-unicode 0x19E
include pMarks
set-anchor 'lf' BASE (SB + HALFSTROKE) 0
include : nShoulder (SB + STROKE * CORRECTION_HX) RIGHTSB SHOULDERFINE XH DESCENDER SMALLSMOOTHA SMALLSMOOTHB
include : VBarLeft SB 0 XH
if SLAB : begin
include : LeftwardTopSerif SB XH SIDEJUT
tag-contour 'serifLT'
if (para.italicangle > 0)
: then : include : tagged 'serifRB' : RightwardBottomSerif RIGHTSB DESCENDER SIDEJUT
: else : include : tagged 'serifRB' : CenterBottomSerif (RIGHTSB - HALFSTROKE * CORRECTION_HX) DESCENDER JUT
if (para.italicangle === 0) : begin
include : CenterBottomSerif (SB + HALFSTROKE * CORRECTION_HX) 0 JUT
tag-contour 'serifLB'
### 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
create-glyph 'U' : glyph-construction
set-width WIDTH
assign-unicode 'U'
include capitalMarks
include : UShape CAP 0
create-glyph 'smcpU' : glyph-construction
assign-unicode 0x1D1CF
include eMarks
include : UShape XH 0
list UShape
### u
symbol-block 'u'
create-glyph 'u' : glyph-construction
set-width WIDTH
assign-unicode 'u'
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 * CORRECTION_HX) XH SIDEJUT
include : LeftwardTopSerif SB XH SIDEJUT
# upsilon
create-glyph 'upsilon' : glyph-construction
assign-unicode 0x3C5
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]
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 * CORRECTION_HX) (top - HOOK - HALFSTROKE) (-(RIGHTSB - HALFSTROKE * CORRECTION_HX - MIDDLE)) (-HOOK)
create-glyph 'latinUpsilon2' : glyph-construction
assign-unicode 0x1B2
include eMarks
include : LatinUpsilon2Shape CAP SMOOTHA SMOOTHB
create-glyph 'latinupsilon2' : glyph-construction
assign-unicode 0x28B
include eMarks
include : LatinUpsilon2Shape XH SMALLSMOOTHA SMALLSMOOTHB
### 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
create-glyph 'M' : glyph-construction
set-width WIDTH
assign-unicode 'M'
include capitalMarks
include : MShape CAP
alias 'Mu' 0x39C 'M'
alias 'cyrEm' 0x41C 'M'
create-glyph 'cyrem' : glyph-construction
assign-unicode 0x43C
include eMarks
include : MShape XH
### m
symbol-block 'm'
define [SmallMShape top bot] : glyph-construction
local m1 : mix (SB + O) (MIDDLE + MVERTSTROKE / 2 * CORRECTION_HX) 0.5
local m2 : mix (RIGHTSB - O) (MIDDLE - MVERTSTROKE / 2 * CORRECTION_HX) 0.5
include : mShoulderSpiro (SB + O + MVERTSTROKE * CORRECTION_HX) (MIDDLE + MVERTSTROKE / 2 * CORRECTION_HX) top bot MVERTSTROKE (MVERTSTROKE * SHOULDERFINE / STROKE)
include : mShoulderSpiro (MIDDLE + MVERTSTROKE * 0.5 * CORRECTION_HX) (RIGHTSB - O) top bot MVERTSTROKE (MVERTSTROKE * SHOULDERFINE / STROKE)
include : VBarLeft (SB + O) bot top MVERTSTROKE
if SLAB : begin
include : LeftwardTopSerif SB top SIDEJUT
tag-contour 'serifLT'
if (para.italicangle === 0) : include : LeftwardBottomSerif SB bot SIDEJUT
include : RightwardBottomSerif RIGHTSB bot SIDEJUT
tag-contour 'serifRB'
create-glyph 'm' : glyph-construction
set-width WIDTH
assign-unicode 'm'
include eMarks
include : SmallMShape XH 0
alias 'cyrte.italic' null 'm'
composite 'cyrtedescender.italic' glyphs.'cyrte.italic' [CyrDescender RIGHTSB] eMarks
create-glyph 'mltail' : glyph-construction
assign-unicode 0x271
include pMarks
include glyphs.m
eject-contour 'serifRB'
include : VerticalHook (RIGHTSB - O - MVERTSTROKE / 2 * CORRECTION_HX) 0 (-HOOKX) HOOK MVERTSTROKE
turned nothing 0x26F 'm' MIDDLE (XH / 2)
create-glyph 'capitalTurnm' : glyph-construction
assign-unicode 0x19C
include capitalMarks
include : SmallMShape CAP 0
include : FlipAround MIDDLE (CAP / 2)
create-glyph 'turnmleg' : glyph-construction
assign-unicode 0x270
include pMarks
include glyphs.m
eject-contour 'serifLT'
include : FlipAround MIDDLE (XH / 2)
include : VBarRight (RIGHTSB - O) DESCENDER 0 MVERTSTROKE
### 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
create-glyph 'H' : glyph-construction
set-width WIDTH
assign-unicode 'H'
include capitalMarks
include : HShape CAP
alias 'Eta' 0x397 'H'
alias 'cyrEn' 0x41D 'H'
composite nothing glyphs.cyrEn [CyrDescender RIGHTSB] [into-unicode 0x4A2]
create-glyph 'cyren' : glyph-construction
assign-unicode 0x43D
include eMarks
include : HShape XH
alias 'smcpH' 0x29C 'cyren'
composite nothing glyphs.cyren [CyrDescender RIGHTSB] [into-unicode 0x4A3]
create-glyph 'Hbar' : glyph-construction
assign-unicode 0x126
include glyphs.H AS_BASE
include : HOverlayBar [mix SB 0 0.7] [mix RIGHTSB WIDTH 0.7] [mix CAPMIDDLE CAP 0.45]
### h
symbol-block 'h'
create-glyph 'h' : glyph-construction
set-width WIDTH
assign-unicode 'h'
include bMarks
include : nShoulder (SB + STROKE * CORRECTION_HX) RIGHTSB SHOULDERFINE
include : VBarLeft SB 0 CAP
if SLAB : begin
include : LeftwardTopSerif SB CAP SIDEJUT
if (para.italicangle > 0)
: then : include : RightwardBottomSerif RIGHTSB 0 SIDEJUT
: else : include : CenterBottomSerif (RIGHTSB - HALFSTROKE * CORRECTION_HX) 0 JUT
tag-contour 'serifRB'
if (para.italicangle === 0) : begin
include : CenterBottomSerif (SB + HALFSTROKE * CORRECTION_HX) 0 JUT
tag-contour 'serifLB'
alias 'cyrshha' 0x4BB 'h'
create-glyph 'hhooktop' : glyph-construction
assign-unicode 0x266
include bMarks
include : nShoulder (SB + STROKE * CORRECTION_HX) RIGHTSB SHOULDERFINE
include : HooktopLeftBar
if SLAB : begin
if (para.italicangle > 0)
: then : include : RightwardBottomSerif RIGHTSB 0 SIDEJUT
: else : include : CenterBottomSerif (RIGHTSB - HALFSTROKE * CORRECTION_HX) 0 JUT
tag-contour 'serifRB'
if (para.italicangle === 0) : begin
include : CenterBottomSerif (SB + HALFSTROKE * CORRECTION_HX) 0 JUT
tag-contour 'serifLB'
create-glyph 'hhooktopltail' : glyph-construction
assign-unicode 0x267
include pMarks
include glyphs.hhooktop
eject-contour 'serifRB'
include : VerticalHook (RIGHTSB - HALFSTROKE * CORRECTION_HX) 0 (-HOOKX) HOOK
create-glyph 'hltail' : glyph-construction
assign-unicode 0xA727
include pMarks
include glyphs.h
eject-contour 'serifRB'
include : VerticalHook (RIGHTSB - HALFSTROKE * CORRECTION_HX) 0 (-HOOKX) HOOK
turned nothing 0x265 'h' MIDDLE (XH / 2) pMarks
create-glyph 'hookturnh' : glyph-construction
assign-unicode 0x2AE
include : nShoulder (SB + STROKE * CORRECTION_HX) RIGHTSB SHOULDERFINE XH (HOOK + HALFSTROKE + 1) SMOOTHA SMOOTHB
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 * CORRECTION_HX) XH SIDEJUT
include : CenterBottomSerif (RIGHTSB - HALFSTROKE * CORRECTION_HX) DESCENDER JUT
create-glyph 'hookturnhrtail' : glyph-construction
assign-unicode 0x2AF
include : nShoulder (SB + STROKE * CORRECTION_HX) RIGHTSB SHOULDERFINE XH (HOOK + HALFSTROKE + 1) SMOOTHA SMOOTHB
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 * CORRECTION_HX) XH SIDEJUT
create-glyph 'hbar' : glyph-construction
assign-unicode 0x127
include glyphs.h AS_BASE
include : HOverlayBar [mix SB 0 0.7] [mix SB RIGHTSB 0.5] [mix XH CAP 0.45]
### 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 - [if SLAB (STROKE * 0.75) HALFSTROKE]) ([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 * CORRECTION_HX) 0 JUT
tag-contour 'serifBottom'
include : DownwardRightSerif RIGHTSB [fallback top CAP] VJUT
create-glyph 'F' : glyph-construction
set-width WIDTH
assign-unicode 'F'
include capitalMarks
include : FShape
create-glyph 'Fltail' : glyph-construction
assign-unicode 0x191
include glyphs.F AS_BASE
eject-contour 'serifBottom'
include : VerticalHook (SB * 1.5 + HALFSTROKE * CORRECTION_HX) 0 (-HOOKX) HOOK
list FShape
### long s, and f
define {LongSShape} : symbol-block 'f'
define fovershoot : fallback para.fovershoot (O * 6)
create-glyph 'longs.straight' : glyph-construction
set-width WIDTH
include bMarks
include : dispiro
widths.center
flat (MIDDLE - FBALANCE) 0 [heading UPWARD]
curl (MIDDLE - FBALANCE) (CAP - FHOOK)
straight.right.end (MIDDLE - FBALANCE + HOOKX) (CAP - HALFSTROKE - fovershoot) [heading RIGHTWARD]
if SLAB : begin
include : CenterBottomSerif (MIDDLE - FBALANCE) 0 JUT
tag-contour 'serifMB'
create-glyph 'longs.upright' : glyph-construction
include bMarks
local m : MIDDLE - JBALANCE - HALFSTROKE * CORRECTION_HX
local r : m + (WIDTH * 0.5) + STROKE * CORRECTION_HX - OXHOOK
include : dispiro
widths.lhs
g4 r (CAP - HOOK)
hookstart (CAP - O)
flat m (CAP - SMOOTHA)
curl m 0
if SLAB : begin
include : tagged 'serifLB' : CenterBottomSerif (m + HALFSTROKE * CORRECTION_HX + RBALANCE * 0.35) 0 (JUT + RBALANCE * 0.65)
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) [heading RIGHTWARD]
flat MIDDLE (bottom + hooky)
curl MIDDLE (top - hooky)
straight.right.end (MIDDLE + hookx) (top - w / 2 - fovershoot) [heading RIGHTWARD]
create-glyph 'longs.italic' : glyph-construction
set-width WIDTH
include ifMarks
include : LongSShape CAP (-HOOK) HOOKX HOOK
create-glyph 'longs' : glyph-construction
set-width WIDTH
assign-unicode 0x17f
if (para.italicangle > 0)
then : include glyphs.'longs.italic' AS_BASE
else : include glyphs.'longs.upright' AS_BASE
create-glyph 'longsslash' : glyph-construction
assign-unicode 0x1E9C
include glyphs.longs AS_BASE
include : FlatSlashShape [tp [Upright] glyphs.l.anchors.above].x [mix 0 CAP BARPOS] (0.5 * OVERLAYSTROKE)
create-glyph 'esh' : glyph-construction
assign-unicode 0x283
include glyphs.'longs.italic' AS_BASE
create-glyph 'eshbar' : glyph-construction
assign-unicode 0x284
include glyphs.esh AS_BASE
include : HOverlayBar (MIDDLE - LONGJUT * 0.6) (MIDDLE + LONGJUT * 0.6) (XH * 0.25)
create-glyph 'eshcurlytail' : glyph-construction
assign-unicode 0x286
include ifMarks
local fine : adviceBlackness 3.5
local rinner : LONGJUT / 2 - fine / 2
local m1 : MIDDLE - HALFSTROKE * CORRECTION_HX - 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 rinner m1 DESCENDER (m1 - LONGJUT) x2 y2
create-glyph 'ifishhook' : glyph-construction
assign-unicode 0x27F
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
create-glyph 'iviby' : glyph-construction
assign-unicode 0x285
include pMarks
include : VBar MIDDLE 0 (XH - HOOK - HALFSTROKE)
include : VerticalHook MIDDLE (XH - HOOK - HALFSTROKE) (-LONGJUT) (-HOOK)
include : VerticalHook MIDDLE 0 LONGJUT HOOK
define fbar : XH * 0.91 + STROKE * 0.25
create-glyph 'f.upright' : glyph-construction
include bMarks
local barleft : [mix SB RIGHTSB 0.35] - STROKE * 0.25 * CORRECTION_HX
include : dispiro
widths.lhs
g4 (RIGHTSB + RBALANCE2 - OXE) (CAP - HOOK * 0.7)
hookstart (CAP - O) true
flat barleft [CAP - SMOOTHA * 0.85]
curl barleft 0
include : HBarTop [mix SB RIGHTSB 0] [mix SB RIGHTSB 0.95] fbar
if SLAB : include : HBarBottom [mix SB RIGHTSB 0.02] [mix SB RIGHTSB 0.875] 0
create-glyph 'f.italic' : glyph-construction
include glyphs.'longs.italic' AS_BASE
include : HBarTop (MIDDLE - LONGJUT) (MIDDLE + LONGJUT) fbar
alias 'fltail' 0x192 'f.italic'
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.isItalic 0.5 0.25])
create-glyph 'f_i' : glyph-construction
assign-unicode 0xFB01
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 * CORRECTION_HX) 0 JUT
create-glyph 'f_l.upright' : glyph-construction
local m : MIDDLE - JBALANCE - HALFSTROKE * CORRECTION_HX + shift
include : dispiro
widths.rhs
flat m 0
curl m (CAP - SMOOTHA)
hookend (CAP - O)
g4 (barr + OXHOOK) (CAP - HOOK)
include : VBarRight barr 0 (CAP - HOOK)
include : HBarTop hbarleft [mix SB barr 0.6] fbar
if SLAB : begin
include : tagged 'serifLB' : CenterBottomSerif (m + HALFSTROKE * CORRECTION_HX + RBALANCE * 0.35) 0 (JUT + RBALANCE * 0.65)
include : tagged 'serifRB' : CenterBottomSerif (barr - HALFSTROKE * CORRECTION_HX) 0 JUT
create-glyph 'f_l.italic' : glyph-construction
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
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
create-glyph 'E' : glyph-construction
set-width WIDTH
assign-unicode 'E'
include capitalMarks
include : EShape CAP
alias 'Epsilon' 0x395 'E'
alias 'cyrIe' 0x415 'E'
create-glyph 'smcpturnE' : glyph-construction
assign-unicode 0x2C7B
include eMarks
include : EShape XH
include : FlipAround MIDDLE (XH / 2)
turned nothing 0x18E 'E' MIDDLE (CAP / 2)
### e
define {SmallEShape} : symbol-block 'e'
define [SmallEShape top stroke barpos curly] : glyph-construction
local barbottom (top * [fallback barpos EBARPOS])
local hookx (RIGHTSB - OXHOOK + TAILADJX * globalTransform.yx)
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 (top <= XH) flat.ai flat] (SB + OX) (top - SMALLSMOOTHA)
[if (top <= XH) curl.ai curl] (SB + OX) (0 + SMALLSMOOTHB)
hookend O nothing stroke
g4 (RIGHTSB - OX * 0.5) AHOOK
include : HBarBottom (SB + (stroke / 2)) (RIGHTSB - (stroke / 2)) barbottom stroke
create-glyph 'e' : glyph-construction
set-width WIDTH
assign-unicode 'e'
include eMarks
include : SmallEShape XH STROKE
alias 'cyrie' 0x435 'e'
create-glyph 'turnSmallE' : glyph-construction
assign-unicode 0x18F
include capitalMarks
include : SmallEShape CAP STROKE
include : FlipAround MIDDLE (CAP / 2)
turned nothing 0x1DD 'e' MIDDLE (XH / 2)
turned 'schwa' 0x259 'e' MIDDLE (XH / 2)
alias 'cyrSchwa' 0x4D8 'turnSmallE'
alias 'cyrschwa' 0x4D9 'schwa'
define [RevSmallEShape top stroke barpos] : glyph-construction
local barbottom (top * [fallback barpos EBARPOS])
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
flat (RIGHTSB - OX) (top - SMALLSMOOTHB)
curl (RIGHTSB - OX) SMALLSMOOTHA
hookend O
g4 (SB + O) AHOOK
include : HBarBottom (SB + (stroke / 2)) (RIGHTSB - (stroke / 2)) barbottom stroke
create-glyph 'reve' : glyph-construction
assign-unicode 0x258
include eMarks
include : RevSmallEShape XH STROKE
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 : HBarTop l r top
if SLAB : begin
include : DownwardRightSerif r top VJUT MVERTSTROKE
tag-contour 'serifRT'
include : DownwardLeftSerif l top VJUT MVERTSTROKE
tag-contour 'serifLT'
include : CenterBottomSerif MIDDLE 0 JUT
tag-contour 'serifRB'
create-glyph 'T' : glyph-construction
set-width WIDTH
assign-unicode 'T'
include capitalMarks
set-anchor 'bottomright' BASE (MIDDLE + HALFSTROKE * CORRECTION_HX) 0
include : TShape CAP
alias 'Tau' 0x3A4 'T'
alias 'cyrTe' 0x422 'T'
composite nothing glyphs.cyrTe [CyrDescender (MIDDLE + HALFSTROKE * CORRECTION_HX)] ifMarks [into-unicode 0x4AC]
turned 'turnT' 0xA7B1 'T' MIDDLE (CAP / 2)
create-glyph 'cyrte.upright' : glyph-construction
include eMarks
include : TShape XH
composite 'cyrtedescender.upright' glyphs.'cyrte.upright' [CyrDescender (MIDDLE + HALFSTROKE * CORRECTION_HX)] pMarks
italic-variant 'cyrtedescender' 0x4AD
create-glyph 'Thookleft' : glyph-construction
assign-unicode 0x1AC
include capitalMarks
eject-contour "serifLT"
include : LeftHook (SB + LeftHook.extension) CAP MIDDLE
include : HBarTop MIDDLE RIGHTSB CAP
include : VBar MIDDLE 0 CAP
create-glyph 'Tbar' : glyph-construction
assign-unicode 0x166
include glyphs.T AS_BASE
include : HOverlayBar [mix MIDDLE SB 0.8] [mix MIDDLE RIGHTSB 0.8] [mix 0 CAP 0.45]
create-glyph 'tau' : glyph-construction
assign-unicode 0x3C4
include eMarks
include : HBar SB RIGHTSB (XH - HALFSTROKE)
include : VBar MIDDLE 0 XH
### t
symbol-block 't'
define [SmallTShape top bot] : glyph-construction
local center : MIDDLE - TBALANCE - HALFSTROKE * CORRECTION_HX
local hookx (center + (WIDTH - SB * 2) * 0.8 - OXHOOK + TAILADJX * globalTransform.yx)
local turn : [mix center hookx 0.5] + CORRECTION_OMIDS
local smb : Math.max HOOK ((turn - center) * 1.2)
local g : dispiro
widths.lhs
flat center top [heading DOWNWARD]
curl center (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
include : HBarTop (center + HALFSTROKE - LONGJUT + TBALANCE2) (center + HALFSTROKE + LONGJUT + TBALANCE2) XH
create-glyph 't' : glyph-construction
set-width WIDTH
assign-unicode 't'
include bMarks
include : SmallTShape CAP 0
turned nothing 0x287 't' MIDDLE (XH / 2) pMarks
create-glyph 'tltail' : glyph-construction
assign-unicode 0x1AB
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 * CORRECTION_HX) 0 (-HOOKX) HOOK
create-glyph 'thooktop' : glyph-construction
assign-unicode 0x1AD
include eMarks
include : SmallTShape (XH - HALFSTROKE) 0
include : VerticalHook (MIDDLE - TBALANCE) XH HOOKX (-HOOK)
create-glyph 'trtail' : glyph-construction
assign-unicode 0x288
include ifMarks
include : SmallTShape CAP DESCENDER
create-glyph 'tcurlytail' : glyph-construction
assign-unicode 0x236
include bMarks
local fine : adviceBlackness 3.5
local rinner : LONGJUT / 2 - fine / 2
local m1 : MIDDLE - TBALANCE - HALFSTROKE
local x2 : mix SB m1 0.4
local y2 : -fine
include : HBarTop (m1 + HALFSTROKE - LONGJUT + TBALANCE2) (m1 + HALFSTROKE + LONGJUT + TBALANCE2) XH
include : dispiro
widths.lhs
flat m1 CAP [heading DOWNWARD]
curl m1 (fine + rinner * 2)
CurlyTail fine rinner (m1 + STROKE * CORRECTION_HX) 0 (m1 + STROKE * CORRECTION_HX + LONGJUT) x2 y2
create-glyph 'tbar' : glyph-construction
assign-unicode 0x167
include glyphs.t AS_BASE
include : HOverlayBar ([mix MIDDLE SB 0.7] - TBALANCE * 0.5) ([mix MIDDLE RIGHTSB 0.7] - TBALANCE * 0.5) [mix 0 XH 0.6]
create-glyph 'tcaron' : glyph-construction
assign-unicode 0x165
include glyphs.commaAbove
apply-transform : Translate (WIDTH + (RIGHTSB - SB) / 2) 0
include glyphs.t AS_BASE
### S and s
symbol-block 'S'
create-glyph 'S' : glyph-construction
set-width WIDTH
assign-unicode 'S'
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
alias 'cyrDze' 0x405 'S'
create-glyph 's' : glyph-construction
set-width WIDTH
assign-unicode 's'
include eMarks
define smooth : adviceSSmooth XH (-1)
include : dispiro
widths.lhs
g4 RIGHTSB (XH - SHOOK)
hookstart XO
g4.down.mid SB (XH - smooth)
alsothru 0.5 0.5 [widths (ESS / 2) (ESS / 2)]
g4.down.mid RIGHTSB (smooth) [widths 0 STROKE]
hookend O
g4 SB SHOOK
alias 'cyrdze' 0x455 's'
create-glyph 'revS' : glyph-construction
assign-unicode 0x1A7
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
create-glyph 'revs' : glyph-construction
assign-unicode 0x1A8
include eMarks
local smooth : adviceSSmooth XH 1
include : dispiro
widths.rhs
g4 SB (XH - SHOOK)
hookstart XO
g4 RIGHTSB (XH - smooth)
alsothru 0.5 0.5 [widths (ESS / 2) (ESS / 2)]
g4 SB (smooth) [widths STROKE 0]
hookend O
g4 RIGHTSB SHOOK
create-glyph 'srtail' : glyph-construction
assign-unicode 0x282
include glyphs.rtailBR
apply-transform : Upright
apply-transform : Translate (SB + STROKE * CORRECTION_HX + OXHOOK) 0
apply-transform : Italify
include pMarks
include glyphs.s
include : VBarLeft (SB + OXHOOK) 0 SHOOK
create-glyph 'Sswash' : glyph-construction
assign-unicode 0x2C7E
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
create-glyph 'sswash' : glyph-construction
assign-unicode 0x23F
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
### Z and z
symbol-block 'Z'
create-glyph 'Z' : glyph-construction
set-width WIDTH
assign-unicode 'Z'
include capitalMarks
local cor : 1.15 * CORRECTION_HX
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'
alias 'Zeta' 0x396 'Z'
create-glyph 'z' : glyph-construction
set-width WIDTH
assign-unicode 'z'
include eMarks
local cor : 1.2 * CORRECTION_HX
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'
create-glyph 'Zdtail' : glyph-construction
assign-unicode 0x224
include glyphs.Z AS_BASE
eject-contour 'strokeBottom'
eject-contour 'serifRB'
include : dispiro
widths.lhs
flat SB 0
curl (RIGHTSB - HOOKX) 0
archv
flat RIGHTSB (-HOOK) [widths 0 STROKE]
curl RIGHTSB (-HOOK - 1)
create-glyph 'zdtail' : glyph-construction
assign-unicode 0x225
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
g4 RIGHTSB (-HOOK) [widths.heading 0 STROKE DOWNWARD]
create-glyph 'Zswash' : glyph-construction
assign-unicode 0x2C7F
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
create-glyph 'zswash' : glyph-construction
assign-unicode 0x240
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
create-glyph 'Zdesc' : glyph-construction
assign-unicode 0x2C6B
include glyphs.Z AS_BASE
eject-contour 'serifRB'
include : VBarRight [mix SB RIGHTSB 1.05] (HALFSTROKE - LONGJUT) STROKE
create-glyph 'zdesc' : glyph-construction
assign-unicode 0x2C6C
include glyphs.z AS_BASE
eject-contour 'serifRB'
include : VBarRight [mix SB RIGHTSB 1.05] (HALFSTROKE - LONGJUT) STROKE
create-glyph 'zcurlytail' : glyph-construction
assign-unicode 0x291
include eMarks
local fine : adviceBlackness 4
local rinner : Math.max (XH * 0.035) (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'