Maison > interface Web > tutoriel CSS > CSS Font-Display: L'avenir du rendu de police sur le Web

CSS Font-Display: L'avenir du rendu de police sur le Web

Jennifer Aniston
Libérer: 2025-02-16 08:49:17
original
441 Les gens l'ont consulté

CSS Font-Display: L'avenir du rendu de police sur le Web

Les plats clés

  • Le descripteur CSS Font-Display fournit aux développeurs plus de contrôle sur la façon dont les polices sont affichées lors du chargement, visant à améliorer l'expérience utilisateur et les performances perçues.
  • Le descripteur fonctionne dans le RULLE @ FONT-FACE et propose cinq valeurs possibles: Auto, Block, Swap, Fallback et Facultatif. Chaque valeur représente une stratégie différente pour gérer le chargement des polices et le rendu.
  • Le descripteur fonctionne sur une chronologie divisée en trois périodes: bloc, échange et défaillance. Les durées de ces périodes, qui ne peuvent pas être explicitement attribuées par le développeur, dictent comment un navigateur doit rendre le texte.
  • Bien que le descripteur de la police CSS ne soit pas encore entièrement pris en charge dans tous les navigateurs, il représente une étape significative dans la normalisation des comportements de rendu de police sur le Web.

L'un des inconvénients de l'utilisation des polices Web est que si une police n'est pas disponible sur l'appareil d'un utilisateur, il doit être téléchargé. Cela signifie qu'avant que la police ne devienne disponible, le navigateur doit décider comment gérer l'affichage de tout bloc de texte qui utilise cette police. Et il doit le faire d'une manière qui n'a pas d'impact significatif sur l'expérience utilisateur et les performances perçues.

Au fil du temps, les navigateurs ont adopté plusieurs stratégies pour atténuer ce problème. Mais ils le font de différentes manières et hors du contrôle des développeurs, qui ont dû concevoir plusieurs techniques et solutions de contournement pour surmonter ces problèmes.

CSS Font-Display: L'avenir du rendu de police sur le Web

Entrez le descripteur de FONT-Display pour le RULLE @ FONT-FACE. Cette fonction CSS présente un moyen de normaliser ces comportements et de fournir plus de contrôle aux développeurs.

Utilisation de Font-Display

Avant de regarder en détail les différentes fonctionnalités offertes par Font-Display, considérons brièvement comment vous pourriez utiliser la fonctionnalité dans votre CSS.

Tout d'abord, Font-Display n'est pas une propriété CSS mais, comme mentionné dans l'intro, il s'agit d'un descripteur pour le Rule @ Font-Face. Cela signifie qu'il doit être utilisé à l'intérieur d'une règle de Font-Face, comme indiqué dans le code suivant:

<span><span>@font-face</span> {
</span>  <span>font-family: 'Saira Condensed';
</span>  <span>src: <span>url(fonts/sairacondensed.woff2)</span> format('woff2');
</span>  <span>font-display: swap;
</span><span>}</span>
Copier après la connexion
Copier après la connexion

Dans cet extrait, je définis une valeur d'échange pour la police Saira condensée.

Les mots clés pour toutes les valeurs disponibles sont:

  • Auto
  • Block
  • Swap
  • Fallback
  • Facultatif

La valeur initiale de la FONT-Display est automatique.

Dans les sections ultérieures, je vais passer en revue chacune de ces valeurs en détail. Mais d'abord, examinons la période de temps utilisée par le navigateur pour déterminer la police. Lorsque je discute de chacune des valeurs, je vais expliquer les différents aspects de la chronologie et comment ceux-ci se comportent pour chaque valeur.

La chronologie de la police

