diff options
Diffstat (limited to 'modules/text_server_fb/text_server_fb.cpp')
| -rw-r--r-- | modules/text_server_fb/text_server_fb.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/modules/text_server_fb/text_server_fb.cpp b/modules/text_server_fb/text_server_fb.cpp index bf7cc776c0..4976c70b3b 100644 --- a/modules/text_server_fb/text_server_fb.cpp +++ b/modules/text_server_fb/text_server_fb.cpp @@ -4084,11 +4084,17 @@ PackedInt32Array TextServerFallback::_shaped_text_get_character_breaks(const RID ERR_FAIL_COND_V(!sd, PackedInt32Array()); MutexLock lock(sd->mutex); + if (!sd->valid) { + const_cast<TextServerFallback *>(this)->_shaped_text_shape(p_shaped); + } PackedInt32Array ret; - ret.resize(sd->end - sd->start); - for (int i = sd->start; i < sd->end; i++) { - ret.write[i] = i; + int size = sd->end - sd->start; + if (size > 0) { + ret.resize(size); + for (int i = 0; i < size; i++) { + ret.write[i] = i + 1 + sd->start; + } } return ret; } |
