Polish font

Add polish font for GLCD displays only.
HD44780 work properly without polish character.
Update language_pl.h.
This commit is contained in:
android444
2017-04-21 16:05:29 +02:00
committed by Scott Lahteine
parent 3ed737425d
commit 77aa16005d
5 changed files with 482 additions and 14 deletions

View File

@ -32,15 +32,11 @@
#endif
#if DISABLED(SIMULATE_ROMFONT) && ENABLED(DOGLCD)
#if ENABLED(DISPLAY_CHARSET_ISO10646_1)
#define MAPPER_ONE_TO_ONE
#elif ENABLED(DISPLAY_CHARSET_ISO10646_5)
#define MAPPER_ONE_TO_ONE
#elif ENABLED(DISPLAY_CHARSET_ISO10646_KANA)
#define MAPPER_ONE_TO_ONE
#elif ENABLED(DISPLAY_CHARSET_ISO10646_GREEK)
#define MAPPER_ONE_TO_ONE
#elif ENABLED(DISPLAY_CHARSET_ISO10646_TR)
#if ENABLED(DISPLAY_CHARSET_ISO10646_1) \
|| ENABLED(DISPLAY_CHARSET_ISO10646_5) \
|| ENABLED(DISPLAY_CHARSET_ISO10646_KANA) \
|| ENABLED(DISPLAY_CHARSET_ISO10646_GREEK) \
|| ENABLED(DISPLAY_CHARSET_ISO10646_TR)
#define MAPPER_ONE_TO_ONE
#endif
#else // SIMULATE_ROMFONT
@ -401,6 +397,71 @@
return 1;
}
#elif ENABLED(MAPPER_C3C4C5_PL)
//Ą c4 84 = 80
//ą c4 85 = 81
//Ć c4 86 = 82
//ć c4 87 = 83
//Ę c4 98 = 84
//ę c4 99 = 85
//Ł c5 81 = 86
//ł c5 82 = 87
//Ń c5 83 = 88
//ń c5 84 = 89
//Ó c3 93 = 8a
//ó c3 b3 = 8b
//Ś c5 9a = 8c
//ś c5 9b = 8d
//Ź c5 b9 = 8e
//ź c5 ba = 8f
//Ż c5 bb = 90
//ż c5 bc = 91
char charset_mapper(const char c) {
static uint8_t utf_hi_char; // UTF-8 high part
static bool seen_c3 = false,
seen_c4 = false,
seen_c5 = false;
uint8_t d = c;
if ( d >= 0x80u ) { // UTF-8 handling
if ( d == 0xC4u ) {seen_c4 = true; return 0;}
else if ( d == 0xC5u ) {seen_c5 = true; return 0;}
else if ( d == 0xC3u ) {seen_c3 = true; return 0;}
else if (seen_c4) {
switch(d) {
case 0x84u ... 0x87u: d -= 4; break; //Ą - ć
case 0x98u ... 0x99u: d -= 20; break; //Ę i ę
default: d = '?';
}
HARDWARE_CHAR_OUT((char)d) ;
}
else if (seen_c5) {
switch(d) {
case 0x81u ... 0x84u: d += 5; break; //Ł - ń
case 0x9Au ... 0x9Bu: d -= 0x0Eu; break; //Ś i ś
case 0xB9u ... 0xBCu: d -= 0x2Bu; break; //Ź - ż
default: d = '?';
}
HARDWARE_CHAR_OUT((char)d) ;
}
else if (seen_c3) {
switch(d) {
case 0x93u: d = 0x8Au; break; //Ó
case 0xB3u: d = 0x8Bu; break; //ó
d = '?';
}
HARDWARE_CHAR_OUT((char)d) ;
}
}
else {
HARDWARE_CHAR_OUT((char) c );
}
seen_c3 = seen_c4 = seen_c5 = false;
return 1;
}
#else
#define MAPPER_NON