THotPDF.SubsetLoadedFonts Method
Réécrit les programmes TrueType, OpenType CFF, CFF bruts et Type 1 embarqués pris en charge afin qu’ils ne conservent que les glyphes atteignables depuis le contenu du document chargé
Déclaration
function SubsetLoadedFonts(
const Options: THPDFLoadedFontSubsetOptions;
out AInfo: THPDFLoadedFontSubsetInfo): Integer; overload;
function SubsetLoadedFonts(
out AInfo: THPDFLoadedFontSubsetInfo): Integer; overload;
Atteignabilité
Le contenu des pages est toujours scanné, y compris les opérateurs d’affichage de texte et les sélections de polices locales aux ressources
IncludeFormXObjects inclut récursivement les Form XObjects invoqués avec leurs ressources héritées, une détection de cycles et une profondeur d’imbrication bornée
IncludeAnnotationAppearances inclut les apparences normales, rollover et down ainsi que les dictionnaires d’états, et suit aussi les Form XObjects utilisés par ces apparences lorsque l’option est activée
Chaque code de caractère suit son encodage déclaré, puis tout CMap Type0 et CIDToGIDMap, avant d’atteindre l’ID de glyphe embarqué stable ; les CID maps et données ToUnicode existants ne sont pas renumérotés
Les glyphes composites TrueType conservent leur fermeture récursive de composantes, tandis que les couches COLR v0 et les dépendances de peinture de glyphes COLR v1 conservent chaque contour référencé
Les polices simples Type 1 suivent les encodages Standard, WinAnsi, MacRoman ou MacExpert plus Differences, puis réécrivent les CharStrings inutilisés en données PFB, binaires PDF divisées ou PFA hexadécimal sans changer la disposition du stream embarqué
Options
| Champ | Défaut | Signification |
|---|---|---|
MinimumSavingsBytes | 1 | Réduction minimale du stream encodé exigée avant l’adoption d’un candidat |
EnforceSignaturePermissions | True | Refuse toute réécriture lorsque le document contient un champ de signature |
IncludeFormXObjects | True | Trace les Form XObjects imbriqués invoqués |
IncludeAnnotationAppearances | True | Trace les streams et états d’apparence d’annotations |
Résultat et sécurité
La valeur de retour est le nombre de programmes de polices embarqués réécrits, tandis que AInfo rapporte la couverture du scan, les échecs de mapping ou de décodage, les glyphes utilisés, les économies d’octets et les conséquences sur les signatures
Un programme de police reste identique octet par octet lorsqu’un code atteignable ne peut pas être mappé, son format n’est pas pris en charge, le sous-ensemble échoue, ou le candidat encodé rate le seuil d’économies
La réécriture Type 1 échoue fermement pour plusieurs segments binaires PFB, un encodage de police simple explicite non analysable, un nom de glyphe demandé manquant ou une disposition de CharStrings non prise en charge ; les versions COLR inconnues et les programmes sfnt sans tables de contours éparses restent aussi inchangés
Tous les candidats sont analysés avant mutation, et la politique de signature par défaut renvoie zéro avec RefusedBySignaturePolicy positionné ; désactiver la politique permet la réécriture et positionne SignaturesInvalidated dès qu’un document signé change
Exemple
var
Info: THPDFLoadedFontSubsetInfo;
begin
PDF.LoadFromFile('input.pdf');
if PDF.SubsetLoadedFonts(Info) > 0 then
PDF.SaveToFile('subset.pdf');
end;