1
0
Fork 0

[TextServer] Fix embedded object keys in substrings.

This commit is contained in:
Pāvels Nadtočajevs 2025-01-19 10:18:16 +02:00
parent 7b1ed520bd
commit 7f4481284e
2 changed files with 4 additions and 4 deletions

View File

@ -4867,8 +4867,8 @@ bool TextServerAdvanced::_shape_substr(ShapedTextDataAdvanced *p_new_sd, const S
gl.index = index; gl.index = index;
gl.advance = w; gl.advance = w;
} }
if ((gl.flags & GRAPHEME_IS_EMBEDDED_OBJECT) == GRAPHEME_IS_EMBEDDED_OBJECT && gl.span_index >= 0 && gl.span_index < span_size) { 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].embedded_key; Variant key = p_sd->spans[gl.span_index + p_new_sd->first_span].embedded_key;
if (key != Variant()) { if (key != Variant()) {
ShapedTextDataAdvanced::EmbeddedObject obj = p_sd->objects[key]; ShapedTextDataAdvanced::EmbeddedObject obj = p_sd->objects[key];
if (p_new_sd->orientation == ORIENTATION_HORIZONTAL) { if (p_new_sd->orientation == ORIENTATION_HORIZONTAL) {

View File

@ -3633,8 +3633,8 @@ RID TextServerFallback::_shaped_text_substr(const RID &p_shaped, int64_t p_start
gl.index = 0x00ad; gl.index = 0x00ad;
gl.advance = font_get_glyph_advance(gl.font_rid, gl.font_size, 0x00ad).x; 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) { 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].embedded_key; Variant key = sd->spans[gl.span_index + new_sd->first_span].embedded_key;
if (key != Variant()) { if (key != Variant()) {
ShapedTextDataFallback::EmbeddedObject obj = sd->objects[key]; ShapedTextDataFallback::EmbeddedObject obj = sd->objects[key];
if (new_sd->orientation == ORIENTATION_HORIZONTAL) { if (new_sd->orientation == ORIENTATION_HORIZONTAL) {