Como trabalhar com fontes WOFF em Python

Como trabalhar com fontes WOFF em Python

Este guia mostra como carregar, inspecionar e converter WOFF e WOff2 fontes web usando Aspose.Font FOSS para Python. O WOF (Web Open Font Format) é o padrão para entregar fontes na Web. WOFL 1 usa compressão zlib e 2 utiliza comprissão Brotli, ambos envolvendo uma fonte subjacente TrueType ou CFF. Aspose.Font Foss carrega os dois formatos e expõe os dados da fonte interna através de um API limpo.

Guia passo a passo

Passo 1: Instalar o pacote

Instale o pacote Aspose.Email FOSS a partir do PyPI usando o comando pip abaixo:

pip install "aspose-font>=1.0.0"

Passo 2: Importar as classes necessárias

Importação FontLoader, FontConverter, e FontType para carregar e converter fontes WOFF:

from aspose_font.loader import FontLoader
from aspose_font.converter import FontConverter
from aspose_font import FontType

Passo 3: Carregar e inspecionar uma fonte WOFF

Carregar um arquivo WOFF com FontLoader.open() e ler propriedades básicas como nome, família e contagem de glifos:

from aspose_font.loader import FontLoader

woff_font = FontLoader.open("MyFont.woff")
print(f"Name: {woff_font.font_name}")
print(f"Family: {woff_font.font_family}")
print(f"Glyphs: {woff_font.num_glyphs}")
print(f"Type: {woff_font.font_type}")

Passo 4: Leia os metadados WOFF

Os arquivos WOFF podem conter um bloco de metadados XML com licenças, créditos e Acesso através do site: http://www.cdp.org/en-mail metadata_xml propriedade.

from aspose_font.loader import FontLoader

font = FontLoader.open("MyFont.woff")
# WOFF fonts may include an XML metadata block
xml = getattr(font, "metadata_xml", None)
if xml:
    print(xml)
else:
    print("No metadata in this WOFF file")

Passo 5: Acesso às tabelas TTF internas

Ambos. WoffFont e a) Woff2Font exposição de um inner_font propriedade que dá Você é o subjacente. TtfFont.Através dela , pode aceder a todos os padrões . Tabelas OpenType.

from aspose_font.loader import FontLoader

font = FontLoader.open("MyFont.woff")
# WOFF wraps a TrueType font; access its tables via inner_font
inner = getattr(font, "inner_font")
tables = inner.ttf_tables

print(f"Units/em: {tables.head.units_per_em}")
print(f"Family name: {tables.name.best_name(1)}")

Passo 6: Converter TTF para WOFF

Carregar uma fonte TTF e convertê-la para o formato WOFF passando FontType.WOFF a) para o FontConverter.convert():

from aspose_font.loader import FontLoader
from aspose_font.converter import FontConverter
from aspose_font import FontType

ttf_font = FontLoader.open("MyFont.ttf")
woff_font = FontConverter.convert(ttf_font, FontType.WOFF)
woff_bytes = woff_font.to_bytes()

from pathlib import Path
Path("MyFont.woff").write_bytes(woff_bytes)

Etapa 7: Converter TTF para WOFF2

Carregar uma fonte TTF e convertê-la para o formato WOFF2 passando FontType.WOFF2 a) para o FontConverter.convert():

from aspose_font.loader import FontLoader
from aspose_font.converter import FontConverter
from aspose_font import FontType

ttf_font = FontLoader.open("MyFont.ttf")
woff2_font = FontConverter.convert(ttf_font, FontType.WOFF2)
woff2_bytes = woff2_font.to_bytes()

from pathlib import Path
Path("MyFont.woff2").write_bytes(woff2_bytes)

Passo 8: Converter entre WOFF e WOff2

Converter um arquivo WOFF carregado para WOff2 (ou vice-versa) passando o alvo FontType a) para o FontConverter.convert():

from aspose_font.loader import FontLoader
from aspose_font.converter import FontConverter
from aspose_font import FontType

# WOFF -> WOFF2
woff_font = FontLoader.open("MyFont.woff")
woff2_font = FontConverter.convert(woff_font, FontType.WOFF2)

# WOFF2 -> WOFF
woff2_font = FontLoader.open("MyFont.woff2")
woff_font = FontConverter.convert(woff2_font, FontType.WOFF)

Problemas comuns e soluções

FontParseException: Invalid WOFF signature O ficheiro não é um WOFF válido. Verifique se o arquivo não está corrompido e começa com os bytes mágicos WOFF.

FontParseException: WOFF table decompression failed Uma mesa comprimida Tente baixar novamente o arquivo de fonte.

A saída WOFF2 é grande. O WOFF2 utiliza a compressão de Brotli que produz uma pressão mais pequena. Se a sua saída WOFF2 for inesperadamente grande, certifique-se de que o seu sistema operacional não é muito rápido. Você está começando a partir de uma fonte TTF otimizada.

Perguntas Frequentes

Qual é a diferença entre WOFF e WOff2?

WOFF 1 usa compressão zlib e WOff 2 utiliza comprissão Brotli. O WOF2 tipicamente atinge 20-30% melhor compressa do que o WOFC 1. Ambos envolvem os mesmos dados de fonte subjacentes TrueType ou CFF.

Posso acessar tabelas de fontes a partir de um arquivo WOFF?

Sim, usa o… inner_font propriedade para obter o subjacente TtfFont,Então … Tabelas de acesso via: inner_font.ttf_tables.

A biblioteca suporta os metadados WOFF?

Sim, as duas. WoffFont e a) Woff2Font expõe um metadata_xml propriedade contendo o bloco de metadados XML opcional.

Ver também:

 Português