|
Funciones de subsetting de fuentes CFF y OpenType
|
Top EnableFontSubsetting Contenido |
|
Estas funciones a nivel de unidad exponen la superficie pública de inspección de fuentes CFF, OpenType-CFF y sfnt que usa la tubería de fuentes incrustadas de HotPDF. HotPDF también distribuye unidades reutilizables de análisis Type 1 PFB y CFF para los llamadores que necesiten inspección de fuentes de más bajo nivel
Sintaxis Delphi function HPDFSubsetCFF(const CFFBytes: TBytes; const KeepGlyph: array of Boolean): TBytes; function HPDFIsCFF2Font(const FontBytes: TBytes): Boolean; function HPDFInstantiateCFF2Font(const FontBytes: TBytes; const AxisValues: THPDFVariableFontAxisValueArray): TBytes; function HPDFSubsetCFF2Font(const FontBytes: TBytes; const KeepGlyph: array of Boolean): TBytes; function HPDFIsTrueTypeVariableFont(const FontBytes: TBytes): Boolean; function HPDFInstantiateTrueTypeVariableFont(const FontBytes: TBytes; const AxisValues: THPDFVariableFontAxisValueArray): TBytes; function HPDFSfntIsOTF(const Data: TBytes): Boolean; function HPDFOTFFindCFFTable(const Data: TBytes; out TableOff: Cardinal; out TableLen: Cardinal): Boolean; function HPDFSubsetOTFContainer(const OTFBytes: TBytes; const KeepGlyph: array of Boolean): TBytes; function HPDFExtractTTFPostScriptName(const Data: TBytes): AnsiString;
Descripción HPDFSubsetCFF reescribe una carga de fuente CFF in situ, preservando los IDs de glifo y reemplazando las CharStrings y subrutinas no usadas por stubs mínimos. Es el helper para los llamadores que ya extrajeron una tabla CFF de un contenedor de fuentes
HPDFIsCFF2Font detecta un sfnt con tabla
HPDFSubsetCFF2Font realiza la misma instanciación de coordenadas por defecto mientras reemplaza los programas de glifos no usados por CharStrings vacías. Preserva los IDs de glifo, los diccionarios multi-FD, los datos de hints privados y las matrices de fuente
HPDFIsTrueTypeVariableFont detecta un sfnt que contiene
HPDFSfntIsOTF detecta un contenedor sfnt cuya versión es OTTO. HPDFOTFFindCFFTable localiza la tabla 'CFF ' incrustada. HPDFSubsetOTFContainer hace subsetting de datos CFF o CFF2 incrustados y devuelve un contenedor OTF con checksums sfnt válidos. HPDFExtractTTFPostScriptName lee el name ID 6 de la tabla
El subsetter reconoce tanto CFF con claves por nombre (un único Private DICT, un único Local Subr INDEX) como CFF con claves CID (operador ROS en el Top DICT, FDArray con varios Private DICT de subfuentes, mapa glifo-a-FD en FDSelect, Local Subr INDEX por cada FD). El soporte CID cubre las fuentes OpenType-CFF CJK / índicas / árabes; el análisis de clausura sigue el contexto FD de cada CharString conservado, de modo que los Local Subr INDEX de cada FD se reducen de forma independiente
Los decodificadores de enteros CFF de más bajo nivel, los parsers FDArray / FDSelect y los escáneres de subrutinas son detalles de implementación detrás de esta superficie pública de helpers
Unidades parser de Type 1 y CFF
Véase también: EnableFontSubsetting, FontEmbedding, PDF Filter Support |
El renderizador nativo de glifos implementa las operaciones Type 2 estándar booleanas, aritméticas, condicionales, de transient array y de pila, incluidas put, get, ifelse, random, dup, exch, index y roll
Los valores transitorios se reinician en cada glifo, los valores aleatorios son reproducibles, y los límites de operandos, transient array, recursión y ejecución rechazan los programas malformados sin devolver un contorno parcial
El escáner de subsetting resuelve las expresiones aritméticas y de transient array usadas por las llamadas a subrutinas locales y globales, incluidos los operandos Type 2 de punto fijo 16.16
Cuando valores aleatorios, estado transitorio desconocido o efectos de pila entre procedimientos hacen incierta la llamada de destino, el subsetting conserva todas las subrutinas candidatas en lugar de descartar una dependencia de contorno potencialmente alcanzable
Las operaciones Multiple Master reservadas y obsoletas siguen sin soportarse y fallan de forma explícita