464 lines
27 KiB
Text
464 lines
27 KiB
Text
###### GEOMETRIC SHAPES
|
|
$$include '../meta/macros.ptl'
|
|
|
|
import '../support/transform' as Transform
|
|
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 WideWidth1
|
|
define arrowHeight : para.arrowHeight * (Width - SB / 2) * [Math.pow (MosaicWidth / MosaicUnitWidth) (1 / 3)]
|
|
define arrowWidth : Math.min (MosaicWidth - SB / 2) 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] - [adviceBlackness 5] / 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 waveArrowAmplitude : (Width - SB) * designParameters.arrow_size * 1.1
|
|
|
|
# Diagonal arrow params
|
|
define diagPropX : 1 / [Math.pow 2 (1 / 4)]
|
|
define diagPropY : 1 / [Math.pow 2 (1 / 4)]
|
|
define arrowDiagRSB : mix arrowMidX arrowRSB diagPropX
|
|
define arrowDiagSB : mix arrowMidX arrowSB diagPropX
|
|
define arrowDiagBot : mix arrowMidX arrowBot diagPropY
|
|
define arrowDiagTop : mix arrowMidX arrowTop diagPropY
|
|
|
|
define [ArrowBar x1 y1 x2 y2 halfstroke w] : glyph-construction
|
|
include : PointingTo x1 y1 x2 y2 : lambda [mag] : begin
|
|
local p : (mag - o - halfstroke * [fallback w 1.1]) / mag
|
|
dispiro
|
|
widths.center (halfstroke * 2)
|
|
flat (mag * (1 - p)) 0
|
|
curl mag 0
|
|
end : function [set this.contrast 1]
|
|
|
|
define [DashArrowBar x1 y1 x2 y2 halfstroke gap stop w] : glyph-construction
|
|
include : PointingTo x1 y1 x2 y2 : lambda [mag] : glyph-construction
|
|
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 (mag * (1 - p)) mag t] 0
|
|
curl [mix (mag * (1 - p)) mag : Math.min p (t + stop / mag)] 0
|
|
end : function [set this.contrast 1]
|
|
|
|
define [HookArrowBar x1 y1 x2 y2 halfstroke s w] : glyph-construction
|
|
include : PointingTo x1 y1 x2 y2 : lambda [mag] : begin
|
|
local p : (mag - o - halfstroke * [fallback w 1.1]) / mag
|
|
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 : HookArrowBar x1 y1 x2 y2 halfstroke (arrowSize * mul)
|
|
|
|
define [ThickArrowShape color] : lambda [x1 y1 x2 y2] : glyph-construction
|
|
local headLen : MosaicUnitWidth * [Math.sqrt MosaicWidthScalar] * 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
|
|
local x1CoA : mix x1 x2 (-0.05)
|
|
local y1CoA : mix y1 y2 (-0.05)
|
|
|
|
if (color == "white") : include : difference
|
|
union
|
|
TriangleArrowHead x1 y1 x2 y2 headWidth headLen
|
|
ArrowBar x1 y1 x2 y2 (halfBarWidth + fine / 2) 2
|
|
union
|
|
TriangleArrowHead x1a y1a x2a y2a (headWidth - innerHeaderLengthShrink * headWidth / headLen) (headLen - innerHeaderLengthShrink)
|
|
ArrowBar x1a y1a x2a y2a (halfBarWidth - fine / 2) 2
|
|
|
|
if (color == "white-open") : include : difference
|
|
union
|
|
TriangleArrowHead x1 y1 x2 y2 headWidth headLen
|
|
ArrowBar x1 y1 x2 y2 (halfBarWidth + fine / 2) 2
|
|
union
|
|
TriangleArrowHead x1CoA y1CoA x2a y2a (headWidth - innerHeaderLengthShrink * headWidth / headLen) (headLen - innerHeaderLengthShrink)
|
|
ArrowBar x1CoA y1CoA x2a y2a (halfBarWidth - fine / 2) 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.75
|
|
|
|
define [DoubleArrowBarShape w x1 y1 x2 y2] : glyph-construction
|
|
include : PointingTo x1 y1 x2 y2 : lambda [mag] : glyph-construction
|
|
local p : (mag - o - w / 2 + O) / mag
|
|
local fine : Math.min (w / 3) (halfstroke * 2)
|
|
local coFine : w / 2 - fine / 2
|
|
|
|
include : dispiro
|
|
widths.center fine
|
|
flat (mag * (1 - p)) (+coFine)
|
|
curl mag (+coFine)
|
|
end : function [set this.contrast 1]
|
|
include : dispiro
|
|
widths.center fine
|
|
flat (mag * (1 - p)) (-coFine)
|
|
curl mag (-coFine)
|
|
end : function [set this.contrast 1]
|
|
|
|
define [DoubleArrowShape w] : lambda [x1 y1 x2 y2 size] : glyph-construction
|
|
include : ArrowHead x1 y1 x2 y2 size
|
|
include : DoubleArrowBarShape w x1 y1 x2 y2
|
|
|
|
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-base-anchor 'slash' [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-base-anchor 'slash' [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
|
|
|
|
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] arrowDiagRSB arrowDiagBot arrowDiagSB arrowDiagTop
|
|
arrow ArrowShape [MangleName 'arrowupright'] [MangleUnicode 0x2197] arrowDiagSB arrowDiagBot arrowDiagRSB arrowDiagTop
|
|
arrow ArrowShape [MangleName 'arrowdownright'] [MangleUnicode 0x2198] arrowDiagSB arrowDiagTop arrowDiagRSB arrowDiagBot
|
|
arrow ArrowShape [MangleName 'arrowdownleft'] [MangleUnicode 0x2199] arrowDiagRSB arrowDiagTop arrowDiagSB arrowDiagBot
|
|
|
|
arrow [HookArrowShape (-1)] [MangleName 'hookarrowupleft'] [MangleUnicode 0x2923] arrowDiagRSB arrowDiagBot arrowDiagSB arrowDiagTop
|
|
arrow [HookArrowShape 1] [MangleName 'hookarrowupright'] [MangleUnicode 0x2924] arrowDiagSB arrowDiagBot arrowDiagRSB arrowDiagTop
|
|
arrow [HookArrowShape (-1)] [MangleName 'hookarrowdownright'] [MangleUnicode 0x2925] arrowDiagSB arrowDiagTop arrowDiagRSB arrowDiagBot
|
|
arrow [HookArrowShape 1] [MangleName 'hookarrowdownleft'] [MangleUnicode 0x2926] arrowDiagRSB arrowDiagTop arrowDiagSB arrowDiagBot
|
|
|
|
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 WaveSw : halfstroke * 2
|
|
define WaveShape : CreateWaveShape
|
|
waveArrowAmplitude * 0.4 + WaveSw / 4 * MosaicWidthScalar
|
|
begin WaveSw
|
|
define rightTBias : (MosaicWidth / MosaicUnitWidth) - 1
|
|
define freeCoT : arrowSB / MosaicWidth
|
|
define connectedCoT : (arrowSB / MosaicWidth) + (9 / 32) * MosaicWidthScalar
|
|
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] arrowDiagSB arrowDiagBot arrowDiagRSB arrowDiagTop
|
|
arrow [ThickArrowShape 'white'] [MangleName 'uni2B01'] [MangleUnicode 0x2B01] arrowDiagRSB arrowDiagBot arrowDiagSB arrowDiagTop
|
|
arrow [ThickArrowShape 'white'] [MangleName 'uni2B02'] [MangleUnicode 0x2B02] arrowDiagSB arrowDiagTop arrowDiagRSB arrowDiagBot
|
|
arrow [ThickArrowShape 'white'] [MangleName 'uni2B03'] [MangleUnicode 0x2B03] arrowDiagRSB arrowDiagTop arrowDiagSB arrowDiagBot
|
|
DoubleArrow [ThickArrowShape 'white-open'] [MangleName 'uni2B04'] [MangleUnicode 0x2B04] arrowSB symbolMid arrowRSB symbolMid
|
|
DoubleArrow [ThickArrowShape 'white-open'] [MangleName 'uni21F3'] [MangleUnicode 0x21F3] arrowMidX arrowBot arrowMidX arrowTop
|
|
|
|
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] arrowDiagSB arrowDiagBot arrowDiagRSB arrowDiagTop
|
|
arrow [ThickArrowShape 'black'] [MangleName 'uni2B09'] [MangleUnicode 0x2B09] arrowDiagRSB arrowDiagBot arrowDiagSB arrowDiagTop
|
|
arrow [ThickArrowShape 'black'] [MangleName 'uni2B0A'] [MangleUnicode 0x2B0A] arrowDiagSB arrowDiagTop arrowDiagRSB arrowDiagBot
|
|
arrow [ThickArrowShape 'black'] [MangleName 'uni2B0B'] [MangleUnicode 0x2B0B] arrowDiagRSB arrowDiagTop arrowDiagSB arrowDiagBot
|
|
DoubleArrow [ThickArrowShape 'black'] [MangleName 'uni2B0C'] [MangleUnicode 0x2B0C] arrowSB symbolMid arrowRSB symbolMid
|
|
DoubleArrow [ThickArrowShape 'black'] [MangleName 'uni2B0D'] [MangleUnicode 0x2B0D] arrowMidX arrowBot arrowMidX arrowTop
|
|
|
|
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'] [refer-glyph : MangleName 'arrowleftK'] [VBar arrowSB (symbolMid - arrowSize) (symbolMid + arrowSize) fine] [into-unicode : MangleUnicode 0x21E4]
|
|
composite [MangleName 'arrowbarright'] [refer-glyph : MangleName 'arrowrightK'] [VBar arrowRSB (symbolMid - arrowSize) (symbolMid + arrowSize) fine] [into-unicode : MangleUnicode 0x21E5]
|
|
composite [MangleName 'arrowbarup'] [refer-glyph : MangleName 'arrowupK'] [HBar (arrowMidX - arrowSize) (arrowMidX + arrowSize) arrowTop fine] [into-unicode : MangleUnicode 0x2912]
|
|
composite [MangleName 'arrowbardown'] [refer-glyph : MangleName 'arrowdownK'] [HBar (arrowMidX - arrowSize) (arrowMidX + arrowSize) arrowBot fine] [into-unicode : MangleUnicode 0x2913]
|
|
composite [MangleName 'bararrowleft'] [refer-glyph : MangleName 'arrowleftSK'] [VBar arrowRSB (symbolMid - arrowSize) (symbolMid + arrowSize) fine] [into-unicode : MangleUnicode 0x21A4]
|
|
composite [MangleName 'bararrowright'] [refer-glyph : MangleName 'arrowrightSK'] [VBar arrowSB (symbolMid - arrowSize) (symbolMid + arrowSize) fine] [into-unicode : MangleUnicode 0x21A6]
|
|
composite [MangleName 'bararrowup'] [refer-glyph : MangleName 'arrowupSK'] [HBar (arrowMidX - arrowSize) (arrowMidX + arrowSize) arrowBot fine] [into-unicode : MangleUnicode 0x21A5]
|
|
composite [MangleName 'bararrowdown'] [refer-glyph : MangleName 'arrowdownSK'] [HBar (arrowMidX - arrowSize) (arrowMidX + arrowSize) arrowTop fine] [into-unicode : MangleUnicode 0x21A7]
|
|
|
|
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] arrowDiagRSB arrowDiagBot arrowDiagSB arrowDiagTop
|
|
arrow [DoubleArrowShape dasw] [MangleName 'dblarrowupright'] [MangleUnicode 0x21D7] arrowDiagSB arrowDiagBot arrowDiagRSB arrowDiagTop
|
|
arrow [DoubleArrowShape dasw] [MangleName 'dblarrowdownright'] [MangleUnicode 0x21D8] arrowDiagSB arrowDiagTop arrowDiagRSB arrowDiagBot
|
|
arrow [DoubleArrowShape dasw] [MangleName 'dblarrowdownleft'] [MangleUnicode 0x21D9] arrowDiagRSB arrowDiagTop arrowDiagSB arrowDiagBot
|
|
|
|
DoubleArrow ArrowShape [MangleName 'arrowleftright'] [MangleUnicode 0x2194] arrowSB symbolMid arrowRSB symbolMid
|
|
DoubleArrow ArrowShape [MangleName 'arrowupdown'] [MangleUnicode 0x2195] arrowMidX arrowTop arrowMidX arrowBot
|
|
DoubleArrow ArrowShape [MangleName 'arrowupdown.bottomSpaceLeft'] nothing arrowMidX arrowTop arrowMidX (arrowBot + OperatorStroke * 1.5)
|
|
DoubleArrow ArrowShape [MangleName 'arrowupleftdownright'] [MangleUnicode 0x2921] arrowDiagSB arrowDiagTop arrowDiagRSB arrowDiagBot
|
|
DoubleArrow ArrowShape [MangleName 'arrowuprightdownleft'] [MangleUnicode 0x2922] arrowDiagRSB arrowDiagTop arrowDiagSB arrowDiagBot
|
|
|
|
composite [MangleName 'arrowUpDownBar'] [refer-glyph : MangleName 'arrowupdown.bottomSpaceLeft'] [HBarBottom arrowSB arrowRSB arrowBot OperatorStroke] [into-unicode : MangleUnicode 0x21A8]
|
|
|
|
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'] [refer-glyph : MangleName 'arrowleft'] [refer-glyph 'arrSlashOver'] [into-unicode : MangleUnicode 0x219A]
|
|
composite [MangleName 'uni219B'] [refer-glyph : MangleName 'arrowright'] [refer-glyph 'arrSlashOver'] [into-unicode : MangleUnicode 0x219B]
|
|
composite [MangleName 'uni21AE'] [refer-glyph : MangleName 'arrowleftright'] [refer-glyph 'arrSlashOver'] [into-unicode : MangleUnicode 0x21AE]
|
|
composite [MangleName 'uni21F7'] [refer-glyph : MangleName 'arrowleft'] [refer-glyph 'arrVStrokeOver'] [into-unicode : MangleUnicode 0x21F7]
|
|
composite [MangleName 'uni21F8'] [refer-glyph : MangleName 'arrowright'] [refer-glyph 'arrVStrokeOver'] [into-unicode : MangleUnicode 0x21F8]
|
|
composite [MangleName 'uni21F9'] [refer-glyph : MangleName 'arrowleftright'] [refer-glyph 'arrVStrokeOver'] [into-unicode : MangleUnicode 0x21F9]
|
|
composite [MangleName 'uni21FA'] [refer-glyph : MangleName 'arrowleft'] [refer-glyph 'arrDblVStrokeOver'] [into-unicode : MangleUnicode 0x21FA]
|
|
composite [MangleName 'uni21FB'] [refer-glyph : MangleName 'arrowright'] [refer-glyph 'arrDblVStrokeOver'] [into-unicode : MangleUnicode 0x21FB]
|
|
composite [MangleName 'uni21FC'] [refer-glyph : MangleName 'arrowleftright'] [refer-glyph 'arrDblVStrokeOver'] [into-unicode : MangleUnicode 0x21FC]
|
|
composite [MangleName 'uni21CD'] [refer-glyph : MangleName 'dblarrowleft'] [refer-glyph 'arrSlashOver'] [into-unicode : MangleUnicode 0x21CD]
|
|
composite [MangleName 'uni21CE'] [refer-glyph : MangleName 'dblarrowleftright'] [refer-glyph 'arrSlashOver'] [into-unicode : MangleUnicode 0x21CE]
|
|
composite [MangleName 'uni21CF'] [refer-glyph : MangleName 'dblarrowright'] [refer-glyph 'arrSlashOver'] [into-unicode : MangleUnicode 0x21CF]
|
|
|
|
composite [MangleName 'uni2908'] [refer-glyph : MangleName 'arrowdown'] [refer-glyph 'arrHStrokeOver'] [into-unicode : MangleUnicode 0x2908]
|
|
composite [MangleName 'uni2909'] [refer-glyph : MangleName 'arrowup'] [refer-glyph 'arrHStrokeOver'] [into-unicode : MangleUnicode 0x2909]
|
|
composite [MangleName 'uni21DF'] [refer-glyph : MangleName 'arrowdown'] [refer-glyph 'arrDblHStrokeOver'] [into-unicode : MangleUnicode 0x21DF]
|
|
composite [MangleName 'uni21DE'] [refer-glyph : MangleName 'arrowup'] [refer-glyph 'arrDblHStrokeOver'] [into-unicode : MangleUnicode 0x21DE]
|
|
|
|
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 'arrowbarleft'] [MangleName 'arrowbarright'] (arrowSize * 1.75)
|
|
|
|
do "Legacy computing arrows"
|
|
define bodyWidth : Math.min arrowWidth (arrowHeight * 0.6)
|
|
sketch
|
|
set-width MosaicWidth
|
|
define x1 : arrowMidX + bodyWidth / 2
|
|
define y1 : arrowTop - bodyWidth
|
|
define x2 : arrowMidX - bodyWidth / 2
|
|
define y2 : arrowTop + 0
|
|
include : ArrowHead x1 y1 x2 y2
|
|
include : intersection
|
|
Rect arrowTop arrowBot 0 x1
|
|
ArrowBar x1 y1 x2 y2 halfstroke
|
|
include : intersection
|
|
VBarRight x1 arrowBot arrowTop (halfstroke * 2)
|
|
spiro-outline
|
|
corner x1 y1
|
|
corner x2 y2
|
|
corner x2 arrowBot
|
|
corner x1 arrowBot
|
|
save [MangleName 'arrowUpThenNW'] [MangleUnicode 0x1F8B0]
|
|
|
|
sketch
|
|
set-width MosaicWidth
|
|
define x1 : arrowMidX + bodyWidth / 2
|
|
define y1 : arrowBot + bodyWidth
|
|
define x2 : arrowMidX - bodyWidth / 2
|
|
define y2 : arrowBot + 0
|
|
include : ArrowHead x1 y1 x2 y2
|
|
include : intersection
|
|
Rect [mix y1 y2 (1 / 2)] arrowBot 0 x1
|
|
ArrowBar x1 y1 x2 y2 halfstroke
|
|
include : intersection
|
|
Rect [mix y1 y2 1] arrowTop x2 x1
|
|
dispiro
|
|
widths halfstroke halfstroke
|
|
flat x2 y2
|
|
curl [mix x2 x1 (2/3)] [mix y2 y1 (2/3)]
|
|
g4.up.mid
|
|
x1 - halfstroke * HVContrast
|
|
[mix y2 (arrowTop - halfstroke) 0.75] - halfstroke * 0.6
|
|
arcvh
|
|
flat [mix x2 (x1 - halfstroke * HVContrast) 0.5] (arrowTop - halfstroke)
|
|
curl x2 (arrowTop - halfstroke) [heading Leftward]
|
|
save [MangleName 'arrowRightThenCurlbSW'] [MangleUnicode 0x1F8B1]
|
|
|
|
sketch
|
|
set-width MosaicWidth
|
|
define totalHeight : bodyWidth * 1.2 + OperatorStroke
|
|
define x1 : arrowMidX + bodyWidth / 2
|
|
define y1 : symbolMid - totalHeight / 2
|
|
define x2 : arrowMidX - bodyWidth / 2
|
|
define y2 : symbolMid - totalHeight / 2 + bodyWidth
|
|
|
|
include : ArrowShape x1 y1 x2 y2
|
|
include : HBar x1 x2 (symbolMid + totalHeight / 2) OperatorStroke
|
|
|
|
save [MangleName 'uni21B8'] [MangleUnicode 0x21B8]
|
|
|
|
|
|
if (MosaicWidth == WideWidth1) : set exportArrowShape ArrowShape
|
|
|
|
alias 'longArrowLeft' 0x27F5 'arrowleft.WWID'
|
|
alias 'longArrowRight' 0x27F6 'arrowright.WWID'
|
|
|