Возникла задача “нарисовать” на картинке с заданной шириной текст.
Из условий: мы знаем, сколько занимает пикселов отдельная буква (текст)
Вот мой набросок кода, решение “в лоб” (используется библиотека PIL)
import Image
import ImageDraw
import ImageFont
f=open('sample.txt').read().decode('cp1251').replace('\r','')
# создаем изображение 1х1
temp=Image.new('RGB',(1,1))
t=ImageDraw.ImageDraw(temp)
# выбираем шрифт
font=ImageFont.truetype('Arial.ttf',int(15))
buf=''
out=[]
# проходимся по тексту
for x in f:
if t.textsize(buf,font=font)[0]<340 and x<>'\n':
# если текст еще уместится в строку, добавляем символ
buf=buf+x
else:
# иначе "переносим" на следующую строку
out.append(buf)
buf=x.replace('\n','')
# создаем новое изображение...
img=Image.new('RGB',(360,len(out)*17),0xffffff)
draw=ImageDraw.ImageDraw(img)
# рисуем текст построчно
for x in xrange(len(out)):
draw.text((3,x*17),out[x],fill='black',font=font)
img.show()
Может кто подскажет более быстрый алгоритм.
P.S. Сторонние библиотеки использовать затруднительно, так как результат должен работать на pys60, где есть только функция measure_text - аналог textsize в PIL