Fix most of 'disappearing' first letter in right-aligned labels.
BLF' blf_font_width_to_strlen() could easily generate strings with up to nearly two pixels length over requested limit! Note that the fiddling between floats and ints values make things really confusing here... :/ There is still a few limit cases where, even though computed str length is now always below reauested limit, we still get first letter disappearing, no idea why currently.
This commit is contained in:
parent
6454319033
commit
d0856d1d54
|
@ -652,7 +652,7 @@ size_t blf_font_width_to_strlen(FontBLF *font, const char *str, size_t len, floa
|
|||
int pen_x = 0;
|
||||
size_t i = 0, i_prev;
|
||||
GlyphBLF **glyph_ascii_table = font->glyph_cache->glyph_ascii_table;
|
||||
const int width_i = (int)width + 1;
|
||||
const int width_i = (int)width;
|
||||
int width_new;
|
||||
|
||||
BLF_KERNING_VARS(font, has_kerning, kern_mode);
|
||||
|
@ -674,7 +674,7 @@ size_t blf_font_width_to_strlen(FontBLF *font, const char *str, size_t len, floa
|
|||
|
||||
pen_x += g->advance_i;
|
||||
|
||||
if (width_i < pen_x) {
|
||||
if (width_i <= pen_x) {
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -1500,6 +1500,8 @@ float UI_text_clip_middle_ex(
|
|||
BLF_disable(fstyle->uifont_id, BLF_KERNING_DEFAULT);
|
||||
}
|
||||
|
||||
BLI_assert(strwidth <= okwidth);
|
||||
|
||||
return strwidth;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue