From 369e690c55d6b30df191be67288eb683f5e3d8d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pa=CC=84vels=20Nadtoc=CC=8Cajevs?= <7645683+bruvzg@users.noreply.github.com> Date: Sun, 16 Nov 2025 20:59:26 +0200 Subject: [PATCH] [TextServer] Remove negative offset from the first char when shaping substrings. --- modules/text_server_adv/text_server_adv.cpp | 4 ++++ modules/text_server_fb/text_server_fb.cpp | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/modules/text_server_adv/text_server_adv.cpp b/modules/text_server_adv/text_server_adv.cpp index 4c211dc64cf..8d49120a0aa 100644 --- a/modules/text_server_adv/text_server_adv.cpp +++ b/modules/text_server_adv/text_server_adv.cpp @@ -5435,6 +5435,10 @@ bool TextServerAdvanced::_shape_substr(ShapedTextDataAdvanced *p_new_sd, const S } p_new_sd->width += gl.advance * gl.repeat; } + if (p_new_sd->glyphs.is_empty() && gl.x_off < 0.0) { + gl.advance += -gl.x_off; + gl.x_off = 0.0; + } p_new_sd->glyphs.push_back(gl); } } diff --git a/modules/text_server_fb/text_server_fb.cpp b/modules/text_server_fb/text_server_fb.cpp index 554108faf1c..ac39da6f152 100644 --- a/modules/text_server_fb/text_server_fb.cpp +++ b/modules/text_server_fb/text_server_fb.cpp @@ -4117,6 +4117,10 @@ RID TextServerFallback::_shaped_text_substr(const RID &p_shaped, int64_t p_start new_sd->descent = MAX(new_sd->descent, Math::round(get_hex_code_box_size(gl.font_size, gl.index).x * 0.5)); } } + if (new_sd->glyphs.is_empty() && gl.x_off < 0.0) { + gl.advance += -gl.x_off; + gl.x_off = 0.0; + } new_sd->width += gl.advance * gl.repeat; } new_sd->glyphs.push_back(gl);