From dc683af2e3834e7f615a1520dc1434085f63f89e Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Mon, 22 May 2006 04:34:06 +0000 Subject: =?UTF-8?q?Bug=20341922=20=E2=80=93=20pango=20should=20handle=20mo?= =?UTF-8?q?re=20characters=20as=20zero=20width=20Patch?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 2006-05-22 Behdad Esfahbod Bug 341922 – pango should handle more characters as zero width Patch from Roozbeh Pournader * pango/pango-utils.c (pango_is_zero_width): Handle the following too: U+00AD SOFT HYPHEN U+034F COMBINING GRAPHEME JOINER U+2060 WORD JOINER U+2061 FUNCTION APPLICATION U+2062 INVISIBLE TIMES U+2063 INVISIBLE SEPARATOR --- ChangeLog | 14 ++++++++++++++ pango/pango-utils.c | 22 ++++++++++++++++++---- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2d640c30..82a73a76 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +2006-05-22 Behdad Esfahbod + + Bug 341922 – pango should handle more characters as zero width + Patch from Roozbeh Pournader + + * pango/pango-utils.c (pango_is_zero_width): Handle the following too: + + U+00AD SOFT HYPHEN + U+034F COMBINING GRAPHEME JOINER + U+2060 WORD JOINER + U+2061 FUNCTION APPLICATION + U+2062 INVISIBLE TIMES + U+2063 INVISIBLE SEPARATOR + 2006-05-22 Tor Lillqvist * pango/pangowin32.c (pango_win32_font_get_metrics): Calculate diff --git a/pango/pango-utils.c b/pango/pango-utils.c index 7758c27f..dd3f8f56 100644 --- a/pango/pango-utils.c +++ b/pango/pango-utils.c @@ -1786,23 +1786,37 @@ gboolean pango_is_zero_width (gunichar ch) { /* Zero Width characters: + * + * 00AD SOFT HYPHEN + * 034F COMBINING GRAPHEME JOINER * * 200B ZERO WIDTH SPACE * 200C ZERO WIDTH NON-JOINER * 200D ZERO WIDTH JOINER * 200E LEFT-TO-RIGHT MARK * 200F RIGHT-TO-LEFT MARK + * * 2028 LINE SEPARATOR + * * 202A LEFT-TO-RIGHT EMBEDDING * 202B RIGHT-TO-LEFT EMBEDDING * 202C POP DIRECTIONAL FORMATTING * 202D LEFT-TO-RIGHT OVERRIDE * 202E RIGHT-TO-LEFT OVERRIDE + * + * 2060 WORD JOINER + * 2061 FUNCTION APPLICATION + * 2062 INVISIBLE TIMES + * 2063 INVISIBLE SEPARATOR + * * FEFF ZERO WIDTH NO-BREAK SPACE */ - return ((ch & ~(gunichar)0x003F) == 0x2000 && ( + return ((ch & ~(gunichar)0x007F) == 0x2000 && ( (ch >= 0x200B && ch <= 0x200F) || - ch == 0x2028 || - (ch >= 0x202A && ch <= 0x202E) - )) || ch == 0xFEFF; + (ch >= 0x202A && ch <= 0x202E) || + (ch >= 0x2060 && ch <= 0x2063) || + (ch == 0x2028) + )) || G_UNLIKELY (ch == 0x00AD + || ch == 0x034F + || ch == 0xFEFF); } -- cgit v1.2.1