(uniscribe_encode_char): Increase glyph buffer size for surrogates.

This commit is contained in:
Jason Rumney 2008-12-11 13:02:52 +00:00
parent 0355f110d8
commit b4233ec94b
2 changed files with 12 additions and 4 deletions

View file

@ -1,3 +1,8 @@
2008-12-11 Jason Rumney <jasonr@gnu.org>
* w32uniscribe.c (uniscribe_encode_char): Increase glyph buffer
size for surrogates.
2008-12-11 Juanma Barranquero <lekktu@gmail.com>
* w32proc.c (Fw32_get_locale_info): Decode long form of locale name.

View file

@ -490,13 +490,16 @@ uniscribe_encode_char (font, c)
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)