gpt4 book ai didi

python - 如何使用PIL(pillow)绘制任何语言的文字?

转载 作者:行者123 更新时间:2023-11-28 21:50:56 25 4
gpt4 key购买 nike

我正在使用 Python PIL 在背景图像上呈现用户输入文本(我正在使用枕头)。

代码很简单:

draw = ImageDraw.Draw(im)
draw.text((x, y), text, font=font, fill=font_color)

问题是,用户可以输入任何语言,我如何确定使用哪种font

ps:我知道我必须先有字体文件,所以我搜索并找到了Google Noto ,下载了所有的字体,放在/usr/local/share/fonts/中,但是这些字体是按语言分开的,所以我还是加载不出一个可以渲染所有用户输入文本的字体.

最佳答案

NoTo(实际上只是 Adob​​e 的 Source Pro 字体,具有不同的名称,因为 Google 更容易以这种方式进行营销)不是单一字体,而是一个字体系列。当你go to download them ,Google 明确告诉您,有很多不同的目标语言有很多不同的版本,原因有两个:

  1. 如果您需要排版整个星球的已知文字集,则字形的数量远远超过单一字体所能容纳的字形(OpenType 字体的硬性限制是每个文件 65535 个字形,因为字形 ID 被编码为 USHORT字段。而且字体是组合的:“字母”‖实际上可以是字母C和符号°,所以它依赖于三个 字形:两个真实字形和一个虚拟组合。那样的话你很快就会用完空间),以及
  2. 即使一种字体可以适合所有字形,同一个脚本可能需要根据其使用的语言呈现出相当不同的效果,因此即使为中文和日文或阿拉伯文和乌尔都文使用同一种字体,也很简单不起作用。虽然 OpenType 字体可以通过被告知要使用哪些变体集以及哪些基于特定语言标签的组合规则来应对这种情况,但这种控制在 InDesign 或 LaTeX 中效果很好,而且对于即将到来的字体来说是最糟糕的事情用于无控制上下文(例如 Android webview)。

因此,正确的解决方案是获取所有 字体,然后根据您为其生成文本的{script, language} 对选择正确的字体。这比你想做的更复杂吗?是的。有必要吗?同样是 =)

关于python - 如何使用PIL(pillow)绘制任何语言的文字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31166546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com