From 7ba38ad62e1d92f4b3db74ea2077add20547c07e Mon Sep 17 00:00:00 2001 From: Huw Davies Date: Mon, 14 Jan 2013 13:17:17 +0000 Subject: [PATCH] usp10: Fix MarkToBase offset for RTL text. --- dlls/usp10/opentype.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dlls/usp10/opentype.c b/dlls/usp10/opentype.c index 193889236b9..f8cf8a1bbe2 100644 --- a/dlls/usp10/opentype.c +++ b/dlls/usp10/opentype.c @@ -1730,7 +1730,9 @@ static INT GPOS_apply_lookup(LPOUTLINETEXTMETRICW lpotm, LPLOGFONTW lplogfont, c if (desU.x || desU.y) { GPOS_convert_design_units_to_device(lpotm, lplogfont, desU.x, desU.y, &devX, &devY); - pGoffset[glyph_index].du += (round(devX) - piAdvance[glyph_index-1]); + if (!analysis->fRTL) pGoffset[glyph_index].du -= piAdvance[glyph_index-1]; + else if (analysis->fLogicalOrder) devX *= -1; + pGoffset[glyph_index].du += round(devX); pGoffset[glyph_index].dv += round(devY); } break;