python-判断字体中是否含有ocr类别字典中字符(中文、英文、符号)

这段代码展示了如何使用fromfontTools库检查字体文件是否包含特定的中文字符集合,通过遍历目录中的字体并统计匹配字符数,确保字体适配中文需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

############### 判断字体中是否都包含字典中的字符 ################
from fontTools.ttLib import TTFont
import os
from shutil import copyfile
from fontTools.ttLib.sfnt import DirectoryEntry
with open('/data/git/ocr-platform/statistic/TextGenerator/TextGenerator/process/dicts/chinese_dict.txt','r') as f1:
    dict_chinese=f1.readline()
f1.close()
print(len(dict_chinese))

font_fd='/data/git/ocr-platform/statistic/TextGenerator/TextGenerator/fonts/general_en/'
save_fd='/data/git/ocr-platform/statistic/TextGenerator/TextGenerator/fonts/cn/'
# fontType = "/data/git/ocr-platform/statistic/TextGenerator/TextGenerator/fonts/general_en_del/ARIAL.ttf"
for font_name in os.listdir(font_fd):
    if font_name.endswith('.ttf') or font_name.endswith('.TTF'):
        fontType=font_fd+font_name
        print('###################')
        print(fontType)
        font = TTFont(fontType)
        uniMap = font['cmap'].tables[0].ttFont.getBestCmap()
        # print (ord('1') in uniMap.keys()) #True
        glyfMapDict = TTFont(fontType)['glyf']
        # print(len(glyfMapDict[uniMap[ord('1')]].getCoordinates(0)[0]))#23
        count=0
        for c in dict_chinese:
            # print(c)
            if uniMap is not None:
                if ord(c) in uniMap.keys():
                    count+=1
                    pass
                else:
                    if font_name=='simsun.ttf':
                        print(c)
        if count==len(dict_chinese):
            print(save_fd+font_name)
            copyfile(fontType, save_fd+font_name)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值