Trabajando con Fonts CFF
Trabajando con Fonts CFF
Este guía muestra cómo cargar e inspeccionar los internos de la fontanera CFF - charcets, tablas de codificación, diccionarios y estructuras de índice- utilizando Aspose.Font FOSS para Python.
Formato de fontos compacto (CFF) almacenan las etiquetas de glif como programas de chartramiento tipo 2. Aspose.Font FOSS for Python provides dedicated classes in the aspose_font.cff Nombre Espacio para leer charcetas de CFF, codificar tablas, diccionarios e indexes.
CFF Carnaval
CffCharset Mapa de los nombres de Glifos a PostScript.Calcular CffCharset.standard() para obtener el carcasa Adobe ISO integrado, luego utilizar name_for() y gid_for() traducir entre los nombres y las ID de Glif.
from aspose_font.cff.charset import CffCharset
charset = CffCharset.standard()
name = charset.name_for(1) # PostScript name for GID 1
gid = charset.gid_for("A") # GID for PostScript name "A"CFF encriptado
CffEncoding codifica los caracteres de mapas a los IDs de glyph. El código estándar cubre el conjunto de caracteros latino Adobe; utiliza unicode_to_gid() para analizar los puntos de código individuales y get_all_codepoints() para listar cada valor mapeado.
from aspose_font.cff.encoding import CffEncoding
enc = CffEncoding.standard()
gid = enc.unicode_to_gid(0x41)
codepoints = enc.get_all_codepoints()El diccionario de CFF Parsing
CffDict.from_bytes() Cada operador cargará las claves a una lista de valores numéricos que configuran la letra, como ancho por defecto o descuentos subroutinos.
from aspose_font.cff.dict_ import CffDict
d = CffDict.from_bytes(raw_bytes)
vals = d.get(21) # retrieve values for operator 21Indice de CFF
CffIndex.from_reader() Las estructuras de INDEX son raíces de datos variables utilizados para las tablas de nombres, tabelas de líneas y almacenamiento de charstros dentro de los fuentes de CFF.
from aspose_font.cff.index import CffIndex
from aspose_font._io import BinaryReader # internal API — may change between releases
import io
reader = BinaryReader(io.BytesIO(raw_index_bytes))
index = CffIndex.from_reader(reader)
print(f"INDEX entries: {len(index)}")Tipo 2 Interpretación de Charstring
Type2Interpreter.interpret() ejecuta un charstring de tipo 2 y vuelve a GlyphPath.
from aspose_font.cff.type2 import Type2Interpreter
interpreter = Type2Interpreter()
glyph_path = interpreter.interpret(charstring_bytes, private_dict)Consejos y mejores prácticas
- Uso
CffEncoding.standard()como una base; sobreride confrom_reader()Para codificación incorporada CffDict.to_bytes()Deja que re-serializes diccionarios modificados- La interpretación de la charstría es necesaria sólo para la extracción del outline de glif crudo;
GlyphAccessorCubre la mayoría de los casos de uso en un nivel superior
Sumación de referencia API
| Clase / Método | Descripción |
|---|---|
CffCharset.standard() | Taller de Adobe Charcett |
CffCharset.name_for(gid) | Nombre de PostScript para un ID Glyph |
CffCharset.gid_for(name) | Glyph ID para un nombre PostScript |
CffEncoding.standard() | Tabla de codificación CFF estándar |
CffEncoding.unicode_to_gid(cp) | Mapa de punto para GID |
CffDict.from_bytes(data) | Parse una CFF DICT cruda |
CffDict.get(operator) | Obtener valores para un operador de DICT |
CffIndex.from_reader(reader) | El índice de CFF |
Type2Interpreter.interpret(cs, pd) | Executar un charstring de tipo 2 |