Fonts
如何找出在 TTF 文件中定義了哪些 unicode 程式碼點?
我需要自動驗證哪些 Unicode 字元在 True Type 字型檔中為它們定義了實際字形。我該怎麼做呢?當我在文本編輯器中打開 .ttf 文件時,我似乎無法找到有關如何理解似乎得到的數字的資訊。
我找到了一個 python 庫fonttools ( pypi ),它可以通過一些 python 腳本來完成。
這是一個簡單的腳本,列出了所有指定字形的字型:
#!/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)
第一個參數是程式碼點(十進製或帶 0x 的十六進制),其餘的是要查看的字型檔。
我沒有費心試圖讓它適用於
.ttc
文件(它需要一些額外的參數)。注意:我首先嘗試了 otfinfo 工具,但我只得到了基本的多語言平面字元(<= U+FFFF)。python 腳本可以找到擴展平面字元。