|
When given the "-scaled" option fetch the actual screen resolution and
add that to the list of available resolutions for the resX and resY
menus.
I.e. If the pattern contains '*' for the resX and resY fields (i.e.
instead of '0') then we wil end up with the menu containing "0, 100,
NNN", which makes for a really good demonstration of how scaling of
fonts without knowing the true screen resolution can lead to very wonky
results. Even if the values in the pattern are '0' you still get the
true DPI as an option in the menus.
When you specify a size for a scalable font, you should use points,
never pixels. Points are a physical unit of measurement. There are
always 72 points per inch. Never more or less. So to scale fonts
properly on a screen the scaler needs to know the resolution of the
display in pixels per inch in order to render text at a measurable
physical point size. In the current X11 world it is still up to the
user to correctly specify the actual screen resolution when requesting a
scalable font to render text with, and this is now possible to
demonstrate with this change to Xfontsel.
So with the actual correct resolution selected from the resX and resY
menus (and if the resolution figures are accurate and if the display
hasn't been scaled by the hardware or, e.g. XrandR) then choosing any
avaliable point size will show the sample text with a height on the
screen physically matching the chosen point size. To that end the
default pixelSizeList resource has been changed to just "0", as it
should never be changed, and instead the default "pointSizeList"
resource has been extended with a list of reasonable real-world
sample (deci)point sizes.
[also touch up the help text and call exit() to exit main()]
Signed-off-by: Greg A. Woods <woods@robohack.ca>
|