Cara Bekerja dengan Font WOFF di Python

Cara Bekerja dengan Font WOFF di Python

Panduan ini menunjukkan cara memuat, memeriksa, dan mengonversi font web WOFF dan WOFF2 menggunakan Aspose.Font FOSS untuk Python. WOFF (Web Open Font Format) adalah standar untuk menyajikan font di web. WOFF 1 menggunakan kompresi zlib dan WOFF 2 menggunakan kompresi Brotli, keduanya membungkus font TrueType atau CFF yang mendasarinya. Aspose.Font FOSS memuat kedua format dan mengekspos data font internal melalui API yang bersih.

Panduan Langkah-demi-Langkah

Langkah 1: Instal Paket

Instal paket Aspose.Font FOSS menggunakan perintah di bawah ini:

git clone https://github.com/aspose-font-foss/Aspose.Font-FOSS-for-Python.git
cd Aspose.Font-FOSS-for-Python
pip install -e .

Langkah 2: Impor Kelas yang Diperlukan

Impor FontLoader, FontConverter, dan FontType untuk memuat dan mengonversi font WOFF:

from aspose_font import FontLoader
from aspose_font.converter import FontConverter  # internal API — may change between releases
from aspose_font import FontType

Langkah 3: Muat dan Periksa Font WOFF

Muat file WOFF dengan FontLoader.open() dan baca properti dasar seperti nama, keluarga, dan jumlah glif:

from aspose_font import FontLoader

woff_font = FontLoader.open("MyFont.woff")
print(f"Name: {woff_font.font_name}")
print(f"Family: {woff_font.font_family}")
print(f"Glyphs: {woff_font.num_glyphs}")
print(f"Type: {woff_font.font_type}")

Langkah 4: Baca Metadata WOFF

File WOFF mungkin berisi blok metadata XML dengan lisensi, kredit, dan deskripsi. Akses itu melalui properti metadata_xml.

from aspose_font import FontLoader

font = FontLoader.open("MyFont.woff")
# WOFF fonts may include an XML metadata block
xml = getattr(font, "metadata_xml", None)
if xml:
    print(xml)
else:
    print("No metadata in this WOFF file")

Langkah 5: Akses Tabel TTF Internal

Baik WoffFont maupun Woff2Font mengekspos properti inner_font yang memberikan TtfFont yang mendasarinya. Melalui properti itu Anda dapat mengakses semua tabel OpenType standar.

from aspose_font import FontLoader

font = FontLoader.open("MyFont.woff")
# WOFF wraps a TrueType font; access its tables via inner_font
inner = getattr(font, "inner_font")
tables = inner.ttf_tables

print(f"Units/em: {tables.head.units_per_em}")
print(f"Family name: {tables.name.best_name(1)}")

Langkah 6: Konversi TTF ke WOFF

Muat font TTF dan konversi ke format WOFF dengan mengirim FontType.WOFF ke FontConverter.convert():

from aspose_font import FontLoader
from aspose_font.converter import FontConverter  # internal API — may change between releases
from aspose_font import FontType

ttf_font = FontLoader.open("MyFont.ttf")
woff_font = FontConverter.convert(ttf_font, FontType.WOFF)
woff_bytes = woff_font.to_bytes()

from pathlib import Path
Path("MyFont.woff").write_bytes(woff_bytes)

Langkah 7: Konversi TTF ke WOFF2

Muat font TTF dan konversi ke format WOFF2 dengan mengirim FontType.WOFF2 ke FontConverter.convert():

from aspose_font import FontLoader
from aspose_font.converter import FontConverter  # internal API — may change between releases
from aspose_font import FontType

ttf_font = FontLoader.open("MyFont.ttf")
woff2_font = FontConverter.convert(ttf_font, FontType.WOFF2)
woff2_bytes = woff2_font.to_bytes()

from pathlib import Path
Path("MyFont.woff2").write_bytes(woff2_bytes)

Langkah 8: Konversi Antara WOFF dan WOFF2

Konversi file WOFF yang dimuat ke WOFF2 (atau sebaliknya) dengan mengirim target FontType ke FontConverter.convert():

from aspose_font import FontLoader
from aspose_font.converter import FontConverter  # internal API — may change between releases
from aspose_font import FontType

# WOFF -> WOFF2
woff_font = FontLoader.open("MyFont.woff")
woff2_font = FontConverter.convert(woff_font, FontType.WOFF2)

# WOFF2 -> WOFF
woff2_font = FontLoader.open("MyFont.woff2")
woff_font = FontConverter.convert(woff2_font, FontType.WOFF)

Masalah Umum dan Solusinya

FontParseException: Invalid WOFF signature — File tidak merupakan font WOFF yang valid. Pastikan file tidak rusak dan dimulai dengan byte magis WOFF.

FontParseException: WOFF table decompression failed — Tabel terkompresi di dalam file WOFF rusak. Coba unduh ulang file font.

Output WOFF2 besar — WOFF2 menggunakan kompresi Brotli yang menghasilkan file lebih kecil dibandingkan WOFF 1 (zlib). Jika output WOFF2 Anda secara tidak terduga besar, pastikan Anda memulai dari sumber TTF yang telah dioptimalkan.

Pertanyaan yang Sering Diajukan

Apa perbedaan antara WOFF dan WOFF2?

WOFF 1 menggunakan kompresi zlib dan WOFF 2 menggunakan kompresi Brotli. WOFF2 biasanya mencapai kompresi 20-30% lebih baik dibandingkan WOFF 1. Kedua-nya membungkus data font TrueType atau CFF yang mendasarinya.

Bisakah saya mengakses tabel font dari file WOFF?

Ya. Gunakan properti inner_font untuk mendapatkan TtfFont yang mendasari, kemudian akses tabel melalui inner_font.ttf_tables.

Apakah perpustakaan ini mendukung metadata WOFF?

Ya. Baik WoffFont maupun Woff2Font mengekspos properti metadata_xml yang berisi blok metadata XML opsional.

Lihat Juga

 Bahasa Indonesia