Wine fonts too big for their input fields.

Duane Clark dclark at akamail.com
Wed Apr 12 10:55:09 CDT 2006


Huw D M Davies wrote:
> 
> I had some fun with this a month or two ago.  See the
> test_margins_font_change test and calc_min_margin_size in the actual
> code.  The deal seems to be that for 'small' edit controls
> EC_USEFONTINFO results in no margin.  'Small' is currently defined to
> be smaller than the extents of the (four character) string "'**'",
> that's close but not quite how Windows does it.

The fields in my case are 4 numbers.

> Another interesting thing is that when it does set margins they are
> often not symmetric left/right (although you tend to have to use
> larger font sizes to see this) - it's presumably using some pair of
> font metrics to set these and despite spending quite a while hunting I
> drew a blank.
> 
> Now your problem could simply be that you don't have the font that the
> app wants to use in this edit control...

What the "right" font should be is a bit of a mystery to me. From traces 
with the font and edit debug channels turned on, it appears to me the 
application was selecting "MS Shell Dlg". So in my test app, I 
duplicated the selected font:

afont = CreateFont(-11, 0, 0, 0, 400, 0, 0, 0, DEFAULT_CHARSET, 
OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, DEFAULT_PITCH, 
"MS Shell Dlg");
SendMessage(g_hControl,WM_SETFONT,(WPARAM)afont,0);

And indeed on Win2k, that produces an identical result to the Xilinx 
app. On Wine, the font appears to be similar but not identical. As far 
as the characters go, I can see that the '1' has an extra pixel to the 
right at the bottom. Most of the other characters appear to be pixel 
identical (though the '7' is rendered one pixel to the right of where it 
is on Win2k). The biggest difference though, is that the numbers are 
aliased on Wine, and not on Win2k. I'll see if I can figure out what 
fonts are actually being used; I don't really know offhand how to go 
about doing that.




More information about the wine-devel mailing list