Bug 388702 - Crash when there's no Hangul glyph in the font.
authorChangwoo Ryu <cwryu@debian.org>
Wed, 3 Jan 2007 18:56:01 +0000 (18:56 +0000)
committerBehdad Esfahbod <behdad@src.gnome.org>
Wed, 3 Jan 2007 18:56:01 +0000 (18:56 +0000)
2007-01-03  Changwoo Ryu  <cwryu@debian.org>

        Bug 388702 - Crash when there's no Hangul glyph in the font.

        * modules/hangul/hangul-fc.c (render_syllable): Do not try to
        render unknown syllable glyphs as jamos.

        * modules/hangul/hangul-fc.c (hangul_engine_shape): Check if the
        remaining string is a syllable.

        Bug 388581 - Every last Hangul syllable is decomposed to jamos.

        * modules/hangul/hangul-fc.c (hangul_engine_shape): Check if the
        remaining string is a syllable.

svn path=/trunk/; revision=2125

ChangeLog
modules/hangul/hangul-fc.c

index 9a40d2d..9bfa123 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+2007-01-03  Changwoo Ryu  <cwryu@debian.org>
+
+       Bug 388702 - Crash when there's no Hangul glyph in the font.
+       
+       * modules/hangul/hangul-fc.c (render_syllable): Do not try to
+       render unknown syllable glyphs as jamos.
+
+       * modules/hangul/hangul-fc.c (hangul_engine_shape): Check if the
+       remaining string is a syllable.
+
+       Bug 388581 - Every last Hangul syllable is decomposed to jamos.
+
+       * modules/hangul/hangul-fc.c (hangul_engine_shape): Check if the
+       remaining string is a syllable.
+
 2007-01-03  Behdad Esfahbod  <behdad@gnome.org>
 
        Bug 390877 – Don't feed pango-features.h to glib-mkenums
index 9828ef8..4b218bd 100644 (file)
@@ -323,6 +323,14 @@ render_syllable (PangoFont *font, const char *str, int length,
          (*n_glyphs)++;
          continue;
        }
+      else if (IS_S(wc))
+        {
+         pango_glyph_string_set_size (glyphs, *n_glyphs + 1);
+         set_glyph (font, glyphs, *n_glyphs, cluster_offset,
+                    PANGO_GET_UNKNOWN_GLYPH (wc));
+         (*n_glyphs)++;
+         continue;
+       }
 
       /* This font has no glyphs on the Hangul Jamo area!  Find a
         fallback from the Hangul Compatibility Jamo area.  */
@@ -445,7 +453,9 @@ hangul_engine_shape (PangoEngineShape *engine,
       p = g_utf8_next_char (p);
     }
 
-  if (n_jamos > 0)
+  if (n_jamos == 1 && IS_S (prev))
+    render_basic (font, prev, glyphs, &n_glyphs, start - text);
+  else if (n_jamos > 0)
     render_syllable (font, start, n_jamos, glyphs, &n_glyphs,
                     start - text);
 }