В настоящее время я использую команду ImageMagick convert для создания предварительного просмотра текста (.png) из файла шрифта .ttf. В целом, это лучше при автоматическом позиционировании текста, несмотря на то, что иногда ему не удавалось прочитать какой-нибудь действительный файл .ttf. Скорость небольшая, но приемлемая.
ImageFont PIL выглядит не очень хорошо для выравнивания текста, часто печатает нижний левый угол первого символа за пределами холста.
Кто-нибудь знает лучший выбор, кроме двух вышеупомянутых? Интересно, какие технологии необходимы для поддержки части предварительного просмотра текста на таких сайтах, как myfonts.com, с таким большим трафиком.
ИЗМЕНИТЬ
Пример шрифта PIL не может правильно рисовать шрифты. В примере используется шрифт скрипт Хэнфорда.
import Image, ImageDraw, ImageFont
font = ImageFont.truetype('HANFORD_.TTF', 122)
text_width, text_height = font.getsize('Hanford script')
print text_width, text_height
>>> 833 47
img = Image.new('RGBA', (text_width, text_height))
draw = ImageDraw.Draw(img)
draw.text((0, 0), 'Hanford script', font=font, fill=(0, 0, 0))
img.save('output.png')
Выходное изображение содержит только верхнюю половину «сценария Хэнфорда».
Я пробовал использовать команду convert imagemagick:
convert -font "HANFORD_.TTF" -background transparent -gravity center -size 830x80 label:'Hanford script' output.png
Выходное изображение было таким же, как и у меня с помощью PIL.
Это не единственный шрифт, для которого PIL или imagemagick не могут получить правильный размер текста. С некоторыми другими шрифтами, такими как Ginga, они просто увеличивают высоту текста, что приводит к верхней половине выходных изображений пустые. Кто-нибудь знает причину?