是否有 CLI 命令或其他命令可以处理fontforge
,例如快速获取给定字体中所有支持的符号的列表?
就像是:
$the_command_I_am_looking_for给定字体.ttf ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzAΒГΔEΕΖΖЖЅЗИІКЛМНОμνοπρστυφχψωАБВГДЄЖЅЗИІКЛМНО广告前言ⴱⴲⴳⴴⴵⴶⴷⴸⴹⴺⴻⴼⴽⴾⴿⵀⵁⵂⵃⵄⵅⵆⵇⵈⵉⵊⵋⵌⵍⵎⵏⵐⵑⵒ ⵓⵖⵗⵘⵙⵚⵛⵜⵝⵞⵟⵠⵡⵢⵣⵤⵥⵦⵧⵯ⵰0123456789+-×÷¢£¥₤₥₦₨₩₪₫€₭₮₲₺f₼ ₽₴ $฿₵₠а/~`|_-,;:!'"()[]{}@$\&#%+¶‡†‽ $
有办法吗?
答案1
对于可以通过 fontconfig 在 Linux 中使用的字体(几乎所有)。
有两个通常来自字体和 Unicode 的相关问题:
列出可以呈现(包含)字形(实际上是 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 库提供了这些信息,但似乎没有一个现成的命令行实用程序来查询它。这是一个使用的单行Freetype-pyPython 绑定,您可以使用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