Fonts

如何找出在 TTF 文件中定義了哪些 unicode 程式碼點?

  • December 5, 2019

我需要自動驗證哪些 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 腳本可以找到擴展平面字元。

引用自:https://unix.stackexchange.com/questions/247108