diff options
author | Behdad Esfahbod <behdad@gnome.org> | 2005-12-26 07:13:02 +0000 |
---|---|---|
committer | Behdad Esfahbod <behdad@src.gnome.org> | 2005-12-26 07:13:02 +0000 |
commit | 064ed86a45773b770c746073871b61c6c050a919 (patch) | |
tree | e68ccd1e58ffe6f71f177b200972e7a6ce37fd09 /modules | |
parent | fe003b6f1f5f6966cc19ac490d9a00bf5cd7a77c (diff) | |
download | pango-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.c | 2 | ||||
-rw-r--r-- | modules/basic/basic-fc.c | 25 | ||||
-rw-r--r-- | modules/hebrew/hebrew-fc.c | 23 | ||||
-rw-r--r-- | modules/syriac/syriac-fc.c | 2 |
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); } |