Pendahuluan

Aspose.Font FOSS untuk Python menyediakan serangkaian kelas yang koheren untuk setiap tugas manajemen font umum: memuat file font dalam berbagai format, membaca metadata dan data glif, mengonversi antar format, membuat subset untuk pengiriman web, dan membersihkan tabel biner untuk ukuran file optimal. Panduan ini membahas setiap kemampuan inti dengan contoh kode yang berfungsi yang diambil dari API yang telah diverifikasi.

Paket (aspose-font) berlisensi MIT, memerlukan Python 3.10+, dan tidak memiliki dependensi perpustakaan font tingkat OS. Instal dengan pip install aspose-font>=1.0.0.


Fitur Utama

Memuat Font dengan FontLoader

FontLoader adalah satu-satunya titik masuk untuk semua operasi pemuatan font. Metode statis open() menerima jalur file (str atau Path) dan secara otomatis mendeteksi format. Metode load() menerima byte mentah untuk alur kerja dalam memori. Keduanya mengembalikan objek bertipe Font yang dapat Anda inspeksi langsung.

from aspose_font.loader import FontLoader

# Load from file path — format detected automatically
font = FontLoader.open("Roboto-Regular.ttf")

# Load from raw bytes (e.g., from a network request or database blob)
with open("OpenSans-Regular.otf", "rb") as f:
    font_bytes = f.read()
font = FontLoader.load(font_bytes)

Membaca Metadata Font melalui Kelas Dasar Font

Setelah dimuat, kelas dasar Font mengekspos properti metadata standar tanpa mengharuskan Anda mengurai tabel font biner. Properti font_name, font_family, font_style, dan num_glyphs mencakup kebutuhan metadata yang paling umum.

from aspose_font.loader import FontLoader

font = FontLoader.open("NotoSans-Regular.ttf")
print(f"Name:   {font.font_name}")
print(f"Family: {font.font_family}")
print(f"Style:  {font.font_style}")
print(f"Glyphs: {font.num_glyphs}")

Pengkodean Glyph dan Akses

FontEncoding memetakan titik kode Unicode ke ID glyph. Gunakan unicode_to_gid() untuk titik kode tunggal atau get_all_codepoints() untuk menyebutkan seluruh cakupan font. GlyphAccessor kemudian mengambil objek glyph berdasarkan ID melalui get_glyph_by_id(), berdasarkan Unicode melalui get_glyph_by_unicode(), atau untuk string teks melalui get_glyphs_for_text().

from aspose_font.loader import FontLoader

font = FontLoader.open("OpenSans-Regular.otf")

# Map Unicode code point to glyph ID
glyph_id = font.encoding.unicode_to_gid(0x41)  # 'A'
print(f"Glyph ID for 'A': {glyph_id}")

# Retrieve glyph object
glyph = font.glyph_accessor.get_glyph_by_id(glyph_id)

# Inspect path commands
for cmd in glyph.path.commands:
    print(type(cmd).__name__, cmd)

Konversi Font dengan FontConverter

FontConverter.convert() mengonversi font yang dimuat antara format yang didukung. Berikan font sumber dan pengidentifikasi format target untuk mendapatkan objek font baru dalam format target. Metode ini menangani CFF, TTF, WOFF, WOFF2, EOT, dan Type 1 baik sebagai sumber maupun target.

from aspose_font.loader import FontLoader
from aspose_font.converter import FontConverter

source = FontLoader.open("MyFont.ttf")
converted = FontConverter.convert(source, target_format="woff2")

Optimisasi Web dengan FontCleaner

FontCleaner.clean_for_web() menghapus tabel biner yang tidak diperlukan untuk pengiriman font web — khususnya DSIG, FFTM, dan meta — serta menghapus catatan nama platform Mac (platform_id=1) dari tabel name. Hasilnya adalah biner yang lebih ramping yang mengurangi beban jaringan tanpa menyentuh outline atau metrik. Argumen kata kunci opsional memungkinkan Anda mempertahankan tipe tabel tertentu jika diperlukan.

from aspose_font.loader import FontLoader
from aspose_font.cleaner import FontCleaner

font = FontLoader.open("Roboto-Regular.ttf")

# Strip all legacy tables and Mac name records (default)
cleaned = FontCleaner.clean_for_web(font)

# Preserve specific metadata tables if required
cleaned_selective = FontCleaner.clean_for_web(
    font,
    drop_metadata_tables=False,
    drop_legacy_tables=True,
    drop_mac_names=True,
)

Inspeksi Jalur Glyph

Setiap objek Glyph mengekspos konturnya sebagai GlyphPath yang urutan commands-nya berisi instance yang bertipe MoveTo, LineTo, QuadraticTo, CurveTo, dan ClosePath. Setiap perintah membawa atribut koordinat yang relevan — misalnya, CurveTo memiliki x1, y1, x2, y2, x, y — memungkinkan Anda mengekstrak data Bézier mentah untuk rendering, pembuatan SVG, atau geometri tabrakan.

from aspose_font.loader import FontLoader
from aspose_font import CurveTo, LineTo

font = FontLoader.open("OpenSans-Regular.otf")
glyph_id = font.encoding.unicode_to_gid(ord("A"))
glyph = font.glyph_accessor.get_glyph_by_id(glyph_id)

curves = [cmd for cmd in glyph.path.commands if isinstance(cmd, CurveTo)]
print(f"Cubic Bezier segments in 'A': {len(curves)}")

Mulai Cepat

git clone https://github.com/aspose-font-foss/Aspose.Font-FOSS-for-Python.git
cd Aspose.Font-FOSS-for-Python
pip install -e .
from aspose_font.loader import FontLoader
from aspose_font.cleaner import FontCleaner

# Load, inspect, and clean a font in five lines
font = FontLoader.open("MyFont.ttf")
print(font.font_family, font.num_glyphs, "glyphs")
cleaned = FontCleaner.clean_for_web(font)
print("Font cleaned for web delivery")

Format yang Didukung

FormatEkstensiBacaTulis
TTF.ttf✓✓
OTF.otf✓✓
CFF.cff✓✓
TYPE1.pfb / .pfa✓✓
WOFF.woff✓✓
WOFF2.woff2✓✓
EOT.eot✓✓

Sumber Terbuka & Lisensi

Aspose.Font FOSS untuk Python berlisensi MIT. Kode sumber berada di GitHub pada aspose-font-foss/Aspose.Font-FOSS-for-Python dan paketnya ada di PyPI sebagai aspose-font.


Memulai

Sumber Daya Terkait