How do I find out which font contains a certain special character?

Solution 1:

Try this page: www.Fileformat.info

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

There you can query Unicode characters and get a list of supporting fonts.

Solution 2:

The following Python script would print all fonts containing a character (tested on my Linux box).

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

On my machine, this gives:

😺 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

Solution 3:

I completely understand the question as I ran into the same problem myself:

You know your computer has the font installed because one program displays the content properly, but another program displays the same content as a blank box because it doesn't know what font to use to display properly. And you don't want to scroll through all the fonts to find one that contains the character you want.

Try pasting the copied text/symbol into a blank Microsoft Word doc. The content should appear properly if Word is set to Keep Source Formatting by default for pasted text. If so, select the content and the Word font menu will show you the source font on your computer that contains the necessary character. Granted, there may be others, but at least this is a quick and dirty way to find one font that may be suitable.