THotPDF.SubsetLoadedFonts Method

Skriver om stödda inbäddade TrueType-, OpenType CFF-, råa CFF- och Type 1-program så att de bara behåller glyfer som är nåbara från det inlästa dokumentets innehåll

Deklaration

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

Nåbarhet

Sidinnehåll skannas alltid, inklusive textvisande operatorer och resurslokala fontval

IncludeFormXObjects inkluderar rekursivt anropade Form XObjects med ärvda resurser, cykeldetektering och ett begränsat nästningsdjup

IncludeAnnotationAppearances inkluderar normal-, rollover- och down-appearances samt tillståndsordlistor, och följer även de Form XObjects som dessa appearances använder när det är aktiverat

Varje teckenkod följer sin deklarerade encoding, därefter eventuell Type0-CMap och CIDToGIDMap, innan den stabila inbäddade glyf-ID:t nås; befintliga CID-mappningar och ToUnicode-data numreras inte om

Sammansatta TrueType-glyfer behåller sin rekursiva komponentmarkering, medan COLR v0-lager och COLR v1:s paint-beroenden behåller varje refererad kontur

Type 1-enkeltypsnitt följer Standard-, WinAnsi-, MacRoman- eller MacExpert-encoding plus Differences och skriver sedan om oanvända CharStrings i PFB-, PDF-delad binär- eller hex-PFA-data utan att ändra layouten i den inbäddade strömmen

Alternativ

FältStandardvärdeBetydelse
MinimumSavingsBytes1Minsta krävda minskning av den kodade strömmen innan en kandidat antas
EnforceSignaturePermissionsTrueAvvisar all omskrivning när dokumentet innehåller ett signaturfält
IncludeFormXObjectsTrueSpårar anropade nästlade Form XObjects
IncludeAnnotationAppearancesTrueSpårar annoteringarnas appearance-strömmar och tillstånd

Resultat och säkerhet

Returvärdet är antalet omskrivna inbäddade fontprogram, medan AInfo rapporterar skanntäckning, mapping- eller avkodningsfel, använda glyfer, byte-besparingar och signaturkonsekvenser

Ett fontprogram lämnas byte för byte oförändrat när nåbar kod inte kan mappas, dess format inte stöds, subsetting misslyckas eller den kodade kandidaten inte når besparingströskeln

Type 1-omskrivning misslyckas säkert vid flera binära PFB-segment, en oparserbar explicit encoding för enkeltypsnitt, ett saknat begärt glyfnamn eller en CharString-layout som inte stöds; okända COLR-versioner och sfnt-program utan sparse-konturtabeller lämnas också oförändrade

Alla kandidater analyseras innan något ändras, och standardpolicyn för signaturer returnerar noll med RefusedBySignaturePolicy satt; avaktiverar man policyn tillåts omskrivning, och SignaturesInvalidated sätts så snart ett signerat dokument ändras

Exempel

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

Resource and Image Optimisation