Answers:
我发现了一个python库,fonttools(pypi),可以使用一些python脚本来完成此工作。
这是一个简单的脚本,列出了所有已指定字形的字体:
#!/usr/bin/env python3
from fontTools.ttLib import TTFont
import sys
char = int(sys.argv[1], base=0)
print("Looking for U+%X (%c)" % (char, chr(char)))
for arg in sys.argv[2:]:
    try:
        font = TTFont(arg)
        for cmap in font['cmap'].tables:
            if cmap.isUnicode():
                if char in cmap.cmap:
                    print("Found in", arg)
                    break
    except Exception as e:
        print("Failed to read", arg)
        print(e)第一个参数是代码点(十进制或带有0x的六进制),其余为要查找的字体文件。
我没有试图使它适用于.ttc文件的麻烦(它在某处需要一些额外的参数)。
注意:我首先尝试使用otfinfo工具,但仅获得基本的多语言平面字符(<= U + FFFF)。python脚本可以找到扩展平面字符。
otfinfo看起来很有希望:
-u, --unicode
  Print each Unicode code point supported by the font, followed by
  the glyph number representing that code point (and, if present,
  the name of the corresponding glyph).
例如,DejaVuSans-Bold知道fl连字(fl):
$ otfinfo -u /usr/share/fonts/TTF/DejaVuSans-Bold.ttf |grep ^uniFB02
uniFB02 4899 fl
-u选项未出现在中--help,但似乎仍然存在。但是(至少在Debian 2.105构建中)它似乎仅列出基本平面(最多U + FFFF)。该-g选项知道扩展平面,但不适用于所有字体。