Introduktion
TrueType typsnitt (.ttf) och deras OpenType superset (.otf) är de dominerande teckensnittsformaten på moderna operativsystem. Båda formaten delar samma binära tabellstruktur som är baserad på OpenType-specifikationen. Aspose.Font FOSS för Python exponerar denna struktur via TtfFont, vilket ger direkt åtkomst till enskilda OpenType tabeller, kerningpar-data, variabla teckensnittaxlar och glyfkonturer.
Klassen TtfFont utökar basklassen Font med TTF-specifika metoder inklusive get_blob, get_table_bytes, set_table_bytes och instantiate för låsning av variabla teckensnittsaxlar. Egenskapen TtfTableSet (ttf_tables) ger typad åtkomst till de vanligaste OpenType-tabellerna: head, hhea, maxp, os2, name, post.
Biblioteket publiceras på PyPI som aspose-font och är licensierat under MIT-licensen. Det har inga obligatoriska kommersiella beroenden.
Viktiga funktioner
Laddning av TTF- och OTF-typsnitt
Använd FontLoader.open för att ladda vilken TrueType eller OpenType typsnittfil som helst:
from aspose_font import FontLoader
loaded = FontLoader.open("fonts/Roboto-Regular.ttf")
print(loaded.font_name)
print(loaded.font_family)
print(loaded.font_style)
print(loaded.num_glyphs)
FontLoader.open upptäcker teckensnittsformatet från filhuvudet. Både .ttf (TrueType) och .otf (OpenType CFF) filer stöds och båda returnerar en TtfFont instans.
Åtkomst till OpenType-tabeller via TtfTableSet
Egenskapen ttf_tables returnerar en TtfTableSet med typade åtkomstmetoder för vanliga OpenType-tabeller. Varje egenskap returnerar tabellobjektet eller None om det saknas:
Egenskapen ttf_tables på TtfFont returnerar en TtfTableSet-instans. Tillgängliga tabellåtkomstmetoder:
head—HeadTable | Nonehhea—HheaTable | Nonemaxp—MaxpTable | Noneos2—Os2Table | Nonename—NameTable | Nonepost—PostTable | None
Varje egenskap returnerar tabellobjektet eller None om den tabellen inte finns i teckensnittsfilen. Åtkom TtfTableSet egenskaper för att kontrollera specifika tabeller innan du läser dem. För tabeller som inte täcks av namngivna åtkomstmetoder, använd TtfTableSet.get_raw(tag) för att hämta råa byte via fyrtecken OpenType tagg.
Läsa råa tabellbyte
get_table_bytes(tag) returnerar de råa byten för vilken OpenType tabell som helst. Använd get_blob(tag) för en None-säker variant som returnerar None när tabellen saknas:
TtfFont tillhandahåller två metoder för rå tabellåtkomst:
get_table_bytes(tag) -> bytes— returnerar de råa byten för en namngiven tabell (kastar om den saknas)get_blob(tag) -> bytes | None— returnerarNoneom tabellen saknas (säker variant)
Båda metoderna accepterar en fyrabokstavs OpenType tabelltagg såsom "cmap", "GDEF" eller "GPOS". Använd get_blob när en tabell är valfri så att du kan kontrollera None innan du behandlar den.
Kernpar
get_kern_pairs() returnerar alla kernpar som är kodade i teckensnittet. Varje KernPair har left (GlyphId), right (GlyphId) och value (int i teckensnittsenheter):
from aspose_font import FontLoader
loaded = FontLoader.open("fonts/Roboto-Regular.ttf")
pairs = loaded.get_kern_pairs()
print(f"Kern pairs: {len(pairs)}")
for pair in pairs[:5]:
print(f" Left: {pair.left} Right: {pair.right} Value: {pair.value}")
Typsnittsmått
Standardmått är tillgängliga via egenskapen metrics:
from aspose_font import FontLoader
loaded = FontLoader.open("fonts/Roboto-Regular.ttf")
metrics = loaded.metrics
print(f"Units per em : {metrics.units_per_em}")
print(f"Ascender : {metrics.ascender}")
print(f"Descender : {metrics.descender}")
print(f"Line gap : {metrics.line_gap}")
print(f"Underline pos : {metrics.underline_position}")
Stöd för variabla teckensnitt
För variabla teckensnitt exponerar TtfFont is_variable, variable_axes och named_instances. Använd get_axis(tag) för att hämta en specifik axel via dess fyrabokstavs-tagg:
from aspose_font import FontLoader
loaded = FontLoader.open("fonts/RobotoFlex.ttf")
print(f"Is variable: {loaded.is_variable}")
print(f"Axes : {len(loaded.variable_axes)}")
Metoden get_axis(tag) på TtfFont hämtar ett VariableAxis via dess fyrabokstavs-tagg (t.ex. "wght" för vikt, "wdth" för bredd). Den returnerar None om axeln inte finns i teckensnittets fvar-tabell.
Konvertera teckensnitt
to_bytes(font_type) konverterar teckensnittet till ett annat format. Använd FontType enum för att specificera målet:
from aspose_font import FontLoader, FontType
loaded = FontLoader.open("fonts/Roboto-Regular.ttf")
ttf_bytes = loaded.to_bytes(FontType.TTF)
with open("output/Roboto-copy.ttf", "wb") as fh:
fh.write(ttf_bytes)
print(f"Serialized: {len(ttf_bytes)} bytes")
Snabbstart
Installera biblioteket:
.venv/bin/pip install aspose-font
Läs in ett TTF-teckensnitt och inspektera det:
from aspose_font import FontLoader, FontType
loaded = FontLoader.open("Roboto-Regular.ttf")
print(f"Font name : {loaded.font_name}")
print(f"Family : {loaded.font_family}")
print(f"Glyphs : {loaded.num_glyphs}")
print(f"Variable : {loaded.is_variable}")
metrics = loaded.metrics
print(f"UPM : {metrics.units_per_em}")
ttf_bytes = loaded.to_bytes(FontType.TTF)
print(f"Serialized: {len(ttf_bytes)} bytes")
Stödda format
| Format | Filändelse | Läsa | Skriva |
|---|---|---|---|
| TTF | .ttf | ✓ | — |
| OTF | .otf | ✓ | — |
| EOT | .eot | ✓ | — |
| CFF | .cff | ✓ | — |
| TYPE1 | .pfb/.pfa | ✓ | — |
| WOFF | .woff | ✓ | — |
| WOFF2 | .woff2 | ✓ | — |
Alla format laddas via FontLoader.open. TTF/OTF-teckensnitt returnerar en TtfFont-instans.
Öppen källkod & licensiering
Aspose.Font FOSS för Python är släppt under MIT-licensen. Du kan använda den i personliga, kommersiella och öppen källkod-projekt utan kostnad. Källkoden finns tillgänglig på GitHub och paketet distribueras via PyPI som aspose-font.