Introducere

Aspose.Font FOSS for Python is a new open-source library that gives Python developers un set complet de instrumente pentru a lucra cu fișierele font programatic. Dacă aveți nevoie să încărcați un TTF pentru inspecția glifului, convertiți o OTF în WOFF2 pentru livrarea pe web, subsetul unui font la reduce dimensiunea de sarcină utilă, sau genera vizualizări animate ale axelor variabile font, biblioteca expune un API unificat, fără dependențe pentru toate aceste sarcini.

Biblioteca este publicată pe PyPI ca: aspose-font În baza licenţei MIT. Python 3.10 sau mai târziu și nu are dependență de bibliotecile de renderizare a fonturilor la nivelul OS, cum ar fi: Acest lucru îl face foarte potrivit pentru mediile de server fără cap, conducte CI și încărcături de lucru containerizate, unde instalarea fonturilor sistemului este nepraticabilă.

Aspose.Font FOSS v1.0.0 supports loading fonts in TTF, OTF, CFF, Type 1, WOFF, WOFF2, și formatele EOT, cu posibilitatea exportului în același set de formate prin intermediul FontConverter.


Ce înseamnă?

Încărcarea fontului și accesul la metadate

În ceea ce priveşte FontLoader class este punctul de intrare unic pentru încărcarea fonturilor. Call FontLoader.open() cu o cale de fişier sau baţi crude şi biblioteca va detecta formatul automat şi returnarea obiectului de font corespunzător. Odată încărcat, Font clasa de bază vă oferă acces la la … în font_name, font_family, font_style, num_glyphs, şi harta de codificare.

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ția glifului și accesul la cale

În ceea ce priveşte GlyphAccessor clasa vă permite să căutați glifele de către identificatorul glyph sau punctul de cod Unicode prin intermediul get_glyph_by_id() și de: get_glyph_by_unicode().Pentru a rezolva toate glifele pentru o serie de … textul deodată, folosiți get_glyphs_for_text().Fiecare . Glyph Obiectul îşi expune traseul de contur. ca o secvență de comenzi tipate MoveTo, LineTo, QuadraticTo, CurveTo, și ClosePath oferindu-vă acces la datele brute Bézier fără un motor de rendering.

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)

Subsetarea fontului

FontSubsetter oferă mai multe strategii de subsetare. subset_by_text() la … în să păstreze numai glifele necesare pentru un șir specific, subset_by_gids() pentru a specifica glif ID-uri direct, sau subset_for_web() să aplice un preset optimizat pentru web care cade rar. utilizate glife şi tabele. analyze_coverage() metoda vă permite să verificați ce procent de de font original o subset acoperă înainte de a se angaja la ea.

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!")

Optimizarea fontului web

FontCleaner.clean_for_web() strips DSIG, FFTM și meta tabele și elimină Mac Înregistrări de nume platforme din tabelul numelor fontului. Rezultatul este un binar mai mic care se încarcă mai repede ca un font web fără a schimba contoarele glifului sau metricile.

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ții cu fonturi variabile

Pentru fonturi variabile, AnimationPreviewBuilder poate genera un APNG animat care să mătură o axă de la valoarea inițială la cea finală. build_axis_sweep() metoda acceptă eticheta axului (de exemplu,., "wdth" sau de: "wght"), un număr de cadre, cadrele pe secundă și o opțional steag de bounce care inversează sweep pentru a crea o animație buclă. Rezultatul este o AnimationAsset care au: write_to() metoda salvează APNG pe disc.

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")

Început rapid

Instalați biblioteca de pe PyPI:

git clone https://github.com/aspose-font-foss/Aspose.Font-FOSS-for-Python.git
cd Aspose.Font-FOSS-for-Python
pip install -e .

Apoi încărcați un font și inspectați metadatele sale în câteva linii:

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)}")

Formatele suportate

FormatulExtindereCiteşte.Scrie .
TTF.ttf✓✓
OTF.de la✓✓
CFF.cff✓✓
TYPE1.pfb / .pfa✓✓
WOFF.- Ce ?✓✓
WOFF2.woff2 (în limba engleză)✓✓
EOT.Nu.✓✓

Open Source & Licențiere

Aspose.Font FOSS for Python is published under the MIT license. You can use it in Proiectele comerciale, modificarea și distribuirea gratuită. pe GitHub la: Aspose-font-foss/Aspose.Font-FOSS-for-Python şi pachetul este disponibil pe PyPI ca aspose-font.


Cum să începem?

Resurse conexe