Introdução

Os arquivos de fontes são estruturados em torno de tabelas cada tabela armazena uma categoria específica de dados, como contornos de glifos, mapeamentos de caracteres, metadados de nomeamento ou métricas horizontais. Entender e acessar essas taberas é essencial para tarefas como análise de fonte, edição de metadeitos, garantia de qualidade e conversão de formato.

Aspose.Font FOSS for Python (aspose-font) dá-lhe acesso direto ao conjunto completo de tabelas OpenType e TrueTyme através de uma API Python limpa. A biblioteca é lançada sob a licença MIT com zero dependências externas, para que você possa integrá-la em qualquer projeto sem preocupações de licenciamento.

Este post percorre as classes de tabela chave disponíveis na biblioteca da leitura metadados do cabeçalho para inspecionar dados glifo e modificar registros de nome ?? todos apoiados pelo TtfTableSet em recipiente TtfFont.


Características principais

Carregamento de uma fonte e acesso a tabelas

Cada fonte carregada com FontLoader expõe as suas tabelas analisadas através do ttf_tables propriedade em TtfFont.O . TtfTableSet objeto fornece acesso tipado para cada tabela padrão, mais bytes cru acesso via get_raw() para mesas personalizadas ou não reconhecidas.

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")

Lendo a mesa principal

A Comissão HeadTable armazena parâmetros fundamentais de toda a fonte: unidades por em, revisão, caixa de limitação, data de criação e bandeiras de estilo. Estes valores são críticos para motores de renderização e validadores de fontes.

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}")

Trabalhar com a tabela de nomes

A Comissão NameTable contém todos os metadados legíveis por humanos: nome da família de fontes, estilo, direitos autorais, licença, designer e descrição. Você pode consultar registros pelo ID do nome, recuperar nomes localizados ou 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")

Inspecção da tabela CMap

A Comissão CmapTable Mapeia códigos Unicode para IDs de glifos. Pode conter várias subtabelas para diferentes combinações de plataforma e codificação. Use best_subtable() para obter o mapeamento mais adequado ao seu 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}")

Leitura de OS/2 e métricas horizontais

A Comissão Os2Table fornece métricas específicas do OS/2 e Windows, incluindo ascendente/descendente tipográfico, inserir bandeiras e classificação Panose. O HheaTable e a) HmtxTable fornecer métricas de layout horizontais utilizadas para a formação do 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}")

Dados de Kerning e Glyph

A Comissão KernTable Os sistemas de armazenamento são equipados com um sistema de armazém para a fixação horizontal dos espaços. GlyfTable contém os dados de contorno do glifo para fontes TrueType. Você também pode usar o código-fonte “TrueTyme”. PostTable para resolver nomes de glifos.

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}")

Começo 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 suportados

Formatos de imagemExtensãoLeia.Escrever .
TTF.ttf
OTF.oft
CFF.cff
WOFF.- Não.
WOFF2.woff2
EOT.Não.
TYPE1.pfb/.pfa

Open Source & Licenciamento

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.Você é livre para usá-lo, modificá -lo e distribuí -los em projetos pessoais ou comerciais sem restrições.


Começar a Fazer

Recursos relacionados