Skip to content

Feature Request: Octants (Unicode 16.0) #711

Closed
@PhMajerus

Description

Description of the new feature

Many modern command-line apps are using Braille characters as pseudo-pixels to render graphics in the terminal.

image

They provide a 2×4 grid per character, using them as semigraphic mosaics. However, Braille is not a good solution because the symbols are using discrete dots, which makes the on and off pseudo-pixels unbalanced, and they always have space between symbols and between lines, so when using a group of cells to render a graphic, the grid of pseudo-pixels is not a regular grid:

image

Some terminals modify the Braille characters to space the dots evenly and avoid spaces between characters and lines, but that breaks their original intended use.

Unicode 16.0 will provide a better solution, it includes octants, which, just like the half-blocks and quadrants, provide a regular mosaic pattern designed to be used as pseudo-pixels:

image

Octants provide the highest resolution that can be achieved currently without using graphical extensions such as Sixels or ReGIS. They can also be combined with VT control sequences to generate color images:

image

These would not be possible using Braille or other non-mosaic characters, as they need foreground and background colored pseudo-pixels to completely fill their respective parts of the mosaic grid to work properly without background color bleeding:

image

This request replaces a previous suggestion to modify the Braille characters to achieve the same visual result: #647

Proposed technical implementation details

In January 2022, Unicode approved a new set of legacy computing characters, that includes those octants, to be part of Unicode 16.0.

The octants are set at U+1CD00 to U+1CDE5, as well as two new required quadrants at U+1FBE6 and U+1FBE7 that are reused for octants.

Cascadia should include the set of octants so apps can start moving from Braille to octants. This represents 238 glyphs (there are 256 mosaic patterns, but some already exist as part of half-blocks and quadrants).

image

Since octants do not duplicate patterns already available as full-block, half-blocks, and quadrants, all pseudo-pixels semigraphic characters must be designed using a unified set of coordinates. This may require fixing some of the existing characters, such as explained in #644.

I believe an external utility could even replace Braille with Octants on the fly, making it possible to pipe existing apps using Braille without modifying them. This makes the implementation of octants even more interesting, but is outside the scope of this feature request.

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions