arrows and stuff (#2207)

This commit is contained in:
Logo 2024-02-22 12:19:34 +08:00 committed by GitHub
parent 8eddbde222
commit e13e93277c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 120 additions and 33 deletions

View file

@ -22,17 +22,19 @@
- RIGHT VERTICAL RULER SEGMENT (`U+1CC06`) (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). - 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 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). - 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). - 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). - 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). - HORIZONTAL LINE WITH FOUR TICK MARKS (`U+1CC91`) (Purposed for Unicode 16; L2/21-235).
- BOX DRAWINGS DOUBLE DIAGONAL LOWER LEFT TO MIDDLE CENTRE TO LOWER RIGHT (`U+1CE09`) (Purposed for Unicode 16; L2/21-235).
- BOX DRAWINGS DOUBLE DIAGONAL UPPER LEFT TO MIDDLE CENTRE TO UPPER RIGHT (`U+1CE0A`) (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). - 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). - 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). - FOLDER (`U+1F5C0`) (#2181).
- NEGATIVE SQUARED LEFTWARDS ARROW (`U+1F8B4`) ... NEGATIVE SQUARED DOWNWARDS ARROW (`U+1F8B7`) (Purposed for Unicode 16; L2/21-235). - DOWNWARDS BLACK ARROW TO BAR (`U+1F8B3`) ... SOUTH WEST ARROW FROM BAR (`U+1F8BB`) (Purposed for Unicode 16; L2/21-235).
- LEFT TWO THIRDS BLOCK (`U+1FBCE`) (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). - LEFT ONE THIRD BLOCK (`U+1FBCF`) (Purposed for Unicode 16; L2/21-235).
- BOX DRAWINGS LIGHT DIAGONAL MIDDLE RIGHT TO LOWER LEFT (`U+1FBD0`) ... BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO MIDDLE RIGHT TO LOWER LEFT (`U+1FBDF`) (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). - 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). * Fix a disjoint stroke of Outlined Curly `Z` under some weights (#2195).
* Unify diagonal box drawings' angles (#2197). * Unify diagonal box drawings' angles (#2197).

View file

@ -179,6 +179,22 @@ glyph-block Symbol-Arrow : for-width-kinds WideWidth1
include : ArrowHead x1 y1 x2 y2 size include : ArrowHead x1 y1 x2 y2 size
include : ArrowBar x1 y1 x2 y2 halfArrowSw 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
widths.rhs sw
flat mag size
curl mag (-size)
define [ArrowFromBarShape x1 y1 x2 y2 size] : glyph-proc
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 : 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] : glyph-proc
include : ArrowHead x1 y1 x2 y2 size include : ArrowHead x1 y1 x2 y2 size
include : ArrowBar x1 y1 x2 y2 (0.5 * [mix fine terminal 0.5]) include : ArrowBar x1 y1 x2 y2 (0.5 * [mix fine terminal 0.5])
@ -933,12 +949,18 @@ glyph-block Symbol-Arrow : for-width-kinds WideWidth1
MkArrow ArrowShape [MangleName 'arrowRightK'] null arrowSB SymbolMid (arrowRSB - fine) SymbolMid MkArrow ArrowShape [MangleName 'arrowRightK'] null arrowSB SymbolMid (arrowRSB - fine) SymbolMid
MkArrow ArrowShape [MangleName 'arrowUpK'] null arrowMidX arrowBot arrowMidX (arrowTop - fine) MkArrow ArrowShape [MangleName 'arrowUpK'] null arrowMidX arrowBot arrowMidX (arrowTop - fine)
MkArrow ArrowShape [MangleName 'arrowDownK'] null arrowMidX arrowTop arrowMidX (arrowBot + fine) MkArrow ArrowShape [MangleName 'arrowDownK'] null arrowMidX arrowTop arrowMidX (arrowBot + fine)
MkArrow ArrowShape [MangleName 'arrowLeftSK'] null (arrowRSB - fine / 2) SymbolMid arrowSB SymbolMid MkArrow [ThickArrowShape 'black'] [MangleName 'blackArrowDownK'] null arrowMidX arrowTop arrowMidX (arrowBot + fine)
MkArrow ArrowShape [MangleName 'arrowRightSK'] null (arrowSB + fine / 2) SymbolMid arrowRSB SymbolMid
MkArrow ArrowShape [MangleName 'arrowUpSK'] null arrowMidX (arrowBot + fine / 2) arrowMidX arrowTop
MkArrow ArrowShape [MangleName 'arrowDownSK'] null arrowMidX (arrowTop - fine / 2) arrowMidX arrowBot
MkArrow ArrowShape [MangleName 'arrowUpLeftTK'] null arrowRSB arrowBot arrowSB (arrowTop - [Math.max (arrowWidth / 8) (fine * 1.5)]) MkArrow ArrowShape [MangleName 'arrowUpLeftTK'] null arrowRSB arrowBot arrowSB (arrowTop - [Math.max (arrowWidth / 8) (fine * 1.5)])
MkArrow ArrowFromBarShape [MangleName 'barArrowLeft'] [MangleUnicode 0x21A4] arrowRSB SymbolMid arrowSB SymbolMid
MkArrow ArrowFromBarShape [MangleName 'barArrowUp'] [MangleUnicode 0x21A5] arrowMidX arrowBot arrowMidX arrowTop
MkArrow ArrowFromBarShape [MangleName 'barArrowRight'] [MangleUnicode 0x21A6] arrowSB SymbolMid arrowRSB SymbolMid
MkArrow ArrowFromBarShape [MangleName 'barArrowDown'] [MangleUnicode 0x21A7] arrowMidX arrowTop arrowMidX arrowBot
MkArrow ArrowFromBarShape [MangleName 'barArrowUpLeft'] [MangleUnicode 0x1F8B8] arrowDiagRSB arrowDiagBot arrowDiagSB arrowDiagTop
MkArrow ArrowFromBarShape [MangleName 'barArrowUpRight'] [MangleUnicode 0x1F8B9] arrowDiagSB arrowDiagBot arrowDiagRSB arrowDiagTop
MkArrow ArrowFromBarShape [MangleName 'barArrowDownRight'] [MangleUnicode 0x1F8BA] arrowDiagSB arrowDiagTop arrowDiagRSB arrowDiagBot
MkArrow ArrowFromBarShape [MangleName 'barArrowDownLeft'] [MangleUnicode 0x1F8BB] arrowDiagRSB arrowDiagTop arrowDiagSB arrowDiagBot
create-glyph [MangleName 'arrowBarLeft'] [MangleUnicode 0x21E4] : composite-proc create-glyph [MangleName 'arrowBarLeft'] [MangleUnicode 0x21E4] : composite-proc
refer-glyph : MangleName 'arrowLeftK' refer-glyph : MangleName 'arrowLeftK'
VBar.m arrowSB (SymbolMid - arrowHeadSize) (SymbolMid + arrowHeadSize) fine VBar.m arrowSB (SymbolMid - arrowHeadSize) (SymbolMid + arrowHeadSize) fine
@ -951,18 +973,9 @@ glyph-block Symbol-Arrow : for-width-kinds WideWidth1
create-glyph [MangleName 'arrowBarDown'] [MangleUnicode 0x2913] : composite-proc create-glyph [MangleName 'arrowBarDown'] [MangleUnicode 0x2913] : composite-proc
refer-glyph : MangleName 'arrowDownK' refer-glyph : MangleName 'arrowDownK'
HBar.m (arrowMidX - arrowHeadSize) (arrowMidX + arrowHeadSize) arrowBot fine HBar.m (arrowMidX - arrowHeadSize) (arrowMidX + arrowHeadSize) arrowBot fine
create-glyph [MangleName 'barArrowLeft'] [MangleUnicode 0x21A4] : composite-proc create-glyph [MangleName 'blackArrowBarDown'] [MangleUnicode 0x1F8B3] : composite-proc
refer-glyph : MangleName 'arrowLeftSK' refer-glyph : MangleName 'blackArrowDownK'
VBar.m arrowRSB (SymbolMid - arrowHeadSize) (SymbolMid + arrowHeadSize) fine
create-glyph [MangleName 'barArrowRight'] [MangleUnicode 0x21A6] : composite-proc
refer-glyph : MangleName 'arrowRightSK'
VBar.m arrowSB (SymbolMid - arrowHeadSize) (SymbolMid + arrowHeadSize) fine
create-glyph [MangleName 'barArrowUp'] [MangleUnicode 0x21A5] : composite-proc
refer-glyph : MangleName 'arrowUpSK'
HBar.m (arrowMidX - arrowHeadSize) (arrowMidX + arrowHeadSize) arrowBot fine HBar.m (arrowMidX - arrowHeadSize) (arrowMidX + arrowHeadSize) arrowBot fine
create-glyph [MangleName 'barArrowDown'] [MangleUnicode 0x21A7] : composite-proc
refer-glyph : MangleName 'arrowDownSK'
HBar.m (arrowMidX - arrowHeadSize) (arrowMidX + arrowHeadSize) arrowTop fine
MkArrow [HalfArrowShape RHSHalfArrowHead] [MangleName 'arrowLeftHRK'] null arrowRSB SymbolMid (arrowSB + fine) SymbolMid MkArrow [HalfArrowShape RHSHalfArrowHead] [MangleName 'arrowLeftHRK'] null arrowRSB SymbolMid (arrowSB + fine) SymbolMid
MkArrow [HalfArrowShape LHSHalfArrowHead] [MangleName 'arrowLeftHLK'] null arrowRSB SymbolMid (arrowSB + fine) SymbolMid MkArrow [HalfArrowShape LHSHalfArrowHead] [MangleName 'arrowLeftHLK'] null arrowRSB SymbolMid (arrowSB + fine) SymbolMid

View file

@ -217,7 +217,7 @@ glyph-block Symbol-Geometric-Plain : for-width-kinds WideWidth1
local offsetY : space * 0.45 local offsetY : space * 0.45
include : union include : union
with-transform [Translate (-offsetX) (-offsetY)] : refer-glyph : MangleName [if square1 'blackMediumSquare' 'whiteMediumSquare'] with-transform [Translate (-offsetX) (-offsetY)] : refer-glyph : MangleName [if square1 'blackMediumSquare' 'whiteMediumSquare']
with-transform [Translate offsetX offsetY] : refer-glyph : MangleName [if square2 'blackMediumSquare' 'whiteMediumSquare'] with-transform [Translate offsetX offsetY] : refer-glyph : MangleName [if square2 'blackMediumSquare' 'whiteMediumSquare']
SquareOverlap 'overlapWWSquareRev' 0x29C9 1 0 0 SquareOverlap 'overlapWWSquareRev' 0x29C9 1 0 0
SquareOverlap 'overlapWWSquare' 0x2BBA 0 0 0 SquareOverlap 'overlapWWSquare' 0x2BBA 0 0 0

View file

@ -431,27 +431,76 @@ glyph-block Symbol-Mosaic-Box-Drawing : begin
DiamondBoxDrawing 0x1FBAD 1 1 1 0 DiamondBoxDrawing 0x1FBAD 1 1 1 0
DiamondBoxDrawing 0x1FBAE 1 1 1 1 DiamondBoxDrawing 0x1FBAE 1 1 1 1
create-glyph [MangleName : NameUni 0x1CE09] [MangleUnicode 0x1CE09] : glyph-proc
create-glyph [MangleName : NameUni 0x1FBBD] [MangleUnicode 0x1FBBD] : glyph-proc
set-width MosaicWidth set-width MosaicWidth
include : ForceUpright include : ForceUpright
include : difference include : refer-glyph : MangleName : NameUni 0x1FBA7
glyph-proc : include : refer-glyph : MangleName : NameUni 0x2588 include : refer-glyph : MangleName : NameUni 0x1FBDA
glyph-proc : include : refer-glyph : MangleName : NameUni 0x2573
create-glyph [MangleName : NameUni 0x1FBBE] [MangleUnicode 0x1FBBE] : glyph-proc create-glyph [MangleName : NameUni 0x1CE0A] [MangleUnicode 0x1CE0A] : glyph-proc
set-width MosaicWidth set-width MosaicWidth
include : ForceUpright include : ForceUpright
include : difference include : refer-glyph : MangleName : NameUni 0x1FBA6
glyph-proc : include : refer-glyph : MangleName : NameUni 0x2588 include : refer-glyph : MangleName : NameUni 0x1FBD8
glyph-proc : include : refer-glyph : MangleName : NameUni 0x1FBA3
create-glyph [MangleName : NameUni 0x1FBBF] [MangleUnicode 0x1FBBF] : glyph-proc # Corner-to-Edge Diagonal
define [VDiagonal unicode sx sy] : begin
local fUpwards : sy === bottom
create-glyph [MangleName : NameUni unicode] [MangleUnicode unicode] : glyph-proc
set-width MosaicWidth
include : ForceUpright
include : intersection
if fUpwards [MaskBelow top] [MaskAbove bottom]
dispiro
widths.center light
flat sx sy
curl [mix sx midx 1.5] [mix sy [if fUpwards top bottom] 1.5]
define [HDiagonal unicode sx sy] : begin
local fRightwards : sx === left
create-glyph [MangleName : NameUni unicode] [MangleUnicode unicode] : glyph-proc
set-width MosaicWidth
include : ForceUpright
include : intersection
if fRightwards [MaskLeft right] [MaskRight left]
dispiro
widths.center light
flat sx sy
curl [mix sx [if fRightwards right left] 1.5] [mix sy midy 1.5]
HDiagonal 0x1FBD0 left bottom
HDiagonal 0x1FBD1 right top
HDiagonal 0x1FBD2 left top
HDiagonal 0x1FBD3 right bottom
VDiagonal 0x1FBD4 left top
VDiagonal 0x1FBD5 right bottom
VDiagonal 0x1FBD6 right top
VDiagonal 0x1FBD7 left bottom
create-glyph [MangleName : NameUni 0x1FBDC] [MangleUnicode 0x1FBDC] : glyph-proc
set-width MosaicWidth set-width MosaicWidth
include : ForceUpright include : ForceUpright
include : difference include : refer-glyph : MangleName : NameUni 0x1FBD4
glyph-proc : include : refer-glyph : MangleName : NameUni 0x2588 include : refer-glyph : MangleName : NameUni 0x1FBD6
glyph-proc : include : refer-glyph : MangleName : NameUni 0x1FBAE
create-glyph [MangleName : NameUni 0x1FBDD] [MangleUnicode 0x1FBDD] : glyph-proc
set-width MosaicWidth
include : ForceUpright
include : refer-glyph : MangleName : NameUni 0x1FBD1
include : refer-glyph : MangleName : NameUni 0x1FBD3
create-glyph [MangleName : NameUni 0x1FBDE] [MangleUnicode 0x1FBDE] : glyph-proc
set-width MosaicWidth
include : ForceUpright
include : refer-glyph : MangleName : NameUni 0x1FBD5
include : refer-glyph : MangleName : NameUni 0x1FBD7
create-glyph [MangleName : NameUni 0x1FBDF] [MangleUnicode 0x1FBDF] : glyph-proc
set-width MosaicWidth
include : ForceUpright
include : refer-glyph : MangleName : NameUni 0x1FBD0
include : refer-glyph : MangleName : NameUni 0x1FBD2
create-glyph [MangleName : NameUni 0x1FBAF] [MangleUnicode 0x1FBAF] : glyph-proc create-glyph [MangleName : NameUni 0x1FBAF] [MangleUnicode 0x1FBAF] : glyph-proc
set-width MosaicWidth set-width MosaicWidth

View file

@ -32,8 +32,9 @@ glyph-block Symbol-Geometric-Mosaic-Inverted : for-width-kinds WideWidth1
create-glyph [MangleName : NameUni 0x25D9] [MangleUnicode 0x25D9] : glyph-proc create-glyph [MangleName : NameUni 0x25D9] [MangleUnicode 0x25D9] : glyph-proc
set-width MosaicWidth set-width MosaicWidth
include : refer-glyph : MangleName : NameUni 0x25DA include : difference
include : refer-glyph : MangleName : NameUni 0x25DB refer-glyph : MangleName : NameUni 0x2588
refer-glyph : MangleName 'whiteCircle'
# create-glyph [MangleName 'uni1CC8D'] [MangleUnicode 0x1CC8D] : glyph-proc # create-glyph [MangleName 'uni1CC8D'] [MangleUnicode 0x1CC8D] : glyph-proc
# set-width MosaicWidth # set-width MosaicWidth
@ -75,3 +76,25 @@ glyph-block Symbol-Geometric-Mosaic-Inverted : for-width-kinds WideWidth1
include : difference include : difference
refer-glyph : MangleName : NameUni 0x2588 refer-glyph : MangleName : NameUni 0x2588
refer-glyph : MangleName 'arrowDown' refer-glyph : MangleName 'arrowDown'
# Box Drawing
create-glyph [MangleName : NameUni 0x1FBBD] [MangleUnicode 0x1FBBD] : glyph-proc
set-width MosaicWidth
include : ForceUpright
include : difference
glyph-proc : include : refer-glyph : MangleName : NameUni 0x2588
glyph-proc : include : refer-glyph : MangleName : NameUni 0x2573
create-glyph [MangleName : NameUni 0x1FBBE] [MangleUnicode 0x1FBBE] : glyph-proc
set-width MosaicWidth
include : ForceUpright
include : difference
glyph-proc : include : refer-glyph : MangleName : NameUni 0x2588
glyph-proc : include : refer-glyph : MangleName : NameUni 0x1FBA3
create-glyph [MangleName : NameUni 0x1FBBF] [MangleUnicode 0x1FBBF] : glyph-proc
set-width MosaicWidth
include : ForceUpright
include : difference
glyph-proc : include : refer-glyph : MangleName : NameUni 0x2588
glyph-proc : include : refer-glyph : MangleName : NameUni 0x1FBAE