themes-terminal/RECOMMENDED_FONTS.md
Alex Dunmow daab6750fe feat(terminal): Wave A full theme build (WO-TF-025)
Bring the terminal dev-tool/OSS-docs theme to full Wave A OVERRIDE-CONTRACT
compliance.

- 49 mandatory builtin overrides in templates/overrides/terminal/ (TTY chrome,
  re-skinned from the frozen builtin defaults; every content field, provider var,
  custom tag, data-bn-* attr and inline script preserved verbatim).
- 7 page templates (default, full-width, landing, article, blog-index, contact,
  auth) with TTY-window chrome, man-page article layout, and theme_mode-driven
  light/dark switching.
- GO BIG motion: dependency-free ASCII glyph-rain canvas on the hero override
  only (lazy-init, prefers-reduced-motion honored, static phosphor fallback).
- 4 persona blocks (manpage_header, code_console, keybind_table, boot_log);
  ascii_header/toc/footer blocks retired in favour of overrides + template
  furniture.
- 5 dual-mode presets (mode "both", all 19 tokens) with intentional paper-teletype
  light and phosphor dark sides.
- Bundled OFL mono fonts (JetBrains Mono, IBM Plex Mono) with LICENSES record;
  all font-family via var(--font-heading|body|mono, fallback).
- Themed email-safe wrapper (retained), master pages, and a seeded "grid" OSS
  dev-tool demo site (home, about, changelog + 3 posts, contact with
  row_inserted -> email-admins workflow, login).
- Declared required_icon_packs = [lucide, simple-icons].

Verified: make build exit 0, make verify exit 0, check-safety exit 0.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 12:41:04 +08:00

1.9 KiB

Recommended fonts — Terminal

Every family flows through the admin typography picker via CSS variables. Templates never hardcode a font-family; they read var(--font-heading, ...), var(--font-body, ...), and var(--font-mono, ...), each with a bundled fallback so the intended look survives before the admin assigns a slot.

Bundled (ship as-is)

The theme bundles two OFL monospace families (latin subset, ~69 KB total) as source=template rows, already selectable in the picker. They back the fallbacks:

Slot Fallback family File
Heading JetBrains Mono assets/fonts/jetbrains-mono-latin.woff2
Mono JetBrains Mono assets/fonts/jetbrains-mono-latin.woff2
Body IBM Plex Mono assets/fonts/ibm-plex-mono-400.woff2, ibm-plex-mono-500.woff2

A terminal theme is monospace top to bottom, so all three slots default to a mono family. License record: assets/fonts/LICENSES.md.

Assign these from Admin -> Appearance -> Typography if you want the full family (extended glyph coverage) or the display accent the bundled subset omits:

Slot Assign Why
Heading JetBrains Mono or IBM Plex Mono Sharp, even monospace headings that read as terminal chrome.
Body IBM Plex Mono Slightly wider, highly readable for long docs and man pages.
Mono JetBrains Mono Code blocks, prompts, keybind tables.
Display accent (optional) VT323 Chunky bitmap-CRT face for big phosphor hero display type. Not bundled; assign from the Google Fonts tab if you want the retro-CRT accent.

All four are SIL Open Font License 1.1. Nothing here hardcodes a family, so any admin assignment overrides the bundled fallback cleanly.

Fallback chain (already in theme CSS)

Before any admin selection the theme degrades through:

"JetBrains Mono", "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace