diff options
Diffstat (limited to 'scene/gui/label.cpp')
-rw-r--r-- | scene/gui/label.cpp | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/scene/gui/label.cpp b/scene/gui/label.cpp index 11172ac7a9..6b12947651 100644 --- a/scene/gui/label.cpp +++ b/scene/gui/label.cpp @@ -103,8 +103,7 @@ void Label::_notification(int p_what) { int lines_visible = (size.y + line_spacing) / font_h; - // ceiling to ensure autowrapping does not cut text - int space_w = Math::ceil(font->get_char_size(' ').width); + real_t space_w = font->get_char_size(' ').width; int chars_total = 0; int vbegin = 0, vsep = 0; @@ -225,6 +224,7 @@ void Label::_notification(int p_what) { return; } if (from->space_count) { + chars_total += from->space_count; /* spacing */ x_ofs += space_w * from->space_count; if (can_fill && align == ALIGN_FILL && spaces) { @@ -313,8 +313,8 @@ Size2 Label::get_minimum_size() const { int Label::get_longest_line_width() const { Ref<Font> font = get_font("font"); - int max_line_width = 0; - int line_width = 0; + real_t max_line_width = 0; + real_t line_width = 0; for (int i = 0; i < xl_text.size(); i++) { @@ -332,8 +332,7 @@ int Label::get_longest_line_width() const { } } else { - // ceiling to ensure autowrapping does not cut text - int char_width = Math::ceil(font->get_char_size(current, xl_text[i + 1]).width); + real_t char_width = font->get_char_size(current, xl_text[i + 1]).width; line_width += char_width; } } @@ -341,7 +340,8 @@ int Label::get_longest_line_width() const { if (line_width > max_line_width) max_line_width = line_width; - return max_line_width; + // ceiling to ensure autowrapping does not cut text + return Math::ceil(max_line_width); } int Label::get_line_count() const { @@ -388,12 +388,11 @@ void Label::regenerate_word_cache() { Ref<Font> font = get_font("font"); - int current_word_size = 0; + real_t current_word_size = 0; int word_pos = 0; - int line_width = 0; + real_t line_width = 0; int space_count = 0; - // ceiling to ensure autowrapping does not cut text - int space_width = Math::ceil(font->get_char_size(' ').width); + real_t space_width = font->get_char_size(' ').width; int line_spacing = get_constant("line_spacing"); line_count = 1; total_char_cache = 0; @@ -413,7 +412,7 @@ void Label::regenerate_word_cache() { bool separatable = (current >= 0x2E08 && current <= 0xFAFF) || (current >= 0xFE30 && current <= 0xFE4F); //current>=33 && (current < 65||current >90) && (current<97||current>122) && (current<48||current>57); bool insert_newline = false; - int char_width = 0; + real_t char_width = 0; if (current < 33) { @@ -454,8 +453,7 @@ void Label::regenerate_word_cache() { if (current_word_size == 0) { word_pos = i; } - // ceiling to ensure autowrapping does not cut text - char_width = Math::ceil(font->get_char_size(current, xl_text[i + 1]).width); + char_width = font->get_char_size(current, xl_text[i + 1]).width; current_word_size += char_width; line_width += char_width; total_char_cache++; |