[Lazarus] Reading a file that contains UTF-8 text

Graeme Geldenhuys graemeg at opensoft.homeip.net
Thu Jul 9 13:07:01 CEST 2009

I was thinking more about a solution to this problem.

What if we move away from the point sizes and rather give it a name 
like: ExtraLarge, Large, Normal, Small, Tiny etc... Then each platform 
implements the size name to what they consider the valid point size 
(taking into account dpi settings).

eg: Based on a 96dpi on Linux and Windows and 75 dpi on Mac

    Font Size         Linux      Windows      Mac
    Large              12pt       10pt         15pt
    Normal             10pt        8pt         13pt
    Small               8pt        7pt         11pt

So when you specify Font-Size = Normal, it looks the same sime (or very 
close) to what you intended, no matter the platform.

fpGUI Toolkit already uses what is called a Font Alias (or Font 
Description) when specifying fonts in components. Obviously the 
developer could specify fonts in the normal fashion as well (real font 
name, size, attribute).

Examples of Font Aliases as used in fpGUI Toolkit:
(font aliases are denoted by a # prefix)

   '#label1'     =  Arial-10:antialias=true
   '#label2'     =  Arial-10:antialias=true:bold
   '#edit1'      =  Arial-10:antialias=true
   '#edit2'      =  Courier New-10:antialias=true
   '#grid'       =  Arial-9

So I could probably define new font alias called #Large, #Normal, 
#Small, or modify the existing aliases. Then under each platform 
(platform specify backend units) specify the preferred point size for 
each of those. That way my applications can still continue using the 
Font Alias as normal when specifying a font. Ummm... that could work.

Here is an example of setting a font for a component using Font Aliases 
- as used in fpGUI Toolkit:

   Label1 := TfpgLabel.Create(self);
   with Label1 do
     Name := 'Label1';
     SetPosition(8, 16, 104, 30);
     FontDesc := '#Label2';          // font defined here
     Hint := '';
     Text := 'Some Caption';

   Edit1 := TfpgEdit.Create(self);
   with Edit1 do
     Name := 'Edit1';
     SetPosition(116, 16, 160, 34);
     TabOrder := 1;
     FontDesc := '#Edit1';          // font defined here
     Text := '';

   - Graeme -

fpGUI Toolkit - a cross-platform GUI toolkit using Free Pascal

More information about the Lazarus mailing list