THotPDF.SubsetLoadedFonts Método

Reescribe los programas TrueType, OpenType CFF y CFF sin procesar incrustados admitidos para que retengan solo los glifos 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 la página siempre se escanea, incluidos los operadores de muestra de texto y las selecciones de fuentes locales de recursos

IncludeFormXObjects incluye recursivamente los Form XObjects invocados con recursos heredados, detección de ciclos y una profundidad de anidamiento acotada

IncludeAnnotationAppearances incluye las apariencias normal, rollover y down además de los diccionarios de estado, y también sigue los Form XObjects usados por esas apariencias cuando está habilitado

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

Los glifos compuestos TrueType conservan su cierre recursivo de componentes, mientras que las capas COLR v0 y las dependencias de pintura de glifos COLR v1 conservan cada contorno referenciado

Las fuentes simples Type 1 siguen la codificación Standard, WinAnsi, MacRoman o MacExpert más Differences, y después reescriben los CharStrings sin usar en datos PFB, binario partido PDF o PFA hexadecimal sin cambiar la disposición del stream incrustado

Opciones

CampoPredeterminadoSignificado
MinimumSavingsBytes1Reducción mínima de flujo codificado requerida antes de adoptar un candidato
EnforceSignaturePermissionsTrueRechaza toda reescritura cuando el documento contiene un campo de firma
IncludeFormXObjectsTrueRastrea los Form XObjects anidados invocados
IncludeAnnotationAppearancesTrueRastrea los flujos y estados de apariencia de anotaciones

Resultado y seguridad

El valor devuelto es el número de programas de fuentes incrustadas reescritos, mientras que AInfo informa de la cobertura del escaneo, los fallos de mapeo o decodificación, los glifos usados, el ahorro de bytes y las consecuencias para las firmas

Un programa de fuente se deja byte a byte intacto cuando algún código alcanzable no puede mapearse, su formato no está soportado, el subsetting falla o el candidato codificado no llega al umbral de ahorro

La reescritura Type 1 falla de forma cerrada ante varios segmentos binarios PFB, una codificación explícita de fuente simple no parseable, un nombre de glifo solicitado ausente o una disposición de CharString no soportada; las versiones COLR desconocidas y los programas sfnt sin tablas de contorno dispersas también quedan intactos

Todos los candidatos se analizan antes de la mutación, y la política de firmas por defecto devuelve cero con RefusedBySignaturePolicy activado; 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 recursos e imágenes