De font-display
definește proprietatea modul în care sunt încărcate și afișate de browser - ul fișierele de fonturi. Se aplică @font-face
regulii care definește fonturile personalizate într-o foaie de stil.
@font-face ( font-family: 'MyWebFont'; /* Define the custom font name */ src: url('myfont.woff2') format('woff2'), url('myfont.woff') format('woff'); /* Define where the font can be downloaded */ font-display: fallback; /* Define how the browser behaves during download */ )
Valori
font-display
Proprietatea acceptă cinci valori:
auto
(implicit): permite browserului să utilizeze metoda sa implicită pentru încărcare, care este cel mai adesea similară cublock
valoarea.block
: Instruiește browserul să ascundă scurt textul până când fontul se descarcă complet. Mai precis, browserul desenează textul cu un substituent invizibil, apoi îl schimbă cu fața personalizată a fontului imediat ce se încarcă. Acest lucru este, de asemenea, cunoscut sub numele de „flash de text invizibil” sau FOIT.swap
: Instruiește browserul să utilizeze fontul alternativ pentru a afișa textul până când fontul personalizat a fost descărcat complet. Acest lucru este, de asemenea, cunoscut sub numele de „flash de text nestilizat” sau FOUT.fallback
: Acționează ca un compromis între valoriauto
șiswap
. Browserul va ascunde textul timp de aproximativ 100 ms și, dacă fontul nu a fost încă descărcat, va folosi textul alternativ. Acesta va trece la noul font după ce a fost descărcat, dar numai într-o perioadă scurtă de schimb (probabil 3 secunde).optional
: De exemplufallback
, această valoare îi spune browserului să ascundă inițial textul, apoi să treacă la un font alternativ până când fontul personalizat este disponibil pentru utilizare. Cu toate acestea, această valoare permite, de asemenea, browserului să determine dacă fontul personalizat este chiar utilizat deloc, utilizând viteza de conectare a utilizatorului ca factor determinant în care conexiunile mai lente au mai puține șanse să primească fontul personalizat.
Iată un alt mod de a te gândi la ele
Perioada de blocare | Perioada swap | |
---|---|---|
bloc | Mic de statura | Infinit |
swap | Nici unul | Infinit |
da înapoi | Extrem de scurt | Mic de statura |
opțional | Extrem de scurt | Nici unul |
De ce avem nevoie font-display
Înainte de a avea un sprijin larg pentru @font-face
, arsenalul nostru tipografic era limitat la fonturile locale, unde singurele fonturi disponibile erau cele care erau preîncărcate pe computerul utilizatorului final. Numim aceste fonturi „sigure pentru web”, deoarece browserul nu trebuie să descarce nimic pentru ca acestea să poată fi redate.
Apoi a venit @font-face
regula care le-a dat designerilor web și dezvoltatorilor front-end noi puteri tipografice, spre deosebire de oricând. Ne-a permis să încărcăm fișiere de font pe un server și să scriem un set de reguli în foile noastre de stil care denumesc fontul și să spună browserului unde să descarce fișierele. De asemenea, a dat naștere la servicii precum Google Fonts care au adus fonturi personalizate maselor. În cele din urmă, un obstacol major care a separat designul web de designul tipărit a fost răsturnat!
Cu toate acestea, fonturile personalizate au venit (și continuă să vină) la un cost. Fișierele cu fonturi pot fi mari și timpul suplimentar pentru descărcarea fișierelor poate încetini performanța unui site, în special pentru dispozitivele cu o conexiune de rețea mai lentă. Costul suplimentar pentru utilizatori cu planuri de date limitate a devenit, de asemenea, un factor.
O altă preocupare specială care a apărut cu fonturile personalizate este ceea ce a fost supranumit „flash de text nestilat” sau FOUT pe scurt. Browserele ar afișa implicit un font de sistem în timp ce așteaptă descărcarea fontului personalizat. Acest lucru a permis paginilor web să se încarce mai repede, dar a ridicat îngrijorări în rândul designerilor de web care au văzut acest lucru ca deturnând experiența utilizatorului și denaturând designul dorit. Browserele web astăzi ascund, în general, textul până când este descărcat fontul personalizat, la care acum ne referim ca un „flash de text invizibil” sau FOIT.
Nici FOUT, nici FOIT nu sunt grozavi. Avem modalități de a optimiza performanța fonturilor personalizate pentru a ușura efectele. Cu toate acestea, acum trebuie font-display
să îi spunem browserului dacă preferăm FOUT, FOIT sau chiar ceva între ele.
Testarea asistenței
Avertisment interesant remarcat de Šime Vidas:
Afișarea fontului CSS este un
@font-face
descriptor și nu o proprietate, astfel încât suportul său în browser nu poate fi testat cu interogări de caracteristici (@supports
regula CSS și CSS.supports API).
Mai multe informatii
- CSS Font Rendering Controls Module Level 1 Specification: O schiță a specificației pentru proprietate.
font-display
pentru mase: Jeremy Wagner ne-a prezentat proprietatea aici pe CSS-Tricks.- Utilizare
@font-face
: o explicație cuprinzătoare a regulii și a celor mai bune practici pentru modul de utilizare. - System Font Stack: un fragment pentru renunțarea totală la fonturi personalizate și se bazează exclusiv pe fonturile de sistem ale unui utilizator.
- Controlul performanței fontului cu
font-display
: O scriere fină pe Google de subiect.
Suport pentru browser
Aceste date de asistență pentru browser provin de la Caniuse, care are mai multe detalii. Un număr indică faptul că browserul acceptă funcția în versiunea respectivă și în sus.
Desktop
Crom | Firefox | IE | Margine | Safari |
---|---|---|---|---|
60 | 58 | Nu | 79 | 11.1 |
Mobil / Tabletă
Android Chrome | Android Firefox | Android | Safari iOS |
---|---|---|---|
88 | 85 | 81 | 11.3-11.4 |