Author: khornicek
Date: Sun Nov 15 18:01:45 2009
New Revision: 44175
URL:
http://svn.reactos.org/svn/reactos?rev=44175&view=rev
Log:
- load font substitutes from both SysFontSubstitutes and FontSubstitutes registry keys
- add a temporary workaround for font files mapping (compare file name instead of file
index)
- font selection now works
Modified:
branches/arwinss/reactos/dll/win32/gdi32/freetype.c
Modified: branches/arwinss/reactos/dll/win32/gdi32/freetype.c
URL:
http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/dll/win32/gdi32…
==============================================================================
--- branches/arwinss/reactos/dll/win32/gdi32/freetype.c [iso-8859-1] (original)
+++ branches/arwinss/reactos/dll/win32/gdi32/freetype.c [iso-8859-1] Sun Nov 15 18:01:45
2009
@@ -482,6 +482,7 @@
void *data;
size_t size;
HANDLE file;
+ const char *filename; /* HACK see map_font_file */
};
static struct list mappings_list = LIST_INIT( mappings_list );
@@ -1013,7 +1014,7 @@
MultiByteToWideChar(CP_ACP, 0, str, -1, nc->name, len);
}
-static void LoadSubstList(void)
+static void LoadSubstList(LPCSTR lpKey)
{
FontSubst *psub;
HKEY hkey;
@@ -1022,8 +1023,8 @@
LPVOID data;
if(RegOpenKeyA(HKEY_LOCAL_MACHINE,
- "Software\\Microsoft\\Windows NT\\CurrentVersion\\FontSubstitutes",
- &hkey) == ERROR_SUCCESS) {
+ lpKey,
+ &hkey) == ERROR_SUCCESS) {
RegQueryInfoKeyA(hkey, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
&valuelen, &datalen, NULL, NULL);
@@ -2937,7 +2938,8 @@
}
DumpFontList();
- LoadSubstList();
+ LoadSubstList("Software\\Microsoft\\Windows
NT\\CurrentVersion\\SysFontSubstitutes");
+ LoadSubstList("Software\\Microsoft\\Windows
NT\\CurrentVersion\\FontSubstitutes");
DumpSubstList();
LoadReplaceList();
update_reg_entries();
@@ -3004,9 +3006,11 @@
LIST_FOR_EACH_ENTRY( mapping, &mappings_list, struct font_mapping, entry )
{
- if (mapping->volumeserial == hfi.dwVolumeSerialNumber &&
- mapping->indexhigh == hfi.nFileIndexHigh &&
- mapping->indexlow == hfi.nFileIndexLow )
+/*
+ HACK: check for filename until proper support for GetFileInformationByHandle
+ is implemented in our fs driver
+*/
+ if (!_stricmp(mapping->filename, name))
{
mapping->refcount++;
CloseHandle( file );
@@ -3031,6 +3035,7 @@
mapping->indexlow = hfi.nFileIndexLow;
mapping->file = mapped_file;
mapping->size = hfi.nFileSizeLow;
+ mapping->filename = name;
list_add_tail( &mappings_list, &mapping->entry );
return mapping;