Direct answer: of 25 homepages, 16 declare @font-face in their first three stylesheets, for 227 faces; they reference 63 unique font URLs, 51 of which return 200, and declared bytes total 145,002,817 B (about 145 MB). The largest single file is 16.4 MB and five sites exceed 10 MB. No site sets font-display on every face; three use swap on some faces and none preload a font.

This study parses @font-face declarations in the homepage's first three stylesheets and reads only the response headers of font URLs for bytes; it does not store font bodies or measure rendering, FOIT or CLS.

25
homepages
16
with @font-face
63
font URLs
51
URLs reachable
145 MB
declared bytes
16.4 MB
largest file

Method: homepage plus the first three stylesheets

On 2026-11-08 between 10:40 and 10:42 each of the 25 homepages from study 4 received one GET (15-second timeout); rel="stylesheet" links were extracted and the first three were fetched (12-second timeout) to parse the family, font-display, source host and format of every @font-face. Font files were not requested and whether a face is used above the fold was not judged.

ItemRuleBoundary
@font-faceDeclared in the first three stylesheetsFourth and later stylesheets unchecked
swapAt least one face uses font-display: swapDoes not mean every face is set
Third-party hostsrc host differs from the homepage hostPrivate CDNs are not distinguished
woff2Any src ends in .woff2Transfer size not measured

Result: 16 of 25 declare fonts, faces are highly concentrated

MetricSites / valueNote
With @font-face16Nine without; three of those have no external stylesheet
Total faces227Across the 16 sites
Median faces per site4E17's 164 dominates the total
Median families3.5E17 has 153 families

E17's 164 faces and 153 families look like an icon or glyph library rather than text faces; that adds stylesheet weight and font requests without much above-the-fold value. The other sites mostly sit between 1 and 14 faces.

Font files: 63 URLs and 145 MB in total

From the first three stylesheets of 15 sites we extracted 63 unique font URLs (at most eight per site) and requested them with the homepage Referer: 51 returned 200, 10 returned 404 and 2 returned 502; 13 sites exposed a Content-Length. Declared font bytes total 145,002,817 B, the largest single file is 16,353,128 B (E14), and five sites exceed 10 MB (E09, E14, E19, E22, E23), with E22 around 63 MB.

ItemValueNote
Unique font URLs6315 sites, at most eight each
HTTP 200 / 404 / 50251 / 10 / 2Requested with the homepage Referer
Sites with byte data13Content-Length present
Declared bytes145,002,817 BAbout 145 MB; only declared files
Largest file16,353,128 BE14, about 16.4 MB
Sites over 10 MB5E09, E14, E19, E22, E23

Declared bytes are not first-screen traffic: browsers fetch only the files needed for the characters used, guided by unicode-range, so unused faces are not requested. A single 10 MB+ file still shows the font was not subset or split by character set, so the first hit downloads the whole file — a risk for mobile networks and first-screen time.

font-display: no site sets it everywhere, three use swap somewhere

font-displaySitesNote
Set on every face0—
swap on at least one face3E17, E22, E23
At least one face missing16Every site with @font-face

Without font-display, browsers may hide text until the font loads (FOIT); swap shows a fallback first. The three sites only set swap on some faces, so the policy is not applied at the stylesheet level.

Third parties, formats and preload: seven, five and zero

ItemSitesNote
Third-party font host7Font host differs from the homepage host
woff25Others show no woff2
Font preload0No preload with as="font"

A third-party font host adds DNS/TLS and connection cost; woff2 on only five sites may mean heavy use of system or icon fonts. Zero preload is not automatically wrong: if a font does not block the first screen, preloading can waste bandwidth, but a critical above-the-fold font is worth evaluating separately.

