[Wine] Help! bad cyrillic font rendering

Гончаров Евгений
Mon, 22 Oct 2007 08:11:34 -0000

Good Day!
I have a problem with rendering of cyrillic font in one window. Everything is
fine in others windows of the same program.
I've tried to copy fonts from Windows, where this program works, but it
doesn't help.
LANG=ru_RU.UTF-8
I runned wine with "WINEDEBUG=trace+font,trace+dialog":
...
trace:font:CreateFontIndirectW (-21 0 0 0 31 3 2 1 204) L"Courier New"
Bold ? => 0xb94
trace:font:CreateFontIndirectW (-16 0 0 0 31 3 2 1 204) L"Times New
Roman" Bold ? => 0xb98
...
trace:font:create_child_font_list font
"/home/test/.wine/dosdevices/c:/windows/fonts/courer.fon" 0
trace:font:WineEngCreateFontInstance caching: gdiFont=0x1ee2f18 ?hfont=0xb98
...
trace:font:GdiGetCodePage charset 204 => cp 1251
trace:font:FONT_mbtowc mapped "\xd1\xeb\xf3\xe6\xe5\xe1\xed\xee\xe5
\xef\xee\xeb\xe5 " ->
L"\0421\043b\0443\0436\0435\0431\043d\043e\0435 \043f\043e\043b\0435 "
trace:font:GetTextExtentExPointW (0x31c,
L"\0421\043b\0443\0436\0435\0431\043d\043e\0435 \043f\043e\043b\0435
", 0)
trace:font:GetTextMetricsW text metrics:
...
trace:font:WineEngCreateFontInstance L"Times New Roman", h=-16, it=0,
weight=700, PandF=31, charset=204 orient 0 escapement 0
trace:font:WineEngCreateFontInstance returning cached gdiFont(0x1ee2f18) for
hFont 0xb98
trace:font:X11DRV_SelectFont hdc=0x31c, hfont=0xb98
trace:font:X11DRV_SelectFont gdiFont = 0x1ee2f18
trace:font:GetTextMetricsW text metrics:
? ? Weight = 400???????? FirstChar = 32? AveCharWidth = 8
? ? Italic = ? 0???????? LastChar = 255????????? MaxCharWidth = 8
? ? UnderLined = 0?????? DefaultChar = 128?????? Overhang = 0
? ? StruckOut = 0??????? BreakChar = 32? CharSet = 204
? ? PitchAndFamily = 30
? ? --------------------
? ? InternalLeading = 0
? ? Ascent = 11
? ? Descent = 2
? ? Height = 13
trace:font:GetTextExtentExPointW (0x31c,
L"\0421\043b\0443\0436\0435\0431\043d\043e\0435 \043f\043e\043b\0435
", 263)
trace:font:GetTextMetricsW text metrics:
? ? Weight = 400???????? FirstChar = 32? AveCharWidth = 8
? ? Italic = ? 0???????? LastChar = 255????????? MaxCharWidth = 8
? ? UnderLined = 0?????? DefaultChar = 128?????? Overhang = 0
? ? StruckOut = 0??????? BreakChar = 32? CharSet = 204
? ? PitchAndFamily = 30
? ? --------------------
? ? InternalLeading = 0
? ? Ascent = 11
? ? Descent = 2
? ? Height = 13
trace:font:WineEngGetTextExtentExPoint 0x1ee2f18,
L"\0421\043b\0443\0436\0435\0431\043d\043e\0435 \043f\043e\043b\0435
", 15, 0, 0x33f9a4
trace:font:get_glyph_index 0421 (ffffffd1) -> ret 178 def_used 0
trace:font:WineEngGetGlyphOutline 0x1ee2f18, 00b2, 00000080, 0x33ef8c, 00000000,
(nil), (nil)
trace:font:get_glyph_index 043b (ffffffeb) -> ret 204 def_used 0
trace:font:WineEngGetGlyphOutline 0x1ee2f18, 00cc, 00000080, 0x33ef8c, 00000000,
(nil), (nil)
trace:font:get_glyph_index 0443 (fffffff3) -> ret 212 def_used 0
trace:font:WineEngGetGlyphOutline 0x1ee2f18, 00d4, 00000080, 0x33ef8c, 00000000,
(nil), (nil)
trace:font:get_glyph_index 0436 (ffffffe6) -> ret 199 def_used 0
trace:font:WineEngGetGlyphOutline 0x1ee2f18, 00c7, 00000080, 0x33ef8c, 00000000,
(nil), (nil)
trace:font:get_glyph_index 0435 (ffffffe5) -> ret 198 def_used 0
trace:font:WineEngGetGlyphOutline 0x1ee2f18, 00c6, 00000080, 0x33ef8c, 00000000,
(nil), (nil)
trace:font:get_glyph_index 0431 (ffffffe1) -> ret 194 def_used 0
trace:font:WineEngGetGlyphOutline 0x1ee2f18, 00c2, 00000080, 0x33ef8c, 00000000,
(nil), (nil)
trace:font:get_glyph_index 043d (ffffffed) -> ret 206 def_used 0
trace:font:WineEngGetGlyphOutline 0x1ee2f18, 00ce, 00000080, 0x33ef8c, 00000000,
(nil), (nil)
trace:font:get_glyph_index 043e (ffffffee) -> ret 207 def_used 0
trace:font:WineEngGetGlyphOutline 0x1ee2f18, 00cf, 00000080, 0x33ef8c, 00000000,
(nil), (nil)
trace:font:get_glyph_index 0435 (ffffffe5) -> ret 198 def_used 0
trace:font:WineEngGetGlyphOutline 0x1ee2f18, 00c6, 00000080, 0x33ef8c, 00000000,
(nil), (nil)
trace:font:get_glyph_index 0020 (20) -> ret 1 def_used 0
trace:font:WineEngGetGlyphOutline 0x1ee2f18, 0001, 00000080, 0x33ef8c, 00000000,
(nil), (nil)
trace:font:get_glyph_index 043f (ffffffef) -> ret 208 def_used 0
trace:font:WineEngGetGlyphOutline 0x1ee2f18, 00d0, 00000080, 0x33ef8c, 00000000,
(nil), (nil)
trace:font:get_glyph_index 043e (ffffffee) -> ret 207 def_used 0
trace:font:WineEngGetGlyphOutline 0x1ee2f18, 00cf, 00000080, 0x33ef8c, 00000000,
(nil), (nil)
trace:font:get_glyph_index 043b (ffffffeb) -> ret 204 def_used 0
trace:font:WineEngGetGlyphOutline 0x1ee2f18, 00cc, 00000080, 0x33ef8c, 00000000,
(nil), (nil)
trace:font:get_glyph_index 0435 (ffffffe5) -> ret 198 def_used 0
trace:font:WineEngGetGlyphOutline 0x1ee2f18, 00c6, 00000080, 0x33ef8c, 00000000,
(nil), (nil)
trace:font:get_glyph_index 0020 (20) -> ret 1 def_used 0
trace:font:WineEngGetGlyphOutline 0x1ee2f18, 0001, 00000080, 0x33ef8c, 00000000,
(nil), (nil)
trace:font:WineEngGetTextExtentExPoint return 120, 13, 15
trace:font:GetTextExtentExPointW returning 15 120 x 13
trace:font:ExtTextOutW 0x31c, 143, 0, 00000004, 0x33fa58,
L"\0421\043b\0443\0436\0435\0431\043d\043e\0435 \043f\043e\043b\0435
", 15, (nil))
trace:font:ExtTextOutW rect: 0,0 - 263,30
...

I don't understand why "Times New Roman" Bold use
"/home/test/.wine/dosdevices/c:/windows/fonts/courer.fon"? Courier
have cyrillic but nothing except Regular.
I've tried to remove some fonts from
"/home/test/.wine/dosdevices/c:/windows/fonts/" and
"/usr/share/wine/fonts/" in different combinations but it doesn't
help.
Any suggestions and help are welcome :)