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
Self-host fonts on a CDN
- 01SelectShip only licensed weights and character subsets needed.
- 02LoadUse WOFF2 with an intentional display strategy.
- 03RenderVerify fallback behavior and layout stability.
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.



