Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New checkerboards, more quadrants, and sextants #708

Merged
merged 3 commits into from
Apr 7, 2024

Conversation

PhMajerus
Copy link
Contributor

@PhMajerus PhMajerus commented Jan 16, 2024

Summary of the Pull Request

This update does not modify any existing character, it is only adding new characters from the Symbols for Legacy Computing block.
This is the first pull request of a few I have ready. I unified the coordinates for sextants and octants and created the glyph files for pretty much all of the pseudo-pixels mosaic characters. The goal is to have full support for all pseudo-pixels as they are used for graphics rendering in the terminal. More goodies for terminals are also coming after the mosaics.

This contains a lot of glyphs, and the octants will be even worse. However, fear not, to avoid typos or other human error while creating hundreds of glyphs, I decided instead to create some script tools to generate them. So they should be mathematically exact, based on two bounding box sets of coordinates:
GDI versions assumes a full cell is [0,2226},[1200,-480], while DirectWrite versions assumes [0,1900],[1200,-480].

I checked all the characters in VTT, as well as in real use in Windows Terminal at 100% and 200% DPI screens and at different zoom levels. I have a set of sextants ANSI-art (or should we call those Uni-art?) files that now also display really nicely in Windows Terminal.

Here are the characters added by this pull request:
image

References

Pseudo-pixels mosaic characters have been discussed in #647, and this covers all the 2×2 "quadrants" by adding some new ones, as well as all the 2×3 "sextants".
Sextants seem to be well supported on Linux, so we need these characters to ensure Windows Terminal can handle utilities using them as well.

PR Checklist

Detailed Description of the Pull Request / Additional comments

Added 172 glyphs.

Added the new glyphs .glif files to the glyphs subfolder of each font. Being block (full-cell) symbols, they are identical in all fonts and files are just duplicated.
Block-based glyphs have both a normal (GDI) and .stypo (DWrite) variants.

Added the new glyphs, including .stypo ones, to features.fea::@NotSpace array of non-italic fonts (at the end but before the LIG list).
checkerBoardDeleteApple2 checkerBoardDeleteTrs80 checkerBoardDeleteAmstradCpc checkerBoardDeleteAmstradCpc.stypo checkerBoardFill checkerBoardFill.stypo checkerBoardFillInverse checkerBoardFillInverse.stypo blockQuadrant-UC blockQuadrant-UC.stypo blockQuadrant-LC blockQuadrant-LC.stypo blockQuadrant-ML blockQuadrant-ML.stypo blockQuadrant-MR blockQuadrant-MR.stypo blockTriangle-1 blockTriangle-1.stypo blockTriangle-2 blockTriangle-2.stypo blockTriangle-3 blockTriangle-3.stypo blockTriangle-4 blockTriangle-4.stypo blockTriangle-14 blockTriangle-14.stypo blockTriangle-23 blockTriangle-23.stypo blockTriangle-123 blockTriangle-123.stypo blockTriangle-124 blockTriangle-124.stypo blockTriangle-134 blockTriangle-134.stypo blockTriangle-234 blockTriangle-234.stypo blockCircle-1 blockCircle-1.stypo blockCircle-2 blockCircle-2.stypo blockCircle-3 blockCircle-3.stypo blockCircle-4 blockCircle-4.stypo blockCircle-UC blockCircle-UC.stypo blockCircle-LC by blockCircle-LC.stypo blockCircle-ML blockCircle-ML.stypo blockCircle-MR blockCircle-MR.stypo blockSextant-1 blockSextant-1.stypo blockSextant-2 blockSextant-2.stypo blockSextant-12 blockSextant-12.stypo blockSextant-3 blockSextant-3.stypo blockSextant-13 blockSextant-13.stypo blockSextant-23 blockSextant-23.stypo blockSextant-123 blockSextant-123.stypo blockSextant-4 blockSextant-4.stypo blockSextant-14 blockSextant-14.stypo blockSextant-24 blockSextant-24.stypo blockSextant-124 blockSextant-124.stypo blockSextant-34 blockSextant-34.stypo blockSextant-134 blockSextant-134.stypo blockSextant-234 blockSextant-234.stypo blockSextant-1234 blockSextant-1234.stypo blockSextant-5 blockSextant-5.stypo blockSextant-15 blockSextant-15.stypo blockSextant-25 blockSextant-25.stypo blockSextant-125 blockSextant-125.stypo blockSextant-35 blockSextant-35.stypo blockSextant-235 blockSextant-235.stypo blockSextant-1235 blockSextant-1235.stypo blockSextant-45 blockSextant-45.stypo blockSextant-145 blockSextant-145.stypo blockSextant-245 blockSextant-245.stypo blockSextant-1245 blockSextant-1245.stypo blockSextant-345 blockSextant-345.stypo blockSextant-1345 blockSextant-1345.stypo blockSextant-2345 blockSextant-2345.stypo blockSextant-12345 blockSextant-12345.stypo blockSextant-6 blockSextant-6.stypo blockSextant-16 blockSextant-16.stypo blockSextant-26 blockSextant-26.stypo blockSextant-126 blockSextant-126.stypo blockSextant-36 blockSextant-36.stypo blockSextant-136 blockSextant-136.stypo blockSextant-236 blockSextant-236.stypo blockSextant-1236 blockSextant-1236.stypo blockSextant-46 blockSextant-46.stypo blockSextant-146 blockSextant-146.stypo blockSextant-1246 blockSextant-1246.stypo blockSextant-346 blockSextant-346.stypo blockSextant-1346 blockSextant-1346.stypo blockSextant-2346 blockSextant-2346.stypo blockSextant-12346 blockSextant-12346.stypo blockSextant-56 blockSextant-56.stypo blockSextant-156 blockSextant-156.stypo blockSextant-256 blockSextant-256.stypo blockSextant-1256 blockSextant-1256.stypo blockSextant-356 blockSextant-356.stypo blockSextant-1356 blockSextant-1356.stypo blockSextant-2356 blockSextant-2356.stypo blockSextant-12356 blockSextant-12356.stypo blockSextant-456 blockSextant-456.stypo blockSextant-1456 blockSextant-1456.stypo blockSextant-2456 blockSextant-2456.stypo blockSextant-12456 blockSextant-12456.stypo blockSextant-3456 blockSextant-3456.stypo blockSextant-13456 blockSextant-13456.stypo blockSextant-23456 blockSextant-23456.stypo

Added list of glyphs and filenames to the content.plist::dict of the glyphs subfolder of each font.

Added mapping to substitute GDI with DWrite versions of glyphs to the features.fea::rclt feature of non-italic fonts and in features/rclt.fea::rclt.

sub checkerBoardDeleteAmstradCpc by checkerBoardDeleteAmstradCpc.stypo;
sub checkerBoardFill by checkerBoardFill.stypo;
sub checkerBoardFillInverse by checkerBoardFillInverse.stypo;
sub blockQuadrant-UC by blockQuadrant-UC.stypo;
sub blockQuadrant-LC by blockQuadrant-LC.stypo;
sub blockQuadrant-ML by blockQuadrant-ML.stypo;
sub blockQuadrant-MR by blockQuadrant-MR.stypo;
sub blockTriangle-1 by blockTriangle-1.stypo;
sub blockTriangle-2 by blockTriangle-2.stypo;
sub blockTriangle-3 by blockTriangle-3.stypo;
sub blockTriangle-4 by blockTriangle-4.stypo;
sub blockTriangle-14 by blockTriangle-14.stypo;
sub blockTriangle-23 by blockTriangle-23.stypo;
sub blockTriangle-123 by blockTriangle-123.stypo;
sub blockTriangle-124 by blockTriangle-124.stypo;
sub blockTriangle-134 by blockTriangle-134.stypo;
sub blockTriangle-234 by blockTriangle-234.stypo;
sub blockCircle-1 by blockCircle-1.stypo;
sub blockCircle-2 by blockCircle-2.stypo;
sub blockCircle-3 by blockCircle-3.stypo;
sub blockCircle-4 by blockCircle-4.stypo;
sub blockCircle-UC by blockCircle-UC.stypo;
sub blockCircle-LC by blockCircle-LC.stypo;
sub blockCircle-ML by blockCircle-ML.stypo;
sub blockCircle-MR by blockCircle-MR.stypo;
sub blockSextant-1 by blockSextant-1.stypo;
sub blockSextant-2 by blockSextant-2.stypo;
sub blockSextant-12 by blockSextant-12.stypo;
sub blockSextant-3 by blockSextant-3.stypo;
sub blockSextant-13 by blockSextant-13.stypo;
sub blockSextant-23 by blockSextant-23.stypo;
sub blockSextant-123 by blockSextant-123.stypo;
sub blockSextant-4 by blockSextant-4.stypo;
sub blockSextant-14 by blockSextant-14.stypo;
sub blockSextant-24 by blockSextant-24.stypo;
sub blockSextant-124 by blockSextant-124.stypo;
sub blockSextant-34 by blockSextant-34.stypo;
sub blockSextant-134 by blockSextant-134.stypo;
sub blockSextant-234 by blockSextant-234.stypo;
sub blockSextant-1234 by blockSextant-1234.stypo;
sub blockSextant-5 by blockSextant-5.stypo;
sub blockSextant-15 by blockSextant-15.stypo;
sub blockSextant-25 by blockSextant-25.stypo;
sub blockSextant-125 by blockSextant-125.stypo;
sub blockSextant-35 by blockSextant-35.stypo;
sub blockSextant-235 by blockSextant-235.stypo;
sub blockSextant-1235 by blockSextant-1235.stypo;
sub blockSextant-45 by blockSextant-45.stypo;
sub blockSextant-145 by blockSextant-145.stypo;
sub blockSextant-245 by blockSextant-245.stypo;
sub blockSextant-1245 by blockSextant-1245.stypo;
sub blockSextant-345 by blockSextant-345.stypo;
sub blockSextant-1345 by blockSextant-1345.stypo;
sub blockSextant-2345 by blockSextant-2345.stypo;
sub blockSextant-12345 by blockSextant-12345.stypo;
sub blockSextant-6 by blockSextant-6.stypo;
sub blockSextant-16 by blockSextant-16.stypo;
sub blockSextant-26 by blockSextant-26.stypo;
sub blockSextant-126 by blockSextant-126.stypo;
sub blockSextant-36 by blockSextant-36.stypo;
sub blockSextant-136 by blockSextant-136.stypo;
sub blockSextant-236 by blockSextant-236.stypo;
sub blockSextant-1236 by blockSextant-1236.stypo;
sub blockSextant-46 by blockSextant-46.stypo;
sub blockSextant-146 by blockSextant-146.stypo;
sub blockSextant-1246 by blockSextant-1246.stypo;
sub blockSextant-346 by blockSextant-346.stypo;
sub blockSextant-1346 by blockSextant-1346.stypo;
sub blockSextant-2346 by blockSextant-2346.stypo;
sub blockSextant-12346 by blockSextant-12346.stypo;
sub blockSextant-56 by blockSextant-56.stypo;
sub blockSextant-156 by blockSextant-156.stypo;
sub blockSextant-256 by blockSextant-256.stypo;
sub blockSextant-1256 by blockSextant-1256.stypo;
sub blockSextant-356 by blockSextant-356.stypo;
sub blockSextant-1356 by blockSextant-1356.stypo;
sub blockSextant-2356 by blockSextant-2356.stypo;
sub blockSextant-12356 by blockSextant-12356.stypo;
sub blockSextant-456 by blockSextant-456.stypo;
sub blockSextant-1456 by blockSextant-1456.stypo;
sub blockSextant-2456 by blockSextant-2456.stypo;
sub blockSextant-12456 by blockSextant-12456.stypo;
sub blockSextant-3456 by blockSextant-3456.stypo;
sub blockSextant-13456 by blockSextant-13456.stypo;
sub blockSextant-23456 by blockSextant-23456.stypo;

