中日韩文字(CJK Unified Ideographs)共享相同的Unicode代码点,简体中文、繁体中文和汉字之间的区别只能通过字体来处理。
某些字体支持多种本地化形式(简体中文、繁体中文、汉字等)在同一时间。例如,Arial Unicode.ttf在GSUB table中有4个locl:jpn、kor、zhs、zht,它们处理CJK脚本的不同本地化形式。jpn是默认的,它对应于汉字。
如何选择要在Python中使用的本地化表单?更具体地说,我希望在使用PIL package时控制本地化表单。
image_font = ImageFont.truetype(font="Arial Unicode.ttf", size=10) # PIL.ImageFont.FreeTypeFont object这种本地化的表单规范在PIL版本的8.0.1中是否可行?
发布于 2020-11-16 08:03:13
最后我找到了解决方案。要在Python的PIL中指定CJK字符的形式,只需在ImageDraw.text() (link)中指定language参数就足够了,这需要libraqm包。
下面的示例显示了结果:
languages = ["", "zh", "zh-Hans", "zh-CN", "zh-TW", "zh-HK"]
char_ = "骨"
font = ImageFont.truetype("Arial Unicode.ttf", size=32)
fig, axes = plt.subplots(nrows=2, ncols=3, figsize=(20, 8))
axes = axes.ravel()
for i, c in enumerate([char_] * len(languages)):
img = Image.new("L", (64, 64), 255)
draw = ImageDraw.Draw(img)
if i == 0:
draw.text((0, 0), c, font=font)
else:
draw.text((0, 0), c, font=font, language=languages[i])
axes[i].imshow(img)
axes[i].set_title(languages[i] + " {}".format(ord(char_)))
plt.show()

https://stackoverflow.com/questions/64790054
复制相似问题