Principe du sous-ensemble de polices PDF : pourquoi une réduction de 90 %

Conclusion d'abord : le sous-ensemble de polices PDF peut réduire le volume de 90 %. La cause fondamentale est que les polices chinoises pèsent facilement 15–20 Mo, alors que le document n'utilise qu'un millier ou deux de caractères. Le principe du sous-ensemble est une opération en trois étapes — analyser l'ensemble des caractères réellement utilisés dans le document, reconstruire la table de mappage CMap, réorganiser les index de glyphes en abandonnant les glyphes inutilisés. Le fichier complet de Source Han Serif fait 18 Mo ; après sous-ensemble, seulement 0,4 Mo, soit une réduction de 97,7 %. Ci-dessous, nous commençons par la structure des fichiers de polices, détaillons le principe technique du sous-ensemble, et présentons les données de test comparatives pour trois polices.

Si vous n'êtes pas encore familier avec les méthodes globales de compression PDF, nous vous recommandons de lire d'abordPrincipes et méthodes de compression PDF détaillés

I. Structure des fichiers de polices : pourquoi les polices chinoises intégrées sont-elles si volumineuses

Pour comprendre pourquoi le sous-ensemble est efficace, il faut d'abord savoir ce que contient un fichier de police. Les fichiers TrueType (.ttf) et OpenType (.otf) sont composés de plusieurs tables de données, chacune responsable d'une fonction différente. Lors de l'intégration dans un PDF, ces tables sont entièrement empaquetées dans le fichier, quel que soit le nombre de caractères utilisés dans le document.

Table de donnéesFonctionProportion typiqueLe sous-ensemble peut-il élaguer
cmapMappage encodage de caractères vers index de glyphes1%–3%Reconstruction requise
glyfDonnées de contour de glyphes TrueType70%–85%Élagage important possible
CFFContour de glyphes OpenType CFF (PostScript)60%–80%Élagage important possible
locaIndex de position des données de glyphes1%–2%Reconstruction requise
hmtxMétriques horizontales (largeur de caractère/avance)2%–5%Reconstruction requise
nameMétadonnées : nom de police, droits d'auteur, etc.0.5%–1%Conserver
postMappage des noms PostScript1%–3%Élagage partiel

Comme le montre le tableau, les données de contour de glyphes (table glyf ou CFF) représentent 60 %–85 % du volume du fichier de police. Une police chinoise contient 20 000 à 70 000 glyphes, chaque caractère chinois ayant en moyenne 300–600 octets de données de contour vectoriel, soit un total de 10–20 Mo. Or, un document PDF de 50 pages n'utilise généralement que 800–2000 caractères différents, ce qui signifie que plus de 95 % des données de glyphes sont gaspillées — c'est précisément l'espace de compression du sous-ensemble.

II. Principe du sous-ensemble : élagage des glyphes inutilisés en trois étapes

L'idée fondamentale du sous-ensemble de polices est de ne conserver que les glyphes effectivement utilisés dans le document et d'abandonner les autres. Le processus comporte trois étapes clés, chacune impliquant une manipulation précise de la structure des tables de polices.

ÉtapeOpérationPrincipeTables de données traitées
1. Analyse des caractères utilisésParcourir les flux de contenu de toutes les pages PDF, extraire les encodages de caractères affichésCollecter les points de code Unicode en analysant les opérateurs de texte (Tj/TJ)Aucune (génère un ensemble de caractères)
2. Reconstruction de la table CMapReconstruire le mappage encodage vers index de glyphes selon les caractères utilisésConserver uniquement les entrées de mappage des caractères utilisés, supprimer les autrescmap
3. Remappage des index de glyphesRéorganiser consécutivement les glyphes utilisés, mettre à jour tous les index de référenceLes index originaux peuvent être non contigus, après réorganisation les index 0 à N sont continusglyf/CFF, loca, hmtx

1. Analyse des caractères utilisés

La première étape consiste à analyser le document PDF pour identifier tous les caractères réellement affichés. Dans un PDF, le texte est écrit dans le flux de contenu via des opérateurs de texte (Tj pour afficher une chaîne, TJ pour afficher un tableau), chaque caractère correspondant à un encodage. L'outil de sous-ensemble parcourt les flux de contenu de toutes les pages, extrait ces encodages, les convertit en points de code Unicode via la table CMap actuelle de la police, et obtient finalement un « ensemble de caractères utilisés ».

L'analyse doit également traiter les cas particuliers : CMap ToUnicode (mappage inverse), encodage multi-octets (courant pour les polices CJK), préfixe de sous-ensemble des polices intégrées (format six caractères + signe). Un PDF chinois de 50 pages révèle généralement 800–2000 caractères Unicode différents ; en ajoutant la ponctuation et les chiffres, environ 1000–2500 glyphes doivent être conservés.

