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

ChampDéfautSignification
MinimumSavingsBytes1Réduction minimale du stream encodé exigée avant l’adoption d’un candidat
EnforceSignaturePermissionsTrueRefuse toute réécriture lorsque le document contient un champ de signature
IncludeFormXObjectsTrueTrace les Form XObjects imbriqués invoqués
IncludeAnnotationAppearancesTrueTrace 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;

Optimisation des ressources et des images