如何解决如何在Python的PIL ImageFont中指定本地化的CJK脚本形式?
CJK脚本(CJK Unified Ideographs)具有相同的Unicode代码点,简体中文,繁体中文和日文汉字之间的区别只能由字体来处理。
某些字体同时支持几种本地化形式(简体中文,繁体中文,日文汉字等)。例如,Arial Unicode.ttf在locl中有4个GSUB table: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
甚至可以实现这种本地化的表单规范吗?
解决方法
最后我找到了解决方案。要在Python的PIL
中指定CJK字符的形式,在language
(link)中指定ImageDraw.text()
参数就足够了,它需要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,font=font,language=languages[i])
axes[i].imshow(img)
axes[i].set_title(languages[i] + " {}".format(ord(char_)))
plt.show()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。