Outline von Zeichen?

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Benutzeravatar
theo
Beiträge: 11403
Registriert: Mo 11. Sep 2006, 19:01

Re: Outline von Zeichen?

Beitrag von theo »

fliegermichl hat geschrieben: Mi 2. Sep 2026, 11:51 Wie kann man denn dann bei einer ausgewählten Schriftart feststellen, welches Zeichen zu welchem Unicode Block gehört?
Diese "Zeichen" sind ja nur Indizes. Z.B. ist $1D100 ein "Taktstrich". Mit dem Glyphen (im Font) hat das erst einmal nichts zu tun.
Der "Taktstrich" ist bei allen Fonts, die diesen Glyphen unterstützen an der gleichen Stelle ($1D100).

LCLUnicodeData hat eine Convenience-Funktion, welche dir sagt, zu welchem Block ein Zeichen gehört.

Code: Alles auswählen

 Edit1.text:=GetInfoForCodePoint('𝄰');   

Resultat:
Notational Systems | Supplementary Multilingual Plane | Musical Symbols
Den Bereich der Musiksymbole kannst du direkt dem "UnicodeBlocks" Array entnehmen (von "S" bis "E");

Code: Alles auswählen

(S: $1D100; E: $1D1FF; PG: 'Musical Symbols'; PL: 1; SC: 12)
So gibst du alle 'Musical Symbols' in Memo1 aus:

Code: Alles auswählen

uses LazUTF8;
...
var
  i: integer;
begin
  for i := $1D100 to $1D1FF do
    Memo1.Lines.Add(UnicodeToUTF8(i));   
Memo1.Font muss die Zeichen natürlich enthalten, sonst sieht man nur Kästchen (Auf Win).

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1831
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Outline von Zeichen?

Beitrag von fliegermichl »

Danke erst mal für die Informationen.
Den String GetInfoForCodepoint kann ich in meiner gesamten Lazarusinstallation nicht finden.
Ist das evtl. Linux spezifisch?

Die Unit LCLUnicodeData.pas enthält bei mir nur die Typdeklaration für TUnicodeBlock, die Anzahl an Einträgen (MaxUnicodeBlocks) und das Array UnicodeBlocks.
Lazarus 4.7 (rev lazarus_4_6-58-g310cad12d8) FPC 3.2.2 i386-win32-win32/win64

Aber dank Deiner Beiträge kann ich mir die Zeichen zumindestens schon mal ansehen.

Benutzeravatar
theo
Beiträge: 11403
Registriert: Mo 11. Sep 2006, 19:01

Re: Outline von Zeichen?

Beitrag von theo »

fliegermichl hat geschrieben: Mi 2. Sep 2026, 14:31 Den String GetInfoForCodepoint kann ich in meiner gesamten Lazarusinstallation nicht finden.
Ist das evtl. Linux spezifisch?

Die Unit LCLUnicodeData.pas enthält bei mir nur die Typdeklaration für TUnicodeBlock, die Anzahl an Einträgen (MaxUnicodeBlocks) und das Array UnicodeBlocks.
Lazarus 4.7 (rev lazarus_4_6-58-g310cad12d8) FPC 3.2.2 i386-win32-win32/win64
Es gibt seit über einem Jahr eine aktuellere Version:
https://gitlab.com/freepascal.org/lazar ... dedata.pas

Dort, ganz unten befindet sich GetInfoForCodePoint.

Antworten