Artikel

Font-optimering — Webfonts, FOUT og SEO

Webfonts kan forsinke render og forårsage layout shift. WOFF2, font-display: swap og preload af kritiske fonte er de primære optimeringer.

Webfonts er noget nær universelle på moderne sites — og en hyppig kilde til performance-problemer. En webfont der hentes fra ekstern CDN, parseres og swappes ind over systemfonten kan koste 200-500ms ekstra på LCP og forårsage målbart CLS i processen. Korrekt font-optimering med WOFF2, preload og font-display er en konkret og direkte forbedring af Core Web Vitals.

WOFF2 er standarden

WOFF2 er det mest effektive webfont-format. Det komprimerer 30-50% bedre end WOFF og er understøttet af alle moderne browsere. Sørg for at dine fonte serveres som WOFF2 — det er det primære format i @font-face definitionen:

@font-face {
  font-family: 'Inter';
  src: url('/fonts/inter.woff2') format('woff2');
  font-display: swap;
}

font-display styrer swap-adfærd

font-display bestemmer hvad browseren viser mens fonten indlæses:

  • swap — viser systemfont øjeblikkeligt, swapper til webfont når den er klar. FOUT, men ingen usynlig tekst.
  • optional — giver fonten kort tid (100ms) til at indlæse fra cache; hvis ikke klar, bruges systemfont permanent for den session.
  • block — skjuler tekst op til 3 sekunder mens fonten indlæses. Undgå.

For kritiske fonte (body font) er swap standardvalget. optional er stærkere for performance men kræver at brugeren accepterer systemfont ved første besøg.

Preload af kritiske fonte

For den primære body font og heading font er preload effektivt:

<link rel="preload" as="font" href="/fonts/inter.woff2" crossorigin type="font/woff2">

crossorigin er påkrævet selv for self-hosted fonte — fonte hentes med CORS-request. Uden crossorigin vil browseren hente fonten to gange.

Subsetting reducerer filstørrelse

En komplet Inter-font inkluderer tegn for alle sprog — kyrillisk, græsk, vietnamesisk. For et dansk site er langt størstedelen af disse tegn irrelevante. Subsetting fjerner ubrugte tegn og reducerer filstørrelsen dramatisk. Google Fonts genererer automatisk subsets baseret på unicode-range — self-hosted fonte kræver manuel subsetting med værktøjer som pyftsubset.

Self-hosted vs. Google Fonts

Google Fonts er populær, men kræver en ekstern request til fonts.googleapis.com. Med preconnect er det håndterbart. Self-hosted fonte eliminerer den externe afhængighed og giver fuld kontrol over caching — og er GDPR-cleanere da ingen request sendes til Google. → Denne artikel er en del af Web Performance — Core Web Vitals og teknisk hastighed.

Andre artikler i samme emne

Ofte stillede spørgsmål

Hvad er FOUT og FOIT?
FOUT (Flash of Unstyled Text) opstår når browseren viser systemfont mens webfonten indlæses, derefter swapper til webfonten. FOIT (Flash of Invisible Text) opstår når browseren skjuler tekst mens fonten indlæses. FOIT er værre fra UX-perspektiv — brugeren ser ingen tekst. font-display: swap producerer FOUT, som er den bedste kompromis.
Påvirker webfonts CLS?
Ja. Fontswap fra systemfont til webfont kan ændre tekstens layout og derved trigge Cumulative Layout Shift. Preload af kritiske fonte reducerer swap-forsinkelsen. font-display: optional undgår swap helt, men viser systemfont hvis fonten ikke er indlæst inden første render.
Hvad er font subsetting og hvornår er det relevant?
Font subsetting reducerer en webfonts filstørrelse ved at fjerne tegn der ikke bruges. En komplet Inter-font inkluderer tegn til alle verdenssprog — cyrillisk, græsk, arabisk. For et dansk site er de fleste tegnsæt overflødige. Subsetting kan reducere fontfilstørrelser fra 200-400KB til 20-50KB. Google Fonts subsetter automatisk. Self-hosted fonte kræver manuel subsetting med pyftsubset eller lignende værktøj.
Hvad er unicode-range i @font-face og hvad gør det?
unicode-range angiver præcist hvilke tegn en @font-face-regel dækker. Browseren downloader kun fontfilen hvis siden faktisk bruger tegn i det specificerede range. Google Fonts bruger automatisk unicode-range til at opdele fonte i subsets og sikre at kun relevante subsets downloades. For self-hosted fonte bør unicode-range konfigureres for at undgå unødvendige font-downloads.
Er self-hosted fonte altid bedre end Google Fonts?
Self-hosted fonte er GDPR-renere fordi ingen request sendes til Google, og de giver fuld kontrol over caching og filformater. Google Fonts understøtter dog browser-caching på tværs af sites — en bruger der har besøgt et andet site med samme font har den muligvis allerede cachet. Praktisk forskel er minimal for de fleste sites. Vælg self-hosting for GDPR-compliance, Google Fonts for enkel implementering.

Placering i ordbogen

Font-optimering — Webfonts, FOUT og SEO