From: Tomas Frydrych (tomas@frydrych.uklinux.net)
Date: Fri Aug 09 2002 - 11:14:09 EDT
I have looked at the hinting-related issues that Martin raised, but it is 
clear to me from the code that the two sets of units are the principal 
cause of these problems, and we have to move to using a single set 
of units before we can properly handle font scaling.
So I would like to remove the layout units ASAP, probably this 
weekend; I have got bulk of the changes done in my tree and it 
compiles and kind-of runs. I will initially commit this using #ifdef 
USE_LAYOUT_UNITS so as to minimize disruption, but once things 
start working reasonably, I will delete the old code for the sake of 
readability.
For now I want to continue using int's for our widths; this will make 
the transition easier and there will be nothing stoping us from moving 
to floats later, if we wish to do so.
I want the new system of units to have a resolution 1024 times 
greater than the device on which we operate; this will give us some 
extra margin against rounding errors on low resolution devices, such 
as the screen; I will define macros UT_DEV_UNITS() and 
UT_LOG_UNITS() for the conversions. Please note that these 
conversions only will need to be done inside the gr_*Graphics 
classes, to the rest of AW this will be entirely transparent.
All our widths in screen context will be scaled by the zoom factor, as 
they are now.
The key thing in this change is that when the gr_*Graphics:: 
functions retrieve the fonts and measure char widths, etc, they have 
to be processing the font point size correctly, i.e., they have to be 
requesting the metrics for the given point size and present device 
resolution, not, as it is done at the moment, adjusting the point size 
by the device resolution. This is very simple to do on win32, and 
should not be hard anywhere else, since this is the normal and only 
correct way of doing it.
Tomas
This archive was generated by hypermail 2.1.4 : Fri Aug 09 2002 - 11:19:03 EDT