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 21

Indice 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 con from_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; GlyphAccessor Cubre la mayoría de los casos de uso en un nivel superior

Sumación de referencia API

Clase / MétodoDescripció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

Ver también

 Español