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 FontTypePasso 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.