Format de police web ouverte (.woff)
Recommandation StandardWeb Open Font Format (WOFF) est le premier format de police web ouvert normalisé, approuvé par le W3C. Il encapsule des polices TrueType ou OpenType avec une compression zlib et des métadonnées de licence XML.
Inspection et métadonnées
Les systèmes d'exploitation et les analyseurs de fichiers identifient les fichiers WOFF en inspectant leur séquence initiale d'octets binaires :
Signature d'en-tête au niveau des octets (octets magiques)
Les systèmes d'exploitation et les analyseurs de fichiers identifient les fichiers WOFF en inspectant leur séquence initiale d'octets binaires :
SIGNATURE HEXADÉCIMALE (DÉCALAGE 0) :
77 4F 46 46REPRÉSENTATION ASCII : wOFF
Normalisation : Recommandation du W3C (2012)
Spécifications techniques
| Architecture de conteneur | En-tête WOFF de 44 octets suivi d'un répertoire de tables, de données de tables compressées avec zlib, de métadonnées étendues optionnelles et de données privées |
| Compression | Compression Deflate (zlib) appliquée à chaque table de police individuelle |
| Ordre des octets | Ordre des octets gros-boutiste (standard SFNT) |
| Espaces colorimétriques | Hérité des tables de polices sous-jacentes |
| Canaux et structure | Contours de glyphes TrueType ('glyf') ou PostScript ('CFF '), métriques et fonctionnalités typographiques |
| Dimensions maximales | Jusqu'à 65 535 glyphes par fichier de police |
| Transparence | Hérité du format de police sous-jacent |
| Prise en charge du traitement en continu | La décompression table par table permet le chargement de polices en flux continu |
Matrice de comparaison technique : WOFF face aux concurrents
| Attribut technique | WOFF (Actuel) | WOFF2 | TTF | OTF |
|---|---|---|---|---|
| Codec de compression | Deflate (zlib) par table | Brotli avec prétraitement de tables | SFNT non compressé | SFNT non compressé |
| Signature magique | wOFF (0x77 0x4F 0x46 0x46) | wOF2 (0x77 0x4F 0x46 0x32) | 0x00 0x01 0x00 0x00 | OTTO (0x4F 0x54 0x54 0x4F) |
| Taille de fichier relative | ~40 % plus léger que le TTF | ~60 % plus léger que le TTF | Standard de référence (100 %) | Standard de référence (100 %) |
| Environnement cible | Navigateurs web anciens (IE9+, Safari 5+) | La prise en charge varie selon le navigateur. | Systèmes d'exploitation de bureau | Publication assistée par ordinateur et impression |
Modes de corruption courants et guide de restauration hexadécimale
Avertissement dans la console du navigateur : 'Failed to decode downloaded font: OTS parsing error'.
Cause initiale: Inadéquation de la longueur de table non compressée déclarée ou flux zlib endommagé.
Récupération: Recompressez les tables de la police ou convertissez-la en WOFF2 avec Font Converter de File2File.app.
Analyse de sécurité et vecteurs d'attaque de l'analyseur
Les navigateurs Web utilisent OpenType Sanitizer (OTS) pour analyser les fichiers WOFF téléchargés depuis des domaines non fiables et bloquer les charges utiles malveillantes.
Vecteurs d’attaque connus
- Lecture au-delà des limites du tampon pendant la décompression zlib de blocs de tables de police corrompus.
- Des champs de longueur de table incohérents peuvent provoquer des débordements de tampon sur le tas dans les moteurs de rendu des polices.
- Déni de service par épuisement de la mémoire lors de l'expansion des tables de polices.
Bonnes pratiques de défense: Nettoyez toujours les fichiers WOFF téléchargés avec OpenType Sanitizer (OTS) avant de les transmettre aux moteurs de polices du système d’exploitation.
Origines historiques et jalons
Principaux avantages
- Peut réduire la taille des fichiers de polices Web par rapport aux fichiers TTF ou OTF bruts ; le gain dépend de la police et de l’encodeur.
- Rétrocompatibilité universelle sur tous les navigateurs web de bureau et mobiles sortis depuis 2011.
- Comprend un bloc de métadonnées XML facultatif concernant les licences des polices, les crédits des auteurs et les droits d'auteur de la fonderie.
Limites techniques
- WOFF2 a remplacé WOFF dans de nombreux flux Web. Il utilise la compression Brotli et des transformations des tables de police ; le gain de taille varie.
- Ne peut pas être installé directement sur les systèmes d'exploitation de bureau (Windows/Mac) sans conversion préalable en TTF/OTF.
- L'ancien algorithme de compression zlib est moins efficace que les codeurs d'entropie modernes.
Faits intéressants
- La signature binaire de WOFF 1.0 est « wOFF » (0x77 0x4F 0x46 0x46), tandis que celle de WOFF 2.0 est « wOF2 ».
- Les fonderies typographiques ont accepté d'autoriser leurs polices sur le web seulement après la création de WOFF, car son conteneur spécialisé distinguait les polices web des polices de bureau piratables.
- WOFF a été initialement implémenté dans Firefox 3.6 en 2010 avant de devenir une recommandation officielle du W3C.
Foire aux questions techniques
Quelle est la différence entre WOFF et WOFF2 ?
WOFF utilise la compression zlib, tandis que WOFF2 utilise le nouvel algorithme Brotli de Google et des transformations de tables, ce qui donne des fichiers environ 30 % plus petits que WOFF.
Comment puis-je convertir une police WOFF en TTF ou OTF pour une utilisation sur bureau ?
Vous pouvez convertir des fichiers WOFF en polices de bureau installables TTF ou OTF en quelques secondes à l'aide de File2File.app directement dans votre navigateur web.
Ai-je encore besoin de WOFF 1.0 sur les sites web modernes ?
Non. Tous les navigateurs modernes prennent en charge WOFF2 de manière native. WOFF 1.0 n'est nécessaire que si vous devez prendre en charge des navigateurs obsolètes comme Internet Explorer.