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.

Index: modules/hangul/hangul-fc.c
===================================================================
RCS file: /cvs/gnome/pango/modules/hangul/hangul-fc.c,v
retrieving revision 1.25
diff -u -p -d -r1.25 hangul-fc.c
--- modules/hangul/hangul-fc.c	11 Apr 2006 08:31:06 -0000	1.25
+++ modules/hangul/hangul-fc.c	12 Sep 2006 16:58:04 -0000
@@ -231,6 +231,7 @@ render_syllable (PangoFont *font, gunich
   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, gunich
       /* 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)++;

