http://bugs.winehq.org/show_bug.cgi?id=7571
------- Additional Comments From inckie@gmail.com 2007-06-06 15:25 ------- Created an attachment (id=6640) --> (http://bugs.winehq.org/attachment.cgi?id=6640&action=view) EnumFontFamilies() logs
You're right, I overlooked many things last time. Okay, so I just run the tests on Windows again, and then on Wine, with and without my patch. For <empty> DEFAULT_CHARSET, I got the following with Arial Black and Trebuchet MS:
Windows: font.c:1180: enumed font "Arial Black", charset 0, weight 400, italic 0 font.c:1180: enumed font "Arial Black", charset 161, weight 400, italic 0 font.c:1180: enumed font "Arial Black", charset 162, weight 400, italic 0 font.c:1180: enumed font "Arial Black", charset 186, weight 400, italic 0 font.c:1180: enumed font "Arial Black", charset 238, weight 400, italic 0 font.c:1180: enumed font "Arial Black", charset 204, weight 400, italic 0 font.c:1180: enumed font "Trebuchet MS", charset 0, weight 400, italic 0 font.c:1180: enumed font "Trebuchet MS", charset 161, weight 400, italic 0 font.c:1180: enumed font "Trebuchet MS", charset 162, weight 400, italic 0 font.c:1180: enumed font "Trebuchet MS", charset 186, weight 400, italic 0 font.c:1180: enumed font "Trebuchet MS", charset 238, weight 400, italic 0 font.c:1180: enumed font "Trebuchet MS", charset 204, weight 400, italic 0
Wine, without patch: font.c:1180: enumed font "Arial Black", charset 0, weight 400, italic 0 font.c:1180: enumed font "Arial Black", charset 238, weight 400, italic 0 font.c:1180: enumed font "Arial Black", charset 204, weight 400, italic 0 font.c:1180: enumed font "Arial Black", charset 161, weight 400, italic 0 font.c:1180: enumed font "Arial Black", charset 162, weight 400, italic 0 font.c:1180: enumed font "Arial Black", charset 186, weight 400, italic 0 font.c:1180: enumed font "Arial Black", charset 186, weight 400, italic 0 font.c:1180: enumed font "Trebuchet MS", charset 0, weight 400, italic 255 font.c:1180: enumed font "Trebuchet MS", charset 238, weight 400, italic 255 font.c:1180: enumed font "Trebuchet MS", charset 204, weight 400, italic 255 font.c:1180: enumed font "Trebuchet MS", charset 161, weight 400, italic 255 font.c:1180: enumed font "Trebuchet MS", charset 162, weight 400, italic 255 font.c:1180: enumed font "Trebuchet MS", charset 186, weight 400, italic 255 font.c:1180: enumed font "Trebuchet MS", charset 186, weight 400, italic 255
Wine, with patch: font.c:1180: enumed font "Arial Black", charset 0, weight 400, italic 0 font.c:1180: enumed font "Arial Black", charset 186, weight 400, italic 0 font.c:1180: enumed font "Arial Black", charset 162, weight 400, italic 0 font.c:1180: enumed font "Arial Black", charset 161, weight 400, italic 0 font.c:1180: enumed font "Arial Black", charset 204, weight 400, italic 0 font.c:1180: enumed font "Arial Black", charset 238, weight 400, italic 0 font.c:1180: enumed font "Arial Black", charset 0, weight 400, italic 0 font.c:1180: enumed font "Trebuchet MS", charset 0, weight 400, italic 255 font.c:1180: enumed font "Trebuchet MS", charset 186, weight 400, italic 255 font.c:1180: enumed font "Trebuchet MS", charset 162, weight 400, italic 255 font.c:1180: enumed font "Trebuchet MS", charset 161, weight 400, italic 255 font.c:1180: enumed font "Trebuchet MS", charset 204, weight 400, italic 255 font.c:1180: enumed font "Trebuchet MS", charset 238, weight 400, italic 255 font.c:1180: enumed font "Trebuchet MS", charset 0, weight 400, italic 255
From these I noticed some things:
* on Windows, many fonts enumerate VIETNAMESE_CHARSET (163) last and/or RUSSIAN_CHARSET (204) just after;
* on Windows, only the fonts that only enumerate charset 0 have this one as their last enumerated charset;
* without the patch, Wine does repeat BALTIC_CHARSET (186) as the last enumerated charset with many fonts;
* with the patch, only DEFAULT_CHARSET is repeated, both at the beginning and at the end;
* with or without the patch, I couldn't see Wine enumerating "charsets that are not supposed to be enumerated";
* the last enumerated charset (or, for that matter, the order of the enumeration) doesn't seem to be the real cause, as most fonts on Windows (at least in this box) enumerate either VIETNAMESE_CHARSET or RUSSIAN_CHARSET last;
* Finally, a "grep 204" on the <empty> DEFAULT_CHARSET section of the Wine log after applying the patch yielded 55 lines (Arial Black and Trebuchet MS included, as you can see), and thus my patch does not lose RUSSIAN_CHARSET;
With the patch, the only charset that ever gets duplicated is DEFAULT_CHARSET, but not for all fonts, and not the same number of times for all fonts; some interesting examples to look at in the two Wine logs are:
* Kochi Gothic (no duplication) * Liberation Sans (three DEFAULT_CHARSET duplications with the patch, three BALTIC_CHARSET duplications without it) * Loma (no duplication with the patch, two THAI_CHARSET duplications without it) * Shado (three DEFAULT_CHARSET duplications with the patch, three ARABIC_CHARSET duplications without the patch).
I'm looking into this now.