diff --git a/Marlin/dogm_font_data_ISO10646_Greek.h b/Marlin/dogm_font_data_ISO10646_Greek.h new file mode 100644 index 000000000000..0abb08d9dcec --- /dev/null +++ b/Marlin/dogm_font_data_ISO10646_Greek.h @@ -0,0 +1,206 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * Based on Sprinter and grbl. + * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +/* + Fontname: ISO10646_4_Greek + Copyright: A. Hardtung, public domain + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w= 5 h=10 x= 2 y= 6 dx= 6 dy= 0 ascent= 8 len=10 + Font Bounding box w= 6 h= 9 x= 0 y=-2 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 7 descent=-1 + X Font ascent = 7 descent=-1 + Max Font ascent = 8 descent=-2 +*/ +#include +const u8g_fntpgm_uint8_t ISO10646_Greek_5x7[2728] U8G_SECTION(".progmem.ISO10646_Greek_5x7") = { + 0,6,9,0,254,7,1,145,3,32,32,255,255,8,254,7, + 255,0,0,0,6,0,0,1,7,7,6,2,0,128,128,128, + 128,128,0,128,3,2,2,6,1,5,160,160,5,7,7,6, + 0,0,80,80,248,80,248,80,80,5,7,7,6,0,0,32, + 120,160,112,40,240,32,5,7,7,6,0,0,192,200,16,32, + 64,152,24,5,7,7,6,0,0,96,144,160,64,168,144,104, + 2,3,3,6,1,4,192,64,128,3,7,7,6,1,0,32, + 64,128,128,128,64,32,3,7,7,6,1,0,128,64,32,32, + 32,64,128,5,5,5,6,0,1,32,168,112,168,32,5,5, + 5,6,0,1,32,32,248,32,32,2,3,3,6,2,255,192, + 64,128,5,1,1,6,0,3,248,2,2,2,6,2,0,192, + 192,5,5,5,6,0,1,8,16,32,64,128,5,7,7,6, + 0,0,112,136,152,168,200,136,112,3,7,7,6,1,0,64, + 192,64,64,64,64,224,5,7,7,6,0,0,112,136,8,112, + 128,128,248,5,7,7,6,0,0,248,16,32,16,8,8,240, + 5,7,7,6,0,0,16,48,80,144,248,16,16,5,7,7, + 6,0,0,248,128,240,8,8,136,112,5,7,7,6,0,0, + 48,64,128,240,136,136,112,5,7,7,6,0,0,248,8,16, + 32,32,32,32,5,7,7,6,0,0,112,136,136,112,136,136, + 112,5,7,7,6,0,0,112,136,136,120,8,16,96,2,5, + 5,6,2,0,192,192,0,192,192,2,6,6,6,2,255,192, + 192,0,192,64,128,4,7,7,6,0,0,16,32,64,128,64, + 32,16,5,3,3,6,0,2,248,0,248,4,7,7,6,1, + 0,128,64,32,16,32,64,128,5,7,7,6,0,0,112,136, + 8,16,32,0,32,5,6,6,6,0,0,112,136,8,104,168, + 112,5,7,7,6,0,0,112,136,136,248,136,136,136,5,7, + 7,6,0,0,240,136,136,240,136,136,240,5,7,7,6,0, + 0,112,136,128,128,128,136,112,5,7,7,6,0,0,224,144, + 136,136,136,144,224,5,7,7,6,0,0,248,128,128,240,128, + 128,248,5,7,7,6,0,0,248,128,128,240,128,128,128,5, + 7,7,6,0,0,112,136,128,184,136,136,112,5,7,7,6, + 0,0,136,136,136,248,136,136,136,1,7,7,6,2,0,128, + 128,128,128,128,128,128,5,7,7,6,0,0,56,16,16,16, + 16,144,96,5,7,7,6,0,0,136,144,160,192,160,144,136, + 5,7,7,6,0,0,128,128,128,128,128,128,248,5,7,7, + 6,0,0,136,216,168,136,136,136,136,5,7,7,6,0,0, + 136,136,200,168,152,136,136,5,7,7,6,0,0,112,136,136, + 136,136,136,112,5,7,7,6,0,0,240,136,136,240,128,128, + 128,5,7,7,6,0,0,112,136,136,136,168,144,104,5,7, + 7,6,0,0,240,136,136,240,160,144,136,5,7,7,6,0, + 0,120,128,128,112,8,8,240,5,7,7,6,0,0,248,32, + 32,32,32,32,32,5,7,7,6,0,0,136,136,136,136,136, + 136,112,5,7,7,6,0,0,136,136,136,136,136,80,32,5, + 7,7,6,0,0,136,136,136,136,136,168,80,5,7,7,6, + 0,0,136,136,80,32,80,136,136,5,7,7,6,0,0,136, + 136,136,80,32,32,32,5,7,7,6,0,0,248,8,16,32, + 64,128,248,3,7,7,6,1,0,224,128,128,128,128,128,224, + 5,5,5,6,0,1,128,64,32,16,8,3,7,7,6,1, + 0,224,32,32,32,32,32,224,5,3,3,6,0,4,32,80, + 136,5,1,1,6,0,0,248,2,2,2,6,2,5,128,64, + 5,5,5,6,0,0,112,8,120,136,120,5,7,7,6,0, + 0,128,128,176,200,136,136,240,5,5,5,6,0,0,112,128, + 128,136,112,5,7,7,6,0,0,8,8,104,152,136,136,120, + 5,5,5,6,0,0,112,136,248,128,112,5,7,7,6,0, + 0,48,72,224,64,64,64,64,5,6,6,6,0,255,112,136, + 136,120,8,112,5,7,7,6,0,0,128,128,176,200,136,136, + 136,1,7,7,6,2,0,128,0,128,128,128,128,128,3,8, + 8,6,1,255,32,0,32,32,32,32,160,64,4,7,7,6, + 0,0,128,128,144,160,192,160,144,3,7,7,6,1,0,192, + 64,64,64,64,64,224,5,5,5,6,0,0,208,168,168,168, + 168,5,5,5,6,0,0,176,200,136,136,136,5,5,5,6, + 0,0,112,136,136,136,112,5,6,6,6,0,255,240,136,136, + 240,128,128,5,6,6,6,0,255,120,136,136,120,8,8,5, + 5,5,6,0,0,176,200,128,128,128,5,5,5,6,0,0, + 112,128,112,8,240,5,7,7,6,0,0,64,64,224,64,64, + 72,48,5,5,5,6,0,0,136,136,136,152,104,5,5,5, + 6,0,0,136,136,136,80,32,5,5,5,6,0,0,136,136, + 168,168,80,5,5,5,6,0,0,136,80,32,80,136,5,6, + 6,6,0,255,136,136,136,120,8,112,5,5,5,6,0,0, + 248,16,32,64,248,3,7,7,6,1,0,32,64,64,128,64, + 64,32,1,7,7,6,2,0,128,128,128,128,128,128,128,3, + 7,7,6,1,0,128,64,64,32,64,64,128,5,2,2,6, + 0,3,104,144,0,0,0,6,0,0,0,0,0,6,0,0, + 0,0,0,6,0,0,0,0,0,6,0,0,0,0,0,6, + 0,0,2,2,2,6,1,6,64,128,3,3,3,6,1,5, + 32,64,160,5,8,8,6,0,0,64,160,80,80,136,248,136, + 136,2,2,2,6,1,2,192,192,5,8,8,6,0,0,64, + 128,248,128,240,128,128,248,5,8,8,6,0,0,64,128,136, + 136,248,136,136,136,4,8,8,6,0,0,64,128,112,32,32, + 32,32,112,0,0,0,6,0,0,5,8,8,6,0,0,64, + 128,112,136,136,136,136,112,0,0,0,6,0,0,5,8,8, + 6,0,0,64,128,8,136,112,32,32,32,5,8,8,6,0, + 0,64,128,112,136,136,136,80,216,3,8,8,6,1,0,32, + 64,160,0,64,64,64,32,5,7,7,6,0,0,32,80,136, + 136,248,136,136,5,7,7,6,0,0,240,72,72,112,72,72, + 240,5,7,7,6,0,0,248,128,128,128,128,128,128,5,6, + 6,6,0,0,32,80,80,136,136,248,5,7,7,6,0,0, + 248,128,128,240,128,128,248,5,7,7,6,0,0,248,8,16, + 32,64,128,248,5,7,7,6,0,0,136,136,136,248,136,136, + 136,5,7,7,6,0,0,112,136,136,168,136,136,112,3,7, + 7,6,1,0,224,64,64,64,64,64,224,5,7,7,6,0, + 0,136,144,160,192,160,144,136,5,7,7,6,0,0,32,80, + 136,136,136,136,136,5,7,7,6,0,0,136,216,168,168,136, + 136,136,5,7,7,6,0,0,136,200,200,168,152,152,136,5, + 7,7,6,0,0,248,0,0,112,0,0,248,5,7,7,6, + 0,0,112,136,136,136,136,136,112,5,7,7,6,0,0,248, + 80,80,80,80,80,80,5,7,7,6,0,0,240,136,136,240, + 128,128,128,0,0,0,6,0,0,5,7,7,6,0,0,248, + 128,64,32,64,128,248,5,7,7,6,0,0,248,32,32,32, + 32,32,32,5,7,7,6,0,0,136,136,80,32,32,32,32, + 5,7,7,6,0,0,112,32,112,168,112,32,112,5,7,7, + 6,0,0,136,136,80,32,80,136,136,5,7,7,6,0,0, + 168,168,168,168,112,32,32,5,6,6,6,0,0,112,136,136, + 80,80,216,3,8,8,6,1,0,160,0,224,64,64,64,64, + 224,5,8,8,6,0,0,80,0,136,136,136,80,32,32,5, + 8,8,6,0,0,32,64,8,104,152,144,144,104,5,8,8, + 6,0,0,32,64,0,112,136,224,136,112,5,10,10,6,0, + 254,32,64,0,112,136,136,136,136,8,8,2,8,8,6,1, + 0,64,128,0,128,128,128,128,64,5,8,8,6,0,0,16, + 32,80,0,136,136,136,112,5,6,6,6,0,0,8,104,152, + 144,144,104,4,7,7,6,0,254,96,144,240,144,224,128,128, + 5,6,6,6,0,255,136,72,80,32,32,64,5,6,6,6, + 0,0,48,64,112,136,136,112,5,5,5,6,0,0,112,136, + 224,136,112,5,9,9,6,0,254,128,112,64,128,128,128,112, + 8,112,5,7,7,6,0,254,184,200,136,136,136,8,8,5, + 5,5,6,0,0,112,136,248,136,112,3,5,5,6,1,0, + 128,128,128,128,96,4,5,5,6,0,0,144,160,192,160,144, + 5,6,6,6,0,0,64,32,32,80,80,136,5,7,7,6, + 0,254,136,136,136,216,168,128,128,5,5,5,6,0,0,136, + 136,80,96,32,5,10,10,6,0,254,128,224,128,112,32,64, + 128,112,8,112,5,5,5,6,0,0,112,136,136,136,112,5, + 5,5,6,0,0,248,80,80,80,80,5,7,7,6,0,254, + 112,136,136,200,176,128,128,5,7,7,6,0,254,48,64,128, + 64,48,8,112,5,5,5,6,0,0,104,144,144,144,96,4, + 5,5,6,0,0,240,64,64,64,48,5,5,5,6,0,0, + 136,136,144,144,224,5,8,8,6,0,254,48,168,168,168,168, + 112,32,32,5,6,6,6,0,255,136,80,32,32,80,136,5, + 7,7,6,0,254,168,168,168,168,112,32,32,5,5,5,6, + 0,0,80,136,136,168,112,4,7,7,6,0,0,160,0,64, + 64,64,64,48,5,7,7,6,0,0,80,0,136,136,144,144, + 224,4,8,8,6,0,0,32,64,0,96,144,144,144,96,5, + 8,8,6,0,0,32,64,0,136,136,144,144,96,5,8,8, + 6,0,0,32,64,0,80,136,136,168,112,5,7,7,6,0, + 255,144,160,192,160,144,136,16,5,8,8,6,0,0,96,144, + 160,128,240,136,136,112,5,7,7,6,0,0,112,80,56,144, + 144,144,96,5,6,6,6,0,0,152,80,32,32,32,32,5, + 8,8,6,0,0,64,128,152,80,32,32,32,32,5,8,8, + 6,0,0,80,0,152,80,32,32,32,32,5,7,7,6,0, + 255,48,168,168,168,168,112,32,5,5,5,6,0,0,248,80, + 80,80,88,5,6,6,6,0,255,136,80,112,80,136,16,5, + 7,7,6,0,255,112,136,136,136,112,32,112,5,6,6,6, + 0,255,112,136,136,112,32,112,5,6,6,6,0,0,112,136, + 128,112,32,112,5,7,7,6,0,254,8,112,128,128,112,16, + 96,5,6,6,6,0,0,248,128,128,240,128,128,4,5,5, + 6,0,0,240,128,224,128,128,5,6,6,6,0,0,248,0, + 0,112,0,248,4,5,5,6,0,0,64,128,240,16,32,5, + 7,7,6,0,0,224,80,40,40,8,8,16,5,7,7,6, + 0,0,192,32,80,40,8,8,8,5,8,8,6,0,254,168, + 168,168,168,168,88,8,112,5,7,7,6,0,254,168,168,168, + 168,88,8,112,5,6,6,6,0,0,104,136,136,120,8,8, + 5,6,6,6,0,255,104,136,136,120,8,8,4,8,8,6, + 0,254,128,224,144,144,144,144,32,192,5,5,5,6,0,0, + 104,144,112,16,224,5,6,6,6,0,0,96,144,16,96,136, + 112,4,6,6,6,0,0,96,144,16,96,128,112,5,6,6, + 6,0,0,136,80,32,80,136,248,5,5,5,6,0,0,136, + 80,32,80,112,5,6,6,6,0,0,120,128,240,136,136,112, + 4,5,5,6,0,0,240,128,224,144,96,3,6,6,6,1, + 0,64,224,64,64,64,64,3,6,6,6,1,255,64,224,64, + 64,64,128,5,5,5,6,0,0,136,80,112,80,136,5,7, + 7,6,0,254,112,136,136,136,240,128,112,4,5,5,6,0, + 0,112,128,128,128,112,2,8,8,6,1,255,64,0,192,64, + 64,64,64,128,5,7,7,6,0,0,112,136,136,248,136,136, + 112,4,5,5,6,0,0,112,128,224,128,112,4,5,5,6, + 0,0,224,16,112,16,224,5,7,7,6,0,0,128,240,136, + 136,136,240,128,4,7,7,6,0,255,128,224,144,144,144,224, + 128,5,6,6,6,0,0,112,136,128,128,136,112,5,6,6, + 6,0,0,136,216,168,136,136,136,5,7,7,6,0,254,136, + 216,168,136,136,128,128,5,8,8,6,0,254,112,136,136,136, + 112,64,224,64,5,6,6,6,0,0,112,136,8,8,136,112, + 5,6,6,6,0,0,112,136,160,128,136,112,5,6,6,6, + 0,0,112,136,40,8,136,112}; diff --git a/Marlin/dogm_lcd_implementation.h b/Marlin/dogm_lcd_implementation.h index 1ef521442f5c..9a3efbb65012 100644 --- a/Marlin/dogm_lcd_implementation.h +++ b/Marlin/dogm_lcd_implementation.h @@ -85,6 +85,9 @@ #elif ENABLED(DISPLAY_CHARSET_ISO10646_KANA) #include "dogm_font_data_ISO10646_Kana.h" #define FONT_MENU_NAME ISO10646_Kana_5x7 + #elif ENABLED(DISPLAY_CHARSET_ISO10646_GREEK) + #include "dogm_font_data_ISO10646_Greek.h" + #define FONT_MENU_NAME ISO10646_Greek_5x7 #elif ENABLED(DISPLAY_CHARSET_ISO10646_CN) #include "dogm_font_data_ISO10646_CN.h" #define FONT_MENU_NAME ISO10646_CN diff --git a/Marlin/fonts/ISO10646-4_Greek.fon b/Marlin/fonts/ISO10646-4_Greek.fon new file mode 100644 index 000000000000..021078e00b77 Binary files /dev/null and b/Marlin/fonts/ISO10646-4_Greek.fon differ diff --git a/Marlin/fonts/make_fonts.bat.txt b/Marlin/fonts/make_fonts.bat.txt new file mode 100644 index 000000000000..c4df633e44f9 --- /dev/null +++ b/Marlin/fonts/make_fonts.bat.txt @@ -0,0 +1,9 @@ +.\bdf2u8g.exe -b 1 -e 9 Marlin_symbols.bdf Marlin_symbols dogm_font_data_Marlin_symbols.h +.\bdf2u8g.exe -b 16 -e 255 HD44780_W.bdf HD44780_W_5x7 dogm_font_data_HD44780_W.h +.\bdf2u8g.exe -b 32 -e 255 HD44780_C.bdf HD44780_C_5x7 dogm_font_data_HD44780_C.h +.\bdf2u8g.exe -b 32 -e 255 HD44780_J.bdf HD44780_J_5x7 dogm_font_data_HD44780_J.h +.\bdf2u8g.exe -b 32 -e 255 ISO10646-1.bdf ISO10646_1_5x7 dogm_font_data_ISO10646_1.h +.\bdf2u8g.exe -b 32 -e 255 ISO10646_5_Cyrillic.bdf ISO10646_5_Cyrillic_5x7 dogm_font_data_ISO10646_5_Cyrillic.h +.\bdf2u8g.exe -b 32 -e 255 ISO10646_Kana.bdf ISO10646_Kana_5x7 dogm_font_data_ISO10646_Kana.h +.\bdf2u8g.exe -b 32 -e 255 ISO10646_CN.bdf ISO10646_CN dogm_font_data_ISO10646_CN.h +.\bdf2u8g.exe -b 32 -e 255 ISO10646_4_Greek.bdf ISO10646_Greek_5x7 dogm_font_data_ISO10646_Greek.h diff --git a/Marlin/language_el-gr.h b/Marlin/language_el-gr.h index 72436e510fde..b25891b14368 100644 --- a/Marlin/language_el-gr.h +++ b/Marlin/language_el-gr.h @@ -33,8 +33,8 @@ // Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h //#define SIMULATE_ROMFONT -//#define MAPPER_C2C3 -//#define DISPLAY_CHARSET_ISO10646_1 +//#define MAPPER_CECF +//#define DISPLAY_CHARSET_ISO10646_GREEK #define WELCOME_MSG MACHINE_NAME " ready." #define MSG_SD_INSERTED "Card inserted" diff --git a/Marlin/language_el.h b/Marlin/language_el.h index 48bdc64bad59..e4bac541702c 100644 --- a/Marlin/language_el.h +++ b/Marlin/language_el.h @@ -33,8 +33,8 @@ // Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h //#define SIMULATE_ROMFONT -//#define MAPPER_C2C3 -//#define DISPLAY_CHARSET_ISO10646_1 +//#define MAPPER_CECF +//#define DISPLAY_CHARSET_ISO10646_GREEK #define WELCOME_MSG MACHINE_NAME " ready." #define MSG_SD_INSERTED "Card inserted" diff --git a/Marlin/utf_mapper.h b/Marlin/utf_mapper.h index ae599af6bd7f..8bfdd50de05a 100644 --- a/Marlin/utf_mapper.h +++ b/Marlin/utf_mapper.h @@ -38,6 +38,8 @@ #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 #endif #else // SIMULATE_ROMFONT #if DISPLAY_CHARSET_HD44780 == JAPANESE @@ -182,6 +184,37 @@ return 1; } +#elif ENABLED(MAPPER_CECF) + + char charset_mapper(char c) { + static uint8_t utf_hi_char; // UTF-8 high part + static bool seen_ce = false; + uint8_t d = c; + if ( d >= 0x80 ) { // UTF-8 handling + if ( (d >= 0xc0) && (!seen_ce) ) { + utf_hi_char = d - 0xce; + seen_ce = true; + return 0; + } + else if (seen_ce) { + d &= 0x3f; + #ifndef MAPPER_ONE_TO_ONE + HARDWARE_CHAR_OUT((char)pgm_read_byte_near(utf_recode + d + (utf_hi_char << 6) - 0x20)); + #else + HARDWARE_CHAR_OUT((char)(0x80 + (utf_hi_char << 6) + d)) ; + #endif + } + else { + HARDWARE_CHAR_OUT('?'); + } + } + else { + HARDWARE_CHAR_OUT((char) c ); + } + seen_ce = false; + return 1; + } + #elif ENABLED(MAPPER_D0D1_MOD) char charset_mapper(char c) {