free_gen
@free_gen

Как добавить outline (обводку) для текста в LUA?

Имеется GUI написанное на Lua и фреймворке LOVE. В зависимости от ситуации, иногда шрифты сливаются с фоном (цвет у всех белый), поэтому я захотел добавить обводку черного цвета для всех текстов. Но как выяснилось, LUA и фреймворк LOVE не предусматривает такой возможности. Однако, в сети можно найти примеры реализации, когда текст сначала отрисовывается 8 раз черным цветом со смещениями в разных направлениях, и затем поверх рисуется белый текст. Проблема в том, что я совсем не знаком с этим языком, и не имею представления, как правильно это все реализовать.
Для инициализации вообще всего текста используется отдельный файл, в котором следующий код:
function CFont:Init(name, size)
	self.size = size
	self.name = name
	self.font = lg.newFont( gPaths.fonts .. "/" .. self.name, self.size )
	self.font:setLineHeight( gFontLineHeight )
end

Либо реализовать обводку для одного шрифта, на примере этого кода:
function CUIFg:InitBottomText(  )
	self.bottomText = ""
	self.bottomTextSize = 0
	self.bottomTextObjPosY = 0
	
	local font = Common:GetFont(10, gUIFonts.default)
	self.bottomTextObj = lg.newText(font)
	self.bottomTextObjScale 	= 0
	self.bottomTextObjHeight = self.bottomTextObj:getHeight()
	
	self.bottomTextBoxWidth, self.bottomTextBoxHeight = 620, 60
	self.bottomTextBoxX0, self.bottomTextBoxY0 = gViewport.width/2 - self.bottomTextBoxWidth/2, self.uiBottomPosY - self.bottomTextBoxHeight/2 - 35
	self.bottomTextBoxCenterX, self.bottomTextBoxCenterY = self.bottomTextBoxX0 + self.bottomTextBoxWidth/2, self.uiBottomPosY + 80 - self.bottomTextBoxHeight/2
end


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

В общем, нужно сделать обводку для всех текстов = 3px.
  • Вопрос задан
  • 46 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы