Iosevka/glyphs/overmarks.patel

382 lines
No EOL
13 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
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
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
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
local radiusOut : DOTRADIUS * 1.5
local radiusIn : DOTRADIUS * 0.7
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 [-DOTRADIUS * 0.6]
apply-transform : Italify
}
create-glyph 'graveAbove' : glyph-construction {
set-width 0
assign-unicode 0x300
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
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
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
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
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
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
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
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
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
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
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 'closeApostropheAbove' : glyph-construction {
set-width 0
assign-unicode 0x313
include glyphs.dotAbove
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
include : create-stroke
:.start-from [markMiddle + DOTRADIUS] [XH + ACCENT]
:.set-width 0 [markHalfStroke * 1.25]
:.curve-to [markMiddle + DOTRADIUS] [mix [XH + ACCENT] [aboveMarkBot - DOTRADIUS] 0.5] [mix markMiddle [markMiddle - DOTRADIUS] 0.3] [aboveMarkBot - DOTRADIUS]
apply-transform : Upright
apply-transform : Translate 0 [DOTRADIUS * 0.75]
apply-transform : Italify
}
create-glyph 'openApostropheAbove' : glyph-construction {
set-width 0
assign-unicode 0x312
include glyphs.closeApostropheAbove
include : FlipAround markMiddle [XH + ACCENT]
set-anchor 'above' MARK markMiddle XH markMiddle aboveMarkTop
}
### 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 'ogonek' MARK markMiddle 0 ogonekRight ogonekBot
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
}
# 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.openApostropheAbove
include : FlipAround markMiddle [XH / 2]
}