我如何才能找出系统上哪些字体包含某个字符,例如 U+2192?
我尝试过在字符映射表中查找,但是我没有看到按字符查询字体的方法,只能按字体查询字符。
答案1
可能还有其他工具,但hb-shape
会给出一些结果,示例(分别为\u2192
、\u107
和):\u106
\u2191
$ hb-shape .fonts/Roboto-Light.ttf "→"
[NULL=0+498]
$ hb-shape .fonts/Roboto-Light.ttf "ć"
[cacute=0+1054]
$ hb-shape .fonts/Roboto-Light.ttf "Ć"
[Cacute=0+1313]
$ hb-shape .fonts/Roboto-Light.ttf "↑"
[NULL=0+498]
Cacute
正如您所注意到的,否则,可用的结果将以其 Unicode 名称返回NULL
。
Ctrl我已经使用++输入了 Unicode Shift,u或者您可能希望使用这种方式让 shell 脚本循环遍历字体:
$ hb-shape .fonts/Roboto-Light.ttf `echo -ne "\u2192"`
[NULL=0+498]
作为参考,hb-shape
是来自的测试工具HarfBuzz 项目Unicode 文本整形引擎。
答案2
对于具有 Unicode 字符 U+2192 的已安装字体,您可以使用fc-list
:
fc-list :charset=2192
示例输出:
/usr/local/share/fonts/consolas/consolab.ttf: Consolas:style=Bold /usr/local/share/fonts/consolas/consolai.ttf: Consolas:style=Italic /usr/local/share/fonts/consolas/consola.ttf: Consolas:style=Regular /usr/local/share/fonts/consolas/consolaz.ttf: Consolas:style=Bold Italic /usr/share/fonts/opentype/cantarell/Cantarell-Bold.otf: Cantarell:style=Bold /usr/share/fonts/opentype/cantarell/Cantarell-ExtraBold.otf: Cantarell,Cantarell Extra Bold:style=Extra Bold,Regular ... /usr/share/texmf/fonts/opentype/public/lm/lmsansquot8-oblique.otf: Latin Modern Sans Quotation,LM Sans Quot 8:style=8 Oblique,Bold Italic /usr/share/texmf/fonts/opentype/public/lm/lmsansquot8-regular.otf: Latin Modern Sans Quotation,LM Sans Quot 8:style=8 Regular,Regular /usr/share/texmf/fonts/opentype/public/lm-math/latinmodern-math.otf: Latin Modern Math:style=Regular
对于格式化输出,还有一个文档不全的-f
格式选项。请参阅man FcPatternFormat
和字体配置文档页面有一个一些可用属性的列表。
例如:
fc-list -f "%{file}\n\t%{family}\n" :charset=2192