In Wine, accept their fallbacks if the native fonts are not installed. ---
This is an alternative patch which is more strict as it only allows the hardcoded fallbacks, and only if running in Wine.
diff --git a/dlls/gdiplus/tests/font.c b/dlls/gdiplus/tests/font.c index 323461a..9c261d9 100644 --- a/dlls/gdiplus/tests/font.c +++ b/dlls/gdiplus/tests/font.c @@ -34,6 +34,7 @@ static const WCHAR MicrosoftSansSerif[] = {'M','i','c','r','o','s','o','f','t',' static const WCHAR TimesNewRoman[] = {'T','i','m','e','s',' ','N','e','w',' ','R','o','m','a','n','\0'}; static const WCHAR CourierNew[] = {'C','o','u','r','i','e','r',' ','N','e','w','\0'}; static const WCHAR Tahoma[] = {'T','a','h','o','m','a',0}; +static const WCHAR LiberationSerif[] = {'L','i','b','e','r','a','t','i','o','n',' ','S','e','r','i','f',0};
static void test_createfont(void) { @@ -289,42 +290,52 @@ static void test_getgenerics (void) GpStatus stat; GpFontFamily* family; WCHAR familyName[LF_FACESIZE]; + int has_native; ZeroMemory(familyName, sizeof(familyName)/sizeof(WCHAR));
+ stat = GdipCreateFontFamilyFromName(MicrosoftSansSerif, NULL, &family); + has_native = (stat != FontFamilyNotFound); + if (!has_native) + skip("Microsoft Sans Serif is missing\n"); stat = GdipGetGenericFontFamilySansSerif (&family); - if (stat == FontFamilyNotFound) + expect (Ok, stat); + if (stat != FontFamilyNotFound) { - skip("Microsoft Sans Serif not installed\n"); - goto serif; + stat = GdipGetFamilyName (family, familyName, LANG_NEUTRAL); + expect (Ok, stat); + /* Wine uses Tahoma as a fallback if Microsoft Sans Serif is missing */ + ok (lstrcmpiW(familyName, MicrosoftSansSerif) == 0 || + (strcmp(winetest_platform, "wine") == 0 && !has_native && + lstrcmpiW(familyName, Tahoma) == 0), + "Expected Microsoft Sans Serif or a fallback, got %s\n", wine_dbgstr_w(familyName)); + stat = GdipDeleteFontFamily (family); + expect (Ok, stat); } - expect (Ok, stat); - stat = GdipGetFamilyName (family, familyName, LANG_NEUTRAL); - expect (Ok, stat); - if (!lstrcmpiW(familyName, Tahoma)) - todo_wine ok ((lstrcmpiW(familyName, MicrosoftSansSerif) == 0), - "Expected Microsoft Sans Serif, got Tahoma\n"); - else - ok ((lstrcmpiW(familyName, MicrosoftSansSerif) == 0), - "Expected Microsoft Sans Serif, got %s\n", wine_dbgstr_w(familyName)); - stat = GdipDeleteFontFamily (family); - expect (Ok, stat);
-serif: + /* First check that Times New Roman is installed because if not + * Wine substitutes another serif font. + */ + stat = GdipCreateFontFamilyFromName(TimesNewRoman, NULL, &family); + has_native = (stat != FontFamilyNotFound); + if (!has_native) + skip("Times New Roman is missing\n"); stat = GdipGetGenericFontFamilySerif (&family); - if (stat == FontFamilyNotFound) + expect (Ok, stat); + if (stat != FontFamilyNotFound) { - skip("Times New Roman not installed\n"); - goto monospace; + stat = GdipGetFamilyName (family, familyName, LANG_NEUTRAL); + expect (Ok, stat); + /* Wine uses Liberation Serif as a fallback if Times New Roman + * is missing + */ + ok (lstrcmpiW(familyName, TimesNewRoman) == 0 || + (strcmp(winetest_platform, "wine") == 0 && !has_native && + lstrcmpiW(familyName, LiberationSerif) == 0), + "Expected Times New Roman or a fallback, got %s\n", wine_dbgstr_w(familyName)); + stat = GdipDeleteFontFamily (family); + expect (Ok, stat); } - expect (Ok, stat); - stat = GdipGetFamilyName (family, familyName, LANG_NEUTRAL); - expect (Ok, stat); - ok (lstrcmpiW(familyName, TimesNewRoman) == 0, - "Expected Times New Roman, got %s\n", wine_dbgstr_w(familyName)); - stat = GdipDeleteFontFamily (family); - expect (Ok, stat);
-monospace: stat = GdipGetGenericFontFamilyMonospace (&family); if (stat == FontFamilyNotFound) {