Module: wine
Branch: master
Commit: 413fc34be7fca948dc53b3eb8cd1a08e951f2b4e
URL: https://gitlab.winehq.org/wine/wine/-/commit/413fc34be7fca948dc53b3eb8cd1a0…
Author: Bartosz Kosiorek <gang65(a)poczta.onet.pl>
Date: Thu May 18 21:49:15 2023 +0200
gdiplus: Fix GdipGetGenericFontFamily functions according to native gdiplus.dll.
---
dlls/gdiplus/font.c | 26 ++++++++++++++++++--------
1 file changed, 18 insertions(+), 8 deletions(-)
diff --git a/dlls/gdiplus/font.c b/dlls/gdiplus/font.c
index bcf36a60090..8b85f567aab 100644
--- a/dlls/gdiplus/font.c
+++ b/dlls/gdiplus/font.c
@@ -969,19 +969,22 @@ GpStatus WINGDIPAPI GdipIsStyleAvailable(GDIPCONST GpFontFamily* family,
/*****************************************************************************
* GdipGetGenericFontFamilyMonospace [GDIPLUS.@]
*
- * Obtains a serif family (Courier New on Windows)
+ * Obtains a monospace family (Courier New on Windows)
*
* PARAMS
- * **nativeFamily [I] Where the font will be stored
+ * **nativeFamily [O] Where the font will be stored
*
* RETURNS
* InvalidParameter if nativeFamily is NULL.
+ * FontFamilyNotFound if unable to get font.
* Ok otherwise.
*/
GpStatus WINGDIPAPI GdipGetGenericFontFamilyMonospace(GpFontFamily **nativeFamily)
{
GpStatus stat;
+ TRACE("(%p)\n", nativeFamily);
+
if (nativeFamily == NULL) return InvalidParameter;
stat = GdipCreateFontFamilyFromName(L"Courier New", NULL, nativeFamily);
@@ -990,7 +993,7 @@ GpStatus WINGDIPAPI GdipGetGenericFontFamilyMonospace(GpFontFamily **nativeFamil
stat = GdipCreateFontFamilyFromName(L"Liberation Mono", NULL, nativeFamily);
if (stat == FontFamilyNotFound)
- ERR("Missing 'Courier New' font\n");
+ stat = GdipCreateFontFamilyFromName(L"Courier", NULL, nativeFamily);
return stat;
}
@@ -1001,10 +1004,11 @@ GpStatus WINGDIPAPI GdipGetGenericFontFamilyMonospace(GpFontFamily **nativeFamil
* Obtains a serif family (Times New Roman on Windows)
*
* PARAMS
- * **nativeFamily [I] Where the font will be stored
+ * **nativeFamily [O] Where the font will be stored
*
* RETURNS
* InvalidParameter if nativeFamily is NULL.
+ * FontFamilyNotFound if unable to get font.
* Ok otherwise.
*/
GpStatus WINGDIPAPI GdipGetGenericFontFamilySerif(GpFontFamily **nativeFamily)
@@ -1021,7 +1025,7 @@ GpStatus WINGDIPAPI GdipGetGenericFontFamilySerif(GpFontFamily **nativeFamily)
stat = GdipCreateFontFamilyFromName(L"Liberation Serif", NULL, nativeFamily);
if (stat == FontFamilyNotFound)
- ERR("Missing 'Times New Roman' font\n");
+ stat = GdipGetGenericFontFamilySansSerif(nativeFamily);
return stat;
}
@@ -1029,13 +1033,14 @@ GpStatus WINGDIPAPI GdipGetGenericFontFamilySerif(GpFontFamily **nativeFamily)
/*****************************************************************************
* GdipGetGenericFontFamilySansSerif [GDIPLUS.@]
*
- * Obtains a serif family (Microsoft Sans Serif on Windows)
+ * Obtains a sans serif family (Microsoft Sans Serif or Arial on Windows)
*
* PARAMS
- * **nativeFamily [I] Where the font will be stored
+ * **nativeFamily [O] Where the font will be stored
*
* RETURNS
* InvalidParameter if nativeFamily is NULL.
+ * FontFamilyNotFound if unable to get font.
* Ok otherwise.
*/
GpStatus WINGDIPAPI GdipGetGenericFontFamilySansSerif(GpFontFamily **nativeFamily)
@@ -1049,7 +1054,12 @@ GpStatus WINGDIPAPI GdipGetGenericFontFamilySansSerif(GpFontFamily **nativeFamil
stat = GdipCreateFontFamilyFromName(L"Microsoft Sans Serif", NULL, nativeFamily);
if (stat == FontFamilyNotFound)
- /* FIXME: Microsoft Sans Serif is not installed on Wine. */
+ stat = GdipCreateFontFamilyFromName(L"Arial", NULL, nativeFamily);
+
+ if (stat == FontFamilyNotFound)
+ stat = GdipCreateFontFamilyFromName(L"Liberation Sans", NULL, nativeFamily);
+
+ if (stat == FontFamilyNotFound)
stat = GdipCreateFontFamilyFromName(L"Tahoma", NULL, nativeFamily);
return stat;