microsoft / cascadia-code

This is a fun, new monospaced font that includes programming ligatures and is designed to enhance the modern look and feel of the Windows Terminal.
Other
25.1k stars 793 forks source link

New diagonals, octants, sedecimants & eights, separated quadrants & sextants, segmented digits, and large type pieces #723

Closed PhMajerus closed 2 months ago

PhMajerus commented 2 months ago

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

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.

DHowett commented 2 months ago

@phmajerus I split your PR body into a commit message and a comment (since commit messages can't have images); comment follows


Summary of the Pull Request

image

Here are some of the characters added by this pull request:

image

image

image

PR Checklist

Detailed Description of the Pull Request / Additional comments

Here is the list of the glyphs added by this PR:

blockDiagonal-1FB3C blockDiagonal-1FB3C.stypo blockDiagonal-1FB3D blockDiagonal-1FB3D.stypo blockDiagonal-1FB3E blockDiagonal-1FB3E.stypo blockDiagonal-1FB3F blockDiagonal-1FB3F.stypo blockDiagonal-1FB40 blockDiagonal-1FB40.stypo blockDiagonal-1FB41 blockDiagonal-1FB41.stypo blockDiagonal-1FB42 blockDiagonal-1FB42.stypo blockDiagonal-1FB43 blockDiagonal-1FB43.stypo blockDiagonal-1FB44 blockDiagonal-1FB44.stypo blockDiagonal-1FB45 blockDiagonal-1FB45.stypo blockDiagonal-1FB46 blockDiagonal-1FB46.stypo blockDiagonal-1FB47 blockDiagonal-1FB47.stypo blockDiagonal-1FB48 blockDiagonal-1FB48.stypo blockDiagonal-1FB49 blockDiagonal-1FB49.stypo blockDiagonal-1FB4A blockDiagonal-1FB4A.stypo blockDiagonal-1FB4B blockDiagonal-1FB4B.stypo blockDiagonal-1FB4C blockDiagonal-1FB4C.stypo blockDiagonal-1FB4D blockDiagonal-1FB4D.stypo blockDiagonal-1FB4E blockDiagonal-1FB4E.stypo blockDiagonal-1FB4F blockDiagonal-1FB4F.stypo blockDiagonal-1FB50 blockDiagonal-1FB50.stypo blockDiagonal-1FB51 blockDiagonal-1FB51.stypo blockDiagonal-1FB52 blockDiagonal-1FB52.stypo blockDiagonal-1FB53 blockDiagonal-1FB53.stypo blockDiagonal-1FB54 blockDiagonal-1FB54.stypo blockDiagonal-1FB55 blockDiagonal-1FB55.stypo blockDiagonal-1FB56 blockDiagonal-1FB56.stypo blockDiagonal-1FB57 blockDiagonal-1FB57.stypo blockDiagonal-1FB58 blockDiagonal-1FB58.stypo blockDiagonal-1FB59 blockDiagonal-1FB59.stypo blockDiagonal-1FB5A blockDiagonal-1FB5A.stypo blockDiagonal-1FB5B blockDiagonal-1FB5B.stypo blockDiagonal-1FB5C blockDiagonal-1FB5C.stypo blockDiagonal-1FB5D blockDiagonal-1FB5D.stypo blockDiagonal-1FB5E blockDiagonal-1FB5E.stypo blockDiagonal-1FB5F blockDiagonal-1FB5F.stypo blockDiagonal-1FB60 blockDiagonal-1FB60.stypo blockDiagonal-1FB61 blockDiagonal-1FB61.stypo blockDiagonal-1FB62 blockDiagonal-1FB62.stypo blockDiagonal-1FB63 blockDiagonal-1FB63.stypo blockDiagonal-1FB64 blockDiagonal-1FB64.stypo blockDiagonal-1FB65 blockDiagonal-1FB65.stypo blockDiagonal-1FB66 blockDiagonal-1FB66.stypo blockDiagonal-1FB67 blockDiagonal-1FB67.stypo blockOctant-1 blockOctant-1.stypo blockOctant-2 blockOctant-2.stypo blockOctant-12 blockOctant-12.stypo blockOctant-3 blockOctant-3.stypo blockOctant-23 blockOctant-23.stypo blockOctant-123 blockOctant-123.stypo blockOctant-4 blockOctant-4.stypo blockOctant-14 blockOctant-14.stypo blockOctant-124 blockOctant-124.stypo blockOctant-34 blockOctant-34.stypo blockOctant-134 blockOctant-134.stypo blockOctant-234 blockOctant-234.stypo blockOctant-5 blockOctant-5.stypo blockOctant-15 blockOctant-15.stypo blockOctant-25 blockOctant-25.stypo blockOctant-125 blockOctant-125.stypo blockOctant-135 blockOctant-135.stypo blockOctant-235 blockOctant-235.stypo blockOctant-1235 blockOctant-1235.stypo blockOctant-45 blockOctant-45.stypo blockOctant-145 blockOctant-145.stypo blockOctant-245 blockOctant-245.stypo blockOctant-1245 blockOctant-1245.stypo blockOctant-345 blockOctant-345.stypo blockOctant-1345 blockOctant-1345.stypo blockOctant-2345 blockOctant-2345.stypo blockOctant-12345 blockOctant-12345.stypo blockOctant-6 blockOctant-6.stypo blockOctant-16 blockOctant-16.stypo blockOctant-26 blockOctant-26.stypo blockOctant-126 blockOctant-126.stypo blockOctant-36 blockOctant-36.stypo blockOctant-136 blockOctant-136.stypo blockOctant-236 blockOctant-236.stypo blockOctant-1236 blockOctant-1236.stypo blockOctant-146 blockOctant-146.stypo blockOctant-246 blockOctant-246.stypo blockOctant-1246 blockOctant-1246.stypo blockOctant-346 blockOctant-346.stypo blockOctant-1346 blockOctant-1346.stypo blockOctant-2346 blockOctant-2346.stypo blockOctant-12346 blockOctant-12346.stypo blockOctant-56 blockOctant-56.stypo blockOctant-156 blockOctant-156.stypo blockOctant-256 blockOctant-256.stypo blockOctant-1256 blockOctant-1256.stypo blockOctant-356 blockOctant-356.stypo blockOctant-1356 blockOctant-1356.stypo blockOctant-2356 blockOctant-2356.stypo blockOctant-12356 blockOctant-12356.stypo blockOctant-456 blockOctant-456.stypo blockOctant-1456 blockOctant-1456.stypo blockOctant-2456 blockOctant-2456.stypo blockOctant-12456 blockOctant-12456.stypo blockOctant-3456 blockOctant-3456.stypo blockOctant-13456 blockOctant-13456.stypo blockOctant-23456 blockOctant-23456.stypo blockOctant-123456 blockOctant-123456.stypo blockOctant-7 blockOctant-7.stypo blockOctant-17 blockOctant-17.stypo blockOctant-27 blockOctant-27.stypo blockOctant-127 blockOctant-127.stypo blockOctant-37 blockOctant-37.stypo blockOctant-137 blockOctant-137.stypo blockOctant-237 blockOctant-237.stypo blockOctant-1237 blockOctant-1237.stypo blockOctant-47 blockOctant-47.stypo blockOctant-147 blockOctant-147.stypo blockOctant-247 blockOctant-247.stypo blockOctant-1247 blockOctant-1247.stypo blockOctant-347 blockOctant-347.stypo blockOctant-1347 blockOctant-1347.stypo blockOctant-2347 blockOctant-2347.stypo blockOctant-12347 blockOctant-12347.stypo blockOctant-157 blockOctant-157.stypo blockOctant-257 blockOctant-257.stypo blockOctant-1257 blockOctant-1257.stypo blockOctant-357 blockOctant-357.stypo blockOctant-2357 blockOctant-2357.stypo blockOctant-12357 blockOctant-12357.stypo blockOctant-457 blockOctant-457.stypo blockOctant-1457 blockOctant-1457.stypo blockOctant-12457 blockOctant-12457.stypo blockOctant-3457 blockOctant-3457.stypo blockOctant-13457 blockOctant-13457.stypo blockOctant-23457 blockOctant-23457.stypo blockOctant-67 blockOctant-67.stypo blockOctant-167 blockOctant-167.stypo blockOctant-267 blockOctant-267.stypo blockOctant-1267 blockOctant-1267.stypo blockOctant-367 blockOctant-367.stypo blockOctant-1367 blockOctant-1367.stypo blockOctant-2367 blockOctant-2367.stypo blockOctant-12367 blockOctant-12367.stypo blockOctant-467 blockOctant-467.stypo blockOctant-1467 blockOctant-1467.stypo blockOctant-2467 blockOctant-2467.stypo blockOctant-12467 blockOctant-12467.stypo blockOctant-3467 blockOctant-3467.stypo blockOctant-13467 blockOctant-13467.stypo blockOctant-23467 blockOctant-23467.stypo blockOctant-123467 blockOctant-123467.stypo blockOctant-567 blockOctant-567.stypo blockOctant-1567 blockOctant-1567.stypo blockOctant-2567 blockOctant-2567.stypo blockOctant-12567 blockOctant-12567.stypo blockOctant-3567 blockOctant-3567.stypo blockOctant-13567 blockOctant-13567.stypo blockOctant-23567 blockOctant-23567.stypo blockOctant-123567 blockOctant-123567.stypo blockOctant-4567 blockOctant-4567.stypo blockOctant-14567 blockOctant-14567.stypo blockOctant-24567 blockOctant-24567.stypo blockOctant-124567 blockOctant-124567.stypo blockOctant-34567 blockOctant-34567.stypo blockOctant-134567 blockOctant-134567.stypo blockOctant-234567 blockOctant-234567.stypo blockOctant-1234567 blockOctant-1234567.stypo blockOctant-8 blockOctant-8.stypo blockOctant-18 blockOctant-18.stypo blockOctant-28 blockOctant-28.stypo blockOctant-128 blockOctant-128.stypo blockOctant-38 blockOctant-38.stypo blockOctant-138 blockOctant-138.stypo blockOctant-238 blockOctant-238.stypo blockOctant-1238 blockOctant-1238.stypo blockOctant-48 blockOctant-48.stypo blockOctant-148 blockOctant-148.stypo blockOctant-248 blockOctant-248.stypo blockOctant-1248 blockOctant-1248.stypo blockOctant-348 blockOctant-348.stypo blockOctant-1348 blockOctant-1348.stypo blockOctant-2348 blockOctant-2348.stypo blockOctant-12348 blockOctant-12348.stypo blockOctant-58 blockOctant-58.stypo blockOctant-158 blockOctant-158.stypo blockOctant-258 blockOctant-258.stypo blockOctant-1258 blockOctant-1258.stypo blockOctant-358 blockOctant-358.stypo blockOctant-1358 blockOctant-1358.stypo blockOctant-2358 blockOctant-2358.stypo blockOctant-12358 blockOctant-12358.stypo blockOctant-458 blockOctant-458.stypo blockOctant-1458 blockOctant-1458.stypo blockOctant-2458 blockOctant-2458.stypo blockOctant-12458 blockOctant-12458.stypo blockOctant-3458 blockOctant-3458.stypo blockOctant-13458 blockOctant-13458.stypo blockOctant-23458 blockOctant-23458.stypo blockOctant-123458 blockOctant-123458.stypo blockOctant-168 blockOctant-168.stypo blockOctant-268 blockOctant-268.stypo blockOctant-1268 blockOctant-1268.stypo blockOctant-368 blockOctant-368.stypo blockOctant-2368 blockOctant-2368.stypo blockOctant-12368 blockOctant-12368.stypo blockOctant-468 blockOctant-468.stypo blockOctant-1468 blockOctant-1468.stypo blockOctant-12468 blockOctant-12468.stypo blockOctant-3468 blockOctant-3468.stypo blockOctant-13468 blockOctant-13468.stypo blockOctant-23468 blockOctant-23468.stypo blockOctant-568 blockOctant-568.stypo blockOctant-1568 blockOctant-1568.stypo blockOctant-2568 blockOctant-2568.stypo blockOctant-12568 blockOctant-12568.stypo blockOctant-3568 blockOctant-3568.stypo blockOctant-13568 blockOctant-13568.stypo blockOctant-23568 blockOctant-23568.stypo blockOctant-123568 blockOctant-123568.stypo blockOctant-4568 blockOctant-4568.stypo blockOctant-14568 blockOctant-14568.stypo blockOctant-24568 blockOctant-24568.stypo blockOctant-124568 blockOctant-124568.stypo blockOctant-34568 blockOctant-34568.stypo blockOctant-134568 blockOctant-134568.stypo blockOctant-234568 blockOctant-234568.stypo blockOctant-1234568 blockOctant-1234568.stypo blockOctant-178 blockOctant-178.stypo blockOctant-278 blockOctant-278.stypo blockOctant-1278 blockOctant-1278.stypo blockOctant-378 blockOctant-378.stypo blockOctant-1378 blockOctant-1378.stypo blockOctant-2378 blockOctant-2378.stypo blockOctant-12378 blockOctant-12378.stypo blockOctant-478 blockOctant-478.stypo blockOctant-1478 blockOctant-1478.stypo blockOctant-2478 blockOctant-2478.stypo blockOctant-12478 blockOctant-12478.stypo blockOctant-3478 blockOctant-3478.stypo blockOctant-13478 blockOctant-13478.stypo blockOctant-23478 blockOctant-23478.stypo blockOctant-123478 blockOctant-123478.stypo blockOctant-578 blockOctant-578.stypo blockOctant-1578 blockOctant-1578.stypo blockOctant-2578 blockOctant-2578.stypo blockOctant-12578 blockOctant-12578.stypo blockOctant-3578 blockOctant-3578.stypo blockOctant-13578 blockOctant-13578.stypo blockOctant-23578 blockOctant-23578.stypo blockOctant-123578 blockOctant-123578.stypo blockOctant-4578 blockOctant-4578.stypo blockOctant-14578 blockOctant-14578.stypo blockOctant-24578 blockOctant-24578.stypo blockOctant-124578 blockOctant-124578.stypo blockOctant-34578 blockOctant-34578.stypo blockOctant-134578 blockOctant-134578.stypo blockOctant-234578 blockOctant-234578.stypo blockOctant-1234578 blockOctant-1234578.stypo blockOctant-678 blockOctant-678.stypo blockOctant-1678 blockOctant-1678.stypo blockOctant-2678 blockOctant-2678.stypo blockOctant-12678 blockOctant-12678.stypo blockOctant-3678 blockOctant-3678.stypo blockOctant-13678 blockOctant-13678.stypo blockOctant-23678 blockOctant-23678.stypo blockOctant-123678 blockOctant-123678.stypo blockOctant-4678 blockOctant-4678.stypo blockOctant-14678 blockOctant-14678.stypo blockOctant-24678 blockOctant-24678.stypo blockOctant-124678 blockOctant-124678.stypo blockOctant-34678 blockOctant-34678.stypo blockOctant-134678 blockOctant-134678.stypo blockOctant-234678 blockOctant-234678.stypo blockOctant-1234678 blockOctant-1234678.stypo blockOctant-15678 blockOctant-15678.stypo blockOctant-25678 blockOctant-25678.stypo blockOctant-125678 blockOctant-125678.stypo blockOctant-35678 blockOctant-35678.stypo blockOctant-235678 blockOctant-235678.stypo blockOctant-1235678 blockOctant-1235678.stypo blockOctant-45678 blockOctant-45678.stypo blockOctant-145678 blockOctant-145678.stypo blockOctant-1245678 blockOctant-1245678.stypo blockOctant-1345678 blockOctant-1345678.stypo blockOctant-2345678 blockOctant-2345678.stypo blockSedecimant-1 blockSedecimant-1.stypo blockSedecimant-2 blockSedecimant-2.stypo blockSedecimant-3 blockSedecimant-3.stypo blockSedecimant-4 blockSedecimant-4.stypo blockSedecimant-5 blockSedecimant-5.stypo blockSedecimant-6 blockSedecimant-6.stypo blockSedecimant-7 blockSedecimant-7.stypo blockSedecimant-8 blockSedecimant-8.stypo blockSedecimant-9 blockSedecimant-9.stypo blockSedecimant-A blockSedecimant-A.stypo blockSedecimant-B blockSedecimant-B.stypo blockSedecimant-C blockSedecimant-C.stypo blockSedecimant-D blockSedecimant-D.stypo blockSedecimant-E blockSedecimant-E.stypo blockSedecimant-F blockSedecimant-F.stypo blockSedecimant-G blockSedecimant-G.stypo blockSedecimant-EFG blockSedecimant-EFG.stypo blockSedecimant-DEF blockSedecimant-DEF.stypo blockSedecimant-9D blockSedecimant-9D.stypo blockSedecimant-59D blockSedecimant-59D.stypo blockSedecimant-159 blockSedecimant-159.stypo blockSedecimant-15 blockSedecimant-15.stypo blockSedecimant-123 blockSedecimant-123.stypo blockSedecimant-234 blockSedecimant-234.stypo blockSedecimant-48 blockSedecimant-48.stypo blockSedecimant-48C blockSedecimant-48C.stypo blockSedecimant-8CG blockSedecimant-8CG.stypo blockSedecimant-CG blockSedecimant-CG.stypo verticalOneEighthBlock-2 verticalOneEighthBlock-2.stypo verticalOneEighthBlock-3 verticalOneEighthBlock-3.stypo verticalOneEighthBlock-4 verticalOneEighthBlock-4.stypo verticalOneEighthBlock-5 verticalOneEighthBlock-5.stypo verticalOneEighthBlock-6 verticalOneEighthBlock-6.stypo verticalOneEighthBlock-7 verticalOneEighthBlock-7.stypo horizontalOneEightBlock-2 horizontalOneEightBlock-2.stypo horizontalOneEightBlock-3 horizontalOneEightBlock-3.stypo horizontalOneEightBlock-4 horizontalOneEightBlock-4.stypo horizontalOneEightBlock-5 horizontalOneEightBlock-5.stypo horizontalOneEightBlock-6 horizontalOneEightBlock-6.stypo horizontalOneEightBlock-7 horizontalOneEightBlock-7.stypo leftAndLowerOneEightBlock leftAndLowerOneEightBlock.stypo leftAndUpperOneEightBlock leftAndUpperOneEightBlock.stypo rightAndUpperOneEightBlock rightAndUpperOneEightBlock.stypo rightAndLowerOneEightBlock rightAndLowerOneEightBlock.stypo upperAndLowerOneEightBlock upperAndLowerOneEightBlock.stypo upperThreeEighthsBlock upperThreeEighthsBlock.stypo upperFiveEighthsBlock upperFiveEighthsBlock.stypo upperSevenEighthsBlock upperSevenEighthsBlock.stypo rightOneQuarterBlock rightOneQuarterBlock.stypo rightThreeEighthsBlock rightThreeEighthsBlock.stypo rightFiveEighthsBlock rightFiveEighthsBlock.stypo rightThreeQuartersBlock rightThreeQuartersBlock.stypo rightSevenEighthsBlock rightSevenEighthsBlock.stypo leftTwoThirdsBlock leftTwoThirdsBlock.stypo leftOneThirdBlock leftOneThirdBlock.stypo heavyHorizontalFill heavyHorizontalFill.stypo blockSeparatedQuadrant-1 blockSeparatedQuadrant-1.stypo blockSeparatedQuadrant-2 blockSeparatedQuadrant-2.stypo blockSeparatedQuadrant-12 blockSeparatedQuadrant-12.stypo blockSeparatedQuadrant-3 blockSeparatedQuadrant-3.stypo blockSeparatedQuadrant-13 blockSeparatedQuadrant-13.stypo blockSeparatedQuadrant-23 blockSeparatedQuadrant-23.stypo blockSeparatedQuadrant-123 blockSeparatedQuadrant-123.stypo blockSeparatedQuadrant-4 blockSeparatedQuadrant-4.stypo blockSeparatedQuadrant-14 blockSeparatedQuadrant-14.stypo blockSeparatedQuadrant-24 blockSeparatedQuadrant-24.stypo blockSeparatedQuadrant-124 blockSeparatedQuadrant-124.stypo blockSeparatedQuadrant-34 blockSeparatedQuadrant-34.stypo blockSeparatedQuadrant-134 blockSeparatedQuadrant-134.stypo blockSeparatedQuadrant-234 blockSeparatedQuadrant-234.stypo blockSeparatedQuadrant-1234 blockSeparatedQuadrant-1234.stypo blockSeparatedSextant-1 blockSeparatedSextant-1.stypo blockSeparatedSextant-2 blockSeparatedSextant-2.stypo blockSeparatedSextant-12 blockSeparatedSextant-12.stypo blockSeparatedSextant-3 blockSeparatedSextant-3.stypo blockSeparatedSextant-13 blockSeparatedSextant-13.stypo blockSeparatedSextant-23 blockSeparatedSextant-23.stypo blockSeparatedSextant-123 blockSeparatedSextant-123.stypo blockSeparatedSextant-4 blockSeparatedSextant-4.stypo blockSeparatedSextant-14 blockSeparatedSextant-14.stypo blockSeparatedSextant-24 blockSeparatedSextant-24.stypo blockSeparatedSextant-124 blockSeparatedSextant-124.stypo blockSeparatedSextant-34 blockSeparatedSextant-34.stypo blockSeparatedSextant-134 blockSeparatedSextant-134.stypo blockSeparatedSextant-234 blockSeparatedSextant-234.stypo blockSeparatedSextant-1234 blockSeparatedSextant-1234.stypo blockSeparatedSextant-5 blockSeparatedSextant-5.stypo blockSeparatedSextant-15 blockSeparatedSextant-15.stypo blockSeparatedSextant-25 blockSeparatedSextant-25.stypo blockSeparatedSextant-125 blockSeparatedSextant-125.stypo blockSeparatedSextant-35 blockSeparatedSextant-35.stypo blockSeparatedSextant-135 blockSeparatedSextant-135.stypo blockSeparatedSextant-235 blockSeparatedSextant-235.stypo blockSeparatedSextant-1235 blockSeparatedSextant-1235.stypo blockSeparatedSextant-45 blockSeparatedSextant-45.stypo blockSeparatedSextant-145 blockSeparatedSextant-145.stypo blockSeparatedSextant-245 blockSeparatedSextant-245.stypo blockSeparatedSextant-1245 blockSeparatedSextant-1245.stypo blockSeparatedSextant-345 blockSeparatedSextant-345.stypo blockSeparatedSextant-1345 blockSeparatedSextant-1345.stypo blockSeparatedSextant-2345 blockSeparatedSextant-2345.stypo blockSeparatedSextant-12345 blockSeparatedSextant-12345.stypo blockSeparatedSextant-6 blockSeparatedSextant-6.stypo blockSeparatedSextant-16 blockSeparatedSextant-16.stypo blockSeparatedSextant-26 blockSeparatedSextant-26.stypo blockSeparatedSextant-126 blockSeparatedSextant-126.stypo blockSeparatedSextant-36 blockSeparatedSextant-36.stypo blockSeparatedSextant-136 blockSeparatedSextant-136.stypo blockSeparatedSextant-236 blockSeparatedSextant-236.stypo blockSeparatedSextant-1236 blockSeparatedSextant-1236.stypo blockSeparatedSextant-46 blockSeparatedSextant-46.stypo blockSeparatedSextant-146 blockSeparatedSextant-146.stypo blockSeparatedSextant-246 blockSeparatedSextant-246.stypo blockSeparatedSextant-1246 blockSeparatedSextant-1246.stypo blockSeparatedSextant-346 blockSeparatedSextant-346.stypo blockSeparatedSextant-1346 blockSeparatedSextant-1346.stypo blockSeparatedSextant-2346 blockSeparatedSextant-2346.stypo blockSeparatedSextant-12346 blockSeparatedSextant-12346.stypo blockSeparatedSextant-56 blockSeparatedSextant-56.stypo blockSeparatedSextant-156 blockSeparatedSextant-156.stypo blockSeparatedSextant-256 blockSeparatedSextant-256.stypo blockSeparatedSextant-1256 blockSeparatedSextant-1256.stypo blockSeparatedSextant-356 blockSeparatedSextant-356.stypo blockSeparatedSextant-1356 blockSeparatedSextant-1356.stypo blockSeparatedSextant-2356 blockSeparatedSextant-2356.stypo blockSeparatedSextant-12356 blockSeparatedSextant-12356.stypo blockSeparatedSextant-456 blockSeparatedSextant-456.stypo blockSeparatedSextant-1456 blockSeparatedSextant-1456.stypo blockSeparatedSextant-2456 blockSeparatedSextant-2456.stypo blockSeparatedSextant-12456 blockSeparatedSextant-12456.stypo blockSeparatedSextant-3456 blockSeparatedSextant-3456.stypo blockSeparatedSextant-13456 blockSeparatedSextant-13456.stypo blockSeparatedSextant-23456 blockSeparatedSextant-23456.stypo blockSeparatedSextant-123456 blockSeparatedSextant-123456.stypo segmentedDigit0 segmentedDigit1 segmentedDigit2 segmentedDigit3 segmentedDigit4 segmentedDigit5 segmentedDigit6 segmentedDigit7 segmentedDigit8 segmentedDigit9 largeType-1CE1A largeType-1CE1A.stypo largeType-1CE1B largeType-1CE1B.stypo largeType-1CE1C largeType-1CE1C.stypo largeType-1CE1D largeType-1CE1D.stypo largeType-1CE1E largeType-1CE1E.stypo largeType-1CE1F largeType-1CE1F.stypo largeType-1CE20 largeType-1CE20.stypo largeType-1CE21 largeType-1CE21.stypo largeType-1CE22 largeType-1CE22.stypo largeType-1CE23 largeType-1CE23.stypo largeType-1CE24 largeType-1CE24.stypo largeType-1CE25 largeType-1CE25.stypo largeType-1CE26 largeType-1CE26.stypo largeType-1CE27 largeType-1CE27.stypo largeType-1CE28 largeType-1CE28.stypo largeType-1CE29 largeType-1CE29.stypo largeType-1CE2A largeType-1CE2A.stypo largeType-1CE2B largeType-1CE2B.stypo largeType-1CE2C largeType-1CE2C.stypo largeType-1CE2D largeType-1CE2D.stypo largeType-1CE2E largeType-1CE2E.stypo largeType-1CE2F largeType-1CE2F.stypo largeType-1CE30 largeType-1CE30.stypo largeType-1CE31 largeType-1CE31.stypo largeType-1CE32 largeType-1CE32.stypo largeType-1CE33 largeType-1CE33.stypo largeType-1CE34 largeType-1CE34.stypo largeType-1CE35 largeType-1CE35.stypo largeType-1CE36 largeType-1CE36.stypo largeType-1CE37 largeType-1CE37.stypo largeType-1CE38 largeType-1CE38.stypo largeType-1CE39 largeType-1CE39.stypo largeType-1CE3A largeType-1CE3A.stypo largeType-1CE3B largeType-1CE3B.stypo largeType-1CE3C largeType-1CE3C.stypo largeType-1CE3D largeType-1CE3D.stypo largeType-1CE3E largeType-1CE3E.stypo largeType-1CE3F largeType-1CE3F.stypo largeType-1CE40 largeType-1CE40.stypo largeType-1CE41 largeType-1CE41.stypo largeType-1CE42 largeType-1CE42.stypo largeType-1CE43 largeType-1CE43.stypo largeType-1CE44 largeType-1CE44.stypo largeType-1CE45 largeType-1CE45.stypo largeType-1CE46 largeType-1CE46.stypo largeType-1CE47 largeType-1CE47.stypo largeType-1CE48 largeType-1CE48.stypo largeType-1CE49 largeType-1CE49.stypo largeType-1CE4A largeType-1CE4A.stypo largeType-1CE4B largeType-1CE4B.stypo largeType-1CE4C largeType-1CE4C.stypo largeType-1CE4D largeType-1CE4D.stypo largeType-1CE4E largeType-1CE4E.stypo largeType-1CE4F largeType-1CE4F.stypo largeType-1CE50 largeType-1CE50.stypo

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. @aaronbell, please check if this is what you expect for those or if @Digit is only for the standard digits.

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.

PhMajerus commented 2 months ago

Thanks @DHowett !

Here is a file to cat that demo and explains how the large type pieces work: Edit: Removed embedded file, replaced by github repo, use: curl https://raw.githubusercontent.com/PhMajerus/Documents/main/HowTos/HowTo%20Large%20Type%20Pieces.txt

As well as a FIGlet font that makes using the large type pieces easy: Edit: Removed embedded file, replaced by github repo, see phm-largetype in my FIGfonts collection

image

I haven't decided how to publish those yet, but figured you may want some more test files.

DHowett commented 2 months ago

THIS IS SO GOOD

I legitimately wonder if the HowTo file should be in this repo, as a sample or a doc. :O

PhMajerus commented 2 months ago

@DHowett I realized I posted the wrong FIGfont. Download it again to get the proper one that uses large type pieces. Sorry about that.

DHowett commented 2 months ago

@aaronbell poke! I didn't want to merge this without your explicit signoff on the artistic direction (e.g. using curves instead of angles for the large type pieces) and thewhether the legacy computing digits should be considered digits qua digits, or just nonspacing characters.

aaronbell commented 2 months ago

Did you ever hear the Tragedy of Spring Break when one has young children? I thought not. It's not a story the Breakers would tell you.

(This week has been a total bust. Will take a look)

DHowett commented 2 months ago

Did you ever hear the Tragedy of Spring Break when one has young children? I thought not. It's not a story the Breakers would tell you.

(This week has been a total bust. Will take a look)

Ugh, sorry about that! ☹️

DHowett commented 2 months ago

FWIW, since we are preparing a servicing update for Windows Terminal 1.19/20/21 I'm going to cut a release of it mid-week. I will merge without Aaron's approval late Tuesday under the assumption that we're A-OK to launch :)

aaronbell commented 2 months ago

Hey, I'm sorry. It has been a rough week.

So I'm generally fine with how these things are designed. Personally, I'd probably round some of the curved elements more to make the transitions render more smoothly, buuuuut when I open the UFOs locally in Glyphs, it is requesting that I update the positioning of things (because Glyphs' functionality has updated) and I don't really want to potentially mess with the font right now.

Would it be alright to leave it as is for now, and I'll make some modifications with the next version?

PhMajerus commented 2 months ago

@aaronbell

I wanted to have them even more rounded and achieve the following look: image

But remember these are made up of pieces, so the middle horizontal bar has to be straight because it can be used to join two sharp corners or two rounded corners (or any other combination): image

Take the 'B' for example: image

This is the most I could achieve having the rounding only in the top right corner piece, which is literally just an arc joining the two straight lines it may connect to: image

The only solution I could find to round it more is to use ligatures, which then replaces sequences of two or three pieces horizontally with one designed to make the arc reach the middle of the central pieces:

image

Notice how the arcs are not the same between the exploded view and the combined view anymore.

The ligatures trick works pretty well, and I could achieve the look I aimed for without having them break other combinations (I'm testing with a FIGfont containing over 1000 characters built using large type pieces covering latin, greek, cyrillic, japanese katakana, ...).

Here are the ligatures I worked on so far: image image

I also tested some other pieces sequences, but these ended up either making it worse, or inconsistent with some other letters using the same combinations in a row: image image

So yeah, I agree with you more rounded looks even better, and I started working on it using ligatures, but I figured we need a no-ligatures version first as a baseline for Cascadia Mono and then we need ligatures to only improve them without changing the style completely for Cascadia Code. And I didn't want to bother you with the ligatures stuff at this point and figured we could look into that for Cascadia Next/Reboot.

I also didn't know if you'd want to have that many ligatures just to improve the look of the large type: image

And there is a problem when using these ligatures in Windows Terminal, I suspect they round up the starting x position of each character, so when my ligatures group three characters into a wider one, they don't always align correctly with other rows at certain sizes: image

So I didn't want to make it look worse in some scenario.

If you want to try out my ligatures experiments, here is a version of Cascadia Code that includes them: CascadiaCode with Large Type Pieces ligatures.zip Note it doesn't include all the ligatures I wanted yet, but it gives a good idea of the look and covers the most common cases.

aaronbell commented 2 months ago

Thanks for the additional information! I think let’s just keep it simple for now and we can revisit it the future.

DHowett commented 2 months ago

Hey, I'm sorry. It has been a rough week.

No need to apologize - I didn't mean to put on any undue pressure. I hope your next week is an improvement on the last one 🙂

mfocko commented 2 months ago

new release coming? :eyes:

aaronbell commented 2 months ago

😉