Bootstrapped during the 2026-06-06 BlockNinja consolidation. Was previously an unversioned directory inside ~/src/blockninja-themes/editorial. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2.7 KiB
Editorial — recommended Google Fonts
This theme ships with no bundled fonts in the current build pass
(fonts.json = []). Admins assign fonts via the BlockNinja typography panel.
The theme's CSS routes every font-family through the host-provided
--font-heading, --font-body, and --font-mono custom properties with
fallback stacks taken from spec §5, so the layout is usable before any font
is picked.
For the intended editorial aesthetic, open the typography panel in admin and add each of the following from the Google Fonts tab:
| Slot | Family | Source | Weights / styles | Why |
|---|---|---|---|---|
| Heading | Playfair Display | google:Playfair Display |
700 normal, 900 italic | Didone display face for the masthead wordmark and headlines. |
| Body | Source Serif 4 | google:Source Serif 4 |
400 normal, 400 italic, 600 normal | Long-read body type; italic for marginalia and figcaptions. |
| UI / caption (body slot) | Inter | google:Inter |
500 normal, 600 normal | Byline names, timestamps, and small-caps section labels. |
| Mono | JetBrains Mono | google:JetBrains Mono |
400 normal | Code, datelines on financial copy, ISSN in the colophon. |
How to assign
- In the BlockNinja admin, open Settings → Theme → Typography.
- Click the Google Fonts tab.
- Search for the family above (e.g. "Playfair Display"), then click Add.
- Once added, the family appears in the picker for that slot.
- Assign Playfair Display to the Heading slot.
- Assign Source Serif 4 to the Body slot.
- Assign JetBrains Mono to the Mono slot.
- (Optional) For UI / caption elements that ride the body slot but want a sans-serif treatment, override per-block via the editor.
Wave-2 (out of scope here)
If the editorial brand is going to be locked in to a specific commercial
display face (e.g. Migra or PP Editorial New instead of Playfair
Display), licence and bundle the woff2 set, then update fonts.json to
declare the family + variants. The CSS does not change — the same
var(--font-heading) consumer pattern picks up the bundled face once an
admin assigns it.