首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Python的PIL ImageFont中指定CJK脚本的本地化形式?

如何在Python的PIL ImageFont中指定CJK脚本的本地化形式?
EN

Stack Overflow用户
提问于 2020-11-12 00:13:09
回答 1查看 127关注 0票数 0

中日韩文字(CJK Unified Ideographs)共享相同的Unicode代码点,简体中文、繁体中文和汉字之间的区别只能通过字体来处理。

某些字体支持多种本地化形式(简体中文、繁体中文、汉字等)在同一时间。例如,Arial Unicode.ttfGSUB table中有4个locljpnkorzhszht,它们处理CJK脚本的不同本地化形式。jpn是默认的,它对应于汉字。

如何选择要在Python中使用的本地化表单?更具体地说,我希望在使用PIL package时控制本地化表单。

代码语言:javascript
复制
image_font = ImageFont.truetype(font="Arial Unicode.ttf", size=10) # PIL.ImageFont.FreeTypeFont object

这种本地化的表单规范在PIL版本的8.0.1中是否可行?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-16 08:03:13

最后我找到了解决方案。要在Python的PIL中指定CJK字符的形式,只需在ImageDraw.text() (link)中指定language参数就足够了,这需要libraqm包。

下面的示例显示了结果:

代码语言:javascript
复制
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() 

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64790054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档