包含所选字符的字体列表

包含所选字符的字体列表

在 Mac OS X 上,字符查看器(相当于 Ubuntu 上的字符映射表)具有一项功能,当查看某个字符时,它可以显示包含该字符的所有字体的列表。Ubuntu 上有类似的东西吗?

用例是,例如,我可以单击一个卡纳达语字符并查看涵盖该字符的所有字体(大概还包括其余的卡纳达语范围)。


编辑:为了让您了解我的意思,以下是 Mac OS X 10.6 上字符查看器的屏幕截图。“包含所选字符”位于屏幕底部附近。我似乎记得界面的这一部分在 10.5 或 10.4 中实际上更好。

在此处输入图片描述

答案1

字体矩阵您可以比较字体特征 - 在字体信息 - 比较中。

Fontmatrix 的字体比较

附言:我认为 Mac OS X 上的 Character Viewer 功能对于 fontmatrix 开发团队来说是一个很棒的功能请求。


事实上,Fontmatrix 的界面还有更好的功能:您可以选择“预览”选项卡并输入一个字符串(包含您希望字体具有的字符),然后查看每个字体的显示方式。因此,您可以滚动浏览字体列表,同时查看字体的覆盖率全部每次只显示感兴趣的字符,而不是一个字符一个字符地显示。这可以帮助您直观地挑选出包含所选字符的字体。

在下面的截图中,您可以看到“BABEL Unicode Bold”(选定)包含除 ṝ 之外的所有字符,而“Arial Regular”(鼠标所在的位置)仅包含几个字符。

Fontmatrix 预览的屏幕截图

答案2

自从我在 2011 年首次提出这个问题以来,在 Ubuntu(之前推荐的 FontMatrix 似乎不再具有该功能)和 macOS 上都很难找到这些信息。

如果人们关心的是一般语言而不是特定的字符,则可以用fc-listwith :lang,例如:

~% fc-list :lang=kn-in
/usr/share/fonts/truetype/noto/NotoSansKannadaUI-Regular.ttf: Noto Sans Kannada UI:style=Regular
/usr/share/fonts/truetype/noto/NotoSansKannada-Bold.ttf: Noto Sans Kannada:style=Bold
/usr/share/fonts/truetype/noto/NotoSansKannadaUI-Bold.ttf: Noto Sans Kannada UI:style=Bold
/usr/share/fonts/truetype/noto/NotoSerifKannada-Regular.ttf: Noto Serif Kannada:style=Regular
/usr/share/fonts/truetype/Navilu/Navilu.ttf: Navilu:style=Normal
/usr/share/fonts/truetype/noto/NotoSansKannada-Regular.ttf: Noto Sans Kannada:style=Regular
/usr/share/fonts/truetype/lohit-kannada/Lohit-Kannada.ttf: Lohit Kannada:style=Regular
/usr/share/fonts/truetype/Gubbi/Gubbi.ttf: Gubbi:style=Normal
/usr/share/fonts/truetype/noto/NotoSerifKannada-Bold.ttf: Noto Serif Kannada:style=Bold

对于特定角色,我问了类似的问题关于“Ask Different”;在这里复制我最终使用的 Python 脚本(它适用于两种操作系统)。

  1. 安装python-fontconfigpython3-fontconfig包(或两者),取决于您喜欢使用 Python 2 还是 Python 3。

  2. 将以下代码保存到名为 (say) 的文件中find_fonts.py

#!/usr/bin/env python

def find_fonts(c):
    """Finds fonts containing  the (Unicode) character c."""
    import fontconfig
    fonts = fontconfig.query()
    for path in sorted(fonts):
        font = fontconfig.FcFont(path)
        if font.has_char(c):
            yield path

if __name__ == '__main__':
    import sys
    search = sys.argv[1]
    char = search.decode('utf-8') if isinstance(search, bytes) else search
    for path in find_fonts(char):
        print(path)
  1. python find_fonts.py ಠ使用或python3 find_fonts.py ಠ替换您关心的字符来运行脚本。

示例输出:

$ python3 find_fonts.py ಠ
/usr/share/fonts/truetype/Gubbi/Gubbi.ttf
/usr/share/fonts/truetype/Navilu/Navilu.ttf
/usr/share/fonts/truetype/lohit-kannada/Lohit-Kannada.ttf
/usr/share/fonts/truetype/noto/NotoSansKannada-Bold.ttf
/usr/share/fonts/truetype/noto/NotoSansKannada-Regular.ttf
/usr/share/fonts/truetype/noto/NotoSansKannadaUI-Bold.ttf
/usr/share/fonts/truetype/noto/NotoSansKannadaUI-Regular.ttf
/usr/share/fonts/truetype/noto/NotoSerifKannada-Bold.ttf
/usr/share/fonts/truetype/noto/NotoSerifKannada-Regular.ttf

答案3

基于这篇 Unix 帖子,我了解到您可以搜索包含带有 的字符的字体fc-list。首先,您需要知道该字符的代码点。对于您询问的字符,我启动了“字符”应用程序,并搜索了“卡纳达字母 ba”。我单击该字符,信息对话框在末尾列出了代码点:“Unicode U+0CAC”。

现在,我可以使用fc-list

$ fc-list ":charset=0x0cac"
/usr/share/fonts/truetype/Navilu/Navilu.ttf: Navilu:style=Normal
/usr/share/fonts/truetype/lohit-kannada/Lohit-Kannada.ttf: Lohit Kannada:style=Regular
/usr/share/fonts/truetype/Gubbi/Gubbi.ttf: Gubbi:style=Normal
$

如果您知道十进制代码点而不是十六进制代码点,请删除0x前缀。

相关内容