【问题标题】:Showing Square instead of Some Special characters - Python PIL显示正方形而不是一些特殊字符 - Python PIL
【发布时间】:2021-09-05 10:34:50
【问题描述】:

我尝试了很多很多方法,但都没有解决我的问题。 我尝试过:更改字体、将文件保存为 UTF-8 等... 我的代码:

    img = Image.open("WlcImageThings/bg.png")
    txtUser_font = ImageFont.truetype('WlcImageThings/DejaVuSans.ttf', 25)
    eimg = ImageDraw.Draw(img)
    eimg.text((25,50), u'????????????', (237, 230, 211), font=txtUser_font, stroke_width=2, stroke_fill=(0, 0, 0))
    img.save("WlcImageThings/result.png", quality=100)
    file = discord.File("WlcImageThings/result.png", filename="result.png")
    await channel.send(file=file)

结果: Result

【问题讨论】:

标签: python discord python-imaging-library


【解决方案1】:

对不起,我现在明白了。问题是 DejaVuSans 不包含这些代码点。我尝试了其他 Unicode 代码点(如线条图集),并且工作正常。您需要找到包含这些字符的字体。

【讨论】:

  • 这个问题有点误导,因为它使用看起来很多像常规 ASCII 字符的代码点。实际字符串为'\U0001d5fa\U0001d5ee\U0001d5f1'
  • 是的,我花了很长时间才弄清楚这一点。 ;)
  • 别难过,直到我看到你的回答我才弄清楚。幸运的是,我有一个从剪贴板中获取实际 Unicode 的功能:stackoverflow.com/a/25678113/5987
  • 您好,因为这是一个 Discord Welcome Bot,一些用户可能在他们的名字上使用不同的字体和符号。有什么字体可以显示所有字符吗?
  • 没有。有些字体包含许多 Unicode 代码点(Code2000、Arial Unicode),但由于表情符号变化如此频繁,它们跟不上。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-05
  • 2016-10-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多