http://bugs.winehq.org/show_bug.cgi?id=13829
Andrea Denzler denzler@usa.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |denzler@usa.net
--- Comment #17 from Andrea Denzler denzler@usa.net 2009-06-01 01:27:21 --- Hi,
I wrote a small application to reproduce the Bug and offer the possibility to make some tests.
For a developer there exists two ways to show foreign characters: 1) change current locale / code page to Chinese (for example) and send the correct data encoding to the windows/dialog boxes. This is compatible since Win98 (at least). OR 2) send directly unicode characters to the windows/dialog boxes. This is compatible only since Win2000.
Personally I prefer the method 2 because it works on any Windows installation regardless of the codepage/user settings. Also maybe it's the only way to show multiple character types in the same application (for example russian, chinese and arabic characters at the same time), but I'm not 100% sure about. So my program is sending always Unicode characters to the windows/dialog boxes (and expect unicode characters as the input).
In the FontTest.exe example I have a simple TextBox that is filled with foreign characters. See also the attached FontTestExample.txt file in UTF8 encoding. You can also open that text file and copy/paste in the text into the FontText.exe window. The result is the same.
When I create a Font I can specify it's family (Arial, Tahoma, etc) and the Charset to use. The Charset has a higher priority than the Family. So If I choose a Chinese Charset but my Font Family doesn't contain such glyphs then Windows seeks for another Font to use that contains such glyphs. Better a "wrong" font than no characters at all. Windows and Wine have the same behaviour. But there is a difference.
Under Windows: the DEFAULT_CHARSET is a request to show all existing Unicode characters. So if the choosen Font Family does not contain all glyphs then another Font Family is choosen. See windows1.png and windows2.png. The default charset will show all strings correctly. When I select the Charset (Shift JIS) for Arial then a different Font is used, probably a better matching Arial font for Japanese.
Under Wine: the DEFAULT_CHARSET seems to require only the basic Ansi charset. See wine_nofonts_arial.png, in the tree examples I select Arial font family: Default charset --> Arial font is choosen, but only some strings are shown. Chinese charset --> Arial is overriden by another family. Chinese is shown. Johab charset --> Arial is overriden by another family. Korean is shown. The problem is that whatever charset I try, it never happen that all strings are shown correctly, unlike on Windows. What I think is that none of the fonts in the default installation of Wine contains all glyphs of the Unicode set. Even installing "allfonts" with winetricks doesn't change this situation. See wine_nofonts_tahoma_courier_times.png for a view of some other fonts.
But after I copy the free unifont.ttf into the ~/.wine/drive_c/windows/Fonts folder and restart FontTest.exe I will get another situation. (The unifont.ttf was downloaded from the site http://unifoundry.com/unifont.html)
See wine_unifont.png. The Default charset still select the Arial font showing only some characters, even if I know that there exists at least one font (unifont.tff) that contains all glyphs. In the screenshot you can see it on the right (Arabic charset give the same result). If I select the Chinese charset for Arial then the Unifont.ttf is choosen, so I will get finally all strings shown. A confirmation is that if I select the Unifont family on the default charset then I will get the same result.
-------------------------- - Conclusion -------------------------- Bug 1: When creating a Font the Default charset under Wine doesnt require all glyphs to be shown (on Windows all glyphs are required to be shown correctly).
Bug 2: Non of the default fonts contain all the glyphs. Some fonts contain some glyphs and other fonts contain other glyphs. By selecting a specific charset it is possibile to view them. But it is not possible to view all possible characters using a single Font. Under Windows most of the fonts contain all glyphs.
byeee Andrea Denzler
P.S.: All files are under the standard GPL General Public License v2.