Re: Add a test showing that GDI should not scale bitmap font metrics
On Wed, Sep 01, 2004 at 05:44:19PM +0900, Dmitry Timoshkov wrote:
Hello,
I had a wild guess whether GDI actually scales or not metrics for a bitmap font if a requested font size is not available and wrote a test case for it. No, GDI *does not* scale bitmap font metrics.
Well it does do integer scaling. So if you request System (whose normal size is 16) with 32 <= lfHeight < 48 you'll get a double sized font with all the metrics scaled by a factor of two. Wine doesn't do this yet. Your test shows that gdi doesn't do fractional scaling which is indeed correct. Huw. -- Huw Davies huw(a)codeweavers.com
"Huw D M Davies" <h.davies1(a)physics.ox.ac.uk> wrote:
I had a wild guess whether GDI actually scales or not metrics for a bitmap font if a requested font size is not available and wrote a test case for it. No, GDI *does not* scale bitmap font metrics.
Well it does do integer scaling. So if you request System (whose normal size is 16) with 32 <= lfHeight < 48 you'll get a double sized font with all the metrics scaled by a factor of two. Wine doesn't do this yet. Your test shows that gdi doesn't do fractional scaling which is indeed correct.
Thanks for pointing this out. A quick addition to the submitted test case (attached) confirms that win2k does integer scaling. But it does it in a somewhat inconsistent manner. For instance GetTextExtentPoint32 scales only height but not width, and GetCharWidth does not scale width either. I'm a bit confused, is that a bug or a feature? -- Dmitry.
On Wed, Sep 01, 2004 at 06:49:14PM +0900, Dmitry Timoshkov wrote:
"Huw D M Davies" <h.davies1(a)physics.ox.ac.uk> wrote:
I had a wild guess whether GDI actually scales or not metrics for a bitmap font if a requested font size is not available and wrote a test case for it. No, GDI *does not* scale bitmap font metrics.
Well it does do integer scaling. So if you request System (whose normal size is 16) with 32 <= lfHeight < 48 you'll get a double sized font with all the metrics scaled by a factor of two. Wine doesn't do this yet. Your test shows that gdi doesn't do fractional scaling which is indeed correct.
Thanks for pointing this out. A quick addition to the submitted test case (attached) confirms that win2k does integer scaling. But it does it in a somewhat inconsistent manner. For instance GetTextExtentPoint32 scales only height but not width, and GetCharWidth does not scale width either. I'm a bit confused, is that a bug or a feature?
Try setting lfWidth to 0, that should then scale the font isotropically - setting a non-zero lfWidth can result in different scaling factors in the x and y directions. So for example if you leave width set to the normal width and only multiply up the height then the font will only be scaled in the y direction. Huw. -- Huw Davies huw(a)codeweavers.com
"Huw D M Davies" <h.davies1(a)physics.ox.ac.uk> wrote:
Try setting lfWidth to 0, that should then scale the font isotropically - setting a non-zero lfWidth can result in different scaling factors in the x and y directions. So for example if you leave width set to the normal width and only multiply up the height then the font will only be scaled in the y direction.
That worked. Thanks again for teaching me :-) -- Dmitry.
participants (2)
-
Dmitry Timoshkov -
Huw D M Davies