Вот идея.
Прежде всего, оцените, сколько строк вы хотите, чтобы текст был, пусть это число будет n
.Затем предположим, что количество символов в тексте равно c
, затем вы должны разбить текст на строки так, чтобы ни одна строка не содержала более floor(c / n)
символов (вы можете сделать это жадно), давайте назовем это cPerLine
.(Обратите внимание, что вы также можете использовать динамическое программирование, чтобы выполнить «перенос слов» для уменьшения «шероховатости» (т. Е. Разницы между длинами строк), см. http://en.wikipedia.org/wiki/Word_wrap для деталей)
Предположим, что среднееширина для каждого символа (в зависимости от размера, который вы используете, и вы можете использовать моноширинный шрифт, такой как Courier New ), составляет w
пикселей.Если ширина контейнера x
, вы можете легко рассчитать интервал между символами: floor(x / cPerline) - w
.Вам также необходимо учитывать межстрочный интервал , поэтому, если средняя высота каждого символа равна h
, а высота контейнера y
, аналогично, межстрочный интервал должен составлять floor(y / n) - h
.
Надеюсь, это помогло.