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

Rum*_* P. 28 fonts unicode special-characters

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

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

带有摄像机字形的 url 显示正确

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

如何找出我安装的哪些字体可以显示“字符”?

Wer*_*eit 20

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

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

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


Mar*_*rus 14

以下 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"")
test(u"")
Run Code Online (Sandbox Code Playgroud)

在我的机器上,这给出了:

 SMILING CAT FACE WITH OPEN MOUTH  in /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansCondensed.ttf
 SMILING CAT FACE WITH OPEN MOUTH  in /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Bold.ttf
 SMILING CAT FACE WITH OPEN MOUTH  in /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf
 SMILING CAT FACE WITH OPEN MOUTH  in /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansCondensed-Bold.ttf
 SMILING CAT FACE WITH OPEN MOUTH  in /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Oblique.ttf
 SMILING CAT FACE WITH OPEN MOUTH  in /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansCondensed-Oblique.ttf
 SMILING CAT FACE WITH OPEN MOUTH  in /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansCondensed-BoldOblique.ttf
 SMILING CAT FACE WITH OPEN MOUTH  in /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-BoldOblique.ttf
 SMILING CAT FACE WITH OPEN MOUTH  in /usr/share/fonts/truetype/dejavu/DejaVuSansCondensed.ttf
 SMILING CAT FACE WITH OPEN MOUTH  in /usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf
 SMILING CAT FACE WITH OPEN MOUTH  in /usr/share/fonts/truetype/dejavu/DejaVuSans.ttf
 SMILING CAT FACE WITH OPEN MOUTH  in /usr/share/fonts/truetype/dejavu/DejaVuSansCondensed-Bold.ttf
 SMILING CAT FACE WITH OPEN MOUTH  in /usr/share/fonts/truetype/dejavu/DejaVuSans-Oblique.ttf
 SMILING CAT FACE WITH OPEN MOUTH  in /usr/share/fonts/truetype/dejavu/DejaVuSansCondensed-Oblique.ttf
 SMILING CAT FACE WITH OPEN MOUTH  in /usr/share/fonts/truetype/dejavu/DejaVuSansCondensed-BoldOblique.ttf
 SMILING CAT FACE WITH OPEN MOUTH  in /usr/share/fonts/truetype/dejavu/DejaVuSans-BoldOblique.ttf
 CAT  in /usr/share/fonts/truetype/noto/NotoSansSymbols2-Regular.ttf
Run Code Online (Sandbox Code Playgroud)


小智 5

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

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

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