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


19

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

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

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

但是,当我将其粘贴到Inkscape中时,即使选择通常包含许多字形的字体(如Arial),我也会得到一个未知字符的空白框。

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


如果无法识别该字体(为您提供一个空白框),则可能是您的系统上未安装该字体。因此,您需要先安装它,然后才能使用它。
CharlieRB

@CharlieRB字体安装。我无法选择在未安装的Inkscape中使用字体。它只是没有这种非常罕见的字形。
Rumi P.

好。您可能想在问题中加以澄清;您已经安装了字体。
CharlieRB 2015年

1
Firefox在Windows 7和更低版本中可能会使用其自己的字体,因为这些系统中没有表情符号的字体。字体已<firefox>\fonts\EmojiOneMozilla.ttf
插入

目前已经回答了类似的问题在这里
jdhao

Answers:



4

当我自己遇到相同的问题时,我完全理解了这个问题:

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

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


在Linux中,可以使用Writer完成相同的操作。
亚瑟·曾尼格

4

以下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"🐈")

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

😺 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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.