THotPDF.SubsetLoadedFonts Method

Přepíše podporované vložené font programy TrueType, OpenType CFF, raw CFF a Type 1 tak, aby zachovaly jen glyphy dosažitelné z obsahu načteného dokumentu

Deklarace

function SubsetLoadedFonts(
    const Options: THPDFLoadedFontSubsetOptions;
    out AInfo: THPDFLoadedFontSubsetInfo): Integer; overload;
function SubsetLoadedFonts(
    out AInfo: THPDFLoadedFontSubsetInfo): Integer; overload;

Dosažitelnost

Obsah stránek se skenuje vždy, včetně text zobrazujících operátorů a výběrů fontů lokálních pro resource

IncludeFormXObjects rekurzivně zahrne vyvolané Form XObjecty se zděděnými resource, detekcí cyklů a ohraničenou hloubkou vnoření

IncludeAnnotationAppearances zahrne normal, rollover i down appearance a state slovníky, a pokud je zapnuto, sleduje i Form XObjecty používané těmito appearance

Každý znakový kód sleduje svou deklarovanou encoding, pak případné Type0 CMap a CIDToGIDMap, dřív než dosáhne stabilního vloženého glyph ID; stávající CID mapy a ToUnicode data se nepřečíslovávají

Kompozitní glyphy TrueType si zachovávají rekurzivní uzávěr svých komponent a vrstvy COLR v0 i paint závislosti glyphů COLR v1 zachovávají každou odkazovanou osnovu

Jednoduché fonty Type 1 následují encoding Standard, WinAnsi, MacRoman nebo MacExpert plus Differences a pak přepíší nepoužívané CharStrings v PFB, PDF split binary nebo hex PFA datech, aniž by měnily rozložení vloženého streamu

Volby

PoleVýchozíVýznam
MinimumSavingsBytes1Minimální nutná redukce zakódovaného streamu, než se kandidát převezme
EnforceSignaturePermissionsTrueOdmítne každý přepis, když dokument obsahuje signature field
IncludeFormXObjectsTrueSleduje vyvolané vnořené Form XObjecty
IncludeAnnotationAppearancesTrueSleduje appearance streamy a stavy anotací

Výsledek a bezpečnost

Návratová hodnota je počet přepsaných vložených font programů, zatímco AInfo hlásí pokrytí scanu, selhání mapování či dekódování, použité glyphy, úspory bajtů a důsledky pro podpisy

Font program zůstane byte-for-byte beze změny, když některý dosažitelný kód nejde namapovat, jeho formát není podporovaný, subsetting selže nebo zakódovaný kandidát nesplní práh úspor

Přepis Type 1 selhává uzavřeně u více binárních segmentů PFB, neparsovatelné explicitní encoding simple fontu, chybějícího požadovaného názvu glyphu i nepodporovaného rozložení CharString; neznámé verze COLR a sfnt programy bez sparse tabulek osnov také zůstávají beze změny

Všichni kandidáti se analyzují dřív, než dojde k mutaci, a výchozí signature politika vrátí nulu s nastaveným RefusedBySignaturePolicy; její vypnutí dovolí přepis a nastaví SignaturesInvalidated vždy, když se podepsaný dokument změní

Příklad

var
  Info: THPDFLoadedFontSubsetInfo;
begin
  PDF.LoadFromFile('input.pdf');
  if PDF.SubsetLoadedFonts(Info) > 0 then
    PDF.SaveToFile('subset.pdf');
end;

Resource and Image Optimisation