Skip to content

Glyphs ​

What a cell target draws for each glyph the components ask for, and what it draws instead when it cannot. The rules are GLY1–GLY3; the tables here are the ones in sparkles.ui.glyphs and sparkles.ui.tokens, whose tests walk them exhaustively.

Tiers ​

A glyph needs something of its target, and the needs nest:

NeedsGlyphsTarget flag
nothingASCII—
Unicodebox drawing, marks, arrows, any other textunicode
half blocks▀ ▄ █, the eighth blocks ▏ … ▉, shadesblocks ≥ half
quadrantsthe 2×2 quadrants ▖ ▗ ▘ ▝ …blocks ≥ quadrant
sextantsthe 2×3 sextants (Legacy Computing)blocks ≥ sextant
octantsthe 2×4 octants (Unicode 16)blocks = octant
braillethe 2×4 dot grid ⠁ … ⣿braille
Nerd FontPrivate Use Area iconsnerdFont

Ladders ​

When the target lacks a glyph's tier, the glyph steps down to a weaker one — always one cell wide, always ending in ASCII:

Asked forSteps to
a Nerd Font status iconits Unicode mark, then its ASCII mark
another Nerd Font icon?
a braille cell, a quadrant, a sextant, an octant▒, then :
an eighth-block bar ▏ ▎│, then |
a half-block bar ▍ ▌ ▐┃, then |
a fill █ ▓ ▀ ▄ …#
a box-drawing run ─ ━ ═-
a box-drawing run │ ┃ ║|
a dotted run ┈ ┄ / ┊ ┆. / :
a corner or a junction+
▸ → › / ◂ ← ‹ / ▾ ↓ / ▴ ↑> / < / v / ^
· • ▪ ◆ / ▫ □ ◇ / ○* / . / o
— – / …- / ~
anything else, e.g. π or 日? in each of its cells

Status marks ​

Status is never shown by color alone. Each status has a mark in three charsets; a theme names the charset it prefers and the target caps it:

StatusNerd FontUnicodeASCII
oknf-fa-check✔+
failnf-fa-xmark✖x
warnnf-fa-triangle_exclamation⚠!
infonf-fa-circle_info•*
pendingnf-fa-circle○o
runningnf-fa-spinner◐~
skippednf-fa-minus┄.

Borders ​

A bordered box always reserves one cell per drawn edge; the border's width, style and radius choose the glyphs in that cell:

BorderUnicode targetWithout Unicode
1px solid┌─┐ │ └─┘+-+ | +-+
1px solid, radius╭─╮ │ ╰─╯+-+ | +-+
2px solid┏━┓ ┃ ┗━┛+-+ | +-+
dashed┌╌┐ ╎ └╌┘+-+ | +-+
dotted┌┈┐ ┊ └┈┘+.+ : +.+
double╔═╗ ║ ╚═╝+-+ | +-+

The heavy and double families have no rounded corners. A border both heavy and rounded keeps its arcs, drawn light, and reports the weight lost; a rounded double border keeps square corners and reports the radius lost. The Decoration page shows every row.

Images ​

An image keeps the cells layout gave it on every target; what fills them depends on what the target can show:

Target hasThe image is drawn as
an image protocol, or its own pixelsthe picture itself
octants2×4 blocks per cell: 𜴀 𜴁 … ▘ ▀ █
sextants2×3 blocks per cell: 🬀 🬂 🬇 … ▌ ▐ █
quadrants2×2 blocks per cell: ▘ ▚ ▙ ▟ …
half blocks1×2 per cell: ▀ ▄
braille only2×4 dots per cell: ⠁ ⡀ ⣀ ⣿ …
none of theseits alt text, [a colour swatch]

A cell holds two colours, so each cell's sub-cells are split into two groups by colour, and the glyph draws one over the other. A terminal draws the picture itself when the application asked it (the images probe) and it answered for the kitty graphics protocol (kitty, Ghostty, WezTerm, iTerm2) or for sixel (foot, and XTerm built with it). The Primitives page's swatch shows each profile's rung.