[PATCH 6/6] usp10: Iterate in visual order in GPOS_apply_feature().
Henri Verbeet
hverbeet at codeweavers.com
Sun Feb 19 12:02:34 CST 2017
In particular, cursive attachment application depends on previous visual order
glyph offsets. Affects e.g. wordpad with Nastaliq fonts.
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
---
This supersedes patch 130418.
---
dlls/usp10/shape.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/dlls/usp10/shape.c b/dlls/usp10/shape.c
index 9549d9f..5c257dd 100644
--- a/dlls/usp10/shape.c
+++ b/dlls/usp10/shape.c
@@ -882,15 +882,17 @@ static int apply_GSUB_feature(HDC hdc, SCRIPT_ANALYSIS *psa, ScriptCache* psc, W
static VOID GPOS_apply_feature(ScriptCache *psc, LPOUTLINETEXTMETRICW lpotm, LPLOGFONTW lplogfont, const SCRIPT_ANALYSIS *analysis, INT* piAdvance, LoadedFeature *feature, const WORD *glyphs, INT glyph_count, GOFFSET *pGoffset)
{
- int i;
+ int dir = analysis->fLogicalOrder && analysis->fRTL ? -1 : 1;
+ unsigned int start_idx, i, j;
TRACE("%i lookups\n", feature->lookup_count);
+
+ start_idx = dir < 0 ? glyph_count - 1 : 0;
for (i = 0; i < feature->lookup_count; i++)
{
- int j;
for (j = 0; j < glyph_count; )
j += OpenType_apply_GPOS_lookup(psc, lpotm, lplogfont, analysis, piAdvance,
- feature->lookups[i], glyphs, j, glyph_count, pGoffset);
+ feature->lookups[i], glyphs, start_idx + dir * j, glyph_count, pGoffset);
}
}
--
2.1.4
More information about the wine-patches
mailing list