Files
Iosevka/glyphs/overmarks.ptl
T

1220 lines
40 KiB
Plaintext

### Combining marks
local markExtend (ACCENTX * 0.5)
local markHalfStroke : 0.5 * [adviceBlackness 3.375]
local markStress : markHalfStroke * 1.1
local markFine : markHalfStroke * 0.9
local markMiddle (-MIDDLE)
local markDotsRadius : DOTRADIUS * [Math.min 1 (markStress / HALFSTROKE)]
local aboveMarkTop (XH + ACCENT * 1.38)
local aboveMarkBot (XH + ACCENT * 0.35)
local aboveMarkMid [mix aboveMarkBot aboveMarkTop 0.5]
local belowMarkBot (0 - ACCENT * 1.38)
local belowMarkTop (0 - ACCENT * 0.35)
local commaOvershoot : O * [linreg 16 0 90 (-1) (markHalfStroke * 2)]
local commaOvershoot2 : O * [linreg 16 1 90 (-1) (markHalfStroke * 2)]
local commaAboveRadius : 0.85 * DOTRADIUS * markHalfStroke / HALFSTROKE
local asciiMarkZoom : (RIGHTSB - SB) / (markExtend * 3)
### Above marks
symbol-block 'Above marks'
sketch # dotAbove
set-width 0
currentGlyph.shortName = 'dot'
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
include : Ring (XH + ACCENT + DOTRADIUS) (XH + ACCENT - DOTRADIUS) (markMiddle - DOTRADIUS) (markMiddle + DOTRADIUS) true
save 'dotAbove' 0x307
sketch # dieresisAbove
set-width 0
currentGlyph.shortName = 'dieresis'
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
include : Ring (XH + ACCENT + markDotsRadius) (XH + ACCENT - markDotsRadius) (markMiddle - markDotsRadius - markExtend) (markMiddle + markDotsRadius - markExtend) true
include : Ring (XH + ACCENT + markDotsRadius) (XH + ACCENT - markDotsRadius) (markMiddle - markDotsRadius + markExtend) (markMiddle + markDotsRadius + markExtend) true
save 'dieresisAbove' 0x308
sketch # ringAbove
set-width 0
currentGlyph.shortName = 'ring'
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
local radiusIn : ACCENT * 0.24
local radiusOut : radiusIn + markFine * [linreg 16 2 90 1.75 (markHalfStroke * 2)]
include : Ring (XH + ACCENT + radiusOut) (XH + ACCENT - radiusOut) (markMiddle - radiusOut) (markMiddle + radiusOut) true
include : Ring (XH + ACCENT + radiusIn) (XH + ACCENT - radiusIn) (markMiddle - radiusIn) (markMiddle + radiusIn) true
reverse-last
apply-transform : Upright
apply-transform : Translate 0 (-markFine * 0.75)
apply-transform : Italify
save 'ringAbove' 0x30A
local g [branch]
branch
set currentGlyph.anchors {.}
local k : 2 * (radiusOut - (radiusOut - radiusIn) * 0.25)
apply-transform : Translate k 0
include g
include : Translate (-k / 2) 0
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
save 'dblRingAbove' 0x1AB2
sketch # graveAbove
set-width 0
currentGlyph.shortName = 'grave'
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
include : dispiro
flat (markMiddle + markStress) aboveMarkBot [widths markFine markFine]
curl (markMiddle - markExtend) aboveMarkTop [widths markStress markStress]
save 'graveAbove' 0x300
sketch # asciigrave
include : dispiro
flat (MIDDLE + HALFSTROKE * 1.1 * asciiMarkZoom) [mix (XH + ACCENT) aboveMarkBot asciiMarkZoom] [widths.center : STROKE * 0.9]
curl (MIDDLE - markExtend * asciiMarkZoom) [mix (XH + ACCENT) aboveMarkTop asciiMarkZoom] [widths.center : STROKE * 1.1]
save 'asciigrave' '`'
sketch # acuteAbove
set-width 0
currentGlyph.shortName = 'acute'
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
include : dispiro
flat (markMiddle - markStress) aboveMarkBot [widths markFine markFine]
curl (markMiddle + markExtend) aboveMarkTop [widths markStress markStress]
save 'acuteAbove' 0x301
sketch # latin1acute
include : dispiro
flat (MIDDLE - HALFSTROKE * 1.1 * asciiMarkZoom) [mix (XH + ACCENT) aboveMarkBot asciiMarkZoom] [widths.center : STROKE * 0.9]
curl (MIDDLE + markExtend * asciiMarkZoom) [mix (XH + ACCENT) aboveMarkTop asciiMarkZoom] [widths.center : STROKE * 1.1]
save 'latin1acute' 0xB4
sketch # circumflexAbove
set-width 0
currentGlyph.shortName = 'circum'
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
include : dispiro
flat (markMiddle - markExtend - markStress) (aboveMarkBot + markStress - markFine) [widths markStress markStress]
curl markMiddle (aboveMarkTop + markFine * 0.7) [heading UPWARD]
include : dispiro
flat (markMiddle + markExtend + markStress) (aboveMarkBot + markStress - markFine) [widths markStress markStress]
curl markMiddle (aboveMarkTop + markFine * 0.7) [heading UPWARD]
save 'circumflexAbove' 0x302
sketch # asciicaret
include : dispiro
flat (MIDDLE - markExtend * asciiMarkZoom - HALFSTROKE) ([mix (XH + ACCENT) aboveMarkBot asciiMarkZoom] + HALFSTROKE * 0.1) [widths.center : STROKE * 1.05]
curl MIDDLE ([mix (XH + ACCENT) aboveMarkTop asciiMarkZoom] + HALFSTROKE * 0.5) [heading UPWARD]
include : dispiro
flat (MIDDLE + markExtend * asciiMarkZoom + HALFSTROKE) ([mix (XH + ACCENT) aboveMarkBot asciiMarkZoom] + HALFSTROKE * 0.1) [widths.center : STROKE * 1.05]
curl MIDDLE ([mix (XH + ACCENT) aboveMarkTop asciiMarkZoom] + HALFSTROKE * 0.5) [heading UPWARD]
save 'asciicaret' '^'
sketch # caronAbove
set-width 0
currentGlyph.shortName = 'caron'
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
include : dispiro
flat (markMiddle - markExtend - markStress) aboveMarkTop [widths markStress markStress]
curl markMiddle (aboveMarkBot - markFine * 1.7 + markStress) [heading DOWNWARD]
include : dispiro
flat (markMiddle + markExtend + markStress) aboveMarkTop [widths markStress markStress]
curl markMiddle (aboveMarkBot - markFine * 1.7 + markStress) [heading DOWNWARD]
save 'caronAbove' 0x30c
define [TildeShape] : params [ttop tbot leftEnd rightEnd hs] : glyph-construction
local fine : hs * 8 / 9
local hsvh : hs * 2 / (ttop - tbot)
local hsvhThin 0.116
local hsvhHeav 0.732
local tildeWave [linreg hsvhThin 2.925 hsvhHeav 2.375 hsvh]
local tildeWaveX 0.51
include : dispiro
widths.center (hs * 2 / CONTRAST)
g2 leftEnd tbot
bezcontrols.absolute
* [mix leftEnd rightEnd tildeWaveX]; * [mix tbot ttop tildeWave]
* [mix leftEnd rightEnd (1 - tildeWaveX)]; * [mix tbot ttop (1 - tildeWave)]
* 256; * important; * g2
g2 rightEnd ttop
sketch # tildeAbove
set-width 0
currentGlyph.shortName = 'tilde'
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
include : TildeShape
ttop -- aboveMarkTop
tbot -- aboveMarkBot + markFine / 2
leftEnd -- (markMiddle - markExtend * 1.5)
rightEnd -- (markMiddle + markExtend * 1.5)
hs -- markHalfStroke
set currentGlyph.dense true
save 'tildeAbove' 0x303
sketch # asciitilde.high
include : TildeShape
ttop -- [mix (XH + ACCENT) aboveMarkTop ((RIGHTSB - SB) / (markExtend * 3))]
tbot -- [mix (XH + ACCENT) (aboveMarkBot + markFine / 2) ((RIGHTSB - SB) / (markExtend * 3))]
leftEnd -- SB
rightEnd -- RIGHTSB
hs -- (OPERATORSTROKE / 2)
set currentGlyph.dense true
save 'asciitilde.high'
sketch
set-width 0
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
local m [mix aboveMarkBot aboveMarkTop 0.4]
local ttop [mix m aboveMarkTop 0.7]
local tbot [mix m (aboveMarkBot + markFine / 2) 0.7]
local fine : [adviceBlackness 4.5] / 2
include : TildeShape
ttop -- ttop
tbot -- tbot
leftEnd -- (markMiddle - markExtend * 1.5)
rightEnd -- (markMiddle + markExtend * 1.5)
hs -- fine
branch
include : dispiro
widths.center (fine * 2)
flat (markMiddle + markExtend * 0.2) [mix tbot ttop 1.5]
curl (markMiddle - markExtend * 0.2) [mix ttop tbot 1.5]
save 'tildeSlashAbove' 0x34A
branch
local r : 0.75 * DOTRADIUS * fine / HALFSTROKE
include : DotAt markMiddle [mix tbot ttop 1.5] r
include : DotAt markMiddle [mix ttop tbot 1.5] r
save 'tildedotdotAbove' 0x34B
sketch
set-width 0
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
local m aboveMarkBot
local ttop [mix m aboveMarkTop 0.7]
local tbot [mix m (aboveMarkBot + markFine / 2) 0.7]
include : TildeShape
ttop -- ttop
tbot -- tbot
leftEnd -- (markMiddle - markExtend * 1.5)
rightEnd -- (markMiddle + markExtend * 1.5)
hs -- ([adviceBlackness 4.5] / 2)
local k : branch
branch
local shift : (ttop - tbot) * 1.2
set currentGlyph.anchors {.}
apply-transform : Upright
apply-transform : Translate 0 shift
apply-transform : Italify
include k
apply-transform : Upright
apply-transform : Translate 0 (-0.5 * shift)
apply-transform : Italify
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
save 'dblTildeAbove' 0x34C
sketch # macronAbove
set-width 0
currentGlyph.shortName = 'macron'
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
local leftEnd (markMiddle - markExtend * 1.5)
local rightEnd (markMiddle + markExtend * 1.5)
include : dispiro
flat leftEnd (XH + ACCENT) [widths markHalfStroke markHalfStroke]
curl rightEnd (XH + ACCENT)
save 'macronAbove' 0x304
sketch # overlineAbove
set-width 0
currentGlyph.shortName = 'overline'
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
include : dispiro
flat (SB - WIDTH) (XH + ACCENT) [widths markHalfStroke markHalfStroke]
curl (RIGHTSB - WIDTH) (XH + ACCENT)
save 'overlineAbove' 0x305
sketch # dblOverlineAbove
set-width 0
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
local boxsw : Math.min (markFine * 2) ((aboveMarkTop - aboveMarkBot) / 3)
include : HBarBottom (SB - WIDTH) (RIGHTSB - WIDTH) aboveMarkBot boxsw
include : HBarTop (SB - WIDTH) (RIGHTSB - WIDTH) aboveMarkTop boxsw
save 'dblOverlineAbove' 0x33F
sketch # breveAbove
set-width 0
currentGlyph.shortName = 'breve'
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
local leftEnd (markMiddle - markExtend * 1.2)
local rightEnd (markMiddle + markExtend * 1.2)
include : dispiro
g4.down.start leftEnd aboveMarkTop [widths.heading markHalfStroke markHalfStroke DOWNWARD]
arcvh
g4.right.mid markMiddle (aboveMarkBot + markHalfStroke) [heading RIGHTWARD]
archv
g4.up.end rightEnd aboveMarkTop [heading UPWARD]
save 'breveAbove' 0x306
sketch # archAbove
set-width 0
currentGlyph.shortName = 'arch'
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
local leftEnd (markMiddle - markExtend * 1.2)
local rightEnd (markMiddle + markExtend * 1.2)
include : dispiro
g4.up.start leftEnd aboveMarkBot [widths.heading markHalfStroke markHalfStroke UPWARD]
arcvh
g4.right.mid markMiddle (aboveMarkTop - markHalfStroke) [heading RIGHTWARD]
archv
g4.down.end rightEnd aboveMarkBot [heading DOWNWARD]
save 'archAbove' 0x311
sketch # hookAbove
set-width 0
currentGlyph.shortName = 'hook'
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
local fine : Math.min markFine ((aboveMarkTop - aboveMarkBot) * 0.2)
local hookBot (aboveMarkBot - fine / 2)
local hookTop ([mix aboveMarkBot aboveMarkTop 0.9] + fine / 2)
include : dispiro
widths.lhs (fine * 2)
flat (markMiddle - fine * HVCONTRAST) hookBot [heading RIGHTWARD]
curl (markMiddle + fine * 0.4) hookBot [heading RIGHTWARD]
archv
g4.up.mid (markMiddle + markExtend - O) [mix hookBot hookTop (SMOOTHB / (SMOOTHB + SMOOTHA))] [heading UPWARD]
arcvh
flat (markMiddle + fine * 0.4) hookTop [heading LEFTWARD]
curl (markMiddle - markExtend + fine) hookTop [heading LEFTWARD]
save 'hookAbove' 0x309
sketch # doubleGraveAbove
set-width 0
currentGlyph.shortName = 'dblgrave'
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
local m1 : markMiddle - markExtend * 0.85
local m2 : markMiddle + markExtend * 0.85
include : dispiro
flat (m1 + markStress) aboveMarkBot [widths markFine markFine]
curl (m1 - markExtend) aboveMarkTop [widths markStress markStress]
include : dispiro
flat (m2 + markStress) aboveMarkBot [widths markFine markFine]
curl (m2 - markExtend) aboveMarkTop [widths markStress markStress]
save 'doubleGraveAbove' 0x30F
sketch # doubleAcuteAbove
set-width 0
currentGlyph.shortName = 'dblacute'
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
local m1 : markMiddle - markExtend * 0.85
local m2 : markMiddle + markExtend * 0.85
include : dispiro
flat (m1 - markStress) aboveMarkBot [widths markFine markFine]
curl (m1 + markExtend) aboveMarkTop [widths markStress markStress]
include : dispiro
flat (m2 - markStress) aboveMarkBot [widths markFine markFine]
curl (m2 + markExtend) aboveMarkTop [widths markStress markStress]
save 'doubleAcuteAbove' 0x30B
sketch # commaAbove
set-width 0
currentGlyph.shortName = 'comma'
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
local radius commaAboveRadius
include : Ring (aboveMarkTop + commaOvershoot) (aboveMarkTop - radius * 2 + commaOvershoot) (markMiddle - radius) (markMiddle + radius)
include : dispiro
widths.rhs : Math.min radius (markFine * [linreg 16 2 90 1.75 (markHalfStroke * 2)])
straight.down.start (markMiddle + radius) (aboveMarkTop - radius + commaOvershoot)
quadcontrols 0 0.6
g4 [mix markMiddle (markMiddle - radius) 0.2] (aboveMarkBot - radius - commaOvershoot2)
apply-transform : Upright
apply-transform : Translate 0 (DOTRADIUS * 0.3)
apply-transform : Italify
save 'commaAbove' 0x313
sketch # turnCommaAbove
set-width 0
currentGlyph.shortName = 'turnComma'
include glyphs.commaAbove
include : FlipAround markMiddle ([mix aboveMarkTop (aboveMarkBot - commaAboveRadius) 0.5] + (DOTRADIUS * 0.3) + commaOvershoot / 2)
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
save 'turnCommaAbove' 0x312
sketch # revCommaAbove
set-width 0
currentGlyph.shortName = 'revComma'
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
local radius commaAboveRadius
include : Ring (aboveMarkTop + commaOvershoot) (aboveMarkTop - radius * 2 + commaOvershoot) (markMiddle - radius) (markMiddle + radius)
include : dispiro
widths.lhs : Math.min radius (markFine * [linreg 16 2 90 1.75 (markHalfStroke * 2)])
straight.down.start (markMiddle - radius) (aboveMarkTop - radius + commaOvershoot)
quadcontrols 0 0.6
g4 [mix markMiddle (markMiddle + radius) 0.2] (aboveMarkBot - radius - commaOvershoot2)
apply-transform : Upright
apply-transform : Translate 0 (DOTRADIUS * 0.3)
apply-transform : Italify
save 'revCommaAbove' 0x314
sketch # barAbove
set-width 0
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
include : VBar markMiddle aboveMarkBot aboveMarkTop (markHalfStroke * 2)
save 'barAbove' 0x30D
sketch # dblBarAbove
set-width 0
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
include : VBar (markMiddle - markExtend * 0.75) aboveMarkBot aboveMarkTop (markHalfStroke * 2)
include : VBar (markMiddle + markExtend * 0.75) aboveMarkBot aboveMarkTop (markHalfStroke * 2)
save 'dblBarAbove' 0x30E
sketch # bridgeAbove
set-width 0
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
include : VBar (markMiddle - markExtend) aboveMarkBot aboveMarkTop (markFine * 2)
include : VBar (markMiddle + markExtend) aboveMarkBot aboveMarkTop (markFine * 2)
include : HBarTop (markMiddle - markExtend) (markMiddle + markExtend) aboveMarkTop (markFine * 2)
save 'bridgeAbove' 0x346
sketch # yerikAbove
set-width 0
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
include : dispiro
widths.center (markFine * 2)
g2 (markMiddle - markFine * 0.5) aboveMarkBot [heading UPWARD]
alsothruthem {{0.9 0.36} {0.1 0.64}} [heading UPWARD]
g2 (markMiddle + markFine * 0.5) aboveMarkTop [heading UPWARD]
save 'yerikAbove' 0x33E
sketch # candrabinduAbove
set-width 0
local fine : adviceBlackness 6.5
local yc : XH + ACCENT
local radius : Math.max (markExtend - DOTRADIUS) (fine * 1.35)
include : dispiro
widths.rhs : Math.min (markHalfStroke * 2) (fine * 1.25)
g4.down.start (markMiddle - radius) yc [heading DOWNWARD]
arcvh
g4.right.mid markMiddle (yc - radius)
archv
g4.up.end (markMiddle + radius) yc [heading UPWARD]
include : DotAt markMiddle (XH + ACCENT) fine
apply-transform : Upright
apply-transform : Translate 0 (fine * 0.5)
apply-transform : Italify
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
save 'candrabinduAbove' 0x310
sketch # variaAbove
set-width 0
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
include : dispiro
flat (markMiddle + markStress) (aboveMarkBot - markFine * 0.5) [widths markFine markFine]
curl (markMiddle - markExtend * 0.5) (aboveMarkTop + markStress * 0.25) [widths markStress markStress]
save 'variaAbove' 0x340
sketch # oxiaAbove
set-width 0
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
include : dispiro
flat (markMiddle - markStress) (aboveMarkBot - markFine * 0.5) [widths markFine markFine]
curl (markMiddle + markExtend * 0.5) (aboveMarkTop + markStress * 0.25) [widths markStress markStress]
save 'oxiaAbove' 0x341
sketch # perispomeniAbove
set-width 0
currentGlyph.shortName = 'perisp'
include glyphs.archAbove
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
save 'perispomeniAbove' 0x342
alias 'koronisAbove' 0x343 'commaAbove'
sketch # crossAbove
set-width 0
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
include : dispiro
flat (markMiddle - markExtend) aboveMarkTop [widths markFine markFine]
curl (markMiddle + markExtend) aboveMarkBot
include : dispiro
flat (markMiddle - markExtend) aboveMarkBot [widths markFine markFine]
curl (markMiddle + markExtend) aboveMarkTop
save 'crossAbove' 0x33D
sketch # greaterAbove
set-width 0
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
local top aboveMarkTop
local bot aboveMarkBot
local exp : Math.sqrt : 1 + (top - bot) / (markExtend) * (top - bot) / (markExtend)
include : dispiro
widths.center : markFine * 2
flat (markMiddle + markExtend) top
curl (markMiddle - markExtend) [mix top bot 0.5] [widths.heading (markFine / 2 * exp) (markFine / 2 * exp) LEFTWARD]
include : dispiro
widths.center : markFine * 2
flat (markMiddle + markExtend) bot
curl (markMiddle - markExtend) [mix top bot 0.5] [widths.heading (markFine / 2 * exp) (markFine / 2 * exp) LEFTWARD]
save 'lessAbove' 0x1DFE
include : FlipAround markMiddle [mix top bot 0.5]
save 'greaterAbove' 0x350
### Below marks
symbol-block 'Below marks'
sketch # cedillaBelow
set-width 0
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
local fine : Math.min markHalfStroke ((belowMarkTop - belowMarkBot) * 0.25)
local cedillaTop (belowMarkTop + fine * 0.85)
local cedillaBot belowMarkBot
include : dispiro
flat (markMiddle - fine * HVCONTRAST) cedillaTop [widths.heading 0 (fine * 2) RIGHTWARD]
curl markMiddle cedillaTop [heading RIGHTWARD]
archv
g4 (markMiddle + markExtend - O) [mix cedillaTop cedillaBot 0.5] [heading DOWNWARD]
arcvh
flat markMiddle cedillaBot [heading LEFTWARD]
curl (markMiddle - markExtend) cedillaBot [heading LEFTWARD]
include : VBar markMiddle 0 (cedillaTop - fine) (fine * 2)
save 'cedillaBelow' 0x327
sketch # ogonekBelow
set-width 0
local fine : markHalfStroke * [linreg 16 1 90 0.25 (markHalfStroke * 2)]
local ogonekBot : [mix belowMarkTop belowMarkBot 0.75] + markStress * 2
local ogonekLeft : markMiddle + ogonekBot * 0.5
local ogonekRight : markMiddle + markExtend * 0.85
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
include : dispiro
g4.left.start markMiddle O [widths 0 (fine * 2)]
#archv
g4 ogonekLeft [mix O ogonekBot 0.5] [widths 0 ([mix fine markStress 0.75] * 2)]
#arcvh
flat (markMiddle + markExtend * 0.25) ogonekBot [widths 0 (markStress * 2)]
curl ogonekRight ogonekBot [heading RIGHTWARD]
save 'ogonekBelow' 0x328
sketch # ogonekTR
set-width 0
include glyphs.ogonekBelow
local ogonekBot : [mix belowMarkTop belowMarkBot 0.75] + markStress * 2
local ogonekRight : markMiddle + markExtend * 0.85
set-anchor 'trailing' MARK markMiddle 0 ogonekRight ogonekBot
save 'ogonekTR'
sketch # iotaBelow
set-width 0
set currentGlyph.shortName 'iota'
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
include : VBar markMiddle belowMarkBot belowMarkTop (markHalfStroke * 2)
save 'iotaBelow' 0x345
sketch # iotaLF
set-width 0
set-anchor 'lf' MARK markMiddle 0 markMiddle belowMarkBot
include : VBar markMiddle belowMarkBot belowMarkTop (markHalfStroke * 2)
save 'iotaLF'
sketch # uptackBelow
set-width 0
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
include : VBar markMiddle belowMarkBot belowMarkTop (markFine * 2)
include : HBarBottom (markMiddle - markExtend) (markMiddle + markExtend) belowMarkBot (markFine * 2)
save 'uptackBelow' 0x31D
sketch # downtackBelow
set-width 0
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
include : VBar markMiddle belowMarkBot belowMarkTop (markFine * 2)
include : HBarTop (markMiddle - markExtend) (markMiddle + markExtend) belowMarkTop (markFine * 2)
save 'downtackBelow' 0x31E
sketch # lefttackBelow
set-width 0
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
include : VBar (markMiddle + markExtend) belowMarkBot belowMarkTop (markFine * 2)
include : HBar (markMiddle - markExtend) (markMiddle + markExtend) [mix belowMarkTop belowMarkBot 0.5] (markFine * 2)
save 'lefttackBelow' 0x318
sketch # righttackBelow
set-width 0
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
include : VBar (markMiddle - markExtend) belowMarkBot belowMarkTop (markFine * 2)
include : HBar (markMiddle - markExtend) (markMiddle + markExtend) [mix belowMarkTop belowMarkBot 0.5] (markFine * 2)
save 'righttackBelow' 0x319
sketch # leftAngleBelow
set-width 0
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
include : VBar (markMiddle + markExtend) belowMarkBot belowMarkTop (markFine * 2)
include : HBarTop (markMiddle - markExtend) (markMiddle + markExtend) belowMarkTop (markFine * 2)
save 'leftAngleBelow' 0x349
sketch # plusBelow
set-width 0
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
include : VBar markMiddle belowMarkBot belowMarkTop (markFine * 2)
include : HBar (markMiddle - markExtend) (markMiddle + markExtend) [mix belowMarkTop belowMarkBot 0.5] (markFine * 2)
save 'plusBelow' 0x31F
sketch # minusBelow
set-width 0
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
include : VBar (markMiddle - markExtend) belowMarkBot belowMarkTop (markFine * 2)
include : VBar (markMiddle + markExtend) belowMarkBot belowMarkTop (markFine * 2)
include : HBar (markMiddle - markExtend) (markMiddle + markExtend) [mix belowMarkTop belowMarkBot 0.5] (markFine * 2)
save 'minusBelow' 0x320
sketch # bridgeBelow
set-width 0
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
include : VBar (markMiddle - markExtend) belowMarkBot belowMarkTop (markFine * 2)
include : VBar (markMiddle + markExtend) belowMarkBot belowMarkTop (markFine * 2)
include : HBarTop (markMiddle - markExtend) (markMiddle + markExtend) belowMarkTop (markFine * 2)
save 'bridgeBelow' 0x32A
sketch # boxBelow
set-width 0
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
local boxsw : Math.min (markFine * 2) ((belowMarkTop - belowMarkBot) / 3)
include : VBar (markMiddle - markExtend) belowMarkBot belowMarkTop (markFine * 2)
include : VBar (markMiddle + markExtend) belowMarkBot belowMarkTop (markFine * 2)
include : HBarBottom (markMiddle - markExtend) (markMiddle + markExtend) belowMarkBot boxsw
include : HBarTop (markMiddle - markExtend) (markMiddle + markExtend) belowMarkTop boxsw
save 'boxBelow' 0x33B
sketch # equalBelow
set-width 0
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
local boxsw : Math.min (markFine * 2) ((belowMarkTop - belowMarkBot) / 3)
include : HBarBottom (markMiddle - markExtend) (markMiddle + markExtend) belowMarkBot boxsw
include : HBarTop (markMiddle - markExtend) (markMiddle + markExtend) belowMarkTop boxsw
save 'equalBelow' 0x347
sketch # dblBreveBelow
set-width 0
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
local extend : (belowMarkTop - belowMarkBot - markHalfStroke) * 1.25
include : dispiro
g4.down.start (markMiddle - extend) belowMarkTop [widths.heading markHalfStroke markHalfStroke DOWNWARD]
arcvh
g4.right.mid [mix markMiddle (markMiddle - extend) 0.5] (belowMarkBot + markHalfStroke) [heading RIGHTWARD]
archv
g4.up.end markMiddle belowMarkTop [heading UPWARD]
include : dispiro
g4.down.start markMiddle belowMarkTop [widths.heading markHalfStroke markHalfStroke DOWNWARD]
arcvh
g4.right.mid [mix markMiddle (markMiddle + extend) 0.5] (belowMarkBot + markHalfStroke) [heading RIGHTWARD]
archv
g4.up.end (markMiddle + extend) belowMarkTop [heading UPWARD]
save 'dblBreveBelow' 0x32B
sketch # dblArchBelow
set-width 0
include glyphs.dblBreveBelow
include : FlipAround markMiddle [mix belowMarkTop belowMarkBot 0.5]
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
save 'dblArchBelow' 0x33C
sketch # leftHalfCircleBelow
set-width 0
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
include : dispiro
g4.left.start markMiddle belowMarkTop [widths.heading markFine markFine LEFTWARD]
archv
g4.down.mid (markMiddle - (belowMarkTop - belowMarkBot) / 2) [mix belowMarkTop belowMarkBot 0.5] [heading DOWNWARD]
arcvh
g4.right.end markMiddle belowMarkBot [heading RIGHTWARD]
apply-transform : Translate ((belowMarkTop - belowMarkBot) / 4) 0
save 'leftHalfCircleBelow' 0x31C
sketch # rightHalfCircleBelow
set-width 0
include glyphs.leftHalfCircleBelow
include : FlipAround markMiddle [mix belowMarkTop belowMarkBot 0.5]
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
save 'rightHalfCircleBelow' 0x339
sketch # leftHalfCircleAbove
set-width 0
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
include glyphs.rightHalfCircleBelow
include : FlipAround markMiddle (XH / 2)
save 'leftHalfCircleAbove' 0x351
sketch # rightHalfCircleAbove
set-width 0
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
include glyphs.leftHalfCircleBelow
include : FlipAround markMiddle (XH / 2)
save 'rightHalfCircleAbove' 0x357
# Turned below marks
sketch # graveBelow
set-width 0
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
include glyphs.graveAbove
include : FlipAround markMiddle (XH / 2)
save 'graveBelow' 0x316
sketch # acuteBelow
set-width 0
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
include glyphs.acuteAbove
include : FlipAround markMiddle (XH / 2)
save 'acuteBelow' 0x317
sketch # dotBelow
set-width 0
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
include glyphs.dotAbove
include : FlipAround markMiddle (XH / 2)
save 'dotBelow' 0x323
sketch # dieresisBelow
set-width 0
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
include glyphs.dieresisAbove
include : FlipAround markMiddle (XH / 2)
save 'dieresisBelow' 0x324
sketch # tildeBelow
set-width 0
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
include glyphs.tildeAbove
include : FlipAround markMiddle (XH / 2)
save 'tildeBelow' 0x330
sketch # ringBelow
set-width 0
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
include glyphs.ringAbove
include : FlipAround markMiddle (XH / 2)
save 'ringBelow' 0x325
sketch # macronBelow
set-width 0
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
include glyphs.macronAbove
include : FlipAround markMiddle (XH / 2)
save 'macronBelow' 0x331
sketch # invBridgeBelow
set-width 0
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
include glyphs.bridgeAbove
include : FlipAround markMiddle (XH / 2)
save 'invBridgeBelow' 0x33A
sketch # underlineBelow
set-width 0
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
include glyphs.overlineAbove
include : FlipAround markMiddle (XH / 2)
save 'underlineBelow' 0x332
sketch # dblUnderlineBelow
set-width 0
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
include glyphs.dblOverlineAbove
include : FlipAround markMiddle (XH / 2)
save 'dblUnderlineBelow' 0x333
sketch # circumflexBelow
set-width 0
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
include glyphs.caronAbove
include : FlipAround markMiddle (XH / 2)
save 'circumflexBelow' 0x32D
sketch # caronBelow
set-width 0
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
include glyphs.circumflexAbove
include : FlipAround markMiddle (XH / 2)
save 'caronBelow' 0x32C
sketch # breveBelow
set-width 0
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
include glyphs.archAbove
include : FlipAround markMiddle (XH / 2)
save 'breveBelow' 0x32E
sketch # archBelow
set-width 0
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
include glyphs.breveAbove
include : FlipAround markMiddle (XH / 2)
save 'archBelow' 0x32F
sketch # commaBelow
set-width 0
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
include glyphs.turnCommaAbove
include : FlipAround markMiddle (XH / 2)
save 'commaBelow' 0x326
sketch # barBelow
set-width 0
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
include glyphs.barAbove
include : FlipAround markMiddle (XH / 2)
save 'barBelow' 0x329
sketch # dblBarBelow
set-width 0
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
include glyphs.dblBarAbove
include : FlipAround markMiddle (XH / 2)
save 'dblBarBelow' 0x348
sketch # crossBelow
set-width 0
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
include glyphs.crossAbove
include : FlipAround markMiddle (XH / 2)
save 'crossBelow' 0x353
sketch # lessBelow
set-width 0
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
include glyphs.greaterAbove
include : FlipAround markMiddle (XH / 2)
save 'lessBelow' 0x354
sketch # greaterBelow
set-width 0
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
include glyphs.lessAbove
include : FlipAround markMiddle (XH / 2)
save 'greaterBelow' 0x355
sketch # greaterBelow
set-width 0
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
include glyphs.dblRingAbove
include : FlipAround markMiddle (XH / 2)
save 'dblRingBelow' 0x35a
sketch # lrArrowBelow
set-width 0
local fine : [adviceBlackness 5.75] / 2
local h : branch
local top belowMarkTop
local bot belowMarkBot
local left : markMiddle - markExtend * 1.5
local right : markMiddle - markExtend * 0.5
local exp : Math.sqrt : 1 + (top - bot) / (2 * (right - left)) * (top - bot) / (2 * (right - left))
include : dispiro
widths.center : fine * 2
flat right top
curl left [mix top bot 0.5] [widths.heading (fine * exp) (fine * exp) DOWNWARD]
include : dispiro
widths.center : fine * 2
flat right bot
curl left [mix top bot 0.5] [widths.heading (fine * exp) (fine * exp) UPWARD]
include h
include : FlipAround markMiddle [mix belowMarkTop belowMarkBot 0.5]
include h
include : HBar (markMiddle - markExtend * 1.5) (markMiddle + markExtend * 1.5) [mix belowMarkTop belowMarkBot 0.5] (fine * 2)
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
save 'lrArrowBelow' 0x34D
sketch # upArrowBelow
set-width 0
local fine : [adviceBlackness 6] / 2
local top belowMarkTop
local bot [mix belowMarkBot belowMarkTop 0.5]
local left : markMiddle - markExtend * 0.75
local right : markMiddle + markExtend * 0.75
local exp : Math.sqrt : 1 + (2 * (top - bot)) / (right - left) * (2 * (top - bot)) / (right - left)
include : dispiro
widths.center : fine * 2
flat left bot
curl [mix left right 0.5] top [widths.heading (fine * exp) (fine * exp) RIGHTWARD]
include : dispiro
widths.center : fine * 2
flat right bot
curl [mix left right 0.5] top [widths.heading (fine * exp) (fine * exp) LEFTWARD]
include : VBar markMiddle belowMarkBot top (fine * 2)
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
save 'lrArrowBelow' 0x34E
# horn and angle marks
symbol-block 'Corner marks'
sketch # horn
set-width 0
local radius : markHalfStroke * 1.5
include : Ring (XH + ACCENT + radius) (XH + ACCENT - radius) (markMiddle - radius) (markMiddle + radius)
include : dispiro
g4 (markMiddle + radius) (XH + ACCENT) [widths 0 (markFine * 1.75)]
quadcontrols 0 0.75 5 important
g4 (markMiddle - radius - markHalfStroke) (aboveMarkBot - radius)
apply-transform : Upright
apply-transform : Translate (-markMiddle + radius * 0.35) 0
apply-transform : Italify
set-anchor 'topright' MARK 0 (aboveMarkBot + markFine * 0.75) 0 aboveMarkTop
save 'horn' 0x31B
sketch # leftangleTR
set-width 0
include : VBarLeft 0 aboveMarkBot aboveMarkTop (markFine * 2)
include : HBarTop (-markExtend * 1.5) 0 aboveMarkTop (markFine * 2)
set-anchor 'topright' MARK 0 XH 0 aboveMarkTop
save 'leftangleTR' 0x31A
sketch # dotTR
set-width 0
include : Ring (XH + ACCENT + DOTRADIUS) (XH + ACCENT - DOTRADIUS) (0 - DOTRADIUS) (0 + DOTRADIUS) true
set-anchor 'topright' MARK 0 XH 0 aboveMarkTop
save 'dotTR' 0x358
sketch # commaTR
set-width 0
include glyphs.commaAbove
apply-transform : Upright
apply-transform : Translate (RIGHTSB - MIDDLE - OX) (XH - aboveMarkTop - commaOvershoot)
apply-transform : Italify
set-anchor 'topright' MARK 0 XH 0 aboveMarkTop
save 'commaTR' 0x315
sketch # rtailBR
set-width 0
set-anchor 'bottomright' MARK 0 0 0 belowMarkBot
include : dispiro
widths.rhs
flat 0 (-O) [heading DOWNWARD]
curl 0 0 [heading DOWNWARD]
straight.right.end (HOOKX - HALFSTROKE * HVCONTRAST) (-HOOK + HALFSTROKE)
save 'rtailBR' 0x322
sketch # ltailBR
set-width 0
set-anchor 'bottomright' MARK 0 0 0 belowMarkBot
include : dispiro
widths.rhs
flat 0 (-O) [heading DOWNWARD]
curl 0 0 [heading DOWNWARD]
straight.left.end (-HOOKX - HALFSTROKE * HVCONTRAST) (-HOOK - HALFSTROKE)
save 'ltailBR' 0x321
# Overlay Marks
symbol-block 'Overlay Marks'
sketch # tildeOver
set-width 0
set-anchor 'overlay' MARK markMiddle (XH / 2) markMiddle (XH / 2)
include glyphs.tildeAbove
apply-transform : Upright
apply-transform : Translate 0 (XH / 2 - [mix aboveMarkTop aboveMarkBot 0.5])
apply-transform : Italify
save 'tildeOver' 0x334
sketch # barOver
set-width 0
set-anchor 'overlay' MARK markMiddle (XH / 2) markMiddle (XH / 2)
include : HOverlayBar (markMiddle - LONGJUT * 0.75) (markMiddle + LONGJUT * 0.75) (XH / 2)
save 'barOver' 0x335
sketch # longBarOver
set-width 0
set-anchor 'overlay' MARK markMiddle (XH / 2) markMiddle (XH / 2)
include : HOverlayBar ([mix 0 SB 0.5] - WIDTH) ([mix WIDTH RIGHTSB 0.5] - WIDTH) (XH / 2)
save 'longBarOver' 0x336
sketch # shortSlashOver
set-width 0
set-anchor 'overlay' MARK markMiddle (XH / 2) markMiddle (XH / 2)
include : FlatSlashShape markMiddle (XH / 2) (0.5 * OVERLAYSTROKE)
save 'shortSlashOver' 0xE090
sketch # slashOver
set-width 0
local fine : 0.375 * OVERLAYSTROKE
set-anchor 'slash' MARK markMiddle (XH / 2) markMiddle (XH / 2)
include : dispiro
flat (SB - O * 3 + fine - WIDTH) (XH * (-0.1)) [widths fine fine]
curl (RIGHTSB + O * 3 - fine - WIDTH) (XH * 1.1)
save 'slashOver' 0x337
sketch # longSlashOver
set-width 0
local fine : 0.375 * OVERLAYSTROKE
set-anchor 'slash' MARK markMiddle (XH / 2) markMiddle (XH / 2)
include : dispiro
flat (SB - O * 3 + fine - WIDTH) (XH * 0.5 - CAP * 0.6) [widths fine fine]
curl (RIGHTSB + O * 3 - fine - WIDTH) (XH * 0.5 + CAP * 0.6)
save 'longSlashOver' 0x338
# Double-character arcs
symbol-block 'Tie marks'
sketch # tieAbove
set-width 0
include : dispiro
widths.rhs (markHalfStroke * 2)
g4 [mix 0 markMiddle 1.25] aboveMarkBot
quadcontrols 0.5 1
g4.right.mid 0 aboveMarkTop [heading RIGHTWARD]
quadcontrols 0.5 0
g4 [mix 0 markMiddle (-1.25)] aboveMarkBot
apply-transform : Upright
apply-transform : Translate 0 (CAP - XH)
apply-transform : Italify
save 'tieAbove' 0x361
sketch # turnTieAbove
set-width 0
include : dispiro
widths.lhs (markHalfStroke * 2)
g4 [mix 0 markMiddle 1.25] aboveMarkTop
quadcontrols 0.5 1
g4.right.mid 0 aboveMarkBot [heading RIGHTWARD]
quadcontrols 0.5 0
g4 [mix 0 markMiddle (-1.25)] aboveMarkTop
apply-transform : Upright
apply-transform : Translate 0 (CAP - XH)
apply-transform : Italify
save 'turnTieAbove' 0x35D
turned 'tieBelow' 0x35C 'tieAbove' 0 (XH / 2)
sketch # overlineTieAbove
set-width 0
include : dispiro
widths.center (markHalfStroke * 2)
flat [mix 0 markMiddle 1.25] (XH + ACCENT)
curl [mix 0 markMiddle (-1.25)] (XH + ACCENT)
apply-transform : Upright
apply-transform : Translate 0 (CAP - XH)
apply-transform : Italify
save 'overlineTieAbove' 0x35E
composite 'underlineTieBelow' glyphs.overlineTieAbove [FlipAround 0 (XH / 2)] [into-unicode 0x35F]
symbol-block 'Greek Polytonic Marks'
define [GreekLRDoubleMark id unicode leftGlyph rightGlyph] : begin
sketch # Combining double mark
set-width 0
local k : -WIDTH * 0.15
include leftGlyph
apply-transform : Translate (2 * k) 0
include rightGlyph
apply-transform : Translate (0 - k) 0
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
save id
sketch # Spaced double mark
include glyphs.space AS_BASE
include glyphs.(id)
save ('spaced' + id) unicode
GreekLRDoubleMark 'psilivaria' 0x1FCD glyphs.commaAbove glyphs.variaAbove
GreekLRDoubleMark 'psilioxia' 0x1FCE glyphs.commaAbove glyphs.oxiaAbove
GreekLRDoubleMark 'dasiavaria' 0x1FDD glyphs.revCommaAbove glyphs.variaAbove
GreekLRDoubleMark 'dasiaoxia' 0x1FDE glyphs.revCommaAbove glyphs.oxiaAbove
local yc : aboveMarkTop - commaAboveRadius + DOTRADIUS * 0.3 + commaOvershoot
sketch # psiliperispomeni
set-width 0
include glyphs.commaAbove
local radius : Math.max (markExtend - commaAboveRadius) (commaAboveRadius * 1.25)
include : dispiro
widths.lhs : Math.min (markHalfStroke * 2) ([adviceBlackness 6.5] * 1.25)
g4.up.start (markMiddle - radius) yc [heading UPWARD]
arcvh
g4.right.mid markMiddle (yc + radius)
archv
g4.down.end (markMiddle + radius) yc [heading DOWNWARD]
set-anchor 'above' MARK markMiddle XH markMiddle (aboveMarkTop + markHalfStroke * 2)
save 'psiliperispomeni'
sketch # spaced_psiliperispomeni
include glyphs.space AS_BASE
include glyphs.psiliperispomeni
save 'spaced_psiliperispomeni' 0x1FCF
sketch # dasiaperispomeni
set-width 0
include glyphs.revCommaAbove
local radius : Math.max (markExtend - commaAboveRadius) (commaAboveRadius * 1.25)
include : dispiro
widths.lhs : Math.min (markHalfStroke * 2) ([adviceBlackness 6.5] * 1.25)
g4.up.start (markMiddle - radius) yc [heading UPWARD]
arcvh
g4.right.mid markMiddle (yc + radius)
archv
g4.down.end (markMiddle + radius) yc [heading DOWNWARD]
set-anchor 'above' MARK markMiddle XH markMiddle (aboveMarkTop + markHalfStroke * 2)
save 'dasiaperispomeni'
sketch # spaced_dasiaperispomeni
include glyphs.space AS_BASE
include glyphs.dasiaperispomeni
save 'spaced_dasiaperispomeni' 0x1FDF