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 | None
  • hhea — HheaTable | None
  • maxp — MaxpTable | None
  • os2 — Os2Table | None
  • name — NameTable | None
  • post — 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 — returnerar None om 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

FormatFiländelseLäsaSkriva
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.


Komma igång

Relaterade resurser