Prüfen ob Zeichen in Font vorhanden ist

OP Persönliche Seite #1538409
Ich will mir für mein Display einen Font converter schreiben mit dem ich 
auch Unicode Grafik-Fonts erstellen kann.

Beim Konvertieren würde ich aber gerne prüfen ob das Zeichen, welches 
ich konvertieren möchte in der Ausgangsfont überhaupt vorhanden ist (um 
am Ende nicht eine Font zu erstellen die zum größten Teil aus 
Platzhalter-Kästchen besteht...).

Das ganze soll unter Windows laufen (also TrueType Fonts). Ein bischen 
habe ich schon in C# gespielt aber noch keine Möglichkeit gefunden die 
Existenz eines Zeichens zu überprüfen.

Nebenfrage: Kennt jemand vielleicht Unicode implementierungen auf 
Mikrocontrollern wo man mal abschauen kann?
Gast
Hallo,

Zitat aus der TTF-File-Definition:

'cmap' Character to Glyph Index Mapping Table
...
Character codes that do not correspond to any glyph in the font should 
be mapped to glyph index 0. The glyph at this location must be a special 
glyph representing a missing character.

Falls dir das was nützt, müsstest du dir die True Type Definition 
besorgen, ich habe ein None Disclosure unterschrieben.

Gruss Reinhard
Gast
Hallo,

danke für den Link - meine Spec ist Version 1.00, die gibts nicht mal 
mehr "for historical purposes". Damals war Truetype noch ganz neu und 
vertraulich. Aber wie man sieht stimmt das meiste noch.

Gruss Reinhard
(Firma: Q3)
Ginge auch mit Mitteln des (pixelweisen) Bildvergleiches in deiner 
Windows-Anwendung. In einem Canvas oder internen Bildpuffer (z.B. 100 x 
100 Pix) gibst du einmal das Platzhalter-Kästchen aus, zum Anderen das 
zu prüfende Zeichen und checkst dann, ob die Pixelmuster gleich oder 
verschieden sind bzw. ob überhaup Pixel geschwärzt wurden ...

Ist zwar nicht sehr elegant, benötigt dafür keine Kenntnisse der Interna 
einer Font-Datei.

Frank
Gast
@Marius S: erst Mal eine Frage, sag mal wie schreibst du die Zeichen in 
deine Ausgangs-Fontdatei?Hast einen eigenen TTF-Compiler geschrieben? 
Der Aufbau von TTF Dateien ist nicht simple.

Ich habe was ähnliches gemacht, ich musste allerdings eine TTF Datei um 
einige Zeichen reduzieren, sprich aus der datei löschen, dafür habe ich 
das TTX Tool verwendet (macht XML aus eine TTF datei und zurück).Diese 
verkleinte Datei wird dann im Embedded UI verwendet.

Zu deinem Problem:

auf Sourceforge habe ich mal ein Beispiel gefunden, wie man die 
einzelnen Tabellen aus einer TTF Datei ausliest, so wie der Reinhard 
Kern geschrieben hat, ist jedem Unicodewert ein Name des Glyphen 
zugeordnet oder eben 0, wenn kein Glyph vorhanden ist. Diese Zuordnung 
findet in der "CMAP" Tabelle Statt, wobei es dort glaub ich eine für 
Windows und eine für MAC gibt - Apple und Microsoft haben Fonts zusammen 
entwickelt.

Dann sind jedem Glyph die eigentlichen Punkte zugeordnet(steht im Header 
der TTF Datei), durch die Dann der Linienzug verläuft.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.