วิธีการทํางานกับ WOFF Font ใน Python

วิธีการทํางานกับ WOFF Font ใน Python

คู่มือนี้แสดงวิธีการอัตราบรรจุ, ตรวจสอบและแปลง WOFF และ WOff2 เว็บฟอนต์โดยใช้ Aspose.Font FOSS สําหรับ Python. WOF (เว็บเปิดรูปแบบ Font) เป็นมาตรฐานสําหรับการส่งมอบตัวอักษรในเว็ป. โวฟ 1 ใช้ zlib การกดแบนและ WOFC 2 ใช้ Brotli การคอมเพชั่น ทั้งสองกลมพื้นฐาน TrueType หรือ CFF แท้. Aspose.Font FosS อัตถุดันทั้งรูป แบบและเผยแพร่ข้อมูลของตัวลอกภายในผ่าน API ที่สะอาด.

คู่มือขั้นตอนตามขั้นตอนนี้

ขั้นตอนที่ 1: ติดตั้งแพคเกจ

ติดตั้งแพคเกจ Aspose.Font FOSS จาก PyPI โดยใช้คําสั่ง pip ด้านล่างนี้:

pip install "aspose-font>=1.0.0"

ขั้นตอนที่ 2: นําเข้าชั้นเรียนที่จําเป็น

Import FontLoader, FontConverter,และ FontType เพื่ออัตราการโหลดและแปลงตัวอักษร WOFF:

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

ขั้นตอนที่ 3: อัตราบรรจุและตรวจสอบ WOFF Font

อัตราการอัดไฟล์ WOFF ด้วย FontLoader.open() และอ่านคุณสมบัติพื้นฐาน เช่น ชื่อ, ครอบครัวและจํานวน glyph:

from aspose_font.loader 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}")

ขั้นตอนที่ 4: อ่าน WOFF เมตาเดท่า

ไฟล์ WOFF อาจมีบล็อกเมตาเดท่า XML พร้อมการอนุญาต, หลักฐานและ การเข้าถึงมันผ่านการใช้งานของ metadata_xml ของตนเอง.

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”)


### ขั้นตอน 5: เข้าสู่ตาราง TTF ภายใน

Both `WoffFont` และ `Woff2Font` เผยแพร่ `inner_font` อสังหาริมทรัพย์ที่ให้ คุณที่อยู่เบื้องหลัง `TtfFont`.ผ่านมัน คุณสามารถเข้าถึงทุกมาตรฐาน ตาราง OpenType.

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)}")

<button class=“hextra-code-copy-btn hx-group/copybtn hx-transition-all active:hx-opacity-50 hx-bg-primary-700/5 hx-border hx-border-black/5 hx-text-gray-600 hover:hx-text-gray-900 hx-rounded-md hx-p-1.5 dark:hx-bg-primary-300/10 dark:hx-border-white/10 dark:hx-text-gray-400 dark:hover:hx-text-gray-50” title=“Copy code”

<div class="copy-icon group-[.copied]/copybtn:hx-hidden hx-pointer-events-none hx-h-4 hx-w-4"></div>
<div class="success-icon hx-hidden group-[.copied]/copybtn:hx-block hx-pointer-events-none hx-h-4 hx-w-4"></div>

ขั้นตอนที่ 6: เปลี่ยน TTF เป็น WOFF

อัตราการอัดตัว TTF และแปลงเป็นรูปแบบ WOFF โดยการส่ง FontType.WOFF ไปยัง FontConverter.convert():

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)


### ขั้นตอน 7: เปลี่ยน TTF เป็น WOFF2

อัตราการอัดตัว TTF และแปลงเป็นรูปแบบ WOFF2 โดยผ่าน `FontType.WOFF2` ไปยัง `FontConverter.convert()`:

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)

<button class=“hextra-code-copy-btn hx-group/copybtn hx-transition-all active:hx-opacity-50 hx-bg-primary-700/5 hx-border hx-border-black/5 hx-text-gray-600 hover:hx-text-gray-900 hx-rounded-md hx-p-1.5 dark:hx-bg-primary-300/10 dark:hx-border-white/10 dark:hx-text-gray-400 dark:hover:hx-text-gray-50” title=“Copy code”

<div class="copy-icon group-[.copied]/copybtn:hx-hidden hx-pointer-events-none hx-h-4 hx-w-4"></div>
<div class="success-icon hx-hidden group-[.copied]/copybtn:hx-block hx-pointer-events-none hx-h-4 hx-w-4"></div>

ขั้นตอน 8: แปลงระหว่าง WOFF และ WOff2

เปลี่ยนไฟล์ WOFF ที่ถูกอัตราการโหลดเป็น WOff2 (หรือตรงข้าม) โดยการส่งเป้าหมายไป FontType ไปยัง FontConverter.convert():

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)

<button class=“hextra-code-copy-btn hx-group/copybtn hx-transition-all active:hx-opacity-50 hx-bg-primary-700/5 hx-border hx-border-black/5 hx-text-gray-600 hover:hx-text-gray-900 hx-rounded-md hx-p-1.5 dark:hx-bg-primary-300/10 dark:hx-border-white/10 dark:hx-text-gray-400 dark:hover:hx-text-gray-50” title=“Copy code”

<div class="copy-icon group-[.copied]/copybtn:hx-hidden hx-pointer-events-none hx-h-4 hx-w-4"></div>
<div class="success-icon hx-hidden group-[.copied]/copybtn:hx-block hx-pointer-events-none hx-h-4 hx-w-4"></div>

ปัญหาทั่วไปและข้อกําหนด

FontParseException: Invalid WOFF signature ไฟล์ไม่ใช่ WOFF ที่ใช้ได้ Font. ยืนยันว่าไฟล์ไม่ได้เสียหาย และเริ่มด้วยการเวทย์มนต์ของ WOFF bytes.

FontParseException: WOFF table decompression failed โต๊ะที่กดได้ ในไฟล์ WOFF มีความเสียหาย ลองดาวน์โหลดฟิล์นตัวอักษรใหม่.

การออก WOFF2 ที่ใหญ่ WOFF2 ใช้การกด Brotli ซึ่งผลิตขนาดเล็กกว่า ถ้าการออกของ WOFF2 ของคุณใหญ่เกินคาดหมาย, ให้แน่ใจว่า คุณกําลังเริ่มต้นจากแหล่ง TTF ที่ถูกปรับปรุงได้ดีที่สุด.

คําถามที่พบบ่อย

ความแตกต่างระหว่าง WOFF กับ WOff2 คืออะไร?

WOFF 1 ใช้การกด zlib และ WOff 2 ใช้ การกัด Brotli. WOF2 มักจะบรรลุความกอดที่ดีกว่า WOFC20-30% 1. ทั้งคู่ครอบข้อมูล TrueType หรือ CFF ที่อยู่เบื้องหลังเดียวกัน.

ผมสามารถเข้าถึงตารางตัวอักษรได้จากไฟล์ WOFF ไหม?

ใช่ ใช้เครื่องมือ inner_font อสังหาริมทรัพย์เพื่อการรับรอง TtfFont,แล้ว ตารางทางเข้าผ่าน inner_font.ttf_tables.

ห้องสมุดรองรับการใช้งานวอฟเฟ่ (WOFF) หรือไม่?

ใช่ ทั้งสอง WoffFont และ Woff2Font เปิดเผยการ metadata_xml อสังหาริมทรัพย์ ซึ่งมีบล็อกเมตาข้อมูล XML ที่ไม่รับเลือก.

See Also

 ภาษาไทย