2900 lines
92 KiB
Plaintext
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'
|