diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2024-03-05 09:56:22 +0100 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2024-03-05 09:56:22 +0100 |
commit | b59166d77ad46a924aa919c334c973756a892cea (patch) | |
tree | 603f67f4538108badfeae58e34eae1ae8c3ea57a /modules/text_server_adv/text_server_adv.cpp | |
parent | a36979674150fc5944bb0dabcea5473d55188548 (diff) | |
parent | b58e45ed4379cf74423f5341ae7c52151483504b (diff) | |
download | redot-engine-b59166d77ad46a924aa919c334c973756a892cea.tar.gz |
Merge pull request #89171 from bruvzg/fix_fb_breaks
[TextServer] Fix fallback line breaking code adding two breaks for CR-LF.
Diffstat (limited to 'modules/text_server_adv/text_server_adv.cpp')
-rw-r--r-- | modules/text_server_adv/text_server_adv.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/modules/text_server_adv/text_server_adv.cpp b/modules/text_server_adv/text_server_adv.cpp index ea88278a17..3da19aaee8 100644 --- a/modules/text_server_adv/text_server_adv.cpp +++ b/modules/text_server_adv/text_server_adv.cpp @@ -5360,11 +5360,14 @@ bool TextServerAdvanced::_shaped_text_update_breaks(const RID &p_shaped) { // No data loaded - use fallback. for (int j = r_start; j < r_end; j++) { char32_t c = sd->text[j - sd->start]; + char32_t c_next = (j < r_end) ? sd->text[j - sd->start + 1] : 0x0000; if (is_whitespace(c)) { sd->breaks[j + 1] = false; } if (is_linebreak(c)) { - sd->breaks[j + 1] = true; + if (c != 0x000D || c_next != 0x000A) { // Skip first hard break in CR-LF pair. + sd->breaks[j + 1] = true; + } } } } else { |