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

Specific unicode character not displayed properly in python image

我正在尝试创建包含一些 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()

注意:您可能需要调整计算机的字体位置

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

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

有人知道我可以使用的可以显示此字符的免费字体吗?

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

或许您可以下载使用以下字体文件,

注意:最后一个字体比'\u2605''\u2606'大。

我没有找到任何包含 \u2BEA\u2BE8 的字体(参考:https://www.unicode.org/charts/nameslist/n_2B00.html#2BEA), but the following icons by Font Awesome might meet your needs: Star Icon (Solid) Stat Half Alt Icon (Solid) Star Icon (Regular)

在 Font Awesome 中,f005 指的是 'star' 图标,f5c0 指的是 'star-half-alt' 图标。

所以,你可以download Font Awesome Free for Desktop at https://use.fontawesome.com/releases/v5.15.3/fontawesome-free-5.15.3-desktop.zip,然后用'Font Awesome 5 Free-Solid-900.otf'画实心\uF005\uF005\uF005\uF5C0,用'Font Awesome 5 Free-Regular-400.otf'画一个空心星\uF005

以下内容正常工作:

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

output_image = Image.new('RGB', (200,100), (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(output_image)
draw.text((10, 10), '\uF005' * 3 + '\uF5C0', (255,255,255), font=solid)
draw.text((90, 10), '\uF005', (255,255,255), font=regular)
output_image.show()