summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--modules/hangul/hangul-fc.c12
2 files changed, 18 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index e38021f9..17e27050 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2006-09-12 Behdad Esfahbod <behdad@gnome.org>
+
+ Bug 355605 – hexbox with 0000 in it
+
+ * modules/hangul/hangul-fc.c (render_syllable): If decomposition
+ fails, backup and add a single hexbox glyph for the original
+ character.
+
2006-09-11 Behdad Esfahbod <behdad@gnome.org>
Bug 355435 – Invalid calls to pango_map_get_engine()
diff --git a/modules/hangul/hangul-fc.c b/modules/hangul/hangul-fc.c
index 64966648..8b85c19a 100644
--- a/modules/hangul/hangul-fc.c
+++ b/modules/hangul/hangul-fc.c
@@ -231,6 +231,7 @@ render_syllable (PangoFont *font, gunichar *text, int length,
for (i = 0; i < length; i++)
{
int jindex;
+ int oldlen;
if (text[i] == LFILL || text[i] == VFILL)
continue;
@@ -247,14 +248,21 @@ render_syllable (PangoFont *font, gunichar *text, int length,
/* This font has no glyphs on the Hangul Jamo area! Find a
fallback from the Hangul Compatibility Jamo area. */
jindex = text[i] - LBASE;
+ oldlen = *n_glyphs;
for (j = 0; j < 3 && (__jamo_to_ksc5601[jindex][j] != 0); j++)
{
wc = __jamo_to_ksc5601[jindex][j] - KSC_JAMOBASE + UNI_JAMOBASE;
index = (wc >= 0x3131) ? find_char (font, wc) : 0;
pango_glyph_string_set_size (glyphs, *n_glyphs + 1);
if (!index)
- set_glyph (font, glyphs, *n_glyphs, cluster_offset,
- get_unknown_glyph (font, index));
+ {
+ *n_glyphs = oldlen;
+ pango_glyph_string_set_size (glyphs, *n_glyphs + 1);
+ set_glyph (font, glyphs, *n_glyphs, cluster_offset,
+ get_unknown_glyph (font, text[i]));
+ (*n_glyphs)++;
+ break;
+ }
else
set_glyph (font, glyphs, *n_glyphs, cluster_offset, index);
(*n_glyphs)++;