usp10: Fix advance width when glyph is missing.

This fixes a regression introduced by 8d018d8d1d.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47327
Signed-off-by: Akihiro Sagawa <sagawa.aki@gmail.com>
Signed-off-by: Aric Stewart <aric@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
(cherry picked from commit ac0c1d41d1)
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
oldstable
Akihiro Sagawa 2019-06-13 23:50:25 +09:00 committed by Michael Stefaniuc
parent 5b810ec3bd
commit 12fb7e9a75
2 changed files with 21 additions and 3 deletions

View File

@ -2199,11 +2199,11 @@ static void test_ScriptPlace(HDC hdc)
{
ok(offset[i].du == 0, "[%d] expected 0, got %d\n", i, offset[i].du);
ok(offset[i].dv == 0, "[%d] expected 0, got %d\n", i, offset[i].dv);
todo_wine ok(widths[i] > tm.tmAveCharWidth, "[%d] expected greater than %d, got %d\n",
ok(widths[i] > tm.tmAveCharWidth, "[%d] expected greater than %d, got %d\n",
i, tm.tmAveCharWidth, widths[i]);
total += widths[i];
}
todo_wine ok(total == sz.cx, "expected %d, got %d\n", sz.cx, total);
ok(total == sz.cx, "expected %d, got %d\n", sz.cx, total);
}
else
skip("Associated font is unavailable\n");

View File

@ -3434,9 +3434,27 @@ HRESULT WINAPI ScriptPlaceOpenType( HDC hdc, SCRIPT_CACHE *psc, SCRIPT_ANALYSIS
if (FAILED(hr = ScriptGetCMap(hdc, psc, &pwGlyphs[i], 1, 0, &glyph))) return hr;
}
else
{
hr = S_OK;
glyph = pwGlyphs[i];
}
if (!get_cache_glyph_widths(psc, glyph, &abc))
if (hr == S_FALSE)
{
if (!hdc) return E_PENDING;
if (get_cache_pitch_family(psc) & TMPF_TRUETYPE)
{
if (!GetCharABCWidthsW(hdc, pwGlyphs[i], pwGlyphs[i], &abc)) return S_FALSE;
}
else
{
INT width;
if (!GetCharWidthW(hdc, pwGlyphs[i], pwGlyphs[i], &width)) return S_FALSE;
abc.abcB = width;
abc.abcA = abc.abcC = 0;
}
}
else if (!get_cache_glyph_widths(psc, glyph, &abc))
{
if (!hdc) return E_PENDING;
if (get_cache_pitch_family(psc) & TMPF_TRUETYPE)