- add support for ETO_GLYPH_INDEX in NtGdiExtTextOut.

(fixes character shift problem in QT apps) see bug #975

svn path=/trunk/; revision=26839
This commit is contained in:
Sebastian Gasiorek 2007-05-19 13:55:23 +00:00
parent 9341afafbf
commit d6c16357c0

View file

@ -1863,7 +1863,11 @@ NtGdiExtTextOut(
for (i = Start; i < Count; i++)
{
if (fuOptions & ETO_GLYPH_INDEX)
glyph_index = *TempText;
else
glyph_index = FT_Get_Char_Index(face, *TempText);
if (!(realglyph = NtGdiGlyphCacheGet(face, glyph_index,
TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfHeight)))
{
@ -1913,7 +1917,11 @@ NtGdiExtTextOut(
for (i = 0; i < Count; i++)
{
if (fuOptions & ETO_GLYPH_INDEX)
glyph_index = *String;
else
glyph_index = FT_Get_Char_Index(face, *String);
if (!(realglyph = NtGdiGlyphCacheGet(face, glyph_index,
TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfHeight)))
{
@ -1926,8 +1934,11 @@ NtGdiExtTextOut(
goto fail;
}
glyph = face->glyph;
realglyph = NtGdiGlyphCacheSet(face, glyph_index,
TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfHeight, glyph, RenderMode);
realglyph = NtGdiGlyphCacheSet(face,
glyph_index,
TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfHeight,
glyph,
RenderMode);
}
// DbgPrint("realglyph: %x\n", realglyph);
// DbgPrint("TextLeft: %d\n", TextLeft);