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

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

คู่มือนี้แสดงวิธีการอ่านตาราง TTF ที่มีชื่อ, การค้นหาไบต์ของตราคู่ที่ยังไม่ได้ถูกกําหนด และการเขียนข้อมูลตลาดที่ถูกปรับเปลี่ยน โดยใช้ TtfFont ใน Aspose.Font FOSS สําหรับ Python. TrueType แฟนต์เก็บข้อมูลทั้งหมดในตารางไบนารีที่ระบุด้วยแท็ก 4 ตัวอักษร. Aspose.Font การเปิดเผยของ FosS TtfTableSet สําหรับการเข้าถึงตารางที่ชื่อ และ TtfFont.get_table_bytes() / TtfFont.set_table_bytes() สําหรับการเข้าถึงแบบไบนารีที่ไม่ถูกใช้งาน.

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

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

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

pip install "aspose-font>=1.0.0"

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

Import FontLoader และ TtfFont เพื่ออัตราการโหลดไฟล์ font และเข้าถึงตารางของมัน:

from aspose_font.loader import FontLoader
from aspose_font.ttf.font import TtfFont

ขั้นตอน 3: เข้าไปยังตารางที่มีชื่อ

อัตราการอัดไฟล์ TTF ด้วย FontLoader.open() และเข้าถึงตารางที่มีชื่อผ่านการใช้งาน ttf_tables อสังหาริมทรัพย์:

ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
tables = ttf_font.ttf_tables
print("kern present:", tables.kern is not None)
print("cmap present:", tables.cmap is not None)

ขั้นตอนที่ 4: อ่านบายต์ตาราง Raw

อ่านข้อมูลไบนารีสดสําหรับตารางเฉพาะ โดยการส่ง tag 4 ตัวอักษรไปยัง get_table_bytes():

ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
raw = ttf_font.get_table_bytes("name")
print(f"name table: {len(raw)} bytes")

ขั้นตอน 5: เขียนบายต์ตารางที่เปลี่ยนแปลง

เขียนข้อมูลไบนารีที่เปลี่ยนแปลงกลับไปในตารางที่มีชื่อ โดยใช้ set_table_bytes() ด้วยการติด tag และ byte payload:

ttf_font: TtfFont = FontLoader.open("Roboto-Regular.ttf")
modified = b"..."  # your modified binary data
ttf_font.set_table_bytes("GSUB", modified)

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

AttributeError: Font has no attribute ttf_tablesttf_tables เปิดแล้ว TtfFont, ไม่ใช่ฐาน Font การใช้งาน ttf_font: TtfFont = FontLoader.open(...) เพื่อให้ได้ คําอ้างอิงที่เขียนด้วยเครื่องมือ.

get_table_bytes กลับไบต์เปล่า แท็กต้องมีตัวอักษร 4 ตัวอย่าง (กระดาษที่มีช่องว่างถ้าจําเป็น เช่น. "kern" ไม่ "KRN").

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

โต๊ะที่มีชื่อใดถูกเปิดใน TtfTableSet?

หัว, hhea, maxp, os2, ชื่อ, สถานที่, cmap, loca, hmtx และ Kern.

ผมสามารถเพิ่มตารางใหม่ให้กับตัวอักษรได้หรือไม่?

ใช่ ส่งเท็กและข้อมูลไบต์ที่มีค่า 4 ไพท์ไปยัง TtfFont.set_table_bytes(tag, data).

See Also

 ภาษาไทย