ฉันต้องทำให้กระบวนการตรวจสอบว่าอักขระ Unicode มีร่ายมนตร์ที่กำหนดไว้โดยอัตโนมัติสำหรับพวกเขาในไฟล์ True Type Font ฉันจะทำเช่นนั้นได้อย่างไร ฉันไม่สามารถหาข้อมูลเกี่ยวกับวิธีทำให้ตัวเลขที่ฉันดูเหมือนจะได้รับเมื่อฉันเปิดไฟล์. ttf ในโปรแกรมแก้ไขข้อความ
ฉันต้องทำให้กระบวนการตรวจสอบว่าอักขระ Unicode มีร่ายมนตร์ที่กำหนดไว้โดยอัตโนมัติสำหรับพวกเขาในไฟล์ True Type Font ฉันจะทำเช่นนั้นได้อย่างไร ฉันไม่สามารถหาข้อมูลเกี่ยวกับวิธีทำให้ตัวเลขที่ฉันดูเหมือนจะได้รับเมื่อฉันเปิดไฟล์. ttf ในโปรแกรมแก้ไขข้อความ
คำตอบ:
ฉันพบห้องสมุดหลาม, fonttools ( pypi ) ที่สามารถใช้ในการทำมันด้วยการเขียนสคริปต์หลามเล็กน้อย
นี่เป็นสคริปต์ง่าย ๆ ที่แสดงรายการแบบอักษรทั้งหมดที่มีสัญลักษณ์ที่ระบุ:
#!/usr/bin/env python3
from fontTools.ttLib import TTFont
import sys
char = int(sys.argv[1], base=0)
print("Looking for U+%X (%c)" % (char, chr(char)))
for arg in sys.argv[2:]:
try:
font = TTFont(arg)
for cmap in font['cmap'].tables:
if cmap.isUnicode():
if char in cmap.cmap:
print("Found in", arg)
break
except Exception as e:
print("Failed to read", arg)
print(e)
อาร์กิวเมนต์แรกคือ codepoint (ฐานสิบหรือฐานสิบหกที่มี 0x) และส่วนที่เหลือเป็นไฟล์แบบอักษรที่ต้องการดู
ฉันไม่ได้พยายามที่จะทำให้มันใช้งานได้กับ.ttc
ไฟล์ (มันต้องใช้พารามิเตอร์พิเศษบางแห่ง)
หมายเหตุ: ฉันลองใช้เครื่องมือ otfinfo เป็นครั้งแรก แต่ฉันได้รับอักขระระนาบหลายภาษาพื้นฐานเท่านั้น (<= U + FFFF) สคริปต์หลามค้นหาอักขระระนาบเพิ่มเติมตกลง
otfinfoดูมีแนวโน้ม:
-u, --unicode
Print each Unicode code point supported by the font, followed by
the glyph number representing that code point (and, if present,
the name of the corresponding glyph).
ตัวอย่างเช่น DejaVuSans-Bold รู้เกี่ยวกับ fl ligature (fl):
$ otfinfo -u /usr/share/fonts/TTF/DejaVuSans-Bold.ttf |grep ^uniFB02
uniFB02 4899 fl
-u
ตัวเลือกไม่ปรากฏ--help
แต่ดูเหมือนว่ายังมีอยู่ อย่างไรก็ตาม (อย่างน้อยใน Debian 2.105 build) ดูเหมือนว่าจะแสดงรายการระนาบพื้นฐานเท่านั้น (มากถึง U + FFFF) -g
ตัวเลือกรู้เกี่ยวกับเครื่องบินนาน แต่ไม่ได้ทำงานแบบอักษรทั้งหมด