diff options
author | Owen Taylor <otaylor@redhat.com> | 2004-12-16 00:11:02 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 2004-12-16 00:11:02 +0000 |
commit | abb6ddb657b6299fbaf05c0cc815823d15808f2e (patch) | |
tree | e61fdc734c8efe50e52323e8e8416b1cc24c24bb /modules | |
parent | 02cee907a827e0fd8cd78237c9bc1c4618b9e660 (diff) | |
download | pango-abb6ddb657b6299fbaf05c0cc815823d15808f2e.tar.gz |
Force zero-width marks to glyph index 0 so they won't be drawn. (#145233,
Wed Dec 15 18:50:18 2004 Owen Taylor <otaylor@redhat.com>
* modules/indic/indic-fc.c modules/indic/indic-ot.h:
Force zero-width marks to glyph index 0 so they
won't be drawn. (#145233, Aniruddha Shankar)
Diffstat (limited to 'modules')
-rw-r--r-- | modules/indic/indic-fc.c | 13 | ||||
-rw-r--r-- | modules/indic/indic-ot.h | 19 |
2 files changed, 28 insertions, 4 deletions
diff --git a/modules/indic/indic-fc.c b/modules/indic/indic-fc.c index 721e974b..788bc64f 100644 --- a/modules/indic/indic-fc.c +++ b/modules/indic/indic-fc.c @@ -248,6 +248,7 @@ get_gpos_ruleset (FT_Face face, PangoIndicInfo *indic_info) return ruleset; } + static void set_glyphs (PangoFont *font, FT_Face face, const gunichar *wcs, gulong *tags, glong n_glyphs, PangoOTBuffer *buffer) { @@ -257,10 +258,14 @@ set_glyphs (PangoFont *font, FT_Face face, const gunichar *wcs, gulong *tags, gl for (i = 0; i < n_glyphs; i += 1) { - pango_ot_buffer_add_glyph (buffer, - FT_Get_Char_Index (face, wcs[i]), - tags[i], - i); + guint glyph; + + if (ZERO_WIDTH_CHAR (wcs[i])) + glyph = 0; + else + glyph = FT_Get_Char_Index (face, wcs[i]); + + pango_ot_buffer_add_glyph (buffer, glyph, tags[i], i); } } diff --git a/modules/indic/indic-ot.h b/modules/indic/indic-ot.h index f7d13559..d6b498b3 100644 --- a/modules/indic/indic-ot.h +++ b/modules/indic/indic-ot.h @@ -175,6 +175,25 @@ enum indic_glyph_property_ #define HAS_BELOW_BASE_FORM(charClass) ((charClass & CF_BELOW_BASE) != 0) +/* This macro definition is shared with basic-common.h + * + * Zero Width characters: + * + * 200B ZERO WIDTH SPACE + * 200C ZERO WIDTH NON-JOINER + * 200D ZERO WIDTH JOINER + * 200E LEFT-TO-RIGHT MARK + * 200F RIGHT-TO-LEFT MARK + * 202A LEFT-TO-RIGHT EMBEDDING + * 202B RIGHT-TO-LEFT EMBEDDING + * 202C POP DIRECTIONAL FORMATTING + * 202D LEFT-TO-RIGHT OVERRIDE + * 202E RIGHT-TO-LEFT OVERRIDE + * FEFF ZERO WIDTH NO-BREAK SPACE + */ +#define ZERO_WIDTH_CHAR(wc) \ + (((wc) >= 0x200B && (wc) <= 0x200F) || ((wc) >= 0x202A && (wc) <= 0x202E) || ((wc) == 0xFEFF)) + struct _IndicOTClassTable { gunichar firstChar; |