Introdução
Aspose.Font FOSS for Python is a new open-source library that gives Python developers um conjunto de ferramentas completo para trabalhar com arquivos de fontes programaticamente. Se você precisa carregar o código-fonte do seu computador, ou se é necessário que ele seja executado por uma pessoa. uma TTF para inspeção de glifos, converter um OTF em WOFF2 para entrega na web, subconfigurar uma fonte para reduzir o tamanho da carga útil, ou gerar visualizações animadas de eixos variáveis fonte, a biblioteca expõe uma API unificada e livre de dependências para todas estas tarefas.
A biblioteca é publicada no PyPI como: aspose-font sob a licença MIT. Python 3.10 ou posterior e não tem dependência de bibliotecas de renderização de fontes no nível do sistema operacional, como: Isso o torna bem adequado para ambientes de servidor sem cabeça, Sistemas de comunicação e cargas de trabalho em contêineres, onde a instalação de fontes do sistema é impraticável.
Aspose.Font FOSS v1.0.0 supports loading fonts in TTF, OTF, CFF, Type 1, WOFF, WOFF2, e formatos EOT, com capacidade de exportação para o mesmo conjunto de formatas através da FontConverter.
O que está incluído
Carregamento de fontes e acesso a metadados
A Comissão FontLoader class é o único ponto de entrada para carregamento das fontes. Call FontLoader.open() com um caminho de arquivo ou bytes cru e a biblioteca irá detectar o formato automaticamente e Retorna o objeto de fonte apropriado. Uma vez carregado, a Font A classe base dá-lhe acesso. a) para o font_name, font_family, font_style, num_glyphs, e o mapa de codificação.
from aspose_font.loader import FontLoader
font = FontLoader.open("Roboto-Regular.ttf")
print(font.font_name) # "Roboto"
print(font.font_family) # "Roboto"
print(font.num_glyphs) # number of glyphs in the font
Inspecção de glifos e acesso ao caminho
A Comissão GlyphAccessor classe permite que você procure glifos por ID de glifo ou ponto de código Unicode via get_glyph_by_id() e a) get_glyph_by_unicode().Para resolver todos os glifos para uma sequência de texto de uma vez, usar get_glyphs_for_text().Cada um . Glyph O objeto expõe o seu percurso de contorno. como uma sequência de comandos de caminho digitados MoveTo, LineTo, QuadraticTo, CurveTo, e ClosePath dando-lhe acesso a dados brutos de Bézier sem um motor de renderização.
from aspose_font.loader import FontLoader
font = FontLoader.open("OpenSans-Regular.otf")
glyph_id = font.encoding.unicode_to_gid(0x41) # Unicode code point for 'A'
glyph = font.glyph_accessor.get_glyph_by_id(glyph_id)
for cmd in glyph.path.commands:
print(type(cmd).__name__, cmd)
Subset de fonte
FontSubsetter fornece várias estratégias de subestabilização. Use subset_by_text() a) para o manter apenas os glifos necessários para uma cadeia específica, subset_by_gids() para especificar o glifo Identificações diretas, ou subset_for_web() para aplicar um pré-definido otimizado pela web que cai raramente O sistema de cálculo da taxa de deslocamento é o seguinte: analyze_coverage() O método permite-lhe inspecionar que percentagem de da fonte original que um subconjunto cobre antes de se comprometer com ela.
from aspose_font.loader import FontLoader
from aspose_font.subsetter import FontSubsetter
font = FontLoader.open("NotoSans-Regular.ttf")
# Subset to the characters needed for a Latin-script page
result = FontSubsetter.subset_by_text(font, "Hello, World!")
Optimização de fontes da Web
FontCleaner.clean_for_web() tira DSIG, FFTM e meta-tabelas e remove Mac O resultado é um binário menor. que carrega mais rápido como uma fonte web sem alterar os contornos de glifos ou métricas.
from aspose_font.loader import FontLoader
from aspose_font.cleaner import FontCleaner
font = FontLoader.open("Roboto-Regular.ttf")
cleaned = FontCleaner.clean_for_web(font)
# stripped of legacy tables; ready for WOFF2 packaging
Animação de fonte variável
Para fontes variáveis, AnimationPreviewBuilder pode gerar um APNG animado que varre um eixo de um valor inicial para um preço final. build_axis_sweep() método aceita a marcação do eixo (por exemplo,., "wdth" ou a) "wght"), um número de quadros, quadras por segundo e uma opcional bandeira de salto que inverte o sweep para criar uma animação em loop. O resultado é: é um AnimationAsset cuja write_to() O método salva o APNG no disco.
from aspose_font.loader import FontLoader
from aspose_font.animation import AnimationPreviewBuilder
font = FontLoader.open("Roboto-VariableFont_wdth,wght.ttf")
asset = AnimationPreviewBuilder.build_axis_sweep(
font,
axis_tag="wdth",
start_val=75.0,
end_val=100.0,
frames=3,
fps=10,
text="A",
size=10.0,
bounce=True,
)
asset.write_to("roboto-sweep-wdth.png")
Começo rápido
Instalar a biblioteca do PyPI:
git clone https://github.com/aspose-font-foss/Aspose.Font-FOSS-for-Python.git
cd Aspose.Font-FOSS-for-Python
pip install -e .Em seguida, carregue uma fonte e inspecione os seus metadados em algumas linhas:
from aspose_font.loader import FontLoader
font = FontLoader.open("MyFont.ttf")
print(f"Family: {font.font_family}")
print(f"Style: {font.font_style}")
print(f"Glyphs: {font.num_glyphs}")
# Look up a glyph by Unicode code point
glyph_id = font.encoding.unicode_to_gid(ord("A"))
glyph = font.glyph_accessor.get_glyph_by_id(glyph_id)
print(f"Path commands for 'A': {len(glyph.path.commands)}")
Formatos suportados
| Formatos de imagem | Extensão | Leia. | Escrever . |
|---|---|---|---|
| TTF | .ttf | ✓ | ✓ |
| OTF | .oft | ✓ | ✓ |
| CFF | .cff | ✓ | ✓ |
| TYPE1 | .pfb / .pfa | ✓ | ✓ |
| WOFF | .- Não. | ✓ | ✓ |
| WOFF2 | .woff2 | ✓ | ✓ |
| EOT | .Não. | ✓ | ✓ |
Open Source & Licenciamento
Aspose.Font FOSS for Python is published under the MIT license. You can use it in O código-fonte está disponível em: http://www.cb.org/en/comm/index_en.html no GitHub em: Aspose-font-foss/Aspose.Font-FOSS-for-Python e o pacote está disponível no PyPI como: aspose-font.