From bdd070bd9ad6362009ea9cf1342984c1ae587f8a Mon Sep 17 00:00:00 2001 From: Logo <21302803+Logo121@users.noreply.github.com> Date: Fri, 9 Feb 2024 16:48:29 +0800 Subject: [PATCH] Some more Legacy Computing Symbols (pt 3) (#2200) * some diagonals * gapped blocks * folder (#2181) * doc --- changes/29.0.0.md | 4 +++ .../src/symbol/mosaic/box-drawing.ptl | 25 +++++++++++++ .../src/symbol/mosaic/teletext.ptl | 35 +++++++++++++------ .../symbol/pictograph/powerline-and-gui.ptl | 19 +++++++--- 4 files changed, 68 insertions(+), 15 deletions(-) diff --git a/changes/29.0.0.md b/changes/29.0.0.md index 6a4f436e1..a7db83ca6 100644 --- a/changes/29.0.0.md +++ b/changes/29.0.0.md @@ -17,10 +17,14 @@ - 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). diff --git a/packages/font-glyphs/src/symbol/mosaic/box-drawing.ptl b/packages/font-glyphs/src/symbol/mosaic/box-drawing.ptl index be5a00e5a..5059ef989 100644 --- a/packages/font-glyphs/src/symbol/mosaic/box-drawing.ptl +++ b/packages/font-glyphs/src/symbol/mosaic/box-drawing.ptl @@ -337,6 +337,7 @@ glyph-block Symbol-Mosaic-Box-Drawing : begin flat (midx + bdArcRadius) midy [heading Rightward] curl MosaicWidth midy [heading Rightward] + # Corner Diagonals create-glyph [MangleName : NameUni 0x2571] [MangleUnicode 0x2571] : glyph-proc set-width MosaicWidth include : ForceUpright @@ -359,6 +360,30 @@ glyph-block Symbol-Mosaic-Box-Drawing : begin include : refer-glyph : MangleName : NameUni 0x2571 include : refer-glyph : MangleName : NameUni 0x2572 + create-glyph [MangleName : NameUni 0x1FBD8] [MangleUnicode 0x1FBD8] : glyph-proc + set-width MosaicWidth + include : ForceUpright + include : intersection [MaskRight midx] : refer-glyph : MangleName : NameUni 0x2571 + include : intersection [MaskLeft midx] : refer-glyph : MangleName : NameUni 0x2572 + + create-glyph [MangleName : NameUni 0x1FBD9] [MangleUnicode 0x1FBD9] : glyph-proc + set-width MosaicWidth + include : ForceUpright + include : intersection [MaskAbove midy] : refer-glyph : MangleName : NameUni 0x2571 + include : intersection [MaskBelow midy] : refer-glyph : MangleName : NameUni 0x2572 + + create-glyph [MangleName : NameUni 0x1FBDA] [MangleUnicode 0x1FBDA] : glyph-proc + set-width MosaicWidth + include : ForceUpright + include : intersection [MaskLeft midx] : refer-glyph : MangleName : NameUni 0x2571 + include : intersection [MaskRight midx] : refer-glyph : MangleName : NameUni 0x2572 + + create-glyph [MangleName : NameUni 0x1FBDB] [MangleUnicode 0x1FBDB] : glyph-proc + set-width MosaicWidth + include : ForceUpright + include : intersection [MaskBelow midy] : refer-glyph : MangleName : NameUni 0x2571 + include : intersection [MaskAbove midy] : refer-glyph : MangleName : NameUni 0x2572 + # Diamond define [DiamondBarRaw hStart vStart hEnd vEnd] : begin define zStartX : mix left right hStart diff --git a/packages/font-glyphs/src/symbol/mosaic/teletext.ptl b/packages/font-glyphs/src/symbol/mosaic/teletext.ptl index 52c2f3aea..47ef3441f 100644 --- a/packages/font-glyphs/src/symbol/mosaic/teletext.ptl +++ b/packages/font-glyphs/src/symbol/mosaic/teletext.ptl @@ -1,6 +1,7 @@ $$include '../../meta/macros.ptl' import [mix linreg clamp fallback] from "@iosevka/util" +import [maskBit] from "@iosevka/util/mask-bit" glyph-module @@ -15,20 +16,22 @@ glyph-block Symbol-Mosaic-Teletext : begin define left 0 define right MosaicWidth - define [BlockMosaicTile w h id] : glyph-proc + define gap : 0.05 * (top - bottom) + + define [BlockMosaicTile w h id kgap] : glyph-proc local column : id % w local row : Math.floor (id / w) define cw : (right - left) / w define ch : (top - bottom) / h include : spiro-outline - corner (column * cw) (top - row * ch) - corner ((column + 1) * cw) (top - row * ch) - corner ((column + 1) * cw) (top - (row + 1) * ch) - corner (column * cw) (top - (row + 1) * ch) + corner (column * cw + kgap * gap) (top - row * ch - kgap * gap) + corner ((column + 1) * cw - kgap * gap) (top - row * ch - kgap * gap) + corner ((column + 1) * cw - kgap * gap) (top - (row + 1) * ch + kgap * gap) + corner (column * cw + kgap * gap) (top - (row + 1) * ch + kgap * gap) define [BlockMosaicPattern w h bits] : glyph-proc if (bits.length > 0) : include : union - BlockMosaicTile w h bits.0 + BlockMosaicTile w h bits.0 0 BlockMosaicPattern w h : bits.slice 1 define [BlockMosaic23 unicode pattern] : begin @@ -43,11 +46,21 @@ glyph-block Symbol-Mosaic-Teletext : begin include : ForceUpright include : BlockMosaicPattern 2 4 : [pattern.split ''].map : x => x - 1 - define [BlockMosaic unicode w h pattern] : begin + define [BlockMosaic unicode w h kgap pattern] : begin create-glyph [MangleName : NameUni unicode] [MangleUnicode unicode] : glyph-proc set-width MosaicWidth include : ForceUpright - include : BlockMosaicPattern w h pattern + include : BlockMosaicPattern w h kgap pattern + + define [MakeGappedBlockMosaic w h su] : foreach [offset : range 1 [Math.pow 2 (w * h)]] : begin + create-glyph [MangleName : NameUni (su + offset)] [MangleUnicode (su + offset)] : glyph-proc + set-width MosaicWidth + include : ForceUpright + foreach [bit : range 0 (w * h)] : if [maskBit offset bit] + include : BlockMosaicTile w h bit 1 + + MakeGappedBlockMosaic 2 2 0x1CC20 + MakeGappedBlockMosaic 2 3 0x1CE50 BlockMosaic23 0x1FB00 '1' BlockMosaic23 0x1FB01 '2' @@ -341,6 +354,6 @@ glyph-block Symbol-Mosaic-Teletext : begin BlockMosaic24 0x1CDE4 '1345678' BlockMosaic24 0x1CDE5 '2345678' - BlockMosaic 0x1FB95 4 4 {0 2 5 7 8 10 13 15} - BlockMosaic 0x1FB96 4 4 {1 3 4 6 9 11 12 14} - BlockMosaic 0x1FB97 4 4 {4 5 6 7 12 13 14 15} + BlockMosaic 0x1FB95 4 4 0 {0 2 5 7 8 10 13 15} + BlockMosaic 0x1FB96 4 4 0 {1 3 4 6 9 11 12 14} + BlockMosaic 0x1FB97 4 4 0 {4 5 6 7 12 13 14 15} diff --git a/packages/font-glyphs/src/symbol/pictograph/powerline-and-gui.ptl b/packages/font-glyphs/src/symbol/pictograph/powerline-and-gui.ptl index 7f020facf..175d37f89 100644 --- a/packages/font-glyphs/src/symbol/pictograph/powerline-and-gui.ptl +++ b/packages/font-glyphs/src/symbol/pictograph/powerline-and-gui.ptl @@ -153,8 +153,8 @@ glyph-block Symbol-Pictograph-Powerline-And-GUI : begin MosaicWidthMask RunningManBody (-MosaicWidth) - define [FolderBody xOffset] : begin - local Kit : StickFigureKit [BoxN 2] [Translate xOffset 0] [AdviceStroke 4] + define [FolderBody xOffset box] : begin + local Kit : StickFigureKit box [Translate xOffset 0] [AdviceStroke 4] return : union Kit.RoundSeg (0 / 16) (1 / 8) (0 / 16) (11 / 16) Kit.RoundSeg (0 / 16) (11 / 16) (3 / 16) (7 / 8) 1 1 @@ -168,13 +168,22 @@ glyph-block Symbol-Pictograph-Powerline-And-GUI : begin set-width MosaicWidth include : intersection MosaicWidthMask - FolderBody 0 + FolderBody 0 [BoxN 2] create-glyph [MangleName 'folderRight'] [MangleUnicode 0x1FBBA] : glyph-proc set-width MosaicWidth include : intersection MosaicWidthMask - FolderBody (-MosaicWidth) + FolderBody (-MosaicWidth) [BoxN 2] + + create-glyph [MangleName 'folder'] [MangleUnicode 0x1F5C0] : glyph-proc + set-width MosaicWidth + local hbox : new Box + mix SymbolMid uiFigTop (0.5 * MosaicWidthScalar) + mix SymbolMid uiFigBot (0.5 * MosaicWidthScalar) + SB * (0.5 * MosaicWidthScalar) + MosaicWidth - SB * (0.5 * MosaicWidthScalar) + include : FolderBody 0 hbox define [PointingHandBody xOffset] : begin return : PointingHandShape [BoxN 3] [Translate xOffset 0] [AdviceStroke 4] @@ -202,6 +211,7 @@ glyph-block Symbol-Pictograph-Powerline-And-GUI : begin set scaffold.top uiFigTop set scaffold.bot uiFigBot set scaffold.xMiddle : MosaicWidth / 2 + set scaffold.yMiddle : mix uiFigBot uiFigTop 0.5 set scaffold.headSize : (uiFigTop - uiFigBot) / 2.5 set scaffold.legSize : (Middle - SB) * 2 set scaffold.armSize : (Middle - SB / 2) * 2 @@ -356,6 +366,7 @@ glyph-block Symbol-Pictograph-Powerline-And-GUI : begin set scaffold.width : (Middle - SB) * 2 * [Math.pow (MosaicWidth / Width) 0.5] set scaffold.left : (MosaicWidth / 2) - scaffold.width / 2 + scaffold.stroke / 2 set scaffold.right : (MosaicWidth / 2) + scaffold.width / 2 - scaffold.stroke / 2 + define [StrokeV x yt yb] : spiro-outline corner x (yt - scaffold.gap) corner (x + scaffold.stroke) (yt - scaffold.gap - scaffold.stroke)