Eigenschaft: Font.Size (TLabel)

Font.Size ist die Größe der Schrift in Abhängigkeit von der Größe Ihres Ausgabegerätes. Da dieser Satz korrekt ist, aber leider nicht besprochen wird, habe ich mich auch diesen Themas etwas angenommen. Es gibt hierzu auch ein Programm mit dem aber weniger die Funktion als die Größe berechnet wird.

Verweis: AutoSize OptimalFill Font.Height
Uses: StdCtrls
Eingabe: Tatsächliche Größe in 1/72 inch: Ganzzahl:Integer;
Ausgabe: Soll Je nach Medium die tatsächliche Größe darstellen.
Funktion: Ausgabe in Echtgröße

Beispiel 1

Vorbereitung: Erstellen sie eine IDE Anwendung und ziehen Sie ein TMemo auf die Form. Binden Sie die Unit: StrUtils mit der Uses-Klausel in die Anwendung ein. Erstellen Sie zusätzlich ein OnActivate-Ereignis für die Form.

procedure TForm1.FormActivate(Sender: TObject);
var
  PointIncm, SizePoints: double;
  Striche:Integer;
begin
  Striche := 60;
  PointIncm := 2.54 / 72;
  SizePoints := 1 / PointIncm;
  Form1.Width := 600;
  Form1.Height := 400;
  Memo1.Align := alClient;
  Memo1.Clear;
  Memo1.Append(DupeString('-', Striche));
  Memo1.Append('Die FontSize-Größe wird in Points gemessen.');
  Memo1.Append('Ein Point ist der 72 Teil eines Inches (2,54 cm).');
  Memo1.Append(Format('Demnach hat ein Point: %6.4f', [PointIncm]) + 'cm');
  Memo1.Append(DupeString('-', Striche));
  Memo1.Append('Wenn Sie nun eine tatsächliche Größe von 1 cm');
  Memo1.Append('in Size umrechnen wollen dann');
  Memo1.Append('Rechnen Sie: 1cm / Points je cm');
  Memo1.Append(Format('1cm geteilt durch %6.4f', [PointIncm]) + 'cm');
  Memo1.Append(DupeString('-', Striche));
  Memo1.Append('Ergibt eine Font.Size von: ' + IntToStr(Round(SizePoints)) + ' Points.');
  Memo1.Append(DupeString('-', Striche));
end;

In dem Programm sehen Wir wie viele Points ein 1 cm hat. Eigentlich sind es 28,3 statt 28. Trotzdem reicht es nicht die Höhe für der Schrift auf dem Bildschirm. Dies hat 2 Gründe.

Grund 1

In dem Programm sehen Wir wie viele Points ein 1 cm hat. Eigentlich sind es 28,3 statt 28. Trotzdem reicht diese Angabe nicht. Dies hat 2 Gründe.

Im Gegensatz zur Ausgabe auf den Drucker kenne ich die genaue Auflösung Ihres Bildschirmes nicht. 300 Dpi bedeutet 300 Punkte je Inch bedeutet 118 Punkte pro cm. Diese genaue Angabe für die Auflösung Ihres Bildschirms habe ich noch nicht unter Windows gesehen. Die Angabe der Eigenschaft DesignTimePPI ist meines Erachtens nicht genau. Es fehlt die tatsächliche hardwareseitige Auflösung Ihres Bildschirms (Lochmaske). Ohne diese Angabe können Sie keine cm genaue Ausgabe auf Ihrem Bildschirm verwirklichen. Beim Drucker ist die Auflösung allerdings festgelegt und kann zuverlässig über printer.XDPI – YDPI ausgelesen werden.

Grund 2

Die genaue Höhe einer Schrift liegt nicht in Ihrem ermessen. Denn die Höhe der einzelnen Zeichen ist von der Person abhängig, die den Schriftsatz entwickelt. Es gibt da mehrere Linien. Unter anderem eine obere und eine untere Linie. Wie weit der Schriftsatz von den Grenzlinien entfernt, liegt können Sie nur beeinflussen, wenn Sie die Schrift kennen oder wenn Sie diese entwickelt haben.

Beispiel 2

Vorbereitung: Erstellen sie eine IDE Anwendung und ziehen Sie ein TButton und 2 TLabel auf die Form.

procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.color := clLime;
  Label2.color := clYellow;
  Label1.Top := 0;
  Label2.Top := 0;
  //Festlegen der Schriftgröße
  Label1.Font.Size := -20;
  Label2.Font.Size := 20;
  Label1.Left := 0;
  Label2.Left := Label1.Width + 25;
end;

Lazarus unterschied Size und Height
Beispiel 2 Ausgabe. Links Size – 20 rechts Size 20.

Die Größen Font.Size und Font.Height stehen in Wechselwirkung. In dem Beispiel haben wir 2 mal Size 20 angegben jedoch einmal mit einem Minus Zeichen. Size 20 bedeutet Ihr unter DesignTimePPI angegebener Wert /72. Ohne Vergrößerung ist Ihr DesignTimePPI=96. Ein Wert der im Zuge der hochauflösenden Monitore an Bedeutung verliert. Ich habe ein 4K – Monitor, wenn ich nun die Vergrößerungsfunktion meines Betriebssystems abschalte, dann brauche ich eine Lupe. 🙂 Deswegen liegt mein DesignTimePPI bei 168. 168 / 96 = 1.75 -> Vergrößerungswert 175%. Alter Mann -> Alte Augen. 🙂

Unsere Label in Nahaufnahme.

Ein Font.Size-Wert von -20 bedeutet bei mir 168/72*20=46.6…. ~ 47. Dieser Wert wird dann für Font.Height berechnet und eingetragen. Ein Font.Size-Wert von -20 ist ohne Zugabe. Ein Font.Size-Wert von 20 ist mit Zugabe und führt zu einer Höhe von 62.