2016-05-05 4 views
1

Есть ли способ получить наибольшее слово в списке, но не по количеству символов в каждом слове, а по его ширине после печати?Получить печатную длину слова по ширине текста

Например, ширина символа I меньше длины m.

Примеры:

mwmwmwmwmw (Len = 10)

iiiiiiiiiiiiiiiiiiii (Len = 20)

Как мы можем видеть в этом примере, Len второй строки выше, чем первый , но по ширине он короче.

Я знаю, что это странный вопрос, но интересный, видя различные подходы.

Конечно, это зависит от шрифта, используемого во время печати :)

Примечание: Я знаю, что это зависит от шрифта, но даже в этом случае, следует более или менее произойти для каждого шрифта (то, что я имею в виду что м будет больше загар I)

+0

Могу ли я узнать мотивацию этого? – Peaceful

+1

Вы правы, что это будет зависеть от шрифта. Какую графическую библиотеку вы используете? – Chris

+3

Вы сказали это: это зависит от того, как отображаются персонажи - какой шрифт, кернинг, интервал и множество других факторов используются. Какая информация об рендеринге у вас есть? – mhawke

ответ

0

Я наконец использовал другой вопрос link чтобы создать функцию, которая делает то, что я хочу:

def get_printed_size(text, myfont): 
    root = tk.Tk() 
    font = tkFont.Font(family=myfont[0], size=myfont[1]) 
    (w,h) = (font.measure(text),font.metrics("linespace")) 
    print "%s %s: (%s,%s)" % (myfont[0],myfont[1],w,h) 
    return w 

, который можно назвать:

get_printed_size("some text", ("Helvetica",10))