PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Schriftart in Array umwandlen



robo_tom_24
27.02.2013, 08:45
Hallo
Um nicht für jede Schriftart eine eigene Pixelmap von Hand erstellen zu müssen, möchte ich mir eine Funktion/Programm bauen, die mir eine ttf/otf Datei in eine Pixelmap wandelt. Bevorzugt würde ich dies am µC (Mega 2560) machen, es kann aber auch am PC sein.

Geht das überhaupt? Wenn ja, wie macht man so etwas?

grüße

Hambone
04.03.2013, 08:22
Hi,

schau mal hier : http://www.werle.com/foto/format2.htm

Vektorgrafik nach Pixelgrafik (ttf nach BMP) ist nicht trivial. Ich würde das nicht im µC programmieren wollen. In Win7 gibt es im Zubehör/Systemprogramme einen "Editor ür benutzerdefinierte Zeichen", vielleicht hilft das.

Gruss Hambone

EZ81
09.03.2013, 00:42
Hi,

dazu möchte man sinnvollerweise eine Hochsprache auf dem PC verwenden. Das Beispiel hier ist mit Python und der Python Imaging Library in 11 Zeilen erledigt: Ein R (Arial, 36 Pixel Zeichenhöhe) in Einzelpixel verzaubert. Ich helfe gerne weiter, wenn du kein Python kannst. Alle Buchstaben in eine Pixelmap zu basteln, wäre sicherlich auch kein echter Aufwand.



0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0
0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0
0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0
0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0
0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0
0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0
0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0
0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0
0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0
0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0
0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0
0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0
0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0
0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0
0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0
0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0
0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0
0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0
0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0
0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0
0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0
0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0
0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0
0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0
0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0
0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

robo_tom_24
10.03.2013, 10:32
Hallo
Am PC zu machen ist kein Problem ;)
Ich möcht halt eine ttf/otf nehmen, die Pixelmaße einstellen und eine fertige Pixelpam rausbekommen :P

Ja bitte, ich kenn mich leider überhaupt nicht mit Python aus ;)

grüße

EZ81
11.03.2013, 13:23
Hi,

hast Du ein Beispiel, wie so eine Pixelmap aussieht? Es wird wohl irgendein C-Header sein? Gibt es da ein Standardformat? Dann sehe ich mal, was sich machen lässt.

Grüße

robo_tom_24
11.03.2013, 17:19
Nein, hab ich nicht, aber ich hätt an ein 3D Array gedacht, das in der ersten Ebene den Buchstaben auswählt und dann in den anderen 2 die Pixelmap liegt. Somit hätten wir z.B. ein Array mit der Größe von 70 Buchstaben (Groß, Klein und ein paar Sonderzeichen) und dann die z.B. 10x16px Große Map. Dort stehen eigentlich nur bool Werte drinnen (Pixel ein oder aus) und so bau ich mir den Buchstaben.
Dein Programm ist ja denk ich mal kein schlechter Ansatz, nur versteh ich Python nicht...

Von dem her würd ich eigentlich gern wissen, wie eine ttf/otf Datei aufgebaut ist, und ich diese dann zerlegen kann und somit Pixel bzw. Positionsinformationen raus bekomme ;)

grüße

ichbinsisyphos
11.03.2013, 17:52
Das Python-Beispiel schreibt einen Buchstaben in der gewünschten Größe tatsächlich auf ein Bild, das du dann rastern kannst.

Einfacher wirds kaum. Willst du wirklich aus der otf-Datei selbst rauslesen, wie ein Buchstabe aussieht?

In C gibts die "gd"-Bibliothek mit der ähnliches möglich sein sollte. Obwohl ich mich im Moment nicht erinnere, ob man da überhaupt Texte schreiben kann.

edit: ja ja, geht eh alles. Dokumentation ist ein kleines Problem, aber hier sind die wichtigsten Funktionen erklärt (sollte man vielleicht mal sichern bevor das ganz weg ist :))
http://web.archive.org/web/20100208060618/http://www.libgd.org/Reference

In C bist sattelfest?

robo_tom_24
11.03.2013, 18:45
okee..
Schon, ja ;)

Die Lib schaut schon vielversprechend aus, ist halt doch viel Arbeit sich einzulesen, aber ich hab ja Zeit :P

Sattelfest...schon ja...kommt drauf an wie mans sieht ;)

ichbinsisyphos
11.03.2013, 19:03
Schön ist das übrigens nicht in gd. Das wär wirklich ein perfekter Vorwand, mit Python anzufangen. Ich kann aber nicht abschätzen wie unverständlich das ist, wenn man keine Erfahrungen mit der Sprache hat.

Das ist das verwendete Python-Modul, davon brauchst Image, ImageDraw und ImageFont:
http://www.pythonware.com/products/pil/
Die Dokumentation ist sicher schonmal besser.