Au cœur de cette fonctionnalité se trouve le concept de la chronologie de la police. Le temps de chargement de la police, à partir de sa demande et se terminant par son chargement ou son échec réussi, peut être divisé en trois périodes consécutives qui dictent comment un navigateur doit rendre le texte. Ces trois périodes sont les suivantes:

  • la période de bloc. Au cours de cette période, le navigateur rend le texte avec une police de secours invisible . Si la police demandée se charge avec succès, le texte est renvoyé avec cette police demandée. La police de secours invisible agit comme un espace réservé vide pour le texte. Cela réduit le décalage de la disposition lorsque la rediffusion est effectuée.
  • la période d'échange. Si la police souhaitée n'est pas encore disponible, la police de secours est utilisée, mais cette fois, le texte est visible. Encore une fois, si la police de chargement entre, elle est utilisée.
  • la période de défaillance. Si la police ne devient pas disponible, le navigateur ne l'attend pas et le texte sera affiché avec la police de secours pendant la durée de la visite actuelle de la page. Notez que cela ne signifie pas nécessairement que le chargement de la police est interdit; Au lieu de cela, le navigateur peut décider de le continuer, afin que la police soit prête à être utilisée lors de visites de page successives du même utilisateur.

L'ajustement de la durée de ces périodes vous permet de configurer une stratégie de rendu de texte personnalisée. En particulier, ces durées peuvent s'effondrer à zéro ou s'étendre à l'infini, comme je vais vous le montrer dans les sections suivantes.

mais ces durées ne peuvent pas être explicitement attribuées par le développeur. Cette possibilité a été examinée à un stade précoce de la spécification, mais a été abandonnée. Au lieu de cela, un ensemble de valeurs de mots clés prédéfinis qui peuvent gérer la majorité des cas d'utilisation sont fournies, comme indiqué dans la section précédente.

Voyons comment chacun de ces mots clés gère le processus de chargement et d'affichage de la police.

Font-Display: Auto

Cette valeur indique au navigateur d'adopter le comportement d'affichage de police par défaut choisi par le navigateur. Souvent, cette stratégie est similaire à la valeur suivante, Block.

Font-Display: Block

Avec cette valeur, après une courte période de bloc (la spécification recommande une durée de trois secondes), la période d'échange s'étend à l'infini. Cela signifie que dans cette circonstance, la période de défaillance est absente.

Alors que le navigateur attend brièvement la police demandée, elle rend le texte avec la police de secours invisible; Après cela, si la police n'est pas encore disponible, la police de secours est rendue visible; Et chaque fois que le téléchargement se termine, le navigateur remettait le texte avec la police recherchée.

Vous pouvez regarder ce comportement dans la vidéo suivante, qui utilise une page de test simple qui intègre une police Web spécifique pour son titre:


Au début de la charge de page, l'en-tête est invisible mais il est là, dans le dom. Après environ trois secondes, si la police n'est pas encore disponible, le texte est rendu visible avec la police de secours. Dans la démo vidéo, j'imite les conditions de réseau médiocres à l'aide de la fonction de limitation du réseau de Chrome Devtools. Enfin, lorsque la police parvient à télécharger, le titre est rendu avec lui.

Font-Display: Swap

Avec cette valeur, la période de bloc s'effondre à 0 et la période d'échange s'étend à l'infini. Par conséquent, ici aussi, la période de défaillance est manquante.

En d'autres termes, le navigateur n'attend pas la police mais rend immédiatement le texte avec la police de secours; Ensuite, chaque fois que la police est disponible, le texte est rendu avec lui.

Vérifions ceci:


Font-Display: Fallback

Il s'agit de la première valeur qui intègre la période de défaillance. Après une période de bloc très courte (100 ms sont recommandés), la période d'échange a maintenant une courte durée (3S est recommandé). En conséquence, si la police demandée n'est pas prête à la fin de cette période, le texte s'affichera en utilisant la police de secours pour la durée de la visite de la page. Cela évite de déranger le visiteur de la page avec un changement de mise en page tardif qui pourrait être choquant vers l'expérience utilisateur.

Dans cette première vidéo ci-dessous, la police se charge après plus de six secondes, il n'est donc jamais échangé:


Dans la vidéo suivante, la police se charge plus rapidement, avant le délai d'expiration de la période de swap, de sorte que la police est utilisée comme prévu:


Font-Display: Facultatif

