Cómo trabajar con las tablas de font en Python

Cómo trabajar con las tablas de font en Python

Este guía muestra cómo leer las tablas llamadas TTF, recuperar los bajetas de la tabla binaria cruda y escribir datos modificados de tablas utilizando TtfFont en Aspose.Font FOSS para Python. fonts TrueType almacenan todos los datos en tablas binarias identificadas por etiquetas de 4 caracteres. Aspose.Font TtfTableSet para el acceso de la mesa y TtfFont.get_table_bytes() / TtfFont.set_table_bytes() para el acceso binario.

Guía paso a paso

Paso 1: Instalar el paquete

Instalar el paquete Aspose.Font FOSS de PyPI utilizando el comando pip a continuación:

pip install "aspose-font>=1.0.0"

Paso 2: Importar las clases necesarias

Importación FontLoader y TtfFont para cargar un archivo de fuente y acceder a su conjunto de tablas:

from aspose_font.loader import FontLoader
from aspose_font.ttf.font import TtfFont

Paso 3: Acceso a las tablas nombradas

Cargar un archivo TTF con FontLoader.open() y el acceso a las tablas denominadas a través de la ttf_tables Propiedad de la propiedad:

ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
tables = ttf_font.ttf_tables
print("kern present:", tables.kern is not None)
print("cmap present:", tables.cmap is not None)

Paso 4: Leer las tablas de la mesa cruda

Leer los datos binarios crudos para una tabla específica al pasar su etiqueta de 4 caracteres a get_table_bytes():

ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
raw = ttf_font.get_table_bytes("name")
print(f"name table: {len(raw)} bytes")

Paso 5: Escribe los cambios de la tabla

Escribe los datos binarios modificados de vuelta a una tabla denominada utilizando set_table_bytes() Con la etiqueta y el bayte de pago:

ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
modified = b"..."  # your modified binary data
ttf_font.set_table_bytes("GSUB", modified)

Problemas y soluciones comunes

AttributeError: Font has no attribute ttf_tablesttf_tables Está en TtfFont, No la base Font Clase: Usar ttf_font: TtfFont = FontLoader.open(...) Para obtener una Tipos de referencia.

get_table_bytes Retorno de bajetas vacíos El marcador debe ser exactamente 4 caracteres. (Pueden ser los espacios de la zona, si es necesario). "kern" No "KRN").

Preguntas frecuentes

¿Qué tablas se llaman expuestas en TtfTableSet?

cabeza, hhea, maxp, os2, nombre, post, cmap, loca, Hmtx y kern.

¿Puedo añadir una nueva tabla a un font?

Si. pasar cualquier etiqueta de 4 bytes y datos de byte válidos a TtfFont.set_table_bytes(tag, data).

Ver también

 Español