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
| Pole | Výchozí | Význam |
|---|---|---|
MinimumSavingsBytes | 1 | Minimální nutná redukce zakódovaného streamu, než se kandidát převezme |
EnforceSignaturePermissions | True | Odmítne každý přepis, když dokument obsahuje signature field |
IncludeFormXObjects | True | Sleduje vyvolané vnořené Form XObjecty |
IncludeAnnotationAppearances | True | Sleduje 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;