Commit 7e604f9a authored by Naohiro KORIYAMA's avatar Naohiro KORIYAMA Committed by Jean-Baptiste Kempf

freetype: Fix non-ascii font selection on UNICODE and ANSI build.

Signed-off-by: default avatarJean-Baptiste Kempf <jb@videolan.org>
parent 85c03f04
...@@ -589,20 +589,19 @@ static char* FontConfig_Select( FcConfig* config, const char* family, ...@@ -589,20 +589,19 @@ static char* FontConfig_Select( FcConfig* config, const char* family,
#endif #endif
#ifdef WIN32 #ifdef WIN32
#define FONT_DIR_NT "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Fonts" #define FONT_DIR_NT _T("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Fonts")
static int GetFileFontByName( const char *font_name, char **psz_filename ) static int GetFileFontByName( LPCTSTR font_name, char **psz_filename )
{ {
HKEY hKey; HKEY hKey;
wchar_t vbuffer[MAX_PATH]; TCHAR vbuffer[MAX_PATH];
wchar_t dbuffer[256]; TCHAR dbuffer[256];
if( RegOpenKeyExA(HKEY_LOCAL_MACHINE, FONT_DIR_NT, 0, KEY_READ, &hKey) if( RegOpenKeyEx(HKEY_LOCAL_MACHINE, FONT_DIR_NT, 0, KEY_READ, &hKey)
!= ERROR_SUCCESS ) != ERROR_SUCCESS )
return 1; return 1;
MultiByteToWideChar( CP_ACP, 0, font_name, -1, dbuffer, 256 ); char *font_name_temp = FromT( font_name );
char *font_name_temp = FromWide( dbuffer );
size_t fontname_len = strlen( font_name_temp ); size_t fontname_len = strlen( font_name_temp );
for( int index = 0;; index++ ) for( int index = 0;; index++ )
...@@ -610,15 +609,15 @@ static int GetFileFontByName( const char *font_name, char **psz_filename ) ...@@ -610,15 +609,15 @@ static int GetFileFontByName( const char *font_name, char **psz_filename )
DWORD vbuflen = MAX_PATH - 1; DWORD vbuflen = MAX_PATH - 1;
DWORD dbuflen = 255; DWORD dbuflen = 255;
LONG i_result = RegEnumValueW( hKey, index, vbuffer, &vbuflen, LONG i_result = RegEnumValue( hKey, index, vbuffer, &vbuflen,
NULL, NULL, (LPBYTE)dbuffer, &dbuflen); NULL, NULL, (LPBYTE)dbuffer, &dbuflen);
if( i_result != ERROR_SUCCESS ) if( i_result != ERROR_SUCCESS )
{ {
RegCloseKey( hKey ); RegCloseKey( hKey );
return i_result; return i_result;
} }
char *psz_value = FromWide( vbuffer ); char *psz_value = FromT( vbuffer );
char *s = strchr( psz_value,'(' ); char *s = strchr( psz_value,'(' );
if( s != NULL && s != psz_value ) s[-1] = '\0'; if( s != NULL && s != psz_value ) s[-1] = '\0';
...@@ -642,7 +641,7 @@ static int GetFileFontByName( const char *font_name, char **psz_filename ) ...@@ -642,7 +641,7 @@ static int GetFileFontByName( const char *font_name, char **psz_filename )
free( psz_value ); free( psz_value );
} }
*psz_filename = FromWide( dbuffer ); *psz_filename = FromT( dbuffer );
free( font_name_temp ); free( font_name_temp );
RegCloseKey( hKey ); RegCloseKey( hKey );
return 0; return 0;
...@@ -656,7 +655,7 @@ static int CALLBACK EnumFontCallback(const ENUMLOGFONTEX *lpelfe, const NEWTEXTM ...@@ -656,7 +655,7 @@ static int CALLBACK EnumFontCallback(const ENUMLOGFONTEX *lpelfe, const NEWTEXTM
if( (type & RASTER_FONTTYPE) ) return 1; if( (type & RASTER_FONTTYPE) ) return 1;
// if( lpelfe->elfScript ) FIXME // if( lpelfe->elfScript ) FIXME
return GetFileFontByName( (const char *)lpelfe->elfFullName, (char **)lParam ); return GetFileFontByName( (LPCTSTR)lpelfe->elfFullName, (char **)lParam );
} }
static char* Win32_Select( filter_t *p_filter, const char* family, static char* Win32_Select( filter_t *p_filter, const char* family,
...@@ -675,10 +674,8 @@ static char* Win32_Select( filter_t *p_filter, const char* family, ...@@ -675,10 +674,8 @@ static char* Win32_Select( filter_t *p_filter, const char* family,
if( b_bold ) if( b_bold )
lf.lfWeight = FW_BOLD; lf.lfWeight = FW_BOLD;
char facename[32]; LPTSTR psz_fbuffer = ToT( family );
wchar_t* psz_fbuffer = ToWide( family ); _tcsncpy( (LPTSTR)&lf.lfFaceName, psz_fbuffer, LF_FACESIZE );
WideCharToMultiByte( CP_ACP, 0, psz_fbuffer, -1, facename, 32, " ", 0 );
strncpy( (LPSTR)&lf.lfFaceName, facename, 32 );
free( psz_fbuffer ); free( psz_fbuffer );
/* */ /* */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment