python读取.ttf字体文件

    技术2022-07-16  91

    最近做OCR的时候,为了方便,使用代码生成所需要的数据,因此,需要使用多种字体文件,记录下遇到的一些问题: 使用的模型:AttentionOCR 使用的生成器:TextRecognitionDataGenerator

    使用python读取.ttf字体文件

    # 使用fontTools库 from fontTools.ttLib import TTFont font = TTFont(font) # 输出的uniMap是一个字典,key代表的unicode的int值,value代表unicode的名字 uniMap = font['cmap'].tables[0].ttFont.getBestCmap()

    关于简繁字体的转换

    https://raw.githubusercontent.com/skydark/nstools/master/zhtools/langconv.py https://raw.githubusercontent.com/skydark/nstools/master/zhtools/zh_wiki.py

    # 先将上面两个文件放在同一目录下 from langconv import * def simple2tradition(line): # 将简体转换成繁体 line = Converter('zh-hant').convert(line) return line def tradition2simple(line): # 将繁体转换成简体 line = Converter('zh-hans').convert(line) return line lines = [] with open('../c2s/text-01.txt', 'r') as f: for line in f: new_line = tradition2simple(line.strip()) with open('../text-01.txt', 'a') as fw: fw.write('{}\n'.format(new_line))

    判断字符是否在字体里

    # True:在 ord('1') in uniMap.keys()

    将RGB颜色转为十六进制表示

    def RGB_to_Hex(rgb): # 传入的rgb应为字符串 RGB = rgb.split(',') color = '#' for i in RGB: num = int(i) # 将R、G、B分别转化为16进制拼接转换并大写 hex() 函数用于将10进制整数转换成16进制,以字符串形式表示 color += hex(num)[-2:].replace('x', '0').upper() return color
    Processed: 0.025, SQL: 9