Decorate White Arrows (#2063) (#2201)

* arrows (#2063)

* refine

* fix
This commit is contained in:
Logo 2024-02-10 03:11:43 +08:00 committed by GitHub
parent e1eeffd0d5
commit d0201136f7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 109 additions and 20 deletions

View file

@ -13,21 +13,24 @@
- `five`.`oblique-arched``five`.`oblique-arched-serifless`
- `five`.`oblique-flat``five`.`oblique-flat-serifless`
* Add characters:
- LOWER HORIZONTAL RULER SEGMENT (U+1CC05) (Purposed for Unicode 16; L2/21-235).
- RIGHT VERTICAL RULER SEGMENT (U+1CC06) (Purposed for Unicode 16; L2/21-235).
- LOWER RIGHT RULER SEGMENT (U+1CC07) (Purposed for Unicode 16; L2/21-235).
- BOX DRAWINGS LIGHT HORIZONTAL AND UPPER RIGHT (U+1CC1B) ... BOX DRAWINGS LIGHT BOTTOM AND LOWER LEFT (U+1CC1E) (Purposed for Unicode 16; L2/21-235).
- BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO MIDDLE CENTRE TO UPPER RIGHT (U+1FBD8) ... BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO MIDDLE CENTRE TO LOWER LEFT (U+1FBDB) (Purposed for Unicode 16; L2/21-235).
- SEPARATED BLOCK QUADRANT-1 (U+1CC21) ... SEPARATED BLOCK QUADRANT-1234 (U+1CC2F) (Purposed for Unicode 16; L2/21-235).
- BLACK NEUTRAL FACE (U+1CC6F) (Purposed for Unicode 16; L2/21-235).
- VERTICAL LINE WITH FOUR TICK MARKS (U+1CC90) (Purposed for Unicode 16; L2/21-235).
- HORIZONTAL LINE WITH FOUR TICK MARKS (U+1CC91) (Purposed for Unicode 16; L2/21-235).
- SEPARATED BLOCK SEXTANT-1 (U+1CE51) ... SEPARATED BLOCK SEXTANT-123456 (U+1CE8F) (Purposed for Unicode 16; L2/21-235).
- UPPER LEFT ONE SIXTEENTH BLOCK (U+1CE90) ... LOWER HALF RIGHT ONE QUARTER BLOCK (U+1CEAF) (Purposed for Unicode 16; L2/21-235).
- FOLDER (U+1F5C0) (#2181).
- NEGATIVE SQUARED LEFTWARDS ARROW (U+1F8B4) ... NEGATIVE SQUARED DOWNWARDS ARROW (U+1F8B7) (Purposed for Unicode 16; L2/21-235).
- LEFT TWO THIRDS BLOCK (U+1FBCE) (Purposed for Unicode 16; L2/21-235).
- LEFT ONE THIRD BLOCK (U+1FBCF) (Purposed for Unicode 16; L2/21-235).
- UPPER CENTRE ONE QUARTER BLOCK (U+1FBE4) ... MIDDLE RIGHT ONE QUARTER BLOCK (U+1FBE7) (Purposed for Unicode 16; L2/21-235).
- UPWARDS WHITE ARROW FROM BAR (`U+21EA`) ... RIGHTWARDS WHITE ARROW FROM WALL (`U+21F0`).
- RETURN SYMBOL (`U+23CE`).
- UPWARDS WHITE ARROW FROM BAR WITH HORIZONTAL BAR (`U+2BB8`).
- LOWER HORIZONTAL RULER SEGMENT (`U+1CC05`) (Purposed for Unicode 16; L2/21-235).
- RIGHT VERTICAL RULER SEGMENT (`U+1CC06`) (Purposed for Unicode 16; L2/21-235).
- LOWER RIGHT RULER SEGMENT (`U+1CC07`) (Purposed for Unicode 16; L2/21-235).
- BOX DRAWINGS LIGHT HORIZONTAL AND UPPER RIGHT (`U+1CC1B`) ... BOX DRAWINGS LIGHT BOTTOM AND LOWER LEFT (`U+1CC1E`) (Purposed for Unicode 16; L2/21-235).
- BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO MIDDLE CENTRE TO UPPER RIGHT (`U+1FBD8`) ... BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO MIDDLE CENTRE TO LOWER LEFT (`U+1FBDB`) (Purposed for Unicode 16; L2/21-235).
- SEPARATED BLOCK QUADRANT-1 (`U+1CC21`) ... SEPARATED BLOCK QUADRANT-1234 (`U+1CC2F`) (Purposed for Unicode 16; L2/21-235).
- BLACK NEUTRAL FACE (`U+1CC6F`) (Purposed for Unicode 16; L2/21-235).
- VERTICAL LINE WITH FOUR TICK MARKS (`U+1CC90`) (Purposed for Unicode 16; L2/21-235).
- HORIZONTAL LINE WITH FOUR TICK MARKS (`U+1CC91`) (Purposed for Unicode 16; L2/21-235).
- SEPARATED BLOCK SEXTANT-1 (`U+1CE51`) ... SEPARATED BLOCK SEXTANT-123456 (`U+1CE8F`) (Purposed for Unicode 16; L2/21-235).
- UPPER LEFT ONE SIXTEENTH BLOCK (`U+1CE90`) ... LOWER HALF RIGHT ONE QUARTER BLOCK (`U+1CEAF`) (Purposed for Unicode 16; L2/21-235).
- FOLDER (`U+1F5C0`) (#2181).
- NEGATIVE SQUARED LEFTWARDS ARROW (`U+1F8B4`) ... NEGATIVE SQUARED DOWNWARDS ARROW (`U+1F8B7`) (Purposed for Unicode 16; L2/21-235).
- LEFT TWO THIRDS BLOCK (`U+1FBCE`) (Purposed for Unicode 16; L2/21-235).
- LEFT ONE THIRD BLOCK (`U+1FBCF`) (Purposed for Unicode 16; L2/21-235).
- UPPER CENTRE ONE QUARTER BLOCK (`U+1FBE4`) ... MIDDLE RIGHT ONE QUARTER BLOCK (`U+1FBE7`) (Purposed for Unicode 16; L2/21-235).
* Fix a disjoint stroke of Outlined Curly `Z` under some weights (#2195).
* Unify diagonal box drawings' angles (#2197).

View file

@ -37,9 +37,9 @@ glyph-block Symbol-Arrow : for-width-kinds WideWidth1
define arrowDiagBot : mix arrowMidX arrowBot diagPropY
define arrowDiagTop : mix arrowMidX arrowTop diagPropY
define [ArrowBar x1 y1 x2 y2 halfSw w] : begin
define [ArrowBar x1 y1 x2 y2 halfSw w _offset] : begin
return : PointingTo x1 y1 x2 y2 : lambda [mag] : begin
local p : (mag - o - halfSw * [fallback w 1.1]) / mag
local p : (mag - [fallback _offset : o + halfSw * [fallback w 1.1]]) / mag
dispiro
widths.center (halfSw * 2)
flat (mag * (1 - p)) 0
@ -162,6 +162,19 @@ glyph-block Symbol-Arrow : for-width-kinds WideWidth1
corner length (width - o)
corner length (-width + o)
define [TriangleArrowHeadBar x1 y1 x2 y2 width sw _length] : begin
local length : fallback _length width
return : new-glyph : PointingTo x1 y1 x2 y2 : lambda [mag] : intersection
spiro-outline
corner o 0
corner length (width - o)
corner length (-width + o)
Rect width (-width) (length / 2 - sw / 2) (length / 2 + sw / 2)
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
@ -228,15 +241,24 @@ glyph-block Symbol-Arrow : for-width-kinds WideWidth1
local headLen : MosaicUnitWidth * [Math.sqrt MosaicWidthScalar] * 0.4
local halfBarWidth : headLen / 3
local headWidth : halfBarWidth * 2
local fine : Math.min [AdviceStroke 5] (halfBarWidth * 0.6)
local turnWidth : headWidth * 1.5
local barLen : headLen * 0.2 + fine * 2
local dotGap : barLen - fine * 2
local doubleHeadOffset : headLen * 0.4
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 p3 : (mag - doubleHeadOffset) / mag
local p4 : (mag - fine * [Math.sqrt 13] / 2 - doubleHeadOffset) / mag
local x1a : mix x1 x2 (1 - p)
local y1a : mix y1 y2 (1 - p)
local x2FlatA : mix x1 x2 p
local y2FlatA : mix y1 y2 p
local x2a : mix x1 x2 p2
local y2a : mix y1 y2 p2
local x1CoA : mix x1 x2 (-0.05)
@ -259,6 +281,55 @@ glyph-block Symbol-Arrow : for-width-kinds WideWidth1
TriangleArrowHead x1CoA y1CoA x2a y2a (headWidth - innerHeaderLengthShrink * headWidth / headLen) (headLen - innerHeaderLengthShrink)
ArrowBar x1CoA y1CoA x2a y2a (halfBarWidth - fine / 2) 2
[Just "white-closing"] : difference
ArrowBar x1 y1 x2 y2 (halfBarWidth + fine / 2) 0 0
ArrowBar x1CoA y1CoA x2FlatA y2FlatA (halfBarWidth - fine / 2) 0 0
[Just "whiteDouble"] : difference
union
difference
TriangleArrowHead x1 y1 x2 y2 headWidth headLen
TriangleArrowHead x1a y1a x2a y2a (headWidth - innerHeaderLengthShrink * headWidth / headLen) (headLen - innerHeaderLengthShrink)
TriangleArrowHead x1 y1 [mix x1 x2 p3] [mix y1 y2 p3] headWidth headLen
ArrowBar x1 y1 [mix x1 x2 p3] [mix y1 y2 p3] (halfBarWidth + fine / 2) 2
union
TriangleArrowHead x1a y1a [mix x1 x2 p4] [mix y1 y2 p4] (headWidth - innerHeaderLengthShrink * headWidth / headLen) (headLen - innerHeaderLengthShrink)
ArrowBar x1CoA y1CoA [mix x1 x2 p4] [mix y1 y2 p4] (halfBarWidth - fine / 2) 2
[Just "whiteBarred"] : union
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
TriangleArrowHeadBar x1 y1 x2 y2 headWidth fine headLen
[Just "whiteDot"] : difference
union
RectangleArrowTail x1 y1 x2 y2 (halfBarWidth + fine / 2) barLen
ArrowBar x1 y1 x2 y2 (halfBarWidth + fine / 2) 0 (barLen + dotGap)
union
RectangleArrowTail x1a y1a x2FlatA y2FlatA (halfBarWidth - fine / 2) (barLen - fine * 2)
ArrowBar x1CoA y1CoA x2FlatA y2FlatA (halfBarWidth - fine / 2) 0 (barLen + dotGap)
[Just "whiteRect"] : difference
union
RectangleArrowTail x1 y1 x2 y2 headWidth barLen
ArrowBar x1 y1 x2 y2 (halfBarWidth + fine / 2) 0.5
union
RectangleArrowTail x1a y1a x2FlatA y2FlatA (headWidth - fine) (barLen - fine * 2)
ArrowBar x1CoA y1CoA x2FlatA y2FlatA (halfBarWidth - fine / 2) 0.5
[Just "whiteLeftTurn"] : difference
union
RectangleArrowTail x1 y1 x2 y2 (halfBarWidth + fine / 2) (halfBarWidth * 2 + fine * 1.5) turnWidth
ArrowBar x1 y1 x2 y2 (halfBarWidth + fine / 2) 1
union
RectangleArrowTail x1a y1a x2FlatA y2FlatA (halfBarWidth - fine / 2) (halfBarWidth * 2 - fine / 2) (turnWidth - fine)
ArrowBar x1CoA y1CoA x2FlatA y2FlatA (halfBarWidth - fine / 2) 1
[Just "black"] : union
TriangleArrowHead x1 y1 x2 y2 headWidth headLen
ArrowBar x1 y1 x2 y2 halfBarWidth 2
@ -756,6 +827,15 @@ glyph-block Symbol-Arrow : for-width-kinds WideWidth1
DoubleArrow [ThickArrowShape 'white-open'] [MangleName 'uni2B04'] [MangleUnicode 0x2B04] arrowSB SymbolMid arrowRSB SymbolMid
DoubleArrow [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
MkArrow [ThickArrowShape 'black'] [MangleName 'uni2B05'] [MangleUnicode 0x2B05] arrowRSB SymbolMid arrowSB SymbolMid
MkArrow [ThickArrowShape 'black'] [MangleName 'uni2B06'] [MangleUnicode 0x2B06] arrowMidX arrowBot arrowMidX arrowTop
MkArrow [ThickArrowShape 'black'] [MangleName 'uni27A1'] [MangleUnicode 0x27A1] arrowSB SymbolMid arrowRSB SymbolMid
@ -768,6 +848,12 @@ glyph-block Symbol-Arrow : for-width-kinds WideWidth1
DoubleArrow [ThickArrowShape 'black'] [MangleName 'uni2B0C'] [MangleUnicode 0x2B0C] arrowSB SymbolMid arrowRSB SymbolMid
DoubleArrow [ThickArrowShape 'black'] [MangleName 'uni2B0D'] [MangleUnicode 0x2B0D] arrowMidX arrowBot arrowMidX arrowTop
create-glyph [MangleName 'uni21ED'] [MangleUnicode 0x21ED] : composite-proc
refer-glyph : MangleName 'uni21EB'
intersection
refer-glyph : MangleName 'uni2B06'
Rect arrowTop arrowBot (arrowMidX - [AdviceStroke 5] / 2) (arrowMidX + [AdviceStroke 5] / 2)
MkArrow [ThickArrowShape 'blackSemiHookL'] [MangleName 'uni27A5'] [MangleUnicode 0x27A5] arrowSB SymbolMid arrowRSB SymbolMid
MkArrow [ThickArrowShape 'blackSemiHookR'] [MangleName 'uni27A6'] [MangleUnicode 0x27A6] arrowSB SymbolMid arrowRSB SymbolMid
@ -1220,7 +1306,7 @@ glyph-block Symbol-Arrow : for-width-kinds WideWidth1
include : union
TriangleArrowHead x3ArrowHeadMock y3 x4 y4 arrowHeadSize
ZigZagArrowBar
do "Lightning"
define x1 : mix arrowMidX arrowRSB (0.875 / [Math.sqrt MosaicWidthScalar])
define x2 : mix arrowMidX arrowSB (0.875 / [Math.sqrt MosaicWidthScalar])