usp10: Properly determine the glyph run direction when shaping Script_Arabic.

In particular, if fLogicalOrder and fRTL are both set, the glyph order is
swapped compared to the character order. In all other cases it's the same.

Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Henri Verbeet 2017-03-02 09:38:42 +01:00 committed by Alexandre Julliard
parent c94a5fd28c
commit f13dea5684
1 changed files with 14 additions and 14 deletions

View File

@ -1055,16 +1055,16 @@ static void ContextualShape_Arabic(HDC hdc, ScriptCache *psc, SCRIPT_ANALYSIS *p
return;
}
if (!psa->fLogicalOrder && psa->fRTL)
{
dirR = 1;
dirL = -1;
}
else
if (psa->fLogicalOrder && psa->fRTL)
{
dirR = -1;
dirL = 1;
}
else
{
dirR = 1;
dirL = -1;
}
load_ot_tables(hdc, psc);
@ -2946,20 +2946,20 @@ static void ShapeCharGlyphProp_Arabic( HDC hdc, ScriptCache *psc, SCRIPT_ANALYSI
spaces = HeapAlloc(GetProcessHeap(),0,cGlyphs);
memset(spaces,0,cGlyphs);
if (!psa->fLogicalOrder && psa->fRTL)
{
initGlyph = cGlyphs-1;
finaGlyph = 0;
dirR = 1;
dirL = -1;
}
else
if (psa->fLogicalOrder && psa->fRTL)
{
initGlyph = 0;
finaGlyph = cGlyphs-1;
dirR = -1;
dirL = 1;
}
else
{
initGlyph = cGlyphs-1;
finaGlyph = 0;
dirR = 1;
dirL = -1;
}
for (i = 0; i < cGlyphs; i++)
{