Fonts Default_Charset ...

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
lzuser
Beiträge: 97
Registriert: Sa 20. Jun 2009, 16:00
OS, Lazarus, FPC: Win10 20H2, Laz 2.0.8 auch Linux Mint Mate 20, Laz 2.0.6
CPU-Target: 64Bit

Fonts Default_Charset ...

Beitrag von lzuser »

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.

wp_xyz
Beiträge: 4892
Registriert: Fr 8. Apr 2011, 09:01

Re: Fonts Default_Charset ...

Beitrag von wp_xyz »

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.

Benutzeravatar
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 ...

Beitrag von Winni »

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

wp_xyz
Beiträge: 4892
Registriert: Fr 8. Apr 2011, 09:01

Re: Fonts Default_Charset ...

Beitrag von wp_xyz »

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;

Antworten