如果不是要在部件检索的网页里直接实现的话,可以参考这个看看
import unicodedata
import os
import sys
from fontTools import ttLib
fonts = []
for root,dirs,files in os.walk("/Users/usr/Library/Fonts/"):
for file in files:
if file.endswith(".ttf"): fonts.append(os.path.join(root,file))
FONT_SPECIFIER_NAME_ID = 4
FONT_SPECIFIER_FAMILY_ID = 1
def shortName( font ):
name = ""
family = ""
for record in font['name'].names:
if b'\x00' in record.string:
name_str = record.string.decode('utf-16-be')
else:
name_str = record.string.decode('latin-1')
if record.nameID == FONT_SPECIFIER_NAME_ID and not name:
name = name_str
elif record.nameID == FONT_SPECIFIER_FAMILY_ID and not family:
family = name_str
if name and family: break
return name
from fontTools.ttLib import TTFont
def char_in_font(unicode_char, font):
try:
for cmap in font['cmap'].tables:
if cmap.isUnicode():
if ord(unicode_char) in cmap.cmap:
return True
except:
return False
def test(char):
print(" * 正在检测支持【" + char + "】的字体......")
array=[]
for fontpath in fonts:
font = TTFont(fontpath)
if char_in_font(char, font):
tt = ttLib.TTFont(fontpath)
array.append(shortName(tt))
return array
for uni in [b'\\u81c6',b'\\U00029aa3',b'\\U0003049a']:
char=uni.decode('unicode-escape')
print(test(uni.decode('unicode-escape')))