mirror of
https://github.com/be5invis/Iosevka.git
synced 2026-10-28 16:38:35 +00:00
390 lines
23 KiB
Plaintext
390 lines
23 KiB
Plaintext
###### GEOMETRIC SHAPES
|
|
$$include '../meta/macros.ptl'
|
|
|
|
import '../support/transform' as : Transform && [object [transformPoint tp] [unTransform utp] inverse]
|
|
import [mix linreg clamp fallback] from '../support/utils'
|
|
import [designParameters] from '../meta/aesthetics'
|
|
|
|
glyph-module
|
|
|
|
glyph-block Symbol-Arrow : begin
|
|
glyph-block-import CommonShapes
|
|
|
|
local exportArrowShape nothing
|
|
glyph-block-export [ArrowShape exportArrowShape]
|
|
|
|
### Arrowheads
|
|
for-width-kinds WIDE-WIDTH-1
|
|
define arrowHeight : para.arrowHeight * (WIDTH - SB) * [Math.pow (MosaicWidth / MosaicUnitWidth) (1 / 3)]
|
|
define arrowWidth : Math.min (MosaicWidth - SB) arrowHeight
|
|
define arrowMidX : MosaicWidth / 2
|
|
define arrowSB : (MosaicWidth - arrowWidth) / 2
|
|
define arrowRSB : MosaicWidth - arrowSB
|
|
define hwArrowRSB : WIDTH - arrowSB
|
|
define hwArrowMidX : WIDTH / 2
|
|
define o : O * 2
|
|
|
|
define arrowSize : (WIDTH - SB) * designParameters.arrow_size * [Math.pow (arrowWidth / WIDTH) 0.4]
|
|
define halfstroke : OPERATORSTROKE / 2
|
|
define fine : adviceBlackness 3.5
|
|
define terminal : adviceBlackness 5
|
|
define arrowTop : [mix operBot operTop (1 / 2)] + arrowHeight / 2
|
|
define arrowBot : [mix operBot operTop (1 / 2)] - arrowHeight / 2
|
|
define doubleArrowStemWidth : arrowSize * 1.1
|
|
|
|
define [ArrowBar x1 y1 x2 y2 halfstroke w] : glyph-construction
|
|
local mag : Math.hypot (y2 - y1) (x2 - x1)
|
|
local p : (mag - o - halfstroke * [fallback w 1.1]) / mag
|
|
include : dispiro
|
|
widths.center (halfstroke * 2)
|
|
flat x1 y1
|
|
curl [mix x1 x2 p] [mix y1 y2 p]
|
|
end : function [set this.contrast 1]
|
|
|
|
define [DashArrowBar x1 y1 x2 y2 halfstroke gap stop w] : glyph-construction
|
|
local mag : Math.hypot (y2 - y1) (x2 - x1)
|
|
local p : (mag - o - halfstroke * [fallback w 1.1]) / mag
|
|
local deltaT : (gap + stop) / mag
|
|
for [local t 0] (t < p) [set t : t + deltaT] : include : dispiro
|
|
widths.center (halfstroke * 2)
|
|
flat [mix x1 x2 t] [mix y1 y2 t]
|
|
curl [mix x1 x2 : Math.min p (t + stop / mag)] [mix y1 y2 : Math.min p (t + stop / mag)]
|
|
end : function [set this.contrast 1]
|
|
|
|
define [HookArrowBar x1 y1 x2 y2 halfstroke s w] : glyph-construction
|
|
local mag : Math.hypot (y2 - y1) (x2 - x1)
|
|
local p : (mag - o - halfstroke * [fallback w 1.1]) / mag
|
|
include : dispiro
|
|
widths.center (halfstroke * 2)
|
|
g4 (mag - [Math.abs s] / 2 - 0.1) s
|
|
g4 (mag - [Math.abs s] / 2) s
|
|
archv
|
|
g4 (mag - O) (s / 2)
|
|
arcvh
|
|
flat (mag - [Math.abs s] / 2) 0
|
|
curl [mix mag 0 p] 0
|
|
end : function [set this.contrast 1]
|
|
|
|
define [ArrowHead x1 y1 x2 y2 _size] : create-glyph : glyph-construction
|
|
include : LHSHalfArrowHead x1 y1 x2 y2 0 _size
|
|
include : RHSHalfArrowHead x1 y1 x2 y2 0 _size
|
|
|
|
define [RHSHalfArrowHead x1 y1 x2 y2 width _size] : create-glyph : glyph-construction
|
|
local size : fallback _size arrowSize
|
|
include : PointingTo x1 y1 x2 y2 : lambda [mag] : begin
|
|
dispiro
|
|
function [set this.gizmo [Transform.Id]]
|
|
widths.rhs fine
|
|
flat (o) (-width / 2) [heading UPWARD]
|
|
curl (o + size) size [widths.rhs terminal]
|
|
end : function [set this.contrast 1]
|
|
|
|
define [LHSHalfArrowHead x1 y1 x2 y2 width _size] : create-glyph : glyph-construction
|
|
local size : fallback _size arrowSize
|
|
include : PointingTo x1 y1 x2 y2 : lambda [mag] : begin
|
|
dispiro
|
|
function [set this.gizmo [Transform.Id]]
|
|
widths.lhs fine
|
|
flat (o) (width / 2) [heading DOWNWARD]
|
|
curl (o + size) (-size) [widths.lhs terminal]
|
|
end : function [set this.contrast 1]
|
|
|
|
define [TriangleArrowHead x1 y1 x2 y2 width length] : create-glyph : glyph-construction
|
|
include : PointingTo x1 y1 x2 y2 : lambda [mag] : begin
|
|
spiro-outline
|
|
corner o 0
|
|
corner length (width - o)
|
|
corner length (-width + o)
|
|
|
|
define [ArrowShape x1 y1 x2 y2 size] : glyph-construction
|
|
include : ArrowHead x1 y1 x2 y2 size
|
|
include : ArrowBar x1 y1 x2 y2 halfstroke
|
|
|
|
define [DashArrowShape x1 y1 x2 y2 size] : glyph-construction
|
|
local gap : adviceBlackness 6
|
|
include : ArrowHead x1 y1 x2 y2 size
|
|
include : DashArrowBar x1 y1 x2 y2 halfstroke gap [Math.max (WIDTH / 5) (gap * 3)]
|
|
|
|
define [HookArrowShape mul] : lambda [x1 y1 x2 y2 size] : glyph-construction
|
|
include : ArrowHead x1 y1 x2 y2 size
|
|
include : PointingTo x1 y1 x2 y2 : lambda [mag] : begin
|
|
HookArrowBar x1 y1 x2 y2 halfstroke (arrowSize * mul)
|
|
|
|
define [ThickArrowShape color] : lambda [x1 y1 x2 y2] : glyph-construction
|
|
local headLen : WIDTH * 0.4
|
|
local halfBarWidth : headLen / 3
|
|
local headWidth : halfBarWidth * 2
|
|
|
|
local fine : Math.min [adviceBlackness 5] (halfBarWidth * 0.6)
|
|
local mag : Math.hypot (y2 - y1) (x2 - x1)
|
|
local p : (mag - fine) / mag
|
|
local p2 : (mag - fine * [Math.sqrt 13] / 2) / mag
|
|
local innerHeaderLengthShrink : fine * (1 + [Math.sqrt 13] / 2)
|
|
|
|
local x1a : mix x1 x2 (1 - p)
|
|
local y1a : mix y1 y2 (1 - p)
|
|
local x2a : mix x1 x2 p2
|
|
local y2a : mix y1 y2 p2
|
|
|
|
if (color == "white") : include : difference
|
|
union
|
|
TriangleArrowHead x1 y1 x2 y2 headWidth headLen
|
|
ArrowBar x1 y1 x2 y2 halfBarWidth 2
|
|
union
|
|
TriangleArrowHead x1a y1a x2a y2a (headWidth - innerHeaderLengthShrink * headWidth / headLen) (headLen - innerHeaderLengthShrink)
|
|
ArrowBar x1a y1a x2a y2a (halfBarWidth - fine) 2
|
|
|
|
if (color == "black") : include : union
|
|
TriangleArrowHead x1 y1 x2 y2 headWidth headLen
|
|
ArrowBar x1 y1 x2 y2 halfBarWidth 2
|
|
|
|
define [HalfArrowShape side] : lambda [x1 y1 x2 y2 size] : glyph-construction
|
|
include : side x1 y1 x2 y2 (halfstroke * 2) size
|
|
include : ArrowBar x1 y1 x2 y2 halfstroke 1.5
|
|
|
|
define [DoubleArrowShape w] : lambda [x1 y1 x2 y2 size] : glyph-construction
|
|
include : ArrowHead x1 y1 x2 y2 size
|
|
|
|
local giz this.gizmo
|
|
local {.x xo .y yo} : tp giz {.x x1 .y y1}
|
|
local {.x xt .y yt} : tp giz {.x x2 .y y2}
|
|
|
|
local mag : Math.hypot (yt - yo) (xt - xo)
|
|
local p : (mag - o - w / 2 + O) / mag
|
|
|
|
local fine : Math.min (w / 3) (halfstroke * 2)
|
|
local coFine : w / 2 - fine / 2
|
|
|
|
local G : dispiro
|
|
disable-gizmo
|
|
disable-contrast
|
|
widths.center fine
|
|
# begin
|
|
flat xo yo
|
|
curl [mix xo xt p] [mix yo yt p]
|
|
end
|
|
local g : G.call currentGlyph "don't include"
|
|
# double arrowstick
|
|
g.include : Translate (-xo) (-yo)
|
|
g.include : Rotate (- [Math.atan2 (yt - yo) (xt - xo)])
|
|
include : Translate (-xo) (-yo)
|
|
include : Rotate (- [Math.atan2 (yt - yo) (xt - xo)])
|
|
include : Translate 0 (-coFine)
|
|
include g
|
|
include : Translate 0 (2 * coFine)
|
|
include g
|
|
include : Translate 0 (-coFine)
|
|
include : Rotate [Math.atan2 (yt - yo) (xt - xo)]
|
|
include : Translate xo yo
|
|
|
|
define [dhArrowShape x1 y1 x2 y2 size] : glyph-construction
|
|
local mag : Math.hypot (y2 - y1) (x2 - x1)
|
|
local p : (mag - o - size) / mag
|
|
include : ArrowShape x1 y1 x2 y2 size
|
|
include : ArrowHead x1 y1 [mix x1 x2 p] [mix y1 y2 p] size
|
|
|
|
define [htArrowShape x1 y1 x2 y2 size] : glyph-construction
|
|
local mag : Math.hypot (y2 - y1) (x2 - x1)
|
|
local p1 : (size - o - halfstroke * 1.1) / mag
|
|
local p2 : size / mag
|
|
include : ArrowShape [mix x1 x2 p1] [mix y1 y2 p1] x2 y2 size
|
|
include : ArrowHead x1 y1 [mix x1 x2 p2] [mix y1 y2 p2] size
|
|
|
|
define [arrow shape id unicode x1 y1 x2 y2 width] : sketch
|
|
set-width [fallback width MosaicWidth]
|
|
set-anchor "slash" BASE [mix x1 x2 (2/5)] [mix y1 y2 (2/5)]
|
|
include : shape x1 y1 x2 y2 arrowSize
|
|
save id unicode
|
|
|
|
define [doublearrow shape id unicode x1 y1 x2 y2] : sketch
|
|
set-width MosaicWidth
|
|
set-anchor "slash" BASE [mix x1 x2 (1/2)] [mix y1 y2 (1/2)]
|
|
local xm : mix x1 x2 0.5
|
|
local ym : mix y1 y2 0.5
|
|
include : shape xm ym x1 y1 arrowSize
|
|
include : shape xm ym x2 y2 arrowSize
|
|
save id unicode
|
|
|
|
define [anglearrow shape bar id unicode x1 y1 x2 y2 x3 y3] : sketch
|
|
set-width MosaicWidth
|
|
include : shape x2 y2 x3 y3 arrowSize
|
|
include : bar x1 y1 x2 y2
|
|
save id unicode
|
|
|
|
arrow ArrowShape [MangleName 'arrowleft'] [MangleUnicode 0x2190] arrowRSB symbolMid arrowSB symbolMid
|
|
arrow ArrowShape [MangleName 'arrowup'] [MangleUnicode 0x2191] arrowMidX arrowBot arrowMidX arrowTop
|
|
arrow ArrowShape [MangleName 'arrowright'] [MangleUnicode 0x2192] arrowSB symbolMid arrowRSB symbolMid
|
|
arrow ArrowShape [MangleName 'arrowdown'] [MangleUnicode 0x2193] arrowMidX arrowTop arrowMidX arrowBot
|
|
|
|
arrow DashArrowShape [MangleName 'dasharrowleft'] [MangleUnicode 0x21E0] arrowRSB symbolMid arrowSB symbolMid
|
|
arrow DashArrowShape [MangleName 'dasharrowup'] [MangleUnicode 0x21E1] arrowMidX arrowBot arrowMidX arrowTop
|
|
arrow DashArrowShape [MangleName 'dasharrowright'] [MangleUnicode 0x21E2] arrowSB symbolMid arrowRSB symbolMid
|
|
arrow DashArrowShape [MangleName 'dasharrowdown'] [MangleUnicode 0x21E3] arrowMidX arrowTop arrowMidX arrowBot
|
|
|
|
arrow [HookArrowShape 1] [MangleName 'hookarrowleft'] [MangleUnicode 0x21A9] arrowRSB symbolMid arrowSB symbolMid
|
|
arrow [HookArrowShape (-1)] [MangleName 'hookarrowright'] [MangleUnicode 0x21AA] arrowSB symbolMid arrowRSB symbolMid
|
|
arrow [HookArrowShape (-1)] [MangleName 'hookarrowupleft'] [MangleUnicode 0x2923] arrowRSB arrowBot arrowSB arrowTop
|
|
arrow [HookArrowShape 1] [MangleName 'hookarrowupright'] [MangleUnicode 0x2924] arrowSB arrowBot arrowRSB arrowTop
|
|
arrow [HookArrowShape (-1)] [MangleName 'hookarrowdownright'] [MangleUnicode 0x2925] arrowSB arrowTop arrowRSB arrowBot
|
|
arrow [HookArrowShape 1] [MangleName 'hookarrowdownleft'] [MangleUnicode 0x2926] arrowRSB arrowTop arrowSB arrowBot
|
|
|
|
anglearrow ArrowShape [lambda [x1 y1 x2 y2] : VBarLeft x1 y1 y2] [MangleName 'arrow-up-angle-right'] [MangleUnicode 0x21b1] arrowSB arrowBot arrowSB (arrowTop - arrowSize) arrowRSB (arrowTop - arrowSize)
|
|
anglearrow ArrowShape [lambda [x1 y1 x2 y2] : VBarRight x1 y1 y2] [MangleName 'arrow-up-angle-left'] [MangleUnicode 0x21b0] arrowRSB arrowBot arrowRSB (arrowTop - arrowSize) arrowSB (arrowTop - arrowSize)
|
|
anglearrow ArrowShape [lambda [x1 y1 x2 y2] : VBarLeft x1 y1 y2] [MangleName 'arrow-down-angle-right'] [MangleUnicode 0x21b3] arrowSB arrowTop arrowSB (arrowBot + arrowSize) arrowRSB (arrowBot + arrowSize)
|
|
anglearrow ArrowShape [lambda [x1 y1 x2 y2] : VBarRight x1 y1 y2] [MangleName 'arrow-down-angle-left'] [MangleUnicode 0x21b2] arrowRSB arrowTop arrowRSB (arrowBot + arrowSize) arrowSB (arrowBot + arrowSize)
|
|
|
|
arrow ArrowShape [MangleName 'arrowupleft'] [MangleUnicode 0x2196] arrowRSB arrowBot arrowSB arrowTop
|
|
arrow ArrowShape [MangleName 'arrowupright'] [MangleUnicode 0x2197] arrowSB arrowBot arrowRSB arrowTop
|
|
arrow ArrowShape [MangleName 'arrowdownright'] [MangleUnicode 0x2198] arrowSB arrowTop arrowRSB arrowBot
|
|
arrow ArrowShape [MangleName 'arrowdownleft'] [MangleUnicode 0x2199] arrowRSB arrowTop arrowSB arrowBot
|
|
|
|
arrow [HalfArrowShape RHSHalfArrowHead] [MangleName 'arrowleftHR'] [MangleUnicode 0x21BC] arrowRSB symbolMid arrowSB symbolMid
|
|
arrow [HalfArrowShape LHSHalfArrowHead] [MangleName 'arrowleftHL'] [MangleUnicode 0x21BD] arrowRSB symbolMid arrowSB symbolMid
|
|
arrow [HalfArrowShape RHSHalfArrowHead] [MangleName 'arrowupHR'] [MangleUnicode 0x21BE] arrowMidX arrowBot arrowMidX arrowTop
|
|
arrow [HalfArrowShape LHSHalfArrowHead] [MangleName 'arrowupHL'] [MangleUnicode 0x21BF] arrowMidX arrowBot arrowMidX arrowTop
|
|
arrow [HalfArrowShape LHSHalfArrowHead] [MangleName 'arrowrightHL'] [MangleUnicode 0x21C0] arrowSB symbolMid arrowRSB symbolMid
|
|
arrow [HalfArrowShape RHSHalfArrowHead] [MangleName 'arrowrightHR'] [MangleUnicode 0x21C1] arrowSB symbolMid arrowRSB symbolMid
|
|
arrow [HalfArrowShape LHSHalfArrowHead] [MangleName 'arrowdownHL'] [MangleUnicode 0x21C2] arrowMidX arrowTop arrowMidX arrowBot
|
|
arrow [HalfArrowShape RHSHalfArrowHead] [MangleName 'arrowdownHR'] [MangleUnicode 0x21C3] arrowMidX arrowTop arrowMidX arrowBot
|
|
|
|
do "Wave arrows"
|
|
define WaveShape : CreateWaveShape
|
|
doubleArrowStemWidth * 0.4
|
|
Math.min OPERATORSTROKE (doubleArrowStemWidth / 3)
|
|
define rightTBias : (MosaicWidth / MosaicUnitWidth) - 1
|
|
define freeCoT : arrowSB / MosaicWidth
|
|
define connectedCoT : (arrowSB / MosaicWidth) + (11 / 32)
|
|
local mag : arrowRSB - arrowSB
|
|
local p : (mag - o - halfstroke * 1.1) / mag
|
|
sketch
|
|
set-width MosaicWidth
|
|
include : WaveShape
|
|
left -- (-connectedCoT)
|
|
right -- (rightTBias - connectedCoT)
|
|
xsJoin -- [mix arrowSB arrowRSB (1 - p)]
|
|
xfJoin -- [mix arrowSB arrowRSB (p)]
|
|
unitWidth -- MosaicUnitWidth
|
|
include : ArrowHead arrowSB symbolMid arrowRSB symbolMid
|
|
include : ArrowHead arrowRSB symbolMid arrowSB symbolMid
|
|
save [MangleName 'waveArrowLeftRight'] [MangleUnicode 0x21AD]
|
|
|
|
sketch
|
|
set-width MosaicWidth
|
|
include : WaveShape
|
|
left -- (-connectedCoT)
|
|
right -- (rightTBias - freeCoT)
|
|
xsJoin -- [mix arrowSB arrowRSB (1 - p)]
|
|
unitWidth -- MosaicUnitWidth
|
|
include : ArrowHead arrowRSB symbolMid arrowSB symbolMid
|
|
save [MangleName 'waveArrowLeft'] [MangleUnicode 0x219C]
|
|
|
|
sketch
|
|
set-width MosaicWidth
|
|
include : WaveShape
|
|
left -- (-freeCoT)
|
|
right -- (rightTBias - connectedCoT)
|
|
xfJoin -- [mix arrowSB arrowRSB (p)]
|
|
unitWidth -- MosaicUnitWidth
|
|
include : ArrowHead arrowSB symbolMid arrowRSB symbolMid
|
|
save [MangleName 'waveArrowRight'] [MangleUnicode 0x219D]
|
|
|
|
arrow [ThickArrowShape 'white'] [MangleName 'uni21E6'] [MangleUnicode 0x21E6] arrowRSB symbolMid arrowSB symbolMid
|
|
arrow [ThickArrowShape 'white'] [MangleName 'uni21E7'] [MangleUnicode 0x21E7] arrowMidX arrowBot arrowMidX arrowTop
|
|
arrow [ThickArrowShape 'white'] [MangleName 'uni21E8'] [MangleUnicode 0x21E8] arrowSB symbolMid arrowRSB symbolMid
|
|
arrow [ThickArrowShape 'white'] [MangleName 'uni21E9'] [MangleUnicode 0x21E9] arrowMidX arrowTop arrowMidX arrowBot
|
|
arrow [ThickArrowShape 'white'] [MangleName 'uni2B00'] [MangleUnicode 0x2B00] arrowSB arrowBot arrowRSB arrowTop
|
|
arrow [ThickArrowShape 'white'] [MangleName 'uni2B01'] [MangleUnicode 0x2B01] arrowRSB arrowBot arrowSB arrowTop
|
|
arrow [ThickArrowShape 'white'] [MangleName 'uni2B02'] [MangleUnicode 0x2B02] arrowSB arrowTop arrowRSB arrowBot
|
|
arrow [ThickArrowShape 'white'] [MangleName 'uni2B03'] [MangleUnicode 0x2B03] arrowRSB arrowTop arrowSB arrowBot
|
|
|
|
arrow [ThickArrowShape 'black'] [MangleName 'uni2B05'] [MangleUnicode 0x2B05] arrowRSB symbolMid arrowSB symbolMid
|
|
arrow [ThickArrowShape 'black'] [MangleName 'uni2B06'] [MangleUnicode 0x2B06] arrowMidX arrowBot arrowMidX arrowTop
|
|
arrow [ThickArrowShape 'black'] [MangleName 'uni27A1'] [MangleUnicode 0x27A1] arrowSB symbolMid arrowRSB symbolMid
|
|
arrow [ThickArrowShape 'black'] [MangleName 'uni2B95'] [MangleUnicode 0x2B95] arrowSB symbolMid arrowRSB symbolMid
|
|
arrow [ThickArrowShape 'black'] [MangleName 'uni2B07'] [MangleUnicode 0x2B07] arrowMidX arrowTop arrowMidX arrowBot
|
|
arrow [ThickArrowShape 'black'] [MangleName 'uni2B08'] [MangleUnicode 0x2B08] arrowSB arrowBot arrowRSB arrowTop
|
|
arrow [ThickArrowShape 'black'] [MangleName 'uni2B09'] [MangleUnicode 0x2B09] arrowRSB arrowBot arrowSB arrowTop
|
|
arrow [ThickArrowShape 'black'] [MangleName 'uni2B0A'] [MangleUnicode 0x2B0A] arrowSB arrowTop arrowRSB arrowBot
|
|
arrow [ThickArrowShape 'black'] [MangleName 'uni2B0B'] [MangleUnicode 0x2B0B] arrowRSB arrowTop arrowSB arrowBot
|
|
|
|
arrow ArrowShape [MangleName 'arrowleftK'] null arrowRSB symbolMid (arrowSB + fine) symbolMid
|
|
arrow ArrowShape [MangleName 'arrowrightK'] null arrowSB symbolMid (arrowRSB - fine) symbolMid
|
|
arrow ArrowShape [MangleName 'arrowupK'] null arrowMidX arrowBot arrowMidX (arrowTop - fine)
|
|
arrow ArrowShape [MangleName 'arrowdownK'] null arrowMidX arrowTop arrowMidX (arrowBot + fine)
|
|
arrow ArrowShape [MangleName 'arrowleftSK'] null (arrowRSB - fine / 2) symbolMid arrowSB symbolMid
|
|
arrow ArrowShape [MangleName 'arrowrightSK'] null (arrowSB + fine / 2) symbolMid arrowRSB symbolMid
|
|
arrow ArrowShape [MangleName 'arrowupSK'] null arrowMidX (arrowBot + fine / 2) arrowMidX arrowTop
|
|
arrow ArrowShape [MangleName 'arrowdownSK'] null arrowMidX (arrowTop - fine / 2) arrowMidX arrowBot
|
|
arrow ArrowShape [MangleName 'arrowupleftTK'] null arrowRSB arrowBot arrowSB (arrowTop - [Math.max (arrowWidth / 8) (fine * 1.5)])
|
|
|
|
composite [MangleName 'arrowbarleft'] glyphs.[MangleName 'arrowleftK'] [VBar arrowSB (symbolMid - arrowSize) (symbolMid + arrowSize) fine] [into-unicode : MangleUnicode 0x21E4]
|
|
composite [MangleName 'arrowbarright'] glyphs.[MangleName 'arrowrightK'] [VBar arrowRSB (symbolMid - arrowSize) (symbolMid + arrowSize) fine] [into-unicode : MangleUnicode 0x21E5]
|
|
composite [MangleName 'arrowbarup'] glyphs.[MangleName 'arrowupK'] [HBar (arrowMidX - arrowSize) (arrowMidX + arrowSize) arrowTop fine] [into-unicode : MangleUnicode 0x2912]
|
|
composite [MangleName 'arrowbardown'] glyphs.[MangleName 'arrowdownK'] [HBar (arrowMidX - arrowSize) (arrowMidX + arrowSize) arrowBot fine] [into-unicode : MangleUnicode 0x2913]
|
|
composite [MangleName 'bararrowleft'] glyphs.[MangleName 'arrowleftSK'] [VBar arrowRSB (symbolMid - arrowSize) (symbolMid + arrowSize) fine] [into-unicode : MangleUnicode 0x21A4]
|
|
composite [MangleName 'bararrowright'] glyphs.[MangleName 'arrowrightSK'] [VBar arrowSB (symbolMid - arrowSize) (symbolMid + arrowSize) fine] [into-unicode : MangleUnicode 0x21A6]
|
|
composite [MangleName 'bararrowup'] glyphs.[MangleName 'arrowupSK'] [HBar (arrowMidX - arrowSize) (arrowMidX + arrowSize) arrowBot fine] [into-unicode : MangleUnicode 0x21A5]
|
|
composite [MangleName 'bararrowdown'] glyphs.[MangleName 'arrowdownSK'] [HBar (arrowMidX - arrowSize) (arrowMidX + arrowSize) arrowTop fine] [into-unicode : MangleUnicode 0x21A7]
|
|
|
|
composite [MangleName 'uni21B8'] glyphs.[MangleName 'arrowupleftTK'] [HBar (arrowSB - arrowSize / 2) (arrowRSB + arrowSize / 2) arrowTop fine] [into-unicode : MangleUnicode 0x21B8]
|
|
|
|
let [dasw doubleArrowStemWidth] : do
|
|
arrow [DoubleArrowShape dasw] [MangleName 'dblarrowleft'] [MangleUnicode 0x21D0] arrowRSB symbolMid arrowSB symbolMid
|
|
arrow [DoubleArrowShape dasw] [MangleName 'dblarrowright'] [MangleUnicode 0x21D2] arrowSB symbolMid arrowRSB symbolMid
|
|
arrow [DoubleArrowShape dasw] [MangleName 'dblarrowup'] [MangleUnicode 0x21D1] arrowMidX arrowBot arrowMidX arrowTop
|
|
arrow [DoubleArrowShape dasw] [MangleName 'dblarrowdown'] [MangleUnicode 0x21D3] arrowMidX arrowTop arrowMidX arrowBot
|
|
arrow [DoubleArrowShape dasw] [MangleName 'dblarrowupleft'] [MangleUnicode 0x21D6] arrowRSB arrowBot arrowSB arrowTop
|
|
arrow [DoubleArrowShape dasw] [MangleName 'dblarrowupright'] [MangleUnicode 0x21D7] arrowSB arrowBot arrowRSB arrowTop
|
|
arrow [DoubleArrowShape dasw] [MangleName 'dblarrowdownright'] [MangleUnicode 0x21D8] arrowSB arrowTop arrowRSB arrowBot
|
|
arrow [DoubleArrowShape dasw] [MangleName 'dblarrowdownleft'] [MangleUnicode 0x21D9] arrowRSB arrowTop arrowSB arrowBot
|
|
|
|
doublearrow ArrowShape [MangleName 'arrowleftright'] [MangleUnicode 0x2194] arrowSB symbolMid arrowRSB symbolMid
|
|
doublearrow ArrowShape [MangleName 'arrowupdown'] [MangleUnicode 0x2195] arrowMidX arrowTop arrowMidX arrowBot
|
|
doublearrow ArrowShape [MangleName 'arrowupleftdownright'] [MangleUnicode 0x2921] arrowSB arrowTop arrowRSB arrowBot
|
|
doublearrow ArrowShape [MangleName 'arrowuprightdownleft'] [MangleUnicode 0x2922] arrowRSB arrowTop arrowSB arrowBot
|
|
|
|
let [dasw doubleArrowStemWidth] : do
|
|
doublearrow [DoubleArrowShape dasw] [MangleName 'dblarrowleftright'] [MangleUnicode 0x21D4] arrowSB symbolMid arrowRSB symbolMid
|
|
doublearrow [DoubleArrowShape dasw] [MangleName 'dblarrowupdown'] [MangleUnicode 0x21D5] arrowMidX arrowTop arrowMidX arrowBot
|
|
|
|
arrow dhArrowShape [MangleName 'dharrowleft'] [MangleUnicode 0x219E] arrowRSB symbolMid arrowSB symbolMid
|
|
arrow dhArrowShape [MangleName 'dharrowright'] [MangleUnicode 0x21A0] arrowSB symbolMid arrowRSB symbolMid
|
|
arrow dhArrowShape [MangleName 'dharrowup'] [MangleUnicode 0x219F] arrowMidX arrowBot arrowMidX arrowTop
|
|
arrow dhArrowShape [MangleName 'dharrowdown'] [MangleUnicode 0x21A1] arrowMidX arrowTop arrowMidX arrowBot
|
|
|
|
arrow htArrowShape [MangleName 'htarrowleft'] [MangleUnicode 0x21A2] arrowRSB symbolMid arrowSB symbolMid
|
|
arrow htArrowShape [MangleName 'htarrowright'] [MangleUnicode 0x21A3] arrowSB symbolMid arrowRSB symbolMid
|
|
|
|
composite [MangleName 'uni219A'] glyphs.[MangleName 'arrowleft'] glyphs.arrSlashOver [into-unicode : MangleUnicode 0x219A]
|
|
composite [MangleName 'uni219B'] glyphs.[MangleName 'arrowright'] glyphs.arrSlashOver [into-unicode : MangleUnicode 0x219B]
|
|
composite [MangleName 'uni21AE'] glyphs.[MangleName 'arrowleftright'] glyphs.arrSlashOver [into-unicode : MangleUnicode 0x21AE]
|
|
composite [MangleName 'uni21F7'] glyphs.[MangleName 'arrowleft'] glyphs.arrVStrokeOver [into-unicode : MangleUnicode 0x21F7]
|
|
composite [MangleName 'uni21F8'] glyphs.[MangleName 'arrowright'] glyphs.arrVStrokeOver [into-unicode : MangleUnicode 0x21F8]
|
|
composite [MangleName 'uni21F9'] glyphs.[MangleName 'arrowleftright'] glyphs.arrVStrokeOver [into-unicode : MangleUnicode 0x21F9]
|
|
composite [MangleName 'uni21FA'] glyphs.[MangleName 'arrowleft'] glyphs.arrDblVStrokeOver [into-unicode : MangleUnicode 0x21FA]
|
|
composite [MangleName 'uni21FB'] glyphs.[MangleName 'arrowright'] glyphs.arrDblVStrokeOver [into-unicode : MangleUnicode 0x21FB]
|
|
composite [MangleName 'uni21FC'] glyphs.[MangleName 'arrowleftright'] glyphs.arrDblVStrokeOver [into-unicode : MangleUnicode 0x21FC]
|
|
composite [MangleName 'uni21CD'] glyphs.[MangleName 'dblarrowleft'] glyphs.arrSlashOver [into-unicode : MangleUnicode 0x21CD]
|
|
composite [MangleName 'uni21CE'] glyphs.[MangleName 'dblarrowleftright'] glyphs.arrSlashOver [into-unicode : MangleUnicode 0x21CE]
|
|
composite [MangleName 'uni21CF'] glyphs.[MangleName 'dblarrowright'] glyphs.arrSlashOver [into-unicode : MangleUnicode 0x21CF]
|
|
|
|
do
|
|
local hcDist : Math.max (halfstroke * 5) (arrowWidth / 2)
|
|
vcombine [MangleName 'uni21C4'] [MangleUnicode 0x21C4] [MangleName 'arrowright'] [MangleName 'arrowleft'] (arrowSize * 1.75)
|
|
hcombine [MangleName 'uni21C5'] [MangleUnicode 0x21C5] [MangleName 'arrowup'] [MangleName 'arrowdown'] hcDist
|
|
vcombine [MangleName 'uni21C6'] [MangleUnicode 0x21C6] [MangleName 'arrowleft'] [MangleName 'arrowright'] (arrowSize * 1.75)
|
|
vcombine [MangleName 'uni21C7'] [MangleUnicode 0x21C7] [MangleName 'arrowleft'] [MangleName 'arrowleft'] (arrowSize * 1.75)
|
|
hcombine [MangleName 'uni21C8'] [MangleUnicode 0x21C8] [MangleName 'arrowup'] [MangleName 'arrowup'] hcDist
|
|
vcombine [MangleName 'uni21C9'] [MangleUnicode 0x21C9] [MangleName 'arrowright'] [MangleName 'arrowright'] (arrowSize * 1.75)
|
|
hcombine [MangleName 'uni21CA'] [MangleUnicode 0x21CA] [MangleName 'arrowdown'] [MangleName 'arrowdown'] hcDist
|
|
hcombine [MangleName 'uni21F5'] [MangleUnicode 0x21F5] [MangleName 'arrowdown'] [MangleName 'arrowup'] hcDist
|
|
vcombine [MangleName 'uni21CB'] [MangleUnicode 0x21CB] [MangleName 'arrowleftHR'] [MangleName 'arrowrightHR'] (arrowSize)
|
|
vcombine [MangleName 'uni21CC'] [MangleUnicode 0x21CC] [MangleName 'arrowrightHL'] [MangleName 'arrowleftHL'] (arrowSize)
|
|
vcombine [MangleName 'uni21B9'] [MangleUnicode 0x21B9] [MangleName 'arrowbarright'] [MangleName 'arrowbarleft'] (arrowSize * 1.75)
|
|
|
|
if (MosaicWidth == WIDE-WIDTH-1) : set exportArrowShape ArrowShape
|
|
|
|
alias 'longArrowLeft' 0x27F5 'arrowleft.fwid'
|
|
alias 'longArrowRight' 0x27F6 'arrowright.fwid'
|
|
|