Added the new glyphs to the lib.plist::public.glyphOrder array of each font (both normals and italics).

      <string>checkerBoardDeleteApple2</string>
      <string>checkerBoardDeleteTrs80</string>
      <string>checkerBoardDeleteAmstradCpc</string>
      <string>checkerBoardDeleteAmstradCpc.stypo</string>
      <string>checkerBoardFill</string>
      <string>checkerBoardFill.stypo</string>
      <string>checkerBoardFillInverse</string>
      <string>checkerBoardFillInverse.stypo</string>
      <string>blockQuadrant-UC</string>
      <string>blockQuadrant-UC.stypo</string>
      <string>blockQuadrant-LC</string>
      <string>blockQuadrant-LC.stypo</string>
      <string>blockQuadrant-ML</string>
      <string>blockQuadrant-ML.stypo</string>
      <string>blockQuadrant-MR</string>
      <string>blockQuadrant-MR.stypo</string>
      <string>blockTriangle-1</string>
      <string>blockTriangle-1.stypo</string>
      <string>blockTriangle-2</string>
      <string>blockTriangle-2.stypo</string>
      <string>blockTriangle-3</string>
      <string>blockTriangle-3.stypo</string>
      <string>blockTriangle-4</string>
      <string>blockTriangle-4.stypo</string>
      <string>blockTriangle-14</string>
      <string>blockTriangle-14.stypo</string>
      <string>blockTriangle-23</string>
      <string>blockTriangle-23.stypo</string>
      <string>blockTriangle-123</string>
      <string>blockTriangle-123.stypo</string>
      <string>blockTriangle-124</string>
      <string>blockTriangle-124.stypo</string>
      <string>blockTriangle-134</string>
      <string>blockTriangle-134.stypo</string>
      <string>blockTriangle-234</string>
      <string>blockTriangle-234.stypo</string>
      <string>blockCircle-1</string>
      <string>blockCircle-1.stypo</string>
      <string>blockCircle-2</string>
      <string>blockCircle-2.stypo</string>
      <string>blockCircle-3</string>
      <string>blockCircle-3.stypo</string>
      <string>blockCircle-4</string>
      <string>blockCircle-4.stypo</string>
      <string>blockCircle-UC</string>
      <string>blockCircle-UC.stypo</string>
      <string>blockCircle-LC</string>
      <string>blockCircle-LC.stypo</string>
      <string>blockCircle-ML</string>
      <string>blockCircle-ML.stypo</string>
      <string>blockCircle-MR</string>
      <string>blockCircle-MR.stypo</string>
      <string>blockSextant-1</string>
      <string>blockSextant-1.stypo</string>
      <string>blockSextant-2</string>
      <string>blockSextant-2.stypo</string>
      <string>blockSextant-12</string>
      <string>blockSextant-12.stypo</string>
      <string>blockSextant-3</string>
      <string>blockSextant-3.stypo</string>
      <string>blockSextant-13</string>
      <string>blockSextant-13.stypo</string>
      <string>blockSextant-23</string>
      <string>blockSextant-23.stypo</string>
      <string>blockSextant-123</string>
      <string>blockSextant-123.stypo</string>
      <string>blockSextant-4</string>
      <string>blockSextant-4.stypo</string>
      <string>blockSextant-14</string>
      <string>blockSextant-14.stypo</string>
      <string>blockSextant-24</string>
      <string>blockSextant-24.stypo</string>
      <string>blockSextant-124</string>
      <string>blockSextant-124.stypo</string>
      <string>blockSextant-34</string>
      <string>blockSextant-34.stypo</string>
      <string>blockSextant-134</string>
      <string>blockSextant-134.stypo</string>
      <string>blockSextant-234</string>
      <string>blockSextant-234.stypo</string>
      <string>blockSextant-1234</string>
      <string>blockSextant-1234.stypo</string>
      <string>blockSextant-5</string>
      <string>blockSextant-5.stypo</string>
      <string>blockSextant-15</string>
      <string>blockSextant-15.stypo</string>
      <string>blockSextant-25</string>
      <string>blockSextant-25.stypo</string>
      <string>blockSextant-125</string>
      <string>blockSextant-125.stypo</string>
      <string>blockSextant-35</string>
      <string>blockSextant-35.stypo</string>
      <string>blockSextant-235</string>
      <string>blockSextant-235.stypo</string>
      <string>blockSextant-1235</string>
      <string>blockSextant-1235.stypo</string>
      <string>blockSextant-45</string>
      <string>blockSextant-45.stypo</string>
      <string>blockSextant-145</string>
      <string>blockSextant-145.stypo</string>
      <string>blockSextant-245</string>
      <string>blockSextant-245.stypo</string>
      <string>blockSextant-1245</string>
      <string>blockSextant-1245.stypo</string>
      <string>blockSextant-345</string>
      <string>blockSextant-345.stypo</string>
      <string>blockSextant-1345</string>
      <string>blockSextant-1345.stypo</string>
      <string>blockSextant-2345</string>
      <string>blockSextant-2345.stypo</string>
      <string>blockSextant-12345</string>
      <string>blockSextant-12345.stypo</string>
      <string>blockSextant-6</string>
      <string>blockSextant-6.stypo</string>
      <string>blockSextant-16</string>
      <string>blockSextant-16.stypo</string>
      <string>blockSextant-26</string>
      <string>blockSextant-26.stypo</string>
      <string>blockSextant-126</string>
      <string>blockSextant-126.stypo</string>
      <string>blockSextant-36</string>
      <string>blockSextant-36.stypo</string>
      <string>blockSextant-136</string>
      <string>blockSextant-136.stypo</string>
      <string>blockSextant-236</string>
      <string>blockSextant-236.stypo</string>
      <string>blockSextant-1236</string>
      <string>blockSextant-1236.stypo</string>
      <string>blockSextant-46</string>
      <string>blockSextant-46.stypo</string>
      <string>blockSextant-146</string>
      <string>blockSextant-146.stypo</string>
      <string>blockSextant-1246</string>
      <string>blockSextant-1246.stypo</string>
      <string>blockSextant-346</string>
      <string>blockSextant-346.stypo</string>
      <string>blockSextant-1346</string>
      <string>blockSextant-1346.stypo</string>
      <string>blockSextant-2346</string>
      <string>blockSextant-2346.stypo</string>
      <string>blockSextant-12346</string>
      <string>blockSextant-12346.stypo</string>
      <string>blockSextant-56</string>
      <string>blockSextant-56.stypo</string>
      <string>blockSextant-156</string>
      <string>blockSextant-156.stypo</string>
      <string>blockSextant-256</string>
      <string>blockSextant-256.stypo</string>
      <string>blockSextant-1256</string>
      <string>blockSextant-1256.stypo</string>
      <string>blockSextant-356</string>
      <string>blockSextant-356.stypo</string>
      <string>blockSextant-1356</string>
      <string>blockSextant-1356.stypo</string>
      <string>blockSextant-2356</string>
      <string>blockSextant-2356.stypo</string>
      <string>blockSextant-12356</string>
      <string>blockSextant-12356.stypo</string>
      <string>blockSextant-456</string>
      <string>blockSextant-456.stypo</string>
      <string>blockSextant-1456</string>
      <string>blockSextant-1456.stypo</string>
      <string>blockSextant-2456</string>
      <string>blockSextant-2456.stypo</string>
      <string>blockSextant-12456</string>
      <string>blockSextant-12456.stypo</string>
      <string>blockSextant-3456</string>
      <string>blockSextant-3456.stypo</string>
      <string>blockSextant-13456</string>
      <string>blockSextant-13456.stypo</string>
      <string>blockSextant-23456</string>
      <string>blockSextant-23456.stypo</string>

