mikrocontroller.net

Forum: PC-Programmierung Prüfen ob Zeichen in Font vorhanden ist


Autor: Marius S. (lupin) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Reinhard Kern (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Arc Net (arc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Scheint die einzige Möglichkeit zu sein...
http://www.pinvoke.net/default.aspx/gdi32.getfontu...

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Seit wann ist ein NDA für die TrueType-Spezifikation erforderlich?

http://www.microsoft.com/typography/Specifications...

Autor: Reinhard Kern (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

nimm doch die Freetype zum rendern deiner Fonts. Da fällt die Info 
einfach so ab (Mapping des Codes auf glyph index 0)

Gibts da eigentlich nichts fertiges? Ist ja schließlich nicht weiter 
schwierig sich mit Freetype was zusammenzustricken.

Matthias

Autor: Frank Esselbach (Firma: Q3) (qualidat)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: skynet80 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.