########################################################################################### # 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 ########################################################################################### # UNIFIED LETTERFORMS : LATIN ORIGINALS ########################################################################################### ### 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) include : HBarTop (SB + STROKE) (RIGHTSB - STROKE) (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 - SMOOTHA) 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 'x.italic' : glyph-construction # if SLAB # : then # local g : create-glyph : glyph-construction # local p 0.85 # local fine : STROKE * 0.8 # include : dispiro # g4 (SB + O * 3) (XH - HOOK) [widths.rhs MVERTSTROKE] # hookstart (XH - O) true nothing [widths.heading 0 STROKE RIGHTWARD] # flat (MIDDLE + (fine - HALFSTROKE) * CORRECTION_HX) (XH - SMALLSMOOTH * p) [widths.heading 0 fine DOWNWARD] # curl (MIDDLE + (fine - HALFSTROKE) * CORRECTION_HX) (0 + SMALLSMOOTH * p) [heading DOWNWARD] # hookend O true nothing [widths.heading 0 STROKE LEFTWARD] # g4 (SB + O * 3) HOOK [widths.rhs MVERTSTROKE] # # include eMarks # include g # include : FlipAround MIDDLE (XH / 2) # include g # : else : include glyphs.'x.upright' AS_BASE # italic-variant 'x' 'x' 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 0x4B2 { glyphs.cyrHa [CyrDescender RIGHTSB] } composite nothing 0x4B3 { glyphs.cyrha [CyrDescender RIGHTSB] } ### 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) include : AIVSerifs top if SLAB : begin 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 xbottom : mix SB RIGHTSB 0.28 local turnp : top / (top - bottom) local xb : mix SB RIGHTSB 0.51 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 0.28 local turnp : XH / (XH - DESCENDER) local xb : mix SB RIGHTSB 0.49 local yb : mix 0 XH (0.05 * turnp) # include : xStrand xbottom DESCENDER RIGHTSB XH 0.1 0.6 0.14 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) ### 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' 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 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 * 0.8 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 include : dispiro widths.lhs flat mid (XH / 2 - HALFSTROKE) [heading RIGHTWARD] curl MIDDLE (XH / 2 - HALFSTROKE) archv g4 (RIGHTSB + O) (XH - SMOOTHB * 0.87) 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) (SMOOTHA * 0.87) arcvh flat MIDDLE (XH / 2 + HALFSTROKE) curl mid (XH / 2 + 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] ### 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 ### beta 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] ### 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 : fine * 0.35 local wide STROKE local m1 : RIGHTSB - rinner * 2 local x2 : mix SB m1 0.5 local y2 : -fine * 1.5 include eMarks include : OBarRightShape XH m1 include : dispiro widths.rhs flat m1 CAP [heading DOWNWARD] curl m1 (fine * 2) 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 ### 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 : 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) 0 [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 RIGHTSB 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' create-glyph 'r' : glyph-construction set-width WIDTH assign-unicode 'r' include eMarks local rhookx (RIGHTSB + RBALANCE2 - OXE) local rbar : SB + RBALANCE + STROKE * CORRECTION_HX local mixp : 0.52 + 2 * globalTransform.yx * STROKE / WIDTH - [linreg 72 0 108 0.01 STROKE] local rmiddle : [mix (rbar - SHOULDERFINE) rhookx mixp] - CORRECTION_OMIDS local skew : (rmiddle - ([mix rbar (rhookx - STROKE * CORRECTION_HX * 0.8) mixp] - CORRECTION_OMIDS)) / STROKE include : dispiro widths.lhs g4 rhookx (XH - RHOOK) alsothru 0.8 0.9725 g4.left.mid rmiddle XO [heading {.y (-1) .x (-skew)}] alsothru 0.965 0.6 straight.down.end (rbar - SHOULDERFINE * CORRECTION_HX) (XH * 0.5) [widths.heading SHOULDERFINE 0 DOWNWARD] include : VBarLeft (SB + RBALANCE) 0 XH set-anchor 'overlay' BASE rbar (XH * 0.5) if SLAB : begin include : tagged 'serifLB' : CenterBottomSerif (SB + RBALANCE + HALFSTROKE * CORRECTION_HX + RBALANCE * 0.35) 0 (JUT + RBALANCE * 0.65) include : tagged 'serifLT' : LeftwardTopSerif (SB + RBALANCE) XH (SIDEJUT + RBALANCE * 0.3) 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 : VBarLeft (SB + RBALANCE) DESCENDER 0 if SLAB : begin include : tagged 'serifLB' : CenterBottomSerif (SB + RBALANCE + HALFSTROKE * CORRECTION_HX + RBALANCE * 0.35) DESCENDER (JUT + RBALANCE * 0.65) 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 (SB + RBALANCE + STROKE * CORRECTION_HX) 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 (SB + RBALANCE + STROKE) (rhookx - HALFSTROKE) 0.5] - CORRECTION_OMIDS include : dispiro widths.lhs g4 rhookx (XH - RHOOK) hookstart XO flat (SB + RBALANCE) (XH - SMALLSMOOTHA) curl (SB + RBALANCE) 0 [heading DOWNWARD] if SLAB : begin include : tagged 'serifLB' : CenterBottomSerif (SB + RBALANCE + HALFSTROKE * CORRECTION_HX + RBALANCE * 0.35) 0 (JUT + RBALANCE * 0.65) ### 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 (CAP - HOOK) CAP include : VerticalHook (RIGHTSB - HALFSTROKE * CORRECTION_HX) CAP HOOKX (-HOOK) create-glyph 'chooktop' : glyph-construction assign-unicode 0x188 include glyphs.c AS_BASE include : VBarRight RIGHTSB (XH - HOOK) XH include : VerticalHook (RIGHTSB - HALFSTROKE * CORRECTION_HX) 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 (CAP - HOOK) CAP include : VerticalHook (RIGHTSB - HALFSTROKE * CORRECTION_HX) CAP HOOKX (-HOOK) create-glyph 'smcpGhooktop' : glyph-construction assign-unicode 0x29B include glyphs.smcpG AS_BASE include : VBarRight RIGHTSB (XH - HOOK) XH include : VerticalHook (RIGHTSB - HALFSTROKE * CORRECTION_HX) 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 XH obot 0.975] include : dispiro g4.left.start [mix SB RIGHTSB 0.4] gtipy [widths 0 (STROKE * 0.7)] g4 ([mix SB RIGHTSB 0.0575] + STROKE * 0.85) [mix groundy gtipy 0.5] [widths.rhs (STROKE * 0.85)] 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) ### 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 : 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 (fine * 2) 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 * 0.4) include : mShoulderSpiro (MIDDLE + MVERTSTROKE * 0.5 * CORRECTION_HX) (RIGHTSB - O) top bot MVERTSTROKE (MVERTSTROKE * 0.5) 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' 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' create-glyph 'cyren' : glyph-construction assign-unicode 0x43D include eMarks include : HShape XH alias 'smcpH' 0x29C 'cyren' 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' 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] ### 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 '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 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 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 local smb : (center - turn) * 1.2 include : dispiro widths.rhs flat center XH [heading DOWNWARD] curl center (DESCENDER + smb) 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 * 3) 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 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' 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 * 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] ### 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 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) true 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 * 3) CurlyTail fine rinner m1 DESCENDER (m1 - LONGJUT) x2 y2 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 - OX * 2) (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] (XH * 0.95) 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) XH italic-variant 'f' 'f' create-glyph 'fltail' : glyph-construction assign-unicode 0x192 include glyphs.'longs.italic' AS_BASE include : HBarTop (MIDDLE - LONGJUT) (MIDDLE + LONGJUT) XH 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 turned 'turnf' 0x25F 'f' MIDDLE (XH / 2) pMarks * {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 flat.ai (SB + OX) (top - SMALLSMOOTHA) curl.ai (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' create-glyph 'cyrte.upright' : glyph-construction include eMarks include : TShape XH create-glyph 'Thookleft' : glyph-construction assign-unicode 0x1AC include capitalMarks eject-contour "serifLT" include : LeftHook (SB + [adviceBlackness 4.25] * 1.5) 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 : (turn - center) * 1.2 include : dispiro widths.lhs flat center top [heading DOWNWARD] curl center (bot + smb) hookend (bot + O) g4 hookx (bot + HOOK) set-anchor 'bottomright' BASE hookx (bot + HOOK) 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 * 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) 0 apply-transform : Italify include pMarks include glyphs.s include : VBarLeft SB 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.3 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.36 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 x1 : mix (SB + STROKE) RIGHTSB 0.55 local x2 : mix (SB + STROKE) RIGHTSB 0.3 local y2 : -XH * 0.2 local rinner : fine * 0.3 local m1 : RIGHTSB - fine / 2 - rinner + O include : HCurlyTail fine STROKE rinner SB m1 (RIGHTSB + fine / 2) x1 x2 y2 include glyphs.z eject-contour 'strokeBottom' eject-contour 'serifRB'