Forum: Mikrocontroller und Digitale Elektronik IL9341 größere Fonts erzeugen


von Jens (Gast)


Lesenswert?

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

von Georg G. (df2au)


Lesenswert?

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.

von Gehirn einschalten (Gast)


Lesenswert?

Alles muss man selber machen.
Was sagt martnak dazu?
Welches Format haben die Fonts?
Gibt es ein Converter-Programm, das dieses Format erzeugt?

von Jens (Gast)


Lesenswert?

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
const uint8_t Arial_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

von Thomas F. (igel)


Angehängte Dateien:

Lesenswert?

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.

von Gehirn einschalten (Gast)


Lesenswert?

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).

von Harry L. (mysth)


Lesenswert?

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!

von Philipp K. (philipp_k59)


Lesenswert?

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

von pegel (Gast)


Lesenswert?

Ich habe mal TrueType Fonts probiert:
https://github.com/k-omura/STM32_UIKit

Weil das so gut geklappt hat, bin ich dann zu lvgl gewechselt.

von Georg (Gast)


Angehängte Dateien:

Lesenswert?

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

von Jens (Gast)


Lesenswert?

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

von m.n. (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Reinhard R. (reirawb)


Angehängte Dateien:

Lesenswert?

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

von Philipp K. (philipp_k59)


Lesenswert?

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..

von m.n. (Gast)


Lesenswert?

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 ;-)

von Walter T. (nicolas)


Lesenswert?

U8G2 ist eine super Font-Library mit Display-Funktionen.

von Philipp K. (philipp_k59)


Lesenswert?

zb. Auf der ersten Seite bei den Jungs von Google "mcu Font converter"

http://www.eran.io/the-dot-factory-an-lcd-font-and-image-generator/

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.