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
| Campo | Default | Significado |
|---|---|---|
MinimumSavingsBytes | 1 | Reducción mínima del stream codificado necesaria antes de adoptar un candidato |
EnforceSignaturePermissions | True | Rechaza toda reescritura cuando el documento contiene un signature field |
IncludeFormXObjects | True | Sigue los Form XObjects anidados invocados |
IncludeAnnotationAppearances | True | Sigue 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;