Woher kommen meine unbekannten Zeichen?

Rund um die LCL und andere Komponenten
kirchfritz
Beiträge: 246
Registriert: Mo 3. Jan 2011, 13:34
OS, Lazarus, FPC: Win11 (L 4.0 FPC 3.2.2)
CPU-Target: 64Bit
Wohnort: Nürnberg

Woher kommen meine unbekannten Zeichen?

Beitrag von kirchfritz »

Hallo,

Ich finde in meinen Sourcecode Folgendes:

Code: Alles auswählen

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, Forms, Controls, StdCtrls;

type
   TForm1 = class(TForm)
    Button1: TButton;
    ListBox1: TListBox;
    procedure Button1Click(Sender: TObject);
  private
  public
  end;

var
  Form1: TForm1;

implementation
{$R *.lfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
  Listbox1.Items.Clear;
  ListBox1.Items.Add('🏠' + ' Home');
  ListBox1.Items.Add('📁' + ' Aufträge');
  ListBox1.Items.Add('📊' + ' Berichte');
  ListBox1.Items.Add('👥' + ' Team');
  ListBox1.Items.Add('⚙️' + ' Einstellungen');
  ListBox1.Items.Add('❓' + ' Hilfe');
end;

end.               
Leider weiß ich nicht mehr, woher ich diesen Sourcecode habe.
Macht ja nix, funktioniert bestens.

Nun möchte ich dies erweitern und zusätzlich Listboxeinträge hinzufügen.
Kann mir jemand sagen, wie ich zu weiteren Icons dieser Art komme.
In welcher Schriftart finde ich diese Zeichen, wie lauten die Codepoints?
Wie schreibt man das am Besten wartungsfreundlich in den Quellcode?

Mein vollständiges Demo-Projekt findet man hier:
project1.zip
(95.88 KiB) 11-mal heruntergeladen
Screenshot 2025-11-17 093950.png
Screenshot 2025-11-17 093950.png (19.35 KiB) 399 mal betrachtet
Viele Grüße
Fritz

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

Re: Woher kommen meine unbekannten Zeichen?

Beitrag von theo »


kirchfritz
Beiträge: 246
Registriert: Mo 3. Jan 2011, 13:34
OS, Lazarus, FPC: Win11 (L 4.0 FPC 3.2.2)
CPU-Target: 64Bit
Wohnort: Nürnberg

Re: Woher kommen meine unbekannten Zeichen?

Beitrag von kirchfritz »

Vielen Dank theo.

Noch offen:
In welcher Schriftart finde ich diese Zeichen, wie lauten die Codepoints?
Wie schreibt man das am Besten wartungsfreundlich in den Quellcode?

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

Re: Woher kommen meine unbekannten Zeichen?

Beitrag von theo »

kirchfritz hat geschrieben: Mo 17. Nov 2025, 11:01 In welcher Schriftart finde ich diese Zeichen, wie lauten die Codepoints?
Wie schreibt man das am Besten wartungsfreundlich in den Quellcode?
Schriftart: Da gibt es viele. Am Besten ausprobieren.
Codepoints: siehe Anhang. Ist aber eigentlich selten nötig, dass man das wissen muss.
Du brauchst diese nicht gesondert behandeln, das sind Zeichen wie andere auch.
Einfach in der Zeichentabelle auf das Zeichen klicken und schon landet es im Quellcode an der Cursorposition.
Es ist natürlich denkbar, dass der gewählte Editor-Font diese nicht anzeigen kann, aber sie sind trotzdem da im Quelltext.
Dateianhänge
zeichenlaz.png
zeichenlaz.png (144.67 KiB) 360 mal betrachtet

kirchfritz
Beiträge: 246
Registriert: Mo 3. Jan 2011, 13:34
OS, Lazarus, FPC: Win11 (L 4.0 FPC 3.2.2)
CPU-Target: 64Bit
Wohnort: Nürnberg

Re: Woher kommen meine unbekannten Zeichen?

Beitrag von kirchfritz »

Diese Seite zeigt sehr schön, welche Emoji möglich sind.
https://emojiterra.com/keyboard/

kirchfritz
Beiträge: 246
Registriert: Mo 3. Jan 2011, 13:34
OS, Lazarus, FPC: Win11 (L 4.0 FPC 3.2.2)
CPU-Target: 64Bit
Wohnort: Nürnberg

Re: Woher kommen meine unbekannten Zeichen?

Beitrag von kirchfritz »

Hallo theo,

kannst Du mir eine Quellcodezeile zeigen, wie ich das Emoji mit Hilfe eines Codepoints ausgeben kann, ohne das Emoji selbst in den Quellcode einfügen zu müssen.

Code: Alles auswählen

 ShowMessage(WideChar($F0$9F$A5$B4));

Das funktioniert nicht.

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

Re: Woher kommen meine unbekannten Zeichen?

Beitrag von theo »

Nee, mit Widechar geht das nicht.

Z.B. Diese Möglichkeiten:

Code: Alles auswählen

  ShowMessage(Chr($F0)+Chr($9F)+Chr($A5)+Chr($B4));
oder

Code: Alles auswählen

uses LazUTF8;
  ShowMessage(UnicodeToUTF8($1F974));      
Aber warum? Nimm doch einfach das Zeichen als solches, auch wenn der Glyph nicht angezeigt wird.
Diese Hexzahlen sagen ja auch nichts aus.

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

Re: Woher kommen meine unbekannten Zeichen?

Beitrag von wp_xyz »

Das steht oben hinter "UTF8", ist also gar kein WideString. Daher einfach als normalen hex-String verwenden:

Code: Alles auswählen

  ShowMessage(#$F0#$9F#$A5#$B4); 
[EDIT]
theo war schneller

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

Re: Woher kommen meine unbekannten Zeichen?

Beitrag von theo »

wp_xyz hat geschrieben: Mo 17. Nov 2025, 12:11 Das steht oben hinter "UTF8", ist also gar kein WideString. Daher einfach als normalen hex-String verwenden:

Code: Alles auswählen

  ShowMessage(#$F0#$9F#$A5#$B4); 
[EDIT]
theo war schneller
Dafür ist deine Variante kürzer. :wink:
Es stimmt, dass das Chr() hier nicht nötig ist, aber vielleicht trägt es etwas zum Verständnis bei.

Mathias
Beiträge: 7125
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Woher kommen meine unbekannten Zeichen?

Beitrag von Mathias »

Was auch noch eine Methode ist, um mal schnell ein paar Symbole zu holen. Wen man ein Chat-Programm wie Telegram hat, da hat es eine riessen Flut von Smiley. Von dort kann man diese Symbole recht einfach kopieren.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

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

Re: Woher kommen meine unbekannten Zeichen?

Beitrag von theo »

Mathias hat geschrieben: Mo 17. Nov 2025, 13:32 Was auch noch eine Methode ist, um mal schnell ein paar Symbole zu holen. Wen man ein Chat-Programm wie Telegram hat, da hat es eine riessen Flut von Smiley. Von dort kann man diese Symbole recht einfach kopieren.
Wenn schon extern, dann gleich die Referenz bei Unicode.org.
https://unicode.org/emoji/charts/full-emoji-list.html

kirchfritz
Beiträge: 246
Registriert: Mo 3. Jan 2011, 13:34
OS, Lazarus, FPC: Win11 (L 4.0 FPC 3.2.2)
CPU-Target: 64Bit
Wohnort: Nürnberg

Re: Woher kommen meine unbekannten Zeichen?

Beitrag von kirchfritz »

Hallo Theo,
in der Referenz bei Unicode.org finde ich dieses Zeichen
Screenshot 2025-11-19 075953.png
Screenshot 2025-11-19 075953.png (6.29 KiB) 118 mal betrachtet
Wie kann ich das mit ShowMessage(...) ausgeben?

Code: Alles auswählen

ShowMessage(UTF8Encode(#$1F642+#$200D+#$2195+#$FE0F)); 
funktioniert nicht!

Würdest Du mir auf die Sprünge helfen?

Mathias
Beiträge: 7125
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Woher kommen meine unbekannten Zeichen?

Beitrag von Mathias »

Würdest Du mir auf die Sprünge helfen?
Ganz zu oberst bei dem Link https://unicode.org/emoji/charts/full-emoji-list.html steht "Full Emoji List, v17.0"
So wie ich festgestellt habe, wurde diese Zeichen am 9. September 2025 veröffentlicht.
Das könnte ein Grund sein, das es nicht geht.

Hier findet man einte Tabelle, wann welche Version erschienen ist.
https://www.unicode.org/reports/tr51/#Emoticons
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

kirchfritz
Beiträge: 246
Registriert: Mo 3. Jan 2011, 13:34
OS, Lazarus, FPC: Win11 (L 4.0 FPC 3.2.2)
CPU-Target: 64Bit
Wohnort: Nürnberg

Re: Woher kommen meine unbekannten Zeichen?

Beitrag von kirchfritz »

Das sagt die KI zu meinem Zeichen:

Das Emoji "head shaking horizontally" hat die Codepoints \(1F642\), \(200D\), \(2194\) und \(FE0F\).
Es handelt sich dabei um eine sogenannte ZWJ-Sequenz, die aus dem Emoji für ein leicht lächelndes Gesicht (🙂), einem "Zero Width Joiner" (\(200D\)) und einem horizontalen Pfeil (\(2194\)) besteht, gefolgt von einem Varianten-Selektor (\(FE0F\)) für die korrekte Darstellung. 

Codepoints: \(1F642\) \(200D\) \(2194\) \(FE0F\)
Komponenten: 🙂 (leicht lächelndes Gesicht) + \(200D\) (Zero Width Joiner) + ↔️ (horizontaler Pfeil) + \(FE0F\) (Varianten-Selektor)
Unicode-Version: 15.1
Funktion: Die ZWJ-Sequenz bewirkt, dass die einzelnen Zeichen auf unterstützten Plattformen als ein einzelnes Emoji angezeigt werden. 


Bleibt also die Frage:
Wie kann ich solche ZWJ-Sequenzen mit Freepascal/Lazarus richtig darstellen?

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

Re: Woher kommen meine unbekannten Zeichen?

Beitrag von theo »

@kirchfritz: Kopier's doch einfach in den Editor. Was willst du immer mit diesem Hex-Code?
Ob du eine "unterstützte Plattform" hast, ist eine andere Frage. Hier z.Zt. eher unwahrscheinlich.
Dateianhänge
lazemo.png
lazemo.png (56.35 KiB) 71 mal betrachtet

Antworten