Adding/Harmonizing some symbols with small circles (#2618)

* circles

* more circles

* accidentals

* doc

* optimize marriage
This commit is contained in:
Logo 2024-12-19 14:07:06 +08:00 committed by GitHub
parent 02ef0538bf
commit 4b3e3f8b18
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 382 additions and 261 deletions

View file

@ -91,6 +91,9 @@
- CYRILLIC SUBSCRIPT SMALL LETTER EF (`U+1E060`).
- CYRILLIC SUBSCRIPT SMALL LETTER SHA (`U+1E064`).
* Add characters:
- MARRIAGE SYMBOL (`U+26AD`).
- DIVORCE SYMBOL (`U+26AE`).
- UNMARRIED PARTNERSHIP SYMBOL (`U+26AF`).
- LEFT OUTER JOIN (`U+27D5`) ... FULL OUTER JOIN (`U+27D7`).
- Z NOTATION LEFT BINDING BRACKET (`U+2989`).
- Z NOTATION RIGHT BINDING BRACKET (`U+298A`).
@ -111,5 +114,7 @@
- CLOSED SUBSET (`U+2ACF`) ... CLOSED SUPERSET OR EQUAL TO (`U+2AD2`).
- ANTICLOCKWISE TRIANGLE-HEADED RIGHT U-SHAPED ARROW (`U+2B8C`) ... FOUR CORNER ARROWS CIRCLING ANTICLOCKWISE (`U+2B94`).
- DOWNWARDS TRIANGLE-HEADED ARROW WITH LONG TIP LEFTWARDS (`U+2BA0`) ... RIGHTWARDS TRIANGLE-HEADED ARROW WITH LONG TIP DOWNWARDS (`U+2BA7`).
- UNITED SYMBOL (`U+2BFA`) ... PASSED SYMBOL (`U+2BFD`).
- MUSICAL SYMBOL FLAT UP (`U+1D12C`) ... MUSICAL SYMBOL SHARP DOWN (`U+1D131`).
- LATIN SMALL LETTER DEZH DIGRAPH WITH RETROFLEX HOOK (`U+1DF19`).
- LATIN SMALL LETTER TESH DIGRAPH WITH RETROFLEX HOOK (`U+1DF1C`).

View file

@ -203,8 +203,8 @@ export : define [calculateMetrics para] : begin
TBalance2 RBalance RBalance2 FBalance OneBalance WideWidth0 WideWidth1 WideWidth2 WideWidth3
WideWidth4 EssUpper EssLower EssQuestion HalfStroke RightSB Middle DotRadius PeriodRadius
SideJut ArchDepthA ArchDepthB SmallArchDepthA SmallArchDepthB CorrectionOMidX CorrectionOMidS
compositeBaseAnchors AdviceStroke AdviceStroke2 OverlayStroke OperatorStroke GeometryStroke
ShoulderFine AdviceGlottalStopArchDepth StrokeWidthBlend ArchDepthAOf ArchDepthBOf
compositeBaseAnchors AdviceStroke AdviceStroke2 AdviceStrokeInSpace OverlayStroke OperatorStroke
GeometryStroke ShoulderFine AdviceGlottalStopArchDepth StrokeWidthBlend ArchDepthAOf ArchDepthBOf
SmoothAdjust MidJutSide MidJutCenter YSmoothMidR YSmoothMidL HSwToV NarrowUnicodeT
WideUnicodeT VERY-FAR TINY]

View file

@ -386,9 +386,9 @@ define-macro glyph-block : syntax-rules
FBalance OneBalance WideWidth0 WideWidth1 WideWidth2 WideWidth3 WideWidth4 EssUpper
EssLower EssQuestion HalfStroke RightSB Middle DotRadius PeriodRadius SideJut
ArchDepthA ArchDepthB SmallArchDepthA SmallArchDepthB CorrectionOMidX CorrectionOMidS
AdviceStroke AdviceStroke2 OverlayStroke OperatorStroke GeometryStroke ShoulderFine
AdviceGlottalStopArchDepth StrokeWidthBlend ArchDepthAOf ArchDepthBOf SmoothAdjust
MidJutSide MidJutCenter compositeBaseAnchors YSmoothMidR YSmoothMidL HSwToV
AdviceStroke AdviceStroke2 AdviceStrokeInSpace OverlayStroke OperatorStroke GeometryStroke
ShoulderFine AdviceGlottalStopArchDepth StrokeWidthBlend ArchDepthAOf ArchDepthBOf
SmoothAdjust MidJutSide MidJutCenter compositeBaseAnchors YSmoothMidR YSmoothMidL HSwToV
NarrowUnicodeT WideUnicodeT VERY-FAR TINY]
define spiroFnImports `[g4 g2 corner flat curl virt close end straight g2c cg2 flatc ccurl

View file

@ -37,6 +37,7 @@ glyph-block Symbol-Arrow : for-width-kinds WideWidth1
define arrowDiagBot : mix arrowMidX arrowBot diagPropY
define arrowDiagTop : mix arrowMidX arrowTop diagPropY
# Arrow Bars
define [ArrowBar x1 y1 x2 y2 halfSw w _offset] : begin
return : PointingTo x1 y1 x2 y2 : lambda [mag] : begin
local p : (mag - [fallback _offset : o + halfSw * [fallback w 1.1]]) / mag
@ -90,6 +91,47 @@ glyph-block Symbol-Arrow : for-width-kinds WideWidth1
flat (mag - [Math.abs s] / 2) 0 [widths.center (halfSw * 2)]
curl [mix mag 0 p] 0
define [ArrowBarMaskOut d] : spiro-outline
corner O 0
corner (2 * d + O) (2 * d)
corner (-2 * d + O) (2 * d)
corner (-2 * d + O) (-2 * d)
corner (2 * d + O) (-2 * d)
define [DoubleArrowBarShape w x1 y1 x2 y2] : begin
return : PointingTo x1 y1 x2 y2 : lambda [mag] : begin
local fine : Math.min (w / 3) arrowSw
local coFine : w / 2 - fine / 2
return : difference
union
dispiro [widths.center fine] [flat 0 (+coFine)] [curl mag (+coFine)]
dispiro [widths.center fine] [flat 0 (-coFine)] [curl mag (-coFine)]
ArrowBarMaskOut coFine
define [TripleArrowBarShape w x1 y1 x2 y2] : begin
return : PointingTo x1 y1 x2 y2 : lambda [mag] : begin
local fine : Math.min (w / 4) arrowSw
local coFine : w / 2 - fine / 2
return : difference
union
dispiro [widths.center fine] [flat 0 (+coFine)] [curl mag (+coFine)]
dispiro [widths.center fine] [flat 0 0] [curl mag 0]
dispiro [widths.center fine] [flat 0 (-coFine)] [curl mag (-coFine)]
ArrowBarMaskOut coFine
define [QuadrupleArrowBarShape w x1 y1 x2 y2] : begin
return : PointingTo x1 y1 x2 y2 : lambda [mag] : begin
local fine : Math.min (w / 6.4) arrowSw
local coFine : w / 2 - fine / 2
return : difference
union
dispiro [widths.center fine] [flat 0 (+coFine)] [curl mag (+coFine)]
dispiro [widths.center fine] [flat 0 (+coFine / 3)] [curl mag (+coFine / 3)]
dispiro [widths.center fine] [flat 0 (-coFine / 3)] [curl mag (-coFine / 3)]
dispiro [widths.center fine] [flat 0 (-coFine)] [curl mag (-coFine)]
ArrowBarMaskOut coFine
# Arrow Heads/Tails
define [ArrowHead x1 y1 x2 y2 _size] : union
LHSHalfArrowHead x1 y1 x2 y2 0 _size
RHSHalfArrowHead x1 y1 x2 y2 0 _size
@ -171,14 +213,20 @@ glyph-block Symbol-Arrow : for-width-kinds WideWidth1
corner length (-width + o)
Rect width (-width) (0.6 * length - 0.5 * sw) (0.6 * length + 0.5 * sw)
define [BarbArrowHead x1 y1 x2 y2 width length thickness] : new-glyph : glyph-proc
include : PointingTo x1 y1 x2 y2 : lambda [mag] : begin
spiro-outline
corner o 0
corner length (width - o)
corner (length + thickness) (width - o)
corner (o + thickness) 0
corner (length + thickness) (-width + o)
corner length (-width + o)
define [RectangleArrowTail x1 y1 x2 y2 width _length _width2] : begin
local length : fallback _length width
return : new-glyph : PointingTo x1 y1 x2 y2 : lambda [mag] : Rect width (-[fallback _width2 width]) 0 length
define [ArrowShape x1 y1 x2 y2 size] : glyph-proc
include : ArrowHead x1 y1 x2 y2 size
include : ArrowBar x1 y1 x2 y2 halfArrowSw
define [ArrowTailBarShape x1 y1 x2 y2 size sw] : begin
return : PointingTo x1 y1 x2 y2 : lambda [mag] : begin
dispiro
@ -186,28 +234,39 @@ glyph-block Symbol-Arrow : for-width-kinds WideWidth1
flat mag size
curl mag (-size)
define [ArrowFromBarShape x1 y1 x2 y2 size] : glyph-proc
# Arrow Shapes
define [ArrowShape x1 y1 x2 y2 size _halfSw] : glyph-proc
local halfSw : fallback _halfSw halfArrowSw
include : ArrowHead x1 y1 x2 y2 size
include : ArrowBar x1 y1 x2 y2 halfSw
define [ArrowFromBarShape x1 y1 x2 y2 size _halfSw] : glyph-proc
local halfSw : fallback _halfSw halfArrowSw
local width : Math.abs (x1 - x2)
local height : Math.abs (y1 - y2)
local barShrink : size * [Math.min (width / height) (height / width)]
local p : barShrink / [Math.hypot width height]
include : ArrowHead x1 y1 x2 y2 size
include : ArrowBar [mix x1 x2 p] [mix y1 y2 p] x2 y2 halfArrowSw
include : ArrowBar [mix x1 x2 p] [mix y1 y2 p] x2 y2 halfSw
include : ArrowTailBarShape [mix x1 x2 p] [mix y1 y2 p] x2 y2 size fine
define [ThinArrowShape x1 y1 x2 y2 size] : glyph-proc
define [ThinArrowShape x1 y1 x2 y2 size _halfSw] : glyph-proc
local halfSw : fallback _halfSw halfArrowSw
include : ArrowHead x1 y1 x2 y2 size
include : ArrowBar x1 y1 x2 y2 (0.5 * [mix fine terminal 0.5])
define [TrigArrowShape x1 y1 x2 y2 size] : glyph-proc
define [TrigArrowShape x1 y1 x2 y2 size _halfSw] : glyph-proc
local halfSw : fallback _halfSw halfArrowSw
include : TriangleArrowHead x1 y1 x2 y2 (0.75 * size)
include : ArrowBar x1 y1 x2 y2 halfArrowSw
include : ArrowBar x1 y1 x2 y2 halfSw
define [WeightedTrigArrowShape sw w h] : lambda [x1 y1 x2 y2 size] : glyph-proc
define [WeightedTrigArrowShape sw w h] : lambda [x1 y1 x2 y2 size _halfSw] : glyph-proc
local halfSw : fallback _halfSw halfArrowSw
include : TriangleArrowHead x1 y1 x2 y2 (0.75 * w * size) (0.75 * [fallback h w] * size)
include : ArrowBar x1 y1 x2 y2 (sw / 2) 0 (0.75 * [fallback h w] * size)
define [OpenArrowShape x1 y1 x2 y2 size] : glyph-proc
define [OpenArrowShape x1 y1 x2 y2 size _halfSw] : glyph-proc
local halfSw : fallback _halfSw halfArrowSw
local fine : Math.min [AdviceStroke 5] (size * 0.75 / 3)
local mag : Math.hypot (y2 - y1) (x2 - x1)
local p : (mag - fine) / mag
@ -221,11 +280,12 @@ glyph-block Symbol-Arrow : for-width-kinds WideWidth1
include : difference
union
ArrowBar x1 y1 x2 y2 halfArrowSw
ArrowBar x1 y1 x2 y2 halfSw
TriangleArrowHead x1 y1 x2 y2 (0.75 * size)
TriangleArrowHead x1a y1a x2a y2a (0.75 * size - innerHeaderLengthShrink)
define [DoubleTrigArrowShape x1 y1 x2 y2 size] : glyph-proc
define [DoubleTrigArrowShape x1 y1 x2 y2 size _halfSw] : glyph-proc
local halfSw : fallback _halfSw halfArrowSw
local mag : Math.hypot (y2 - y1) (x2 - x1)
local p : (mag - 0.75 * size + o) / mag
local x3 : mix x1 x2 p
@ -233,30 +293,94 @@ glyph-block Symbol-Arrow : for-width-kinds WideWidth1
include : TriangleArrowHead x1 y1 x2 y2 (0.75 * size)
include : TriangleArrowHead x1 y1 x3 y3 (0.75 * size)
include : ArrowBar x1 y1 x3 y3 halfArrowSw
include : ArrowBar x1 y1 x3 y3 halfSw
define [SsArrowShape x1 y1 x2 y2 size] : glyph-proc
define [SsArrowShape x1 y1 x2 y2 size _halfSw] : glyph-proc
local halfSw : fallback _halfSw halfArrowSw
include : SsArrowHead x1 y1 x2 y2 size
include : ArrowBar x1 y1 x2 y2 halfArrowSw
include : ArrowBar x1 y1 x2 y2 halfSw
define [DashArrowShape x1 y1 x2 y2 size] : glyph-proc
define [DashArrowShape x1 y1 x2 y2 size _halfSw] : glyph-proc
local halfSw : fallback _halfSw halfArrowSw
local gap : AdviceStroke 6
include : ArrowHead x1 y1 x2 y2 size
include : DashArrowBar x1 y1 x2 y2 halfArrowSw gap [Math.max (Width / 5) (gap * 3)]
include : DashArrowBar x1 y1 x2 y2 halfSw gap [Math.max (Width / 5) (gap * 3)]
define [TrigDashArrowShape x1 y1 x2 y2 size] : glyph-proc
define [TrigDashArrowShape x1 y1 x2 y2 size _halfSw] : glyph-proc
local halfSw : fallback _halfSw halfArrowSw
local gap : AdviceStroke 6
include : TriangleArrowHead x1 y1 x2 y2 (0.75 * size)
include : DashArrowBar x1 y1 x2 y2 halfArrowSw gap [Math.max (Width / 5) (gap * 3)]
include : DashArrowBar x1 y1 x2 y2 halfSw gap [Math.max (Width / 5) (gap * 3)]
define [HookArrowShape mul] : lambda [x1 y1 x2 y2 size] : glyph-proc
define [HookArrowShape mul] : lambda [x1 y1 x2 y2 size _halfSw] : glyph-proc
local halfSw : fallback _halfSw halfArrowSw
include : ArrowHead x1 y1 x2 y2 size
include : HookArrowBar x1 y1 x2 y2 halfArrowSw (size * mul)
include : HookArrowBar x1 y1 x2 y2 halfSw (size * mul)
define [LoopArrowShape mul] : lambda [x1 y1 x2 y2 size] : glyph-proc
define [LoopArrowShape mul] : lambda [x1 y1 x2 y2 size _halfSw] : glyph-proc
local halfSw : fallback _halfSw halfArrowSw
include : ArrowHead x1 y1 x2 y2 size
include : LoopArrowBar x1 y1 x2 y2 halfArrowSw (size * mul)
include : LoopArrowBar x1 y1 x2 y2 halfSw (size * mul)
define [BarbArrowShape k thickness] : lambda [x1 y1 x2 y2] : begin
local headLen : MosaicUnitWidth * [Math.sqrt MosaicWidthScalar] * k
local halfBarWidth : thickness / 2
return : union
BarbArrowHead x1 y1 x2 y2 headLen headLen (thickness * 1.125)
ArrowBar x1 y1 x2 y2 halfBarWidth 2
define [HalfArrowShape side] : lambda [x1 y1 x2 y2 size _halfSw] : glyph-proc
local halfSw : fallback _halfSw halfArrowSw
include : side x1 y1 x2 y2 arrowSw size
include : ArrowBar x1 y1 x2 y2 halfSw 1.75
define [DoubleArrowShape w] : lambda [x1 y1 x2 y2 size _halfSw] : glyph-proc
local halfSw : fallback _halfSw halfArrowSw
include : ArrowHead x1 y1 x2 y2 size
include : DoubleArrowBarShape w x1 y1 x2 y2
define [TripleArrowShape w] : lambda [x1 y1 x2 y2 size _halfSw] : glyph-proc
local halfSw : fallback _halfSw halfArrowSw
include : ArrowHead x1 y1 x2 y2 size
include : TripleArrowBarShape w x1 y1 x2 y2
define [QuadrupleArrowShape w] : lambda [x1 y1 x2 y2 size _halfSw] : glyph-proc
local halfSw : fallback _halfSw halfArrowSw
include : ArrowHead x1 y1 x2 y2 size
include : QuadrupleArrowBarShape w x1 y1 x2 y2
define [dhArrowShape x1 y1 x2 y2 size _halfSw] : glyph-proc
local halfSw : fallback _halfSw halfArrowSw
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 _halfSw] : glyph-proc
local halfSw : fallback _halfSw halfArrowSw
local mag : Math.hypot (y2 - y1) (x2 - x1)
local p1 : (size - o - halfSw * 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 [CounterArrowShape x1 y1 x2 y2 size _halfSw] : glyph-proc
local halfSw : fallback _halfSw halfArrowSw
local mag : Math.hypot (y2 - y1) (x2 - x1)
local p1 : (size - o - halfSw * 1.1) / mag
local p2 : size / mag
include : ArrowBar [mix x1 x2 p1] [mix y1 y2 p1] x2 y2 halfSw
include : ArrowHead x1 y1 [mix x1 x2 p2] [mix y1 y2 p2] size
define [dtCounterArrowShape x1 y1 x2 y2 size _halfSw] : glyph-proc
local halfSw : fallback _halfSw halfArrowSw
local mag : Math.hypot (y2 - y1) (x2 - x1)
local p : (2 * size + o) / mag
include : CounterArrowShape x1 y1 x2 y2 size
include : ArrowHead x1 y1 [mix x1 x2 p] [mix y1 y2 p] size
# Special Arrows
define [ThickArrowShape color] : lambda [x1 y1 x2 y2] : begin
local headLen : MosaicUnitWidth * [Math.sqrt MosaicWidthScalar] * 0.4
local halfBarWidth : headLen / 3
@ -408,113 +532,14 @@ glyph-block Symbol-Arrow : for-width-kinds WideWidth1
Bar x1a y1a x2a y2a sw
Head x1a y1a x2a y2a sw (pHalf * headLen) (pHalf * headWidth)
define [BarbArrowHead x1 y1 x2 y2 width length thickness] : new-glyph : glyph-proc
include : PointingTo x1 y1 x2 y2 : lambda [mag] : begin
spiro-outline
corner o 0
corner length (width - o)
corner (length + thickness) (width - o)
corner (o + thickness) 0
corner (length + thickness) (-width + o)
corner length (-width + o)
define [BarbArrowShape k thickness] : lambda [x1 y1 x2 y2] : begin
local headLen : MosaicUnitWidth * [Math.sqrt MosaicWidthScalar] * k
local halfBarWidth : thickness / 2
return : union
BarbArrowHead x1 y1 x2 y2 headLen headLen (thickness * 1.125)
ArrowBar x1 y1 x2 y2 halfBarWidth 2
define [HalfArrowShape side] : lambda [x1 y1 x2 y2 size] : glyph-proc
include : side x1 y1 x2 y2 arrowSw size
include : ArrowBar x1 y1 x2 y2 halfArrowSw 1.75
define [ArrowBarMaskOut d] : spiro-outline
corner O 0
corner (2 * d + O) (2 * d)
corner (-2 * d + O) (2 * d)
corner (-2 * d + O) (-2 * d)
corner (2 * d + O) (-2 * d)
define [DoubleArrowBarShape w x1 y1 x2 y2] : begin
return : PointingTo x1 y1 x2 y2 : lambda [mag] : begin
local fine : Math.min (w / 3) arrowSw
local coFine : w / 2 - fine / 2
return : difference
union
dispiro [widths.center fine] [flat 0 (+coFine)] [curl mag (+coFine)]
dispiro [widths.center fine] [flat 0 (-coFine)] [curl mag (-coFine)]
ArrowBarMaskOut coFine
define [DoubleArrowShape w] : lambda [x1 y1 x2 y2 size] : glyph-proc
include : ArrowHead x1 y1 x2 y2 size
include : DoubleArrowBarShape w x1 y1 x2 y2
define [TripleArrowBarShape w x1 y1 x2 y2] : begin
return : PointingTo x1 y1 x2 y2 : lambda [mag] : begin
local fine : Math.min (w / 4) arrowSw
local coFine : w / 2 - fine / 2
return : difference
union
dispiro [widths.center fine] [flat 0 (+coFine)] [curl mag (+coFine)]
dispiro [widths.center fine] [flat 0 0] [curl mag 0]
dispiro [widths.center fine] [flat 0 (-coFine)] [curl mag (-coFine)]
ArrowBarMaskOut coFine
define [TripleArrowShape w] : lambda [x1 y1 x2 y2 size] : glyph-proc
include : ArrowHead x1 y1 x2 y2 size
include : TripleArrowBarShape w x1 y1 x2 y2
define [QuadrupleArrowBarShape w x1 y1 x2 y2] : begin
return : PointingTo x1 y1 x2 y2 : lambda [mag] : begin
local fine : Math.min (w / 6.4) arrowSw
local coFine : w / 2 - fine / 2
return : difference
union
dispiro [widths.center fine] [flat 0 (+coFine)] [curl mag (+coFine)]
dispiro [widths.center fine] [flat 0 (+coFine / 3)] [curl mag (+coFine / 3)]
dispiro [widths.center fine] [flat 0 (-coFine / 3)] [curl mag (-coFine / 3)]
dispiro [widths.center fine] [flat 0 (-coFine)] [curl mag (-coFine)]
ArrowBarMaskOut coFine
define [QuadrupleArrowShape w] : lambda [x1 y1 x2 y2 size] : glyph-proc
include : ArrowHead x1 y1 x2 y2 size
include : QuadrupleArrowBarShape w x1 y1 x2 y2
define [dhArrowShape x1 y1 x2 y2 size] : glyph-proc
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-proc
local mag : Math.hypot (y2 - y1) (x2 - x1)
local p1 : (size - o - halfArrowSw * 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 [CounterArrowShape x1 y1 x2 y2 size] : glyph-proc
local mag : Math.hypot (y2 - y1) (x2 - x1)
local p1 : (size - o - halfArrowSw * 1.1) / mag
local p2 : size / mag
include : ArrowBar [mix x1 x2 p1] [mix y1 y2 p1] x2 y2 halfArrowSw
include : ArrowHead x1 y1 [mix x1 x2 p2] [mix y1 y2 p2] size
define [dtCounterArrowShape x1 y1 x2 y2 size] : glyph-proc
local mag : Math.hypot (y2 - y1) (x2 - x1)
local p : (2 * size + o) / mag
include : CounterArrowShape x1 y1 x2 y2 size
include : ArrowHead x1 y1 [mix x1 x2 p] [mix y1 y2 p] size
# MkArrow Functions
define [MkArrow shape id unicode x1 y1 x2 y2 width headSize]
create-glyph id unicode : glyph-proc
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 [fallback headSize arrowHeadSize]
define [DoubleArrow shape id unicode x1 y1 x2 y2]
define [MkDoubleArrow shape id unicode x1 y1 x2 y2]
create-glyph id unicode : glyph-proc
set-width MosaicWidth
set-base-anchor 'slash' [mix x1 x2 (1/2)] [mix y1 y2 (1/2)]
@ -523,7 +548,7 @@ glyph-block Symbol-Arrow : for-width-kinds WideWidth1
include : shape xm ym x1 y1 arrowHeadSize
include : shape xm ym x2 y2 arrowHeadSize
define [DoubleArrow2 shape1 shape2 id unicode x1 y1 x2 y2]
define [MkDoubleArrow2 shape1 shape2 id unicode x1 y1 x2 y2]
create-glyph id unicode : glyph-proc
set-width MosaicWidth
set-base-anchor 'slash' [mix x1 x2 (1/2)] [mix y1 y2 (1/2)]
@ -878,16 +903,16 @@ glyph-block Symbol-Arrow : for-width-kinds WideWidth1
MkArrow [HalfArrowShape RHSHalfArrowHead] [MangleName 'arrowDownHR'] [MangleUnicode 0x21C3] arrowMidX arrowTop arrowMidX arrowBot
do "Double Half-head Arrows (different side)"
DoubleArrow [HalfArrowShape RHSHalfArrowHead] [MangleName 'arrowLeftRightHR'] [MangleUnicode 0x294A] arrowSB SymbolMid arrowRSB SymbolMid
DoubleArrow [HalfArrowShape LHSHalfArrowHead] [MangleName 'arrowLeftRightHL'] [MangleUnicode 0x294B] arrowSB SymbolMid arrowRSB SymbolMid
DoubleArrow [HalfArrowShape RHSHalfArrowHead] [MangleName 'arrowUpDownHR'] [MangleUnicode 0x294C] arrowMidX arrowTop arrowMidX arrowBot
DoubleArrow [HalfArrowShape LHSHalfArrowHead] [MangleName 'arrowUpDownHL'] [MangleUnicode 0x294D] arrowMidX arrowTop arrowMidX arrowBot
MkDoubleArrow [HalfArrowShape RHSHalfArrowHead] [MangleName 'arrowLeftRightHR'] [MangleUnicode 0x294A] arrowSB SymbolMid arrowRSB SymbolMid
MkDoubleArrow [HalfArrowShape LHSHalfArrowHead] [MangleName 'arrowLeftRightHL'] [MangleUnicode 0x294B] arrowSB SymbolMid arrowRSB SymbolMid
MkDoubleArrow [HalfArrowShape RHSHalfArrowHead] [MangleName 'arrowUpDownHR'] [MangleUnicode 0x294C] arrowMidX arrowTop arrowMidX arrowBot
MkDoubleArrow [HalfArrowShape LHSHalfArrowHead] [MangleName 'arrowUpDownHL'] [MangleUnicode 0x294D] arrowMidX arrowTop arrowMidX arrowBot
do "Double Half-head Arrows (same side)"
DoubleArrow2 [HalfArrowShape RHSHalfArrowHead] [HalfArrowShape LHSHalfArrowHead] [MangleName 'arrowLeftHRRightHL'] [MangleUnicode 0x294E] arrowSB SymbolMid arrowRSB SymbolMid
DoubleArrow2 [HalfArrowShape RHSHalfArrowHead] [HalfArrowShape LHSHalfArrowHead] [MangleName 'arrowUpHRDownHL'] [MangleUnicode 0x294F] arrowMidX arrowTop arrowMidX arrowBot
DoubleArrow2 [HalfArrowShape LHSHalfArrowHead] [HalfArrowShape RHSHalfArrowHead] [MangleName 'arrowLeftHLRightHR'] [MangleUnicode 0x2950] arrowSB SymbolMid arrowRSB SymbolMid
DoubleArrow2 [HalfArrowShape LHSHalfArrowHead] [HalfArrowShape RHSHalfArrowHead] [MangleName 'arrowUpHLDownHR'] [MangleUnicode 0x2951] arrowMidX arrowTop arrowMidX arrowBot
MkDoubleArrow2 [HalfArrowShape RHSHalfArrowHead] [HalfArrowShape LHSHalfArrowHead] [MangleName 'arrowLeftHRRightHL'] [MangleUnicode 0x294E] arrowSB SymbolMid arrowRSB SymbolMid
MkDoubleArrow2 [HalfArrowShape RHSHalfArrowHead] [HalfArrowShape LHSHalfArrowHead] [MangleName 'arrowUpHRDownHL'] [MangleUnicode 0x294F] arrowMidX arrowTop arrowMidX arrowBot
MkDoubleArrow2 [HalfArrowShape LHSHalfArrowHead] [HalfArrowShape RHSHalfArrowHead] [MangleName 'arrowLeftHLRightHR'] [MangleUnicode 0x2950] arrowSB SymbolMid arrowRSB SymbolMid
MkDoubleArrow2 [HalfArrowShape LHSHalfArrowHead] [HalfArrowShape RHSHalfArrowHead] [MangleName 'arrowUpHLDownHR'] [MangleUnicode 0x2951] arrowMidX arrowTop arrowMidX arrowBot
define waveArrowAmplitude : (Width - SB) * DesignParameters.arrow_size * (0.7 + 0.4 * MosaicWidthScalar)
@ -1002,17 +1027,17 @@ glyph-block Symbol-Arrow : for-width-kinds WideWidth1
MkArrow [ThickArrowShape 'white'] [MangleName 'uni2B01'] [MangleUnicode 0x2B01] arrowDiagRSB arrowDiagBot arrowDiagSB arrowDiagTop
MkArrow [ThickArrowShape 'white'] [MangleName 'uni2B02'] [MangleUnicode 0x2B02] arrowDiagSB arrowDiagTop arrowDiagRSB arrowDiagBot
MkArrow [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
MkDoubleArrow [ThickArrowShape 'white-open'] [MangleName 'uni2B04'] [MangleUnicode 0x2B04] arrowSB SymbolMid arrowRSB SymbolMid
MkDoubleArrow [ThickArrowShape 'white-open'] [MangleName 'uni21F3'] [MangleUnicode 0x21F3] arrowMidX arrowBot arrowMidX arrowTop
DoubleArrow2 [ThickArrowShape 'whiteDot'] [ThickArrowShape 'white-open'] [MangleName 'uni21EA'] [MangleUnicode 0x21EA] arrowMidX arrowBot arrowMidX arrowTop
DoubleArrow2 [ThickArrowShape 'whiteRect'] [ThickArrowShape 'white-open'] [MangleName 'uni21EB'] [MangleUnicode 0x21EB] arrowMidX arrowBot arrowMidX arrowTop
DoubleArrow2 [ThickArrowShape 'whiteRect'] [ThickArrowShape 'whiteBarred'] [MangleName 'uni21EC'] [MangleUnicode 0x21EC] arrowMidX arrowBot arrowMidX arrowTop
DoubleArrow2 [ThickArrowShape 'white-closing'] [ThickArrowShape 'whiteDouble'] [MangleName 'uni21EE'] [MangleUnicode 0x21EE] arrowMidX arrowBot arrowMidX arrowTop
DoubleArrow2 [ThickArrowShape 'whiteRect'] [ThickArrowShape 'whiteDouble'] [MangleName 'uni21EF'] [MangleUnicode 0x21EF] arrowMidX arrowBot arrowMidX arrowTop
DoubleArrow2 [ThickArrowShape 'whiteRect'] [ThickArrowShape 'white-open'] [MangleName 'uni21F0'] [MangleUnicode 0x21F0] arrowSB SymbolMid arrowRSB SymbolMid
DoubleArrow2 [ThickArrowShape 'whiteDot'] [ThickArrowShape 'whiteBarred'] [MangleName 'uni2BB8'] [MangleUnicode 0x2BB8] arrowMidX arrowBot arrowMidX arrowTop
DoubleArrow2 [ThickArrowShape 'whiteLeftTurn'] [ThickArrowShape 'white-open'] [MangleName 'uni23CE'] [MangleUnicode 0x23CE] arrowRSB SymbolMid arrowSB SymbolMid
MkDoubleArrow2 [ThickArrowShape 'whiteDot'] [ThickArrowShape 'white-open'] [MangleName 'uni21EA'] [MangleUnicode 0x21EA] arrowMidX arrowBot arrowMidX arrowTop
MkDoubleArrow2 [ThickArrowShape 'whiteRect'] [ThickArrowShape 'white-open'] [MangleName 'uni21EB'] [MangleUnicode 0x21EB] arrowMidX arrowBot arrowMidX arrowTop
MkDoubleArrow2 [ThickArrowShape 'whiteRect'] [ThickArrowShape 'whiteBarred'] [MangleName 'uni21EC'] [MangleUnicode 0x21EC] arrowMidX arrowBot arrowMidX arrowTop
MkDoubleArrow2 [ThickArrowShape 'white-closing'] [ThickArrowShape 'whiteDouble'] [MangleName 'uni21EE'] [MangleUnicode 0x21EE] arrowMidX arrowBot arrowMidX arrowTop
MkDoubleArrow2 [ThickArrowShape 'whiteRect'] [ThickArrowShape 'whiteDouble'] [MangleName 'uni21EF'] [MangleUnicode 0x21EF] arrowMidX arrowBot arrowMidX arrowTop
MkDoubleArrow2 [ThickArrowShape 'whiteRect'] [ThickArrowShape 'white-open'] [MangleName 'uni21F0'] [MangleUnicode 0x21F0] arrowSB SymbolMid arrowRSB SymbolMid
MkDoubleArrow2 [ThickArrowShape 'whiteDot'] [ThickArrowShape 'whiteBarred'] [MangleName 'uni2BB8'] [MangleUnicode 0x2BB8] arrowMidX arrowBot arrowMidX arrowTop
MkDoubleArrow2 [ThickArrowShape 'whiteLeftTurn'] [ThickArrowShape 'white-open'] [MangleName 'uni23CE'] [MangleUnicode 0x23CE] arrowRSB SymbolMid arrowSB SymbolMid
MkArrow [ThickArrowShape 'black'] [MangleName 'uni2B05'] [MangleUnicode 0x2B05] arrowRSB SymbolMid arrowSB SymbolMid
MkArrow [ThickArrowShape 'black'] [MangleName 'uni2B06'] [MangleUnicode 0x2B06] arrowMidX arrowBot arrowMidX arrowTop
@ -1023,8 +1048,8 @@ glyph-block Symbol-Arrow : for-width-kinds WideWidth1
MkArrow [ThickArrowShape 'black'] [MangleName 'uni2B09'] [MangleUnicode 0x2B09] arrowDiagRSB arrowDiagBot arrowDiagSB arrowDiagTop
MkArrow [ThickArrowShape 'black'] [MangleName 'uni2B0A'] [MangleUnicode 0x2B0A] arrowDiagSB arrowDiagTop arrowDiagRSB arrowDiagBot
MkArrow [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
MkDoubleArrow [ThickArrowShape 'black'] [MangleName 'uni2B0C'] [MangleUnicode 0x2B0C] arrowSB SymbolMid arrowRSB SymbolMid
MkDoubleArrow [ThickArrowShape 'black'] [MangleName 'uni2B0D'] [MangleUnicode 0x2B0D] arrowMidX arrowBot arrowMidX arrowTop
create-glyph [MangleName 'uni21ED'] [MangleUnicode 0x21ED] : composite-proc
refer-glyph : MangleName 'uni21EB'
@ -1115,8 +1140,8 @@ glyph-block Symbol-Arrow : for-width-kinds WideWidth1
MkArrow SsArrowShape [MangleName 'sansSerifArrowUpRight'] [MangleUnicode 0x1F855] arrowDiagSB arrowDiagBot arrowDiagRSB arrowDiagTop
MkArrow SsArrowShape [MangleName 'sansSerifArrowDownRight'] [MangleUnicode 0x1F856] arrowDiagSB arrowDiagTop arrowDiagRSB arrowDiagBot
MkArrow SsArrowShape [MangleName 'sansSerifArrowDownLeft'] [MangleUnicode 0x1F857] arrowDiagRSB arrowDiagTop arrowDiagSB arrowDiagBot
DoubleArrow SsArrowShape [MangleName 'sansSerifArrowLeftRight'] [MangleUnicode 0x1F858] arrowSB SymbolMid arrowRSB SymbolMid
DoubleArrow SsArrowShape [MangleName 'sansSerifArrowUpDown'] [MangleUnicode 0x1F859] arrowMidX arrowTop arrowMidX arrowBot
MkDoubleArrow SsArrowShape [MangleName 'sansSerifArrowLeftRight'] [MangleUnicode 0x1F858] arrowSB SymbolMid arrowRSB SymbolMid
MkDoubleArrow SsArrowShape [MangleName 'sansSerifArrowUpDown'] [MangleUnicode 0x1F859] arrowMidX arrowTop arrowMidX arrowBot
do "Double-line Arrows"
define dasw doubleArrowStemWidth
@ -1303,17 +1328,17 @@ glyph-block Symbol-Arrow : for-width-kinds WideWidth1
VBar.m l (SymbolMid - arrowHeadSize) (SymbolMid + arrowHeadSize) fine
do "Double-headed Arrows"
DoubleArrow ArrowShape [MangleName 'arrowLeftRight'] [MangleUnicode 0x2194] arrowSB SymbolMid arrowRSB SymbolMid
DoubleArrow ThinArrowShape [MangleName 'thinArrowLeftRight'] null arrowSB SymbolMid arrowRSB SymbolMid
DoubleArrow ArrowShape [MangleName 'arrowUpDown'] [MangleUnicode 0x2195] arrowMidX arrowTop arrowMidX arrowBot
DoubleArrow ArrowShape [MangleName 'arrowUpDown.bottomSpaceLeft'] nothing arrowMidX arrowTop arrowMidX (arrowBot + arrowSw * 1.5)
DoubleArrow ArrowShape [MangleName 'arrowUpLeftAndDownRight'] [MangleUnicode 0x2921] arrowDiagSB arrowDiagTop arrowDiagRSB arrowDiagBot
DoubleArrow ArrowShape [MangleName 'arrowUpRightAndDownLeft'] [MangleUnicode 0x2922] arrowDiagRSB arrowDiagTop arrowDiagSB arrowDiagBot
MkDoubleArrow ArrowShape [MangleName 'arrowLeftRight'] [MangleUnicode 0x2194] arrowSB SymbolMid arrowRSB SymbolMid
MkDoubleArrow ThinArrowShape [MangleName 'thinArrowLeftRight'] null arrowSB SymbolMid arrowRSB SymbolMid
MkDoubleArrow ArrowShape [MangleName 'arrowUpDown'] [MangleUnicode 0x2195] arrowMidX arrowTop arrowMidX arrowBot
MkDoubleArrow ArrowShape [MangleName 'arrowUpDown.bottomSpaceLeft'] nothing arrowMidX arrowTop arrowMidX (arrowBot + arrowSw * 1.5)
MkDoubleArrow ArrowShape [MangleName 'arrowUpLeftAndDownRight'] [MangleUnicode 0x2921] arrowDiagSB arrowDiagTop arrowDiagRSB arrowDiagBot
MkDoubleArrow ArrowShape [MangleName 'arrowUpRightAndDownLeft'] [MangleUnicode 0x2922] arrowDiagRSB arrowDiagTop arrowDiagSB arrowDiagBot
DoubleArrow TrigArrowShape [MangleName 'trigArrowLeftRight'] [MangleUnicode 0x2B64] arrowSB SymbolMid arrowRSB SymbolMid
DoubleArrow TrigArrowShape [MangleName 'trigArrowUpDown'] [MangleUnicode 0x2B65] arrowMidX arrowTop arrowMidX arrowBot
MkDoubleArrow TrigArrowShape [MangleName 'trigArrowLeftRight'] [MangleUnicode 0x2B64] arrowSB SymbolMid arrowRSB SymbolMid
MkDoubleArrow TrigArrowShape [MangleName 'trigArrowUpDown'] [MangleUnicode 0x2B65] arrowMidX arrowTop arrowMidX arrowBot
DoubleArrow OpenArrowShape [MangleName 'openHeadArrowLeftRight'] [MangleUnicode 0x21FF] arrowSB SymbolMid arrowRSB SymbolMid
MkDoubleArrow OpenArrowShape [MangleName 'openHeadArrowLeftRight'] [MangleUnicode 0x21FF] arrowSB SymbolMid arrowRSB SymbolMid
create-glyph [MangleName 'arrowUpDownBar'] [MangleUnicode 0x21A8] : composite-proc
refer-glyph : MangleName 'arrowUpDown.bottomSpaceLeft'
@ -1322,17 +1347,17 @@ glyph-block Symbol-Arrow : for-width-kinds WideWidth1
if (MosaicWidthScalar > 1 && !para.forceMonospace) : do
define l : mix 0 arrowSB kLongArrowSB
define r : mix MosaicWidth arrowRSB kLongArrowSB
DoubleArrow ArrowShape 'longArrowLeftRight' 0x27F7 l SymbolMid r SymbolMid
MkDoubleArrow ArrowShape 'longArrowLeftRight' 0x27F7 l SymbolMid r SymbolMid
do "Double-line Double-headed Arrows"
define dasw doubleArrowStemWidth
DoubleArrow [DoubleArrowShape dasw] [MangleName 'dblArrowLeftRight'] [MangleUnicode 0x21D4] arrowSB SymbolMid arrowRSB SymbolMid
DoubleArrow [DoubleArrowShape dasw] [MangleName 'dblArrowUpDown'] [MangleUnicode 0x21D5] arrowMidX arrowTop arrowMidX arrowBot
MkDoubleArrow [DoubleArrowShape dasw] [MangleName 'dblArrowLeftRight'] [MangleUnicode 0x21D4] arrowSB SymbolMid arrowRSB SymbolMid
MkDoubleArrow [DoubleArrowShape dasw] [MangleName 'dblArrowUpDown'] [MangleUnicode 0x21D5] arrowMidX arrowTop arrowMidX arrowBot
if (MosaicWidthScalar > 1 && !para.forceMonospace) : do
define l : mix 0 arrowSB kLongArrowSB
define r : mix MosaicWidth arrowRSB kLongArrowSB
DoubleArrow [DoubleArrowShape dasw] 'longDblArrowLeftRight' 0x27FA l SymbolMid r SymbolMid
MkDoubleArrow [DoubleArrowShape dasw] 'longDblArrowLeftRight' 0x27FA l SymbolMid r SymbolMid
do "Same-side Double-headed Arrows"
MkArrow dhArrowShape [MangleName 'dhArrowLeft'] [MangleUnicode 0x219E] arrowRSB SymbolMid arrowSB SymbolMid
@ -1635,4 +1660,4 @@ glyph-block Symbol-Arrow : for-width-kinds WideWidth1
include : FlipAround arrowMidX SymbolMid
if (MosaicWidthScalar == 1) : begin
glyph-block-export ArrowShape ArrowHead ArrowBar
glyph-block-export ArrowShape ArrowHead ArrowBar TrigArrowShape

View file

@ -329,8 +329,6 @@ glyph-block Symbol-Geometric-Masked : for-width-kinds WideWidth1
dispiro [widths.rhs GeometryStroke] [corner Geom.MidX Geom.MidY] [corner Geom.Left Geom.Top]
do "Miscellaneous"
glyph-block-import Symbol-Punctuation-Bar : BarShape
create-glyph [MangleName 'uni2389'] [MangleUnicode 0x2389] : glyph-proc
define shiftUp : ApparentTranslate 0
Math.max
@ -386,7 +384,9 @@ glyph-block Symbol-Geometric-Masked : for-width-kinds WideWidth1
ExtLineLhs 4 OperatorStroke (Geom.MidX - Geom.Size) Geom.MidY Geom.MidX (Geom.MidY - Geom.Size)
ExtLineLhs 4 OperatorStroke Geom.MidX (Geom.MidY - Geom.Size) (Geom.MidX + Geom.Size) Geom.MidY
# Compositions
do "Compositions"
glyph-block-import Symbol-Punctuation-Bar : BarShape
create-glyph [MangleName 'compositionSymbol'] [MangleUnicode 0x2384] : glyph-proc
set-width Geom.Width
local offsetX : Geom.Size * Size.Medium.size / 2 - GeometryStroke / 4
@ -449,3 +449,30 @@ glyph-block Symbol-Geometric-Masked : for-width-kinds WideWidth1
include [refer-glyph : MangleName 'whiteTriangleUp'] AS_BASE ALSO_METRICS
include : HSerif.lb (Geom.MidX - triangleSideRadius) Geom.Bot jut GeometryStroke
include : HSerif.rb (Geom.MidX + triangleSideRadius) Geom.Bot jut GeometryStroke
create-glyph [MangleName 'marriageSymbol'] [MangleUnicode 0x26AD] : glyph-proc
set-width Geom.Width
local radius : Geom.Size * Size.SlightlySmall.size
local stroke Size.SlightlySmall.sw
local offsetX : radius / 2 - stroke / 4
include : union
with-transform [Translate offsetX 0] : refer-glyph : MangleName 'whiteSlightlySmallCircle'
with-transform [Translate (-offsetX) 0] : refer-glyph : MangleName 'whiteSlightlySmallCircle'
create-glyph [MangleName 'divorceSymbol'] [MangleUnicode 0x26AE] : glyph-proc
set-width Geom.Width
local offsetX : Geom.Size * Size.SlightlySmall.size + [HSwToV : Size.SlightlySmall.sw / 2]
local offsetY : Geom.Size * Size.MediumSmall.size
include : union
with-transform [Translate offsetX 0] : refer-glyph : MangleName 'whiteSlightlySmallCircle'
with-transform [Translate (-offsetX) 0] : refer-glyph : MangleName 'whiteSlightlySmallCircle'
VBar.m Geom.MidX (Geom.MidY - offsetY) (Geom.MidY + offsetY) Size.SlightlySmall.sw
create-glyph [MangleName 'unmarriedPartnershipSymbol'] [MangleUnicode 0x26AF] : glyph-proc
set-width Geom.Width
local offsetX : MosaicWidth / 4
local offsetBar : offsetX - Geom.Size * Size.SlightlySmall.size + [HSwToV : Size.SlightlySmall.sw / 2]
include : union
with-transform [Translate offsetX 0] : refer-glyph : MangleName 'whiteSlightlySmallCircle'
with-transform [Translate (-offsetX) 0] : refer-glyph : MangleName 'whiteSlightlySmallCircle'
HBar.m (Geom.MidX - offsetBar) (Geom.MidX + offsetBar) Geom.MidY Size.SlightlySmall.sw

View file

@ -488,6 +488,7 @@ glyph-block Symbol-Geometric-Plain : for-width-kinds WideWidth1
StdWhiteShape CircleShape 'whiteVerySmallCircle' null Size.VerySmall
StdWhiteShape CircleShape 'whiteSmallCircle' null Size.Small
StdWhiteShape CircleShape 'whiteSlightlySmallCircle' null Size.SlightlySmall
StdWhiteShape CircleShape 'whiteMediumSmallCircle' 0x26AC Size.MediumSmall
StdWhiteShape CircleShape 'whiteMediumCircle' 0x26AA Size.Medium
StdWhiteShape CircleShape 'whiteLargeCircle' 0x25EF Size.Large

View file

@ -386,57 +386,83 @@ glyph-block Symbol-Math-Arith : begin
select-variant 'minusFallingDots' 0x2A2B (follow -- 'punctuationDot')
select-variant 'minusRisingDots' 0x2A2C (follow -- 'punctuationDot')
do
define fine : AdviceStroke 5.5
define radius : Math.max ((RightSB - SB) / 8) (fine / 2)
define barOffset radius
define dotCenterOffset : OX + fine + radius
do "small circles"
glyph-block-import Symbol-Arrow : TrigArrowShape
create-glyph 'originalOf' 0x22B6 : glyph-proc
include : difference
union
HBar.m (SB + barOffset) (RightSB - barOffset) SymbolMid OperatorStroke
DotAt (SB + dotCenterOffset) SymbolMid (radius + fine)
DotAt (RightSB - dotCenterOffset) SymbolMid (radius + fine)
DotAt (SB + dotCenterOffset) SymbolMid radius
define fine : AdviceStroke 6
define radius : (RightSB - SB - [HSwToV : 4 * fine]) / 6 + [HSwToV fine] - OX
define gap : (RightSB - SB) / 2 - (radius - OX) * 2
define dotCenterOffset : radius + OX
create-glyph 'imageOf' 0x22B7 : glyph-proc
include : difference
union
HBar.m (SB + barOffset) (RightSB - barOffset) SymbolMid OperatorStroke
DotAt (SB + dotCenterOffset) SymbolMid (radius + fine)
DotAt (RightSB - dotCenterOffset) SymbolMid (radius + fine)
DotAt (RightSB - dotCenterOffset) SymbolMid radius
create-glyph : glyph-proc
local bar : HBar.m (SB + dotCenterOffset) (RightSB - dotCenterOffset) SymbolMid OperatorStroke
define singleSideFine : AdviceStroke 4
define singleSideRadius : Math.max ((RightSB - SB) / 6) (singleSideFine / 2)
local leftFilled : RingAt (SB + dotCenterOffset) SymbolMid radius
local rightFilled : RingAt (RightSB - dotCenterOffset) SymbolMid radius
local leftHollow : RingStrokeAt (SB + dotCenterOffset) SymbolMid radius fine
local rightHollow : RingStrokeAt (RightSB - dotCenterOffset) SymbolMid radius fine
create-forked-glyph 'originalOf' 0x22B6 : union [difference bar leftFilled] leftHollow rightFilled
create-forked-glyph 'imageOf' 0x22B7 : union [difference bar rightFilled] leftFilled rightHollow
create-forked-glyph 'doubleMultimap' 0x29DF : union [difference bar leftFilled rightFilled] leftHollow rightHollow
define sFine : AdviceStroke 4.5
define sRadius : Math.min
(RightSB - SB) / 2 * DesignParameters.geometric_small_x
(RightSB - SB - [HSwToV : 2 * sFine]) / 4 + [HSwToV sFine] - OX
define sGap : (RightSB - SB) / 2 - (sRadius - OX) * 2
define sDotCenterOffset : sRadius + OX
create-glyph 'multimap' 0x22B8 : glyph-proc
include : difference
union
HBar.m SB (RightSB - singleSideRadius) SymbolMid OperatorStroke
DotAt (RightSB - dotCenterOffset) SymbolMid (singleSideRadius + singleSideFine)
DotAt (RightSB - dotCenterOffset) SymbolMid singleSideRadius
include : union
difference
HBar.m SB (RightSB - sDotCenterOffset) SymbolMid OperatorStroke
RingAt (RightSB - sDotCenterOffset) SymbolMid sRadius
RingStrokeAt (RightSB - sDotCenterOffset) SymbolMid sRadius sFine
create-glyph 'leftMultimap' 0x27DC : glyph-proc
include : difference
union
HBar.m (SB + singleSideRadius) RightSB SymbolMid OperatorStroke
DotAt (SB + dotCenterOffset) SymbolMid (singleSideRadius + singleSideFine)
DotAt (SB + dotCenterOffset) SymbolMid singleSideRadius
include : union
difference
HBar.m (SB + sDotCenterOffset) RightSB SymbolMid OperatorStroke
RingAt (SB + sDotCenterOffset) SymbolMid sRadius
RingStrokeAt (SB + sDotCenterOffset) SymbolMid sRadius sFine
create-glyph 'doubleMultimap' 0x29DF : glyph-proc
include : difference
union
HBar.m (SB + barOffset) (RightSB - barOffset) SymbolMid OperatorStroke
DotAt (SB + dotCenterOffset) SymbolMid (radius + fine)
DotAt (RightSB - dotCenterOffset) SymbolMid (radius + fine)
union
DotAt (SB + dotCenterOffset) SymbolMid radius
DotAt (RightSB - dotCenterOffset) SymbolMid radius
# Pawn symbols
define unitedGap : (radius - OX) + gap / 2
define separatedGap : (radius - OX) + SB
create-glyph 'unitedPawn' 0x2BFA : glyph-proc
include : RingStrokeAt (Middle + unitedGap) SymbolMid radius fine
include : RingStrokeAt (Middle - unitedGap) SymbolMid radius fine
foreach { suffix { DrawAt kDotRadius overshoot } } [Object.entries DotVariants] : do
create-glyph "separatedPawn.\(suffix)" : glyph-proc
include : RingStrokeAt (Middle + separatedGap) SymbolMid radius fine
include : RingStrokeAt (Middle - separatedGap) SymbolMid radius fine
define space : 2 * SB
define dFine : AdviceStrokeInSpace space HVContrast 3.5 1
define dr : DotRadius * kDotRadius * dFine / Stroke
include : DrawAt (Middle - space / 4) SymbolMid dr
include : DrawAt (Middle + space / 4) SymbolMid dr
select-variant 'separatedPawn' 0x2BFB (follow -- 'punctuationDot')
create-glyph 'doubledPawn' 0x2BFC : glyph-proc
include : RingStrokeAt Middle (SymbolMid + unitedGap) radius fine
include : RingStrokeAt Middle (SymbolMid - unitedGap) radius fine
create-glyph 'passedPawn' 0x2BFD : glyph-proc
include : TrigArrowShape
* Middle
SymbolMid - unitedGap + radius - (fine / 2)
* Middle
SymbolMid + unitedGap + radius
radius * 0.8
fine / 2
include : RingStrokeAt Middle (SymbolMid - unitedGap) radius fine
create-glyph 'mathSmallCircle' 0x2218
RingStrokeAt Middle SymbolMid (singleSideRadius + singleSideFine) singleSideFine
RingStrokeAt Middle SymbolMid sRadius sFine
alias 'ringpoint' 0x2E30 'mathSmallCircle'
create-glyph 'wreathProduct' 0x2240 : glyph-proc

View file

@ -80,35 +80,56 @@ glyph-block Symbol-Pictograph-Musical : begin
x2 + 0
0 - bandWidth
do "sharp, flat and natural"
do "Accidentals"
glyph-block-import Symbol-Arrow : ArrowShape
local nsTop PictTop
local nsBot PictBot
local fine : AdviceStroke 3.5
local fine2 : AdviceStroke 4
local l : SB - fine * 0
local r : RightSB + fine * 0
local hsp : ((r - l) - [HSwToV : 2 * fine]) * 0.3
local lAcc : SB - fine * 0
local rAcc : RightSB + fine * 0
local hsp : ((rAcc - lAcc) - [HSwToV : 2 * fine]) * 0.3
local skew 0.2
local krNat 0.5
local lSharp : lAcc + hsp * krNat
local rSharp : rAcc - hsp * krNat
local lFlat : mix SB RightSB 0.07
local rFlat : mix RightSB SB 0.07
local lNat : lAcc + hsp * krNat
local rNat : rAcc - hsp * krNat
local halfVFine : HSwToV : 0.5 * fine
local xUpSharp : rSharp - halfVFine
local xDownSharp : rSharp - halfVFine
local xUpFlat : lFlat + halfVFine
local xDownFlat : lFlat + halfVFine
local xUpNat : lNat + halfVFine
local xDownNat : rNat - halfVFine
local arrowWidth : (RightSB - SB) * 0.35
local arrowSpace : Math.max (0.9 * arrowWidth) (ParenTop - PictTop)
local arrowTop : nsTop + arrowSpace
local arrowBot : nsBot - arrowSpace
create-glyph 'sharpTone' 0x266F : glyph-proc
include : dispiro
widths.center
flat l ([mix nsTop nsBot 0.3] - (Middle - l) * skew) [heading Rightward]
curl r ([mix nsTop nsBot 0.3] - (Middle - r) * skew) [heading Rightward]
flat lAcc ([mix nsTop nsBot 0.3] - (Middle - lAcc) * skew) [heading Rightward]
curl rAcc ([mix nsTop nsBot 0.3] - (Middle - rAcc) * skew) [heading Rightward]
include : dispiro
widths.center
flat l ([mix nsTop nsBot 0.7] - (Middle - l) * skew) [heading Rightward]
curl r ([mix nsTop nsBot 0.7] - (Middle - r) * skew) [heading Rightward]
include : VBar.l (l + hsp) (nsBot - (Middle - l - hsp) * skew) (nsTop - (Middle - l - hsp) * skew) fine
include : VBar.r (r - hsp) (nsBot - (Middle - r + hsp) * skew) (nsTop - (Middle - r + hsp) * skew) fine
flat lAcc ([mix nsTop nsBot 0.7] - (Middle - lAcc) * skew) [heading Rightward]
curl rAcc ([mix nsTop nsBot 0.7] - (Middle - rAcc) * skew) [heading Rightward]
include : VBar.l lSharp (nsBot - (Middle - lSharp) * skew) (nsTop - (Middle - lSharp) * skew) fine
include : VBar.r rSharp (nsBot - (Middle - rSharp) * skew) (nsTop - (Middle - rSharp) * skew) fine
define [FlatToneShape _l _r _sw] : glyph-proc
local yTerminal : mix nsBot nsTop 0.55
local curly 0.65
local curly2 1.1
local curly3 0.3
local l : fallback _l [mix SB RightSB 0.07]
local r : fallback _r [mix RightSB SB 0.07]
local l : fallback _l lFlat
local r : fallback _r rFlat
local sw : fallback _sw fine
define [archShapeT offset] : list
@ -147,41 +168,38 @@ glyph-block Symbol-Pictograph-Musical : begin
create-glyph 'naturalTone' 0x266E : glyph-proc
local k : 0.25 - (Stroke * 0.25 / (nsTop - nsBot))
local kr 0.5
local ll (l + hsp * kr)
local rr (r - hsp * kr)
local barLeft : VBar.l ll [mix nsBot nsTop k] nsTop fine
local barRight : VBar.r rr nsBot [mix nsBot nsTop (1 - k)] fine
local barLeft : VBar.l lNat [mix nsBot nsTop k] nsTop fine
local barRight : VBar.r rNat nsBot [mix nsBot nsTop (1 - k)] fine
local diagLow : dispiro
widths.lhs fine
flat ll [mix nsBot nsTop k]
curl rr ([mix nsBot nsTop k] + (rr - ll) * skew)
flat lNat [mix nsBot nsTop k]
curl rNat ([mix nsBot nsTop k] + (rNat - lNat) * skew)
local belowDiagLow : spiro-outline
corner ll [mix nsBot nsTop k]
corner rr ([mix nsBot nsTop k] + (rr - ll) * skew)
corner rr nsBot
corner ll nsBot
corner lNat [mix nsBot nsTop k]
corner rNat ([mix nsBot nsTop k] + (rNat - lNat) * skew)
corner rNat nsBot
corner lNat nsBot
local diagHigh : dispiro
widths.lhs fine
flat rr [mix nsBot nsTop (1 - k)]
curl ll ([mix nsBot nsTop (1 - k)] - (rr - ll) * skew)
flat rNat [mix nsBot nsTop (1 - k)]
curl lNat ([mix nsBot nsTop (1 - k)] - (rNat - lNat) * skew)
local aboveDiagHigh : spiro-outline
corner rr [mix nsBot nsTop (1 - k)]
corner ll ([mix nsBot nsTop (1 - k)] - (rr - ll) * skew)
corner ll nsTop
corner rr nsTop
corner rNat [mix nsBot nsTop (1 - k)]
corner lNat ([mix nsBot nsTop (1 - k)] - (rNat - lNat) * skew)
corner lNat nsTop
corner rNat nsTop
local outsideBars : difference
spiro-outline
corner (ll - UPM) (nsBot - UPM)
corner (ll - UPM) (nsTop + UPM)
corner (rr + UPM) (nsTop + UPM)
corner (rr + UPM) (nsBot - UPM)
corner (lNat - UPM) (nsBot - UPM)
corner (lNat - UPM) (nsTop + UPM)
corner (rNat + UPM) (nsTop + UPM)
corner (rNat + UPM) (nsBot - UPM)
spiro-outline
corner ll nsBot
corner ll nsTop
corner rr nsTop
corner rr nsBot
corner lNat nsBot
corner lNat nsTop
corner rNat nsTop
corner rNat nsBot
include : union
difference barLeft belowDiagLow
@ -190,10 +208,10 @@ glyph-block Symbol-Pictograph-Musical : begin
difference diagHigh barLeft barRight outsideBars
create-glyph 'dblSharpTone' 0x1D12A : glyph-proc
local w : r - l
local w : rAcc - lAcc
local t : nsTop - fine * 0
local b : t - w
local cx : mix l r 0.5
local cx : mix lAcc rAcc 0.5
local cy : mix t b 0.5
local cofine : Math.min (w / 3) (w / 2 - Stroke)
local p 0.5
@ -201,13 +219,13 @@ glyph-block Symbol-Pictograph-Musical : begin
include : union
difference
spiro-outline
corner l t
corner r t
corner r b
corner l b
corner lAcc t
corner rAcc t
corner rAcc b
corner lAcc b
union
VBar.m cx t b cofine
HBar.m l r cy cofine
HBar.m lAcc rAcc cy cofine
spiro-outline
corner (cx - size) (cy + size)
g4 cx (cy + p * size)
@ -222,20 +240,39 @@ glyph-block Symbol-Pictograph-Musical : begin
create-glyph 'dblFlatTone' 0x1D12B : glyph-proc
local sw : AdviceStroke 4
include : union
FlatToneShape l (Middle + sw / 3) sw
FlatToneShape (Middle - sw / 3) r sw
FlatToneShape lAcc (Middle + sw / 3) sw
FlatToneShape (Middle - sw / 3) rAcc sw
create-glyph 'qtrSharpTone' 0x1D132 : glyph-proc
include : dispiro
widths.center
flat l ([mix nsTop nsBot 0.3] - (Middle - l) * skew) [heading Rightward]
curl r ([mix nsTop nsBot 0.3] - (Middle - r) * skew) [heading Rightward]
flat lAcc ([mix nsTop nsBot 0.3] - (Middle - lAcc) * skew) [heading Rightward]
curl rAcc ([mix nsTop nsBot 0.3] - (Middle - rAcc) * skew) [heading Rightward]
include : dispiro
widths.center
flat l ([mix nsTop nsBot 0.7] - (Middle - l) * skew) [heading Rightward]
curl r ([mix nsTop nsBot 0.7] - (Middle - r) * skew) [heading Rightward]
flat lAcc ([mix nsTop nsBot 0.7] - (Middle - lAcc) * skew) [heading Rightward]
curl rAcc ([mix nsTop nsBot 0.7] - (Middle - rAcc) * skew) [heading Rightward]
include : VBar.m Middle nsBot nsTop fine
create-glyph 'qtrFlatTone' 0x1D133 : glyph-proc
include : FlatToneShape
include : FlipAround Middle SymbolMid (-1) 1
create-glyph 'flatToneUp' 0x1D12C : composite-proc
refer-glyph 'flatTone' AS_BASE ALSO_METRICS
ArrowShape xUpFlat SymbolMid xUpFlat arrowTop arrowWidth halfVFine
create-glyph 'flatToneDown' 0x1D12D : composite-proc
refer-glyph 'flatTone' AS_BASE ALSO_METRICS
ArrowShape xDownFlat SymbolMid xDownFlat arrowBot arrowWidth halfVFine
create-glyph 'naturalToneUp' 0x1D12E : composite-proc
refer-glyph 'naturalTone' AS_BASE ALSO_METRICS
ArrowShape xUpNat SymbolMid xUpNat arrowTop arrowWidth halfVFine
create-glyph 'naturalToneDown' 0x1D12F : composite-proc
refer-glyph 'naturalTone' AS_BASE ALSO_METRICS
ArrowShape xDownNat SymbolMid xDownNat arrowBot arrowWidth halfVFine
create-glyph 'sharpToneUp' 0x1D130 : composite-proc
refer-glyph 'sharpTone' AS_BASE ALSO_METRICS
ArrowShape xUpSharp SymbolMid xUpSharp arrowTop arrowWidth halfVFine
create-glyph 'sharpToneDown' 0x1D131 : composite-proc
refer-glyph 'sharpTone' AS_BASE ALSO_METRICS
ArrowShape xDownSharp SymbolMid xDownSharp arrowBot arrowWidth halfVFine