Font-loading audit
Two files, both preloaded
The audit found nine font files (261 KB) shipped for a site whose copy is English, and no preload link on any page — the faces were discovered only after the stylesheet parsed. Both are fixed in the layout, and this page shows the before and after with the build each number came from.
Measured from the completed build on 2026-09-12 06:33 UTC (build eoCv1yhT4VQe) by npm run build && npm run measure, and committed as docs/build-report.json. The numbers are not re-derived while the page renders, because a build cannot see its own output.
Font files shipped
9 → 2
measured on batch 55 (commit 1fb5142) → this build
Font weight
261.4 → 80 KB
69% smaller
Pages preloading
0 → 497
of 498 prerendered pages in the measured build
What shipped before, and what ships now
The old setup imported both fontsource packages wholesale: 7 subsets, latin, latin-ext, cyrillic, cyrillic-ext, greek, greek-ext, vietnamese. The site's copy uses Latin-1 characters only — é, ó, á, í, ú, ñ, £, °, × and · all live in the latin range — so nothing on a page needed the other six.
| Face | Subset | Size | Preloaded | File |
|---|---|---|---|---|
| Inter | latin | 47.1 KB | yes | inter_latin_wght_normal-s.p.0gsaq8ukbf34m.woff2 |
| Sora | latin | 32.9 KB | yes | sora_latin_wght_normal-s.p.2o7d_x-bmx02y.woff2 |
How the preload is verified
Not by trusting the config: the audit reads every prerendered HTML file and looks for the link. A build that stopped emitting it would show a drop on this page before anyone noticed a flash of unstyled text in production.
<link rel="preload"
href="/_next/static/media/inter_latin_wght_normal-s.p.<hash>.woff2"
as="font" crossorigin="" type="font/woff2" />next/font also emits a metric-matched fallback face (inter Fallback with a size-adjust of 107.89%), so the swap to the real face moves text far less than a default fallback would. That number is in the compiled CSS, not in this copy.
Inter subset
230 glyphs
inter_latin_wght_normal-s.p.0gsaq8ukbf34m.woff2
Sora subset
223 glyphs
sora_latin_wght_normal-s.p.2o7d_x-bmx02y.woff2
Characters probed
15
the glyphs the copy actually uses
Which glyphs the shipped subsets actually contain
Decoded from the woff2 cmap at build time — the files themselves, not a manifest someone wrote by hand — so a missing glyph is caught by the build rather than by a screenshot.
| Glyph | Codepoint | Inter | Sora |
|---|---|---|---|
| — em dash | U+2014 | covered | covered |
| ← arrow left | U+2190 | missing | missing |
| ↑ arrow up | U+2191 | covered | missing |
| → arrow right | U+2192 | missing | missing |
| ↓ arrow down | U+2193 | covered | missing |
| · middle dot | U+00B7 | covered | covered |
| × multiplication sign | U+00D7 | covered | covered |
| ° degree | U+00B0 | covered | covered |
| é e acute | U+00E9 | covered | covered |
| ó o acute | U+00F3 | covered | covered |
| á a acute | U+00E1 | covered | covered |
| í i acute | U+00ED | covered | covered |
| ú u acute | U+00FA | covered | covered |
| ñ n tilde | U+00F1 | covered | covered |
| £ pound | U+00A3 | covered | covered |
The arrows are the finding: → (U+2192) and ← (U+2190) are in neither subset, so the arrows in the nav and the panels fall back to the system font; Inter carries ↑ and ↓, Sora carries none. Everything else the copy uses — the em dash, ·, ×, ° and the latin accents — is covered by both.
Preload coverage
#398 — the build report reads the preload links out of every prerendered document: fonts 80 KB preloaded on 471 of 472 pages, the one exception being the on-demand route that has no document to preload in. No face loads on a route that does not use it, because there are only two faces and the shell carries both.