Daher, dass ich gerne nehrere Fonts in meinen Projekten verwende und
aber nicht alles per Hand eintragen wollte habe ich mir ein paar
Gedanken gemacht, wie ich durch ein einfaches
meinen jeweiligen Font neben allen anderen zur Verfügung stellen kann.
Die Idee: Jeder Font trägt sich selber, beim einfügen in das Projekt, in
eine Liste ein von wo aus dieser dann über eine Variable zum Durchzählen
der vorhandenen Font abgerufen werden kann.
Ich stelle diese Idee hier Online sodass jemand mit einem ähnlichen
Problem diese Lösung für sich selber verwenden kann und auch Personen
mit besseren / anderen Ideen hier darüber diskutieren und ggf. sogar die
vorhergehensweise verbessern können.
Ihr dürft diesen Code gerne in euren Projekten verwenden, denkt aber
bitte bei einer Veröffentlichung daran zumindest auf diesen Thread hier
aufmerksam zu machen.
Eine Komerzielle Nutzung, ohne mich zu fragen, würde ich nicht wollen ;)
Die Datei zur Erstellung der Daten habe ich angehängt.
Einbinden:
1 | #define MULTIPLE_FONT 1 // Enable multiple font
|
2 | #define MULTIPLE_FONT_MAX 5 // Allow up to 5 different font
|
3 | #include "Font_Arial_8px_H.h" // Font 0
|
4 | #include "Font_Arial_16px_H.h" // Font 1
|
5 | #include "Font_Arial_24px_H.h" // Font 2
|
6 | #include "Font_Arial_40px_H.h" // Font 3
|
7 | #include "Font_Arial_80px_H.h" // Font 4
|
Verwenden:
1 | uint8_t HeightBits = (returnStruct(Font, Char).Height+7)/8; // Get Height of character in bytes
|
2 | uint8_t WidthBytes = returnStruct(Font, Char).Width; // Get width of character in bits
|
3 | uint8_t *ptr = FONT_DATA_BEGIN[Font] + returnStruct(Font, Char).Offset; // Set pointer to data
|
Die Zeilen, welche die Eintragung erledigen lest ihr am besten am Ende
der angehängten .h hinter den beiden Arrays.
Zum Erstellen der Font Daten habe ich das Programm "The Dot Factory"
verwendet.