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 TtfFontSteg 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).