Build log

Typography Is a Contract, Not a Decoration

The Stage 2 release added a narrowly scoped Chinese citation face while keeping the Latin reading experience, layout stability, and release checks intact.

The change was deliberately narrow

The site already had three distinct reading roles: Cormorant Garamond for display text, Source Sans 3 for the interface and prose, and IBM Plex Mono for data. Stage 2 retained those roles. It registered Noto Serif TC only for fourteen approved Traditional Chinese characters, and only inside original-language source citations. This was not a font swap or a visual refresh; it was a bounded way to render cited Chinese material without making a specialist font a cost for ordinary pages.

Scope has to be executable

A typography rule is not reliable if it survives only as an intention in a release note. The deployment validator now checks all 260 HTML pages, the active stylesheet reference, and the approved character register. It rejects an out-of-register Han character and prevents the citation font from spreading into Latin content by accident. The same release aligned the twelve element-kit artefacts to shared serif, sans, and mono roles, rather than creating competing component-level font declarations.

Loading behaviour is part of the design

Source Sans 3 retains measured fallback descriptors so its late arrival does not reflow the reading column: 99.25% size adjustment, 103.18% ascent override, 40.30% descent override, and no line-gap override. Five mobile Lighthouse runs before and after the change produced the same median layout-shift result. On the Latin-only homepage, no Noto request was made. The dedicated citation fixture made a single 6,436-byte Noto subset request, safely below the approved ceiling.

Acceptance means more than a successful request

The release used a new immutable stylesheet name, site.20260810b.css, so a browser could not combine new HTML with a stale cache entry. Desktop and 360 px specimens checked the Chinese source strings, extended Latin, German, combining marks, arithmetic notation, and tabular figures in both skins. The checks found no tofu, fallback error, mark displacement, column misalignment, or document overflow. Source and production mirror matched across 284 files before commit 3ef4761 was published; the homepage, representative pages, redirects, and a genuine 404 were then confirmed in public.

The result is a small visual change with a larger operational lesson: type is a dependency contract. Its character range, delivery path, fallback metrics, cache identity, and rendered behaviour have to agree before the change can be called finished.