如何找出哪种字体包含某个特殊字符?

如何找出哪种字体包含某个特殊字符?

Unicode 包含一些特殊“字符”,大多数字体无法显示这些字符。我想使用其中的一个字符,即摄像机。

看来这样的字符确实存在,并且代码点为 U+1F4F9。当我访问http://graphemica.com/%F0%9F%93%B9,我看到它显示在网页上和 Firefox 的 URL 栏中。因此,我假设我的系统上至少有一种包含该字形的字体。

带有摄像机字形的 URL 可以正确显示

但是当我将其粘贴到 Inkscape 中时,我得到了一个未知字符的空框,即使我选择了一种通常具有许多字形的字体,例如 Arial。

我如何知道我安装的哪种字体可以显示该“字符”?

答案1

尝试这个页面:www.Fileformat.info

http://www.fileformat.info/info/unicode/char/1f4f9/fontsupport.htm

您可以在那里查询 Unicode 字符并获取支持字体的列表。

答案2

以下 Python 脚本将打印包含字符的所有字体(在我的 Linux 机器上测试)。

import unicodedata
import os

fonts = []

for root,dirs,files in os.walk("/usr/share/fonts/"):
    for file in files:
       if file.endswith(".ttf"): fonts.append(os.path.join(root,file))


from fontTools.ttLib import TTFont

def char_in_font(unicode_char, font):
    for cmap in font['cmap'].tables:
        if cmap.isUnicode():
            if ord(unicode_char) in cmap.cmap:
                return True
    return False

def test(char):
    for fontpath in fonts:
        font = TTFont(fontpath)   # specify the path to the font in question
        if char_in_font(char, font):
            print(char + " "+ unicodedata.name(char) + " in " + fontpath) 

test(u"

答案3

我完全理解这个问题,因为我自己也遇到过同样的问题:

您知道您的计算机已安装该字体,因为一个程序可以正确显示内容,但另一个程序却将相同的内容显示为空白框,因为它不知道使用哪种字体才能正确显示。而且您不想滚动浏览所有字体来找到包含所需字符的字体。

尝试将复制的文本/符号粘贴到空白的 Microsoft Word 文档中。如果 Word 默认将粘贴的文本设置为保留源格式,则内容应该可以正常显示。如果是这样,请选择内容,Word 字体菜单将显示计算机上包含所需字符的源字体。当然,可能还有其他字体,但至少这是一种快速而简单的方法来找到一种可能合适的字体。

相关内容