Introdução

Fontes TrueType (.ttf) e o seu superconjunto OpenType (.otf) são a fonte dominante. Os dois formatos compartilham a mesma estrutura de tabela binária. [PLACEHOLDER_0}.Font FOSS para Python expõe esta estrutura. através de: TtfFont, que permite o acesso directo a tabelas individuais do OpenType, dados de pares de núcleos, E os contornos dos glifos.

A Comissão TtfFont A classe estende o Font classe de base com métodos específicos para a TTF, incluindo: get_blob, get_table_bytes, set_table_bytes, e instantiate para fonte variável Bloqueio do eixo. TtfTableSet propriedade (ttf_tables) fornece acesso tipado ao sistema de informação. tabelas OpenType mais comuns: head, hhea, maxp, os2, name, post.

A biblioteca é publicada no PyPI como: aspose-font e licenciado sob a licença MIT. Não tem dependências comerciais obrigatórias.


Características principais

Carregamento de fontes TTF e OTF

Utilização: FontLoader.open para carregar qualquer ficheiro de fonte TrueType ou OpenTyme:

from aspose_font import FontLoader

loaded = FontLoader.open("fonts/Roboto-Regular.ttf")

print(loaded.font_name)
print(loaded.font_family)
print(loaded.font_style)
print(loaded.num_glyphs)

FontLoader.open detecta o formato da fonte a partir do cabeçalho de arquivo. Ambos .ttf (TrueType) e a) .otf (OpenType CFF) arquivos são suportados e ambos retornam um TtfFont - Por exemplo.


Acesso a tabelas OpenType através do TtfTableSet

A Comissão ttf_tables propriedade retorna um TtfTableSet de uma dimensão superior a 150 cm3 OpenType tables. Cada propriedade retorna o objeto da tabela ou None Se ausente:

A Comissão ttf_tables propriedade em TtfFont retorna um TtfTableSet Disponível. Acessórios para mesas:

  • headHeadTable | None
  • hheaHheaTable | None
  • maxpMaxpTable | None
  • os2Os2Table | None
  • nameNameTable | None
  • postPostTable | None

Cada propriedade retorna o objeto da tabela ou None se essa tabela não estiver presente no quadro de referência, a seguir: Arquivo de fonte. Acesso TtfTableSet propriedades a verificar para tabelas específicas antes de ler Para tabelas não abrangidas por acessórios nomeados, utilizar o código de identificação: TtfTableSet.get_raw(tag) a) para o Obter bytes brutos por meio de uma etiqueta OpenType com quatro caracteres.


Leitura de bytes da tabela cru

get_table_bytes(tag) Retorna os bytes brutos para qualquer tabela OpenType. Use get_blob(tag) para uma variante Não-segura que retorna: None quando a tabela estiver ausente:

TtfFont fornece dois métodos para o acesso à mesa cru:

  • get_table_bytes(tag) -> bytes Retorna os bytes brutos para uma tabela nomeada (aumenta se ausente)
  • get_blob(tag) -> bytes | None devoluções None se a tabela estiver ausente (variante segura)

Ambos os métodos aceitam uma etiqueta de tabela OpenType de quatro caracteres, como: "cmap", "GDEF", ou "GPOS".- Usar . get_blob quando uma mesa é opcional para que você possa verificar se None antes de processamento.


Pares de núcleo

get_kern_pairs() Retorna todos os pares de núcleos codificados na fonte. Cada um KernPair tem left (GlyphId), right (GlyphId) e value (int em unidades de fonte):

from aspose_font import FontLoader

loaded = FontLoader.open("fonts/Roboto-Regular.ttf")

pairs = loaded.get_kern_pairs()
print(f"Kern pairs: {len(pairs)}")

for pair in pairs[:5]:
    print(f"  Left: {pair.left}  Right: {pair.right}  Value: {pair.value}")

Metricas de fonte

As métricas padrão são acessíveis através do sistema de cálculo da taxa de desemprego. metrics propriedade:

from aspose_font import FontLoader

loaded = FontLoader.open("fonts/Roboto-Regular.ttf")

metrics = loaded.metrics
print(f"Units per em  : {metrics.units_per_em}")
print(f"Ascender      : {metrics.ascender}")
print(f"Descender     : {metrics.descender}")
print(f"Line gap      : {metrics.line_gap}")
print(f"Underline pos : {metrics.underline_position}")

Suporte de fonte variável

Para fontes variáveis, TtfFont exposições is_variable, variable_axes, e named_instances.- Usar . get_axis(tag) para recuperar um eixo específico por sua quatro letras Tag: “Aqui está o meu nome”.:

from aspose_font import FontLoader

loaded = FontLoader.open("fonts/RobotoFlex.ttf")

print(f"Is variable: {loaded.is_variable}")
print(f"Axes       : {len(loaded.variable_axes)}")

A Comissão get_axis(tag) método de TtfFont recupera um VariableAxis por suas quatro letras. etiqueta (por exemplo:. "wght" em peso, "wdth" Retorna a posição de um arquivo. None se o eixo for: não está presente na fonte de texto. fvar - A mesa.


Converter fontes

to_bytes(font_type) converte a fonte para um formato diferente. Use o FontType emum para especificar o alvo:

from aspose_font import FontLoader, FontType

loaded = FontLoader.open("fonts/Roboto-Regular.ttf")

ttf_bytes = loaded.to_bytes(FontType.TTF)
with open("output/Roboto-copy.ttf", "wb") as fh:
    fh.write(ttf_bytes)

print(f"Serialized: {len(ttf_bytes)} bytes")

Começo rápido

Instalar a biblioteca:

.venv/bin/pip install aspose-font

Carregar uma fonte TTF e inspecioná-la:

from aspose_font import FontLoader, FontType

loaded = FontLoader.open("Roboto-Regular.ttf")

print(f"Font name : {loaded.font_name}")
print(f"Family    : {loaded.font_family}")
print(f"Glyphs    : {loaded.num_glyphs}")
print(f"Variable  : {loaded.is_variable}")

metrics = loaded.metrics
print(f"UPM       : {metrics.units_per_em}")

ttf_bytes = loaded.to_bytes(FontType.TTF)
print(f"Serialized: {len(ttf_bytes)} bytes")

Formatos suportados

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

Todos os formatos carregam via FontLoader.open. As fontes TTF/OTF devolvem um TtfFont - Por exemplo.


Open Source & Licenciamento

Aspose.Font FOSS for Python is released under the MIT License. You can use it in O código-fonte é o código de acesso a todos os projetos pessoais, comerciais e open source sem custo. disponível no GitHub e o pacote é distribuído via PyPI como aspose-font.


Começar a Fazer

Recursos relacionados