From d7c2187c1f266d45a9f4775cc06fb73bc2e6ce71 Mon Sep 17 00:00:00 2001 From: Tom Hacohen Date: Sun, 30 Jan 2011 10:33:14 +0000 Subject: [PATCH] Evas font engine: Added skipping of invisible chars to the font drawing function - this means we can't draw them until we add a specil "draw inivisble" mode. SVN revision: 56424 --- legacy/evas/src/lib/engines/common/evas_font_draw.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/legacy/evas/src/lib/engines/common/evas_font_draw.c b/legacy/evas/src/lib/engines/common/evas_font_draw.c index 4a4e20bf89..75214db46b 100644 --- a/legacy/evas/src/lib/engines/common/evas_font_draw.c +++ b/legacy/evas/src/lib/engines/common/evas_font_draw.c @@ -5,7 +5,13 @@ #include "evas_bidi_utils.h" /*defines BIDI_SUPPORT if possible */ #include "evas_font_private.h" /* for Frame-Queuing support */ -#define WORD_CACHE_MAXLEN 50 +#define EVAS_FONT_CHARACTER_IS_INVISIBLE(x) ( \ + ((0x200C <= (x)) && ((x) <= 0x200D)) || /* ZWNJ..ZWH */ \ + ((0x200E <= (x)) && ((x) <= 0x200F)) || /* BIDI stuff */ \ + ((0x202A <= (x)) && ((x) <= 0x202E)) /* BIDI stuff */ \ + ) + +#define WORD_CACHE_MAXLEN 50 /* How many to cache */ #define WORD_CACHE_NWORDS 40 static int max_cached_words = WORD_CACHE_NWORDS; @@ -530,6 +536,8 @@ evas_common_font_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font int gl, kern; gl = *text; + if (EVAS_FONT_CHARACTER_IS_INVISIBLE(gl)) + continue; index = evas_common_font_glyph_search(fn, &fi, gl); LKL(fi->ft_mutex);