在python印章生成里使用了“华文新魏”字体来生成印章.实际运行中发现,有些冷僻字会显示为空白。例如“皛暐”这个名字,实际生成的印章,就是下图这样,呈现空白。
问题很容易定位,肯定是字体库对生僻字不支持导致的。那么我们怎么用程序来判断当前文字是否在字体库中呢?
这就要用到python操作字体的工具库 fontTools了。
例如,我们想看汉字“皛”是否存在“华文新魏”字体库中,就可以用以下代码来实现:
from fontTools.ttLib import TTFont
font = TTFont("C:/Windows/Fonts/STXINWEI.TTF")
unicode_dict = font['cmap'].tables[0].ttFont.getBestCmap()
print(ord('皛') in unicode_dict.keys())
其中ord('皛')
是python内置函数,返回‘皛’在unicode中的字符串表示。如果该unicode存在 unicode_dict.keys()
中,就说明当前字体库包含该汉字,否则就是不包含。
一旦判断当前姓名中包含了“华文新魏”字体库中不存在的字符,那么就可以降级使用更为通用的字体,例如“隶书”或者“楷体”等,这就解决了生僻字问题。
网友评论