Font-display - Descripteur CSS

font-display

Résumé des caractéristiques du descripteur font-display

Description rapide
Descripteur pour @font-face. Détermine le comportement du navigateur face aux polices de caractères longues à charger.
Statut
Problèmes de compatibilité
S'applique à
Tous les éléments.
Utilisable sur
HTML
Valeurs prédéfinies
auto | block | swap | fallback | optional
Pourcentages
Ne s'appliquent pas.
Valeur initiale
auto
Not animable : la propriété font-display ne peut pas être animée.
Module W3C
Module CSS - Polices de caractères
Statut du document: WD (document de travail)

Schéma syntaxique de font-display.

Font-display property - Syntax diagramSyntax diagram of the font-display CSS property. See stylescss.free.fr for details. auto auto block block swap swap fallback fallback optional optionalfont-display:;font-display:;
Schéma syntaxique de la propriété font-display
Les liens du schéma donnent accès à plus de détails

Description du descripteur font-display..

font-display est un descripteur assez technique, qui détermine quelle logique doit suivre la navigateur au moment de télécharger les polices personnalisées. En effet, les fichiers de polices peuvent être assez gros et prendre un temps de téléchargement non négligeable. Que faire pendant ce temps ? Ne pas afficher les textes ? Les afficher dans une autre police ?

Le descripteur font-display s'utilise avec la directive @font-face qui sert à télécharger une police de caractères personnalisée. Exemple :

@font-face { font-family:'Nom de la police'; src: url('chemin/fichier.otf'); font-display: swap; }

En cas de police qui se fait attendre, les navigateurs procèdent généralement par trois étapes successives :

  • Étape 1 : les contenus devant s'afficher dans la police manquante ne sont pas affichés. L'espace qu'ils devraient occuper est néanmoins réservé, autrement dit on a des zones blanches sur la page.
    Cette étape est parfois appelée FOIT (Flash Of Invisible Text) et peut durer de 0 à quelques secondes suivant les navigateurs.
     
  • Étape 2 : les contenus sont affichés dans une police de remplacement. Les textes sont donc lisibles mais pas encore dans leur police définitive. Cette étape prend le nom de FOUT (Flash Of Unstyled Text).
     
  • Étape 3 : le temps de chargement de la police est vraiment trop long, le contenu reste définitivement affiché dans la police de substitution.
     

Bien entendu, et heureusement, la plupart du temps la police est téléchargée suffisamment rapidement, ou est déjà présente dans le cache. Dans ce cas, le contenu est affiché immédiatement dans la police choisie, sans qu'il soit nécessaire de passer par ces trois étapes.

font-display permet d'ajuster la durée de chacune des étapes, ou, suivant la valeur, de ne pas les traiter toutes.

Syntaxes du descripteur font-display.

  • @font-face { ... font-display: auto; }

    Le navigateur utilise son algorithme par défaut.

  • @font-face { ... font-display: block; }

    Le temps d'attente à blanc est de quelques secondes (étape 1 : FOIT). L'étape 2 (FOUT) n'est pas limitée dans le temps.

    Le texte demeure invisible pendant quelques secondes, puis est ensuite affiché dans une police de remplacement, jusqu'à ce que le police demandée soit disponible.

    block peut être utilisée lorsque le texte doit vraiment être affiché dans la police demandée, par exemple parce que des caractères spéciaux ont été utilisés, et qu'ils risquent de ne pas exister dans la police de remplacement.
    Cependant il faut garder à l'esprit que le texte sera invisible pendant plusieurs secondes : on réservera block pour des textes courts, et surtout pas pour la page entière.

  • @font-face { ... font-display: swap; }

    Le temps d'attente à blanc est nul ou très court (FOIT). L'étape 2 (FOUT) n'est pas limitée dans le temps.

    Le texte est immédiatement (ou presque) affiché dans une police de remplacement, sans temps d'attente à blanc. Lorsque la police est disponible, le texte est ré-affiché dans la police prévue. Cette valeur est la plus couramment employée.

    swap est intéressant pour les textes qui restent compréhensibles dans une police de remplacement mais que l'on préfère afficher dans la police demandée.
    On emploiera swap pour des textes courts car il faut garder à l'esprit que la page devra être composée deux fois : une première fois avec la police de remplacement et une deuxième fois avec la police définitive.

  • @font-face { ... font-display: fallback; }

    Le temps d'attente à blanc et le temps de l'étape 2 sont nuls ou très courts.

    Le texte est rapidement affiché dans une police de remplacement et restera définitivement dans cette police de remplacement.

    fallback peut être utilisée pour des textes longs, ou de façon plus générale pour le body de la page car elle permet d'obtenir très rapidement une page lisible, même si la police n'est pas celle qui est prévue.
    D'autre part cette valeur ne nécessite pas de recomposer la page lorsque la police est enfin disponible. Lors d'un prochain chargement de cette page, la police sera retrouvée dans le cache et affichée directement.

  • @font-face { ... font-display: optional; }

    Le temps d'attente à blanc est très court : le texte est affiché dans une police de remplacement. Le choix est laissé au navigateur de laisser le texte définitivement dans cette police ou d'attendre encore la disponibilité de la police demandée.

    Cette valeur offre le même avantage que fallback, à savoir une bonne rapidité d'affichage. On pourra l'utiliser pour de grands textes ou pour le body de la page.

