diff --git a/.planning/intel/brand-decisions-v1-followup-display-font.md b/.planning/intel/brand-decisions-v1-followup-display-font.md new file mode 100644 index 0000000..e79a93e --- /dev/null +++ b/.planning/intel/brand-decisions-v1-followup-display-font.md @@ -0,0 +1,78 @@ +# Brand Decisions v1 — Follow-up #1: Display Font Cyrillic Gap + +Date: 2026-05-17 +Open against: **D-05** (Type pairing) +Owner: **Design team** (per D-05 OWNER row) +Blocker for: Plan 01-12 (Design Integration) planner spawn; Plan 01-10 welcome +hero text rendering + +--- + +## What was picked (D-05) + +A · Newsreader + IBM Plex Sans + IBM Plex Mono + +## What engineering research found + +Engineering research (`.planning/phases/01-stabilize-video-pipeline/01-12-RESEARCH.md`, +commit `3df2750`, §1) verified Newsreader's glyph coverage via two independent +sources: + +1. **The Decision Brief's own embedded `@font-face` declarations** — subsets shipped: `latin` / `latin-ext` / `vietnamese` +2. **Production Type's `productiontype/Newsreader` repo README** — quote: "Google Fonts Latin Plus glyph set" + +**Newsreader ships NO Cyrillic glyphs.** Under the current D-05 pick, Russian +display text (welcome hero, tagline, any future display-register H1/H2) would +silently fall through `--mks-font-display` to `Iowan Old Style → Times New +Roman → serif`. + +Mokosh's audience is Russian operators primary; display text in Russian is the +default case, not the exception. This is therefore not a corner case — it +affects the default rendering path. + +## Options for designer to pick + +| Option | Approach | Trade-off | +|---|---|---| +| **R1** | Keep Newsreader for Latin; add Cyrillic-capable OFL serif as fallback in `--mks-font-display` chain (e.g. `'Newsreader', 'PT Serif', serif`) | Preserves Newsreader aesthetic for Latin/English. Mixed-glyph paragraphs (Latin tagline + RU phrase together, or English wordmark + Russian subtitle) render in two different serifs — visually disharmonious | +| **R2** | Substitute Newsreader entirely with a Cyrillic-native OFL serif | Unified rendering across all locales. Departs from designer's Newsreader pick — the aesthetic match for the Loom palette + 2×2 weave mark may or may not transfer | +| **R3** | Other — designer proposes alternative (different display family / drop display register in favor of unified Plex Sans / use unicode-range `@font-face` to scope Newsreader to Latin-only and load second face for Cyrillic without disharmony / etc.) | Designer's call | +| **R4** | Keep Newsreader as-is, accept Cyrillic fallback to `Iowan Old Style → Times New Roman` | If the operator-facing aesthetic for RU is intentional or acceptable | + +## Candidate Cyrillic-capable OFL serifs (research §1 R1) + +| Family | Provenance | Aesthetic notes | +|---|---|---| +| **PT Serif** | ParaType (Russian foundry) | Designed specifically for Russian government use; excellent Cyrillic coverage; visually pairs well with IBM Plex Sans | +| **EB Garamond** | OFL recreation of classic Garamond | Classical, formal feel; full Cyrillic | +| **Lora** | OFL contemporary serif | Modern, slightly humanist; Cyrillic native | +| **Source Serif** | Adobe OFL | Clean, neutral; Cyrillic via subset | + +## What we need back from designer + +A one-line reply is enough: + +- `"R1, fallback chain Newsreader → PT Serif"` (or another fallback) +- `"R2, substitute with PT Serif"` (or another family) +- `"R3: "` +- `"R4, accept the Iowan/Times fallback for Cyrillic"` + +You can also reply on the Decision Brief HTML, send updated `tokens.css`, a +Figma link, or just a Slack/Russian-voice-memo — anything readable. + +## What's paused until designer responds + +- Plan 01-12 (Design Integration) planner spawn — needs final `--mks-font-display` token value to write the WOFF2 bundling task spec +- Plan 01-10 (welcome tab) execution — welcome hero uses display register, needs the resolved font +- The 8 i18n copy strings work (Brief §02) — depends on whether display-register copy lands in the welcome hero (most candidates do) + +Plan 01-11 (Puppeteer UAT harness) runs in parallel — non-overlapping surface; not affected. + +--- + +## Related + +- `.planning/intel/brand-decisions-v1.md` — original 9 decisions +- `.planning/intel/design-incoming/system/bundle/mokosh-handoff/tokens.css` — current tokens.css (with Newsreader pick at line 76) +- `.planning/phases/01-stabilize-video-pipeline/01-12-RESEARCH.md` §1 — full engineering research +- Open against D-05 in `.planning/intel/design-incoming/mokosh/dist/Decision Brief (standalone).html`