1383 lines
54 KiB
Text
1383 lines
54 KiB
Text
$$include '../meta/macros.ptl'
|
|
|
|
import [OffsetCurve BezToContoursSink GEOMETRY_PRECISION] from '../support/curve-util'
|
|
import [mix linreg clamp fallback] from '../support/utils'
|
|
import [designParameters] from '../meta/aesthetics'
|
|
import [Arcs Quadify transferGenericShapeAsBezier] from "typo-geom"
|
|
import [TieMark TieGlyph] from "../support/gr"
|
|
|
|
glyph-module
|
|
|
|
glyph-block Overmarks : begin
|
|
glyph-block-import CommonShapes
|
|
glyph-block-import Common-Derivatives
|
|
|
|
### Combining marks
|
|
local markExtend (AccentX * 0.5)
|
|
local markHalfStroke : 0.5 * [adviceBlackness2 3.5 3.375 XH]
|
|
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 belowMarkMid [mix belowMarkBot belowMarkTop 0.5]
|
|
|
|
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
|
|
create-glyph 'dotAbove' 0x307 : glyph-proc
|
|
set-width 0
|
|
currentGlyph.shortName = 'dot'
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle (XH + Accent)
|
|
include : DotAt markMiddle (XH + Accent) DotRadius
|
|
|
|
create-glyph 'dieresisAbove' 0x308 : glyph-proc
|
|
set-width 0
|
|
currentGlyph.shortName = 'dieresis'
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle (XH + Accent)
|
|
include : DotAt (markMiddle - markExtend) (XH + Accent) markDotsRadius
|
|
include : DotAt (markMiddle + markExtend) (XH + Accent) markDotsRadius
|
|
|
|
define [RingDims] : begin
|
|
local radiusIn : Accent * 0.24
|
|
local radiusOut : radiusIn + markFine * [linreg 16 2 90 1.75 (markHalfStroke * 2)]
|
|
return [object radiusIn radiusOut]
|
|
|
|
create-glyph 'ringAbove' 0x30A : glyph-proc
|
|
set-width 0
|
|
currentGlyph.shortName = 'ring'
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle (XH + Accent)
|
|
local [object radiusIn radiusOut] : RingDims
|
|
include : difference
|
|
DotAt markMiddle (XH + Accent) radiusOut
|
|
DotAt markMiddle (XH + Accent) radiusIn
|
|
include : Upright
|
|
include : Translate 0 (-markFine * 0.75)
|
|
include : Italify
|
|
|
|
create-glyph 'dblRingAbove' 0x1AB2 : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle (XH + Accent)
|
|
local [object radiusIn radiusOut] : RingDims
|
|
local k : 2 * (radiusOut - (radiusOut - radiusIn) * 0.25)
|
|
include : WithTransform [Translate (+k / 2) 0] : refer-glyph 'ringAbove'
|
|
include : WithTransform [Translate (-k / 2) 0] : refer-glyph 'ringAbove'
|
|
|
|
create-glyph 'graveAbove' 0x300 : glyph-proc
|
|
set-width 0
|
|
currentGlyph.shortName = 'grave'
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle (XH + Accent)
|
|
|
|
include : dispiro
|
|
flat (markMiddle + markStress) aboveMarkBot [widths markFine markFine]
|
|
curl (markMiddle - markExtend) aboveMarkTop [widths markStress markStress]
|
|
|
|
create-glyph 'asciigrave' '`' : glyph-proc
|
|
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]
|
|
|
|
create-glyph 'acuteAbove' 0x301 : glyph-proc
|
|
set-width 0
|
|
currentGlyph.shortName = 'acute'
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle (XH + Accent)
|
|
|
|
include : dispiro
|
|
flat (markMiddle - markStress) aboveMarkBot [widths markFine markFine]
|
|
curl (markMiddle + markExtend) aboveMarkTop [widths markStress markStress]
|
|
|
|
create-glyph 'latin1acute' 0xB4 : glyph-proc
|
|
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]
|
|
|
|
create-glyph 'circumflexAbove' 0x302 : glyph-proc
|
|
set-width 0
|
|
currentGlyph.shortName = 'circum'
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle (XH + Accent)
|
|
|
|
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]
|
|
|
|
create-glyph 'bardownAbove' 0x1DC6 : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle (XH + Accent)
|
|
|
|
include : dispiro
|
|
widths.rhs (markHalfStroke * 2)
|
|
flat (markMiddle - markExtend * 1.5) (aboveMarkTop + markFine * 0.7)
|
|
curl (markMiddle + markStress * HVContrast) (aboveMarkTop + markFine * 0.7)
|
|
include : dispiro
|
|
flat (markMiddle + markExtend + markStress) (aboveMarkBot + markStress - markFine) [widths markStress markStress]
|
|
curl markMiddle (aboveMarkTop + markFine * 0.7) [heading Upward]
|
|
|
|
create-glyph 'upbarAbove' 0x1DC7 : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle (XH + Accent)
|
|
|
|
include : dispiro
|
|
flat (markMiddle - markExtend - markStress) (aboveMarkBot + markStress - markFine) [widths markStress markStress]
|
|
curl markMiddle (aboveMarkTop + markFine * 0.7) [heading Upward]
|
|
include : dispiro
|
|
widths.rhs (markHalfStroke * 2)
|
|
flat (markMiddle - markStress * HVContrast) (aboveMarkTop + markFine * 0.7)
|
|
curl (markMiddle + markExtend * 1.5) (aboveMarkTop + markFine * 0.7)
|
|
|
|
create-glyph 'asciiCaret.high' : glyph-proc
|
|
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]
|
|
|
|
create-glyph 'caronAbove' 0x30c : glyph-proc
|
|
set-width 0
|
|
currentGlyph.shortName = 'caron'
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle (XH + Accent)
|
|
|
|
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]
|
|
|
|
create-glyph 'barupAbove' 0x1DC4 : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle (XH + Accent)
|
|
|
|
include : dispiro
|
|
widths.lhs (markHalfStroke * 2)
|
|
flat (markMiddle - markExtend * 1.5) (aboveMarkBot - markFine * 1.7 + markStress)
|
|
curl (markMiddle + markStress * HVContrast) (aboveMarkBot - markFine * 1.7 + markStress)
|
|
include : dispiro
|
|
flat (markMiddle + markExtend + markStress) aboveMarkTop [widths markStress markStress]
|
|
curl markMiddle (aboveMarkBot - markFine * 1.7 + markStress) [heading Downward]
|
|
|
|
create-glyph 'downbarAbove' 0x1DC5 : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle (XH + Accent)
|
|
|
|
include : dispiro
|
|
flat (markMiddle - markExtend - markStress) aboveMarkTop [widths markStress markStress]
|
|
curl markMiddle (aboveMarkBot - markFine * 1.7 + markStress) [heading Downward]
|
|
include : dispiro
|
|
widths.lhs (markHalfStroke * 2)
|
|
flat (markMiddle - markStress * HVContrast) (aboveMarkBot - markFine * 1.7 + markStress)
|
|
curl (markMiddle + markExtend * 1.5) (aboveMarkBot - markFine * 1.7 + markStress)
|
|
|
|
define [TildeShape] : params [ttop tbot leftEnd rightEnd hs] : glyph-proc
|
|
local fine : hs * 8 / 9
|
|
local hsvh : hs * 2 / [Math.abs (ttop - tbot)]
|
|
local hvc : (rightEnd - leftEnd) / [Math.abs (ttop - tbot)]
|
|
local defaultHvc : markExtend * 3 / (aboveMarkTop - aboveMarkBot - markFine / 2)
|
|
|
|
local hsvhThin 0.116
|
|
local hsvhHeav 0.732
|
|
local tildeWave : [linreg hsvhThin 2.925 hsvhHeav 2.375 hsvh] * [linreg defaultHvc 1 4.35 1.1 hvc]
|
|
local tildeWaveX 0.51
|
|
|
|
define z1 : currentGlyph.gizmo.apply : object [x leftEnd] [y tbot]
|
|
define z2 : currentGlyph.gizmo.apply : object [x : mix leftEnd rightEnd tildeWaveX] [y : mix tbot ttop tildeWave]
|
|
define z3 : currentGlyph.gizmo.apply : object [x : mix leftEnd rightEnd (1 - tildeWaveX)] [y : mix tbot ttop (1 - tildeWave)]
|
|
define z4 : currentGlyph.gizmo.apply : object [x rightEnd] [y ttop]
|
|
define bone : new Arcs.Bez3 z1 z2 z3 z4
|
|
|
|
define inner : new OffsetCurve bone (+hs) HVContrast
|
|
define outer : new Arcs.Reverted : new OffsetCurve bone (-hs) HVContrast
|
|
|
|
define cs : new BezToContoursSink
|
|
transferGenericShapeAsBezier {{inner outer}} cs GEOMETRY_PRECISION
|
|
currentGlyph.includeGeometry cs 0 0
|
|
|
|
create-glyph 'tildeAbove' 0x303 : glyph-proc
|
|
set-width 0
|
|
currentGlyph.shortName = 'tilde'
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
|
|
|
|
include : TildeShape
|
|
ttop -- aboveMarkTop
|
|
tbot -- aboveMarkBot + markFine / 2
|
|
leftEnd -- (markMiddle - markExtend * 1.5)
|
|
rightEnd -- (markMiddle + markExtend * 1.5)
|
|
hs -- markHalfStroke
|
|
|
|
create-glyph 'tildeAboveOverlay' : glyph-proc
|
|
set-width 0
|
|
currentGlyph.shortName = 'tilde'
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
|
|
|
|
include : TildeShape
|
|
ttop -- aboveMarkTop
|
|
tbot -- aboveMarkBot + markFine / 2
|
|
leftEnd -- (markMiddle - markExtend * 1.75)
|
|
rightEnd -- (markMiddle + markExtend * 1.75)
|
|
hs -- ([adviceBlackness 4.5] / 2)
|
|
|
|
create-glyph 'asciiTilde.high' : glyph-proc
|
|
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)
|
|
|
|
create-glyph 'overlayTildeOperator' : glyph-proc
|
|
local t [mix (XH + Accent) aboveMarkTop ((RightSB - SB) / (markExtend * 3))]
|
|
local b [mix (XH + Accent) (aboveMarkBot + markFine / 2) ((RightSB - SB) / (markExtend * 3))]
|
|
include : TildeShape
|
|
ttop -- t
|
|
tbot -- b
|
|
leftEnd -- [mix 0 SB (1/3)]
|
|
rightEnd -- [mix Width RightSB (1/3)]
|
|
hs -- ([adviceBlackness 4] / 2)
|
|
include : Realign Middle [mix t b (1/2)] Middle SymbolMid
|
|
|
|
create-glyph : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
|
|
|
|
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
|
|
|
|
create-derived 'tildeSlashAbove' 0x34A : glyph-proc
|
|
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]
|
|
|
|
create-derived 'tildedotdotAbove' 0x34B : glyph-proc
|
|
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
|
|
|
|
create-glyph 'dblTildeAbove' 0x34C : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
|
|
|
|
local m aboveMarkBot
|
|
local ttop [mix m aboveMarkTop 0.7]
|
|
local tbot [mix m (aboveMarkBot + markFine / 2) 0.7]
|
|
|
|
define [addTilde] : TildeShape
|
|
ttop -- ttop
|
|
tbot -- tbot
|
|
leftEnd -- (markMiddle - markExtend * 1.5)
|
|
rightEnd -- (markMiddle + markExtend * 1.5)
|
|
hs -- ([adviceBlackness 4.5] / 2)
|
|
|
|
local shift : (ttop - tbot) * 1.2
|
|
include : addTilde
|
|
include : Upright
|
|
include : Translate 0 shift
|
|
include : Italify
|
|
|
|
include : addTilde
|
|
include : Upright
|
|
include : Translate 0 (-0.5 * shift)
|
|
include : Italify
|
|
|
|
create-glyph 'macronAbove' 0x304 : glyph-proc
|
|
set-width 0
|
|
currentGlyph.shortName = 'macron'
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle (XH + Accent)
|
|
|
|
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)
|
|
|
|
create-glyph 'sbOverlineAbove' : glyph-proc
|
|
set-width 0
|
|
currentGlyph.shortName = 'overline'
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle (XH + Accent)
|
|
|
|
include : dispiro
|
|
flat (SB - Width) (XH + Accent) [widths markHalfStroke markHalfStroke]
|
|
curl (RightSB - Width) (XH + Accent)
|
|
|
|
create-glyph 'overlineAbove' 0x305 : glyph-proc
|
|
set-width 0
|
|
currentGlyph.shortName = 'overline'
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle (XH + Accent)
|
|
|
|
include : dispiro
|
|
flat (0 - Width) (XH + Accent) [widths markHalfStroke markHalfStroke]
|
|
curl 0 (XH + Accent)
|
|
|
|
create-glyph 'dblOverlineAbove' 0x33F : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
|
|
|
|
local boxsw : Math.min (markFine * 2) ((aboveMarkTop - aboveMarkBot) / 3)
|
|
|
|
include : dispiro
|
|
widths.lhs boxsw
|
|
flat (0 - Width) aboveMarkBot
|
|
curl 0 aboveMarkBot
|
|
|
|
include : dispiro
|
|
widths.rhs boxsw
|
|
flat (0 - Width) aboveMarkTop
|
|
curl 0 aboveMarkTop
|
|
|
|
create-glyph 'breveAbove' 0x306 : glyph-proc
|
|
set-width 0
|
|
currentGlyph.shortName = 'breve'
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
|
|
|
|
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]
|
|
|
|
create-glyph 'archAbove' 0x311 : glyph-proc
|
|
set-width 0
|
|
currentGlyph.shortName = 'arch'
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
|
|
|
|
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]
|
|
|
|
create-glyph 'hookAbove' 0x309 : glyph-proc
|
|
set-width 0
|
|
currentGlyph.shortName = 'hook'
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle (XH + Accent)
|
|
|
|
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]
|
|
|
|
create-glyph 'doubleGraveAbove' 0x30F : glyph-proc
|
|
set-width 0
|
|
currentGlyph.shortName = 'dblgrave'
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle (XH + Accent)
|
|
|
|
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]
|
|
|
|
create-glyph 'doubleAcuteAbove' 0x30B : glyph-proc
|
|
set-width 0
|
|
currentGlyph.shortName = 'dblacute'
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle (XH + Accent)
|
|
|
|
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]
|
|
|
|
create-glyph 'commaAbove' 0x313 : glyph-proc
|
|
set-width 0
|
|
currentGlyph.shortName = 'comma'
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle (XH + Accent)
|
|
|
|
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)
|
|
include : Upright
|
|
include : Translate 0 (DotRadius * 0.3)
|
|
include : Italify
|
|
|
|
create-glyph 'turnCommaAbove' 0x312 : glyph-proc
|
|
set-width 0
|
|
currentGlyph.shortName = 'turnComma'
|
|
include : refer-glyph "commaAbove"
|
|
include : FlipAround markMiddle ([mix aboveMarkTop (aboveMarkBot - commaAboveRadius) 0.5] + (DotRadius * 0.3) + commaOvershoot / 2)
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle (XH + Accent)
|
|
|
|
create-glyph 'revCommaAbove' 0x314 : glyph-proc
|
|
set-width 0
|
|
currentGlyph.shortName = 'revComma'
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle (XH + Accent)
|
|
|
|
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)
|
|
include : Upright
|
|
include : Translate 0 (DotRadius * 0.3)
|
|
include : Italify
|
|
|
|
create-glyph 'barAbove' 0x30D : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
|
|
|
|
include : VBar markMiddle aboveMarkBot aboveMarkTop (markHalfStroke * 2)
|
|
|
|
create-glyph 'dblBarAbove' 0x30E : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
|
|
|
|
include : VBar (markMiddle - markExtend * 0.75) aboveMarkBot aboveMarkTop (markHalfStroke * 2)
|
|
include : VBar (markMiddle + markExtend * 0.75) aboveMarkBot aboveMarkTop (markHalfStroke * 2)
|
|
|
|
create-glyph 'bridgeAbove' 0x346 : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
|
|
|
|
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)
|
|
|
|
create-glyph 'yerikAbove' 0x33E : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
|
|
|
|
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]
|
|
|
|
create-glyph 'candrabinduAbove' 0x310 : glyph-proc
|
|
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
|
|
include : Upright
|
|
include : Translate 0 (fine * 0.5)
|
|
include : Italify
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle (XH + Accent)
|
|
|
|
turned 'turncandrabinduAbove' 0x352 'candrabinduAbove' markMiddle (XH + Accent)
|
|
|
|
create-glyph 'variaAbove' 0x340 : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle (XH + Accent)
|
|
|
|
include : dispiro
|
|
flat (markMiddle + markStress) (aboveMarkBot - markFine * 0.5) [widths markFine markFine]
|
|
curl (markMiddle - markExtend * 0.5) (aboveMarkTop + markStress * 0.25) [widths markStress markStress]
|
|
|
|
create-glyph 'oxiaAbove' 0x341 : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle (XH + Accent)
|
|
|
|
include : dispiro
|
|
flat (markMiddle - markStress) (aboveMarkBot - markFine * 0.5) [widths markFine markFine]
|
|
curl (markMiddle + markExtend * 0.5) (aboveMarkTop + markStress * 0.25) [widths markStress markStress]
|
|
|
|
create-glyph 'perispomeniAbove' 0x342 : glyph-proc
|
|
set-width 0
|
|
currentGlyph.shortName = 'perisp'
|
|
include : refer-glyph "archAbove"
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle (XH + Accent)
|
|
|
|
alias 'koronisAbove' 0x343 'commaAbove'
|
|
|
|
create-glyph 'crossAbove' 0x33D : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
|
|
|
|
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
|
|
|
|
create-glyph 'lessAbove' 0x1DFE : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
|
|
|
|
local top aboveMarkTop
|
|
local bot aboveMarkBot
|
|
local exp : Math.sqrt : 1 + [Math.pow ((top - bot) / markExtend) 2]
|
|
include : dispiro
|
|
widths.center : markFine * 2
|
|
flat (markMiddle + markExtend) top
|
|
curl (markMiddle - markExtend) [mix top bot 0.5] [widths.center.heading (markFine * exp) Leftward]
|
|
|
|
include : dispiro
|
|
widths.center : markFine * 2
|
|
flat (markMiddle + markExtend) bot
|
|
curl (markMiddle - markExtend) [mix top bot 0.5] [widths.center.heading (markFine * exp) Leftward]
|
|
|
|
turned 'greaterAbove' 0x350 'lessAbove' markMiddle aboveMarkMid
|
|
|
|
create-glyph 'upArrowHeadAbove' 0xE092 : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
|
|
|
|
local top aboveMarkTop
|
|
local bot aboveMarkBot
|
|
local exp : Math.sqrt : 1 + [Math.pow (3 * markExtend / (top - bot)) 2]
|
|
include : dispiro
|
|
widths.center : markFine * 2
|
|
flat (markMiddle - markExtend) bot
|
|
curl markMiddle top [widths.center.heading (markFine * exp) Upward]
|
|
|
|
include : dispiro
|
|
widths.center : markFine * 2
|
|
flat (markMiddle + markExtend) bot
|
|
curl markMiddle top [widths.center.heading (markFine * exp) Upward]
|
|
|
|
turned 'downArrowHeadAbove' 0xE093 'upArrowHeadAbove' markMiddle aboveMarkMid
|
|
|
|
define [ArrowheadForArrowMarkAbove-Up] : new-glyph : glyph-proc
|
|
local fine : [adviceBlackness 6] / 2
|
|
local top aboveMarkTop
|
|
local bot aboveMarkMid
|
|
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]
|
|
|
|
define [ArrowheadForArrowMarkAbove-Down] : new-glyph : glyph-proc
|
|
include : ArrowheadForArrowMarkAbove-Up
|
|
include : FlipAround markMiddle aboveMarkMid
|
|
|
|
define [VBarForArrowMarkAbove] : glyph-proc
|
|
local fine : [adviceBlackness 6] / 2
|
|
include : VBar markMiddle aboveMarkTop aboveMarkBot (fine * 2)
|
|
|
|
define [ArrowheadForArrowMarkAbove-Left] : new-glyph : glyph-proc
|
|
local fine : [adviceBlackness 5.75] / 2
|
|
local top aboveMarkTop
|
|
local bot aboveMarkBot
|
|
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]
|
|
|
|
define [ArrowheadForArrowMarkAbove-Right] : new-glyph : glyph-proc
|
|
include : ArrowheadForArrowMarkAbove-Left
|
|
include : FlipAround markMiddle aboveMarkMid
|
|
|
|
define [HBarForArrowMarkAbove] : glyph-proc
|
|
local fine : [adviceBlackness 5.75] / 2
|
|
include : HBar (markMiddle - markExtend * 1.5) (markMiddle + markExtend * 1.5) aboveMarkMid (fine * 2)
|
|
|
|
create-glyph 'upArrowAbove' : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
|
|
include : ArrowheadForArrowMarkAbove-Up
|
|
include : VBarForArrowMarkAbove
|
|
|
|
create-glyph 'downArrowAbove' : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
|
|
include : ArrowheadForArrowMarkAbove-Down
|
|
include : VBarForArrowMarkAbove
|
|
|
|
create-glyph 'leftArrowAbove' 0x20D6 : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
|
|
include : ArrowheadForArrowMarkAbove-Left
|
|
include : HBarForArrowMarkAbove
|
|
|
|
create-glyph 'rightArrowAbove' 0x20D7 : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
|
|
include : ArrowheadForArrowMarkAbove-Right
|
|
include : HBarForArrowMarkAbove
|
|
|
|
create-glyph 'lrArrowAbove' 0x20E1 : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
|
|
include : ArrowheadForArrowMarkAbove-Left
|
|
include : ArrowheadForArrowMarkAbove-Right
|
|
include : HBarForArrowMarkAbove
|
|
|
|
create-glyph 'braceAbove' 0x1ABB : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'aboveBrace' markMiddle aboveMarkMid markMiddle aboveMarkMid
|
|
local braceDepth : markExtend * 0.25
|
|
local left : SB - Width
|
|
local right : RightSB - Width
|
|
include : dispiro
|
|
widths.lhs markFine
|
|
g4 (left + braceDepth) aboveMarkTop
|
|
g4 (left + OX) aboveMarkMid
|
|
g4 (left + braceDepth) aboveMarkBot
|
|
include : dispiro
|
|
widths.rhs markFine
|
|
g4 (right - braceDepth) aboveMarkTop
|
|
g4 (right - OX) aboveMarkMid
|
|
g4 (right - braceDepth) aboveMarkBot
|
|
|
|
### Below marks
|
|
create-glyph 'cedillaBelow' 0x327 : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'below' markMiddle 0 markMiddle belowMarkBot
|
|
set-base-anchor 'belowBrace' markMiddle belowMarkMid
|
|
|
|
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)
|
|
|
|
define [OgonekBelowShape] : glyph-proc
|
|
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
|
|
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]
|
|
|
|
create-glyph 'ogonekBelow' 0x328 : glyph-proc
|
|
set-width 0
|
|
include : OgonekBelowShape
|
|
set-mark-anchor 'below' markMiddle 0 markMiddle belowMarkBot
|
|
set-base-anchor 'belowBrace' markMiddle belowMarkMid
|
|
|
|
create-glyph 'ogonekAbove' 0x1DCE : glyph-proc
|
|
set-width 0
|
|
include : OgonekBelowShape
|
|
include : FlipAround markMiddle (XH / 2)
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
|
|
|
|
create-glyph 'ogonekTR' : glyph-proc
|
|
set-width 0
|
|
include : refer-glyph "ogonekBelow"
|
|
local ogonekBot : [mix belowMarkTop belowMarkBot 0.75] + markStress * 2
|
|
local ogonekRight : markMiddle + markExtend * 0.85
|
|
set-mark-anchor 'trailing' markMiddle 0 ogonekRight ogonekBot
|
|
|
|
create-glyph 'iotaBelow' 0x345 : glyph-proc
|
|
set-width 0
|
|
set currentGlyph.shortName 'iota'
|
|
set-mark-anchor 'below' markMiddle 0 markMiddle belowMarkBot
|
|
set-base-anchor 'belowBrace' markMiddle belowMarkMid
|
|
include : VBar markMiddle belowMarkBot belowMarkTop (markHalfStroke * 2)
|
|
|
|
create-glyph 'iotaLF' : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'lf' markMiddle 0 markMiddle belowMarkBot
|
|
include : VBar markMiddle belowMarkBot belowMarkTop (markHalfStroke * 2)
|
|
|
|
create-glyph 'uptackBelow' 0x31D : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'below' markMiddle 0 markMiddle belowMarkBot
|
|
set-base-anchor 'belowBrace' markMiddle belowMarkMid
|
|
|
|
include : VBar markMiddle belowMarkBot belowMarkTop (markFine * 2)
|
|
include : HBarBottom (markMiddle - markExtend) (markMiddle + markExtend) belowMarkBot (markFine * 2)
|
|
|
|
create-glyph 'downtackBelow' 0x31E : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'below' markMiddle 0 markMiddle belowMarkBot
|
|
set-base-anchor 'belowBrace' markMiddle belowMarkMid
|
|
|
|
include : VBar markMiddle belowMarkBot belowMarkTop (markFine * 2)
|
|
include : HBarTop (markMiddle - markExtend) (markMiddle + markExtend) belowMarkTop (markFine * 2)
|
|
|
|
create-glyph 'lefttackBelow' 0x318 : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'below' markMiddle 0 markMiddle belowMarkBot
|
|
set-base-anchor 'belowBrace' markMiddle belowMarkMid
|
|
|
|
include : VBar (markMiddle + markExtend) belowMarkBot belowMarkTop (markFine * 2)
|
|
include : HBar (markMiddle - markExtend) (markMiddle + markExtend) [mix belowMarkTop belowMarkBot 0.5] (markFine * 2)
|
|
|
|
create-glyph 'righttackBelow' 0x319 : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'below' markMiddle 0 markMiddle belowMarkBot
|
|
set-base-anchor 'belowBrace' markMiddle belowMarkMid
|
|
|
|
include : VBar (markMiddle - markExtend) belowMarkBot belowMarkTop (markFine * 2)
|
|
include : HBar (markMiddle - markExtend) (markMiddle + markExtend) [mix belowMarkTop belowMarkBot 0.5] (markFine * 2)
|
|
|
|
create-glyph 'leftAngleBelow' 0x349 : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'below' markMiddle 0 markMiddle belowMarkBot
|
|
set-base-anchor 'belowBrace' markMiddle belowMarkMid
|
|
|
|
include : VBar (markMiddle + markExtend) belowMarkBot belowMarkTop (markFine * 2)
|
|
include : HBarTop (markMiddle - markExtend) (markMiddle + markExtend) belowMarkTop (markFine * 2)
|
|
|
|
create-glyph 'plusBelow' 0x31F : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'below' markMiddle 0 markMiddle belowMarkBot
|
|
set-base-anchor 'belowBrace' markMiddle belowMarkMid
|
|
|
|
include : VBar markMiddle belowMarkBot belowMarkTop (markFine * 2)
|
|
include : HBar (markMiddle - markExtend) (markMiddle + markExtend) [mix belowMarkTop belowMarkBot 0.5] (markFine * 2)
|
|
|
|
create-glyph 'minusBelow' 0x320 : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'below' markMiddle 0 markMiddle belowMarkBot
|
|
set-base-anchor 'belowBrace' markMiddle belowMarkMid
|
|
|
|
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)
|
|
|
|
create-glyph 'bridgeBelow' 0x32A : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'below' markMiddle 0 markMiddle belowMarkBot
|
|
set-base-anchor 'belowBrace' markMiddle belowMarkMid
|
|
|
|
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)
|
|
|
|
create-glyph 'boxBelow' 0x33B : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'below' markMiddle 0 markMiddle belowMarkBot
|
|
set-base-anchor 'belowBrace' markMiddle belowMarkMid
|
|
|
|
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
|
|
|
|
create-glyph 'equalBelow' 0x347 : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'below' markMiddle 0 markMiddle belowMarkBot
|
|
set-base-anchor 'belowBrace' markMiddle belowMarkMid
|
|
|
|
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
|
|
|
|
create-glyph 'dblBreveBelow' 0x32B : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'below' markMiddle 0 markMiddle belowMarkBot
|
|
set-base-anchor 'belowBrace' markMiddle belowMarkMid
|
|
|
|
local hsw : [adviceBlackness 3.5] / Stroke * markHalfStroke
|
|
local extend : (belowMarkTop - belowMarkBot - markHalfStroke) * 1.25
|
|
|
|
include : dispiro
|
|
g4.down.start (markMiddle - extend) belowMarkTop [widths.heading hsw hsw Downward]
|
|
arcvh
|
|
g4.right.mid [mix markMiddle (markMiddle - extend) 0.5] (belowMarkBot + hsw) [heading Rightward]
|
|
archv
|
|
g4.up.end markMiddle belowMarkTop [heading Upward]
|
|
include : dispiro
|
|
g4.down.start markMiddle belowMarkTop [widths.heading hsw hsw Downward]
|
|
arcvh
|
|
g4.right.mid [mix markMiddle (markMiddle + extend) 0.5] (belowMarkBot + hsw) [heading Rightward]
|
|
archv
|
|
g4.up.end (markMiddle + extend) belowMarkTop [heading Upward]
|
|
|
|
create-glyph 'dblArchBelow' 0x33C : glyph-proc
|
|
set-width 0
|
|
include : refer-glyph "dblBreveBelow"
|
|
include : FlipAround markMiddle [mix belowMarkTop belowMarkBot 0.5]
|
|
set-mark-anchor 'below' markMiddle 0 markMiddle belowMarkBot
|
|
set-base-anchor 'belowBrace' markMiddle belowMarkMid
|
|
|
|
create-glyph 'leftHalfCircleBelow' 0x31C : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'below' markMiddle 0 markMiddle belowMarkBot
|
|
set-base-anchor 'belowBrace' markMiddle belowMarkMid
|
|
|
|
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]
|
|
include : Translate ((belowMarkTop - belowMarkBot) / 4) 0
|
|
|
|
create-glyph 'rightHalfCircleBelow' 0x339 : glyph-proc
|
|
set-width 0
|
|
include : refer-glyph "leftHalfCircleBelow"
|
|
include : FlipAround markMiddle [mix belowMarkTop belowMarkBot 0.5]
|
|
set-mark-anchor 'below' markMiddle 0 markMiddle belowMarkBot
|
|
set-base-anchor 'belowBrace' markMiddle belowMarkMid
|
|
|
|
create-glyph 'leftHalfCircleAbove' 0x351 : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
|
|
include : refer-glyph "rightHalfCircleBelow"
|
|
include : FlipAround markMiddle (XH / 2)
|
|
|
|
create-glyph 'rightHalfCircleAbove' 0x357 : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set-base-anchor 'aboveBrace' markMiddle aboveMarkMid
|
|
include : refer-glyph "leftHalfCircleBelow"
|
|
include : FlipAround markMiddle (XH / 2)
|
|
|
|
# Turned below marks
|
|
define [TurnAboveMarkToBelow gnBelowMark unicodeBelowMark gnAboveMark] : begin
|
|
create-glyph gnBelowMark unicodeBelowMark : glyph-proc
|
|
set-width 0
|
|
include : refer-glyph gnAboveMark
|
|
include : FlipAround markMiddle (XH / 2)
|
|
local aboveGlyph : query-glyph gnAboveMark
|
|
if aboveGlyph : begin
|
|
if aboveGlyph.markAnchors.above : set-mark-anchor 'below'
|
|
mix markMiddle aboveGlyph.markAnchors.above.x (-1)
|
|
mix (XH / 2) aboveGlyph.markAnchors.above.y (-1)
|
|
if aboveGlyph.baseAnchors.above : set-base-anchor 'below'
|
|
mix markMiddle aboveGlyph.baseAnchors.above.x (-1)
|
|
mix (XH / 2) aboveGlyph.baseAnchors.above.y (-1)
|
|
if aboveGlyph.baseAnchors.aboveBrace : set-base-anchor 'belowBrace'
|
|
mix markMiddle aboveGlyph.baseAnchors.aboveBrace.x (-1)
|
|
mix (XH / 2) aboveGlyph.baseAnchors.aboveBrace.y (-1)
|
|
|
|
TurnAboveMarkToBelow 'graveBelow' 0x316 'graveAbove'
|
|
TurnAboveMarkToBelow 'acuteBelow' 0x317 'acuteAbove'
|
|
TurnAboveMarkToBelow 'dotBelow' 0x323 'dotAbove'
|
|
TurnAboveMarkToBelow 'dieresisBelow' 0x324 'dieresisAbove'
|
|
TurnAboveMarkToBelow 'tildeBelow' 0x330 'tildeAbove'
|
|
TurnAboveMarkToBelow 'ringBelow' 0x325 'ringAbove'
|
|
TurnAboveMarkToBelow 'macronBelow' 0x331 'macronAbove'
|
|
TurnAboveMarkToBelow 'invBridgeBelow' 0x33A 'bridgeAbove'
|
|
TurnAboveMarkToBelow 'underlineBelow' 0x332 'overlineAbove'
|
|
TurnAboveMarkToBelow 'dblUnderlineBelow' 0x333 'dblOverlineAbove'
|
|
TurnAboveMarkToBelow 'circumflexBelow' 0x32D 'caronAbove'
|
|
TurnAboveMarkToBelow 'caronBelow' 0x32C 'circumflexAbove'
|
|
TurnAboveMarkToBelow 'breveBelow' 0x32E 'archAbove'
|
|
TurnAboveMarkToBelow 'archBelow' 0x32F 'breveAbove'
|
|
TurnAboveMarkToBelow 'commaBelow' 0x326 'turnCommaAbove'
|
|
TurnAboveMarkToBelow 'barBelow' 0x329 'barAbove'
|
|
TurnAboveMarkToBelow 'dblBarBelow' 0x348 'dblBarAbove'
|
|
TurnAboveMarkToBelow 'crossBelow' 0x353 'crossAbove'
|
|
TurnAboveMarkToBelow 'lessBelow' 0x354 'greaterAbove'
|
|
TurnAboveMarkToBelow 'greaterBelow' 0x355 'lessAbove'
|
|
TurnAboveMarkToBelow 'upArrowHeadBelow' 0xE094 'downArrowHeadAbove'
|
|
TurnAboveMarkToBelow 'downArrowHeadBelow' 0xE095 'upArrowHeadAbove'
|
|
TurnAboveMarkToBelow 'dblRingBelow' 0x35a 'dblRingAbove'
|
|
TurnAboveMarkToBelow 'lrArrowBelow' 0x34D 'lrArrowAbove'
|
|
TurnAboveMarkToBelow 'upArrowBelow' 0x34E 'downArrowAbove'
|
|
|
|
create-glyph 'greaterAndUpArrowheadBelow' 0x0356 : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'below' markMiddle 0 markMiddle belowMarkBot
|
|
set-base-anchor 'belowBrace' markMiddle belowMarkMid
|
|
include : WithTransform [Translate (-markExtend) 0] : refer-glyph 'greaterBelow'
|
|
include : WithTransform [Translate (+markExtend) 0] : refer-glyph 'upArrowHeadBelow'
|
|
|
|
create-glyph 'braceBelow' 0x1ABD : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'belowBrace' markMiddle belowMarkMid markMiddle belowMarkMid
|
|
local braceDepth : markExtend * 0.25
|
|
local left : SB - Width
|
|
local right : RightSB - Width
|
|
include : dispiro
|
|
widths.lhs markFine
|
|
g4 (left + braceDepth) belowMarkTop
|
|
g4 (left + OX) belowMarkMid
|
|
g4 (left + braceDepth) belowMarkBot
|
|
include : dispiro
|
|
widths.rhs markFine
|
|
g4 (right - braceDepth) belowMarkTop
|
|
g4 (right - OX) belowMarkMid
|
|
g4 (right - braceDepth) belowMarkBot
|
|
|
|
# horn and angle marks
|
|
define [HornDim attX attY overshootX overshootY yrP] : begin
|
|
local radius commaAboveRadius
|
|
local hornFine : Math.min (radius * 0.8) (markFine * 1.75)
|
|
local hornStroke : Math.min (radius * 1) (markFine * 1.75)
|
|
local startX : attX + 2 * radius
|
|
local startY : attY + yrP * radius + (aboveMarkTop - aboveMarkBot) / 2
|
|
return : object radius hornFine hornStroke startX startY
|
|
|
|
define [HornMarkAnchor attX attY overshootX overshootY yrP] : glyph-proc
|
|
local [object radius hornFine startX startY] : HornDim attX attY overshootX overshootY yrP
|
|
set-mark-anchor 'topright' attX attY startX startY
|
|
|
|
define [HornBaseAnchor attX attY overshootX overshootY yrP] : glyph-proc
|
|
local [object radius hornFine startX startY] : HornDim attX attY overshootX overshootY yrP
|
|
set-base-anchor 'topright' startX startY
|
|
|
|
define [HornShape attX attY overshootX overshootY yrP] : glyph-proc
|
|
local [object radius hornFine hornStroke startX startY] : HornDim attX attY overshootX overshootY yrP
|
|
include : union
|
|
RingAt (startX - radius) startY (radius + OX / 2)
|
|
dispiro
|
|
g4.down.start (startX + OX) (startY) [widths.rhs.heading [Math.min (radius / 2) ShoulderFine] Downward]
|
|
arcvh
|
|
g4.left.mid (startX - radius) (startY - radius) [heading Leftward]
|
|
archv
|
|
g4.up.mid (startX - 2 * radius) (startY) [heading Upward]
|
|
arcvh
|
|
g4.right.mid (startX - radius) (startY + radius) [heading Rightward]
|
|
archv
|
|
g4.down.mid startX startY [widths.rhs.heading hornFine Downward]
|
|
quadcontrols.g4 0 0.75 16 : object : blend : lambda [t]
|
|
widths.rhs [mix hornFine hornStroke t]
|
|
g4 (attX - overshootX - HalfStroke * HVContrast) (attY - overshootY - Stroke) [widths.rhs hornStroke]
|
|
|
|
create-glyph 'horn' 0x31B : glyph-proc
|
|
set-width 0
|
|
include : HornShape 0 XH 0 0 0.5
|
|
include : HornMarkAnchor 0 XH 0 0 0.5
|
|
|
|
create-glyph 'longHorn' : glyph-proc
|
|
set-width 0
|
|
include : HornShape 0 XH (Width / 2) (SmoothB) 0.5
|
|
include : HornMarkAnchor 0 XH (Width / 2) (SmoothB) 0.5
|
|
|
|
create-glyph 'leftangleTR' 0x31A : glyph-proc
|
|
set-width 0
|
|
include : VBarLeft 0 aboveMarkBot aboveMarkTop (markFine * 2)
|
|
include : HBarTop (-markExtend * 1.5) 0 aboveMarkTop (markFine * 2)
|
|
set-mark-anchor 'topright' 0 XH 0 aboveMarkTop
|
|
|
|
create-glyph 'dotTR' 0x358 : glyph-proc
|
|
set-width 0
|
|
include : refer-glyph "dotAbove"
|
|
include : Upright
|
|
include : Translate (RightSB - Middle + DotRadius) 0
|
|
include : Italify
|
|
set-mark-anchor 'topright' 0 XH 0 aboveMarkTop
|
|
|
|
create-glyph 'commaTR' 0x315 : glyph-proc
|
|
set-width 0
|
|
include : refer-glyph "commaAbove"
|
|
include : Upright
|
|
include : Translate (RightSB - Middle + DotRadius) 0
|
|
include : Italify
|
|
set-mark-anchor 'topright' 0 XH 0 aboveMarkTop
|
|
|
|
create-glyph 'rtailBR' 0x322 : glyph-proc
|
|
set-width 0
|
|
|
|
set-mark-anchor 'bottomright' 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)
|
|
set currentGlyph.autoRefPriority (-2)
|
|
|
|
create-glyph 'ltailBR' 0x321 : glyph-proc
|
|
set-width 0
|
|
|
|
set-mark-anchor 'bottomright' 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)
|
|
set currentGlyph.autoRefPriority (-2)
|
|
|
|
# Overlay Marks
|
|
create-glyph 'tildeOver' 0x334 : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'overlay' markMiddle (XH / 2) markMiddle (XH / 2)
|
|
include : refer-glyph "tildeAbove"
|
|
include : Upright
|
|
include : Translate 0 (XH / 2 - [mix aboveMarkTop aboveMarkBot 0.5])
|
|
include : Italify
|
|
|
|
create-glyph 'barOver' 0x335 : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'overlay' markMiddle (XH / 2) markMiddle (XH / 2)
|
|
include : HOverlayBar (markMiddle - LongJut * 0.75) (markMiddle + LongJut * 0.75) (XH / 2)
|
|
|
|
create-glyph 'longBarOver' 0xE091 : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'overlay' markMiddle (XH / 2) markMiddle (XH / 2)
|
|
include : HOverlayBar ([mix 0 SB 0.5] - Width) ([mix Width RightSB 0.5] - Width) (XH / 2)
|
|
|
|
create-glyph 'strikeThrough' 0x0336 : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'strike' markMiddle (XH / 2) markMiddle (XH / 2)
|
|
include : HOverlayBar (0 - Width) (0) (XH / 2)
|
|
|
|
create-glyph 'shortSlashOver' 0xE090 : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'overlay' markMiddle (XH / 2) markMiddle (XH / 2)
|
|
include : FlatSlashShape markMiddle (XH / 2) (0.5 * OverlayStroke)
|
|
|
|
create-glyph 'antiSlashOver' : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'overlay' markMiddle (XH / 2) markMiddle (XH / 2)
|
|
include : FlatSlashShape markMiddle (XH / 2) (0.5 * OverlayStroke) (0.75) (-0.3)
|
|
|
|
create-glyph 'arrSlashOver' : glyph-proc
|
|
set-width 0
|
|
local fine : 0.375 * OverlayStroke
|
|
local dx : Width * 0.1
|
|
local dy : Width * 0.4
|
|
set-mark-anchor 'slash' markMiddle (XH / 2) markMiddle (XH / 2)
|
|
include : dispiro
|
|
flat (Middle - dx - Width) (XH / 2 - dy) [widths fine fine]
|
|
curl (Middle + dx - Width) (XH / 2 + dy)
|
|
|
|
create-glyph 'arrVStrokeOver' : glyph-proc
|
|
include : ForceUpright
|
|
set-width 0
|
|
local fine : 0.375 * OverlayStroke
|
|
local dx : Width * 0
|
|
local dy : Width * 0.3
|
|
set-mark-anchor 'slash' markMiddle (XH / 2) markMiddle (XH / 2)
|
|
include : dispiro
|
|
flat (Middle - dx - Width) (XH / 2 - dy) [widths fine fine]
|
|
curl (Middle + dx - Width) (XH / 2 + dy)
|
|
|
|
create-glyph 'arrDblVStrokeOver' : glyph-proc
|
|
include : ForceUpright
|
|
set-width 0
|
|
local fine : 0.3 * OverlayStroke
|
|
local dx : Width * 0
|
|
local dy : Width * 0.3
|
|
local gap : Math.max (fine * 2) (Width / 10)
|
|
set-mark-anchor 'slash' markMiddle (XH / 2) markMiddle (XH / 2)
|
|
include : dispiro
|
|
flat (Middle - dx - Width - gap) (XH / 2 - dy) [widths fine fine]
|
|
curl (Middle + dx - Width - gap) (XH / 2 + dy)
|
|
include : dispiro
|
|
flat (Middle - dx - Width + gap) (XH / 2 - dy) [widths fine fine]
|
|
curl (Middle + dx - Width + gap) (XH / 2 + dy)
|
|
|
|
create-glyph 'arrHStrokeOver' : glyph-proc
|
|
include : ForceUpright
|
|
set-width 0
|
|
local fine : 0.375 * OverlayStroke
|
|
local dx : Width * 0.3
|
|
set-mark-anchor 'slash' markMiddle (XH / 2) markMiddle (XH / 2)
|
|
include : dispiro
|
|
flat (Middle - Width - dx) (XH / 2) [widths fine fine]
|
|
curl (Middle - Width + dx) (XH / 2)
|
|
|
|
create-glyph 'arrDblHStrokeOver' : glyph-proc
|
|
include : ForceUpright
|
|
set-width 0
|
|
local fine : 0.3 * OverlayStroke
|
|
local dx : Width * 0.3
|
|
local gap : Math.max (fine * 2) (Width / 10)
|
|
set-mark-anchor 'slash' markMiddle (XH / 2) markMiddle (XH / 2)
|
|
include : dispiro
|
|
flat (Middle - Width - dx) (XH / 2 - gap) [widths fine fine]
|
|
curl (Middle - Width + dx) (XH / 2 - gap)
|
|
include : dispiro
|
|
flat (Middle - Width - dx) (XH / 2 + gap) [widths fine fine]
|
|
curl (Middle - Width + dx) (XH / 2 + gap)
|
|
|
|
create-glyph 'slashOver' 0x337 : glyph-proc
|
|
set-width 0
|
|
local fine : 0.375 * OverlayStroke
|
|
set-mark-anchor 'slash' 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)
|
|
|
|
create-glyph 'longSlashOver' 0x338 : glyph-proc
|
|
set-width 0
|
|
local fine : 0.375 * OverlayStroke
|
|
set-mark-anchor 'slash' 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)
|
|
|
|
define aboveTieBase aboveMarkTop
|
|
define aboveTieTop : mix XH aboveMarkTop 2
|
|
define aboveTieBottom : aboveTieTop - (aboveMarkTop - aboveMarkBot) * 0.875
|
|
define belowTieBase Descender
|
|
define belowTieBottom : Descender - (0 - belowMarkBot)
|
|
|
|
local tieLeft [mix 0 markMiddle 1.5]
|
|
local tieRight (-tieLeft)
|
|
|
|
create-glyph 'tieAbove' 0x361 : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'tieAbove' 0 aboveTieBase 0 aboveTieTop
|
|
TieGlyph.set currentGlyph
|
|
include : dispiro
|
|
widths.center (markHalfStroke * 2)
|
|
g4 tieLeft aboveTieBottom
|
|
quadcontrols 0.5 1
|
|
g4.right.mid 0 aboveTieTop [heading Rightward]
|
|
quadcontrols 0.5 0
|
|
g4 tieRight aboveTieBottom
|
|
|
|
create-glyph 'turnTieAbove' 0x35D : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'tieAbove' 0 aboveTieBase 0 aboveTieTop
|
|
TieGlyph.set currentGlyph
|
|
include : dispiro
|
|
widths.center (markHalfStroke * 2)
|
|
g4 tieLeft aboveTieTop
|
|
quadcontrols 0.5 1
|
|
g4.right.mid 0 aboveTieBottom [heading Rightward]
|
|
quadcontrols 0.5 0
|
|
g4 tieRight aboveTieTop
|
|
|
|
create-glyph 'tieBelow' 0x35C : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'tieBelow' 0 belowTieBase 0 belowTieBottom
|
|
TieGlyph.set currentGlyph
|
|
include [refer-glyph 'tieAbove']
|
|
include : FlipAround 0 (XH / 2)
|
|
|
|
create-glyph 'overlineTieAbove' 0x35E : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'tieAbove' 0 aboveTieBase 0 aboveTieTop
|
|
TieGlyph.set currentGlyph
|
|
include : dispiro
|
|
widths.center (markHalfStroke * 2)
|
|
flat tieLeft (aboveTieBase + Accent)
|
|
curl tieRight (aboveTieBase + Accent)
|
|
|
|
create-glyph 'underlineTieBelow' 0x35F : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'tieBelow' 0 belowTieBase 0 belowTieBottom
|
|
TieGlyph.set currentGlyph
|
|
include [refer-glyph 'overlineTieAbove']
|
|
include : FlipAround 0 (XH / 2)
|
|
|
|
create-glyph 'arrowTieBelow' 0x362 : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'tieBelow' 0 belowTieBase 0 belowTieBottom
|
|
TieGlyph.set currentGlyph
|
|
include : HBar tieLeft tieRight (Descender - Accent) (markFine * 2)
|
|
include : new-glyph : glyph-proc
|
|
local top (Descender - Accent + (belowMarkTop - belowMarkBot) / 2 * 1.5)
|
|
local bot (Descender - Accent - (belowMarkTop - belowMarkBot) / 2 * 1.5)
|
|
local left : tieRight - markExtend * 1.5
|
|
local right tieRight
|
|
local exp : Math.sqrt : 1 + (top - bot) / (2 * (right - left)) * (top - bot) / (2 * (right - left))
|
|
include : dispiro
|
|
widths.center : markFine * 2
|
|
flat left top
|
|
curl right [mix top bot 0.5] [widths.heading (markFine * exp) (markFine * exp) Downward]
|
|
include : dispiro
|
|
widths.center : markFine * 2
|
|
flat left bot
|
|
curl right [mix top bot 0.5] [widths.heading (markFine * exp) (markFine * exp) Upward]
|
|
|
|
create-glyph 'tildeTieAbove' 0x360 : glyph-proc
|
|
set-width 0
|
|
set-mark-anchor 'tieAbove' 0 aboveTieBase 0 aboveTieTop
|
|
TieGlyph.set currentGlyph
|
|
include : TildeShape
|
|
ttop -- aboveTieTop
|
|
tbot -- aboveTieBottom
|
|
leftEnd -- tieLeft
|
|
rightEnd -- tieRight
|
|
hs -- markHalfStroke
|
|
|
|
define [GreekLRDoubleMark id unicode leftGlyph rightGlyph] : begin
|
|
create-glyph id : glyph-proc
|
|
set-width 0
|
|
local k : -Width * 0.15
|
|
|
|
include leftGlyph
|
|
include : Translate (2 * k) 0
|
|
include rightGlyph
|
|
include : Translate (0 - k) 0
|
|
|
|
set-mark-anchor 'above' markMiddle XH markMiddle aboveMarkTop
|
|
set currentGlyph.autoRefPriority 50
|
|
|
|
create-glyph ('spaced' + id) unicode : glyph-proc
|
|
include [refer-glyph 'markBaseSpace'] AS_BASE
|
|
set-width [query-glyph 'markBaseSpace'].advanceWidth
|
|
include [refer-glyph id]
|
|
|
|
GreekLRDoubleMark 'psilivaria' 0x1FCD [refer-glyph 'commaAbove'] [refer-glyph 'variaAbove']
|
|
GreekLRDoubleMark 'psilioxia' 0x1FCE [refer-glyph 'commaAbove'] [refer-glyph 'oxiaAbove']
|
|
GreekLRDoubleMark 'dasiavaria' 0x1FDD [refer-glyph 'revCommaAbove'] [refer-glyph 'variaAbove']
|
|
GreekLRDoubleMark 'dasiaoxia' 0x1FDE [refer-glyph 'revCommaAbove'] [refer-glyph 'oxiaAbove']
|
|
|
|
local yc : aboveMarkTop - commaAboveRadius + DotRadius * 0.3 + commaOvershoot
|
|
|
|
create-glyph 'psiliperispomeni' : glyph-proc
|
|
set-width 0
|
|
include : refer-glyph "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-mark-anchor 'above' markMiddle XH markMiddle (aboveMarkTop + markHalfStroke * 2)
|
|
set currentGlyph.autoRefPriority 50
|
|
|
|
create-glyph 'spaced_psiliperispomeni' 0x1FCF : glyph-proc
|
|
include [refer-glyph 'markBaseSpace'] AS_BASE
|
|
set-width [query-glyph 'markBaseSpace'].advanceWidth
|
|
include : refer-glyph "psiliperispomeni"
|
|
|
|
create-glyph 'dasiaperispomeni' : glyph-proc
|
|
set-width 0
|
|
include : refer-glyph "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-mark-anchor 'above' markMiddle XH markMiddle (aboveMarkTop + markHalfStroke * 2)
|
|
set currentGlyph.autoRefPriority 50
|
|
|
|
create-glyph 'spaced_dasiaperispomeni' 0x1FDF : glyph-proc
|
|
include [refer-glyph 'markBaseSpace'] AS_BASE
|
|
set-width [query-glyph 'markBaseSpace'].advanceWidth
|
|
include : refer-glyph "dasiaperispomeni"
|
|
|
|
if [not recursive] : begin
|
|
define AnchorMap : list
|
|
list 'above' 'tieAbove' 'aboveBrace'
|
|
list 'below' 'tieBelow' 'belowBrace'
|
|
foreach { gn g } [glyphStore.namedEntries] : begin
|
|
local handled false
|
|
foreach { akFrom akTo akBrace } [items-of AnchorMap] : begin
|
|
if (!handled && g.markAnchors && g.markAnchors.(akFrom)) : begin
|
|
set handled true
|
|
local toGN : TieMark.amendName gn
|
|
create-glyph toGN : glyph-proc
|
|
include g AS_BASE ALSO_METRICS
|
|
set currentGlyph.markAnchors.(akTo) currentGlyph.markAnchors.(akFrom)
|
|
currentGlyph.deleteMarkAnchor akFrom
|
|
set currentGlyph.baseAnchors.(akTo) currentGlyph.baseAnchors.(akFrom)
|
|
currentGlyph.deleteBaseAnchor akFrom
|
|
currentGlyph.deleteBaseAnchor akBrace
|
|
TieMark.set g toGN
|
|
|
|
glyph-block-export markExtend markHalfStroke markStress markFine markMiddle markDotsRadius aboveMarkTop aboveMarkBot aboveMarkMid belowMarkBot belowMarkTop commaOvershoot commaOvershoot2 commaAboveRadius TildeShape HornShape HornMarkAnchor HornBaseAnchor
|