- 4,777
- 5,400
Все прекрасно понимают что произвольный текст нереально подогнать под DrawBox. Текст постоянно меняет длину и бывает что вылезает за пределы бокса. Для себя написал такую функцию:
её цель подгонять текст под бокс шириной 200. Проблема функции в дотошности, она банально считает символы. Я проверил что с размером шрифта 9 в строку влезает 26 символов. Функция обрезает слова, тоесть если на один больше, даже точку, и он улетит на некст строку. Что подскажите? Можно ли написать перенос по словам? Искать ближайший пробел?
Код:
function setInformer(text, showTime)
local lineLen = 26
local count = math.floor(text:len() / lineLen)
local newText = ""
local nLine = ""
if(count > 0 and #text ~= lineLen)then
for i = 0, count do
if(i > 0)then
nLine = "\n"
else
nLine = ""
end
newText = newText .. nLine .. string.gsub(string.sub(text, i*lineLen+1, (i*lineLen)+lineLen), "^ *(.*) *$", "%1")
end
text = newText
end
Informer.text = string.gsub(text, "^\n*(.*)\n*$", "%1")
Informer.time = os.time() + showTime
return
end