THotPDF.SubsetLoadedFonts Method
Riscrive i programmi TrueType, OpenType CFF, CFF grezzi e Type 1 incorporati supportati, così da conservare solo i glifi raggiungibili dal contenuto del documento caricato
Dichiarazione
function SubsetLoadedFonts(
const Options: THPDFLoadedFontSubsetOptions;
out AInfo: THPDFLoadedFontSubsetInfo): Integer; overload;
function SubsetLoadedFonts(
out AInfo: THPDFLoadedFontSubsetInfo): Integer; overload;
Raggiungibilità
Il contenuto di pagina viene sempre analizzato, inclusi gli operatori di visualizzazione del testo e le selezioni font locali alla risorsa
IncludeFormXObjects include ricorsivamente i Form XObjects invocati con le risorse ereditate, con rilevamento dei cicli e una profondità di annidamento limitata
IncludeAnnotationAppearances include le appearance normal, rollover e down oltre ai dizionari di stato, e quando è abilitato segue anche i Form XObjects usati da quelle appearance
Ogni codice carattere segue la propria encoding dichiarata, poi l'eventuale CMap Type0 e CIDToGIDMap, prima di arrivare al glyph ID incorporato stabile; le mappe CID esistenti e i dati ToUnicode non vengono rinumerati
I glifi compositi TrueType conservano la chiusura ricorsiva delle componenti, mentre i layer COLR v0 e le dipendenze paint dei glifi COLR v1 conservano ogni outline referenziato
I font semplici Type 1 seguono le encoding Standard, WinAnsi, MacRoman o MacExpert più Differences, poi riscrivono i CharStrings inutilizzati in dati PFB, binari spezzati PDF o PFA esadecimali senza cambiare il layout dello stream incorporato
Opzioni
| Campo | Default | Significato |
|---|---|---|
MinimumSavingsBytes | 1 | Riduzione minima dello stream codificato richiesta perché un candidato venga adottato |
EnforceSignaturePermissions | True | Rifiuta qualunque riscrittura quando il documento contiene un campo firma |
IncludeFormXObjects | True | Segue i Form XObjects annidati invocati |
IncludeAnnotationAppearances | True | Segue gli stream e gli stati delle appearance delle annotazioni |
Risultato e sicurezza
Il valore restituito è il numero di programmi font incorporati riscritti, mentre AInfo riporta copertura della scansione, fallimenti di mapping o decodifica, glifi usati, byte risparmiati e conseguenze sulle firme
Un programma font resta identico byte per byte quando un codice raggiungibile non è mappabile, il suo formato non è supportato, il subsetting fallisce o il candidato codificato non raggiunge la soglia di risparmio
La riscrittura Type 1 fallisce in modo sicuro con più segmenti binari PFB, una encoding esplicita di font semplice non analizzabile, un nome di glifo richiesto mancante o un layout CharString non supportato; versioni COLR sconosciute e programmi sfnt privi di tabelle outline sparse restano anch'essi invariati
Tutti i candidati vengono analizzati prima della modifica, e la policy firme predefinita restituisce zero con RefusedBySignaturePolicy impostato; disabilitare la policy consente la riscrittura e imposta SignaturesInvalidated ogni volta che un documento firmato cambia
Esempio
var
Info: THPDFLoadedFontSubsetInfo;
begin
PDF.LoadFromFile('input.pdf');
if PDF.SubsetLoadedFonts(Info) > 0 then
PDF.SaveToFile('subset.pdf');
end;