วิธีการทํางานกับ 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 ที่ไม่รับเลือก.