dwrite: Make CreateFontFace() fail with DWRITE_E_FILEFORMAT for supported types in case of type mismatch.

This commit is contained in:
Nikolay Sivov 2015-09-04 12:15:41 +03:00 committed by Alexandre Julliard
parent 0aca2d7dc9
commit fe848b26c7
2 changed files with 5 additions and 3 deletions

View File

@ -818,9 +818,12 @@ static HRESULT WINAPI dwritefactory_CreateFontFace(IDWriteFactory2 *iface,
if (FAILED(hr)) if (FAILED(hr))
return hr; return hr;
if (!is_supported || (face_type != req_facetype)) if (!is_supported)
return E_FAIL; return E_FAIL;
if (face_type != req_facetype)
return DWRITE_E_FILEFORMAT;
hr = IDWriteFontFile_GetReferenceKey(*font_files, &key, &key_size); hr = IDWriteFontFile_GetReferenceKey(*font_files, &key, &key_size);
if (FAILED(hr)) if (FAILED(hr))
return hr; return hr;

View File

@ -1307,12 +1307,11 @@ if (0) /* crashes on native */
/* try mismatching face type, the one that's not supported */ /* try mismatching face type, the one that's not supported */
hr = IDWriteFactory_CreateFontFace(factory, DWRITE_FONT_FACE_TYPE_CFF, 1, &file, 0, DWRITE_FONT_SIMULATIONS_NONE, &fontface); hr = IDWriteFactory_CreateFontFace(factory, DWRITE_FONT_FACE_TYPE_CFF, 1, &file, 0, DWRITE_FONT_SIMULATIONS_NONE, &fontface);
todo_wine
ok(hr == DWRITE_E_FILEFORMAT, "got 0x%08x\n", hr); ok(hr == DWRITE_E_FILEFORMAT, "got 0x%08x\n", hr);
hr = IDWriteFactory_CreateFontFace(factory, DWRITE_FONT_FACE_TYPE_TRUETYPE_COLLECTION, 1, &file, 0, hr = IDWriteFactory_CreateFontFace(factory, DWRITE_FONT_FACE_TYPE_TRUETYPE_COLLECTION, 1, &file, 0,
DWRITE_FONT_SIMULATIONS_NONE, &fontface); DWRITE_FONT_SIMULATIONS_NONE, &fontface);
ok(hr == E_FAIL, "got 0x%08x\n", hr); ok(hr == DWRITE_E_FILEFORMAT || broken(hr == E_FAIL) /* < win10 */, "got 0x%08x\n", hr);
hr = IDWriteFactory_CreateFontFace(factory, DWRITE_FONT_FACE_TYPE_RAW_CFF, 1, &file, 0, DWRITE_FONT_SIMULATIONS_NONE, &fontface); hr = IDWriteFactory_CreateFontFace(factory, DWRITE_FONT_FACE_TYPE_RAW_CFF, 1, &file, 0, DWRITE_FONT_SIMULATIONS_NONE, &fontface);
todo_wine todo_wine