def convert_font_num(nums): base_cid = { 'zero': '0', 'one': '1', 'two': '2', 'three': '3', 'four': '4', 'five': '5', 'six': '6', 'seven': '7', 'eight': '8', 'nine': '9' } # 通过xml文件分析得到此结果 online_font = TTFont('online.ttf').getGlyphOrder( )[1:] # 获取GlyphOrder字段,经对比xml查看此字段是变化的,并且变化的映射关系(cmap)对应真实数字,cmap项不变化, glfy项变化 real_num_list = [] # 保存替换后的数字 for n in nums: base_cid_key = list(base_cid.keys())[list( base_cid.values()).index(n)] # 根据字典value获取key值 online_font_index = online_font.index(base_cid_key) # 获取列表中对应值的下标 real_num_list.append(str(online_font_index)) real_num = ''.join(real_num_list) # 组合替换后的每一个数字子 return real_num