vlc | branch: master | Francois Cartegnie <[email protected]> | Wed Jun 7 16:24:31 2017 +0200| [fbc11b6ff4c992a5c69828db277f35f4da5b249c] | committer: Francois Cartegnie
text_renderer: freetype: refactor whitespace and get more accurate length > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=fbc11b6ff4c992a5c69828db277f35f4da5b249c --- modules/text_renderer/freetype/text_layout.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/modules/text_renderer/freetype/text_layout.c b/modules/text_renderer/freetype/text_layout.c index c109c04031..1d32a83318 100644 --- a/modules/text_renderer/freetype/text_layout.c +++ b/modules/text_renderer/freetype/text_layout.c @@ -1310,6 +1310,15 @@ static inline void ReleaseGlyphBitMaps(glyph_bitmaps_t *p_bitmaps) FT_Done_Glyph( p_bitmaps->p_outline ); } +static inline bool IsWhitespaceAt( paragraph_t *p_paragraph, size_t i ) +{ + return ( p_paragraph->p_code_points[ i ] == ' ' +#ifdef HAVE_FRIBIDI + || p_paragraph->p_types[ i ] == FRIBIDI_TYPE_WS +#endif + ); +} + static int LayoutParagraph( filter_t *p_filter, paragraph_t *p_paragraph, unsigned i_max_width, unsigned i_max_advance_x, line_desc_t **pp_lines, bool b_grid ) @@ -1349,8 +1358,12 @@ static int LayoutParagraph( filter_t *p_filter, paragraph_t *p_paragraph, #ifdef HAVE_FRIBIDI p_paragraph->pi_reordered_indices[ i ] = i; #endif - i_total_width += p_paragraph->p_glyph_bitmaps[ i ].i_x_advance; + if( !IsWhitespaceAt( p_paragraph, i ) || i != i_last_space + 1 ) + i_total_width += p_paragraph->p_glyph_bitmaps[ i ].i_x_advance; + else + i_last_space = i; } + i_last_space = -1; if( i_total_width == 0 ) { @@ -1374,11 +1387,7 @@ static int LayoutParagraph( filter_t *p_filter, paragraph_t *p_paragraph, break; } - if( p_paragraph->p_code_points[ i ] == ' ' -#ifdef HAVE_FRIBIDI - || p_paragraph->p_types[ i ] == FRIBIDI_TYPE_WS -#endif - ) + if( IsWhitespaceAt( p_paragraph, i ) ) { if( i_line_start == i ) { _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
