Reputation: 634
I am trying to create an image with some unicode characters but some of them aren't being displayed properly. You can see in this sample image:
The character in question I am trying to print is \u2BEA, which is a half star image. Unfortunately the output just shows me the generic missing character icon.
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()
Note: you may need to adjust the font location for your computer
In my sample code I'm using the Yu Gothic Bold font and not getting the correct output. I have tried using other fonts such as Arial and Calibri, which produced even worse results.
My thought process is that the character isn't part of of the font but I have yet to find a font that supports it.
Does anyone know of a free font that I can use that will display this character?
Upvotes: 0
Views: 746
Reputation: 175
I didn't find any font that includes \u2BEA
or \u2BE8
(ref: 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)
In Font Awesome, f005
refers to the 'star' icon, and f5c0
refers to the 'star-half-alt' icon.
So, you can download Font Awesome Free for Desktop at https://use.fontawesome.com/releases/v5.15.3/fontawesome-free-5.15.3-desktop.zip, then draw solid \uF005\uF005\uF005\uF5C0
with 'Font Awesome 5 Free-Solid-900.otf' and a single hollow star \uF005
with 'Font Awesome 5 Free-Regular-400.otf'.
The following works properly:
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()
Upvotes: 2
Reputation: 13051
Unicode 'u2BEA'
defined as "STAR WITH LEFT HALF BLACK", but not defined in any font file on my platform.
Maybe you can download and use following font files,
Note: Last one with large font than '\u2605'
and '\u2606'
.
Upvotes: 2