Exemple interactif avec font-display.

La police utilisée pour afficher le mot "Résultat" ci-dessous est très longue à charger : au moins 5 secondes (le téléchargement du fichier est volontairement ralenti). Lorsque vous choisissez une valeur pour font-display, cela provoque un rechargement de la page et donc également de la police. Observez attentivement ce qui se passe au niveau du mot "Résultat".

font-display :
Résultat

Prise en charge par les navigateurs (compatibilité).

La gestion des polices téléchargeables, et la propriété font-display sont relativement bien gérées par les navigateurs actuels.

1
Descripteur
font-display
Estimation de la prise en charge globale.

Navigateurs sur ordinateurs :

Navigateurs sur mobiles :

Navigateurs obsolètes ou marginaux :

Internet Explorer

KaiOS Browser

Opéra Mobile

Opéra

Safari

Safari sur IOS

Firefox pour Androïd

Samsung Internet

Chrome

Edge

Firefox

Androïd Brower

Chrome pour Androïd

Baidu Browser

QQ Browser

UC Browser pour Androïd

Opéra mini

Voir aussi, au sujet des polices.

Les spécifications CSS éditées par le W3C sont organisées en modules. La propriété font-display fait partie du module CSS Fonts Module). Les définitions suivantes sont également décrites dans ce même module.

Propriétés :

font
Raccourci pour définir la plupart des propriétés concernant les polices de caractères.
font-effect
Permet d'appliquer quelques effets au texte : relief, bordure...
font-family
Sélectionne une police de caractères parmi celles qui sont disponibles ou celles qui sont téléchargées.
font-feature-settings
Permet d'exploiter les fonctionnalités spécifiques des polices de caractères OTF, WOFF, etc.
font-kerning
Ajustement du crénage entre caractères.
font-language-override
Définit le langage à prendre en compte lors du choix des caractères.
font-optical-sizing
Optimise la forme des caractères en fonction de leur taille.
font-palette
Définit la palette de couleurs utilisable pour les polices de caractères colorées.
font-size
Ajuste la taille des caractères, ce qui impacte aussi les units comme em, ex, etc.
font-size-adjust
Définition du coefficient d'aspect de la police.
font-smooth
Définit si un algorithme de lissage doit être utilisé et lequel.
font-stretch
Modifie l'étirement ou la compression des caractères.
font-style
Sélectionne les styles italique ou oblique de la police de caractères.
font-synthesis
Autorise ou non le calcul des styles manquants dans la police de caractères.
font-synthesis-position
Autorise ou non le navigateur à synthétiser les caractères en exposant ou en indice.
font-synthesis-small-caps
Autorise ou non le navigateur à calculer le glyphes des caractères en petites capitales.
font-synthesis-style
Définit si le navigateur est autorisé à synthétiser les formes italiques des caractères.
font-synthesis-weight
Définit si le navigateur peut calculer ou non le glyphe des caractères gras.
font-variant
Raccourci permettant de définir les attributs typographiques évolués : ligatures, substitution de caractères, etc.
font-variant-alternates
Définit la substitution de caractères (polices OTF, WOFF).
font-variant-caps
Applique une capitalisation des caractères.
font-variant-east-asian
Typographie spécifique aux caractères chinois ou japonais.
font-variant-emoji
Choisit entre une présentation en emoji ou en texte.
font-variant-ligatures
Active ou désactive la ligature des caractères.
font-variant-numeric
Définit le mode d'affichage des nombres évolués : fractions, numéros, etc.
font-variant-position
Mise en exposant ou en indice des caractères.
font-variation-settings
Donne accès aux possibilités stylistiques des polices OTF.
font-weight
Sélectionne une graisse pour les caractères.
font-width
Synonyme de font-stretch (largeur/élargissement des caractères).

Fonctions :

palette-mix()
Établit le mélange de deux palettes de couleurs issus de deux polices de caractères différentes.

Directives :

@font-face
Définit tous les paramètres d'une police de caractères téléchargeable.
@font-feature-values
Définit les variantes typographiques à utiliser.
@font-palette-values
Définit une palette de couleurs applicable ensuite à une police de caractères.

Descripteurs :

ascent-override
Descripteur pour @font-face. Définit la hauteur des caractères au dessus de la ligne de base.
descent-override
Descripteur pour @font-face. Définit la hauteur des caractères au dessous de la ligne de base.
line-gap-override
Descripteur pour @font-face. Définit l'interligne de la police.
src
Définit la source d'un fichier de police de caractères à télécharger, ou d'une image à afficher.
unicode-range
Descripteur pour @font-face. Définit la plage des codes de caractères à télécharger dans une police.