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

Alternate Braille glyphs optimized for pseudographics use #647

Closed
PhMajerus opened this issue Aug 20, 2022 · 4 comments
Closed

Alternate Braille glyphs optimized for pseudographics use #647

PhMajerus opened this issue Aug 20, 2022 · 4 comments

Comments

@PhMajerus
Copy link
Contributor

PhMajerus commented Aug 20, 2022

Introduction and concepts

Some characters are designed especially for pseudographics, such as the old ▄ ▀ █ (as well as ▌ ▐ ░ ▒ ▓), already found in IBM PC / MS-DOS. These are often referred to as half blocks as they can be used to treat each character cell as 2 pseudo-pixels (or a 1×2 grid).

Others have been inherited from the PET / Commodore 64 and other 8-bit era computers, splitting each cell in 4 pseudo-pixels (or a 2×2 grid): ▖ ▘ ▌ ▗ ▄ ▚ ▙ ▝ ▞ ▀ ▛ ▐ ▟ ▜ █.

A higher grid density has been inherited from TRS-80 and Teletext, and now added to the Unicode Symbols for Legacy Computing, supporting 6 pseudo-pixels (or a 2×3 grid):
image
These are not yet supported, but are in other feature requests: #597 and #607

The next grid density of pseudo-pixels would be a 2×4 grid, and it sort of exists, as the Braille characters are basically that, but with discrete dots instead of a no-gap pixels-like grid: ⠀⠁⠂⠃⠄⠅⠆⠇⠈⠉⠊⠋⠌⠍⠎⠏⠐⠑⠒⠓⠔⠕⠖⠗⠘⠙⠚⠛⠜⠝⠞⠟⠠⠡⠢⠣⠤⠥⠦⠧⠨⠩⠪⠫⠬⠭⠮⠯⠰⠱⠲⠳⠴⠵⠶⠷⠸⠹⠺⠻⠼⠽⠾⠿⡀⡁⡂⡃⡄⡅⡆⡇⡈⡉⡊⡋⡌⡍⡎⡏⡐⡑⡒⡓⡔⡕⡖⡗⡘⡙⡚⡛⡜⡝⡞⡟⡠⡡⡢⡣⡤⡥⡦⡧⡨⡩⡪⡫⡬⡭⡮⡯⡰⡱⡲⡳⡴⡵⡶⡷⡸⡹⡺⡻⡼⡽⡾⡿⢀⢁⢂⢃⢄⢅⢆⢇⢈⢉⢊⢋⢌⢍⢎⢏⢐⢑⢒⢓⢔⢕⢖⢗⢘⢙⢚⢛⢜⢝⢞⢟⢠⢡⢢⢣⢤⢥⢦⢧⢨⢩⢪⢫⢬⢭⢮⢯⢰⢱⢲⢳⢴⢵⢶⢷⢸⢹⢺⢻⢼⢽⢾⢿⣀⣁⣂⣃⣄⣅⣆⣇⣈⣉⣊⣋⣌⣍⣎⣏⣐⣑⣒⣓⣔⣕⣖⣗⣘⣙⣚⣛⣜⣝⣞⣟⣠⣡⣢⣣⣤⣥⣦⣧⣨⣩⣪⣫⣬⣭⣮⣯⣰⣱⣲⣳⣴⣵⣶⣷⣸⣹⣺⣻⣼⣽⣾⣿

And that is exactly how these characters are already being used by terminal apps, as can be seen in the screenshots of #130, showing that the reason Braille has been added to Cascadia was precisely for their use as pseudo-graphic characters.

Another Braille design would improve the terminal

Now that we know Braille are often used as 2×4 pseudo-pixels grids in terminal apps, we could improve their display by optimizing their look for that scenario.

Here are their common discrete dots design currently found in Cascadia (reordered in a more natural pixels bits values order):
image

They could instead, or as a stylistic set, follow the design of the pseudo-pixels grids mentioned earlier:
image

This would greatly improve the look of text-mode apps using Braille as a high-density pseudo-graphics mode.
Note this is already the style used by the UNSCII font: http://viznut.fi/unscii/, which has been used for the example above.

I would even go as far as to say their pixels look should be the default and their classic discrete dots look should be the alternate stylistic set, as I believe they'll be used as pseudo-pixels much more regularly when used in the context of terminal apps than to provide visual representation of Braille to people who cannot take advantage of Braille displayed on a screen anyway.

Example

Here's a Braille pseudo-pixels example.

As displayed in Windows Terminal with the current Cascadia Mono:
image

As displayed in Windows Terminal with UNSCII:
image

@PhMajerus
Copy link
Contributor Author

PhMajerus commented Aug 31, 2022

I just found out that Unicode plans to have those 2×4 grids separately from Braille, as U+1CD00...U+1CDE5 in “Symbols
for Legacy Computing Supplement".
This probably means we'll see two competing sets of characters, on one hand the Braille characters will be supported in more terminal apps but be less even when used as pseudo-pixels, and on the other hand the block octant characters that will look better as pseudo-pixels, but will take a while to be supported everywhere, if ever...

Having the possibility to render Braille as octants could still be a nice stylistic set, and could use the same glyphs as the new Symbols for Legacy Computing Supplement. (https://www.unicode.org/L2/L2021/21235-terminals-supplement.pdf)

@aaronbell
Copy link
Collaborator

Interesting. As the thread from Finii at the end there mentions, Braille does serve a purpose and I'm hesitant to vary from the established forms for the sake of graphics. The Legacy symbols range seems a better place for it.

@PhMajerus
Copy link
Contributor Author

All the pseudographics 2×2, 2×3, and 2×4, have been accepted for Unicode 16, including separated versions of 2×2 and 2×3.
So to finalize this feature request, here is a cheat sheet of all those blocks.
This can be useful to pick characters, or as a test to verify font support for them.

image

curl https://raw.githubusercontent.com/PhMajerus/ANSI-art/main/Unicode/Blocks%20tables.txt

@PhMajerus
Copy link
Contributor Author

Unicode 16.0 will include octants especially for the purpose presented in this feature request.
So I'm closing this one and replacing it with a new one for the octants: #711

We could still provide a stylistic set to switch Braille to octants for apps that use Braille as pseudo-pixels and cannot be updated to use octants.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants