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'
定义为“左半边黑星”,但在我的平台上的任何字体文件中都没有定义。
或许您可以下载使用以下字体文件,
- 巴别石汉
https://www.babelstone.co.uk/Fonts/Download/BabelStoneHan.ttf
- 符号
https://dn-works.com/wp-content/uploads/2020/UFAS-Fonts/Symbola.zip
- 统一字体
https://unifoundry.com/pub/unifont/unifont-13.0.06/font-builds/unifont-13.0.06.ttf
注意:最后一个字体比'\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()
我正在尝试创建包含一些 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'
定义为“左半边黑星”,但在我的平台上的任何字体文件中都没有定义。
或许您可以下载使用以下字体文件,
- 巴别石汉 https://www.babelstone.co.uk/Fonts/Download/BabelStoneHan.ttf
- 符号 https://dn-works.com/wp-content/uploads/2020/UFAS-Fonts/Symbola.zip
- 统一字体 https://unifoundry.com/pub/unifont/unifont-13.0.06/font-builds/unifont-13.0.06.ttf
注意:最后一个字体比'\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()