Introducción
El formato de fontos compacto (CFF) es el formato binario de descripción del glif utilizado dentro de OpenType. fonts con un motor de salida compatible con PostScript. Aspose.Font FOSS para Python expone Un conjunto de clases dedicadas bajo el aspose_font.cff El nombre para la lectura y Inspección de estructuras de datos del CFF: CffFont, CffCharset, CffEncoding, CffDict, CffIndex,y, Type2Interpreter.Este post se dirige a cómo cargar las fuentes de CFF, Navega sus tablas internas, y interpreta los programas de charstring utilizando la biblioteca.
El paquete está licenciado por MIT. Instalarlo con pip install aspose-font>=1.0.0.
Características clave
Cargar una font CFF
FontLoader.open() Detecta el formato CFF automáticamente — pasa una standalone .cff archivo o un archivio OTF que incorpora una tabla de salida CFF. El objeto devuelto es un CffFont (Accesible a través de la cff_font Propiedad en TtfFont para los archivos de OTF).
from aspose_font.loader import FontLoader
# Load a standalone CFF file
font = FontLoader.open("OpenSans.cff")
# Load a standalone CFF file (auto-detected from format)
font = FontLoader.open("OpenSans.cff")
print(font.font_name, font.num_glyphs)
CFF Charset — Mapeando los Glyph IDs a nombres
CffCharset mapas de los GIFs (GIDs) a PostScript. standard() para Tiene el ISO Adobe Charse o from_reader() Para deshacerse de un carril de binario El CFF, el name_for() El método devolve el nombre PostScript para un GID, y gid_for() Se realiza el reverso lookup.
from aspose_font.cff.charset import CffCharset
charset = CffCharset.standard()
print(charset.name_for(1)) # ".notdef" or similar
print(charset.gid_for("A")) # GID for the PostScript name "A"
CFF – Unicode-to-GID Mapping - El código de unicodo a GID
CffEncoding maneja la tabla de codificación CFF, que mapa los códigos de caracteres a los IDs de glyph. standard() devolver el codificación estándar, expert() devolver el código experto, y from_reader() parses un codificación personalizada de los datos binarios CFF. unicode_to_gid() para Ver un GID por Unicode Code Point y get_all_codepoints() Para listar todos los mapas Puntos de código.
from aspose_font.cff.encoding import CffEncoding
encoding = CffEncoding.standard()
gid = encoding.unicode_to_gid(0x41) # Unicode for 'A'
all_codepoints = encoding.get_all_codepoints()
print(f"Standard encoding covers {len(all_codepoints)} code points")
El diccionario de CFF Parsing
Las fuentes de CFF almacenan metadatos privados y de alto nivel en diccionarios. CffDict.from_bytes() parse un crudo CFF DICT blob y te da get() y set() Acceso por la clave de operador. TopDict.from_dict() se especializa en este para los diccionarios de nivel superior del CFF, y PrivateDict.from_dict() Lo mismo ocurre con los DICT.
from aspose_font.cff.dict_ import CffDict
# Parse a raw CFF DICT from bytes
raw_dict_bytes = b"..." # CFF-encoded DICT bytes
d = CffDict.from_bytes(raw_dict_bytes)
vals = d.get(21) # retrieve values for operator 21 (PostScript CharstringType)
CFF Indicadores de la estructura
CffIndex Representa una estructura de datos CFF INDEX — un conjunto preficionado de variables longitudinales. Las líneas de longitud de byte utilizadas para charstrings, subrs y tablas de nombre. from_reader() Parsales un índice de un lector binario y el resultado es suscriptible por índices enteros.
from aspose_font.cff.index import CffIndex
from aspose_font._io import BinaryReader # internal API — may change between releases
import io
raw_index = b"..." # raw CFF INDEX bytes
reader = BinaryReader(io.BytesIO(raw_index))
index = CffIndex.from_reader(reader)
print(f"INDEX entries: {len(index)}")
Tipo 2 Interpretación de Charstring
Type2Interpreter ejecuta un programa de chartring tipo 2 (el compacto PostScript-like) en el formato utilizado en las fuentes CFF) y produce un GlyphPath Comando de la línea.Call interpret() con los bajos de chartramiento y el dicionario privado asociado. este te permite extraer las extracciones de glute crudo de los cartriduras CFF sin un total Interpretación de PostScript.
from aspose_font.cff.type2 import Type2Interpreter
interpreter = Type2Interpreter()
glyph_path = interpreter.interpret(charstring_bytes, private_dict)
for cmd in glyph_path.commands:
print(type(cmd).__name__, cmd)
Inicio rápido
pip install aspose-font>=1.0.0
from aspose_font.loader import FontLoader
# Load an OTF with embedded CFF outlines
font = FontLoader.open("OpenSans-Regular.otf")
glyph_id = font.encoding.unicode_to_gid(0x41)
glyph = font.glyph_accessor.get_glyph_by_id(glyph_id)
print(f"Path commands for 'A': {len(glyph.path.commands)}")
Formatos apoyados
| Formato | Extensiones | Leer | Escribe |
|---|---|---|---|
| CFF | .cff | ✓ | ✓ |
| OTF | .OTV | ✓ | ✓ |
| TTF | .TF | ✓ | ✓ |
| WOFF | .Woff | ✓ | ✓ |
| WOFF2 | .El WooF2 | ✓ | ✓ |
| EOT | .El EOT | ✓ | ✓ |
| TYPE1 | .pfb / pfa | ✓ | ✓ |
Open Source y Licenciación
Aspose.Font FOSS for Python is MIT licensed. Source code is on GitHub at Título: Ascensión de los datos.Font-FOSS-for-Python. Instalar desde PyP como aspose-font.