Win10 2004, Laz 2.0.8 auch Linux Mint 20, Laz 2.0.6
Im Umgang mit den Fonts komme ich so leidlich zurecht, aber mir fehlt ein wenig Grundlagenwissen in dem Bereich.
Was ich mich immer schon mal gefragt habe:
Bei verschiedenen Komponenten ist unter Font immer eingetragen
CharSet=Default_Charset
Color=cldefault
Height=0, Size=0
usw.
Wo wird "default" usw. festgelegt?
Warum Height=0, Size=0?
Anderswo steht bei Charset z.B. die Kodierung UTF8 ???
Wie ist der Zusammenhang zum Betriebssystem?
Welche Kompatibilitäten zu Delphi gibt es?
Welches Wissen/Fragen gibt es noch zum Themenbereich?
Über ein paar Hinweise zum kompakten Nachlesen oder direkt würde ich mich freuen.
Danke schon mal.
Fonts Default_Charset ...
Re: Fonts Default_Charset ...
Die Default-Werte kommen aus dem Widgetset, also dem, was das Betriebssystem zur Verfügung stellt. Dadurch wird erreicht, dass die mit Lazarus erstellten Anwendungen so aussehen, wie der Benutzer das gewohnt ist.
Font.Size = 0 bedeutet, dass die Größe des Standard-Fonts genommen wird.
Font.Size ist die Größe in typographischen Einheiten (72pt = 1 Zoll), das heißt der Text is auf allen Auflösungen gleich groß. Font.Height ist die (negative) Größe in Pixeln, das heißt: der Text erscheint auf Bildschirmen mit höherer Auflösung kleiner. Dass Font.Height als negative Zahl genommen wird, hat sicher einen Grund...
In Delphi sind die Font-Parameter konkret vorbelegt, Font.Name = 'Tahoma', früher: 'MS Sans Serif', Font.Size = 8. Wenn ich ein Delphi-Programm portiere, sind das die Einstellungen, die ich als erstes ändere: Font.Name --> 'default', Font.Size --> 0.
Font.Color = clDefault ist die Farbe, die das Widgetset für diese Komponente standardmäßig vorsieht. Aber auch wenn die Farbe im Objekt-Inspektor verändert wird, kann es sein, dass das nicht bei allen Komponenten angenommen wird, nämlic dann wenn das Widgetset keine Änderung der Farbe erlaubt - siehe Lasche Restrictions im Object Inspector.
Font.Size = 0 bedeutet, dass die Größe des Standard-Fonts genommen wird.
Font.Size ist die Größe in typographischen Einheiten (72pt = 1 Zoll), das heißt der Text is auf allen Auflösungen gleich groß. Font.Height ist die (negative) Größe in Pixeln, das heißt: der Text erscheint auf Bildschirmen mit höherer Auflösung kleiner. Dass Font.Height als negative Zahl genommen wird, hat sicher einen Grund...
In Delphi sind die Font-Parameter konkret vorbelegt, Font.Name = 'Tahoma', früher: 'MS Sans Serif', Font.Size = 8. Wenn ich ein Delphi-Programm portiere, sind das die Einstellungen, die ich als erstes ändere: Font.Name --> 'default', Font.Size --> 0.
Font.Color = clDefault ist die Farbe, die das Widgetset für diese Komponente standardmäßig vorsieht. Aber auch wenn die Farbe im Objekt-Inspektor verändert wird, kann es sein, dass das nicht bei allen Komponenten angenommen wird, nämlic dann wenn das Widgetset keine Änderung der Farbe erlaubt - siehe Lasche Restrictions im Object Inspector.
- Winni
- Beiträge: 1577
- Registriert: Mo 2. Mär 2009, 16:45
- OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
- CPU-Target: 64Bit
- Wohnort: Fast Dänemark
Re: Fonts Default_Charset ...
Hi!
Mit der Umrechnung von Font.Height <--> Font.Size hat seinerzeit Delphi leider großes Chaos veranstaltet.
Es gilt:
Font.Height = -Font.Size*Font.PixelsPerInch/72
Man achte auf das Minus-Zeichen.
Allerdings wird das fast nie beachtet, so dass man in der Regel mit beiden Werten im positiven Bereich arbeiten kann.
Außerdem wird hin und wieder die Umrechnung fehlerhaft vorgenommen,
so daß ich prinzipiell nur mit Height arbeite - da muss nix umgerechnet werden.
Dass beide Seiten als Default den Wert Null annehmen birgt Gefahr:
Wenn man per code mal einfach die Größe um zwei erhöht, dann landet man bei 2 Pixeln.
In denen ist aber nun definitiv kein Buchstabe unterzubringen.
Winni
Mit der Umrechnung von Font.Height <--> Font.Size hat seinerzeit Delphi leider großes Chaos veranstaltet.
Es gilt:
Font.Height = -Font.Size*Font.PixelsPerInch/72
Man achte auf das Minus-Zeichen.
Allerdings wird das fast nie beachtet, so dass man in der Regel mit beiden Werten im positiven Bereich arbeiten kann.
Außerdem wird hin und wieder die Umrechnung fehlerhaft vorgenommen,
so daß ich prinzipiell nur mit Height arbeite - da muss nix umgerechnet werden.
Dass beide Seiten als Default den Wert Null annehmen birgt Gefahr:
Wenn man per code mal einfach die Größe um zwei erhöht, dann landet man bei 2 Pixeln.
In denen ist aber nun definitiv kein Buchstabe unterzubringen.
Winni
Re: Fonts Default_Charset ...
Wie hoch ein Font mit Höhe 0 in Wirklichkeit ist, kann man mit GetFontData() (unit Graphics) abfragen.
Code: Alles auswählen
procedure TForm1.FormShow(Sender: TObject);
var
fd: TFontData;
begin
fd := GetFontData(Font.Handle);
Memo1.Lines.Add(fd.Name);
Memo1.Lines.Add(IntToStr(-fd.Height) + ' pixel');
Memo1.Lines.Add(IntToStr(-fd.Height * 72 div Font.PixelsPerInch) + 'pt');
end;