Hi,
ich habe ein kleines Problem mit Fonts auf einem 128x32 OLED-Display.
Kurz vorweg, ich habe verschiedene Libs ausprobiert, um auf ein solches Display eine Anzeige zu zaubern, und das klappt auch mit der ADAFRUIT, der U8g2, und der SSD1306Ascii. Letztere bringt nur Fonts zur Anzeige, aber braucht dafür auch nur 2% RAM, gegenüber der U8g2 mit 50% RAM-Verbrauch :o
Mir fehlen in den jeweiligen Fonts die in der SSD1306Ascii - Library zur Verfügung stehen ein paar Sonderzeichen, auf ein paar andere könnte ich verzichten, lieber wäre mir natürlich ergänzen.
Leider verstehe ich nicht ganz, wie die Buchstaben / Zeichen "im Raum" liegen, kann hier jemand helfen?
Bei einem LCD habe ich mir per Generator schon Sonderzeichen zusammengebastelt, und ich denke auch verstanden.
Bei den GLCD-FONTs scheint das etwas anders zu sein, und ich komme ins straucheln.
Hier mal der konkrete Font, bei dem ich mir gern 3 Sonderzeichen durch andere ersetzen würde:
// STARTFONT 2.1
// FONT -zevv-peep-Medium-R-Normal--16-140-75-75-C-80-ISO8859-1
#ifndef font8x16_h
#define font8x16_h
GLCDFONTDECL(ZevvPeep8x16) = {
0x0, 0x0, // size of zero indicates fixed width font,
7, // width
14, // height
0x20, // first char
0x60, // char count
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, // ' '
0X00,0X00,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X0D,0X00,0X00,0X00,0X00, // '!'
0X00,0X3C,0X00,0X3C,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, // '"'
0X20,0XF8,0X20,0X20,0XF8,0X20,0X00,0X01,0X07,0X01,0X01,0X07,0X01,0X00, // '#'
0X60,0X90,0XF8,0X90,0X10,0X00,0X00,0X04,0X04,0X0F,0X04,0X03,0X00,0X00, // '
Ein Generator dafür, bzw. eine Erweiterung zu diesem Font wäre mir natürlich lieber, aber das Ersetzen von 3 Sonderzeichen durch 3 andere ist der kleinste gemeinsame Nenner ...
Ich musste in der Mitte ein paar Zeilen killen, wegen dem Zeichen-Limit ![]()
Gruß André
0X18,0X24,0X98,0X60,0X10,0X0C,0X00,0X0C,0X02,0X01,0X06,0X09,0X06,0X00, // '%'
0X30,0XC8,0XC8,0X30,0X00,0X00,0X00,0X07,0X08,0X08,0X09,0X06,0X09,0X00, // '&'
0X00,0X00,0X3C,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, // '''
0X00,0X00,0XE0,0X18,0X04,0X02,0X00,0X00,0X00,0X03,0X0C,0X10,0X20,0X00, // '('
0X02,0X04,0X18,0XE0,0X00,0X00,0X00,0X20,0X10,0X0C,0X03,0X00,0X00,0X00, // ')'
0X80,0XA0,0XC0,0XC0,0XA0,0X80,0X00,0X00,0X02,0X01,0X01,0X02,0X00,0X00, // '*'
0X80,0X80,0X80,0XF0,0X80,0X80,0X80,0X00,0X00,0X00,0X07,0X00,0X00,0X00, // '+'
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X20,0X18,0X0C,0X04,0X00,0X00,0X00, // ','
0X80,0X80,0X80,0X80,0X80,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, // '-'
0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X08,0X1C,0X08,0X00,0X00,0X00, // '.'
0X00,0X00,0X80,0X60,0X18,0X06,0X00,0X18,0X06,0X01,0X00,0X00,0X00,0X00, // '/'
0XF0,0X08,0X84,0X44,0X08,0XF0,0X00,0X03,0X04,0X08,0X08,0X04,0X03,0X00, // '0'
0X20,0X10,0X08,0XFC,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,0X00,0X00,0X00, // '1'
0X18,0X04,0X04,0X84,0X44,0X38,0X00,0X0C,0X0A,0X09,0X08,0X08,0X08,0X00, // '2'
0X08,0X04,0X44,0X44,0X44,0XB8,0X00,0X06,0X08,0X08,0X08,0X08,0X07,0X00, // '3'
...
...
0X20,0X40,0X80,0X80,0X40,0X20,0X00,0X08,0X04,0X02,0X02,0X04,0X08,0X00, // 'x'
0XE0,0X00,0X00,0X00,0X00,0XE0,0X00,0X23,0X44,0X44,0X44,0X42,0X3F,0X00, // 'y'
0X20,0X20,0X20,0X20,0XA0,0X60,0X00,0X08,0X0C,0X0A,0X09,0X08,0X08,0X00, // 'z'
0X00,0X80,0X80,0X7C,0X02,0X02,0X00,0X00,0X00,0X00,0X1F,0X20,0X20,0X00, // '{'
0X00,0X00,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,0X1F,0X00,0X00,0X00,0X00, // '|'
0X02,0X02,0X7C,0X80,0X80,0X00,0X00,0X20,0X20,0X1F,0X00,0X00,0X00,0X00, // '}'
0X30,0X08,0X08,0X10,0X20,0X20,0X18,0X00,0X00,0X00,0X00,0X00,0X00,0X00, // '~'
0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0XFE,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F,0X7F // del
};
#endif // font8x16_h
Ein Generator dafür, bzw. eine Erweiterung zu diesem Font wäre mir natürlich lieber, aber das Ersetzen von 3 Sonderzeichen durch 3 andere ist der kleinste gemeinsame Nenner ...
Ich musste in der Mitte ein paar Zeilen killen, wegen dem Zeichen-Limit :(
Gruß André