Typography
On this page
Three typefaces, three locked roles. Each has a single purpose; they never swap.
Inter
| Attribute | Value |
|---|---|
| Role | Body, UI, navigation, metadata, marketing display |
| Weights | 400, 500, 600, 700, 800 |
| Case | title case |
| Features | tnum for all numeric readouts · cv11 single-storey a optional at display sizes |
| Source | rsms.me/inter · GitHub |
| Fallback stack | Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif |
Barlow Condensed
| Attribute | Value |
|---|---|
| Role | Wordmarks, product names, tactical labels |
| Weights | 600, 700 |
| Case | UPPERCASE, wide-tracked |
| Rule | Never used for prose. If it appears in a body paragraph, it’s wrong. |
| Source | Google Fonts · GitHub |
| Fallback stack | 'Barlow Condensed', 'Oswald', 'Arial Narrow', sans-serif |
JetBrains Mono
| Attribute | Value |
|---|---|
| Role | Tabular data, coordinates, callsigns, track IDs, code |
| Weights | 400, 500 |
| Features | Ligatures disabled (font-feature-settings: "liga" 0, "calt" 0) - mission-critical readouts show literal glyphs |
| Source | jetbrains.com/mono · GitHub |
| Fallback stack | 'JetBrains Mono', 'SF Mono', Menlo, Consolas, monospace |
All three ship under SIL OFL 1.1, self-hosted as .woff2 (primary) plus .ttf (Go tooling fallback).
On “wide grotesque.” Inter at 800 fills the marketing-display role without a fourth face. If a wider character is required later, Söhne Breit (Klim) or Degular Display (OHno) are the sanctioned paid swaps. Do not introduce a third display face without a design review.
The split rule
Uppercase is reserved for identity and tactical labels. Marketing prose is title case.
A hero heading on a product page is title case (Inter 800). The product name stamped above it is uppercase condensed (Barlow Condensed 700). A data readout below it is mono (JetBrains Mono 400). Three roles, three typefaces, never confused.
Scale
| Role | Face | Size / leading | Tracking | Case | Use |
|---|---|---|---|---|---|
| Display XL | Inter 800 | 72 / 76 | -0.02em | title case | marketing hero |
| Display L | Inter 800 | 56 / 60 | -0.015em | title case | section hero |
| Display M | Inter 700 | 40 / 44 | -0.01em | title case | section heading |
| Wordmark XL | Barlow Cond 700 | 56 / 60 | 0.01em | UPPERCASE | product name in hero |
| Wordmark L | Barlow Cond 700 | 24 / 28 | 0.04em | UPPERCASE | program names on cards |
| Wordmark S | Barlow Cond 700 | 14 / 18 | 0.08em | UPPERCASE | card sub-headers |
| H1 | Inter 700 | 28 / 36 | - | title case | - |
| H2 | Inter 600 | 22 / 30 | - | title case | - |
| H3 | Inter 600 | 18 / 26 | - | title case | - |
| Body L | Inter 400 | 16 / 24 | - | - | - |
| Body | Inter 400 | 14 / 22 | - | - | - |
| Micro | Inter 500 | 11 / 14 | 0.08em | UPPERCASE | labels, eyebrow, captions |
| Data | JB Mono 400 | 13 / 18 | tabular | - | - |
| Data L | JB Mono 500 | 15 / 22 | tabular | - | - |
Signature pairing: a Micro uppercase eyebrow in electric-500 sits above a Display L title-case heading. This is the house move for every hero surface.
WebAwesome token mapping
Typography tokens bind to WebAwesome’s --wa-font-* scale so components inherit system fonts automatically:
| Token | Maps to |
|---|---|
--wa-font-family-body |
Inter stack |
--wa-font-family-heading |
Inter stack |
--wa-font-family-code |
JetBrains Mono stack |
--wa-font-family-longform |
Inter stack (no serif in the system) |
--wa-font-weight-normal |
400 |
--wa-font-weight-action |
600 (buttons, interactive labels) |
--wa-font-weight-heading |
700 |
--wa-font-weight-emphasized |
800 |
--wa-font-size-xs → 5xl |
11, 13, 14, 16, 22, 28, 40, 56, 72 px |
Barlow Condensed is intentionally not mapped to --wa-font-family-heading. It’s a dedicated wordmark face applied via .fdt-wordmark or a component part override. WebAwesome headings get Inter; FDT wordmarks get Barlow Condensed.
Go tooling
The shared internal go-fonts package (consumed by DEBRIEF and sibling Go tooling via go:embed) vends the full typeface set so any Go binary can import fonts without re-bundling.
Weights exposed as named []byte - gofonts.InterBold, gofonts.BarlowCondensedBold700, gofonts.JetBrainsMonoRegular. Go tools (folio for PDF, lipgloss for TUI) resolve system fonts without touching the filesystem or network. The package also embeds the @font-face CSS as a string for HTML contexts.