2. Reconstruction de la table CMap

La table CMap est le « répertoire » de la police, enregistrant l'index de glyphe (glyph ID) correspondant à chaque encodage de caractère. La table CMap d'une police chinoise originale contient 20 000 à 70 000 mappages ; après sous-ensemble, seules les entrées correspondant aux caractères utilisés sont conservées. La reconstruction doit également traiter plusieurs formats de sous-tables d'encodage.

Format de sous-table CMapPlage d'encodageUsageTraitement de sous-ensemble
Format 00–255ASCII/Latin un octetÉlaguer les entrées inutilisées
Format 4Plan multilingue de base (BMP)Caractères courants CJKReconstruire la table de sections
Format 12Unicode completCouvre tous les caractèresÉlaguer les sections inutilisées

3. Remappage des index de glyphes

C'est l'étape la plus critique et la plus complexe. Dans la police originale, les index de glyphes (GID) sont disposés consécutivement de 0 à N, mais les glyphes à conserver peuvent être dispersés. Le remappage consiste à réorganiser les glyphes conservés dans un nouvel ordre continu : le GID 0 original (.notdef) reste inchangé, le GID 1523 original peut devenir le nouveau GID 1, le GID 8944 devient le nouveau GID 2, et ainsi de suite.

Après le remappage, il faut mettre à jour synchroniquement toutes les tables référençant les GID : la table glyf (ou CFF) ne conserve que les données de glyphes correspondantes et les réorganise selon les nouveaux index, la table loca reconstruit l'index de position, la table hmtx reconstruit les données de métriques horizontales, et la table post met à jour le mappage des noms PostScript. Une mauvaise manipulation à cette étape peut endommager la police, d'où la nécessité de suivre strictement la spécification OpenType.

III. Données de test : comparaison avant/après sous-ensemble pour trois polices

Nous avons sélectionné trois polices courantes pour des tests de sous-ensemble, représentant les polices chinoises (Source Han Serif, Microsoft YaHei) et la police anglaise (Arial). Le document de test est un dossier d'appel d'offres chinois de 50 pages, utilisant 1342 caractères.

PoliceFichier originalNombre de glyphes (original)Nombre de glyphes (sous-ensemble)Après sous-ensembleRéduction
Source Han Serif Regular18.2MB6553513420.42MB97.7%
Microsoft YaHei Regular15.6MB2862213420.35MB97.8%
Arial Regular0.82MB3257960.06MB92.7%

Les données de test montrent que l'effet du sous-ensemble est le plus significatif pour les polices chinoises — Source Han Serif passe de 18,2 Mo à 0,42 Mo, soit une réduction de 97,7 %. Cela s'explique par le grand nombre de glyphes dans les polices chinoises (60 000+) mais le faible nombre utilisé dans le document (1000+), offrant un espace d'élagage considérable. La police anglaise Arial, qui ne fait que 0,82 Mo à l'origine, descend à 0,06 Mo après sous-ensemble, soit une réduction de 92,7 % ; le volume absolu est faible mais la proportion est tout aussi remarquable.

Examinons ensuite l'effet du sous-ensemble selon différents volumes de caractères utilisés, avec Source Han Serif :

Type de documentNombre de caractères utilisésVolume après sous-ensembleRéductionDescription
Notification courte (1 page)env. 2000.08MB99.6%Très peu de caractères, sous-ensemble très petit
Compte rendu de réunion (10 pages)env. 6000.19MB99.0%Documents de bureau courants
Dossier d'appel d'offres (50 pages)env. 13420.42MB97.7%Couverture étendue de caractères pour documents professionnels
Manuel technique (200 pages)env. 28000.85MB95.3%Volume de caractères utilisés élevé
Encyclopédie (1000 pages)env. 65001.92MB89.5%Couverture proche de la limite

IV. Comparaison des outils de sous-ensemble et recommandations par scénario

Plusieurs outils de sous-ensemble de polices sont disponibles, des outils en ligne de commande open source aux moteurs de compression commerciaux, chacun avec ses avantages. Le tableau ci-dessous compare les solutions principales.

OutilCapacité de sous-ensemblePrise en charge CFFTraitement par lotsDifficulté d'intégration
SmartSlim★★★★★OuiPris en chargeSDK/API/Desktop
fonttools (Python)★★★★☆OuiScript requisMoyen
Adobe Acrobat★★★★☆OuiLimitéOpération GUI
Ghostscript★★★☆☆PartielPris en chargeLigne de commande
Outil en ligne★★☆☆☆PartielNon pris en chargeFaible (risque de confidentialité)

SmartSlim, basé sur son moteur de compression Rust propriétaire, traite automatiquement les deux formats de glyphes TrueType et OpenType CFF lors du sous-ensemble, et prend en charge le traitement par lots par glisser-déposer de centaines de PDF. Plus important encore, tout le processus de sous-ensemble s'effectue localement : les données de polices et le contenu des documents ne transitent par aucun serveur externe, ce qui est crucial pour les documents sensibles et les fichiers d'entreprise confidentiels.

