[Bf-blender-cvs] [d0856d1d546] blender2.8: Fix most of 'disappearing' first letter in right-aligned labels.

Bastien Montagne noreply at git.blender.org
Sun Jun 24 18:20:31 CEST 2018


Commit: d0856d1d546a07acf29e3a2ac873fe7dc1d7c61b
Author: Bastien Montagne
Date:   Sun Jun 24 17:47:40 2018 +0200
Branches: blender2.8
https://developer.blender.org/rBd0856d1d546a07acf29e3a2ac873fe7dc1d7c61b

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.

===================================================================

M	source/blender/blenfont/intern/blf_font.c
M	source/blender/editors/interface/interface_widgets.c

===================================================================

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;
 }



More information about the Bf-blender-cvs mailing list