Hur man arbetar med TTF-teckensnitt i Python

Hur man arbetar med TTF-teckensnitt i Python

Denna guide visar hur man laddar TTF-teckensnitt, inspekterar TtfFont egenskaper, läser tabeller, instansierar variabla teckensnitt och konverterar till andra format med Aspose.Font FOSS för Python. TrueType teckensnitt (.ttf) är det vanligaste teckensnittsformatet. Aspose.Font FOSS laddar dem som TtfFont instanser, vilket ger åtkomst till tabeller, variabla teckensnittsaxlar, glyph data och konverteringsverktyg.

Steg-för-steg-guide

Steg 1: Installera paketet

Installera Aspose.Font FOSS-paketet med kommandot nedan:

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

Steg 2: Importera nödvändiga klasser

Importera FontLoader och TtfFont för att ladda ett TTF-typsnitt och komma åt dess typade egenskaper:

from aspose_font import FontLoader
from aspose_font import TtfFont

Steg 3: Ladda och inspektera ett TTF-typsnitt

Ladda en TTF-fil med FontLoader.open() och läs grundläggande egenskaper såsom namn, familj och teckenantal:

ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
print(ttf_font.font_name)
print(ttf_font.font_family)
print(ttf_font.num_glyphs)

Steg 4: Läs kern-tabellen

Kom åt egenskapen ttf_tables och kontrollera om kern-tabellen finns genom namn:

ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
kern = ttf_font.ttf_tables.kern
print("kern present:", kern is not None)

Steg 5: Instansiera ett variabeltypsnitt

Ladda en variabeltypsnittfil, kontrollera is_variable och anropa instantiate() med en axeldictionary för att skapa en statisk instans:

from aspose_font import FontLoader
from aspose_font import TtfFont

ttf_font: TtfFont = FontLoader.open("Roboto-VariableFont_wdth,wght.ttf")
if ttf_font.is_variable:
    static = ttf_font.instantiate({"wght": 700.0})
    print("Instantiated:", static.font_name)

Steg 6: Konvertera till WOFF2

Konvertera ett inläst TTF-typsnitt till WOFF2-format genom att skicka FontType.WOFF2 till FontConverter.convert():

from aspose_font import FontLoader
from aspose_font.converter import FontConverter  # internal API — may change between releases
from aspose_font import FontType

font = FontLoader.open("Roboto-Regular.ttf")
woff2 = FontConverter.convert(font, FontType.WOFF2)

Vanliga problem och lösningar

AttributeError: Font has no attribute ttf_tables — Använd ttf_font: TtfFont = FontLoader.open(...). Den ttf_tables egenskapen är på TtfFont, inte basen Font.

is_variable är falskt på ett variabeltypsnitt — Vissa variabeltypsnitt använder ett icke-standard fvar tabellformat. Kontrollera ttf_font.fvar is not None som ett alternativ.

instantiate() raises KeyError — Axis-taggen måste vara en registrerad 4-tecken-tagg (t.ex. "wght", "wdth"). Kontrollera ttf_font.axes för tillgängliga taggar.

Vanliga frågor

Vad är skillnaden mellan TTF och OTF?

OTF och TTF delar samma binära behållare (SFNT). OTF-teckensnitt använder vanligtvis CFF-konturer medan TTF-teckensnitt använder TrueType kvadratiska kurvor. Båda laddas av FontLoader.open().

Kan jag få kerningpar från ett TTF-typsnitt?

Ja. Använd TtfFont.get_kern_pairs() för att få en lista över KernPair objekt.

Stöder biblioteket teckensnittssamlingar (.ttc)?

Ja. Använd FontLoader.open(source, collection_index=N) för att välja ett specifikt teckensnitt från en TTC-samlingsfil.

Se även

 Svenska