http://bugs.winehq.org/show_bug.cgi?id=7571
------- Additional Comments From inckie@gmail.com 2007-22-05 15:01 ------- Created an attachment (id=6419) --> (http://bugs.winehq.org/attachment.cgi?id=6419&action=view) Fix for the Notes R5 issue only
The construct:
if (dwUnicode & ENUM_ALL_FAMILIES) ret = WineEngEnumFonts(plf, FONT_EnumInstance, (LPARAM)&fe32, TRUE); else ret = WineEngEnumFonts(plf, FONT_EnumInstance, (LPARAM)&fe32, FALSE);
can be further simplified to
ret = WineEngEnumFonts(plf, FONT_EnumInstance, (LPARAM)&fe32, (dwUnicode & ENUM_ALL_FAMILIES) != 0);
Ah, oops.
- if (enumFontFamilies) {
if (csi.ciCharset == SYMBOL_CHARSET)
elf.elfLogFont.lfCharSet = SYMBOL_CHARSET;
else continue;
csi.ciCharset = ntm.ntmTm.tmCharSet =
elf.elfLogFont.lfCharSet;
- }
This doesn't look right. Why do you allow only SYMBOL_CHARSET here?
Well, I ran the tests on Windows and saw that EnumFontFamilies() didn't enumerate any charsets other than 0... did I make too early a conclusion? After all, the tests as they are now show that EnumFontFamilies() shouldn't enumerate any other charset when called with a familiy name. However, I do feel I'm missing something here.
I also managed to fix the Lotus Notes R5 issue - please see lines 89-101 of the patch file. No tests break, and Notes is happy again. :)
This should be investigated and fixed separately.
This attachment should do it, then. I have just tested it on Notes, with almost as many fonts as in the first comment.
It seems to me that this issue is independent of the other one adressed in the remainder of the patch. That is, I tested each one individually and both together, and their results didn't influence each other's - including the number of enumerated fonts. I'd really like, however, to see the results of these changes in systems other than mine.