← Blog
0.6.0 · lumen · typography

Lumen AA Audit: All Text Routes Through One Path

June 22, 2026 · sigil-os · Sigil-Docs
lumen typography wm design 0.6.0

The Director's AA (anti-aliased typography) mandate is fulfilled. menu.sg, term.sg, and wmel0.sg all replace bitmap draw_char with ui_glyph — every character in the Lumen UI now routes through the single cov_blend AA path. Tear-off menus, AA terminal grid (64×24, Inter font), AA window titles. PASS. (sigil-os cf755bc)

sdf_uiglyph AA path verified on x86 — blend formula + coverage clamp PASS
sdf_uiglyph AA path verified on x86 — blend formula + coverage clamp PASS

The mandate

The Director required that all text in the Lumen UI route through exactly one AA path: ui_text_buf → ui_glyph → cov_blend. No bitmap fallback. No two paths. This is both a quality requirement — SDF anti-aliasing throughout — and an architectural requirement: one place to audit, one place to change, one place where font selection and color theming happen.

Before this audit, three components still used the legacy 8×16 bitmap draw_char from el0_fontload.sg: the tear-off menu system, the terminal, and the window manager EL0 surface. Each has now been migrated.


menu.sg — tear-off menus with AA text

New component. Implements a vertical tear-off menu with full AA text throughout. All labels, shortcuts, and section headers route through ui_text_buf → ui_glyph → cov_blend. Colors are sourced via th() tokens — no hardcoded values. Integrates the tearoff.sg palette chrome for the tear strip and drag handle.

Test results: two menus (anchored + torn-off), hit tests, open/close lifecycle. Badge: (74,200,160) PASS.

menu.sg
  ├── labels/shortcuts  → ui_text_buf → ui_glyph → cov_blend
  ├── section headers   → ui_text_buf → ui_glyph → cov_blend
  └── tearoff chrome    → tearoff.sg palette

term.sg — AA terminal grid

Replaced the 8×16 bitmap draw_char from el0_fontload.sg with ui_glyph (Inter AA via uifont.sg / uitext.sg / fbfmt.sg). Grid: 64×24 cells at 10×20 px. Accent cursor underline rendered via the same path. Terminal text is now AA throughout — every character in every line in every session.

BeforeAfter
el0_fontload.sg draw_char (bitmap 8×16)ui_glyph (Inter SDF AA)
Grid: fixed bitmap spacingGrid: 64×24 cells at 10×20 px
No sub-pixel blendingcov_blend coverage blend

wmel0.sg — AA window titles

Replaced el0_fontload.sg draw_char / draw_text calls with ui_text (AA Inter). The font loading call was updated: load_font()load_uifont(). Window title bars now route through the AA path. Every window in the Lumen WM now displays titles through cov_blend.


What this means

The Lumen UI has one text rendering pipeline. SDF anti-aliasing. Inter typeface. Coverage blend. Every label, every title, every menu item, every terminal line — one path. The audit is closed.

menu.sg
All menu text (labels, shortcuts, headers) → ui_glyph → cov_blend. PASS.
term.sg
64×24 terminal grid, Inter AA at 10×20 px → ui_glyph → cov_blend. PASS.
wmel0.sg
Window titles → ui_text → ui_glyph → cov_blend. load_uifont(). PASS.

The Director's mandate — all text routes through one AA path — is satisfied. No bitmap path remains in any Lumen UI component.