Add DOWNWARDS ZIGZAG ARROW (U+21AF).

This commit is contained in:
be5invis 2021-12-10 02:05:48 -08:00
parent da603d4b1b
commit c44316b1ab
4 changed files with 63 additions and 5 deletions

View file

@ -1,4 +1,8 @@
* Add top-left and bottom-right serifed variants for `K` and Cyrillic Ka (#1257).
* Add LEFTWARDS ARROW WITH LOOP (`U+21AB`) and RIGHTWARDS ARROW WITH LOOP (`U+21AC`).
* Add LEFTWARDS TRIPLE ARROW (`U+21DA`) and RIGHTWARDS TRIPLE ARROW (`U+21DB`).
* Add RIGHTWARDS ARROW WITH TIP DOWNWARDS (`U+2B0E`) ... LEFTWARDS ARROW WITH TIP UPWARDS (`U+2B11`).
* Add characters:
- LEFTWARDS ARROW WITH LOOP (`U+21AB`).
- RIGHTWARDS ARROW WITH LOOP (`U+21AC`).
- DOWNWARDS ZIGZAG ARROW (`U+21AF`).
- LEFTWARDS TRIPLE ARROW (`U+21DA`).
- RIGHTWARDS TRIPLE ARROW (`U+21DB`).
- RIGHTWARDS ARROW WITH TIP DOWNWARDS (`U+2B0E`) ... LEFTWARDS ARROW WITH TIP UPWARDS (`U+2B11`).

View file

@ -30,6 +30,26 @@ glyph-block CommonShapes : begin
define [MaskBelow y] : Rect y (-VERY-FAR) (-VERY-FAR) (VERY-FAR)
define [MaskLeft x] : Rect VERY-FAR (-VERY-FAR) (-VERY-FAR) x
define [MaskRight x] : Rect VERY-FAR (-VERY-FAR) x VERY-FAR
define [MaskAboveLine x1 y1 x2 y2] : spiro-outline
corner x1 (+VERY-FAR)
corner x1 y1
corner x2 y2
corner x2 (+VERY-FAR)
define [MaskBelowLine x1 y1 x2 y2] : spiro-outline
corner x1 (-VERY-FAR)
corner x1 y1
corner x2 y2
corner x2 (-VERY-FAR)
define [MaskLeftLine x1 y1 x2 y2] : spiro-outline
corner (-VERY-FAR) y1
corner x1 y1
corner x2 y2
corner (-VERY-FAR) y2
define [MaskRightLine x1 y1 x2 y2] : spiro-outline
corner (+VERY-FAR) y1
corner x1 y1
corner x2 y2
corner (+VERY-FAR) y2
define [HalfRectTriangle x1 y1 x2 y2] : spiro-outline
corner x1 y1
@ -645,4 +665,4 @@ glyph-block CommonShapes : begin
corner [mix x1 x2 (-k)] [mix y1 y2 (-k)]
corner [mix x1 x2 (1+k)] [mix y1 y2 (1+k)]
glyph-block-export Rect SquareAt Ring RingAt DotAt RingStroke RingStrokeAt DotStrokeAt CircleRing CircleRingAt CircleDotAt OShape OShapeOutline OShapeFlatTB OBarLeftShape OBarRightShape LeftwardTopSerif LeftwardBottomSerif RightwardTopSerif RightwardBottomSerif CenterTopSerif CenterTopSerifAsymmetric CenterBottomSerif CenterBottomSerifAsymmetric DownwardRightSerif UpwardRightSerif DownwardLeftSerif UpwardLeftSerif NeedSlab NeedNotItalic HBar HBarTop HBarBottom HOverlayBar VBar VBarLeft VBarRight VerticalHook LeftHook FlatSlashShape hookstart hookend FlipAround ScaleAround Realign ForceUpright DiagCor NameUni PointingTo WithTransform clear-anchors OBarLeftToothlessShape OBarLeftRoundedShape OBarRightToothlessShape OBarRightRoundedShape AsRadical ExtLineCenter ExtLineLhs DiagCorDs HCrossBar VERY-FAR MaskAbove MaskBelow MaskLeft MaskRight HalfRectTriangle
glyph-block-export Rect SquareAt Ring RingAt DotAt RingStroke RingStrokeAt DotStrokeAt CircleRing CircleRingAt CircleDotAt OShape OShapeOutline OShapeFlatTB OBarLeftShape OBarRightShape LeftwardTopSerif LeftwardBottomSerif RightwardTopSerif RightwardBottomSerif CenterTopSerif CenterTopSerifAsymmetric CenterBottomSerif CenterBottomSerifAsymmetric DownwardRightSerif UpwardRightSerif DownwardLeftSerif UpwardLeftSerif NeedSlab NeedNotItalic HBar HBarTop HBarBottom HOverlayBar VBar VBarLeft VBarRight VerticalHook LeftHook FlatSlashShape hookstart hookend FlipAround ScaleAround Realign ForceUpright DiagCor NameUni PointingTo WithTransform clear-anchors OBarLeftToothlessShape OBarLeftRoundedShape OBarRightToothlessShape OBarRightRoundedShape AsRadical ExtLineCenter ExtLineLhs DiagCorDs HCrossBar VERY-FAR MaskAbove MaskBelow MaskLeft MaskRight HalfRectTriangle MaskAboveLine MaskBelowLine MaskLeftLine MaskRightLine

View file

@ -711,6 +711,39 @@ glyph-block Symbol-Arrow : for-width-kinds WideWidth1
VCombine [MangleName 'uni21CC'] [MangleUnicode 0x21CC] [MangleName 'arrowRightHL'] [MangleName 'arrowLeftHL'] (arrowHeadSize)
VCombine [MangleName 'uni21B9'] [MangleUnicode 0x21B9] [MangleName 'arrowBarLeft'] [MangleName 'arrowBarRight'] (arrowHeadSize * 1.75)
do "Zig zag"
create-glyph [MangleName 'zigZagArrow'] [MangleUnicode 0x21AF] : glyph-proc
set-width MosaicWidth
local x2 : mix arrowMidX arrowSB (0.875 / [Math.sqrt MosaicWidthScalar])
local x3 : mix arrowMidX arrowRSB (0.875 / [Math.sqrt MosaicWidthScalar])
local x1 : mix x2 x3 (1 / 3)
local x4 : mix x2 x3 (2 / 3)
local y2 : mix arrowBot arrowTop 0.375
local y3 : mix arrowBot arrowTop 0.625
local magLastSeg : Math.hypot (x3 - x4) (y3 - arrowBot)
local x3ArrowHeadMock : x3 - (x3 - x4) / magLastSeg * arrowSw * HVContrast
local pLastSeg : (magLastSeg - o - 0.55 * arrowSw) / magLastSeg
include : union
ArrowHead x3ArrowHeadMock y3 x4 arrowBot arrowHeadSize
difference
dispiro
flat [mix x3 x4 pLastSeg] [mix y3 arrowBot pLastSeg] [widths.center arrowSw]
curl x3 y3 [widths.lhs arrowSw]
MaskAboveLine x2 y2 x3 y3
difference
dispiro
flat x3 y3 [widths.lhs arrowSw]
curl x2 y2 [widths.rhs arrowSw]
MaskRightLine x3 y3 x4 arrowBot
MaskLeftLine x2 y2 x1 arrowTop
difference
dispiro
flat x2 y2 [widths.rhs arrowSw]
curl x1 arrowTop [widths.center arrowSw]
MaskBelowLine x2 y2 x3 y3
do "Legacy computing arrows"
define bodyWidth : Math.min arrowWidth (arrowHeight * 0.6)
create-glyph [MangleName 'arrowUpThenNW'] [MangleUnicode 0x1F8B0] : glyph-proc

View file

@ -143,7 +143,8 @@ define-macro glyph-block-import : syntax-rules
ScaleAround Realign ForceUpright DiagCor NameUni PointingTo WithTransform clear-anchors
OBarLeftToothlessShape OBarLeftRoundedShape OBarRightToothlessShape
OBarRightRoundedShape AsRadical ExtLineCenter ExtLineLhs DiagCorDs HCrossBar VERY-FAR
MaskAbove MaskBelow MaskLeft MaskRight HalfRectTriangle]
MaskAbove MaskBelow MaskLeft MaskRight HalfRectTriangle MaskAboveLine MaskBelowLine
MaskLeftLine MaskRightLine]
define vartiableFilter : if externEnv.$glyphBlockVariableUsage$
lambda [x] externEnv.$glyphBlockVariableUsage$.(x)