[Lazarus] Font sizes on various platforms
DrDiettrich1 at aol.com
Wed Jul 8 08:24:17 CEST 2009
> GG> Now as far as I know this makes fonts look difference in size for the
> GG> same font height. Is this only true when the font size is defined as
> GG> pixel heigh, or does it also apply when font sizes are defined in points
> GG> height as well?
> And also default font could be very different across platforms and
> even in the same platform.
The dpi and default font size should be considered together, because
they make standard text appear to the user in *his* preferred size.
While every platform has a different opinion about *how* the user should
specify his preferences, the resulting default font size in pixels
should be understood as a *user* specific constant.
Unfortunately multiple monitors can have different resolutions, so that
they may have different dpi values. But IMO this should not require to
scale forms differently for every monitor, because the desktop
management of every platform most probably will use common parameters
for the entire desktop.
> To "solve" both problems in my cross
> platform applications (Linux and Windows) I'm using a self designed
> ScaleBy function which in the design platform takes some parameters,
> like a test string width, and scales all visual elements in the form
> to preserve look.
This is why Microsoft in Visual Studio uses Twips (1/20 pt) instead of
pixels, for all component positions and extents. In Delphi such scaling
is implemented by the Scaled and PixelsPerInch form properties.
> Of course it will change the width and height of the
> scaled forms. The main problem is that some visual objects must not be
> scaled for any reason, and there is no way to prevent it, anyway they
> are not common.
Delphi controls have a ScalingFlags property, indicating which
properties already have been scaled. A second property of that type
could indicate *which* of these properties should [not] be scaled at
all, so that scaling could be turned off for graphical controls which
contain neither text nor scale nicely (bitmaps...). Or a single boolean
value [Scaled?] could specify whether the control has to be resized at
all, while its position always should scale together with all other
> Maybe something like this functions can be added to the LCL to get
> compatibility with "ScaleBy"'s Delphi.
> Attached is the current code, it has not been finished and only
> checked in in some quite simple forms.
Nice concept :-)
More information about the Lazarus