Caricamento dei web font: font-display, preload e subsetting

Caricamento dei web font

Caricamento dei web font: font-display, preload, subsetting | We.Inc

Scopri cosa fa ogni valore di font-display con un simulatore della timeline, poi usa preload, preconnect, subset con unicode-range e metriche di fallback allineate per evitare il layout shift.

Caricare i font velocemente si riduce a quattro mosse: segnala presto il font al browser (preconnect o preload), invia piccoli file WOFF2 che contengono solo i caratteri che ti servono, scegli un valore di font-display adatto al testo e dimensiona il font di fallback in modo che coincida, così niente salta. Usa font-display: optional quando evitare il layout shift è la priorità.

I valori di font-display in sintesi

I font sono tra le poche risorse che possono nascondere il testo o spostare il layout. Trascina il cursore qui sotto per impostare quanto tempo impiega un font ad arrivare e guarda cosa mostra ogni valore di font-display in ogni istante, poi copia gli schemi di caricamento che mantengono stabili le pagine.

Domande frequenti

Cosa fa font-display: swap?

Assegna al font un block period estremamente breve, che la specifica CSS Fonts consiglia di tenere a 100ms o meno, e uno swap period infinito. Il testo appare quasi subito nel font di fallback e passa al web font non appena questo finisce di caricarsi.

font-display: swap peggiora il CLS?

Può succedere. Se il fallback e il web font hanno larghezze o interlinee diverse, il cambio tardivo sposta il testo e il contenuto sottostante. Risolvi con size-adjust e gli override di ascent, descent e line-gap sul fallback, oppure usa optional.

Perché il mio font con preload viene scaricato due volte?

I font vengono richiesti in modalità CORS anonima, quindi il link di preload ha bisogno dell'attributo crossorigin anche quando il file è sulla stessa origine. Senza di esso il preload non corrisponde alla richiesta reale e il font viene scaricato di nuovo.

Devo fare il preload dei Google Fonts?

Di solito no. web.dev avverte che il preload aggira parte della negoziazione dei contenuti del browser, compreso unicode-range, quindi potresti scaricare un subset che la pagina non usa mai. Usa invece preconnect verso fonts.googleapis.com e fonts.gstatic.com, oppure ospita il font da te e fai il preload del tuo file.

Come fa unicode-range a risparmiare byte?

Quando una regola @font-face ha un unicode-range, il browser scarica quel file solo se la pagina usa almeno un carattere dell'intervallo. Dividi un font in file per latino, cirillico o greco e ogni visitatore scarica solo gli alfabeti presenti nella pagina.

La timeline di visualizzazione dei font

Perché i cambi tardivi causano layout shift

Subsetting

Font in self-hosting con preload

Fai il preload dell'unico file che serve alla prima schermata

as, type e crossorigin devono essere tutti presenti. La regola @font-face sta inline nella head, così viene individuata subito.

File separati con unicode-range

Subset latino e cirillico di un'unica famiglia

Entrambe le regole condividono il nome della famiglia. Una pagina scritta solo in inglese non scarica mai il file cirillico.

Un fallback dimensionato su misura

Fallback locale regolato per ridurre il layout shift

I numeri sono segnaposto: misura il tuo font rispetto al fallback e regolali finché i due non coincidono.

Google Fonts con preconnect e un subset per un titolo

Il secondo foglio di stile richiede solo le lettere del testo del logo, così quel file resta minuscolo.

Simulatore della timeline di font-display

Vista iniziale: il font impiega 1.5 secondi a caricarsi; trascina il cursore per cambiarlo. Il grigio è testo invisibile, l'ambra il fallback, il blu il web font.

Il font arriva dopo {n}s

Web font non usato in questa visualizzazione della pagina

Cambio visibile: il testo può ricomporsi

Nessun cambio visibile

Scala: da 0 a 5 secondi. Con optional, la specifica consente al browser di interrompere un download tardivo o di completarlo con priorità molto bassa.

Periodi consigliati dalla specifica

Valore

Periodi

Inizia gratis · Nessuna carta di credito richiesta

Correlati: Guide

Prodotto

Per chi è

Funzionalità

Risorse

Azienda

Mappa del sito