The conversion is only temporary as we will store the path on faces.
Signed-off-by: Rémi Bernon rbernon@codeweavers.com --- dlls/gdi32/freetype.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/dlls/gdi32/freetype.c b/dlls/gdi32/freetype.c index 3298b31ab74..960c2dc745c 100644 --- a/dlls/gdi32/freetype.c +++ b/dlls/gdi32/freetype.c @@ -592,7 +592,7 @@ static const WCHAR face_y_ppem_value[] = {'Y','p','p','e','m',0}; static const WCHAR face_flags_value[] = {'F','l','a','g','s',0}; static const WCHAR face_internal_leading_value[] = {'I','n','t','e','r','n','a','l',' ','L','e','a','d','i','n','g',0}; static const WCHAR face_font_sig_value[] = {'F','o','n','t',' ','S','i','g','n','a','t','u','r','e',0}; -static const WCHAR face_file_name_value[] = {'F','i','l','e',' ','N','a','m','e','\0'}; +static const WCHAR face_unix_name_value[] = {'U','n','i','x',' ','N','a','m','e','\0'}; static const WCHAR face_full_name_value[] = {'F','u','l','l',' ','N','a','m','e','\0'};
@@ -1683,7 +1683,7 @@ static void load_face(HKEY hkey_face, WCHAR *face_name, Family *family, void *bu /* If we have a File Name key then this is a real font, not just the parent key of a bunch of non-scalable strikes */ needed = buffer_size; - if (RegQueryValueExW(hkey_face, face_file_name_value, NULL, NULL, buffer, &needed) == ERROR_SUCCESS) + if (RegQueryValueExW( hkey_face, face_unix_name_value, NULL, NULL, buffer, &needed ) == ERROR_SUCCESS) { Face *face; face = HeapAlloc(GetProcessHeap(), 0, sizeof(*face)); @@ -1691,7 +1691,7 @@ static void load_face(HKEY hkey_face, WCHAR *face_name, Family *family, void *bu face->family = NULL;
face->refcount = 1; - face->file = strdupW( buffer ); + face->file = towstr( CP_UNIXCP, buffer ); face->style_name = strdupW( face_name );
needed = buffer_size; @@ -1870,6 +1870,7 @@ static void add_face_to_cache(Face *face) { HKEY hkey_family, hkey_face; WCHAR *face_key_name; + char *unix_name;
RegCreateKeyExW( hkey_font_cache, face->family->family_name, 0, NULL, REG_OPTION_VOLATILE, KEY_ALL_ACCESS, NULL, &hkey_family, NULL ); @@ -1889,8 +1890,10 @@ static void add_face_to_cache(Face *face) if(!face->scalable) HeapFree(GetProcessHeap(), 0, face_key_name);
- RegSetValueExW(hkey_face, face_file_name_value, 0, REG_SZ, (BYTE *)face->file, - (strlenW(face->file) + 1) * sizeof(WCHAR)); + unix_name = strWtoA( CP_UNIXCP, face->file ); + RegSetValueExW( hkey_face, face_unix_name_value, 0, REG_BINARY, (BYTE *)unix_name, strlen( unix_name ) + 1 ); + HeapFree( GetProcessHeap(), 0, unix_name ); + RegSetValueExW( hkey_face, face_full_name_value, 0, REG_SZ, (BYTE *)face->full_name, (strlenW( face->full_name ) + 1) * sizeof(WCHAR) );