@@ -41,7 +41,7 @@ object FontRenderer : AbstractGUIRenderer(VertexAttrib.Group.FONT, shader("font/
4141 private val chars get() = RenderSettings .textFont
4242 private val emojis get() = RenderSettings .emojiFont
4343
44- private val shadowShift get() = RenderSettings .shadowShift * 5 .0
44+ private val shadowShift get() = RenderSettings .shadowShift * 10 .0
4545 private val baselineOffset get() = RenderSettings .baselineOffset * 2.0f - 10f
4646 private val gap get() = RenderSettings .gap * 0.5f - 0.8f
4747
@@ -65,7 +65,7 @@ object FontRenderer : AbstractGUIRenderer(VertexAttrib.Group.FONT, shader("font/
6565 ) = render {
6666 shader[" u_FontTexture" ] = 0
6767 shader[" u_EmojiTexture" ] = 1
68- shader[" u_SDFMin" ] = 0.3
68+ shader[" u_SDFMin" ] = 0.4
6969 shader[" u_SDFMax" ] = 1.0
7070
7171 bind(chars, emojis)
@@ -83,7 +83,7 @@ object FontRenderer : AbstractGUIRenderer(VertexAttrib.Group.FONT, shader("font/
8383 ) = render {
8484 shader[" u_FontTexture" ] = 0
8585 shader[" u_EmojiTexture" ] = 1
86- shader[" u_SDFMin" ] = 0.3
86+ shader[" u_SDFMin" ] = 0.4
8787 shader[" u_SDFMax" ] = 1.0
8888
8989 bind(chars, emojis)
@@ -143,10 +143,14 @@ object FontRenderer : AbstractGUIRenderer(VertexAttrib.Group.FONT, shader("font/
143143 parseEmoji : Boolean = LambdaMoji .isEnabled,
144144 ): Double {
145145 var width = 0.0
146- processText(text, scale = scale, parseEmoji = parseEmoji) {
147- char, _, _, _, isShadow -> width + = char.width * isShadow.toInt()
146+ var gaps = - 1
147+
148+ processText(text, scale = scale, parseEmoji = parseEmoji) { char, _, _, _, isShadow ->
149+ if (isShadow) return @processText
150+ width + = char.width; gaps++
148151 }
149- return width * getScaleFactor(scale)
152+
153+ return (width + gaps.coerceAtLeast(0 ) * gap) * getScaleFactor(scale)
150154 }
151155
152156 /* *
@@ -184,12 +188,11 @@ object FontRenderer : AbstractGUIRenderer(VertexAttrib.Group.FONT, shader("font/
184188 var posX = 0.0
185189 var posY = getHeight(scale) * - 0.5 + baselineOffset * actualScale
186190
187- fun drawGlyph (info : GlyphInfo ? , color : Color , offset : Double = 0.0 ) {
191+ fun drawGlyph (info : GlyphInfo ? , color : Color , isShadow : Boolean = false ) {
188192 if (info == null ) return
189- val isShadow = offset != 0.0
190193
191194 val scaledSize = info.size * actualScale
192- val pos1 = Vec2d (posX, posY) + offset * actualScale
195+ val pos1 = Vec2d (posX, posY) + shadowShift * actualScale * isShadow.toInt()
193196 val pos2 = pos1 + scaledSize
194197
195198 block(info, pos1, pos2, color, isShadow)
@@ -210,7 +213,7 @@ object FontRenderer : AbstractGUIRenderer(VertexAttrib.Group.FONT, shader("font/
210213
211214 val glyph = chars[char] ? : return @forEach
212215
213- if (shadow && shadowShift > 0.0 ) drawGlyph(glyph, shadowColor, shadowShift )
216+ if (shadow) drawGlyph(glyph, shadowColor, true )
214217 drawGlyph(glyph, color)
215218 }
216219 } else {
0 commit comments