Huw D M Davies wrote: > A much better way to do font rendering in Wine is to use the new > client side rendering code. For this you need an XServer capable of > supporting the RENDER extension (xdpyinfo will tell you whether you > have such a beast) and a copy of the FreeType library version at least > 2.0.5 (but the later the better). Add a [FontDirs] section to your > ~/.wine/config file, with entries pointing at any directories that > contain TT fonts...
This got me to try out the client side rendering. It really does make the fonts (in MS Word in particular) not suck! Nice job. Guess I will stick with this configuration. I came across two issues. The first is that virtually all dialogs and some windows were being drawn too narrow. The window/dialog height was normal. Looking at traces with and without the client side rendering, I saw this difference: Server rendering: trace:dialog:DIALOG_ParseTemplate32 DIALOG 0, 0, 287, 165, 0 trace:dialog:DIALOG_ParseTemplate32 STYLE 0x80c820c0 trace:dialog:DIALOG_ParseTemplate32 EXSTYLE 0x00000000 trace:dialog:DIALOG_ParseTemplate32 CAPTION L"Open" trace:dialog:DIALOG_ParseTemplate32 FONT 8, L"helv", 0, FALSE trace:font:WineEngCreateFontInstance L"System", h=16, it=0, weight=400, PandF=22, charset=0 orient 0 escapement 0 ... trace:font:XFONT_GetAvgCharWidth retuning 6 trace:font:XFONT_RealizeFont physfont 3 trace:font:GetTextMetricsW text metrics: Weight = 400 FirstChar = 0 AveCharWidth = 6 Client rendering: trace:dialog:DIALOG_ParseTemplate32 DIALOG 0, 0, 287, 165, 0 trace:dialog:DIALOG_ParseTemplate32 STYLE 0x80c820c0 trace:dialog:DIALOG_ParseTemplate32 EXSTYLE 0x00000000 trace:dialog:DIALOG_ParseTemplate32 CAPTION L"Open" trace:dialog:DIALOG_ParseTemplate32 FONT 8, L"helv", 0, FALSE ... trace:font:WineEngCreateFontInstance L"helv", h=-10, it=0, weight=0, PandF=00, charset=1 orient 0 escapement 0 ... trace:font:WineEngGetTextMetrics OS/2 winA = 1854 winD = 434 typoA = 1491 typoD = -431 typoLG = 307 FT_Face a = 1854, d = -434, h = 2355: HORZ a = 1854, d = -434 lg = 67 maxY = 2124 minY = -665 trace:font:WineEngGetTextMetrics xAvgCharWidth 904 x_scale 20480 tmAvgCharWidth 4 trace:font:GetTextMetricsW text metrics: Weight = 400 FirstChar = 32 AveCharWidth = 4 Suspecting the average char width, but not understanding the code that generates it, I cheated. In WineEngGetTextMetrics(), I added: if (ptm->tmAveCharWidth == 4) ptm->tmAveCharWidth = 6; And this fixes all the dialogs and windows for me. The other problem I ran across is shown in these pictures, showing server and client side rendering. My little hack above had no effect on this particular problem. http://www.leewardfpga.com/server.png http://www.leewardfpga.com/client.png As can be seen, the vertical text is getting chopped off slightly. The font with the problem is Tahoma, and this is with a ~/.wine/config that contains [fonts] "Resolution" = "96" "Default" = "-adobe-times-" "DefaultFixed" = "fixed" "DefaultSerif" = "-monotype-times new roman-" "DefaultSansSerif" = "-microsoft-tahoma-"