From 2669ce38e7d569d4c86d1a7c6f7087cb0922b8cf Mon Sep 17 00:00:00 2001 From: Mark Date: Sun, 17 May 2026 21:25:35 +0200 Subject: [PATCH] =?UTF-8?q?docs(intel):=20designer=20follow-up=20#1=20?= =?UTF-8?q?=E2=80=94=20Newsreader=20has=20no=20Cyrillic=20glyphs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit D-05 picked Newsreader as display serif. Engineering research (01-12-RESEARCH.md §1, commit 3df2750) verified Newsreader ships NO Cyrillic glyphs via designer's own Brief embedded subset list + Production Type's repo README ("Google Fonts Latin Plus glyph set"). Russian display text (welcome hero, tagline) under current D-05 picks silently falls through to Iowan Old Style → Times New Roman → serif. Mokosh's audience is Russian-primary, so this is the default rendering path, not a corner case. Routing back to designer per D-05 OWNER (Design team) with 4 options: - R1 fallback chain (Newsreader + Cyrillic-capable secondary) - R2 substitute display family entirely - R3 other (designer proposes) - R4 accept the Iowan/Times fallback Candidate Cyrillic-capable OFL serifs: PT Serif, EB Garamond, Lora, Source Serif. PT Serif highlighted (ParaType, RU-foundry, pairs with IBM Plex Sans). Blocks Plan 01-12 planner spawn + Plan 01-10 welcome hero. Plan 01-11 (harness) unaffected — non-overlapping surface. Co-Authored-By: Claude Opus 4.7 (1M context) --- ...rand-decisions-v1-followup-display-font.md | 78 +++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 .planning/intel/brand-decisions-v1-followup-display-font.md 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`