font.getsize (), кажется, не работает с "\ n" (новые строки) внутри параметра - PullRequest
0 голосов
/ 31 марта 2020

Используемый шрифт: https://www.fontspace.com/abeezee-font-f30774

ImageFont.truetype(*path/to/font*, 300)
font.getsize("1\n\r0\n\r9")  # returns: (1080, 280) which is wrong!
image = np.full(shape=(1, 1, 3), fill_value=0, dtype=np.uint8)
image = Image.fromarray(image, mode="RGB")
draw = ImageDraw.Draw(image)
draw.multiline_textsize(text="1\n\r0\n\r9", font=font, spacing=0)  # returns: (180, 837) which is correct"

Почему результаты отличаются? Чего мне не хватает?

1 Ответ

0 голосов
/ 31 марта 2020

Итак, основной ошибкой было: 1) для многострочного текста мы должны использовать:

 PIL.ImageDraw.ImageDraw.multiline_text(xy, text, fill=None, font=None, anchor=None, spacing=0, align="left", direction=None, features=None, language=None) 

Кроме того .getsize () вернул высоту, которая слишком велика. Высота, которая работала для меня, была:

font.getmask(digit).size[1]

, которая равна:

font.getsize(digit)[1] - font.getoffset(digit)[1]
...