Lorsque j'ai lu la spécification pour la première fois, j'ai trouvé les noms attribués aux stratégies d'affichage des polices qui ne sont pas si claires. Ceci est même souligné dans la spécification elle-même, qui suggère des versions futures des noms d'utilisation des spécifications qui illustrent mieux l'utilisation prévue de chaque stratégie, proposant les alternatives suivantes:

  • nécessite pour le bloc
  • IMPORTANT POUR SWAP
  • préférable pour le repli

mais la valeur facultative devrait rester inchangée. En effet, cette valeur capture bien l'essence du comportement qu'il déclenche. Dans ce cas, la police est considérée comme facultative pour le rendu de la page, indiquant essentiellement au navigateur: Si la police est déjà disponible, utilisez-le, sinon cela n'a pas d'importance, allez-y avec la police de secours; La police peut être prête à être utilisée sur les visites de page futures .

Avec cette valeur, le calendrier d'affichage de la police a une courte période de bloc (encore une fois, la spécification recommande un intervalle de temps de 100 ms) et une période d'échange de durée zéro. Par conséquent, la période de défaillance suit immédiatement la période de bloc, ce qui signifie que si la police n'est pas facilement disponible, elle ne sera pas utilisée pour la durée de la page. Mais la police pourrait éventuellement être entièrement téléchargée en arrière-plan et elle deviendrait donc disponible pour le rendu immédiat sur les charges de page futures.

Mais je dois souligner ici que, en particulier dans des conditions de réseau médiocres, l'agent utilisateur est libre d'abandonner ou même de ne pas commencer le téléchargement de la police. Il s'agit de ne pas avoir un impact inutilement sur la qualité de la connexion réseau. Par conséquent, le site est toujours utilisable, mais la police ne sera pas immédiatement disponible sur les charges de page futures.

Dans la vidéo ci-dessous, la page de test est chargée sans étrangler le réseau. La police est téléchargée rapidement, mais seulement après la période de bloc courte, donc le texte s'affiche avec la police de secours pour toute la durée de la visite.


Dans la vidéo suivante, la page est rechargée dans les mêmes conditions de réseau, mais cette fois avec le cache activé, de simuler une deuxième visite:


Et là vous l'avez, le titre rend maintenant avec la police Web souhaitée.

Avant de passer à autre chose, notez la durée extrêmement courte d'environ 100 ms recommandée pour la période de bloc lorsque vous utilisez les valeurs de secours et facultatives. Il s'agit de permettre à une brève période pour une police à chargement rapide (ou une charge à partir du cache) à afficher avant d'utiliser la police de secours, évitant ainsi un «flash de texte non style», ou fout.

Je me suis en fait demandé pourquoi la période de bloc s'effondre à zéro lors de l'utilisation de Font-Display: Swap, au lieu d'utiliser le même intervalle court que facultatif. Il s'avère qu'il y a un problème ouvert dans le dépôt GitHub de la spécification pour faire en sorte que «swap» utilise la même «période de blocage petite» que d'autres.

sur la police de secours

Dans la discussion ci-dessus, plusieurs fois, j'ai mentionné la police de secours. Mais d'où cela vient-il?

La police de secours est la première police disponible présente dans la pile de police définie à l'aide de la propriété Font-Family sur l'élément en question.

Par exemple, sur la page de test, la valeur de la famille pour la tête est:

<span><span>@font-face</span> {
</span>  <span>font-family: 'Saira Condensed';
</span>  <span>src: <span>url(fonts/sairacondensed.woff2)</span> format('woff2');
</span>  <span>font-display: swap;
</span><span>}</span>
Copier après la connexion
Copier après la connexion

Ceci peut être vérifié (voir la vidéo ci-dessus pour facultatif), par exemple, sur une machine Windows, qui utilise Arial comme police rendue.

support

au moment de la rédaction du support pour le descripteur de la police, c'est comme suit:

  • Chrome l'a pris en charge depuis la version 60
  • Opera l'a pris en charge depuis la version 47
  • Il est en développement pour Firefox et est disponible derrière un drapeau depuis la version 46.
  • En ce qui concerne Safari, l'état de la plate-forme WebKit rapporte qu'il est en développement
  • Il n'y a pas encore d'indication que Microsoft Edge le prendra en charge de sitôt. Il y a un billet sur le site de rétroaction du développeur Microsoft Edge où il est possible de voter pour la mise en œuvre de cette fonctionnalité.