Added "uni[CP]" names to lib.plist::public.postscriptNames dictionary of each font.

      <key>checkerBoardDeleteApple2</key>
      <string>uni2427</string>
      <key>checkerBoardDeleteTrs80</key>
      <string>uni2428</string>
      <key>checkerBoardDeleteAmstradCpc</key>
      <string>uni2429</string>
      <key>checkerBoardDeleteAmstradCpc.stypo</key>
      <string>uni2429.stypo</string>
      <key>checkerBoardFill</key>
      <string>uni1FB95</string>
      <key>checkerBoardFill.stypo</key>
      <string>uni1FB95.stypo</string>
      <key>checkerBoardFillInverse</key>
      <string>uni1FB96</string>
      <key>checkerBoardFillInverse.stypo</key>
      <string>uni1FB96.stypo</string>
      <key>blockQuadrant-UC</key>
      <string>uni1FBE4</string>
      <key>blockQuadrant-UC.stypo</key>
      <string>uni1FBE4.stypo</string>
      <key>blockQuadrant-LC</key>
      <string>uni1FBE5</string>
      <key>blockQuadrant-LC.stypo</key>
      <string>uni1FBE5.stypo</string>
      <key>blockQuadrant-ML</key>
      <string>uni1FBE6</string>
      <key>blockQuadrant-ML.stypo</key>
      <string>uni1FBE6.stypo</string>
      <key>blockQuadrant-MR</key>
      <string>uni1FBE7</string>
      <key>blockQuadrant-MR.stypo</key>
      <string>uni1FBE7.stypo</string>
      <key>blockTriangle-1</key>
      <string>uni1FB6D</string>
      <key>blockTriangle-1.stypo</key>
      <string>uni1FB6D.stypo</string>
      <key>blockTriangle-2</key>
      <string>uni1FB6C</string>
      <key>blockTriangle-2.stypo</key>
      <string>uni1FB6C.stypo</string>
      <key>blockTriangle-3</key>
      <string>uni1FB6E</string>
      <key>blockTriangle-3.stypo</key>
      <string>uni1FB6E.stypo</string>
      <key>blockTriangle-4</key>
      <string>uni1FB6F</string>
      <key>blockTriangle-4.stypo</key>
      <string>uni1FB6F.stypo</string>
      <key>blockTriangle-14</key>
      <string>uni1FB9A</string>
      <key>blockTriangle-14.stypo</key>
      <string>uni1FB9A.stypo</string>
      <key>blockTriangle-23</key>
      <string>uni1FB9B</string>
      <key>blockTriangle-23.stypo</key>
      <string>uni1FB9B.stypo</string>
      <key>blockTriangle-123</key>
      <string>uni1FB6B</string>
      <key>blockTriangle-123.stypo</key>
      <string>uni1FB6B.stypo</string>
      <key>blockTriangle-124</key>
      <string>uni1FB6A</string>
      <key>blockTriangle-124.stypo</key>
      <string>uni1FB6A.stypo</string>
      <key>blockTriangle-134</key>
      <string>uni1FB68</string>
      <key>blockTriangle-134.stypo</key>
      <string>uni1FB68.stypo</string>
      <key>blockTriangle-234</key>
      <string>uni1FB69</string>
      <key>blockTriangle-234.stypo</key>
      <string>uni1FB69.stypo</string>
      <key>blockCircle-1</key>
      <string>uni1FBEF</string>
      <key>blockCircle-1.stypo</key>
      <string>uni1FBEF.stypo</string>
      <key>blockCircle-2</key>
      <string>uni1FBEC</string>
      <key>blockCircle-2.stypo</key>
      <string>uni1FBEC.stypo</string>
      <key>blockCircle-3</key>
      <string>uni1FBED</string>
      <key>blockCircle-3.stypo</key>
      <string>uni1FBED.stypo</string>
      <key>blockCircle-4</key>
      <string>uni1FBEE</string>
      <key>blockCircle-4.stypo</key>
      <string>uni1FBEE.stypo</string>
      <key>blockCircle-UC</key>
      <string>uni1FBE8</string>
      <key>blockCircle-UC.stypo</key>
      <string>uni1FBE8.stypo</string>
      <key>blockCircle-LC</key>
      <string>uni1FBEA</string>
      <key>blockCircle-LC.stypo</key>
      <string>uni1FBEA.stypo</string>
      <key>blockCircle-ML</key>
      <string>uni1FBEB</string>
      <key>blockCircle-ML.stypo</key>
      <string>uni1FBEB.stypo</string>
      <key>blockCircle-MR</key>
      <string>uni1FBE9</string>
      <key>blockCircle-MR.stypo</key>
      <string>uni1FBE9.stypo</string>
      <key>blockSextant-1</key>
      <string>uni1FB00</string>
      <key>blockSextant-1.stypo</key>
      <string>uni1FB00.stypo</string>
      <key>blockSextant-2</key>
      <string>uni1FB01</string>
      <key>blockSextant-2.stypo</key>
      <string>uni1FB01.stypo</string>
      <key>blockSextant-12</key>
      <string>uni1FB02</string>
      <key>blockSextant-12.stypo</key>
      <string>uni1FB02.stypo</string>
      <key>blockSextant-3</key>
      <string>uni1FB03</string>
      <key>blockSextant-3.stypo</key>
      <string>uni1FB03.stypo</string>
      <key>blockSextant-13</key>
      <string>uni1FB04</string>
      <key>blockSextant-13.stypo</key>
      <string>uni1FB04.stypo</string>
      <key>blockSextant-23</key>
      <string>uni1FB05</string>
      <key>blockSextant-23.stypo</key>
      <string>uni1FB05.stypo</string>
      <key>blockSextant-123</key>
      <string>uni1FB06</string>
      <key>blockSextant-123.stypo</key>
      <string>uni1FB06.stypo</string>
      <key>blockSextant-4</key>
      <string>uni1FB07</string>
      <key>blockSextant-4.stypo</key>
      <string>uni1FB07.stypo</string>
      <key>blockSextant-14</key>
      <string>uni1FB08</string>
      <key>blockSextant-14.stypo</key>
      <string>uni1FB08.stypo</string>
      <key>blockSextant-24</key>
      <string>uni1FB09</string>
      <key>blockSextant-24.stypo</key>
      <string>uni1FB09.stypo</string>
      <key>blockSextant-124</key>
      <string>uni1FB0A</string>
      <key>blockSextant-124.stypo</key>
      <string>uni1FB0A.stypo</string>
      <key>blockSextant-34</key>
      <string>uni1FB0B</string>
      <key>blockSextant-34.stypo</key>
      <string>uni1FB0B.stypo</string>
      <key>blockSextant-134</key>
      <string>uni1FB0C</string>
      <key>blockSextant-134.stypo</key>
      <string>uni1FB0C.stypo</string>
      <key>blockSextant-234</key>
      <string>uni1FB0D</string>
      <key>blockSextant-234.stypo</key>
      <string>uni1FB0D.stypo</string>
      <key>blockSextant-1234</key>
      <string>uni1FB0E</string>
      <key>blockSextant-1234.stypo</key>
      <string>uni1FB0E.stypo</string>
      <key>blockSextant-5</key>
      <string>uni1FB0F</string>
      <key>blockSextant-5.stypo</key>
      <string>uni1FB0F.stypo</string>
      <key>blockSextant-15</key>
      <string>uni1FB10</string>
      <key>blockSextant-15.stypo</key>
      <string>uni1FB10.stypo</string>
      <key>blockSextant-25</key>
      <string>uni1FB11</string>
      <key>blockSextant-25.stypo</key>
      <string>uni1FB11.stypo</string>
      <key>blockSextant-125</key>
      <string>uni1FB12</string>
      <key>blockSextant-125.stypo</key>
      <string>uni1FB12.stypo</string>
      <key>blockSextant-35</key>
      <string>uni1FB13</string>
      <key>blockSextant-35.stypo</key>
      <string>uni1FB13.stypo</string>
      <key>blockSextant-235</key>
      <string>uni1FB14</string>
      <key>blockSextant-235.stypo</key>
      <string>uni1FB14.stypo</string>
      <key>blockSextant-1235</key>
      <string>uni1FB15</string>
      <key>blockSextant-1235.stypo</key>
      <string>uni1FB15.stypo</string>
      <key>blockSextant-45</key>
      <string>uni1FB16</string>
      <key>blockSextant-45.stypo</key>
      <string>uni1FB16.stypo</string>
      <key>blockSextant-145</key>
      <string>uni1FB17</string>
      <key>blockSextant-145.stypo</key>
      <string>uni1FB17.stypo</string>
      <key>blockSextant-245</key>
      <string>uni1FB18</string>
      <key>blockSextant-245.stypo</key>
      <string>uni1FB18.stypo</string>
      <key>blockSextant-1245</key>
      <string>uni1FB19</string>
      <key>blockSextant-1245.stypo</key>
      <string>uni1FB19.stypo</string>
      <key>blockSextant-345</key>
      <string>uni1FB1A</string>
      <key>blockSextant-345.stypo</key>
      <string>uni1FB1A.stypo</string>
      <key>blockSextant-1345</key>
      <string>uni1FB1B</string>
      <key>blockSextant-1345.stypo</key>
      <string>uni1FB1B.stypo</string>
      <key>blockSextant-2345</key>
      <string>uni1FB1C</string>
      <key>blockSextant-2345.stypo</key>
      <string>uni1FB1C.stypo</string>
      <key>blockSextant-12345</key>
      <string>uni1FB1D</string>
      <key>blockSextant-12345.stypo</key>
      <string>uni1FB1D.stypo</string>
      <key>blockSextant-6</key>
      <string>uni1FB1E</string>
      <key>blockSextant-6.stypo</key>
      <string>uni1FB1E.stypo</string>
      <key>blockSextant-16</key>
      <string>uni1FB1F</string>
      <key>blockSextant-16.stypo</key>
      <string>uni1FB1F.stypo</string>
      <key>blockSextant-26</key>
      <string>uni1FB20</string>
      <key>blockSextant-26.stypo</key>
      <string>uni1FB20.stypo</string>
      <key>blockSextant-126</key>
      <string>uni1FB21</string>
      <key>blockSextant-126.stypo</key>
      <string>uni1FB21.stypo</string>
      <key>blockSextant-36</key>
      <string>uni1FB22</string>
      <key>blockSextant-36.stypo</key>
      <string>uni1FB22.stypo</string>
      <key>blockSextant-136</key>
      <string>uni1FB23</string>
      <key>blockSextant-136.stypo</key>
      <string>uni1FB23.stypo</string>
      <key>blockSextant-236</key>
      <string>uni1FB24</string>
      <key>blockSextant-236.stypo</key>
      <string>uni1FB24.stypo</string>
      <key>blockSextant-1236</key>
      <string>uni1FB25</string>
      <key>blockSextant-1236.stypo</key>
      <string>uni1FB25.stypo</string>
      <key>blockSextant-46</key>
      <string>uni1FB26</string>
      <key>blockSextant-46.stypo</key>
      <string>uni1FB26.stypo</string>
      <key>blockSextant-146</key>
      <string>uni1FB27</string>
      <key>blockSextant-146.stypo</key>
      <string>uni1FB27.stypo</string>
      <key>blockSextant-1246</key>
      <string>uni1FB28</string>
      <key>blockSextant-1246.stypo</key>
      <string>uni1FB28.stypo</string>
      <key>blockSextant-346</key>
      <string>uni1FB29</string>
      <key>blockSextant-346.stypo</key>
      <string>uni1FB29.stypo</string>
      <key>blockSextant-1346</key>
      <string>uni1FB2A</string>
      <key>blockSextant-1346.stypo</key>
      <string>uni1FB2A.stypo</string>
      <key>blockSextant-2346</key>
      <string>uni1FB2B</string>
      <key>blockSextant-2346.stypo</key>
      <string>uni1FB2B.stypo</string>
      <key>blockSextant-12346</key>
      <string>uni1FB2C</string>
      <key>blockSextant-12346.stypo</key>
      <string>uni1FB2C.stypo</string>
      <key>blockSextant-56</key>
      <string>uni1FB2D</string>
      <key>blockSextant-56.stypo</key>
      <string>uni1FB2D.stypo</string>
      <key>blockSextant-156</key>
      <string>uni1FB2E</string>
      <key>blockSextant-156.stypo</key>
      <string>uni1FB2E.stypo</string>
      <key>blockSextant-256</key>
      <string>uni1FB2F</string>
      <key>blockSextant-256.stypo</key>
      <string>uni1FB2F.stypo</string>
      <key>blockSextant-1256</key>
      <string>uni1FB30</string>
      <key>blockSextant-1256.stypo</key>
      <string>uni1FB30.stypo</string>
      <key>blockSextant-356</key>
      <string>uni1FB31</string>
      <key>blockSextant-356.stypo</key>
      <string>uni1FB31.stypo</string>
      <key>blockSextant-1356</key>
      <string>uni1FB32</string>
      <key>blockSextant-1356.stypo</key>
      <string>uni1FB32.stypo</string>
      <key>blockSextant-2356</key>
      <string>uni1FB33</string>
      <key>blockSextant-2356.stypo</key>
      <string>uni1FB33.stypo</string>
      <key>blockSextant-12356</key>
      <string>uni1FB34</string>
      <key>blockSextant-12356.stypo</key>
      <string>uni1FB34.stypo</string>
      <key>blockSextant-456</key>
      <string>uni1FB35</string>
      <key>blockSextant-456.stypo</key>
      <string>uni1FB35.stypo</string>
      <key>blockSextant-1456</key>
      <string>uni1FB36</string>
      <key>blockSextant-1456.stypo</key>
      <string>uni1FB36.stypo</string>
      <key>blockSextant-2456</key>
      <string>uni1FB37</string>
      <key>blockSextant-2456.stypo</key>
      <string>uni1FB37.stypo</string>
      <key>blockSextant-12456</key>
      <string>uni1FB38</string>
      <key>blockSextant-12456.stypo</key>
      <string>uni1FB38.stypo</string>
      <key>blockSextant-3456</key>
      <string>uni1FB39</string>
      <key>blockSextant-3456.stypo</key>
      <string>uni1FB39.stypo</string>
      <key>blockSextant-13456</key>
      <string>uni1FB3A</string>
      <key>blockSextant-13456.stypo</key>
      <string>uni1FB3A.stypo</string>
      <key>blockSextant-23456</key>
      <string>uni1FB3B</string>
      <key>blockSextant-23456.stypo</key>
      <string>uni1FB3B.stypo</string>

