changeset 100357:92ff8ff0a655

(uniscribe_encode_char): Increase glyph buffer size for surrogates.
author Jason Rumney <jasonr@gnu.org>
date Thu, 11 Dec 2008 13:01:22 +0000
parents 383709672c3f
children 581923e5da80
files src/w32uniscribe.c
diffstat 1 files changed, 7 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/w32uniscribe.c	Thu Dec 11 12:02:49 2008 +0000
+++ b/src/w32uniscribe.c	Thu Dec 11 13:01:22 2008 +0000
@@ -490,13 +490,16 @@
       if (SUCCEEDED (ScriptItemize (ch, len, 2, NULL, NULL, items, &nitems)))
 	{
 	  HRESULT result;
-          /* Some Indic characters result in more than 1 glyph.  */
-          WORD glyphs[1], clusters[1];
-          SCRIPT_VISATTR attrs[1];
+          /* Surrogates seem to need 2 here, even though only one glyph is
+	     returned.  Indic characters can also produce 2 or more glyphs for
+	     a single code point, but they need to use uniscribe_shape
+	     above for correct display.  */
+          WORD glyphs[2], clusters[2];
+          SCRIPT_VISATTR attrs[2];
           int nglyphs;
 
           result = ScriptShape (context, &(uniscribe_font->cache),
-                                ch, len, 1, &(items[0].a),
+                                ch, len, 2, &(items[0].a),
                                 glyphs, clusters, attrs, &nglyphs);
 
           if (result == E_PENDING)