diff options
author | Bastien Montagne <montagne29@wanadoo.fr> | 2018-06-24 18:47:40 +0300 |
---|---|---|
committer | Bastien Montagne <montagne29@wanadoo.fr> | 2018-06-24 18:51:13 +0300 |
commit | d0856d1d546a07acf29e3a2ac873fe7dc1d7c61b (patch) | |
tree | f6a825e6320129813f9dfd19ed964549da411513 /source | |
parent | 645431903317c55eab051284c2fa085f57c1543a (diff) |
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.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/blenfont/intern/blf_font.c | 4 | ||||
-rw-r--r-- | source/blender/editors/interface/interface_widgets.c | 2 |
2 files changed, 4 insertions, 2 deletions
diff --git a/source/blender/blenfont/intern/blf_font.c b/source/blender/blenfont/intern/blf_font.c index 13c857b0d4b..b3ab36f7bcc 100644 --- a/source/blender/blenfont/intern/blf_font.c +++ b/source/blender/blenfont/intern/blf_font.c @@ -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; } diff --git a/source/blender/editors/interface/interface_widgets.c b/source/blender/editors/interface/interface_widgets.c index 3b7ccb68fd4..a6f58fc056a 100644 --- a/source/blender/editors/interface/interface_widgets.c +++ b/source/blender/editors/interface/interface_widgets.c @@ -1500,6 +1500,8 @@ float UI_text_clip_middle_ex( BLF_disable(fstyle->uifont_id, BLF_KERNING_DEFAULT); } + BLI_assert(strwidth <= okwidth); + return strwidth; } |