Hur man arbetar med fonttabeller i Python

Hur man arbetar med fonttabeller i Python

Denna guide visar hur man läser namngivna TTF-tabeller, hämtar råa binära tabellbyten och skriver modifierad tabelldata med TtfFont i Aspose.Font FOSS för Python. TrueType typsnitt lagrar all data i binära tabeller identifierade av 4-teckens taggar. Aspose.Font FOSS exponerar TtfTableSet för namngiven tabellåtkomst och TtfFont.get_table_bytes(tag) / TtfFont.set_table_bytes(tag, data) för rå binär åtkomst.

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 läsa in en typsnittsfil och komma åt dess tabelluppsättning:

from aspose_font import FontLoader
from aspose_font import TtfFont

Steg 3: Åtkomst till namngivna tabeller

Läs in en TTF-fil med FontLoader.open() och få åtkomst till namngivna tabeller via egenskapen ttf_tables:

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

Steg 4: Läs råa tabellbyte

Läs den råa binära datan för en specifik tabell genom att skicka dess 4-teckens-tagg till get_table_bytes():

ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
raw = ttf_font.get_table_bytes("name")
print(f"name table: {len(raw)} bytes")

Steg 5: Skriv modifierade tabellbyte

Skriv modifierad binär data tillbaka till en namngiven tabell med set_table_bytes() med taggen och byte-payloaden:

ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
modified = b"..."  # your modified binary data
ttf_font.set_table_bytes("GSUB", modified)

Vanliga problem och lösningar

AttributeError: Font has no attribute ttf_tables — ttf_tables är på TtfFont, inte basen Font klass. Använd ttf_font: TtfFont = FontLoader.open(...) för att få en typad referens.

get_table_bytes returnerar tomma byte — Taggen måste vara exakt 4 tecken (fyll med mellanslag om behövs, t.ex. "kern" not "KRN").

Vanliga frågor

Vilka namngivna tabeller exponeras på TtfTableSet?

head, hhea, maxp, os2, name, post, cmap, loca, hmtx, och kern.

Kan jag lägga till en ny tabell i ett teckensnitt?

Ja. Skicka någon giltig 4-byte tagg och byte-data till TtfFont.set_table_bytes(tag, data).

Se även

 Svenska