Eigenschaft: Font.CharSet (TLabel)

Verweis: Caption(TLabel) Hauptmenü – Bearbeiten
Uses: LazUTF8
Eingabe: Eingabe der UTF8 Codepage
Ausgabe: Anzeige der passenden Zeichen.
Funktion: DEFAULT_CHARSET ermittelt automatisch den richtigen Zeichensatz.

Beispiel 1

Vorbereitung: Erstellen sie eine IDE Anwendung und ziehen Sie ein TLabel und einen TButton auf die Form. Binden Sie die Unit: LCLType mit der Uses-Klausel in die Anwendung ein.

procedure TForm1.Button1Click(Sender: TObject);
var
  Kennung: byte;
begin
  //Definition unseres Charset
  Label1.Font.CharSet := DEFAULT_CHARSET;
  Kennung := Label1.Font.CharSet;
  ShowMessage(IntToStr(Kennung));
end;

Vorbei sind die Zeiten, dass wir mit ein Paar Zeichen zurecht kommen. Am Anfang der Computertechnologie kam man mit 7 Bit Zeichen (128 Stück) aus. Damals hieß der Zeichensatz noch ASCII. Dieser wurde Später mit dem 8-Bit Zeichensatz (256 Stück) ANSI ersetzt. Damit war dieser Zeichensatz noch mit einem Byte darstellbar. Da jedoch viele Länder mit Ihren verschiedenen Kulturen ihre eigenen Zeichen in Ihren Zeichensätzen mitbrachten, wurde ein Uni-Code-Zeichensatz nötig. Mann schätzt heute, dass es insgesamt 100.000 verschiedene Zeichen gibt. Um diese Zeichen noch geordnet darstellen zu können, wurden Die Zeichen in 2 Byte unterteilt. Das erste Byte ist die Länderkennung oder Region, das zweite ist dann das Zeichen. Da dies auch nicht ausreicht (256 * 256= 65536) werden zum Teil noch mehr Bytes benötigt.

Quelltext Erläuterung

Der Quelltext zeigt Ihnen die Länderkennung an. Diese Kennziffer besteht in Lazarus aus einem Typen Wert im Bytebereich. Dieser Typ ist in der Unit Graphics mit dem Namen Typ TFontCharSet verbunden. In dieser Unit wird der Zahlenwert festgelegt. In der Unit LCLType hingegen, wird der Zahlenwert mit einer Konstante verbunden. Das ist der Grund warum die Unit nicht automatisch hinzugefügt wird. Sie müssen die Unit LCLType manuell einbinden. Wenn Sie dies nicht tun, kann Lazarus die Konstante DEFAULT_CHARSET nicht finden.

Der Standardwert ist DEFAULT_CHARSET und dieser ist mit dem Wert 1 verbunden. Deswegen bekommen wir die 1 angezeigt.

Lazarus-Link zu Default_Charset.
Sie können mit gedrückter STRG-Taste dem Link DEFAULT_CHARSET folgen.

Wenn Sie dem Link gefolgt sind, dann befinden Sie sich in der Unit LCLType die eine Teil des LCLBase Packages ist.

Quelltextausschnitt LCLType.
Die Definition in der Unit LCLType.

In dieser Unit erkennen Sie die unterstützten Länderbezeichnungen. Diese Länderkennungen sind Plattform abhängig. Unter Windows gibt es eine Grafikoberfläche unter Linux gibt es mehrere. Bei Linux ist es ratsam sich auf die Grafikoberfläche GTK2 zu konzentrieren. Da diese von Lazarus am besten unterstützt wird. Auf dem Bild sehen Sie im Kommentar die Bezeichnung GTK. Dies bedeutet das die folgenden Bezeichnungen FCS_ISO_….. nur für diese Plattform sind.

Objektinspektor

Charset-Windows-Lazarus
Charset-Auswahl in Windows.

Wenn Sie nun im Objektinspektor ARABIC_CHARSET anwählen, dann sollten Sie normalerweise bei der Anwahl der Font über den Font-Dialog die Schriftarten angezeigt bekommen, die den Arabischen Schriftsatz unterstützen. Darüber hinaus sollte im Beispiel des Font-Dialogs ein Teil der Zeichen sichtbar sein.

Lazarus Arabische Font.
Ausschnitt des Font-Dialogs.

Hier können Sie nun von Glück reden, wenn Sie bei einer Schriftart unter Skript „Arabisch“ angezeigt bekommen. Sie können nun auf verschiedene Schriften klicken. Es wird Ihnen in den seltensten Fällen Arabisch angezeigt. Dafür müsste die Schriftart diese Sprache unterstützen. Womit wir langsam zum Punkt diese Befehls kommen. Entschuldigung das ich hier solang ausholen musste. Aber sonst wird der Sinn dieses Befehls nicht verstanden.

Wenn Sie ein Programm in Lazarus schreiben, dann ist die Schriftart in der Exe-Datei nicht enthalten. Bei Default wird die Schrift sowieso von der Einstellung Ihres Zielsystems bestimmt. Wir kennen in diesem Fall den Namen der Schriftart nicht. Wenn wir nun für User Programme schreiben und diese User sind nur der arabischen Sprache mächtig, dann müssen wir die Anzeige der arabischen Schriftzeichen sicherstellen. Mit

Font.CharSet := ARABIC_CHARSET ;

können wir dem Zielsystem nach der passenden Zeichen suchen lassen. Hier für muss das Zielsystem über den geeigneten Schrifts und deren Kenzeichnung verfügen.

Geltungsbereich

Diesen Befehl wenden wir natürlich auf unser gesamtes Programm an. Hierzu wird diese Eigenschaft für das Hauptfenster verwendet. Alle untergeordneten Komponenten stehen unter Lazarus standardmäßig auf ParentFont := True;

Vielzahl der Zeichen

Um einen kleinen Überblick über die Vielzahl der Zeichen zu bekommen, sollten sie sich mal Hauptmenü – Bearbeiten – Aus Zeichentabelle einfügen anschauen. Wenn Sie hier den Reiter Unicode anklicken, dann können Sie sich durch die verschiedenen Zeichen der Kulturen klicken. 🙂 Es versteht sich dann auch von selbst, dass nur wenige Schriftarten diese Vielfalt an Zeichen unterstützen.

Beispiel 2

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

procedure TForm1.Button1Click(Sender: TObject);
begin
  //Anzeige des kleinen griechischen alpha-Zeichens
  //Die Angaben können Sie der Tabelle entnehmen
  Label1.Caption := 'Das kleine Alpha: ' + #206 + #177;
end;

Das 2. Beispiel soll Ihnen nur Zeigen wie sie ein Zeichen mit der Kodierung aus der Tabelle bestimmen können. Selbstverständlich können Sie das Zeichen wie bei einem Office-Programm direkt einfügen, da der Editor von Lazarus des Unicode mächtig ist. Sie müssten ohnehin hierzu, wie ich es getan habe, den Tabellenwert, der in hexadezimaler Form vorliegt, in eine Dezimalzahl umrechnen.