summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>2004-12-16 00:11:38 +0000
committerOwen Taylor <otaylor@src.gnome.org>2004-12-16 00:11:38 +0000
commitecaf8d9232fbb063037f1e736b9f4ff58243618a (patch)
tree09211445dce6f0de8ceb3b680e55451fdd70b38a
parent74c8a2b646f12eef4c7fb59dd2eece8a6d44499c (diff)
downloadpango-ecaf8d9232fbb063037f1e736b9f4ff58243618a.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)
-rw-r--r--ChangeLog6
-rw-r--r--ChangeLog.pre-1-106
-rw-r--r--ChangeLog.pre-1-86
-rw-r--r--modules/indic/indic-fc.c13
-rw-r--r--modules/indic/indic-ot.h19
5 files changed, 46 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index cb4486bc..efe0092f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+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)
+
Tue Dec 14 18:36:57 2004 Owen Taylor <otaylor@redhat.com>
* pango/pango-layout.c (pango_layout_copy): Copy
diff --git a/ChangeLog.pre-1-10 b/ChangeLog.pre-1-10
index cb4486bc..efe0092f 100644
--- a/ChangeLog.pre-1-10
+++ b/ChangeLog.pre-1-10
@@ -1,3 +1,9 @@
+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)
+
Tue Dec 14 18:36:57 2004 Owen Taylor <otaylor@redhat.com>
* pango/pango-layout.c (pango_layout_copy): Copy
diff --git a/ChangeLog.pre-1-8 b/ChangeLog.pre-1-8
index cb4486bc..efe0092f 100644
--- a/ChangeLog.pre-1-8
+++ b/ChangeLog.pre-1-8
@@ -1,3 +1,9 @@
+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)
+
Tue Dec 14 18:36:57 2004 Owen Taylor <otaylor@redhat.com>
* pango/pango-layout.c (pango_layout_copy): Copy
diff --git a/modules/indic/indic-fc.c b/modules/indic/indic-fc.c
index 4fab97cc..e8a11070 100644
--- a/modules/indic/indic-fc.c
+++ b/modules/indic/indic-fc.c
@@ -241,6 +241,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)
{
@@ -250,10 +251,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 3337fe0e..9dfe4465 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;