python图像中未正确显示特定的unicode字符

python图像中未正确显示特定的unicode字符,python,fonts,Python,Fonts,我试图创建一个带有一些unicode字符的图像,但其中一些字符没有正确显示。您可以在此示例图像中看到: 我正在尝试打印的角色是\u2BEA,它是一个半星形图像。不幸的是,输出只显示了通用的缺少字符图标 from PIL import Image from PIL import ImageDraw from PIL import ImageFont output_image = Image.new('RGB', (200,100), (0,0,0)) text = '\u2605\u2605\

我试图创建一个带有一些unicode字符的图像,但其中一些字符没有正确显示。您可以在此示例图像中看到:

我正在尝试打印的角色是\u2BEA,它是一个半星形图像。不幸的是,输出只显示了通用的缺少字符图标

from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont

output_image = Image.new('RGB', (200,100), (0,0,0))
text = '\u2605\u2605\u2605\u2BEA\u2606'
font = ImageFont.truetype("C:\\Windows\\Fonts\\yugothb.ttc", 18)
draw = ImageDraw.Draw(output_image)
draw.text((10, 10), text, (255,255,255), font=font)
output_image.show()
注意:您可能需要调整计算机的字体位置

在我的示例代码中,我使用的是粗体字体,没有得到正确的输出。我试过使用其他字体,如Arial和Calibri,结果更糟

我的想法是,字符不是字体的一部分,但我还没有找到一种支持它的字体


有人知道我可以使用一种免费字体来显示这个字符吗?

Unicode
'u2BEA'
定义为“左半黑星”,但没有在我平台上的任何字体文件中定义

也许您可以下载并使用以下字体文件

  • 巴贝尔斯通·汉
  • 符号
  • 统一体

注意:最后一个字体比
'\u2605'
'\u606'
大,我没有找到任何包含
\u2BEA
\u2BE8
(参考:)的字体,但以下由字体Awesome创建的图标可能满足您的需要:

在Font Awesome中,
f005
指的是“星型”图标,
f5c0
指的是“半星型”图标

因此,您可以在,然后绘制带有“Font Awesome 5 Free-solid-900.otf”的实心
\uF005\uF005\uF5C0
,以及带有“Font Awesome 5 Free-Regular-400.otf”的单个空心星形
\uF005

以下各项工作正常:

从PIL导入图像
从PIL导入ImageDraw
从PIL导入ImageFont
output_image=image.new('RGB',(200100),(0,0,0))
solid=ImageFont.truetype('fontawesome-free-5.15.3-desktop/otfs/Font-Awesome 5-free-solid-900.otf',18)
regular=ImageFont.truetype('fontawesome-free-5.15.3-desktop/otfs/Font Awesome 5 free-regular-400.otf',18)
draw=ImageDraw.draw(输出图像)
draw.text((10,10),'\uF005'*3+'\uF5C0',(255255),font=solid)
draw.text((90,10),“\uF005”,(255255),font=regular)
输出_image.show()

我用BableStone Han就可以让它工作了。谢谢