Updated FONTLOG.txt

Added characters image and updated README.md accordingly
Note I used a new image for these characters because while it has only 172 glyphs at this point, next updates will bring over 900, and they are identical between regular and italic fonts.

Before (if applicable) and After Images of the Character(s)

This update adds characters of the Symbols for Legacy Computing, especially interesting for terminals:

  • U+1FB95 : Checker Board Fill (full block size)
  • U+1FB96 : Inverse Checker Board Fill (full block size)
  • U+2427 : Symbol for delete square checker board form (Apple ][ style)
  • U+2428 : Symbol for delete rectangular checker board form (TRS-80 style)
  • U+2429 : Symbol for delete medium shade form (Amstrad CPC style)
  • U+1FBE4 - U+1FBE7 : New centered Quadrants (Symbols for Legacy Computing).
  • U+1FBE8 - U+1FBEF : Circular Quadrant characters (Symbols for Legacy Computing).
  • U+1FB68 - U+1FB6F : Triangular Quadrant characters (Symbols for Legacy Computing).
  • U+1FB00 - U+1FB3B : Sextant characters (Symbols for Legacy Computing).

Note this update does not modify any existing character, I'm only adding new ones.

cascadia-legacycomputing-characters

Validation Steps Performed

I've been using block elements for years, and have been pushing for about two years for the Symbols for Legacy Computing to be added : #597.
I have a bunch of test files ready for when sextants and octants would be added : https://github.com/PhMajerus/ANSI-art/tree/main/Unicode
But they never got added. So I decided to give it a try and provide as much of the old-school graphics characters as I can to improve the situation.

