#!/bin/python
#
# Based on: https://superuser.com/a/1452828

import unicodedata
from itertools import chain
# from os import walk, path
import os
from fontTools.ttLib import TTFont

def find_fonts_in(path):
  fonts = []
  for root,dirs,files in os.walk(path):
    for file in files:
      if file.endswith(".ttf"): fonts.append(os.path.join(root,file))
  return fonts

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(ch, fonts):
  for fontpath in fonts:
    font = TTFont(fontpath)
    if char_in_font(ch, font):
      print(ch + " "+ unicodedata.name(ch) + " in " + fontpath) 

if __name__ =='__main__':
  font_dirs = [ "/usr/share/fonts/"
              , "/usr/local/share/fonts/"
              , "~/.local/share/fonts"
              ]
  fonts = [font for font_dir in font_dirs for font in find_fonts_in(font_dir)]

  test(u'🪞', fonts)