Использование пиксельных шрифтов в PIL

Я создаю изображения с использованием PIL, которые содержат множество точно расположенных текстовых строк. Моей первой попыткой было преобразовать пиксельные шрифты в формат, совместимый с pil, как описано здесь. Например, я загружаю шрифт Silkscreen и конвертирую его:

otf2bdf -p 8pt -o fonts/slkscr.bdf fonts/slkscr.ttf 
pilfont.py fonts/slkscr.bdf

Затем я могу использовать шрифт в PIL следующим образом:

import Image, ImageDraw, os, sys, ImageFont
im = Image.new("RGB", (40,10))
draw = ImageDraw.Draw(im)
fn = ImageFont.load('fonts/slkscr.pil')
draw.text((0,0), "Hello", font=fn)
del draw
# write to stdout
im.save(sys.stdout, "PNG")

Однако полученное изображение (alt text) не отражает шрифт должен выглядеть.

Какую процедуру следует использовать для преобразования и использования пиксельных шрифтов, чтобы они отображались должным образом?

Заранее спасибо.


person Vince    schedule 06.03.2009    source источник
comment
Редактировать: я не мог заставить его работать, и через несколько часов я понял, что утилита pilfont.py фактически создает 2 файла, .pil и .pdm (bdf является только посредником). Вам нужны оба этих файла, а не только .pil -.-   -  person Tom    schedule 16.11.2014


Ответы (1)


Эврика!

Просто нужно было указать разрешение 72 dpi (по умолчанию 100) для otf2bdf:

otf2bdf -p 8 -r 72 -o fonts/slkscr.bdf fonts/slkscr.ttf

Теперь alt textвыглядит великолепно!

person Vince    schedule 06.03.2009
comment
Вы знаете, почему это так? Кажется нелогичным, что меньшее количество точек на дюйм даст лучшее разрешение/рендеринг. - person tgray; 06.03.2009
comment
Это просто вопрос того, какой размер в точках шрифт произвольно решает сопоставить с пикселем. Шелкография выбрала 72 dpi, так как это разрешение старой школы Mac OS. - person bobince; 07.03.2009
comment
Как я могу увидеть, что шелкография использует 72 dpi? Это видно где-нибудь в файле? - person Konstantin Schubert; 12.02.2021
comment
Не вспомню, так как это было давненько! Зная свое прошлое (и настоящее!) Я подозреваю, что пробовал разные dpi, пока не нашел то, которое сработало! - person Vince; 12.02.2021