Testing have been done by using a build of the font for days, experimenting with it in Windows Terminal and Visual Studio editor.
I also checked the details from VTT, and created some test files such as curl https://raw.githubusercontent.com/PhMajerus/ANSI-art/main/Unicode/Blocks%20tables.txt
I also tested with ANSI-art using VT colors to check for color bleeding around the cell, and while it's not pixel-perfect at all sizes, it seems to be consistent with the existing full block, half block, and quadrant characters:
image

I don't know how to perform hinting, but since these are purely geometric shapes, I don't think controlling the exact pixels is important, they seem to render properly at all sizes I tried.

I hope you can accept this request so everyone can benefit from those new characters, and I plan to push more of the same as soon as possible.

Philippe Majerus added 2 commits January 16, 2024 03:51
- Added some new checkerboard characters U+2427 - U+2429, U+1FB95, U+1FB96 (Symbols for Legacy Computing).
- Added new centered Quadrants U+1FBE4, U+1FBE5 (Symbols for Legacy Computing).
    Note U+1FBE6, U+1FBE7 will be added soon as part of Octants.
- Added Triangular Quadrant characters U+1FB68 - U+1FB6F, U+1FB9A, U+1FB9B (Symbols for Legacy Computing).
- Added Sextant characters U+1FB00 - U+1FB3B (Symbols for Legacy Computing).

Note this update does not modify any existing character, I'm only adding new ones.
- Added new centered Quadrants U+1FBE6, U+1FBE7 (Symbols for Legacy Computing).
- Added circle quadrants U+1FBE8 - U+1FBEF (Symbols for Legacy Computing).

Note this update does not modify any existing character, I'm only adding new ones.
@aaronbell
Copy link
Collaborator

Thanks for all this work! Sorry for the delay in following up. Just to let you know, I have set aside some time next week to take a look at this and get it merged.

Cheers

@PhMajerus
Copy link
Contributor Author

PhMajerus commented Feb 7, 2024

Thanks @aaronbell.

I have some Sextants test files if you want: https://github.com/PhMajerus/ANSI-art/tree/main/Unicode

This is just the beginning, I have Octants #711, Large Type Pieces #709, as well as a few misc. legacy computing symbols, ready as well:
cascadia-code-legacycomputing-characters

@PhMajerus
Copy link
Contributor Author

@aaronbell
I've just read more about fonts conventions and found out characters from supplementary planes should be named u[CP] instead of uni[CP] in lib.plist::public.postscriptNames.
I noticed you didn't have any character outside the BMP yet and the characters I added are the first > U+FFFF.
Which naming scheme do you want to use? Shall I commit a fix with the postscript names changed to u[CP], or should I fix it as part of the next pull request?

@aaronbell
Copy link
Collaborator

Glyph names don’t really matter too much, so don’t worry about it :). I’m planning to take a look at this stuff soon btw!

Using "u[CP]" instead of "uni[CP]" for supplementary planes characters.
@aaronbell
Copy link
Collaborator

Hello! I'm sorry it has taken me a while to taken a look into this, but everything you've done looks good. I'm going to go ahead and merge these in.

@aaronbell aaronbell merged commit 6bda20b into microsoft:main Apr 7, 2024
1 check passed
@dankamongmen
Copy link

Awesome, I will update Notcurses to consider these elements usable on the Windows Console. Is there any way to test for this support at compile, link, and/or runtime? I understand, of course, that a particular font might be missing the glyphs.

@PhMajerus
Copy link
Contributor Author

PhMajerus commented Apr 7, 2024

Thanks @aaronbell !

I'm glad they were good to go as it, that should mean the others I have ready should be as well, as they use the same principles and grid coordinates.

The next batch will be diagonals using the same grid coordinates as the sextants from this one. It will be a small update with only 2×44 glyphs (for GDI+DWrite), but the group after that is the octants, which is 2×236 glyphs. Let me know if you prefer me to group them as a single PR instead.

@PhMajerus
Copy link
Contributor Author

@dankamongmen Thanks for your reactivity to update Notcurses !

I don't think there is any clean way to detect that these characters are available. There are some solutions I can think of, but none is perfect:

  • Since Cascadia is included in Windows 11 (and some release of Windows Server, not sure which build it is), a specific future build of the OS will probably have the updated font as part of the OS, ensuring it is available. But using that to enable sextants means users in older versions would miss on the benefit of installing the font separately or having the one bundled with Terminal from the store.
  • Cascadia Mono is included with the Windows Terminal when installed from the Microsoft Store, so a specific version of Terminal will ensure sextants are available, but again, using that to enable sextants would block users installing an updated font separately.
  • Windows provides an API to find out which font the user has selected in conhost, and you could then check the version of the font. Unfortunately, that API doesn't work (or more precisely, succeeds with a dummy value, not the real font face name) when using ConPTY (Windows Terminal and other PTY-style terminals).

It is probably better to just wait for the Microsoft Store version of Terminal to include the updated font and then turn it on, as it means almost every user will get update quickly.
Maybe someone from the Terminal team has some better idea.

@aaronbell
Copy link
Collaborator

@PhMajerus Might as well just group them :)

BTW, I think I mentioned this before but we are planning one more release of this version of Cascadia in the coming weeks, and then will hold off for a couple months as I work on the next version. So if you want this to be added soon, I'd suggest getting it pulled together! :)

@PhMajerus
Copy link
Contributor Author

PhMajerus commented Apr 7, 2024

@aaronbell Yes, you mentioned it, but most should be easy to convert to your new version, and at least we have a reference to experiment with those characters.
I'm not working on any new glyph since January (except improvements on the Large Type Pieces), but I was waiting for this PR to get through before adding more stuff as you mentioned it is easier to review smaller batches.

Should I just add everything I have ready in a single PR then?

  • Diagonals (2×44 glyphs)
  • Octants (2×236 glyphs)
  • Sedecimants & Eights (2×56 glyphs)
  • Separated Quadrants & Sextants (2×78 glyphs)
  • Segmented Digits (10 glyphs)
  • Large Type Pieces (2×55 glyphs)

