支持特定字符的已安装字体列表

支持特定字符的已安装字体列表

我如何才能找出系统上哪些字体包含某个字符,例如 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 Shiftu或者您可能希望使用这种方式让 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

相关内容