Herausfinden ob Zeichen im Font enthalten ist?

Rund um die LCL und andere Komponenten
Antworten
MmVisual
Beiträge: 1639
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4.4 FPC 3.2.2)
CPU-Target: 32/64Bit

Herausfinden ob Zeichen im Font enthalten ist?

Beitrag von MmVisual »

Hallo,

Ich nutze zum Teil Sonderzeichen von Fonts wie "└" "┘". Unter Win7 sind die alle vorhanden. Aber bei älteren Betriebssystemen wie WinXP, wenn da nicht der Asia-Font installiert ist, sind die nicht im Font.

Wie kann ich herausfinden ob im Font das Zeichen vorhanden ist oder ob da nur ein Kasten dargestellt wird?

Grüße Markus
EleLa - Elektronik Lagerverwaltung - www.elela.de

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: Herausfinden ob Zeichen im Font enthalten ist?

Beitrag von Scotty »

Interessante Frage, aber ich glaube nicht, dass das geht. Man kann ja auch mit etwas Aufwand einen Zeichensatz selbst basteln, der nichts standardisiertes enthält. Deshalb geht hier nur OCR. Frag doch einfach, ob es dafür eine "Komponente" gibt. :mrgreen:

MmVisual
Beiträge: 1639
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4.4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: Herausfinden ob Zeichen im Font enthalten ist?

Beitrag von MmVisual »

Na dann frage ich mal.

Gibt es dafür eine "Komponente" :?: :oops:
EleLa - Elektronik Lagerverwaltung - www.elela.de

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

Re: Herausfinden ob Zeichen im Font enthalten ist?

Beitrag von theo »

http://www.lazarusforum.de/viewtopic.ph ... =tesseract" onclick="window.open(this.href);return false;

Aber wie gesagt für dein Vorhaben totaler Murks.

Unter Linux (jed. bei mir) auch überflüssig, weil automatisch ein Ersatzfont genommen wird, wenn der gewählte Font das Zeichen nicht darstellen kann.

Bora4d
Beiträge: 290
Registriert: Mo 24. Dez 2007, 13:14
OS, Lazarus, FPC: WinXP-Pro-Sp3, Xubuntu 12.04, (Laz 1.1-SVN Mai2012, FPC 2.6.1 / 2.6.0-Linux)
CPU-Target: AMD64X2

Re: Herausfinden ob Zeichen im Font enthalten ist?

Beitrag von Bora4d »

Diese Zeichen sind immer in Terminal-Schriftart enthalten.
Ansonsten kannst du temporär dein eigenes Schriftart verwenden. Such dir eine freie Schriftsatz aus Internet.

Socke
Lazarusforum e. V.
Beiträge: 3188
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Herausfinden ob Zeichen im Font enthalten ist?

Beitrag von Socke »

Scotty hat geschrieben:Interessante Frage, aber ich glaube nicht, dass das geht. Man kann ja auch mit etwas Aufwand einen Zeichensatz selbst basteln, der nichts standardisiertes enthält.
Du schmeißt hier die Zeichen (auch Glyphen) und deren Kodierung im verwendeten Zeichensatz ein wenig durcheinander. Prinzipiell kann der Schriftautor auf jeden Code Point (Position eines Zeichens im Zeichensatz) eine beliebige Glyphe legen. An der Position, an der üblicherweise ein A abgelegt ist, kann auch ein Stern oder etwas ganz anderes stehen. Bekannte Vertreter dieser Technik sind die Web- und Wingdings oder auch die Zapf Dingbats, die mit Windows mitgeliefert werden (wenn ich mich nicht irre).

Auf der anderen Seite muss eine Schriftart nicht alle Zeichen eines Zeichensatzes abdecken. Die DejaVu-Schriftart-Familie versucht möglichst viele Unicode-Zeichen darzustellen.
theo hat geschrieben:Unter Linux (jed. bei mir) auch überflüssig, weil automatisch ein Ersatzfont genommen wird, wenn der gewählte Font das Zeichen nicht darstellen kann.
Das ist auch unter Windows der Fall. In älteren Versionen waren Schriften mit den asiatischen Zeichen in der Regel nicht installiert. Als Ersatzzeichen kam dann ein Rechteck heraus.

Die sicherste Methode wäre, sich auf eine Schriftart festzulegen und diese mitzuliefern. Du kannst beim Start des Programms überprüfen, ob die Schriftart installiert ist oder nicht.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

jus
Beiträge: 52
Registriert: Fr 6. Mai 2011, 13:29

Re: Herausfinden ob Zeichen im Font enthalten ist?

Beitrag von jus »

Hallo,

ich weiß nicht, ob die Info für dich hilfreich ist oder nicht. Aber ich hatte vor einigen Jahren mal ein kleines Progrämmchen geschrieben, dass mir nur installierte Truetype-Schriften herausfiltert, die bestimmte chinesische "Charsets" wie z.B. CHINESEBIG5_CHARSET und GB2312_CHARSET enthielten. Dies ging mit dem Befehl Windows API Befehl "EnumFontFamiliesEx". Wenn du also sagst, dass dieses Zeichen nur in asiatischen TrueType-Schriften vorkommt, könntest du ja alle TrueType-Schriften testen, die die beiden angebenen Charsets oder weitere charsets enthalten.

Achja, und es soll laut Gerüchten zu Folge einen weiteren Ansatz mit Windows API "GetGlyphIndicesW" geben, es hat leider für mein Vorhaben nie so richtig funktioniert, obwohl es laut Beschreibung recht vielversprechend aussah. Sag bitte mir bescheid, falls du es mit diesem Befehl hinkriegst.

Lg,
jus

Antworten