Commit f13dea56 authored by Henri Verbeet's avatar Henri Verbeet Committed by Alexandre Julliard

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: 's avatarHenri Verbeet <hverbeet@codeweavers.com> Signed-off-by: 's avatarAric Stewart <aric@codeweavers.com> Signed-off-by: 's avatarAlexandre Julliard <julliard@winehq.org>
parent c94a5fd2
...@@ -1055,15 +1055,15 @@ static void ContextualShape_Arabic(HDC hdc, ScriptCache *psc, SCRIPT_ANALYSIS *p ...@@ -1055,15 +1055,15 @@ static void ContextualShape_Arabic(HDC hdc, ScriptCache *psc, SCRIPT_ANALYSIS *p
return; return;
} }
if (!psa->fLogicalOrder && psa->fRTL) if (psa->fLogicalOrder && psa->fRTL)
{ {
dirR = 1; dirR = -1;
dirL = -1; dirL = 1;
} }
else else
{ {
dirR = -1; dirR = 1;
dirL = 1; dirL = -1;
} }
load_ot_tables(hdc, psc); load_ot_tables(hdc, psc);
...@@ -2946,20 +2946,20 @@ static void ShapeCharGlyphProp_Arabic( HDC hdc, ScriptCache *psc, SCRIPT_ANALYSI ...@@ -2946,20 +2946,20 @@ static void ShapeCharGlyphProp_Arabic( HDC hdc, ScriptCache *psc, SCRIPT_ANALYSI
spaces = HeapAlloc(GetProcessHeap(),0,cGlyphs); spaces = HeapAlloc(GetProcessHeap(),0,cGlyphs);
memset(spaces,0,cGlyphs); memset(spaces,0,cGlyphs);
if (!psa->fLogicalOrder && psa->fRTL) if (psa->fLogicalOrder && psa->fRTL)
{
initGlyph = cGlyphs-1;
finaGlyph = 0;
dirR = 1;
dirL = -1;
}
else
{ {
initGlyph = 0; initGlyph = 0;
finaGlyph = cGlyphs-1; finaGlyph = cGlyphs-1;
dirR = -1; dirR = -1;
dirL = 1; dirL = 1;
} }
else
{
initGlyph = cGlyphs-1;
finaGlyph = 0;
dirR = 1;
dirL = -1;
}
for (i = 0; i < cGlyphs; i++) for (i = 0; i < cGlyphs; i++)
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment