Format de police web ouverte (.woff)

Recommandation Standard

Web 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 :

Sélectionnez ou déposez des fichiers ici

Privé - les fichiers ne quittent jamais votre appareil

ou coller Ctrl+V
Garantie de confidentialité sans transmission réseau : 0 octet envoyé vers des serveurs externes. Tout le traitement a eu lieu localement dans le bac à sable de votre navigateur.

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 46

REPRÉSENTATION ASCII : wOFF

Normalisation : Recommandation du W3C (2012)

Spécifications techniques

Architecture de conteneurEn-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
CompressionCompression Deflate (zlib) appliquée à chaque table de police individuelle
Ordre des octetsOrdre des octets gros-boutiste (standard SFNT)
Espaces colorimétriquesHérité des tables de polices sous-jacentes
Canaux et structureContours de glyphes TrueType ('glyf') ou PostScript ('CFF '), métriques et fonctionnalités typographiques
Dimensions maximalesJusqu'à 65 535 glyphes par fichier de police
TransparenceHérité du format de police sous-jacent
Prise en charge du traitement en continuLa décompression table par table permet le chargement de polices en flux continu

Matrice de comparaison technique : WOFF face aux concurrents

Attribut techniqueWOFF (Actuel)WOFF2TTFOTF
Codec de compressionDeflate (zlib) par tableBrotli avec prétraitement de tablesSFNT non compresséSFNT non compressé
Signature magiquewOFF (0x77 0x4F 0x46 0x46)wOF2 (0x77 0x4F 0x46 0x32)0x00 0x01 0x00 0x00OTTO (0x4F 0x54 0x54 0x4F)
Taille de fichier relative~40 % plus léger que le TTF~60 % plus léger que le TTFStandard de référence (100 %)Standard de référence (100 %)
Environnement cibleNavigateurs web anciens (IE9+, Safari 5+)La prise en charge varie selon le navigateur.Systèmes d'exploitation de bureauPublication 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

2018Remplacé par WOFF2 en tant que standard de police web privilégié en raison de sa compression Brotli supérieure.
2012Le W3C publie officiellement WOFF 1.0 comme recommandation formelle pour un standard Web.
2009Henrik Rydgård, Tal Leming et Jonathan Kew spécifient WOFF pour résoudre les problèmes de licence des polices web.

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.