Hallo zusammen,
ich nutze einen STM32 um ein IL9341 via SPI mit folgender Library
anzusteuern:
https://github.com/martnak/STM32-ILI9341
Das reine Darstellen von Text und Vierecken etc klappt auch schon.
In der Lib sind leider nur 4 relativ kleine Schriftarten mitgeliefert,
aber wenn ich demnächst den Touch Modus in Betrieb nehme, dann wären
natürlich große (1/3 des Bildschirms) Buttons sinnvoll, die dann auch
mit einer angemessen großen Schriftart beschriftet werden.
Hier beginnt mein Problem. Wie erstelle ich eine größere Variante der
Schriftart? Die größte die mitgeliefert wurde ist Arial_Narrow15x19.
Wie bekomme ich die größer bzw eine neue angelegt?
Viele Grüße
Jens
Georg G. schrieb:> Schau dir mal die Adafruit Library für Arduino an. Da sind etliche Fonts> dabei. Mit etwas Glück sind sie identisch zu deiner Lib aufgebaut.
Danke, mache ich :).
Gehirn einschalten schrieb:> Was sagt martnak dazu?
Hat sich noch nicht gemeldet.
Gehirn einschalten schrieb:> Welches Format haben die Fonts?
1
constuint8_tArial_Narrow8x12[]={
2
/* Offset, Width, Height, BPL */
3
17,8,12,2,
4
5
0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// Code for char
6
0x02,0x00,0x00,0x7E,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,// Code for char !
Jeder Buchstabe ist quasi eine Codezeile, in der kleinsten Font (hier
gezeigt) besteht es aus 17 Hex Zahlen, die nächstgrößere hat 21 HEX
Zahlen pro Char.
Gehirn einschalten schrieb:> Gibt es ein Converter-Programm, das dieses Format erzeugt?
Den suche ich auch, aber bisher noch nichts was mich weiter brachte.
VG Jens
Fonts von 4x6 bis 32x53 Pixel. Die Datei stammt hier aus dem Forum, so
ca. aus dem Jahr 2009.
Den original Thread und Autor finde ich leider nicht mehr.
Jens schrieb:> HEX Zahlen pro Char
Und was machen diese Zahlen?
Das Ausrufezeichen ist gut geeignet, um das nachzuvollziehen.
Offset, Breite, Höhe hast du ja schon gefunden, BPL könnte Bytes per
line heißen.
Die erste "Hex-Zahl" (Byte) dürfte die Zeichenbreite sein, der Rest die
Pixel (Bits).
Wenn du die ST-HAL-Librarys installiert hast, findest du da unter
Middlewares/ST/STemWin/Software das Programm FontCvtST.exe.
Das ist ziemlich komfortabel, und kann dir die Fonts aus den TTF-Fonts
erzeugen.
Solltest du dir mal anschauen!
Ich habe etwas ähnliches mit nem stm32f103 und einem externen SPI Flash
umgesetzt.. allerdings arduino
Die Daten werden direkt via dma bei 18Mhz als rgb24 an einen ili9488
geschickt.
https://youtu.be/KhNEtgMYAAE
Jens schrieb:> Wie bekomme ich die größer bzw eine neue angelegt?
Dafür gibt es keine befriedigende Lösung - aufwärts skalieren geht
natürlich, etwa indem man aus einem pixel 4 macht, aber das sieht halt
beschissen aus. Um bei einem so vergrösserten Font Kanten ohne
Treppenstufen zu erreichen muss man den Font komplett Pixel für Pixel
manuell überarbeiten, das kommt einem Neuentwurf gleich. Abwärts geht
besser, also sollte man als erstes einen hochauflösenden Font entwerfen
und davon kleinere Versionen ableiten.
Geht es nicht um maximale Schönheit, kann man natürlich mit der groben
Auflösung leben, ich habe für Industriesteuerungen mit Grafikbildschirm
Fonts mit 2, 4 und 8facher Grösse in der Grafiksoftware on the fly
berechnet, die Maschinenbediener haben sich nicht beschwert. Beispiel
anbei.
Georg
Thomas F. schrieb:> Die Datei stammt hier aus dem Forum, so> ca. aus dem Jahr 2009.
Danke, dass sehe ich mir mal an :)
Harry L. schrieb:> das Programm FontCvtST.exe.
Hab ich grade runtergeladen, hier werde ich mich noch etwas einarbeiten
müssen, aber im Prinzip genau das was ich brauche. Danke!
Philipp K. schrieb:> https://youtu.be/KhNEtgMYAAE
Das sieht sehr sehr schick aus!
pegel schrieb:> Weil das so gut geklappt hat, bin ich dann zu lvgl gewechselt.
Danke für den Hinweis, schaue ich mur an :)
Georg schrieb:> kann man natürlich mit der groben> Auflösung leben, ich habe für Industriesteuerungen mit Grafikbildschirm> Fonts mit 2, 4 und 8facher Grösse in der Grafiksoftware on the fly> berechnet
Wie groß war das Display? 320*240?
Danke für die Infos :).
Viele Grüße
Jens
Georg schrieb:> Dafür gibt es keine befriedigende Lösung - aufwärts skalieren geht> natürlich, etwa indem man aus einem pixel 4 macht, aber das sieht halt> beschissen aus.
Bes... würde ich nicht unbedingt sagen. Sinn einer großen Schrift ist
es, aus größerer Entfernung gelesen werden zu können oder Sehschwächen
auszugleichen.
Komplette, großformatige Zeichensätze im Speicher zu halten, braucht
richtig viel Platz. Anbei ein Beispiel, wie aus zwei Zeichensätzen 6 x
10 und 8 x 16 mit 6 KB Speicherbedarf verschiedene Schriftgrößen
aussehen. Das Display ist ein 4,3" mit 480 x 272 Pixeln Auflösung. Bei
320 x 240 wird es schon recht eng, längere "aufgepustete" Texte
anzuzeigen.
Thomas F. schrieb:> Fonts von 4x6 bis 32x53 Pixel. Die Datei stammt hier aus dem Forum, so> ca. aus dem Jahr 2009.
Diese Fonts habe ich auch immer mal ganz gerne benutzt. Was mich
allerdings bei den größeren Fonts stört, die Kleinbuchstaben sind größer
als die Großbuchstaben, siehe Bild.
> Den original Thread und Autor finde ich leider nicht mehr.Beitrag "LCD Schriftarten ( Fonts in veschiedenen Größen )"
Reinhard
man kann sich die Fonts auch selber erstellen, da gibt es ein Tool für
TTF Fonts.. damit habe ich schon Antialiasing Fonts in Binärdaten für
Display umgewandelt..
Das ist schon ein paar JAhre her, ich meine das war Fontforge als BMP
exporten und dann die Pixel in Arrays umwandeln.
Es gibt auch eine Mikrocontroller Font Datenbank irgendwo.. von 7x9 bis
64*64 in vielen Fonttypen.
Das ganze dann in der Library anzupassen sollte nur eine Fleißarbeit
sein.
Es gibt unteranderem auch Librarys mit eigenen Tools um die Fonts die
man möchte in die Library umzuwandeln. Ich meine der Font in dem Projekt
ist sogar aus so einem FontConverter ;)
Es kommt immer drauf an was man umsetzen möchte und welches Ziel man
sich setzt..
Reinhard R. schrieb:> Diese Fonts habe ich auch immer mal ganz gerne benutzt.
Das ist zwar Geschmackssache, aber keine richtige Unterlängen bei f, p,
q und bei ß, y und µ vermutlich auch nicht. Das finde ich äußerst mager.
Aber gut, dunkelblaue Schrift auf schwarzem Untergrund wird ja auch
immer wieder gerne verwendet ;-)