Optimiser les polices web : WOFF2, sous-ensembles, hébergement
WOFF2, sous-ensembles, auto-hébergement et @font-face intégré : réduisez le poids de vos polices web pour des pages plus rapides.
Les polices web font partie intégrante du design d’un site, mais elles ont toujours un coût en performance. Des fichiers volumineux mettent du temps à se télécharger et retardent l’affichage du texte. La bonne nouvelle : plusieurs techniques permettent de réduire fortement ce coût, en ne servant que les caractères réellement utiles et dans le format le plus léger.
Pour le SEO, l’enjeu est clair. Des polices plus légères se téléchargent plus vite, améliorent le First Contentful Paint et limitent la contention de bande passante au démarrage de la page, au moment précis où l’utilisateur attend de voir et d’interagir avec le contenu. Optimiser les polices, en complément de l’optimisation du chargement des polices, c’est offrir une expérience plus rapide, et donc renforcer les signaux de performance pris en compte par Google.
Ma priorité sur ce sujet, c’est de ne servir que les caractères réellement utilisés en WOFF2 : un sous-ensemble bien construit allège un fichier de manière spectaculaire sans rien sacrifier au design. J’observe encore beaucoup de sites qui chargent l’intégralité des glyphes d’une famille pour afficher trois mots. Réduire ce poids au démarrage, c’est libérer de la bande passante au moment précis où l’utilisateur attend votre contenu.
Comment le navigateur détecte les polices
Une police web se déclare dans une feuille de style avec une règle @font-face qui associe un nom de famille à une ressource. Pour économiser la bande passante, le navigateur ne télécharge la police que lorsqu’il constate qu’un élément de la page l’utilise réellement, par exemple un titre h1.
Ce mécanisme évite de récupérer des polices inutiles, mais il a un revers : si vos déclarations @font-face se trouvent dans une feuille de style externe, le navigateur ne peut les découvrir qu’après l’avoir téléchargée. Les polices deviennent alors des ressources découvertes tardivement, ce que les techniques ci-dessous viennent corriger.
Alléger : WOFF2 et sous-ensembles
Le premier levier est le format. WOFF2 est largement compatible avec les navigateurs et offre la meilleure compression, jusqu’à 30 % de mieux que WOFF. Pour les navigateurs modernes, c’est souvent le seul format nécessaire : n’ajoutez WOFF, EOT ou TTF que si vous devez prendre en charge des navigateurs anciens.
Le second levier est le sous-ensemble. Une police contient généralement un large éventail de glyphes couvrant de nombreuses langues. Si votre page n’utilise qu’un seul alphabet, vous pouvez retirer les glyphes inutiles et réduire fortement la taille du fichier. Certains fournisseurs proposent des sous-ensembles via un paramètre d’URL ; en auto-hébergement, des outils comme glyphhanger ou subfont génèrent ces sous-ensembles.
| Technique | Effet | Point d'attention |
|---|---|---|
Format WOFF2 |
Jusqu’à 30 % plus léger que WOFF |
Inutile d’ajouter d’autres formats sauf navigateurs anciens |
Sous-ensemble |
Retire les glyphes inutiles, fichier nettement plus petit |
Vérifiez que tous les caractères affichés sont couverts |
Auto-hébergement |
Supprime la connexion à un domaine tiers |
Exige un CDN, HTTP/2 ou 3 et des en-têtes de cache |
@font-face intégré |
Détection plus précoce des polices |
Le reste du CSS ne doit pas rester bloquant ailleurs |
Auto-héberger ou passer par un tiers
Une police peut être servie par un service tiers ou auto-hébergée sur votre propre origine. Avec un service tiers, le navigateur doit d’abord ouvrir une connexion au domaine du fournisseur avant de télécharger la police, ce qui retarde sa récupération. L’indice de ressource preconnect réduit cette surcharge en ouvrant la connexion plus tôt, l’un des gestes pour anticiper les connexions réseau.
Dans la plupart des cas, l’auto-hébergement est plus rapide car il supprime cette connexion à une origine externe. Si vous choisissez cette voie, assurez-vous que votre site utilise un CDN, le protocole HTTP/2 ou HTTP/3, et qu’il définit des en-têtes de cache adaptés pour vos polices.
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
Faire détecter les polices plus tôt
Pour que le navigateur découvre les polices au plus vite, vous pouvez intégrer le CSS critique, y compris les déclarations @font-face, directement dans la balise head via un élément style. Le navigateur n’a alors plus besoin d’attendre une feuille de style externe. Avantage par rapport au fait de précharger les ressources critiques : il ne télécharge que les polices réellement nécessaires au rendu de la page courante, sans risque de charger des polices inutilisées. Attention toutefois, le téléchargement ne démarre qu’une fois toutes les ressources bloquant le rendu chargées.
Intégrer les déclarations @font-face dans le head est utile, mais intégrer les fichiers de police eux-mêmes en base64 dans votre CSS est déconseillé. L’encodage base64 alourdit la charge utile et son intégration peut retarder la détection d’autres ressources critiques en ralentissant l’analyseur de préchargement. Gardez les fichiers de police séparés.
À faire
- servir vos polices en WOFF2
- créer des sous-ensembles adaptés à votre langue
- privilégier l’auto-hébergement avec un bon cache
- utiliser preconnect pour un fournisseur tiers
À éviter
- multiplier les formats inutiles
- servir tous les glyphes sans sous-ensemble
- intégrer les fichiers de police en base64
- négliger les en-têtes de cache
Points clés à retenir
- Servez vos polices au format WOFF2, le plus léger
- Créez des sous-ensembles pour ne charger que les glyphes utiles
- Préférez l'auto-hébergement, avec CDN et cache adaptés
- Utilisez preconnect si vous passez par un service tiers
- Intégrez les déclarations @font-face, mais jamais les fichiers eux-mêmes
Les gestes qui allègent durablement vos polices web.
Quiz : testez vos connaissances
Quiz : testez vos connaissances
-
Quel format de police privilégier pour les navigateurs modernes ?
- WOFF2, largement compatible et offrant la meilleure compression
- TTF, le seul format reconnu par tous les navigateurs
- EOT, le format le plus léger sur le marché
WOFF2 est largement compatible et offre la meilleure compression, jusqu’à 30 % de mieux que WOFF. Pour les navigateurs modernes, c’est souvent le seul format nécessaire.
-
Que faire pour réduire le poids d'une police au strict nécessaire ?
- Créer un sous-ensemble adapté à la langue, en retirant les glyphes inutiles
- Multiplier les formats pour laisser le navigateur choisir
- Servir tous les glyphes disponibles pour parer à toute éventualité
Créer un sous-ensemble adapté à votre langue retire les glyphes inutiles et fait souvent gagner beaucoup de poids.
-
Intégrer les fichiers de police en base64 dans le CSS est-il une bonne idée ?
- Oui, cela charge toujours les polices plus vite
- Oui, c'est la méthode recommandée pour les polices critiques
- Non, c'est déconseillé, contrairement à l'intégration des seules déclarations @font-face
Intégrer les déclarations
@font-facedans le head est utile, mais intégrer les fichiers de police eux-mêmes en base64 dans le CSS est déconseillé.
Besoin d'un accompagnement SEO ?
Vos polices web pèsent lourd dans le chargement de vos pages ? Voyons ensemble comment les alléger.