Veuillez vous référer à caniuse.com pour les informations de support à jour.

Il convient de noter que la prise en charge de la police ne peut pas être testée par des requêtes de fonctionnalité, car, comme mentionné ci-dessus, ce n'est pas une propriété CSS mais un descripteur de police. Dans ce problème de github, vous trouverez une discussion sur la façon de détecter correctement cette fonction.

Une fois qu'il a été détecté que la police n'est pas prise en charge, plusieurs stratégies de secours sont possibles, mais c'est la portée de cet article. L'article Un guide complet des stratégies de chargement des polices de Zach Leatherman présente une enquête exhaustive des solutions disponibles.

Utilisation avec Google Fonts

Vous avez peut-être remarqué que la police utilisée dans la page de démonstration provient des polices Google, mais elle n'est pas chargée de la manière habituelle, c'est-à-dire en liant à la feuille de style fournie par le fournisseur de police. Au lieu de cela, je viens de copier l'URL de la police trouvée dans cette feuille de style et j'ai utilisé cette URL dans ma règle de Font-Face personnalisée. J'ai dû le faire parce que, comme on le voit dans la section d'utilisation, la police doit être spécifiée à l'intérieur de la règle de la police.

Y a-t-il une manière meilleure et plus adaptée aux polices Google? Les polices Google et les autres fonderies de polices tierces vont-elles prendre en charge la police?

Il y a un problème ouvert sur le dépôt de github Google Fonts où cela est discuté. Ajoutez votre 1 pour montrer votre intérêt pour cette fonctionnalité!

En outre, il convient de mentionner que le niveau 4 du module Fonts CSS propose l'utilisation de Font-Display en tant que descripteur pour les valeurs de fonction de police, pour permettre aux développeurs de définir une politique d'affichage pour les règles de Font-Face qui ne sont pas qui ne sont pas directement sous leur contrôle. Mais cela n'est pas encore implémenté par aucun agent utilisateur.

Mots finaux

J'espère que cela vous donne un aperçu décent du descripteur de la police et de la façon dont cette fonctionnalité préfigure un avenir fort pour le rendu de police sur le Web.

Bien que cet article n'ait pas discuté des cas d'utilisation spécifiques pour les différentes stratégies mises en œuvre par Font-Display, la spécification illustre les cas d'utilisation avec quelques exemples clairs, et plusieurs des références citées sont élaborées sur ce sujet. Donc, en plus des bases que j'ai couvertes ici, vous aurez plus à regarder dans les ressources que j'ai référencées.

Questions fréquemment posées (FAQ) sur l'affichage de la police CSS et le rendu de police web

Qu'est-ce que la propriété CSS Font-Display et pourquoi est-ce important?

La propriété CSS Font-Display est une fonction CSS qui contrôle comment les polices sont affichées sur une page Web, en particulier pendant la période où la police est toujours en charge. Cette propriété est cruciale car elle a un impact significatif sur l'expérience utilisateur sur un site Web. Si une police prend trop de temps à charger, elle peut entraîner un retard dans le rendu du texte, conduisant à un phénomène appelé Flash of Invisible Text (FOIT) ou Flash of Unstyled Text (FOT). En utilisant la propriété de dispositif de police, les développeurs peuvent contrôler ce comportement et améliorer l'expérience utilisateur globale.

Comment fonctionne la propriété CSS Font-Display? Fournir un ensemble de règles qui dictent comment une police doit se comporter pendant son chargement et lorsqu'elle ne charge pas. Il accepte plusieurs valeurs, notamment «Auto», «Block», «Swap», «Fallback» et «Facultatif». Chacune de ces valeurs représente une stratégie de chargement différente, donnant aux développeurs la flexibilité de choisir celle qui convient le mieux à leurs besoins.

