Introducción

Los archivos de font están estructurados alrededor de las tablas - cada tabla almacena una categoría específica de datos como las listas de grafía, los mapas de caracteres, metadatos de nombre o metricas horizontales. Comprender y acceder a estas tables es esencial para tareas como análisis de fuentes, edición de metadata, garantía de calidad y conversión de formato.

Aspose.Font FOSS for Python (aspose-font) le da acceso directo al conjunto completo de tablas OpenType y TrueTYpe a través de una API Python limpia. la biblioteca se libera bajo la licencia MIT con dependencias externas cero, por lo que puede integrarla en cualquier proyecto sin preocupaciones de licenciamiento.

Este post pasa a través de las clases de tablas clave disponibles en la biblioteca - desde leer los metadatos del título hasta inspeccionar los datos de glif y modificar los registros de nombre - todos apoyados por el libro. TtfTableSet Contenedores en TtfFont.


Características clave

Cargar una font y acceder a las tablas

Cada letra cargada con FontLoader exponer sus tablas parsadas a través de la ttf_tables Propiedad en TtfFont.El TtfTableSet El objeto proporciona acceso tipado a cada tabla estándar, más los bajos crudos de acceso a través del get_raw() para tablas personalizadas o no reconocidas.

import aspose_font

font = aspose_font.FontLoader.open("MyFont.ttf")
tables = font.ttf_tables

# Typed table access
head = tables.head
name = tables.name
cmap = tables.cmap

# Raw bytes for any table tag
raw_os2 = tables.get_raw("OS/2")

Leer la mesa de cabeza

El HeadTable almacenan parámetros fundamentales de la font-wide: unidades por em, revisión, cuadro de límite, fecha de creación y banderas de estilo. Estos valores son críticos para rendir motores y validadores de fuentes.

import aspose_font

font = aspose_font.FontLoader.open("MyFont.ttf")
head = font.ttf_tables.head

print(f"Units per em: {head.units_per_em}")
print(f"Revision: {head.font_revision}")
print(f"Bounding box: ({head.x_min}, {head.y_min}) to ({head.x_max}, {head.y_max})")
print(f"Mac style flags: {head.mac_style}")
print(f"Glyph data format: {head.glyph_data_format}")

Trabajar con la mesa del nombre

El NameTable Tiene todos los metadatos que se pueden leer por el hombre: nombre de la familia, estilo, copyright, licencia, diseñador y descripción. Puede consultar registros con ID del nombre, recuperar nombres localizados o modificar entradas para rebranding.

import aspose_font

font = aspose_font.FontLoader.open("MyFont.ttf")
name_table = font.ttf_tables.name

# Read the font family name (name ID 1)
family = name_table.best_name(1, ["en"])
print(f"Family: {family}")

# List all localized versions of the full name (name ID 4)
localized = name_table.localized_names(4)
for lang, value in localized.items():
    print(f"  {lang}: {value}")

# Replace the font family name
name_table.replace_name(1, "MyCustomFamily")

Inspeccion de la mesa CMAP

El CmapTable mapas Unicode codepoints a Glyph IDs. Puede contener múltiples subtables para diferentes plataformas y combinaciones de codificación. best_subtable() Para obtener el mapa más adecuado para su caso de uso.

import aspose_font

font = aspose_font.FontLoader.open("MyFont.ttf")
cmap = font.ttf_tables.cmap

# Get the best Unicode subtable
subtable = cmap.best_subtable()
print(f"Platform: {subtable.platform_id}, Encoding: {subtable.encoding_id}")

# Look up the glyph ID for 'A'
gid = subtable.get_gid(ord("A"))
print(f"Glyph ID for 'A': {gid}")

Lectura OS/2 y Métriques Horizontales

El Os2Table proporciona las métricas específicas de OS/2 y Windows, incluyendo el ascendente/descendiente tipográfico, las banderas de embotellado y la clasificación Panose. HheaTable y HmtxTable proporcionar las metrinas de diseño horizontal utilizadas para la forma del texto.

import aspose_font

font = aspose_font.FontLoader.open("MyFont.ttf")
os2 = font.ttf_tables.os2
hhea = font.ttf_tables.hhea

print(f"Typo ascender: {os2.s_typo_ascender}")
print(f"Typo descender: {os2.s_typo_descender}")
print(f"Embedding flags (fsType): {os2.fs_type}")
print(f"Panose: {os2.panose.hex()}")

print(f"Hhea ascender: {hhea.ascender}")
print(f"Max advance width: {hhea.advance_width_max}")
print(f"Number of hmetrics: {hhea.number_of_hmetrics}")

El Kerning y los datos Glyph

El KernTable las tiendas de los pares para ajustes horizontales. el GlyfTable contiene los datos de salida del glif real para las fuentes TrueType. también puede utilizar PostTable para resolver los nombres de Glif.

import aspose_font

font = aspose_font.FontLoader.open("MyFont.ttf")

# Kerning lookup
kern = font.ttf_tables.kern
if kern:
    pairs = kern.pairs
    print(f"Total kern pairs: {len(pairs)}")
    # Look up a specific pair by glyph IDs
    adjustment = kern.get(36, 57)
    print(f"Kern adjustment: {adjustment}")

# Glyph name from post table
post = font.ttf_tables.post
if post:
    glyph_name = post.glyph_name(0)
    print(f"Glyph 0 name: {glyph_name}")

Inicio rápido

pip install aspose-font>=1.0.0
import aspose_font

# Load any TTF or OTF font
font = aspose_font.FontLoader.open("MyFont.ttf")
tables = font.ttf_tables

# Print basic table info
print(f"Font: {font.font_name}")
print(f"Family: {font.font_family}")
print(f"Glyphs: {font.num_glyphs}")
print(f"Units/em: {tables.head.units_per_em}")

# Read name table entries
name_table = tables.name
for name_id in [0, 1, 2, 4, 5, 6]:
    value = name_table.best_name(name_id, ["en"])
    if value:
        print(f"  Name ID {name_id}: {value}")

# Check character coverage
cmap = tables.cmap
subtable = cmap.best_subtable()
for char in "ABCabc012":
    gid = subtable.get_gid(ord(char))
    print(f"  '{char}' -> glyph {gid}")

Formatos apoyados

FormatoExtensionesLeerEscribe
TTF.TF
OTF.OTV
CFF.cff
WOFF.Woff
WOFF2.El WooF2
EOT.El EOT
TYPE1.pfb / pfa

Open Source y Licenciación

Aspose.Font FOSS for Python is released under the MIT license. The source code is available on GitHub and the package is published on PyPI as aspose-font.Usted es libre de usar, modificar y distribuirlo en proyectos personales y comerciales sin restricción.


Empezando a

Recursos relacionados