(uniscribe_encode_char): Increase glyph buffer size for surrogates.
This commit is contained in:
parent
0355f110d8
commit
b4233ec94b
2 changed files with 12 additions and 4 deletions
|
@ -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.
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Reference in a new issue