Quelles sont les différences entre les valeurs de la police?

Chaque police- La valeur d'affichage représente une stratégie de chargement de police différente. «Auto» laisse le comportement de chargement jusqu'au navigateur. «Block» donne à la police une courte période de bloc et une période de swap infinie. «Swap» donne à la police une période de bloc zéro seconde et une période de swap infinie. «Fallback» donne à la police une période de bloc très courte et une courte période d'échange. «Facultatif» donne à la police une période de blocs zéro seconde et une période d'échange zéro seconde.

Comment puis-je utiliser la propriété CSS Font-Display dans mon code?

Pour utiliser la propriété CSS Font-Display dans votre code, vous devez l'inclure dans votre règle @ font-face. Voici un exemple:

@ font-face {
Font-Family: 'MyFont';
src: url ('myfont.woff2') format ('woff2');
FONT -Display: swap;
}
Dans cet exemple, la propriété de désactivation de police est définie sur «Swap», ce qui signifie que le texte sera affiché immédiatement avec une police de secours si «myfont» n'est pas disponible.

Quel est l'impact de la propriété CSS Font-Display sur les performances du site Web?

La propriété CSS Font-Display peut avoir un impact significatif sur les performances du site Web. En contrôlant comment les polices sont affichées pendant le processus de chargement, il peut aider à prévenir les retards dans le rendu du texte, améliorant ainsi la vitesse de chargement perçue d'un site Web. Il peut également aider à éviter les changements de mise en page causés par des polices de chargement tardif, conduisant à une expérience utilisateur plus douce.

Comment la propriété de désactivation de la police CSS affecte-t-elle le flash du texte invisible (FOIT) et le flash de texte non utilisé ( Fout)?

La propriété CSS Font-Display aborde directement les problèmes de Foit et Fout. En permettant aux développeurs de contrôler le comportement de chargement des polices, il peut empêcher le texte de devenir invisible ou non style pendant le processus de chargement. Par exemple, la définition de la propriété de dispositif de police sur «échanger» peut éliminer le POIT en affichant immédiatement le texte avec une police de secours.

Quelles sont les meilleures pratiques pour utiliser la propriété CSS-Display?

Certaines meilleures pratiques pour l'utilisation de la propriété CSS-Display incluent le choix de la bonne valeur en fonction de vos besoins et le test du comportement de chargement sur différents navigateurs et conditions de réseau. Il est également recommandé d'utiliser une police de secours qui correspond étroitement aux métriques de la police personnalisée pour minimiser les changements de mise en page.

Puis-je utiliser la propriété CSS Font-Display avec des polices Web hébergées sur des services tiers?

Oui, vous pouvez utiliser la propriété CSS Font-Display avec des polices Web hébergées sur des services tiers. Cependant, il est important de noter que tous les services ne prennent pas en charge cette fonctionnalité. Vous devriez vérifier la documentation ou contacter le fournisseur de services pour plus d'informations.

Y a-t-il des limites ou des inconvénients à l'utilisation de la propriété CSS Font-Display?

Un inconvénient potentiel de l'utilisation de la police CSS- La propriété d'affichage est qu'il n'est pas entièrement pris en charge dans tous les navigateurs. Par exemple, Internet Explorer et certaines versions plus anciennes d'autres navigateurs ne prennent pas en charge cette fonctionnalité. De plus, la valeur «facultative» peut entraîner la sauté entièrement de la police personnalisée dans certains cas, ce qui pourrait affecter la cohérence visuelle de votre site Web.

Comment la propriété CSS Font-Display s'intègre-t-elle dans une stratégie complète de performance Web?

La propriété CSS-Display n'est qu'un outil d'une stratégie complète de performance Web. Bien qu'il puisse aider à améliorer la vitesse de chargement perçue et à empêcher les changements de disposition, il doit être utilisé en conjonction avec d'autres techniques d'optimisation des performances, telles que la minimisation de la taille de vos fichiers CSS et JavaScript, l'optimisation des images et l'utilisation d'un réseau de livraison de contenu (CDN) .

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal