[PATCH v3 1/4] dwrite/tests: Add some tests for Segoe UI font family.

Nikolay Sivov nsivov at codeweavers.com
Tue Apr 5 00:44:51 CDT 2022


> +
> +static void test_SegoeUI(void)
> +{
> +    HRESULT hr;
> +    IDWriteFactory2 *factory;
> +    IDWriteFontCollection *collection;
> +    IDWriteFontFamily *family;
> +    IDWriteFont *font;
> +    UINT32 index, count, i;
> +    WCHAR name[256];
> +    BOOL exists, found;
> +
> +    hr = DWriteCreateFactory(DWRITE_FACTORY_TYPE_SHARED,
> &IID_IDWriteFactory2, (IUnknown **)&factory);
> +    if (hr != S_OK)
> +    {
> +        win_skip("IDWriteFactory2 is not supported\n");
> +        return;
> +    }
> +
> +    hr = IDWriteFactory2_GetSystemFontCollection(factory, &collection,
> FALSE);
> +    ok(hr == S_OK, "got %#x\n", hr);
> +
> +    hr = IDWriteFontCollection_FindFamilyName(collection, L"Segoe UI",
> &index, &exists);
> +    ok(hr == S_OK, "got %#x\n", hr);
> +    if (!exists)
> +    {
> +        skip("Segoe UI is not installed\n");
> +        IDWriteFontCollection_Release(collection);
> +        IDWriteFactory2_Release(factory);
> +        return;
> +    }
> +    ok(index != UINT_MAX && exists, "Segoe UI was not found\n");
> +
> +    hr = IDWriteFontCollection_GetFontFamily(collection, index, &family);
> +    ok(hr == S_OK, "got %#x\n", hr);
> +
> +    count = IDWriteFontFamily_GetFontCount(family);
> +    trace("family Segoe UI has %u fonts\n", count);
> +
> +    found = FALSE;
> +
> +    for (i = 0; i < count; i++)
> +    {
> +        hr = IDWriteFontFamily_GetFont(family, i, &font);
> +        ok(hr == S_OK, "got %#x\n", hr);
> +
> +        get_font_name(font, name, ARRAY_SIZE(name));
> +        if (!wcscmp(name, L"Segoe UI Symbol"))
> +            found = TRUE;
> +
> +        hr = IDWriteFont_HasCharacter(font, 0x25d4, &exists);
> +        ok(hr == S_OK, "got %#x\n", hr);
> +        ok(!exists, "%u: %s has character 0x25d4\n", i,
> wine_dbgstr_w(name));
> +
> +        IDWriteFont_Release(font);
> +    }
> +
> +    ok(!found, "Segoe UI Symbol should not be part of Segoe UI family\n");
> +
> +    IDWriteFontFamily_Release(family);
> +    IDWriteFontCollection_Release(collection);
> +    IDWriteFactory2_Release(factory);
> +}

All this does is checking if font is installed, and we know it is 
installed on all current Windows versions, it's not some directwrite 
functionality. Second patch will already trigger a todo case when font 
is installed in Wine.





More information about the wine-devel mailing list