Choose narrative serif typeface for Dataface
Problem
Select a serif companion typeface for narrative headlines and selected annotation labels after the primary sans decision is complete.
Context
- Dataface chose Inter as the primary sans-serif typeface for UI, charts, tables, and data-dense surfaces (see
ai_notes/considerations/INTER_AS_PRIMARY_SANS.md). - Source Sans 3 was the runner-up in the sans evaluation, noted for its warmer, more text-oriented tone.
- The suite CSS already defines
--font-sanswith Inter and--font-monowith JetBrains Mono, but has no--font-serifvariable. - The serif companion is scoped to narrative headlines, section headers, and selected annotation labels — not to data-dense chart surfaces, which remain Inter-only.
- The serif typeface must be open source (SIL OFL) and available on Google Fonts for easy self-hosting and CDN delivery.
Possible Solutions
-
Source Serif 4 (recommended): Adobe's serif counterpart to Source Sans. Variable font with optical size axis (
opsz), weight range 200–900. Shares the humanist warmth that made Source Sans 3 the runner-up in the sans round. Pairs naturally with Inter's proportions and x-height. SIL OFL, on Google Fonts. Trade-offs: best balance of narrative voice, Inter compatibility, and implementation maturity. Optical sizes give display-quality headlines without a separate cut. -
Newsreader: Production Type design for Google, purpose-built for editorial contexts. Variable with optical size axis. Strong narrative personality. Trade-offs: excellent editorial voice but potentially too opinionated for a data product — its personality could clash with Inter's neutral pragmatism.
-
Literata: Originally designed for Google Play Books. Clean, modern serif with variable support. Trade-offs: optimized for long-form reading rather than headline display; less distinctive at large sizes.
-
Lora: Popular serif pairing with sans-serif faces. Well-balanced calligraphic curves. Trade-offs: widely used but lacks optical size axis; headline rendering at large sizes is less refined than Source Serif 4.
-
No serif — Inter only: Skip the serif companion entirely. Trade-offs: simplest path but sacrifices the narrative voice that editorial and annotation-heavy surfaces benefit from.
Plan
- Evaluate candidates at headline sizes (24–48px) paired with Inter body text.
- Select Source Serif 4 based on Inter compatibility, optical size support, and narrative tone.
- Record the decision and rationale in
ai_notes/considerations/SOURCE_SERIF_4_AS_NARRATIVE_SERIF.md. - Add
--font-serifCSS variable toapps/cloud/static/css/suite.cssalongside existing--font-sansand--font-mono. - No render-layer code changes — serif usage in chart annotations will be wired in future tasks as specific narrative surfaces are built.
Implementation Progress
- [x] Evaluated candidate serif families against Inter pairing criteria.
- [x] Selected Source Serif 4 as the narrative serif companion.
- [x] Created decision document:
ai_notes/considerations/SOURCE_SERIF_4_AS_NARRATIVE_SERIF.md. - [x] Added
--font-serifCSS variable to suite.css. - [x] Task completed — serif is available for future narrative surfaces.
QA Exploration
- N/A — this is a typography decision and CSS variable addition with no runtime behavior change. The variable is declared but not yet consumed by any component; visual QA will happen when narrative surfaces are built.
- [x] QA exploration completed (or N/A for non-UI tasks)
Review Feedback
- Serif evaluation should happen as a distinct visual-language decision, not as an add-on to the sans selection.
- Source Serif 4 selected for its optical size axis, Inter compatibility, and narrative warmth without data-surface contamination.
- [x] Review cleared