[PATCH 4/6] dwrite: Use font fallback when mapping characters
Nikolay Sivov
nsivov at codeweavers.com
Sat May 26 08:13:30 CDT 2018
On 05/23/2018 09:07 PM, Lucian Poston wrote:
> + /**
> + * This is a rough hack. We search the system font collection because
> + * the system fontfallback, which would have been searched above, is not
> + * fully implemented as it isn't populated with any system fonts. Once
> + * implemented, the block below can be removed.
> + * */
> + if (!*mapped_length) {
> + IDWriteFontFamily *family;
> + IDWriteFont *font;
> + UINT32 i, count = IDWriteFontCollection_GetFontFamilyCount((IDWriteFontCollection *)fallback->systemcollection);
> + for (i = 0; i < count; i++) {
> + hr = IDWriteFontCollection_GetFontFamily((IDWriteFontCollection *)fallback->systemcollection, i, &family);
> + if (FAILED(hr)) {
> + ERR("Failed to get font family.\n");
> + continue;
> }
> +
> + hr = IDWriteFontFamily_GetFirstMatchingFont(family, weight, stretch, style, &font);
> + IDWriteFontFamily_Release(family);
> + if (FAILED(hr)) {
> + continue;
> + }
> +
> + hr = fallback_map_characters(font, text, length, mapped_length);
> + if (SUCCEEDED(hr) && mapped_length > 0) {
> + *ret_font = font;
> + break;
> + }
> +
> + IDWriteFont_Release(font);
> }
This block will pick arbitrary font, depending on fonts user has
installed, and can change if user installs more or removes some.
That doesn't sound like a good idea to me, and your comment already
hints at that.
More information about the wine-devel
mailing list