Commit 6a04614b authored by Alexandre Julliard's avatar Alexandre Julliard

Use the standard font path to look for TrueType fonts.

parent 4dfabb0b
...@@ -583,19 +583,17 @@ static BOOL ReadTrueTypeDir(FT_Library library, LPCSTR dirname) ...@@ -583,19 +583,17 @@ static BOOL ReadTrueTypeDir(FT_Library library, LPCSTR dirname)
*/ */
BOOL PSDRV_GetTrueTypeMetrics(void) BOOL PSDRV_GetTrueTypeMetrics(void)
{ {
CHAR name_buf[256], value_buf[256]; static const WCHAR pathW[] = {'P','a','t','h',0};
INT i = 0;
FT_Error error; FT_Error error;
FT_Library library; FT_Library library;
HKEY hkey; HKEY hkey;
DWORD type, name_len, value_len; DWORD len;
LPWSTR valueW;
/* @@ Wine registry key: HKLM\Software\Wine\Wine\Config\TrueType Font Directories */ LPSTR valueA, ptr;
if (RegOpenKeyExA(HKEY_LOCAL_MACHINE,
"Software\\Wine\\Wine\\Config\\TrueType Font Directories",
0, KEY_READ, &hkey) != ERROR_SUCCESS)
return TRUE;
/* @@ Wine registry key: HKCU\Software\Wine\Fonts */
if (RegOpenKeyA(HKEY_CURRENT_USER, "Software\\Wine\\Fonts", &hkey) != ERROR_SUCCESS)
return TRUE;
ft_handle = wine_dlopen(SONAME_LIBFREETYPE, RTLD_NOW, NULL, 0); ft_handle = wine_dlopen(SONAME_LIBFREETYPE, RTLD_NOW, NULL, 0);
if(!ft_handle) { if(!ft_handle) {
...@@ -631,25 +629,27 @@ BOOL PSDRV_GetTrueTypeMetrics(void) ...@@ -631,25 +629,27 @@ BOOL PSDRV_GetTrueTypeMetrics(void)
return FALSE; return FALSE;
} }
name_len = sizeof(name_buf); if (RegQueryValueExW( hkey, pathW, NULL, NULL, NULL, &len ) == ERROR_SUCCESS)
value_len = sizeof(value_buf);
while (RegEnumValueA(hkey, i++, name_buf, &name_len, NULL, &type, value_buf,
&value_len) == ERROR_SUCCESS)
{ {
value_buf[sizeof(value_buf) - 1] = '\0'; len += sizeof(WCHAR);
valueW = HeapAlloc( GetProcessHeap(), 0, len );
if (ReadTrueTypeDir(library, value_buf) == FALSE) if (RegQueryValueExW( hkey, pathW, NULL, NULL, (LPBYTE)valueW, &len ) == ERROR_SUCCESS)
{ {
RegCloseKey(hkey); len = WideCharToMultiByte( CP_UNIXCP, 0, valueW, -1, NULL, 0, NULL, NULL );
pFT_Done_FreeType(library); valueA = HeapAlloc( GetProcessHeap(), 0, len );
return FALSE; WideCharToMultiByte( CP_UNIXCP, 0, valueW, -1, valueA, len, NULL, NULL );
} TRACE( "got font path %s\n", debugstr_a(valueA) );
ptr = valueA;
/* initialize lengths for new iteration */ while (ptr)
{
name_len = sizeof(name_buf); LPSTR next = strchr( ptr, ':' );
value_len = sizeof(value_buf); if (next) *next++ = 0;
ReadTrueTypeDir( library, ptr );
ptr = next;
}
HeapFree( GetProcessHeap(), 0, valueA );
}
HeapFree( GetProcessHeap(), 0, valueW );
} }
RegCloseKey(hkey); RegCloseKey(hkey);
......
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