Introduction

File font terstruktur di sekitar tabel setiap tabel menyimpan kategori data tertentu seperti garis besar glif, pemetaan karakter, metadata penamaan, atau metrik horizontal. Memahami dan mengakses tabel ini sangat penting untuk tugas-tugas seperti analisis font, pengeditan metada, jaminan kualitas, dan konversi format.

Aspose.Font FOSS for Python (aspose-font) memberi Anda akses langsung ke seluruh tabel OpenType dan TrueTyme melalui API Python yang bersih. Perpustakaan ini dirilis di bawah lisensi MIT dengan nol ketergantungan eksternal, sehingga Anda dapat mengintegrasikannya ke dalam proyek apa pun tanpa masalah perizinan.

Pos ini berjalan melalui kelas tabel kunci yang tersedia di perpustakaan dari membaca metadata header untuk memeriksa data glyph dan memodifikasi catatan nama ?? semua didukung oleh TtfTableSet wadah pada TtfFont.


Fitur Utama

Mengisi Font dan Akses Tabel

Setiap font yang dimuat dengan FontLoader mengekspresikan tabel yang diuraikan melalui ttf_tables properti pada TtfFont.- Aku tidak tahu. TtfTableSet objek menyediakan akses diketik ke setiap tabel standar, ditambah akses byte mentah melalui get_raw() untuk tabel khusus atau tidak dikenali.

import aspose_font

font = aspose_font.FontLoader.open("MyFont.ttf")
tables = font.ttf_tables

# Typed table access
head = tables.head
name = tables.name
cmap = tables.cmap

# Raw bytes for any table tag
raw_os2 = tables.get_raw("OS/2")

Membaca Head Table

Pengelolaan HeadTable menyimpan parameter font-wide dasar: unit per em, revisi, kotak batas, tanggal penciptaan, dan bendera gaya. Nilai ini sangat penting untuk mesin rendering dan validator font.

import aspose_font

font = aspose_font.FontLoader.open("MyFont.ttf")
head = font.ttf_tables.head

print(f"Units per em: {head.units_per_em}")
print(f"Revision: {head.font_revision}")
print(f"Bounding box: ({head.x_min}, {head.y_min}) to ({head.x_max}, {head.y_max})")
print(f"Mac style flags: {head.mac_style}")
print(f"Glyph data format: {head.glyph_data_format}")

Bekerja dengan tabel nama

Pengelolaan NameTable Anda dapat menanyakan catatan dengan nama ID, mengambil nama lokal, atau memodifikasi entri untuk rebranding.

import aspose_font

font = aspose_font.FontLoader.open("MyFont.ttf")
name_table = font.ttf_tables.name

# Read the font family name (name ID 1)
family = name_table.best_name(1, ["en"])
print(f"Family: {family}")

# List all localized versions of the full name (name ID 4)
localized = name_table.localized_names(4)
for lang, value in localized.items():
    print(f"  {lang}: {value}")

# Replace the font family name
name_table.replace_name(1, "MyCustomFamily")

Memeriksa Tabel CMap

Pengelolaan CmapTable memetakan kode Unicode ke ID glyph. Ini mungkin berisi beberapa subtabel untuk platform yang berbeda dan kombinasi pengkodean. Gunakan best_subtable() untuk mendapatkan pemetaan yang paling cocok untuk kasus penggunaan Anda.

import aspose_font

font = aspose_font.FontLoader.open("MyFont.ttf")
cmap = font.ttf_tables.cmap

# Get the best Unicode subtable
subtable = cmap.best_subtable()
print(f"Platform: {subtable.platform_id}, Encoding: {subtable.encoding_id}")

# Look up the glyph ID for 'A'
gid = subtable.get_gid(ord("A"))
print(f"Glyph ID for 'A': {gid}")

Membaca OS/2 dan Metrik Horizontal

Pengelolaan Os2Table menyediakan metrik OS/2 dan Windows-spesifik termasuk tipografi naik/turun, embedding flags, dan klasifikasi Panose. HheaTable dan (b) HmtxTable menyediakan metrik tata letak horizontal yang digunakan untuk membentuk teks.

import aspose_font

font = aspose_font.FontLoader.open("MyFont.ttf")
os2 = font.ttf_tables.os2
hhea = font.ttf_tables.hhea

print(f"Typo ascender: {os2.s_typo_ascender}")
print(f"Typo descender: {os2.s_typo_descender}")
print(f"Embedding flags (fsType): {os2.fs_type}")
print(f"Panose: {os2.panose.hex()}")

print(f"Hhea ascender: {hhea.ascender}")
print(f"Max advance width: {hhea.advance_width_max}")
print(f"Number of hmetrics: {hhea.number_of_hmetrics}")

Kerning dan Glyph Data

Pengelolaan KernTable menyimpan pasangan kerning untuk penyesuaian jarak horizontal. GlyfTable berisi data garis besar glyph aktual untuk font TrueType. Anda juga dapat menggunakan PostTable untuk memecahkan nama-nama glyph.

import aspose_font

font = aspose_font.FontLoader.open("MyFont.ttf")

# Kerning lookup
kern = font.ttf_tables.kern
if kern:
    pairs = kern.pairs
    print(f"Total kern pairs: {len(pairs)}")
    # Look up a specific pair by glyph IDs
    adjustment = kern.get(36, 57)
    print(f"Kern adjustment: {adjustment}")

# Glyph name from post table
post = font.ttf_tables.post
if post:
    glyph_name = post.glyph_name(0)
    print(f"Glyph 0 name: {glyph_name}")

Memulai dengan cepat

pip install aspose-font>=1.0.0
import aspose_font

# Load any TTF or OTF font
font = aspose_font.FontLoader.open("MyFont.ttf")
tables = font.ttf_tables

# Print basic table info
print(f"Font: {font.font_name}")
print(f"Family: {font.font_family}")
print(f"Glyphs: {font.num_glyphs}")
print(f"Units/em: {tables.head.units_per_em}")

# Read name table entries
name_table = tables.name
for name_id in [0, 1, 2, 4, 5, 6]:
    value = name_table.best_name(name_id, ["en"])
    if value:
        print(f"  Name ID {name_id}: {value}")

# Check character coverage
cmap = tables.cmap
subtable = cmap.best_subtable()
for char in "ABCabc012":
    gid = subtable.get_gid(ord(char))
    print(f"  '{char}' -> glyph {gid}")

Format yang Didhukung

FormatExtensionReadWrite
TTF.ttf
OTF.of
CFF.cff
WOFF.- Aku tahu.
WOFF2. woff2
EOT.eot
TYPE1.pfb/.pfa

Open Source & Lisensi

Aspose.Font FOSS for Python is released under the MIT license. The source code is available on GitHub and the package is published on PyPI as aspose-font.Anda bebas untuk menggunakannya, mengubahnya, dan mendistribusikannya dalam proyek pribadi maupun komersial tanpa batasan.


Memulai

Sumber Daya terkait