diff --git a/modules/text_server_adv/text_server_adv.cpp b/modules/text_server_adv/text_server_adv.cpp index 7fc86666e5c..d9513bdde59 100644 --- a/modules/text_server_adv/text_server_adv.cpp +++ b/modules/text_server_adv/text_server_adv.cpp @@ -4867,8 +4867,8 @@ bool TextServerAdvanced::_shape_substr(ShapedTextDataAdvanced *p_new_sd, const S gl.index = index; gl.advance = w; } - if ((gl.flags & GRAPHEME_IS_EMBEDDED_OBJECT) == GRAPHEME_IS_EMBEDDED_OBJECT && gl.span_index >= 0 && gl.span_index < span_size) { - Variant key = p_sd->spans[gl.span_index].embedded_key; + if ((gl.flags & GRAPHEME_IS_EMBEDDED_OBJECT) == GRAPHEME_IS_EMBEDDED_OBJECT && gl.span_index + p_new_sd->first_span >= 0 && gl.span_index + p_new_sd->first_span < span_size) { + Variant key = p_sd->spans[gl.span_index + p_new_sd->first_span].embedded_key; if (key != Variant()) { ShapedTextDataAdvanced::EmbeddedObject obj = p_sd->objects[key]; if (p_new_sd->orientation == ORIENTATION_HORIZONTAL) { diff --git a/modules/text_server_fb/text_server_fb.cpp b/modules/text_server_fb/text_server_fb.cpp index 561575a34bb..63ff8177ea4 100644 --- a/modules/text_server_fb/text_server_fb.cpp +++ b/modules/text_server_fb/text_server_fb.cpp @@ -3633,8 +3633,8 @@ RID TextServerFallback::_shaped_text_substr(const RID &p_shaped, int64_t p_start gl.index = 0x00ad; gl.advance = font_get_glyph_advance(gl.font_rid, gl.font_size, 0x00ad).x; } - if ((gl.flags & GRAPHEME_IS_EMBEDDED_OBJECT) == GRAPHEME_IS_EMBEDDED_OBJECT && gl.span_index >= 0 && gl.span_index < span_size) { - Variant key = sd->spans[gl.span_index].embedded_key; + if ((gl.flags & GRAPHEME_IS_EMBEDDED_OBJECT) == GRAPHEME_IS_EMBEDDED_OBJECT && gl.span_index + new_sd->first_span >= 0 && gl.span_index + new_sd->first_span < span_size) { + Variant key = sd->spans[gl.span_index + new_sd->first_span].embedded_key; if (key != Variant()) { ShapedTextDataFallback::EmbeddedObject obj = sd->objects[key]; if (new_sd->orientation == ORIENTATION_HORIZONTAL) {