That's 948 glif files at once, they're all simple polygons, except for the segmented digits and large type pieces.

@aaronbell
Copy link
Collaborator

@PhMajerus go for it!

@dankamongmen
Copy link

thanks for the detailed response @PhMajerus !

@PhMajerus
Copy link
Contributor Author

PhMajerus commented Apr 10, 2024

Just to complete, as this PR can be used as reference for changes to perform to add glyphs and one step was missing from the details above:

The mapping to substitute GDI with DWrite versions of glyphs added in features.fea::rclt feature of non-italic fonts and in features/rclt.fea::rclt must also be added in features/rclt_PL.fea::rclt.

See #721 for details.

DHowett pushed a commit that referenced this pull request Apr 23, 2024
…extants, segmented digits, and large type pieces (#723)

## New diagonals, octants, sedecimants & eights, separated quadrants &
sextants, segmented digits, and large type pieces (Symbols for Legacy
Computing)

- Added diagonals `U+1FB3C` - `U+1FB67`
- Added octants (2×4 mosaics) `U+1CD00` - `U+1CDE5`
- Added sedecimants (4×4 mosaics) `U+1CE90` - `U+1CEAF`
- Added eights (8×8 patterns) `U+1FB70` - `U+1FB80`, `U+1FB82` -
`U+1FB8B`
- Added misc. blocks `U+1FB97`, `U+1FBCE`, `U+1FBCF`
- Added separated quadrants (2×2) `U+1CC21` - `U+1CC2F`
- Added separated sextants (2×3) `U+1CE51` - `U+1CE8F`
- Added segmented digits (LED/LCD display style) `U+1CCF0` - `U+1CCF9`
- Added large type pieces (see #709) `U+1CE1A` - `U+1CE50`

This update does not modify any existing character, it is only adding
new characters from the Symbols for Legacy Computing blocks (original
and supplement).  These characters use the same unified coordinates as
my previous #708 submission. It continues the sextants with diagonal
fills that meet the sextants corners, adds octants, most of the 8×8
pixels-based lines and fills (sedecimants & eights), as well as the
separated mosaics, segmented digits, and large type pieces.  Some
existing mosaic characters are not perfectly aligned on the same grid,
and it would be best to adjust them to fit the unified grid as well, but
that is not part of this PR, and I guess we won't have the time to do
that for the next release.

Note it does not complete the original Symbols for Legacy Computing
block yet, as it does not include the extra lines/box-drawing
characters, shaded mosaics, MouseText, and some other specific symbols.
The focus has been on completing the mosaics part, including the ones
coming in Unicode 16.0, and the Large Type Pieces.

This one is quite big, containing almost all the glyphs I've been
working on at once. This is to meet the short deadline for the next
release of Cascadia Code, as discussed with @aaronbell. It contains 948
glyphs for 479 characters.

Many of the glyphs are pure geometric shapes with no artistic liberty at
all, they simply follow the unified grid and handle both GDI and DWrite
("stypo") variants.

All the glyphs have been added to the `features.fea::@NotSpace` list of
non-italic fonts, except for the segmented digits, which have been added
to `@Digit` instead of `@NotSpace`.

The segmented digits `U+1CCF0` - `U+1CCF9` are based on their original
Atari ST design and Unicode reference design, with the bounding box and
segments widths adjusted to fit the `H` character, and spaces between
the segments large enough to be visible even at 12pt on 100% DPI.

The Large Type Pieces are based on their original HP 2640 Series
terminals design and Unicode reference design, but I took liberties to
reinterpret the pieces to make them more rounded and, I believe, more in
line with the Cascadia Code design.  Note the Unicode reference design
is somewhat wrong as their diagonals do not join perfectly, while my
version takes great care to support all the combinations alignments with
straight diagonal lines.  The only piece where more artistic liberty is
available is the `Q` stem `U+1CE45`, where I tried to make it more
reminiscent of Cascadia's `Q` design.

More details and screenshots of the large type pieces are available in
issue #709.

Finally, `U+1FB97` is the same pattern as `U+1CDB7`, they have different
origins, but I'm not sure why Unicode repeated it for octants instead of
reusing the existing one as they did for some other existing pattern. I
included them as separate glyphs as well.

* Continues #708 
* Improves #715 (does not close it, but greatly improves coverage)
* Improves #597 (does not close it, but greatly improves coverage)
* Closes #711
* Closes #709

Co-authored-by: Philippe Majerus <phm@live.com>
DHowett pushed a commit that referenced this pull request Apr 26, 2024
This update adjusts the points coordinates of some previously existing
blocks/mosaics characters to fit them in the same grid as used by
octants and eights.
This is required because the new octants and eights from Symbols for
Legacy Computing do not duplicate existing patterns and expect those
existing one to join perfectly with them to provide the whole set of all
possible pseudopixels mosaics.

This update verifies and adjusts the existing characters that are now
required to join seamlessly with the extended pseudo-pixels mosaics
introduced with the symbols for legacy computing.
Some of the existing characters were not proper mosaics, most notably
`▞`, where the two black rectangles overlap because they don't use the
same y coordinates.
This shouldn't happen as all the mosaics are supposed to fit precisely
on a unified grid.
Only a few characters required adjustments, but this PR also documents
all the glyphs that have been checked to ensure alignments of all the
mosaic characters.

**BLOCKS:**
`U+00A0` nbspace : already correct
`U+2588` fullBlock & fullBlock.stypo : already correct (used as
reference bounding rectangle for all pseudopixels mosaics)

**HALF-BLOCKS:**
`U+2580` upperHalfBlock & upperHalfBlock.stypo : y=50% fixed from 707 to
873 (gdi) and 710 (stypo)
`U+2584` lowerHalfBlock & lowerHalfBlock.stypo : already correct
(confirming upperHalfBlock y=50% was wrong)
`U+258C` leftBlock & leftBlock.stypo : already correct
`U+2590` rightBlock & rightBlock.stypo : already correct

**QUADRANTS:**
`U+2596` lowerLeftBlock & lowerLeftBlock.stypo : already correct
(confirming all other corrections above and below)
`U+2597` lowerRightBlock & lowerRightBlock.stypo : y=50% fixed from 707
to 873 (gdi) and 710 (stypo)
`U+2598` upperLeftBlock & upperLeftBlock.stypo : y=50% fixed from 707 to
873 (gdi) and 710 (stypo)
`U+2599` upperLeftAndLowerLeftAndLowerRightBlock &
upperLeftAndLowerLeftAndLowerRightBlock.stypo : already correct
`U+259A` upperLeftAndLowerRightBlock & upperLeftAndLowerRightBlock.stypo
: y=50% fixed from 707 to 873 (gdi) and 710 (stypo)
`U+259B` upperLeftAndUpperRightAndLowerLeftBlock &
upperLeftAndUpperRightAndLowerLeftBlock.stypo : y=50% fixed from 707 to
873 (gdi) and 710 (stypo)
`U+259C` upperLeftAndUpperRightAndLowerRightBlock &
upperLeftAndUpperRightAndLowerRightBlock.stypo : y=50% fixed from 707 to
873 (gdi) and 710 (stypo)
`U+259D` upperRightBlock & upperRightBlock.stypo : y=50% fixed from 707
to 873 (gdi) and 710 (stypo)
`U+259E` upperRightAndLowerLeftBlock & upperRightAndLowerLeftBlock.stypo
: Some y=50% fixed from 707 to 873 (gdi) and 710 (stypo), some were
already correct
`U+259F` upperRightAndLowerLeftAndLowerRightBlock &
upperRightAndLowerLeftAndLowerRightBlock.stypo : already correct

**OCTANTS:**
`U+2582` lowerOneQuarterBlock & lowerOneQuarterBlock.stypo : already
correct
`U+2586` lowerThreeQuartersBlock & lowerThreeQuartersBlock.stypo :
already correct

**EIGHTS:**
`U+2581` lowerOneEighthBlock & lowerOneEighthBlock.stypo : gdi was
correct, y fixed from -183 to -182 (rounding unification for all Eights)
for stypo
`U+2583` lowerThreeEighthsBlock & lowerThreeEighthsBlock.stypo : y fixed
from 534 to 535 (rounding unification for all Eights) for GDI, stypo was
correct
`U+2585` lowerFiveEighthsBlock & lowerFiveEighthsBlock.stypo : already
correct
`U+2587` lowerSevenEighthsBlock & lowerSevenEighthsBlock.stypo : y fixed
from 1887 to 1888 (rounding unification for all Eights) for GDI, stypo
was correct
`U+2594` upperOneEighthBlock & upperOneEighthBlock.stypo : y fixed from
1887 to 1888 (rounding unification for all Eights) for GDI, stypo was
correct
`U+1FB83` upperThreeEighthsBlock & upperThreeEighthsBlock.stypo : from
my PR #723
`U+1FB86` upperSevenEighthsBlock & upperSevenEighthsBlock.stypo : from
my PR #723

`U+2589` leftSevenEighthsBlock & leftSevenEighthsBlock.stypo : already
correct
`U+258A` leftThreeQuartersBlock & leftThreeQuartersBlock.stypo : already
correct
`U+258B` leftFiveEighthsBlock & leftFiveEighthsBlock.stypo : already
correct
`U+258D` leftThreeEighthsBlock & leftThreeEighthsBlock.stypo : already
correct
`U+258E` leftOneQuarterBlock & leftOneQuarterBlock.stypo : already
correct
`U+258F` leftOneEighthBlock & leftOneEighthBlock.stypo : already correct

`U+2595` rightOneEighthBlock & rightOneEighthBlock.stypo : already
correct
`U+1FB87` rightOneQuarterBlock & rightOneQuarterBlock.stypo : from my PR
#723
`U+1FB88` rightThreeEighthsBlock & rightThreeEighthsBlock.stypo : from
my PR #723
`U+1FB89` rightFiveEighthsBlock & rightFiveEighthsBlock.stypo : from my
PR #723
`U+1FB8A` rightThreeQuartersBlock & rightThreeQuartersBlock.stypo : from
my PR #723
`U+1FB8B` rightSevenEighthsBlock & rightSevenEighthsBlock.stypo : from
my PR #723

This fixes the inconsistent alignments problem explained in issue #644,
and ensures unified grid coordinates with PR #708 and #723.

## Validation Steps Performed
Based on purely mathematical grid coordinates already used for octants,
checked visually in VTT, Terminal Preview 1.20.10822.0 and Canary
1.21.240424002-llm, and Visual Studio editor.

Note there is another related issue that impacts some of those
characters, but this PR at least provides the correct glyphs and
improves the situation. I believe the remaining alignment issue to be a
problem in Terminal itself as it works perfectly in Visual Studio
editor, and the original Cascadia Mono 2111.001 exhibits the same issue.
More details about this in #644.
Having the proper coordinates at least ensures they won't induce in
error someone trying to fix the Terminal rendering and expecting the
alignments to work with a font using inconsistent glyphs coordinates. A
believe this PR to be a step in the right direction.

Closes #644

Co-authored-by: Philippe Majerus <phm@live.com>
DHowett added a commit to microsoft/terminal that referenced this pull request Apr 26, 2024
This update adds support for:

- Unicode 16 Large Type Pieces (they are really cool, you *have* to see
them)
- Unicode 13 Sextants (U+1FB00 - U+1FB3B)
- Octants, sedecimants, eights, miscellanrous blocks, separated
quadrants and sextants, and diagonals
- Segmented digits (think LED numbers)
- Checkerboards

It also fixes the coordinate system used in all of the blocks,
half-blocks, quadrants and eights for consistency.

This update does **not** include the new "Nerd Fonts" variant of
Cascadia Code or Cascadia Mono.

With big thanks to @PhMajerus for contributing all of the new symbols
for legacy computing.

See microsoft/cascadia-code#723, microsoft/cascadia-code#708 and
microsoft/cascadia-code#727 for more details.
DHowett added a commit to microsoft/terminal that referenced this pull request Apr 26, 2024
This update adds support for:

- Unicode 16 Large Type Pieces (they are really cool, you *have* to see
them)
- Unicode 13 Sextants (U+1FB00 - U+1FB3B)
- Octants, sedecimants, eights, miscellanrous blocks, separated
quadrants and sextants, and diagonals
- Segmented digits (think LED numbers)
- Checkerboards

It also fixes the coordinate system used in all of the blocks,
half-blocks, quadrants and eights for consistency.

This update does **not** include the new "Nerd Fonts" variant of
Cascadia Code or Cascadia Mono.

With big thanks to @PhMajerus for contributing all of the new symbols
for legacy computing.

See microsoft/cascadia-code#723, microsoft/cascadia-code#708 and
microsoft/cascadia-code#727 for more details.

(cherry picked from commit 41bb28c)
Service-Card-Id: 92434844
Service-Version: 1.19
DHowett added a commit to microsoft/terminal that referenced this pull request Apr 26, 2024
This update adds support for:

- Unicode 16 Large Type Pieces (they are really cool, you *have* to see
them)
- Unicode 13 Sextants (U+1FB00 - U+1FB3B)
- Octants, sedecimants, eights, miscellanrous blocks, separated
quadrants and sextants, and diagonals
- Segmented digits (think LED numbers)
- Checkerboards

It also fixes the coordinate system used in all of the blocks,
half-blocks, quadrants and eights for consistency.

This update does **not** include the new "Nerd Fonts" variant of
Cascadia Code or Cascadia Mono.

With big thanks to @PhMajerus for contributing all of the new symbols
for legacy computing.

See microsoft/cascadia-code#723, microsoft/cascadia-code#708 and
microsoft/cascadia-code#727 for more details.

(cherry picked from commit 41bb28c)
Service-Card-Id: 92434845
Service-Version: 1.20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Unicode 13 sextants U+1FB00--U+1FB3B
3 participants