Iosevka/glyphs/overmarks.patel
2015-08-06 01:19:47 +08:00

468 lines
No EOL
16 KiB
Text

### Combining marks
local markExtend [ACCENTX * 0.5]
local markStress : 0.5 * [adviceBlackness 3.25]
local markFine : markStress * 0.8
local markHalfStroke : mix markFine markStress 0.5
local markMiddle [-MIDDLE]
local markDotsRadius : DOTRADIUS * markStress / HALFSTROKE
local aboveMarkTop [XH + ACCENT * 1.375]
local aboveMarkBot [XH + ACCENT * 0.325]
local belowMarkBot [0 - ACCENT * 1.375]
local belowMarkTop [0 - ACCENT * 0.325]
### Above marks
create-glyph 'dotAbove' : glyph-construction {
set-width 0
assign-unicode 0x307
this.shortName = 'dot'
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
include : list {
Ring [XH + ACCENT + DOTRADIUS] [XH + ACCENT - DOTRADIUS] [markMiddle - DOTRADIUS] [markMiddle + DOTRADIUS]
}
}
create-glyph 'dieresisAbove' : glyph-construction {
set-width 0
assign-unicode 0x308
this.shortName = 'dieresis'
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
include : list {
Ring [XH + ACCENT + markDotsRadius] [XH + ACCENT - markDotsRadius] [markMiddle - markDotsRadius - markExtend] [markMiddle + markDotsRadius - markExtend]
Ring [XH + ACCENT + markDotsRadius] [XH + ACCENT - markDotsRadius] [markMiddle - markDotsRadius + markExtend] [markMiddle + markDotsRadius + markExtend]
}
}
create-glyph 'ringAbove' : glyph-construction {
set-width 0
assign-unicode 0x30A
this.shortName = 'ring'
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
local radiusIn : ACCENT * 0.24
local radiusOut : radiusIn + markFine * 1.75
include : list {
Ring [XH + ACCENT + radiusOut] [XH + ACCENT - radiusOut] [markMiddle - radiusOut] [markMiddle + radiusOut]
Ring [XH + ACCENT + radiusIn] [XH + ACCENT - radiusIn] [markMiddle - radiusIn] [markMiddle + radiusIn]
}
reverse-last
apply-transform : Upright
apply-transform : Translate 0 [-markFine]
apply-transform : Italify
}
create-glyph 'graveAbove' : glyph-construction {
set-width 0
assign-unicode 0x300
this.shortName = 'grave'
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
include : create-stroke
:.start-from [markMiddle + markStress] aboveMarkBot
:.set-width markFine markFine
:.line-to [markMiddle - markExtend] aboveMarkTop
:.set-width markStress markStress
:.set-samples 1
}
create-glyph 'acuteAbove' : glyph-construction {
set-width 0
assign-unicode 0x301
this.shortName = 'acute'
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
include : create-stroke
:.start-from [markMiddle - markStress] aboveMarkBot
:.set-width markFine markFine
:.line-to [markMiddle + markExtend] aboveMarkTop
:.set-width markStress markStress
:.set-samples 1
}
create-glyph 'circumflexAbove' : glyph-construction {
set-width 0
assign-unicode 0x302
this.shortName = 'circum'
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
include : create-stroke
:.start-from [markMiddle - markExtend - markStress] [aboveMarkBot + markStress - markFine]
:.set-width markStress markStress
:.line-to markMiddle [aboveMarkTop + markFine * 0.7]
:.heads-to UPWARD
:.set-samples 1
include : create-stroke
:.start-from [markMiddle + markExtend + markStress] [aboveMarkBot + markStress - markFine]
:.set-width markStress markStress
:.line-to markMiddle [aboveMarkTop + markFine * 0.7]
:.heads-to UPWARD
:.set-samples 1
}
create-glyph 'caronAbove' : glyph-construction {
set-width 0
assign-unicode 0x30c
this.shortName = 'caron'
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
include : create-stroke
:.start-from [markMiddle - markExtend - markStress] aboveMarkTop
:.set-width markStress markStress
:.line-to markMiddle [aboveMarkBot - markFine * 1.7 + markStress]
:.heads-to DOWNWARD
:.set-samples 1
include : create-stroke
:.start-from [markMiddle + markExtend + markStress] aboveMarkTop
:.set-width markStress markStress
:.line-to markMiddle [aboveMarkBot - markFine * 1.7 + markStress]
:.heads-to DOWNWARD
:.set-samples 1
}
create-glyph 'tildeAbove' : glyph-construction {
set-width 0
assign-unicode 0x303
this.shortName = 'tilde'
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
local leftEnd [markMiddle - markExtend * 1.5]
local rightEnd [markMiddle + markExtend * 1.5]
local ttop aboveMarkTop
local tbot : aboveMarkBot + markFine / 2
local top : ttop + [markFine * 2]
local bot : tbot - [markFine * 2]
local tildeWave [linreg 40 1.52 52 1.33 markStress]
local tildeWaveX 0.52
local tildeWaveEnd 0
include : create-stroke
:.start-from leftEnd [mix tbot ttop tildeWaveEnd]
:.set-width markHalfStroke markHalfStroke
:.cubic-to [mix leftEnd rightEnd tildeWaveX] [mix bot top tildeWave] [mix leftEnd rightEnd [1 - tildeWaveX]] [mix bot top [1 - tildeWave]] rightEnd [mix tbot ttop [1 - tildeWaveEnd]]
:.set-samples 11
}
create-glyph 'macronAbove' : glyph-construction {
set-width 0
assign-unicode 0x304
this.shortName = 'macron'
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
local leftEnd [markMiddle - markExtend * 1.5]
local rightEnd [markMiddle + markExtend * 1.5]
include : create-stroke
:.start-from leftEnd [XH + ACCENT]
:.set-width markHalfStroke markHalfStroke
:.heads-to RIGHTWARD
:.line-to rightEnd [XH + ACCENT]
:.heads-to RIGHTWARD
}
create-glyph 'breveAbove' : glyph-construction {
set-width 0
assign-unicode 0x306
this.shortName = 'breve'
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
local leftEnd [markMiddle - markExtend * 1.2]
local rightEnd [markMiddle + markExtend * 1.2]
include : create-stroke
:.start-from leftEnd aboveMarkTop
:.set-width markHalfStroke markHalfStroke
:.heads-to DOWNWARD
:.arc-vh-to markMiddle [aboveMarkBot + markHalfStroke]
:.arc-hv-to rightEnd aboveMarkTop
:.heads-to UPWARD
}
create-glyph 'archAbove' : glyph-construction {
set-width 0
assign-unicode 0x311
this.shortName = 'arch'
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
local leftEnd [markMiddle - markExtend * 1.2]
local rightEnd [markMiddle + markExtend * 1.2]
include : create-stroke
:.start-from leftEnd aboveMarkBot
:.set-width markHalfStroke markHalfStroke
:.heads-to UPWARD
:.arc-vh-to markMiddle [aboveMarkTop - markHalfStroke]
:.arc-hv-to rightEnd aboveMarkBot
:.heads-to DOWNWARD
}
create-glyph 'hookAbove' : glyph-construction {
set-width 0
assign-unicode 0x309
this.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 : create-stroke
:.start-from [markMiddle - fine * ITALICCOR] hookBot
:.heads-to RIGHTWARD
:.set-width [fine * 2] 0
:.line-to [markMiddle + fine * 0.5] hookBot
:.arc-hv-to [markMiddle + markExtend - O] [mix hookBot hookTop [SMOOTHB / [SMOOTHB + SMOOTHA]]]
:.arc-vh-to markMiddle hookTop
:.line-to [markMiddle - markExtend + fine] hookTop
:.heads-to LEFTWARD
}
create-glyph 'doubleGraveAbove' : glyph-construction {
set-width 0
assign-unicode 0x30F
this.shortName = 'dblgrave'
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
local m1 : markMiddle - markExtend * 0.85
local m2 : markMiddle + markExtend * 0.85
include : create-stroke
:.start-from [m1 + markStress] aboveMarkBot
:.set-width markFine markFine
:.line-to [m1 - markExtend] aboveMarkTop
:.set-width markStress markStress
:.set-samples 1
include : create-stroke
:.start-from [m2 + markStress] aboveMarkBot
:.set-width markFine markFine
:.line-to [m2 - markExtend] aboveMarkTop
:.set-width markStress markStress
:.set-samples 1
}
create-glyph 'doubleAcuteAbove' : glyph-construction {
set-width 0
assign-unicode 0x30B
this.shortName = 'dblacute'
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
local m1 : markMiddle - markExtend * 0.85
local m2 : markMiddle + markExtend * 0.85
include : create-stroke
:.start-from [m1 - markStress] aboveMarkBot
:.set-width markFine markFine
:.line-to [m1 + markExtend] aboveMarkTop
:.set-width markStress markStress
:.set-samples 1
include : create-stroke
:.start-from [m2 - markStress] aboveMarkBot
:.set-width markFine markFine
:.line-to [m2 + markExtend] aboveMarkTop
:.set-width markStress markStress
:.set-samples 1
}
create-glyph 'commaAbove' : glyph-construction {
set-width 0
assign-unicode 0x313
this.shortName = 'comma'
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
local radius : markHalfStroke * 1.5
include : list {
Ring [XH + ACCENT + radius] [XH + ACCENT - radius] [markMiddle - radius] [markMiddle + radius]
}
include : create-stroke
:.start-from [markMiddle + radius] [XH + ACCENT]
:.set-width 0 [markFine * 1.75]
:.curve-to [markMiddle + radius] [mix [XH + ACCENT] [aboveMarkBot - radius] 0.75] [mix markMiddle [markMiddle - radius] 0.2] [aboveMarkBot - radius]
apply-transform : Upright
apply-transform : Translate 0 [DOTRADIUS * 0.25]
apply-transform : Italify
}
create-glyph 'turnCommaAbove' : glyph-construction {
set-width 0
assign-unicode 0x312
this.shortName = 'turnComma'
include glyphs.commaAbove
include : FlipAround markMiddle [XH + ACCENT - DOTRADIUS * 0.25]
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
}
create-glyph 'revCommaAbove' : glyph-construction {
set-width 0
assign-unicode 0x314
this.shortName = 'revComma'
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
local radius : markHalfStroke * 1.5
include : list {
Ring [XH + ACCENT + radius] [XH + ACCENT - radius] [markMiddle - radius] [markMiddle + radius]
}
include : create-stroke
:.start-from [markMiddle - radius] [XH + ACCENT]
:.set-width [markFine * 1.75] 0
:.curve-to [markMiddle - radius] [mix [XH + ACCENT] [aboveMarkBot - radius] 0.75] [mix markMiddle [markMiddle + radius] 0.2] [aboveMarkBot - radius]
apply-transform : Upright
apply-transform : Translate 0 [DOTRADIUS * 0.25]
apply-transform : Italify
}
create-glyph 'perispomeniAbove' : glyph-construction {
set-width 0
assign-unicode 0x342
this.shortName = 'perisp'
include glyphs.archAbove
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
}
# Variant above marks
create-glyph 'variaAbove' : glyph-construction {
set-width 0
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
include : create-stroke
:.start-from [markMiddle + markStress] [aboveMarkBot - markFine * 0.5]
:.set-width markFine markFine
:.line-to [markMiddle - markExtend * 0.5] [aboveMarkTop + markStress * 0.25]
:.set-width markStress markStress
:.set-samples 1
}
create-glyph 'oxiaAbove' : glyph-construction {
set-width 0
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
include : create-stroke
:.start-from [markMiddle - markStress] [aboveMarkBot - markFine * 0.5]
:.set-width markFine markFine
:.line-to [markMiddle + markExtend * 0.5] [aboveMarkTop + markStress * 0.25]
:.set-width markStress markStress
:.set-samples 1
}
### Below marks
create-glyph 'cedillaBelow' : glyph-construction {
set-width 0
assign-unicode 0x327
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 : create-stroke
:.start-from [markMiddle - fine * ITALICCOR] cedillaTop
:.heads-to RIGHTWARD
:.set-width 0 [fine * 2]
:.line-to [markMiddle + fine * 0.5] cedillaTop
:.arc-hv-to [markMiddle + markExtend - O] [mix cedillaTop cedillaBot 0.5]
:.arc-vh-to markMiddle cedillaBot
:.line-to [markMiddle - markExtend] cedillaBot
:.heads-to LEFTWARD
include : create-stroke
:.start-from markMiddle 0
:.heads-to DOWNWARD
:.set-width fine fine
:.line-to markMiddle [cedillaTop - fine]
:.heads-to DOWNWARD
}
create-glyph 'ogonekBelow' : glyph-construction {
set-width 0
assign-unicode 0x328
local fine : markHalfStroke * 0.2
local ogonekBot : [mix belowMarkTop belowMarkBot 0.75] + markStress * 2
local ogonekLeft : markMiddle - markExtend * 0.2
local ogonekRight : markMiddle + markExtend * 0.85
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
include : create-stroke
:.start-from markMiddle 0
:.set-width 0 [fine * 2]
:.arc-hv-to ogonekLeft [mix 0 ogonekBot 0.5]
:.set-width 0 [[mix fine markStress 0.75] * 2]
:.arc-vh-to [markMiddle + markExtend * 0.25] ogonekBot
:.set-width 0 [markStress * 2]
:.line-to ogonekRight ogonekBot
:.heads-to RIGHTWARD
}
create-glyph 'ogonekTR' : glyph-construction {
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
}
create-glyph 'iotaBelow' : glyph-construction {
set-width 0
assign-unicode 0x345
set this.shortName 'iota'
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
include : VBar markMiddle belowMarkBot belowMarkTop [markHalfStroke * 2]
}
create-glyph 'iotaLF' : glyph-construction {
# iotabelow glyph for /eta
set-width 0
set-anchor 'lf' MARK markMiddle 0 markMiddle belowMarkBot
include : VBar markMiddle belowMarkBot belowMarkTop [markHalfStroke * 2]
}
# Flipped below marks
create-glyph 'dotBelow' : glyph-construction {
set-width 0
assign-unicode 0x323
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
include glyphs.dotAbove
include : FlipAround markMiddle [XH / 2]
}
create-glyph 'dieresisBelow' : glyph-construction {
set-width 0
assign-unicode 0x324
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
include glyphs.dieresisAbove
include : FlipAround markMiddle [XH / 2]
}
create-glyph 'tildeBelow' : glyph-construction {
set-width 0
assign-unicode 0x330
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
include glyphs.tildeAbove
include : FlipAround markMiddle [XH / 2]
}
create-glyph 'ringBelow' : glyph-construction {
set-width 0
assign-unicode 0x325
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
include glyphs.ringAbove
include : FlipAround markMiddle [XH / 2]
}
create-glyph 'macronBelow' : glyph-construction {
set-width 0
assign-unicode 0x331
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
include glyphs.macronAbove
include : FlipAround markMiddle [XH / 2]
}
create-glyph 'circumflexBelow' : glyph-construction {
set-width 0
assign-unicode 0x32D
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
include glyphs.caronAbove
include : FlipAround markMiddle [XH / 2]
}
create-glyph 'breveBelow' : glyph-construction {
set-width 0
assign-unicode 0x32E
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
include glyphs.archAbove
include : FlipAround markMiddle [XH / 2]
}
create-glyph 'archBelow' : glyph-construction {
set-width 0
assign-unicode 0x32F
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
include glyphs.breveAbove
include : FlipAround markMiddle [XH / 2]
}
create-glyph 'commaBelow' : glyph-construction {
set-width 0
assign-unicode 0x326
set-anchor 'below' MARK markMiddle 0 markMiddle belowMarkBot
include glyphs.turnCommaAbove
include : FlipAround markMiddle [XH / 2]
}