Développeur

Alléger une police (subsetting) : TTF, OTF, WOFF

Inspectez une police, gardez les caractères utiles, exportez TTF et WOFF.

  • Instantané
  • Gratuit
  • Privé (traité localement)
  • Sans inscription

Déposez une police ici (TTF, OTF, WOFF, TTC) ou choisissez un fichier

Police de démonstration générée dans votre navigateur : chargez votre propre fichier pour l’alléger.

Inspecteur de police

Autorisations d’intégration (OS/2 fsType)

    Axes de variation (fvar)

    Couverture Unicode

    Par bloc Unicode
    BlocPlageCaractères

    Langues probablement couvertes

      Fonctionnalités OpenType (GSUB et GPOS)

        Tables et poids

        TableTaillePart

        Grille des glyphes

        Cliquez un caractère pour l’ajouter au texte à conserver.

        Alléger : choisir les caractères à conserver

        Jeux prédéfinis

        Mode de sortie

        La table DSIG (signature numérique) est toujours retirée : elle serait invalidée par toute modification.

          Votre police ne quitte jamais votre appareil : lecture, analyse, sous-ensemble et compression WOFF sont faits par votre navigateur, rien n’est envoyé (important pour les polices sous licence). Limites : contours CFF/OTF non découpés, WOFF2 non lu (Brotli), substitutions contextuelles gardées de façon conservatrice, séquences de variation (cmap format 14) abandonnées, fichiers au-delà de 200 Mo refusés.

          Alléger une police web par subsetting, sans rien envoyer

          Une police complète embarque des milliers de glyphes dont une page n’utilise qu’une fraction : alléger une police (le subsetting) consiste à ne garder que les caractères nécessaires, puis à compresser le résultat en WOFF. Les outils sérieux sont en ligne de commande (pyftsubset de fontTools, glyphhanger) ou exigent d’envoyer le fichier sur un serveur, ce qui pose problème avec une police sous licence.

          Cet outil fait tout dans votre navigateur : il lit les formats TTF, OTF, WOFF 1.0 et TTC, affiche un inspecteur complet (noms, licence, autorisations fsType, axes variables, couverture Unicode par bloc, langues couvertes, fonctionnalités OpenType, poids de chaque table), puis produit un sous-ensemble TrueType avec fermeture des composants et des ligatures, écrit le TTF et le WOFF, vérifie que la police produite se charge et génère l’extrait CSS @font-face avec unicode-range.

          1. Choisir une police

            Déposez un fichier TTF, OTF, WOFF ou TTC, ou cliquez sur « Choisir une police ». Pour une collection TTC, sélectionnez la police à extraire. Un WOFF2 (signature wOF2) est détecté et refusé avec une explication.

          2. Lire l’inspecteur

            Vérifiez la famille, la version, la licence (name ID 13) et les autorisations d’intégration fsType, les axes fvar, la couverture Unicode par bloc, les langues probablement couvertes et les fonctionnalités GSUB/GPOS. La grille des glyphes et le champ de recherche répondent à « cette police a-t-elle le ẞ ou le € ? ».

          3. Choisir les caractères à conserver

            Collez votre texte dans « Texte à conserver », cochez des jeux prédéfinis (Latin de base, Latin-1, Grec, Cyrillique…) ou saisissez des plages Unicode. Le compteur indique les caractères présents, les absents et le nombre de glyphes conservés après fermeture.

          4. Régler le mode

            « Conserver les fonctionnalités OpenType » garde crénage, ligatures et axes variables ; « Fichier le plus petit » renumérote les glyphes et supprime les tables de mise en forme. Décidez du retrait du hinting et de la table name minimale.

          5. Créer le sous-ensemble

            Cliquez sur « Créer le sous-ensemble » : l’outil affiche la taille avant et après, le détail par table, l’auto-contrôle de rendu, les boutons « Télécharger .ttf » et « Télécharger .woff » et l’extrait CSS à copier.

          Comment fonctionne le sous-ensemble

          L’outil lit le répertoire sfnt décrit par la spécification OpenType, puis la table cmap (formats 4 et 12 en priorité) pour relier vos caractères aux glyphes. Il calcule ensuite la fermeture : les composants des glyphes composites (un « é » qui réutilise « e » et l’accent), puis, si les fonctionnalités sont conservées, les substitutions GSUB de type 1 à 4 (formes simples, multiples, alternatives et ligatures comme fi, fl, ffi) itérées jusqu’à stabilité, les sous-lookups des substitutions contextuelles (types 5, 6 et 8, extensions de type 7 résolues) de façon conservatrice, les variantes de la table MATH et les couches de couleur de la table COLR.

          • Mode « conserver les fonctionnalités » : les identifiants de glyphes ne bougent pas ; les contours inutiles sont vidés (entrées loca de longueur nulle), la cmap est reconstruite, GSUB, GPOS, GDEF, kern et fvar restent intacts et donc valides, et gvar est seulement élagué des glyphes retirés.
          • Mode « fichier le plus petit » : les glyphes sont renumérotés de façon compacte, les composants sont remappés, hmtx, loca, glyf, cmap, maxp, hhea et post sont reconstruits, les tables de mise en forme et de variation sont supprimées.
          • Retrait du hinting : fpgm, prep, cvt, hdmx, VDMX et LTSH disparaissent, les instructions sont retirées des glyphes simples et composites, maxp et gasp sont ajustés comme le fait pyftsubset.
          • Écriture : répertoire trié, tables alignées sur 4 octets, sommes de contrôle et checkSumAdjustment de head recalculés, loca court ou long selon la taille, puis WOFF 1.0 avec zlib par table (une table reste brute quand la compression n’aide pas).
          • Auto-contrôle : la police produite est chargée par l’API FontFace et votre texte d’aperçu est rendu avec l’original et le sous-ensemble côte à côte, pixels comparés.

          Ce que pèse chaque table et ce que l’outil en fait

          TablesRôleTraitement
          glyf, locaContours TrueType et index des glyphes : la majeure partie du poidsContours inutiles vidés (mode conservation) ou retirés et renumérotés (mode minimal)
          cmapCorrespondance caractères Unicode → glyphesReconstruite : format 4 pour le BMP, format 12 ajouté pour les caractères hors BMP
          hmtx, hheaChasses et approches gauchesConservées telles quelles (gids stables) ou reconstruites avec numberOfHMetrics optimisé
          GSUB, GPOS, GDEF, kernLigatures, substitutions, crénage, positionnement des diacritiquesIntactes en mode conservation, supprimées en mode minimal (avertissement affiché)
          fpgm, prep, cvt, hdmx, VDMX, LTSHHinting TrueType et métriques d’appareilSupprimées avec « Retirer le hinting », instructions des glyphes retirées
          name, post, DSIGNoms et licence, noms de glyphes, signature numériquename complète ou minimale (IDs 0 à 6, 13, 14, 16, 17, plus les noms d’axes et d’instances d’une police variable), post en format 3, DSIG toujours retirée

          Comportement de l’outil pour les polices à contours TrueType (glyf). Les polices CFF/OTF sont inspectées, converties en WOFF et allégées de leurs tables, mais leurs contours ne sont pas découpés.

          Quand alléger une police

          • Site vitrine ou blog : ne livrer que le latin de base, le Latin-1 et la ponctuation typographique pour accélérer le premier affichage du texte.
          • Titre ou logo en police de titrage : garder uniquement les lettres du slogan, soit quelques kilo-octets au lieu de centaines.
          • Polices CJK (TrueType) : coller le texte réel de la page pour passer de plusieurs mégaoctets à quelques dizaines de kilo-octets (IPA Gothic : de 6,2 Mo à environ 55 Ko en WOFF pour un paragraphe de 154 caractères distincts, 22 Ko en mode « Fichier le plus petit ») ; les polices CJK en OTF/CFF ne sont pas découpées.
          • Audit avant achat ou intégration : vérifier la couverture des langues, les fonctionnalités OpenType (tnum, smcp, ss01…) et les autorisations fsType sans installer la police.
          • Conversion TTF vers WOFF : obtenir un WOFF 1.0 valide et l’extrait @font-face correspondant, sans envoyer un fichier sous licence sur un serveur.

          Problèmes fréquents et solutions

          • Des caractères s’affichent avec une autre police : ils ne sont pas dans le sous-ensemble ; le compteur et l’auto-contrôle signalent les absents, ajoutez-les au texte à conserver.
          • Les ligatures ou le crénage ont disparu : vous avez choisi « Fichier le plus petit » ; repassez en « Conserver les fonctionnalités OpenType ».
          • Le fichier WOFF n’est pas beaucoup plus petit que prévu : en mode conservation, hmtx et loca gardent leur taille d’origine ; le WOFF compresse très bien ces zones, et le mode minimal les réduit vraiment.
          • Police WOFF2 refusée : convertissez-la d’abord en TTF ou WOFF avec un autre outil (l’outil n’embarque pas de décodeur Brotli/WOFF2).
          • Police OTF non découpée : ses contours sont en CFF ; convertissez-la en TTF avant de l’alléger, ou contentez-vous de l’inspection et de la conversion WOFF.

          Confidentialité : la police est lue, analysée et réécrite par votre navigateur ; aucun fichier n’est envoyé ni conservé, ce qui compte pour une police sous licence. Limites : contours CFF/OTF non découpés, WOFF2 non lu ni écrit, substitutions contextuelles conservées de façon conservatrice (le sous-ensemble peut contenir quelques glyphes de plus que nécessaire), séquences de variation (cmap format 14) abandonnées, tables bitmap et couleur supprimées en mode minimal, fichiers au-delà de 200 Mo refusés. Vérifiez votre licence avant de publier une police allégée.

          Questions fréquentes

          Qu’est-ce que le subsetting d’une police et combien fait-on gagner ?

          Le subsetting consiste à ne garder dans le fichier que les glyphes dont vos pages ont besoin, par exemple le latin de base et les accents français au lieu des milliers de caractères d’une police complète. Le gain dépend surtout de ce que la police contient : sur une grande police multi-écritures, un sous-ensemble latin ne pèse souvent que 5 à 10 % de l’original, alors qu’une police déjà limitée au latin perd beaucoup moins. La compression WOFF retire ensuite encore d’un quart à la moitié. Exemple mesuré avec cet outil : DejaVu Sans (6 253 glyphes, 742 Ko) réduite au latin de base et au Latin-1 pèse environ 50 Ko en WOFF avec les fonctionnalités OpenType conservées, et 14 Ko en mode « Fichier le plus petit ». L’outil affiche la taille avant et après, table par table.

          Ai-je le droit d’alléger une police que j’ai achetée ?

          Cela dépend de la licence. Les licences libres comme l’OFL ou Apache autorisent la modification (l’OFL considère toutefois un sous-ensemble comme une version modifiée : si la police porte un Reserved Font Name, le fichier allégé doit être renommé) ; beaucoup de licences web commerciales permettent le subsetting pour l’intégration, d’autres l’interdisent explicitement. L’outil affiche le texte de licence stocké dans la police (name ID 13) et décode le champ fsType : s’il porte le bit « no subsetting » (0x0100), la licence demande de ne pas découper la police. Vérifiez toujours votre contrat avant de publier le fichier.

          Pourquoi le WOFF2 n’est-il pas pris en charge ?

          Le WOFF2 repose sur la compression Brotli et sur une transformation spécifique des tables glyf et loca, alors que les API Compression Streams des navigateurs n’offrent partout que gzip et deflate (le décodage Brotli natif manque encore à Chrome). Lire ou produire du WOFF2 exigerait d’embarquer une bibliothèque Brotli et ce décodeur, ce que cet outil 100 % local ne fait pas. Convertissez votre WOFF2 en TTF ou WOFF avec un autre outil, allégez-le ici, puis repassez en WOFF2 si vous le souhaitez : le WOFF2 pèse en général 15 à 30 % de moins qu’un WOFF 1.0 (gain médian d’environ 25 % sur les polices TrueType selon le rapport d’évaluation du W3C).

          Quelle différence entre « conserver les fonctionnalités OpenType » et « fichier le plus petit » ?

          Le premier mode garde les identifiants de glyphes et vide seulement les contours inutiles : les tables GSUB, GPOS, GDEF et kern restent valides, donc les ligatures, le crénage et les axes d’une police variable fonctionnent toujours. Le second mode renumérote les glyphes et supprime ces tables : le fichier est minimal, mais sans crénage ni ligatures, et une police variable devient son instance par défaut. Pour un site, le premier mode est presque toujours le bon choix.

          Retirer le hinting change-t-il le rendu ?

          Le hinting TrueType (tables fpgm, prep, cvt et instructions des glyphes) sert surtout au rendu ClearType de Windows aux petites tailles. macOS, iOS, Android et la plupart des navigateurs Linux l’ignorent. Le retirer réduit souvent le fichier de 20 à 50 % sur une police fortement hintée, au prix d’un rendu Windows légèrement différent pour les petits corps. L’option est activée par défaut ; décochez-la si votre public utilise surtout Windows à petite taille.

          Comment utiliser unicode-range dans le CSS généré ?

          Le descripteur unicode-range liste les caractères que le sous-ensemble contient, sous la forme la plus courte (plages fusionnées, jokers quand la plage est alignée). Le navigateur ne télécharge le fichier que si la page utilise au moins un de ces caractères, ce qui permet de découper une police en plusieurs fichiers (latin, cyrillique, grec) chargés à la demande. Collez l’extrait @font-face dans votre feuille de style et placez les fichiers au chemin indiqué dans src.