summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorBehdad Esfahbod <behdad@gnome.org>2005-12-26 07:13:02 +0000
committerBehdad Esfahbod <behdad@src.gnome.org>2005-12-26 07:13:02 +0000
commit064ed86a45773b770c746073871b61c6c050a919 (patch)
treee68ccd1e58ffe6f71f177b200972e7a6ce37fd09 /modules
parentfe003b6f1f5f6966cc19ac490d9a00bf5cd7a77c (diff)
downloadpango-064ed86a45773b770c746073871b61c6c050a919.tar.gz
modules/arabic/arabic-fc.c, modules/basic/basic-fc.c,
2005-12-26 Behdad Esfahbod <behdad@gnome.org> * modules/arabic/arabic-fc.c, * modules/basic/basic-fc.c, * modules/hebrew/hebrew-fc.c, * modules/syriac/syriac-fc.c: Use pango_is_zero_width() to not draw zero-width characters in the OpenType shapers. (Fixes bug #324621)
Diffstat (limited to 'modules')
-rw-r--r--modules/arabic/arabic-fc.c2
-rw-r--r--modules/basic/basic-fc.c25
-rw-r--r--modules/hebrew/hebrew-fc.c23
-rw-r--r--modules/syriac/syriac-fc.c2
4 files changed, 33 insertions, 19 deletions
diff --git a/modules/arabic/arabic-fc.c b/modules/arabic/arabic-fc.c
index e5d67ea1..7c2866a4 100644
--- a/modules/arabic/arabic-fc.c
+++ b/modules/arabic/arabic-fc.c
@@ -315,7 +315,7 @@ arabic_engine_shape (PangoEngineShape *engine,
input = buf;
}
- if (wc >= 0x200B && wc <= 0x200F) /* Zero-width characters */
+ if (pango_is_zero_width (wc)) /* Zero-width characters */
{
pango_ot_buffer_add_glyph (buffer, 0, properties[i], p - text);
}
diff --git a/modules/basic/basic-fc.c b/modules/basic/basic-fc.c
index 70b311cd..7daf2a93 100644
--- a/modules/basic/basic-fc.c
+++ b/modules/basic/basic-fc.c
@@ -379,19 +379,26 @@ basic_engine_shape (PangoEngineShape *engine,
input = buf;
}
- index = pango_fc_font_get_glyph (fc_font, wc);
-
- if (!index)
+ if (pango_is_zero_width (wc)) /* Zero-width characters */
{
- pango_ot_buffer_add_glyph (buffer, pango_fc_font_get_unknown_glyph (fc_font, wc),
- unknown_property, p - text);
+ pango_ot_buffer_add_glyph (buffer, 0, unknown_property, p - text);
}
else
- {
- cluster = p - text;
+ {
+ index = pango_fc_font_get_glyph (fc_font, wc);
- pango_ot_buffer_add_glyph (buffer, index,
- unknown_property, cluster);
+ if (!index)
+ {
+ pango_ot_buffer_add_glyph (buffer, pango_fc_font_get_unknown_glyph (fc_font, wc),
+ unknown_property, p - text);
+ }
+ else
+ {
+ cluster = p - text;
+
+ pango_ot_buffer_add_glyph (buffer, index,
+ unknown_property, cluster);
+ }
}
p = g_utf8_next_char (p);
diff --git a/modules/hebrew/hebrew-fc.c b/modules/hebrew/hebrew-fc.c
index 78b3cb9a..b2080db6 100644
--- a/modules/hebrew/hebrew-fc.c
+++ b/modules/hebrew/hebrew-fc.c
@@ -347,19 +347,26 @@ hebrew_engine_shape (PangoEngineShape *engine,
input = buf;
}
- index = pango_fc_font_get_glyph (fc_font, wc);
-
- if (!index)
+ if (pango_is_zero_width (wc)) /* Zero-width characters */
{
- pango_ot_buffer_add_glyph (buffer, pango_fc_font_get_unknown_glyph (fc_font, wc),
- unknown_property, p - text);
+ pango_ot_buffer_add_glyph (buffer, 0, unknown_property, p - text);
}
else
{
- cluster = p - text;
+ index = pango_fc_font_get_glyph (fc_font, wc);
- pango_ot_buffer_add_glyph (buffer, index,
- unknown_property, cluster);
+ if (!index)
+ {
+ pango_ot_buffer_add_glyph (buffer, pango_fc_font_get_unknown_glyph (fc_font, wc),
+ unknown_property, p - text);
+ }
+ else
+ {
+ cluster = p - text;
+
+ pango_ot_buffer_add_glyph (buffer, index,
+ unknown_property, cluster);
+ }
}
p = g_utf8_next_char (p);
diff --git a/modules/syriac/syriac-fc.c b/modules/syriac/syriac-fc.c
index 82270309..c22ac453 100644
--- a/modules/syriac/syriac-fc.c
+++ b/modules/syriac/syriac-fc.c
@@ -300,7 +300,7 @@ syriac_engine_shape (PangoEngineShape *engine,
pango_get_mirror_char (wc, &mirrored_ch))
wc = mirrored_ch;
- if (wc >= 0x200B && wc <= 0x200F) /* Zero-width characters */
+ if (pango_is_zero_width (wc))
{
pango_ot_buffer_add_glyph (buffer, 0, properties[i], p - text);
}