在 Mac OS X 上,字符查看器(相当于 Ubuntu 上的字符映射表)具有一项功能,当查看某个字符时,它可以显示包含该字符的所有字体的列表。Ubuntu 上有类似的东西吗?
用例是,例如,我可以单击一个卡纳达语字符并查看涵盖该字符的所有字体(大概还包括其余的卡纳达语范围)。
编辑:为了让您了解我的意思,以下是 Mac OS X 10.6 上字符查看器的屏幕截图。“包含所选字符”位于屏幕底部附近。我似乎记得界面的这一部分在 10.5 或 10.4 中实际上更好。
答案1
在字体矩阵您可以比较字体特征 - 在字体信息 - 比较中。
附言:我认为 Mac OS X 上的 Character Viewer 功能对于 fontmatrix 开发团队来说是一个很棒的功能请求。
事实上,Fontmatrix 的界面还有更好的功能:您可以选择“预览”选项卡并输入一个字符串(包含您希望字体具有的字符),然后查看每个字体的显示方式。因此,您可以滚动浏览字体列表,同时查看字体的覆盖率全部每次只显示感兴趣的字符,而不是一个字符一个字符地显示。这可以帮助您直观地挑选出包含所选字符的字体。
在下面的截图中,您可以看到“BABEL Unicode Bold”(选定)包含除 ṝ 之外的所有字符,而“Arial Regular”(鼠标所在的位置)仅包含几个字符。
答案2
自从我在 2011 年首次提出这个问题以来,在 Ubuntu(之前推荐的 FontMatrix 似乎不再具有该功能)和 macOS 上都很难找到这些信息。
如果人们关心的是一般语言而不是特定的字符,则可以用fc-list
with :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 脚本(它适用于两种操作系统)。
安装
python-fontconfig
或python3-fontconfig
包(或两者),取决于您喜欢使用 Python 2 还是 Python 3。将以下代码保存到名为 (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)
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
前缀。