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 imagemExtensãoLeia.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.


Começar a Fazer

Recursos relacionados