Font delivery needs correct licensing, cross-origin access, and loading priorities that avoid delaying visible text.

WOFF2 is enough

Current browsers speak WOFF2. Skip extra legacy formats unless you still have a reason. Version the filename when the face changes and long-cache it.

The delivery model

How it works

Self-host fonts on a CDN

  1. 01SelectShip only licensed weights and character subsets needed.
  2. 02LoadUse WOFF2 with an intentional display strategy.
  3. 03RenderVerify fallback behavior and layout stability.
Conceptual model for this configuration. The actual path depends on provider policy and application behavior.

CORS on the font hostname

If fonts are on a sibling host, set CORS so the site origin can use them. Many teams simply put fonts on the same distribution as the site.

Preload without over-preloading

Preload the one or two faces used in the first paint. Preloading every weight fights LCP.

Licensing still applies

Self-hosting does not change the foundry licence. It changes the delivery path.

Validate before production

Inspect font requests on a cold page load and confirm successful CORS behavior. Preload only the font actually needed above the fold, with matching credentials mode. Check text visibility and layout shifts on a throttled connection.

  • Record the configuration and expected result before changing traffic.
  • Keep evidence of the test and a working rollback for the previous behavior.

Sources & further reading