diff --git a/dlls/gdiplus/font.c b/dlls/gdiplus/font.c index 2cd514d8361..d02b04d0a06 100644 --- a/dlls/gdiplus/font.c +++ b/dlls/gdiplus/font.c @@ -21,6 +21,7 @@ #include "windef.h" #include "winbase.h" #include "wingdi.h" +#include "winnls.h" #include "objbase.h" @@ -40,3 +41,21 @@ GpStatus WINGDIPAPI GdipCreateFontFromLogfontW(HDC hdc, return Ok; } + +GpStatus WINGDIPAPI GdipCreateFontFromLogfontA(HDC hdc, + GDIPCONST LOGFONTA *lfa, GpFont **font) +{ + LOGFONTW lfw; + + if(!lfa || !font) + return InvalidParameter; + + memcpy(&lfw, lfa, sizeof(LOGFONTA)); + + if(!MultiByteToWideChar(CP_ACP, 0, lfa->lfFaceName, -1, lfw.lfFaceName, LF_FACESIZE)) + return GenericError; + + GdipCreateFontFromLogfontW(hdc, &lfw, font); + + return Ok; +} diff --git a/dlls/gdiplus/gdiplus.spec b/dlls/gdiplus/gdiplus.spec index d311c453dd9..39253a576e7 100644 --- a/dlls/gdiplus/gdiplus.spec +++ b/dlls/gdiplus/gdiplus.spec @@ -87,7 +87,7 @@ @ stub GdipCreateFont @ stub GdipCreateFontFamilyFromName @ stub GdipCreateFontFromDC -@ stub GdipCreateFontFromLogfontA +@ stdcall GdipCreateFontFromLogfontA(ptr ptr ptr) @ stdcall GdipCreateFontFromLogfontW(ptr ptr ptr) @ stub GdipCreateFromHDC2 @ stdcall GdipCreateFromHDC(long ptr) diff --git a/include/gdiplusflat.h b/include/gdiplusflat.h index 05bf54ead67..ba2a3ca2e2f 100644 --- a/include/gdiplusflat.h +++ b/include/gdiplusflat.h @@ -236,6 +236,7 @@ GpStatus WINGDIPAPI GdipSetImageAttributesColorMatrix(GpImageAttributes*, GpStatus WINGDIPAPI GdipSetImageAttributesWrapMode(GpImageAttributes*,WrapMode, ARGB,BOOL); +GpStatus WINGDIPAPI GdipCreateFontFromLogfontA(HDC,GDIPCONST LOGFONTA*,GpFont**); GpStatus WINGDIPAPI GdipCreateFontFromLogfontW(HDC,GDIPCONST LOGFONTW*,GpFont**); #ifdef __cplusplus