Huw Davies wrote:
On Fri, Sep 09, 2005 at 12:46:10PM +0100, Richard Cohen wrote:
.. Changing SYMBOL_CHARSET -> DEFAULT_CHARSET, FIXED_PITCH -> DEFAULT_PITCH ..
We shouldn't need to do this. Fixing marlett.ttf would be the right thing to do. ...
I agree that marlett.ttf should be fixed, but I think the patch is correct, because ...
1. AFAICS bug#3284 is caused by a bug in fontforge that was fixed before 20050502, rather than an error in marlett.sfd. The patch works around the broken fontforge.
2. Marlett is not FIXED_PITCH.
3. MSDN says in CreateFont:
Windows 95/98/Me: You can use the DEFAULT_CHARSET value to allow the name and size of a font to fully describe the logical font. If the specified font name does not exist, a font from any character set can be substituted for the specified font, so you should use DEFAULT_CHARSET sparingly to avoid unexpected results.
Windows NT/2000/XP: DEFAULT_CHARSET is set to a value based on the
current system locale. For example, when the system locale is English (United States), it is set as ANSI_CHARSET.
Fonts with other character sets may exist in the operating system. If an application uses a font with an unknown character set, it
should > not attempt to translate or interpret strings that are rendered with
that font.
To ensure consistent results when creating a font, do not specify OEM_CHARSET or DEFAULT_CHARSET. If you specify a typeface name in the lpszFace parameter, make sure that the fdwCharSet value matches the character set of the typeface specified in lpszFace.
The Wine font mapper seems to copy the Win98 behaviour; specifying SYMBOL_CHARSET sort of implies that the font mapper can fall back to any font with SYMBOL_CHARSET if it can't find Marlett, which really isn't the case.
4. (Appeal to authority!) Despite the warnings against using DEFAULT_CHARSET, a googlefight gives
about 53 for Marlett SYMBOL_CHARSET
about 122 for Marlett DEFAULT_CHARSET (apparently including MFC -- see http://www.winehq.org/hypermail/wine-patches/2004/03/0010.html )
Richard.