Método THotPDF.SubsetLoadedFonts

Redefine los programas TrueType, OpenType CFF, CFF en bruto y Type 1 incrustados compatibles para que conserven únicamente los glyphs alcanzables desde el contenido del documento cargado

Declaración

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

Alcanzabilidad

El contenido de las páginas siempre se escanea, incluidos los operadores que muestran texto y las selecciones de fuente locales del resource

IncludeFormXObjects incluye de forma recursiva los Form XObjects invocados con resources heredados, detección de ciclos y una profundidad de anidamiento acotada

IncludeAnnotationAppearances incluye las apariencias normal, rollover y down además de los state dictionaries, y también sigue los Form XObjects que esas apariencias usan cuando está habilitado

Cada código de carácter sigue su encoding declarado y después cualquier CMap Type0 y CIDToGIDMap, antes de llegar al glyph ID estable incrustado; los CID maps y los datos ToUnicode existentes no se renumeran

Los glyphs compuestos TrueType conservan su clausura recursiva de componentes, mientras que las capas COLR v0 y las dependencias de pintado de glyphs COLR v1 conservan cada outline referenciado

Las fuentes simples Type 1 siguen el encoding Standard, WinAnsi, MacRoman o MacExpert más Differences, y luego reescriben los CharStrings sin usar en datos PFB, binario partido del PDF o PFA hexadecimal sin cambiar el layout del stream incrustado

Opciones

CampoDefaultSignificado
MinimumSavingsBytes1Reducción mínima del stream codificado necesaria antes de adoptar un candidato
EnforceSignaturePermissionsTrueRechaza toda reescritura cuando el documento contiene un signature field
IncludeFormXObjectsTrueSigue los Form XObjects anidados invocados
IncludeAnnotationAppearancesTrueSigue los appearance streams y estados de las anotaciones

Resultado y seguridad

El valor de retorno es la cantidad de programas de fuentes incrustados reescritos, mientras que AInfo reporta la cobertura del escaneo, los fallos de mapeo o decodificación, los glyphs usados, los bytes ahorrados y las consecuencias sobre las firmas

Un programa de fuente se deja intacto byte a byte cuando algún código alcanzable no se puede mapear, su formato no es compatible, el subset falla o el candidato codificado no alcanza el umbral de ahorro

La reescritura Type 1 falla de forma segura ante múltiples segmentos binarios PFB, un encoding explícito de fuente simple que no se pueda parsear, un nombre de glyph solicitado faltante o un layout de CharString no compatible; las versiones COLR desconocidas y los programas sfnt sin tablas de outline dispersas también quedan sin cambios

Todos los candidatos se analizan antes de la mutación, y la política de firmas por defecto devuelve cero con RefusedBySignaturePolicy activo; deshabilitar la política permite la reescritura y activa SignaturesInvalidated siempre que un documento firmado cambie

Ejemplo

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

Optimización de resources e imágenes