Методы создания предварительного просмотра текста из шрифта - PullRequest
1 голос
/ 17 декабря 2009

В настоящее время я использую команду преобразования ImageMagick для создания предварительного просмотра текста (.png) из файла шрифта .ttf. В целом, автоматическое позиционирование текста лучше, несмотря на то, что иногда не удается прочитать какой-либо действительный файл .ttf. Скорость не велика, но приемлема.

ImageFont PIL выглядит плохо для выравнивания текста, часто печатает левый нижний угол первого символа вне холста.

Кто-нибудь знает какой-нибудь лучший выбор, кроме двух выше? Интересно, какие технологии нужны для предварительного просмотра текста на таких сайтах, как myfonts.com с таким большим трафиком.

EDIT

Пример шрифта PIL не смог правильно нарисовать шрифты. В этом примере используется шрифт Hanford script

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')

Выходное изображение содержит только верхнюю половину «сценария Хэнфорда».

Я попытался с помощью команды конвертации imagemagick:

convert -font "HANFORD_.TTF" -background transparent -gravity center -size 830x80 label:'Hanford script' output.png

Выходное изображение было таким же, как у PIL.

Это не единственный шрифт, который PIL или imagemagick не могут получить правильный размер текста. С некоторыми другими шрифтами, такими как Ginga , они просто увеличивают высоту текста, в результате чего верхняя половина выходных изображений остается пустой. Кто-нибудь знает причину?

Ответы [ 2 ]

1 голос
/ 19 декабря 2009

Я полагаю, что такие сайты управляются небольшим нестандартным кодом, использующим что-то вроде Pango , или просто голыми Freetype в конце для рендеринга в файлы изображений.

Изображения могут даже никогда не попасть на диск, хотя я уверен, что все кешируется там, где это необходимо.

0 голосов
/ 19 декабря 2009

Это что-то необычное, но вы смотрели на sIFR (Масштабируемая замена вспышки Inman) ? Он используется для того, чтобы веб-дизайнеры могли вставлять короткие текстовые блоки (заголовки и т. П.) С текстом, отображаемым любым шрифтом, который они выбрали, даже если пользователь не установил его локально.

Если вы создадите простую веб-страницу с использованием sIFR и предоставите ее локально себе, это может соответствовать вашим целям.

Как я уже сказал, это довольно странное решение, но ...: -)

...