如何确定字符串中每个字符使用的字体?

2024-05-31 10:57:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个Discord bot,它使用Pillow向新用户发送图像(上面写着他们的名字)。而且人们经常倾向于在他们的名字中使用我的字体不支持的外国Unicode字符(或中文、日文等不同语言的名字)。它们看起来像空白的盒子。示例:

  • 你好
  • ||ƶลƒҡเεŁ||
  • G∗e∗n∗e∗r∗a∗t∗o∗r∗Z∗a∗l∗

我尝试了几种字体,并了解到我不能只使用一种字体来支持所有这些。然后我遇到了Google Noto,显然他们的字体家族支持各种语言

我的计划是:

  • 检查字符串中的每个字符,看看主字体是否支持它
    • 如果是,就画这个角色
    • 如果没有,请找到支持它的其他字体,然后绘制它

这有几个问题:

  • 我不应该遍历每个字符的所有字体,然后检查其中一个是否支持它。就性能而言,这将是非常糟糕的
  • 我不知道该如何画出每个角色并使它们看起来井然有序。我认为每种字体之间都会有明显的大小和风格差异

到目前为止,我已经找到了fontTools library,它可以让我检查字体是否支持字符,但我不知道应该如何从这一点开始。我很好奇

  • 几乎每个网站是如何支持和处理这些文本的
  • 在Python中使用枕头如何实现目标

我们将非常感谢您的帮助。多谢各位


Tags: 用户图像语言角色示例botunicode字体