libbluray | branch: master | hpi1 <[email protected]> | Mon Dec 1 22:37:03 2014 +0200| [e13365bfa13c479e7cbcc41b6df791c165a2b0d6] | committer: hpi1
Win32 font resolver: use *W functions. > http://git.videolan.org/gitweb.cgi/libbluray.git/?a=commit;h=e13365bfa13c479e7cbcc41b6df791c165a2b0d6 --- src/libbluray/bdj/native/java_awt_BDFontMetrics.c | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/src/libbluray/bdj/native/java_awt_BDFontMetrics.c b/src/libbluray/bdj/native/java_awt_BDFontMetrics.c index 9d3f132..3bbd3c3 100644 --- a/src/libbluray/bdj/native/java_awt_BDFontMetrics.c +++ b/src/libbluray/bdj/native/java_awt_BDFontMetrics.c @@ -72,11 +72,11 @@ typedef struct { char *filename; } SEARCH_DATA; -static int CALLBACK EnumFontCallback(const ENUMLOGFONTEXA *lpelfe, const NEWTEXTMETRICEX *metric, - DWORD type, LPARAM lParam) +static int CALLBACK EnumFontCallbackW(const ENUMLOGFONTEXW *lpelfe, const NEWTEXTMETRICEX *metric, + DWORD type, LPARAM lParam) { - const LOGFONT *lplf = &lpelfe->elfLogFont; - const char *font_name = (const char *)lpelfe->elfFullName; + const LOGFONTW *lplf = &lpelfe->elfLogFont; + const wchar_t *font_name = lpelfe->elfFullName; SEARCH_DATA *data = (SEARCH_DATA *)lParam; int index = 0; HKEY hKey; @@ -97,7 +97,7 @@ static int CALLBACK EnumFontCallback(const ENUMLOGFONTEXA *lpelfe, const NEWTEXT return 1; } - if (RegOpenKeyExA(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows NT\\CurrentVersion\\Fonts", + if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"Software\\Microsoft\\Windows NT\\CurrentVersion\\Fonts", 0, KEY_READ, &hKey) != ERROR_SUCCESS) { return 0; } @@ -113,10 +113,7 @@ static int CALLBACK EnumFontCallback(const ENUMLOGFONTEXA *lpelfe, const NEWTEXT return result; } - char value[MAX_PATH]; - WideCharToMultiByte(CP_UTF8, 0, wvalue, -1, value, MAX_PATH, NULL, NULL); - - if (!strcasecmp(value, font_name)) { + if (!_wcsicmp(wvalue, font_name)) { size_t len = WideCharToMultiByte(CP_UTF8, 0, wdata, -1, NULL, 0, NULL, NULL); if (len != 0) { data->filename = (char *)malloc(len); @@ -132,16 +129,16 @@ static int CALLBACK EnumFontCallback(const ENUMLOGFONTEXA *lpelfe, const NEWTEXT static char *_win32_resolve_font(const char *family, int style) { - LOGFONT lf; + LOGFONTW lf; HDC hDC; SEARCH_DATA data = {style & 2, style & 1, NULL}; memset(&lf, 0, sizeof(lf)); lf.lfCharSet = DEFAULT_CHARSET; - strncpy(lf.lfFaceName, family, LF_FACESIZE); + MultiByteToWideChar(CP_UTF8, 0, family, -1, lf.lfFaceName, sizeof(lf.lfFaceName)); hDC = GetDC(NULL); - EnumFontFamiliesExA(hDC, &lf, (FONTENUMPROCA)&EnumFontCallback, (LPARAM)&data, 0); + EnumFontFamiliesExW(hDC, &lf, (FONTENUMPROCW)&EnumFontCallbackW, (LPARAM)&data, 0); ReleaseDC(NULL, hDC); if (!data.filename) { _______________________________________________ libbluray-devel mailing list [email protected] https://mailman.videolan.org/listinfo/libbluray-devel
