diff --git a/dlls/usp10/opentype.c b/dlls/usp10/opentype.c index 0cf474d93e3..e3aaf164cdd 100644 --- a/dlls/usp10/opentype.c +++ b/dlls/usp10/opentype.c @@ -2349,7 +2349,7 @@ static INT GPOS_apply_lookup(ScriptCache *psc, LPOUTLINETEXTMETRICW lpotm, LPLOG GPOS_convert_design_units_to_device(lpotm, lplogfont, advance[1].x, advance[1].y, &devX, &devY); piAdvance[glyph_index + write_dir] += round(devX); } - return glyph_index + index_offset; + return index_offset; } case GPOS_LOOKUP_ATTACH_CURSIVE: @@ -2417,17 +2417,17 @@ static INT GPOS_apply_lookup(ScriptCache *psc, LPOUTLINETEXTMETRICW lpotm, LPLOG } case GPOS_LOOKUP_POSITION_CONTEXT: - return glyph_index + GPOS_apply_ContextPos(psc, lpotm, lplogfont, analysis, piAdvance, + return GPOS_apply_ContextPos(psc, lpotm, lplogfont, analysis, piAdvance, lookup, look, glyphs, glyph_index, glyph_count, ppem, pGoffset); case GPOS_LOOKUP_POSITION_CONTEXT_CHAINED: - return glyph_index + GPOS_apply_ChainContextPos(psc, lpotm, lplogfont, analysis, piAdvance, + return GPOS_apply_ChainContextPos(psc, lpotm, lplogfont, analysis, piAdvance, lookup, look, glyphs, glyph_index, glyph_count, ppem, pGoffset); default: FIXME("Unhandled GPOS lookup type %#x.\n", type); } - return glyph_index+1; + return 1; } INT OpenType_apply_GPOS_lookup(ScriptCache *psc, LPOUTLINETEXTMETRICW lpotm, LPLOGFONTW lplogfont, const SCRIPT_ANALYSIS *analysis, INT* piAdvance, INT lookup_index, const WORD *glyphs, INT glyph_index, INT glyph_count, GOFFSET *pGoffset) diff --git a/dlls/usp10/shape.c b/dlls/usp10/shape.c index bf333b28ada..9549d9f3048 100644 --- a/dlls/usp10/shape.c +++ b/dlls/usp10/shape.c @@ -889,7 +889,8 @@ static VOID GPOS_apply_feature(ScriptCache *psc, LPOUTLINETEXTMETRICW lpotm, LPL { 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); + j += OpenType_apply_GPOS_lookup(psc, lpotm, lplogfont, analysis, piAdvance, + feature->lookups[i], glyphs, j, glyph_count, pGoffset); } }