dwrite/tests: Add some fallback tests for Segoe UI Symbol.

Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Dmitry Timoshkov 2022-04-05 08:38:22 +03:00 committed by Alexandre Julliard
parent 1765c4594f
commit a90d976bb4
1 changed files with 81 additions and 0 deletions

View File

@ -4747,6 +4747,86 @@ if (font) {
IDWriteFactory2_Release(factory2);
}
static void get_font_name(IDWriteFont *font, WCHAR *name, UINT32 size)
{
IDWriteLocalizedStrings *names;
IDWriteFontFamily *family;
UINT32 index;
BOOL exists;
HRESULT hr;
hr = IDWriteFont_GetFontFamily(font, &family);
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
hr = IDWriteFontFamily_GetFamilyNames(family, &names);
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
hr = IDWriteLocalizedStrings_FindLocaleName(names, L"en-us", &index, &exists);
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
ok(index != UINT_MAX && exists, "Name was not found.\n");
hr = IDWriteLocalizedStrings_GetString(names, index, name, size);
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
IDWriteLocalizedStrings_Release(names);
IDWriteFontFamily_Release(family);
}
static void test_system_fallback(void)
{
static const struct fallback_test
{
const WCHAR text[2];
const WCHAR *name;
}
tests[] =
{
{ { 0x25d4, 0}, L"Segoe UI Symbol" },
};
IDWriteFontFallback *fallback;
IDWriteFactory2 *factory;
IDWriteFont *font;
UINT32 i, length;
WCHAR name[256];
BOOL exists;
float scale;
HRESULT hr;
if (!(factory = create_factory_iid(&IID_IDWriteFactory2)))
{
win_skip("System font fallback API is not supported.\n");
return;
}
hr = IDWriteFactory2_GetSystemFontFallback(factory, &fallback);
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
for (i = 0; i < ARRAY_SIZE(tests); ++i)
{
g_source = tests[i].text;
hr = IDWriteFontFallback_MapCharacters(fallback, &analysissource, 0, 1, NULL, NULL, DWRITE_FONT_WEIGHT_NORMAL,
DWRITE_FONT_STYLE_NORMAL, DWRITE_FONT_STRETCH_NORMAL, &length, &font, &scale);
todo_wine
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
if (hr != S_OK) continue;
ok(length == 1, "Unexpected length %u\n", length);
ok(scale == 1.0f, "got %f\n", scale);
get_font_name(font, name, ARRAY_SIZE(name));
todo_wine
ok(!wcscmp(name, tests[i].name), "%u: unexpected name %s.\n", i, wine_dbgstr_w(name));
hr = IDWriteFont_HasCharacter(font, g_source[0], &exists);
ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
todo_wine
ok(exists, "%s missing character %#x\n", wine_dbgstr_w(name), g_source[0]);
IDWriteFont_Release(font);
}
IDWriteFontFallback_Release(fallback);
IDWriteFactory2_Release(factory);
}
static void test_FontFallbackBuilder(void)
{
IDWriteFontFallback *fallback, *fallback2;
@ -6529,6 +6609,7 @@ START_TEST(layout)
test_pixelsnapping();
test_SetWordWrapping();
test_MapCharacters();
test_system_fallback();
test_FontFallbackBuilder();
test_SetTypography();
test_SetLastLineWrapping();