У меня есть пользовательский шрифт TrueType (TTF), который состоит из набора значков, которые я хотел бы представить, поскольку человек побитово отображает (GIF, PNG, безотносительно) для использования в сети. Вы думали бы, что это - простая задача, но по-видимому нет? Существует огромное, убил TTF-связанного программного обеспечения здесь:
http://cg.scs.carleton.ca/~luc/ttsoftware.html
Но это все варьируется уровни "не совсем, что я хочу", неработающие ссылки и/или трудно к невозможному для компиляции на современном поле Ubuntu - например, dumpglyphs (C++) и ttfgif (C) оба сбоя для компиляции должный затенить недостающие зависимости. Какие-либо идеи?
Попробуйте PIL ImageDraw и Модуль ImageFont
Код будет примерно таким
import Image, ImageFont, ImageDraw
im = Image.new("RGB", (800, 600))
draw = ImageDraw.Draw(im)
# use a truetype font
font = ImageFont.truetype("path/to/font/Arial.ttf", 30)
draw.text((0, 0), "ABCDEFGHIJKLMNOPQRSTUVWXYZ", font=font)
# remove unneccessory whitespaces if needed
im=im.crop(im.getbbox())
# write into file
im.save("img.png")
Используйте программное обеспечение для обработки изображений, например GIMP, чтобы отобразить все интересующие вас символы, затем сохраните каждый один в файл. Не быстро и не эффективно, но вы знаете, что получите.
Вот рабочая реализация ответа С.Марка, которая выгружает символы от «a» до «z» черным цветом в файлы PNG правильного размера:
import Image, ImageFont, ImageDraw
# use a truetype font
font = ImageFont.truetype("font.ttf", 16)
im = Image.new("RGBA", (16, 16))
draw = ImageDraw.Draw(im)
for code in range(ord('a'), ord('z') + 1):
w, h = draw.textsize(chr(code), font=font)
im = Image.new("RGBA", (w, h))
draw = ImageDraw.Draw(im)
draw.text((-2, 0), chr(code), font=font, fill="#000000")
im.save(chr(code) + ".png")