Le WordPress d'aujourd'hui, décodé pour les développeurs

Éditeur de site (FSE)

Replier sur une police système le temps du chargement d’un thème, sans CLS

Afficher immédiatement le texte avec une police système, puis basculer vers la police personnalisée sans provoquer de saut de mise en page perceptible.

Par WordPress Développement • 22 juin 2024 • 4 min de lecture • Aucun commentaire
Replier sur une police système le temps du chargement d'un thème, sans CLS

Comment afficher du texte immédiatement, sans attendre le téléchargement complet d’une police personnalisée, sans provoquer ensuite un saut de mise en page au moment où cette police finit par arriver ? C’est la tension exacte que couvre la propriété font-display, combinée à un réglage plus récent, size-adjust, moins connu mais souvent plus décisif sur le score final de Cumulative Layout Shift.

Le problème : deux polices, deux métriques différentes

La valeur swap de font-display répond à la première partie du problème : elle indique au navigateur d’afficher immédiatement le texte avec une police de repli, puis de le remplacer dès que la police personnalisée est disponible, plutôt que de laisser un espace vide en attendant. Mais si la police de repli et la police finale n’ont pas la même largeur moyenne de caractère, le remplacement provoque un réajustement visible du texte, parfois suffisant pour faire bouger les éléments qui suivent dans la page — exactement ce que la métrique CLS mesure.

Le snippet : ajuster la police de repli plutôt que la subir

L'essentiel à retenir : font-display: swap affiche le texte avant même le chargement de la police finale ; size-adjust ajuste la police de repli pour limiter le saut de mise en page ; Une police de repli mal choisie annule une bonne partie du bénéfice

La propriété size-adjust, déclarée dans une règle @font-face dédiée à la police de repli, permet de redimensionner celle-ci pour qu’elle occupe approximativement le même espace que la police finale, sans attendre le chargement de cette dernière pour le savoir :

@font-face {
  font-family: 'Repli Ajuste';
  src: local('Arial');
  size-adjust: 105%;
  ascent-override: 90%;
}

body {
  font-family: 'Texte Variable', 'Repli Ajuste', sans-serif;
  font-display: swap;
}

La valeur de size-adjust se détermine par comparaison directe : on affiche un même texte avec chaque police, on mesure la largeur obtenue, et on ajuste le pourcentage jusqu’à ce que les deux largeurs se rapprochent suffisamment pour que le remplacement final ne provoque plus de réajustement perceptible.

Intégration dans un thème hybride

Dans un thème dont la police personnalisée est déclarée via theme.json, la règle de repli ajustée reste à écrire dans une feuille de style classique du thème, chargée via wp_enqueue_style(), puisque theme.json ne propose pas encore de clé dédiée à size-adjust pour les polices de repli. La police déclarée dans theme.json reste la police principale ; la règle de repli intervient en complément, dans la chaîne de polices de secours.

{
  "settings": {
    "typography": {
      "fontFamilies": [
        {
          "fontFamily": "'Texte Variable', 'Repli Ajuste', sans-serif",
          "slug": "texte-principal",
          "name": "Texte principal"
        }
      ]
    }
  }
}

Variantes utiles

  • tester plusieurs polices système de repli selon la plateforme du visiteur, puisque les métriques d’une police système varient d’un système d’exploitation à l’autre ;
  • combiner ce réglage avec un préchargement classique de la police finale, pour réduire la durée pendant laquelle la police de repli reste affichée ;
  • mesurer le score de CLS obtenu séparément pour les visiteurs mobiles et de bureau : les polices système par défaut diffèrent souvent entre les deux, avec des écarts de largeur qui ne sont pas symétriques.

Une limite à connaître

L’ajustement par size-adjust reste une approximation : il rapproche les largeurs moyennes, mais ne garantit pas un alignement caractère par caractère, en particulier sur des textes très courts comme des titres, où un seul mot peut suffire à révéler un léger écart résiduel malgré l’ajustement.

Nous considérons un ajustement de repli comme suffisant dès que le score de CLS mesuré sur les pages types du site repasse sous le seuil recommandé, sans chercher une correspondance parfaite qui demanderait un temps disproportionné par rapport au gain réel perçu par les visiteurs.

Ce qu’on retient de ce réglage

Sur le projet où nous avons appliqué cette méthode, le score de CLS mesuré est passé de 0,18 à 0,02 après ajustement de la police de repli, sans aucune modification de la police finale elle-même. C’est un exemple assez net de réglage à faible effort et fort impact, souvent négligé au profit d’optimisations plus visibles mais moins déterminantes sur cette métrique précise.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Partager :

À propos de l'auteur

WordPress Développement

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi