特定のフォントでサポートされているすべてのグリフを一覧表示する方法

特定のフォントでサポートされているすべてのグリフを一覧表示する方法

fontforgeたとえば、特定のフォントでサポートされているすべてのシンボルのリストをすばやく取得するなど、処理できるCLIコマンドやその他のものがありますか?

それは次のとおりです。

$the_command_I_am_ looking_for与えられたfont.ttf
abcdefghijklmnopqrstuvwxyzabcdefghgghijklmnopqrstuvwxyzaβΔeεζters з πρστυφχε数は¢〜〜××× ~ ₦ ₦  ₨ ₫ ₫ € ₭ ₮ ₲ ₲ ₺ ₺ ₼ ₽ ₴ ₴ $฿ ₵ ₠ リール a/~`| _-,; :! '() [) [) [) [) [) [) [) ]{}@$\&#%+¶‡†‽
$

どのような方法がありますか?

答え1

Fontconfigを介してLinuxで利用可能なフォント(ほとんどすべて)。

通常、フォントとUnicodeで発生する2つの関連する問題があります。

  1. グリフ(実際にはUnicodeコードポイント)をレンダリング(含む)できるフォントを一覧表示します。

    fc-list :charset=1f63f | less      # all installed fonts that have 1f63f 

答え2

TrueTypeフォントの場合は、次のものを使用できます。ttfdumpユーティリティは以下で利用できます。TeXlive

ttfdump -t cmap -i /usr/share/fonts/truetype/freefont/FreeSerif.ttf |
perl -CS -ne 'print chr(hex($1)) if /Char (0x[[:xdigit:]]+)/ and hex($1) != 0xffff; END {print "\n"}'

実験的に、これはU + FFFFの下のコードポイントのみをリストするようです。これがバグなのかttfdump、それとも別の飛行機に到達するのに必要な追加作業のためかはわかりません。

サポートされているすべてのフォントの場合無料タイピング、Freetypeライブラリはこの情報を提供しますが、それを照会する既知のコマンドラインユーティリティはないようです。以下は、次を使用する1行です。手描き-py利用可能なPythonバインディングですpip3 install --user freetype-py

python3 -c 'import freetype, sys; stdout = open(1, mode="w", encoding="utf8"); face = freetype.Face(sys.argv[1]); stdout.write("".join(sorted([chr(c) for c, g in face.get_chars() if c]) + ["\n"]))' /usr/share/fonts/truetype/freefont/FreeSerif.ttf

関連情報