Recommandations de stratégie de sous-ensemble par scénario :

ScénarioSous-ensemble recommandéPoints d'attentionOutil recommandé
Archivage et distribution de la version finaleFortement recommandéAprès sous-ensemble, impossible d'éditer de nouveaux caractèresSmartSlim
Archivage par lots en entrepriseFortement recommandéTraitement par lots automatisé via APISmartSlim Server
Publication en ligne/aperçuRecommandéRéduire le volume de téléchargement pour accélérer le chargementScript fonttools
Brouillons encore en cours d'éditionNon recommandéConserver la police complète pour l'éditionPas de sous-ensemble pour l'instant
Documents sensibles/confidentielsRecommandéTraitement local obligatoire, outils en ligne interditsSmartSlim

Pour plus de techniques d'optimisation PDF, voirGuide d'optimisation de la linéarisation PDFetMéthodes de compression de documents Word

V. FAQ

Q1 : Le sous-ensemble de polices PDF affecte-t-il l'affichage ?

Non. Le sous-ensemble de polices ne supprime que les caractères et les données de glyphes inutilisés dans le document ; les caractères conservés sont identiques à la police originale, sans aucun impact sur l'affichage. Après sous-ensemble, la police reste vectorielle, sans distorsion lors du zoom, et les attributs tels que couleur et épaisseur sont préservés. La seule limite est que la police sous-ensemble ne peut être utilisée que dans ce document, pas réutilisée dans d'autres.

Q2 : De combien le sous-ensemble de polices réduit-il le volume ?

Cela dépend du rapport entre le nombre de caractères utilisés et la taille de la police originale. Les polices chinoises (par exemple Source Han Serif 18 Mo) n'utilisent généralement que 1000–2000 caractères ; après sous-ensemble, le volume descend à 0,3–0,8 Mo, soit une réduction de plus de 95 %. Les polices anglaises (par exemple Arial 0,8 Mo) utilisent encore moins de caractères ; après sous-ensemble, 0,05–0,1 Mo, soit une réduction d'environ 90 %. Plus la police est grande et moins les caractères utilisés sont nombreux, plus l'effet du sous-ensemble est significatif.

Q3 : Peut-on encore éditer le texte d'un PDF après sous-ensemble de polices ?

Avec limitation. Le sous-ensemble ne conserve que les caractères déjà utilisés dans le document ; si vous saisissez un nouveau caractère (non présent dans le document original) lors de l'édition, il ne pourra pas s'afficher et apparaîtra comme un carré ou un blanc. Le sous-ensemble convient donc à l'archivage et à la distribution de versions finales, pas aux documents encore en cours d'édition. Si vous devez éditer, conservez la police complète ou réintégrez un nouveau sous-ensemble.

Q4 : Comment vérifier si un PDF a déjà un sous-ensemble de polices ?

Ouvrez le PDF avec Adobe Acrobat, cliquez sur Fichier > Propriétés > Polices pour consulter la liste des polices intégrées. Si le nom de la police comporte un préfixe de six caractères (par exemple ABCDEO+Source Han Serif), c'est qu'elle a été sous-ensemble. Vous pouvez aussi ouvrir le PDF avec SmartSlim : le moteur analyse automatiquement l'état d'intégration des polices, signale si un sous-ensemble est nécessaire et indique le volume de compression estimé.

Résumé

Le sous-ensemble de polices PDF est l'un des moyens les plus efficaces pour réduire le volume d'un PDF, en particulier pour les documents intégrant des polices chinoises. Le principe fondamental est une opération en trois étapes : analyser les caractères utilisés, reconstruire la table de mappage CMap, et réorganiser les index de glyphes en abandonnant les glyphes inutilisés. Les données de test montrent que Source Han Serif, qui fait 18 Mo, ne pèse plus que 0,4 Mo après sous-ensemble, soit une réduction de 97,7 %, sans aucun impact sur l'affichage.

Recommandation pratique : effectuez systématiquement un sous-ensemble de polices avant la distribution de la version finale ; pour les documents sensibles, utilisez un outil local. Si vous devez traiter des fichiers PDF par lots, SmartSlim prend en charge 10 catégories et plus de 40 formats (PDF/images/vidéos/Office/OFD), et effectue automatiquement le sous-ensemble de polices grâce à son moteur de compression Rust propriétaire, sans que les données ne quittent le domaine.

Besoin de compresser des fichiers ? Essayez SmartSlim

Construit sur un moteur de compression Rust auto-développé, prenant en charge 10 catégories et plus de 40 formats, dont PDF, images, vidéo, Office et OFD, avec une compression locale qui garde vos données sur place.