What this means for acceptance

  1. Set font-display on every @font-face. None of the 16 sites does; a consistent swap or optional reduces FOIT.
  2. Prefer woff2. Only five sites show it; new setups should ship woff2 with a fallback format.
  3. Control the number of faces. E17's 164 faces need review: can icon fonts become SVG, can weights be consolidated?
  4. Time third-party fonts separately. Seven sites reference external font hosts, adding a dependency for DNS, TLS and availability.
  5. Evaluate preload per first screen. None use it; if a font blocks the first screen, preload one critical face with crossorigin. See the website development service checklist.
  6. Look at bytes before face count. E14 has a 16.4 MB file and five sites exceed 10 MB; CJK fonts need subsetting or unicode-range splitting.

Limits

  • First three stylesheets only: later CSS may declare more faces; this study does not judge completeness.
  • No font bodies: bytes come from Content-Length; actual loading, FOIT/CLS and the font finally used are not measured.
  • Three sites without external CSS: E18, E20 and E25 had no parsable stylesheet, so their font use is unknown.
  • One snapshot: 2026-11-08 10:40–10:42; CDN and redesigns can change results.
  • 25-site pilot: no industry claim.
  • Byte scope: first three stylesheets and at most eight font URLs per site; declared bytes are not actual downloads; the 10 404s and two 502s are not attributed individually.

Data and reproduction

Anonymised data: equipment-homepage-font-delivery-2026.csv (25 rows × 12 columns: stylesheets, faces/families, swap, third-party hosts, woff2, preload). Font bytes: equipment-homepage-font-bytes-2026.csv (25 rows × 10 columns: font URLs, 200/non-200, sites with bytes, total bytes, largest file, third-party). The repository keeps docs/research/2026-11-homepage-font-delivery.csv and 2026-11-homepage-font-bytes.csv.

Parser: scripts/font_delivery_probe.py; unit tests: scripts/test_content_font_delivery.py (9 tests, no network). Run:

python -m unittest scripts.test_content_font_delivery

Related: the homepage resource inventory pilot, the homepage performance proxy pilot, and the homepage cache, compression and revalidation pilot, and the homepage blocking-resource pilot.

Sources and definitions

  1. Sample: the 25 homepages from study 4 (same sample_id).
  2. Fetch: 2026-11-08 10:40–10:42 Asia/Shanghai, serial, 0.5 s apart, 15/12-second timeouts.
  3. CSS: the first three rel="stylesheet" links in document order.
  4. Metrics: family, display, src host and format of each @font-face; font files are not requested.
  5. Font bytes: 2026-11-08 11:44–11:46; font URLs from the first three stylesheets (at most eight per site), requested with the homepage Referer, headers and Content-Length only.

Frequently asked questions

What happens without font-display?

Browsers may hide text until the font loads (FOIT); swap shows a fallback font first and replaces it with the custom font.

Why does E17 have 164 @font-face blocks?

Mostly icon fonts and large weight/glyph sets; icon fonts can often be replaced with SVG or inline icons to cut requests and bytes.

What does woff2 on only five sites mean?

The others may use system fonts, icon fonts or older formats; woff2 compresses better and should be preferred in new setups.

Should fonts be preloaded?

Preloading a critical above-the-fold font can cut delay; whether it helps depends on whether the font blocks the first screen. No site does it here.

Do 25 sites represent the industry?

No. This is the same 25 equipment-company homepages from study 4; it describes only these pages.

Can the data be re-checked?

Yes. The stylesheet data has 25 rows by 12 columns and the byte data 25 by 10; font_delivery_probe.py has 13 offline unit tests.

Will all 145 MB be downloaded?

No. Browsers request only the files needed for the characters used, guided by unicode-range; a single 10 MB+ file still means no subsetting or splitting, so the first hit fetches the whole file.

About the author

Lingyi Information Official (delivery team) works on requirements, proposals and acceptance for corporate websites, brand and smart-manufacturing projects. This article parses @font-face declarations in the first three stylesheets and reads only font response headers for bytes; it does not download font bodies, judge real rendering or performance, and is not a final verdict on any site; the 25-site sample is a pilot.

Missing canonical is a common homepage gap

25 sites: 9 canonical, 16 missing; 8 og:url.

Request a recheck plan