Browse Source

Merge pull request #1622 from AnHardt/tm-utf-minus-kanji

The big Language Pack
Scott Lahteine 9 years ago
parent
commit
bc2f249cc6
46 changed files with 2447 additions and 858 deletions
  1. 145
    0
      Documentation/LCDLanguageFont.md
  2. 9
    6
      Marlin/Configuration.h
  3. 0
    393
      Marlin/LiquidCrystalRus.cpp
  4. 0
    129
      Marlin/LiquidCrystalRus.h
  5. 157
    0
      Marlin/dogm_font_data_6x9_marlin.h
  6. 171
    0
      Marlin/dogm_font_data_HD44780_C.h
  7. 169
    0
      Marlin/dogm_font_data_HD44780_J.h
  8. 203
    0
      Marlin/dogm_font_data_HD44780_W.h
  9. 14
    14
      Marlin/dogm_font_data_ISO10646_1.h
  10. 174
    0
      Marlin/dogm_font_data_ISO10646_5_Cyrillic.h
  11. 173
    0
      Marlin/dogm_font_data_ISO10646_Kana.h
  12. 22
    0
      Marlin/dogm_font_data_Marlin_symbols.h
  13. 178
    86
      Marlin/dogm_lcd_implementation.h
  14. 9
    6
      Marlin/example_configurations/delta/generic/Configuration.h
  15. 9
    6
      Marlin/example_configurations/delta/kossel_mini/Configuration.h
  16. BIN
      Marlin/fonts/HD44780_C.fon
  17. BIN
      Marlin/fonts/HD44780_J.fon
  18. BIN
      Marlin/fonts/HD44780_W.fon
  19. BIN
      Marlin/fonts/ISO10646-1-Marlin.fon
  20. BIN
      Marlin/fonts/ISO10646-5_Cyrillic.fon
  21. BIN
      Marlin/fonts/ISO10646_Kana.fon
  22. 6
    0
      Marlin/fonts/README.fonts
  23. BIN
      Marlin/fonts/bdf2u8g.exe
  24. 0
    1
      Marlin/fonts/make_fonts.bat
  25. 19
    72
      Marlin/language.h
  26. 9
    4
      Marlin/language_an.h
  27. 11
    5
      Marlin/language_ca.h
  28. 20
    15
      Marlin/language_de.h
  29. 15
    5
      Marlin/language_en.h
  30. 9
    4
      Marlin/language_es.h
  31. 9
    4
      Marlin/language_eu.h
  32. 31
    26
      Marlin/language_fi.h
  33. 11
    5
      Marlin/language_fr.h
  34. 9
    4
      Marlin/language_it.h
  35. 147
    0
      Marlin/language_kana.h
  36. 142
    0
      Marlin/language_kana_utf8.h
  37. 9
    4
      Marlin/language_nl.h
  38. 10
    5
      Marlin/language_pl.h
  39. 21
    16
      Marlin/language_pt-br.h
  40. 21
    16
      Marlin/language_pt.h
  41. 5
    2
      Marlin/language_ru.h
  42. 215
    0
      Marlin/language_test.h
  43. 1
    1
      Marlin/ultralcd.cpp
  44. 41
    29
      Marlin/ultralcd_implementation_hitachi_HD44780.h
  45. 252
    0
      Marlin/utf_mapper.h
  46. 1
    0
      README.md

+ 145
- 0
Documentation/LCDLanguageFont.md View File

@@ -0,0 +1,145 @@
1
+# LCD Language Font System
2
+
3
+We deal with a variety of different displays.
4
+And we try to display a lot of different languages in different scripts on them.
5
+This system is ought to solve some of the related problems.
6
+
7
+## The Displays
8
+We have two different technologies for the displays:
9
+
10
+* Character based displays:
11
+  Have a fixed set of symbols (charset - font) in their ROM.
12
+  All of them have a similar but not identical symbol set at the positions 0 to 127 similar to US-ASCII.
13
+  On the other hand symbols at places higher than 127 have mayor differences.
14
+  Until now we know of (and support):
15
+  * 1.) HD44780 and similar with Kana charset A00 https://www.sparkfun.com/datasheets/LCD/HD44780.pdf Page 17
16
+      These are very common, but sadly not very useful when writing in European languages.
17
+  * 2.) HD44780 and similar with Western charset A02 https://www.sparkfun.com/datasheets/LCD/HD44780.pdf Page 18
18
+      These are rare, but fairly useful for European languages. Also a limited number of Cyrillic symbols is available.
19
+  * 3.) HD44780 and similar with Cyrillic charset http://store.comet.bg/download-file.php?id=466 Page 14
20
+      Some of our Russian friends use them.
21
+
22
+  At all of them you can define 8 different symbols by yourself. In Marlin they are used for the Feedrate-, Thermometer-, ... symbols
23
+
24
+* Full graphic displays:
25
+  Where we have the full freedom to display whatever we want, when we can make a program for it.
26
+  Currently we deal with 128x64 Pixel Displays and divide this area in about 5 Lines with about 22 columns.
27
+  Therefore we need fonts with a bounding box of about 6x10.
28
+  Until now we used a
29
+  * 1.) Marlin-font similar to ISO10646-1 but with special Symbols at the end, what made 'ü' and 'ä' inaccessible, in the size 6x10.
30
+  * 2.) Because these letters where to big for some locations on the info-screen we use a full ISO10646-1 font in the size of 6x9.(3200 byte)
31
+  * 3.) When we define USE_BIG_EDIT_FONT we use an additional ISO10646-1 font with 9x18, eating up another 3120 bytes of progmem - but readable without glasses.
32
+
33
+## The Languages
34
+  For the moment Marlin wants to support a lot of languages:
35
+  * en    English
36
+  * pl    Polish
37
+  * fr    French
38
+  * de    German
39
+  * es    Spanish
40
+  * ru    Russian
41
+  * it    Italian
42
+  * pt    Portuguese
43
+  * pt-br Portuguese (Brazil)
44
+  * fi    Finnish
45
+  * an    Aragonese
46
+  * nl    Dutch
47
+  * ca    Catalan
48
+  * eu    Basque-Euskera
49
+
50
+  and recently on [Thingiverse](http://www.thingiverse.com/) a new port to
51
+  * jp    [Japanese](http://www.thingiverse.com/thing:664397)
52
+
53
+ appeared.
54
+
55
+## The Problem
56
+  All of this languages, except the English, normally use extended symbol sets, not contained in US-ASCII.
57
+  Even the English translation uses some Symbols not in US-ASCII. ( '\002' for Thermometer, STR_h3 for '³')
58
+  And worse, in the code itself symbols are used, not taking in account, on what display they are written. [(This is true only for Displays with Japanese charset](https://github.com/MarlinFirmware/Marlin/blob/Development/Marlin/ultralcd_implementation_hitachi_HD44780.h#L218) on Western displays you'll see a '~' and on Cyrillic an 'arrow coming from top - pointing to left', what is quite the opposite of what the programmer wanted.)
59
+  The Germans want to use "ÄäÖöÜüß" the Finnish at least "äö". Other European languages want to see their accents on their letters.
60
+  For other scripts like Cyrillic, Japanese, Greek, Hebrew, ... you have to find totally different symbol sets.
61
+
62
+  Until now the problems where ignored widely.
63
+  The German translation used utf8 'ä' and 'ö' and did not care about showing garbage on ALL displays.
64
+  The Russian translators new that their system only works on the Cyrillic character displays and relied on special LCD routines (LiquidCrystalRus.cpp) to handle UTF8 but missed to implement a proper strlen().
65
+  The Japanese translator dealed with to scripts. He introduced a very special font for the full graphic displays and made use of the Japanese version of the character displays. Therefore he ended up with two pretty unreadable language.h files full of '\xxx' definitions.
66
+  Other languages ether tried to avoid wording with their special symbols or ignored the problem at all and used the basic symbols without the accents, dots, ... whatever.
67
+
68
+## The (partial) Solution
69
+  On a 'perfect' system like Windows or Linux we'd dig out unifont.ttf and some code from the libraries and they'd do what we want. But we are on a embedded system with very limited resources. So we had to find ways to limit the used space (Alone unifont.ttf is about 12MB) and have to make some compromise.
70
+
71
+### Aims:
72
+  * 1.) Make the input for translators as convenient as possible. (Unicode UTF8)
73
+  * 2.) Make the displays show the scripts as good as they can. (fonts, mapping tables)
74
+  * 3.) Don't destroy the existing language files.
75
+  * 3.) Don't loose to much speed
76
+  * 4.) Don't loose to much memory.
77
+
78
+### Actions:
79
+  * a.) Declare the display hardware we use. (Configuration.h)
80
+  * b.) Declare the language ore script we use. (Configuration.h)
81
+  * c.) Declare the kind of input we use. Ether direct pointers to the font (\xxx) or UTF8 and the font to use on graphic displays. (language_xx.h)
82
+  * d.) Declare the needed translations. (language_xx.h)
83
+  * e.) Make strlen() work with UTF8. (ultralcd.cpp)
84
+  * f.) Seperate the Marlin Symbols to their own font. (dogm_font_data_Marlin_symbols.h)
85
+  * g.) Make the fontswitch function remember the last used font. (dogm_lcd_implementation.h)
86
+  * h.) Make output functions that count the number of written chars and switch the font to Marlin symbols and back when needed. (dogm_lcd_implementation.h) (ultralcd_implementation_hitachi_HD44780.h)
87
+  * i.) Make three fonts to simulate the HD44780 charsets on dogm-displays. With this fonts the translator can check how his translation will look on the character based displays.
88
+  * j.) Make ISO fonts for Cyrillic and Katakana because they do not need a mapping table and are faster to deal with and have a better charset (less compromises) than the HD44780 fonts.
89
+  * k.) Make mapping functions and tables to convert from UTF8 to the fonts and integrate in the new output functions. (utf_mapper.h)
90
+  * l.) Delete the not needed any more 'LiquidCrystalRus.xxx' files and their calls in 'ultralcd_implementation_hitachi_HD44780.h'.
91
+  * m.) Split 'dogm_font_data_Marlin.h' into separate fonts and delete. (+dogm_font_data_6x9_marlin.h , +dogm_font_data_Marlin_symbols.h, -dogm_font_data_Marlin.h)
92
+  * n.) Do a bit of preprocessor magic to match displays - fonts and mappers in 'utf_mapper.h'.
93
+
94
+## Translators handbook
95
+  * a.) Check is there already is a language_xx.h file for your language (-> b.) or not (-> e.)
96
+  * b.) Ether their is declared MAPPER_NON (-> c.) or an other mapper (-> d.)
97
+  * c.) Symbols outside the normal ASCII-range (32-128) are written as "\xxx" and point directly into the font of the hardware you declared in 'Configuration.h'
98
+      This is one of the three fonts of the character based Hitachi displays (DISPLAY_CHARSET_HD44780_JAPAN, DISPLAY_CHARSET_HD44780_WEST, DISPLAY_CHARSET_HD44780_CYRILIC).
99
+      Even on the full graphic displays one of these will be used when SIMULATE_ROMFONT is defined.
100
+      If you don't make use of the extended character set your file will look like 'language_en.h' and your language file will work on all the displays. 
101
+      If you make intensive use, your file will look like 'language_kana.h' and your language file will only work on one of displays. (in this case DISPLAY_CHARSET_HD44780_JAPAN)
102
+      Be careful with the characters 0x5c = '\', and 0x7b - 0x7f. "{|}"These are not the same on all variants.
103
+      MAPPER_NON is the fastest an least memory consuming variant.
104
+      If you want to make use of more than a view symbols outside standard ASCII or want to improve the portability to more different types of displays use UTF8 input. That means define an other mapper.
105
+  * d.) With a mapper different to MAPPER_NON UTF8 input is used. Instead of "\xe1" (on a display with Japanese font) or STR_ae simply use "ä". When the string is read byte by byte , the "ä" will expand to "\0xc3\0xa4" or "Я" will expand to "0xd0\0xaf" or "ホ" will expand to "\0xe3\0x83\0x9b"
106
+      To limit the used memory we can't use all the possibilities UTF8 gives at the same time. We define a subset matching to the language or script we use.
107
+      * MAPPER_C2C3 correspondents good with west European languages the possible symbols are listed at (http://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block))
108
+      * MAPPER_D0D1 correspondents well with the Cyrillic languages. See (http://en.wikipedia.org/wiki/Cyrillic_(Unicode_block))
109
+      * MAPPER_E382E383 works with the Japanese Katakana script. See (http://en.wikipedia.org/wiki/Katakana_(Unicode_block))
110
+
111
+      The mapper functions will only catch the 'lead in' described in the mappers name. If the input they get does not match they'll put out a '?' or garbage.
112
+      The last byte in the sequence ether points directly into a matching ISO10646 font or via a mapper_table into one of the HD44780 fonts.
113
+      The mapper_tables do their best to find a similar symbol in the HD44780_fonts. For example replacing small letters with the matching capital letters. But they may fail to find something matching and will output a '?'. There are combinations of language and display what simply have no corresponding symbols - like Cyrillic on a Japanese display or visa versa - than the compiler will throw an error.
114
+      In short: Chose a Mapper working with the symbols you want to use. Use only symbols matching the mapper. On FULL graphic displays all will be fine, but check for daring replacements or question-marks in the output of character based displays by defining SIMULATE_ROMFONT and trying the different variants.
115
+      If you get a lot of question-marks on the Hitachi based displays with your new translation, maybe creating an additional language file with the format 'language_xx_utf8.h' is the way to go.
116
+      * MAPPER_NON is the fastest and least memory consuming variant.
117
+      * Mappers together with a ISO10646_font are the second best choice regarding speed and memory consumption. Only a few more decisions are mad per character.
118
+      * Mappers together with the HD44780_fonts use about additional 128 bytes for the mapping_table.
119
+  * e.) Creating a new language file is not a big thing. Just make a new file with the format 'language_xx.h' or maybe 'language.xx.utf8.h', define a mapper and a font in there and translate some of the strings defined in language_en.h. You can drop the surrounding  #ifndef #endif. You don't have to translate all the stings - the missing one will be added by language_en.h - in English - of cause.
120
+  * f.) If you cant find a matching mapper things will be a bit more complex. With the Hitachi based displays you will not have big chance to make something useful unless you have one with a matching charset. For a full graphic display - lets explain with - let's say Greece.
121
+      Find a matching charset. (http://en.wikipedia.org/wiki/Greek_and_Coptic)
122
+      Provide a font containing the symbols in the right size. Normal ASCII in the lower 127 places, the upper with your selection.
123
+      Write a mapper catching, in this case, 0xcd to 0xcf and add it to 'utf_mapper.h'.
124
+      In case of a ISO10646 font we have a MAPPER_ONE_TO_ONE and don't have to make a table.
125
+  * g.) If you discover enough useful symbols in one of the HD44780 fonts you can provide a mapping table. For example HD44780_WEST contains 'alpha', 'beta', 'pi', 'Sigma', 'omega' 'My' - what is not enough to make USEFUL table - I think.
126
+  * h.) If you want to integrate an entirely new variant of a Hitachi based display.
127
+      Add it in 'Configuration.h'. Define mapper tables in 'utf_mapper.h'. Maybe you need a new mapper function. 
128
+
129
+  The length of the strings is limited. '17 chars' was crude rule of thumb. Obviously 17 is to long for the 16x2 displays. A more exact rule would be max_strlen = Displaywidth - 2 - strlen(value to display behind). This is a bit complicated. So try and count is my rule of thumb. 
130
+
131
+  On the 16x2 displays the strings are cut at the end to fit on the display. So it's a good idea to make them differ early. ('Somverylongoptionname x' -> 'x Somverylongoptionname')
132
+
133
+  You'll find all translatable strings in 'language_en.h'. Please don't translate any strings from 'language.h', this may break the serial protocol.
134
+
135
+## User Instructions
136
+   Define your hardware and the wanted language in 'Configuration.h'.
137
+   To find out what charset your hardware is, define language 'test' and compile. In the menu you will see two lines from the upper half of the charset.
138
+   * DISPLAY_CHARSET_HD44780_JAPAN   locks like "バパヒビピフブプヘベペホボポマミ"
139
+   * DISPLAY_CHARSET_HD44780_WESTERN locks like "ÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞß"
140
+   * DISPLAY_CHARSET_HD44780_CYRILIC locks like "РСТУФХЦЧШЩЪЫЬЭЮЯ"
141
+
142
+   If you get an error about missing mappers during compilation - lie about your displays hardware font to see at lest some garbage, or select an other language.
143
+   
144
+   English works on all hardware.
145
+

+ 9
- 6
Marlin/Configuration.h View File

@@ -563,13 +563,16 @@ const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic o
563 563
 //==============================LCD and SD support=============================
564 564
 
565 565
 // Define your display language below. Replace (en) with your language code and uncomment.
566
-// en, pl, fr, de, es, ru, it, pt, pt-br, fi, an, nl, ca, eu
566
+// en, pl, fr, de, es, ru, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, test
567 567
 // See also language.h
568
-//#define LANGUAGE_INCLUDE GENERATE_LANGUAGE_INCLUDE(en)
569
-
570
-// Character based displays can have different extended charsets.
571
-#define DISPLAY_CHARSET_HD44780_JAPAN     // "ääööüüß23°"
572
-//#define DISPLAY_CHARSET_HD44780_WESTERN // "ÄäÖöÜüß²³°" if you see a '~' instead of a 'arrow_right' at the right of submenuitems - this is the right one.
568
+#define LANGUAGE_INCLUDE GENERATE_LANGUAGE_INCLUDE(en)
569
+
570
+// Chose ONE of the next three charsets. This has to match your hardware. In case of a full graphic display this information is not important.
571
+// To find out what type you have - compile with (test) - upload - click to get the menu. You'll see two typical lines from the upper half of the charset.
572
+// See also documentation/LCDLanguageFont.md
573
+  #define DISPLAY_CHARSET_HD44780_JAPAN        // this is the most common hardware
574
+  //#define DISPLAY_CHARSET_HD44780_WESTERN
575
+  //#define DISPLAY_CHARSET_HD44780_CYRILLIC
573 576
 
574 577
 //#define ULTRA_LCD  //general LCD support, also 16x2
575 578
 //#define DOGLCD  // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)

+ 0
- 393
Marlin/LiquidCrystalRus.cpp View File

@@ -1,393 +0,0 @@
1
-#include "LiquidCrystalRus.h"
2
-
3
-#include <stdio.h>
4
-#include <string.h>
5
-#include <inttypes.h>
6
-#include <avr/pgmspace.h>
7
-
8
-#if defined(ARDUINO) && ARDUINO >= 100
9
-  #include "Arduino.h"
10
-#else
11
-  #include "WProgram.h"
12
-#endif
13
-
14
-// it is a Russian alphabet translation
15
-// except 0401 --> 0xa2 = ╗, 0451 --> 0xb5
16
-const PROGMEM uint8_t utf_recode[] = 
17
-       { 0x41,0xa0,0x42,0xa1,0xe0,0x45,0xa3,0xa4,
18
-         0xa5,0xa6,0x4b,0xa7,0x4d,0x48,0x4f,0xa8,
19
-         0x50,0x43,0x54,0xa9,0xaa,0x58,0xe1,0xab,
20
-         0xac,0xe2,0xad,0xae,0x62,0xaf,0xb0,0xb1,
21
-         0x61,0xb2,0xb3,0xb4,0xe3,0x65,0xb6,0xb7,
22
-         0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0x6f,0xbe,
23
-         0x70,0x63,0xbf,0x79,0xe4,0x78,0xe5,0xc0,
24
-         0xc1,0xe6,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7
25
-        };     
26
-
27
-// When the display powers up, it is configured as follows:
28
-//
29
-// 1. Display clear
30
-// 2. Function set: 
31
-//    DL = 1; 8-bit interface data 
32
-//    N = 0; 1-line display 
33
-//    F = 0; 5x8 dot character font 
34
-// 3. Display on/off control: 
35
-//    D = 0; Display off 
36
-//    C = 0; Cursor off 
37
-//    B = 0; Blinking off 
38
-// 4. Entry mode set: 
39
-//    I/D = 1; Increment by 1 
40
-//    S = 0; No shift 
41
-//
42
-// Note, however, that resetting the Arduino doesn't reset the LCD, so we
43
-// can't assume that it's in that state when a sketch starts (and the
44
-// LiquidCrystal constructor is called).
45
-// 
46
-// modified 27 Jul 2011
47
-// by Ilya V. Danilov http://mk90.ru/
48
-
49
-
50
-LiquidCrystalRus::LiquidCrystalRus(uint8_t rs, uint8_t rw, uint8_t enable,
51
-			     uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,
52
-			     uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)
53
-{
54
-  init(0, rs, rw, enable, d0, d1, d2, d3, d4, d5, d6, d7);
55
-}
56
-
57
-LiquidCrystalRus::LiquidCrystalRus(uint8_t rs, uint8_t enable,
58
-			     uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,
59
-			     uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)
60
-{
61
-  init(0, rs, 255, enable, d0, d1, d2, d3, d4, d5, d6, d7);
62
-}
63
-
64
-LiquidCrystalRus::LiquidCrystalRus(uint8_t rs, uint8_t rw, uint8_t enable,
65
-			     uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3)
66
-{
67
-  init(1, rs, rw, enable, d0, d1, d2, d3, 0, 0, 0, 0);
68
-}
69
-
70
-LiquidCrystalRus::LiquidCrystalRus(uint8_t rs,  uint8_t enable,
71
-			     uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3)
72
-{
73
-  init(1, rs, 255, enable, d0, d1, d2, d3, 0, 0, 0, 0);
74
-}
75
-
76
-void LiquidCrystalRus::init(uint8_t fourbitmode, uint8_t rs, uint8_t rw, uint8_t enable,
77
-			 uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,
78
-			 uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)
79
-{
80
-  _rs_pin = rs;
81
-  _rw_pin = rw;
82
-  _enable_pin = enable;
83
-  
84
-  _data_pins[0] = d0;
85
-  _data_pins[1] = d1;
86
-  _data_pins[2] = d2;
87
-  _data_pins[3] = d3; 
88
-  _data_pins[4] = d4;
89
-  _data_pins[5] = d5;
90
-  _data_pins[6] = d6;
91
-  _data_pins[7] = d7; 
92
-
93
-  pinMode(_rs_pin, OUTPUT);
94
-  // we can save 1 pin by not using RW. Indicate by passing 255 instead of pin#
95
-  if (_rw_pin != 255) { 
96
-    pinMode(_rw_pin, OUTPUT);
97
-  }
98
-  pinMode(_enable_pin, OUTPUT);
99
-  
100
-  if (fourbitmode)
101
-    _displayfunction = LCD_4BITMODE | LCD_1LINE | LCD_5x8DOTS;
102
-  else 
103
-    _displayfunction = LCD_8BITMODE | LCD_1LINE | LCD_5x8DOTS;
104
-  
105
-  begin(16, 1);  
106
-}
107
-
108
-void LiquidCrystalRus::begin(uint8_t cols, uint8_t lines, uint8_t dotsize) {
109
-  if (lines > 1) {
110
-    _displayfunction |= LCD_2LINE;
111
-  }
112
-  _numlines = lines;
113
-  _currline = 0;
114
-
115
-  // for some 1 line displays you can select a 10 pixel high font
116
-  if ((dotsize != 0) && (lines == 1)) {
117
-    _displayfunction |= LCD_5x10DOTS;
118
-  }
119
-
120
-  // SEE PAGE 45/46 FOR INITIALIZATION SPECIFICATION!
121
-  // according to datasheet, we need at least 40ms after power rises above 2.7V
122
-  // before sending commands. Arduino can turn on way before 4.5V so we'll wait 50
123
-  delayMicroseconds(50000); 
124
-  // Now we pull both RS and R/W low to begin commands
125
-  digitalWrite(_rs_pin, LOW);
126
-  digitalWrite(_enable_pin, LOW);
127
-  if (_rw_pin != 255) { 
128
-    digitalWrite(_rw_pin, LOW);
129
-  }
130
-  
131
-  //put the LCD into 4 bit or 8 bit mode
132
-  if (! (_displayfunction & LCD_8BITMODE)) {
133
-    // this is according to the Hitachi HD44780 datasheet
134
-    // figure 24, pg 46
135
-
136
-    // we start in 8bit mode, try to set 4 bit mode
137
-    writeNbits(0x03,4);
138
-    delayMicroseconds(4500); // wait min 4.1ms
139
-
140
-    // second try
141
-    writeNbits(0x03,4);
142
-    delayMicroseconds(4500); // wait min 4.1ms
143
-    
144
-    // third go!
145
-    writeNbits(0x03,4); 
146
-    delayMicroseconds(150);
147
-
148
-    // finally, set to 8-bit interface
149
-    writeNbits(0x02,4); 
150
-  } else {
151
-    // this is according to the Hitachi HD44780 datasheet
152
-    // page 45 figure 23
153
-
154
-    // Send function set command sequence
155
-    command(LCD_FUNCTIONSET | _displayfunction);
156
-    delayMicroseconds(4500);  // wait more than 4.1ms
157
-
158
-    // second try
159
-    command(LCD_FUNCTIONSET | _displayfunction);
160
-    delayMicroseconds(150);
161
-
162
-    // third go
163
-    command(LCD_FUNCTIONSET | _displayfunction);
164
-  }
165
-
166
-  // finally, set # lines, font size, etc.
167
-  command(LCD_FUNCTIONSET | _displayfunction);  
168
-
169
-  // turn the display on with no cursor or blinking default
170
-  _displaycontrol = LCD_DISPLAYON | LCD_CURSOROFF | LCD_BLINKOFF;  
171
-  display();
172
-
173
-  // clear it off
174
-  clear();
175
-
176
-  // Initialize to default text direction (for romance languages)
177
-  _displaymode = LCD_ENTRYLEFT | LCD_ENTRYSHIFTDECREMENT;
178
-  // set the entry mode
179
-  command(LCD_ENTRYMODESET | _displaymode);
180
-
181
-}
182
-
183
-void LiquidCrystalRus::setDRAMModel(uint8_t model) {
184
-  _dram_model = model;
185
-}
186
-
187
-/********** high level commands, for the user! */
188
-void LiquidCrystalRus::clear()
189
-{
190
-  command(LCD_CLEARDISPLAY);  // clear display, set cursor position to zero
191
-  delayMicroseconds(2000);  // this command takes a long time!
192
-}
193
-
194
-void LiquidCrystalRus::home()
195
-{
196
-  command(LCD_RETURNHOME);  // set cursor position to zero
197
-  delayMicroseconds(2000);  // this command takes a long time!
198
-}
199
-
200
-void LiquidCrystalRus::setCursor(uint8_t col, uint8_t row)
201
-{
202
-  int row_offsets[] = { 0x00, 0x40, 0x14, 0x54 };
203
-  if ( row >= _numlines ) {
204
-    row = _numlines-1;    // we count rows starting w/0
205
-  }
206
-  
207
-  command(LCD_SETDDRAMADDR | (col + row_offsets[row]));
208
-}
209
-
210
-// Turn the display on/off (quickly)
211
-void LiquidCrystalRus::noDisplay() {
212
-  _displaycontrol &= ~LCD_DISPLAYON;
213
-  command(LCD_DISPLAYCONTROL | _displaycontrol);
214
-}
215
-void LiquidCrystalRus::display() {
216
-  _displaycontrol |= LCD_DISPLAYON;
217
-  command(LCD_DISPLAYCONTROL | _displaycontrol);
218
-}
219
-
220
-// Turns the underline cursor on/off
221
-void LiquidCrystalRus::noCursor() {
222
-  _displaycontrol &= ~LCD_CURSORON;
223
-  command(LCD_DISPLAYCONTROL | _displaycontrol);
224
-}
225
-void LiquidCrystalRus::cursor() {
226
-  _displaycontrol |= LCD_CURSORON;
227
-  command(LCD_DISPLAYCONTROL | _displaycontrol);
228
-}
229
-
230
-// Turn on and off the blinking cursor
231
-void LiquidCrystalRus::noBlink() {
232
-  _displaycontrol &= ~LCD_BLINKON;
233
-  command(LCD_DISPLAYCONTROL | _displaycontrol);
234
-}
235
-void LiquidCrystalRus::blink() {
236
-  _displaycontrol |= LCD_BLINKON;
237
-  command(LCD_DISPLAYCONTROL | _displaycontrol);
238
-}
239
-
240
-// These commands scroll the display without changing the RAM
241
-void LiquidCrystalRus::scrollDisplayLeft(void) {
242
-  command(LCD_CURSORSHIFT | LCD_DISPLAYMOVE | LCD_MOVELEFT);
243
-}
244
-void LiquidCrystalRus::scrollDisplayRight(void) {
245
-  command(LCD_CURSORSHIFT | LCD_DISPLAYMOVE | LCD_MOVERIGHT);
246
-}
247
-
248
-// This is for text that flows Left to Right
249
-void LiquidCrystalRus::leftToRight(void) {
250
-  _displaymode |= LCD_ENTRYLEFT;
251
-  command(LCD_ENTRYMODESET | _displaymode);
252
-}
253
-
254
-// This is for text that flows Right to Left
255
-void LiquidCrystalRus::rightToLeft(void) {
256
-  _displaymode &= ~LCD_ENTRYLEFT;
257
-  command(LCD_ENTRYMODESET | _displaymode);
258
-}
259
-
260
-// This will 'right justify' text from the cursor
261
-void LiquidCrystalRus::autoscroll(void) {
262
-  _displaymode |= LCD_ENTRYSHIFTINCREMENT;
263
-  command(LCD_ENTRYMODESET | _displaymode);
264
-}
265
-
266
-// This will 'left justify' text from the cursor
267
-void LiquidCrystalRus::noAutoscroll(void) {
268
-  _displaymode &= ~LCD_ENTRYSHIFTINCREMENT;
269
-  command(LCD_ENTRYMODESET | _displaymode);
270
-}
271
-
272
-// Allows us to fill the first 8 CGRAM locations
273
-// with custom characters
274
-void LiquidCrystalRus::createChar(uint8_t location, uint8_t charmap[]) {
275
-  location &= 0x7; // we only have 8 locations 0-7
276
-  command(LCD_SETCGRAMADDR | (location << 3));
277
-  for (int i=0; i<8; i++) {
278
-    write(charmap[i]);
279
-  }
280
-}
281
-
282
-/*********** mid level commands, for sending data/cmds */
283
-
284
-inline void LiquidCrystalRus::command(uint8_t value) {
285
-  send(value, LOW);
286
-}
287
-
288
-#if defined(ARDUINO) && ARDUINO >= 100
289
-  size_t LiquidCrystalRus::write(uint8_t value)
290
-#else
291
-  void   LiquidCrystalRus::write(uint8_t value)
292
-#endif
293
-{
294
-  uint8_t out_char=value;
295
-
296
-  if (_dram_model == LCD_DRAM_WH1601) {  
297
-    uint8_t ac=recv(LOW) & 0x7f;
298
-    if (ac>7 && ac<0x14) command(LCD_SETDDRAMADDR | (0x40+ac-8));
299
-  }
300
-
301
-  if (value>=0x80) { // UTF-8 handling
302
-    if (value >= 0xc0) {
303
-      utf_hi_char = value - 0xd0;
304
-    } else {
305
-      value &= 0x3f;
306
-      if (!utf_hi_char && (value == 1)) 
307
-        send(0xa2,HIGH); // ╗
308
-      else if ((utf_hi_char == 1) && (value == 0x11)) 
309
-        send(0xb5,HIGH); // ╦
310
-      else 
311
-        send(pgm_read_byte_near(utf_recode + value + (utf_hi_char<<6) - 0x10), HIGH);
312
-    }    
313
-  } else send(out_char, HIGH);
314
-#if defined(ARDUINO) && ARDUINO >= 100
315
-  return 1; // assume success 
316
-#endif
317
-}
318
-
319
-/************ low level data pushing commands **********/
320
-
321
-// write either command or data, with automatic 4/8-bit selection
322
-void LiquidCrystalRus::send(uint8_t value, uint8_t mode) {
323
-  digitalWrite(_rs_pin, mode);
324
-
325
-  // if there is a RW pin indicated, set it low to Write
326
-  if (_rw_pin != 255) { 
327
-    digitalWrite(_rw_pin, LOW);
328
-  }
329
-  
330
-  if (_displayfunction & LCD_8BITMODE) {
331
-    writeNbits(value,8); 
332
-  } else {
333
-    writeNbits(value>>4,4);
334
-    writeNbits(value,4);
335
-  }
336
-}
337
-
338
-// read  data, with automatic 4/8-bit selection
339
-uint8_t LiquidCrystalRus::recv(uint8_t mode) {
340
-  uint8_t retval;
341
-  digitalWrite(_rs_pin, mode);
342
-
343
-  // if there is a RW pin indicated, set it low to Write
344
-  if (_rw_pin != 255) { 
345
-    digitalWrite(_rw_pin, HIGH);
346
-  }
347
-  
348
-  if (_displayfunction & LCD_8BITMODE) {
349
-    retval = readNbits(8); 
350
-  } else {
351
-    retval = readNbits(4) << 4;
352
-    retval |= readNbits(4);
353
-  }
354
-  return retval;
355
-}
356
-void LiquidCrystalRus::pulseEnable() {
357
-  digitalWrite(_enable_pin, LOW);
358
-  delayMicroseconds(1);    
359
-  digitalWrite(_enable_pin, HIGH);
360
-  delayMicroseconds(1);    // enable pulse must be >450ns
361
-  digitalWrite(_enable_pin, LOW);
362
-  delayMicroseconds(100);   // commands need > 37us to settle
363
-}
364
-
365
-void LiquidCrystalRus::writeNbits(uint8_t value, uint8_t n) {
366
-  for (int i = 0; i < n; i++) {
367
-    pinMode(_data_pins[i], OUTPUT);
368
-    digitalWrite(_data_pins[i], (value >> i) & 0x01);
369
-  }
370
-
371
-  pulseEnable();
372
-}
373
-
374
-uint8_t LiquidCrystalRus::readNbits(uint8_t n) {
375
-  uint8_t retval=0;
376
-  for (int i = 0; i < n; i++) {
377
-    pinMode(_data_pins[i], INPUT);
378
-  }
379
-
380
-  digitalWrite(_enable_pin, LOW);
381
-  delayMicroseconds(1);    
382
-  digitalWrite(_enable_pin, HIGH);
383
-  delayMicroseconds(1);    // enable pulse must be >450ns
384
-  
385
-  for (int i = 0; i < n; i++) {
386
-    retval |= (digitalRead(_data_pins[i]) == HIGH)?(1 << i):0;
387
-  }
388
-
389
-  digitalWrite(_enable_pin, LOW);
390
-
391
-  return retval;
392
-}
393
-

+ 0
- 129
Marlin/LiquidCrystalRus.h View File

@@ -1,129 +0,0 @@
1
-//
2
-// based on LiquidCrystal library from ArduinoIDE, see http://arduino.cc
3
-//  modified 27 Jul 2011
4
-// by Ilya V. Danilov http://mk90.ru/
5
-// 
6
-
7
-#ifndef LiquidCrystalRus_h
8
-#define LiquidCrystalRus_h
9
-
10
-#include <inttypes.h>
11
-#include "Print.h"
12
-
13
-// commands
14
-#define LCD_CLEARDISPLAY 0x01
15
-#define LCD_RETURNHOME 0x02
16
-#define LCD_ENTRYMODESET 0x04
17
-#define LCD_DISPLAYCONTROL 0x08
18
-#define LCD_CURSORSHIFT 0x10
19
-#define LCD_FUNCTIONSET 0x20
20
-#define LCD_SETCGRAMADDR 0x40
21
-#define LCD_SETDDRAMADDR 0x80
22
-
23
-// flags for display entry mode
24
-#define LCD_ENTRYRIGHT 0x00
25
-#define LCD_ENTRYLEFT 0x02
26
-#define LCD_ENTRYSHIFTINCREMENT 0x01
27
-#define LCD_ENTRYSHIFTDECREMENT 0x00
28
-
29
-// flags for display on/off control
30
-#define LCD_DISPLAYON 0x04
31
-#define LCD_DISPLAYOFF 0x00
32
-#define LCD_CURSORON 0x02
33
-#define LCD_CURSOROFF 0x00
34
-#define LCD_BLINKON 0x01
35
-#define LCD_BLINKOFF 0x00
36
-
37
-// flags for display/cursor shift
38
-#define LCD_DISPLAYMOVE 0x08
39
-#define LCD_CURSORMOVE 0x00
40
-#define LCD_MOVERIGHT 0x04
41
-#define LCD_MOVELEFT 0x00
42
-
43
-// flags for function set
44
-#define LCD_8BITMODE 0x10
45
-#define LCD_4BITMODE 0x00
46
-#define LCD_2LINE 0x08
47
-#define LCD_1LINE 0x00
48
-#define LCD_5x10DOTS 0x04
49
-#define LCD_5x8DOTS 0x00
50
-
51
-// enum for 
52
-#define LCD_DRAM_Normal 0x00
53
-#define LCD_DRAM_WH1601 0x01
54
-
55
-
56
-class LiquidCrystalRus : public Print {
57
-public:
58
-  LiquidCrystalRus(uint8_t rs, uint8_t enable,
59
-		uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,
60
-		uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7);
61
-  LiquidCrystalRus(uint8_t rs, uint8_t rw, uint8_t enable,
62
-		uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,
63
-		uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7);
64
-  LiquidCrystalRus(uint8_t rs, uint8_t rw, uint8_t enable,
65
-		uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3);
66
-  LiquidCrystalRus(uint8_t rs, uint8_t enable,
67
-		uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3);
68
-
69
-  void init(uint8_t fourbitmode, uint8_t rs, uint8_t rw, uint8_t enable,
70
-	    uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,
71
-	    uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7);
72
-    
73
-  void begin(uint8_t cols, uint8_t rows, uint8_t charsize = LCD_5x8DOTS);
74
-
75
-  void clear();
76
-  void home();
77
-
78
-  void noDisplay();
79
-  void display();
80
-  void noBlink();
81
-  void blink();
82
-  void noCursor();
83
-  void cursor();
84
-  void scrollDisplayLeft();
85
-  void scrollDisplayRight();
86
-  void leftToRight();
87
-  void rightToLeft();
88
-  void autoscroll();
89
-  void noAutoscroll();
90
-
91
-  void createChar(uint8_t, uint8_t[]);
92
-  void setCursor(uint8_t, uint8_t);
93
- 
94
-#if defined(ARDUINO) && ARDUINO >= 100
95
-  virtual size_t write(uint8_t);
96
-  using Print::write;
97
-#else
98
-  virtual void write(uint8_t);
99
-#endif
100
-
101
-  void command(uint8_t);
102
-
103
-  void setDRAMModel(uint8_t);
104
-
105
-private:
106
-  void send(uint8_t, uint8_t);
107
-  void writeNbits(uint8_t, uint8_t);
108
-  uint8_t recv(uint8_t);
109
-  uint8_t readNbits(uint8_t); 
110
-  void pulseEnable();
111
-
112
-  uint8_t _rs_pin; // LOW: command.  HIGH: character.
113
-  uint8_t _rw_pin; // LOW: write to LCD.  HIGH: read from LCD.
114
-  uint8_t _enable_pin; // activated by a HIGH pulse.
115
-  uint8_t _data_pins[8];
116
-
117
-  uint8_t _displayfunction;
118
-  uint8_t _displaycontrol;
119
-  uint8_t _displaymode;
120
-
121
-  uint8_t _initialized;
122
-
123
-  uint8_t _numlines,_currline;
124
-
125
-  uint8_t _dram_model;
126
-  uint8_t utf_hi_char; // UTF-8 high part
127
-};
128
-
129
-#endif

+ 157
- 0
Marlin/dogm_font_data_6x9_marlin.h View File

@@ -0,0 +1,157 @@
1
+/*
2
+  Fontname: -Misc-Fixed-Medium-R-Normal--9-90-75-75-C-60-ISO10646-1
3
+  Copyright: Public domain font.  Share and enjoy.
4
+  Capital A Height: 6, '1' Height: 6
5
+  Calculated Max Values w= 6 h= 9 x= 2 y= 7 dx= 6 dy= 0 ascent= 7 len= 9
6
+  Font Bounding box     w= 6 h= 9 x= 0 y=-2
7
+  Calculated Min Values           x= 0 y=-2 dx= 0 dy= 0
8
+  Pure Font   ascent = 6 descent=-2
9
+  X Font      ascent = 6 descent=-2
10
+  Max Font    ascent = 7 descent=-2
11
+*/
12
+#include <utility/u8g.h>
13
+const u8g_fntpgm_uint8_t u8g_font_6x9[2300] U8G_SECTION(".progmem.u8g_font_6x9") = {
14
+  0,6,9,0,254,6,1,137,2,254,32,255,254,7,254,6,
15
+  254,0,0,0,6,0,7,1,6,6,6,2,0,128,128,128,
16
+  128,0,128,3,3,3,6,1,3,160,160,160,5,7,7,6,
17
+  0,255,80,80,248,80,248,80,80,5,9,9,6,0,254,32,
18
+  112,168,160,112,40,168,112,32,6,8,8,6,0,255,64,168,
19
+  72,16,32,72,84,8,5,7,7,6,0,255,96,144,144,96,
20
+  152,144,104,1,3,3,6,2,3,128,128,128,2,7,7,6,
21
+  2,255,64,128,128,128,128,128,64,2,7,7,6,2,255,128,
22
+  64,64,64,64,64,128,5,5,5,6,0,0,136,80,248,80,
23
+  136,5,5,5,6,0,0,32,32,248,32,32,2,4,4,6,
24
+  2,254,192,64,64,128,5,1,1,6,0,2,248,2,2,2,
25
+  6,2,0,192,192,4,6,6,6,1,0,16,16,32,64,128,
26
+  128,4,6,6,6,1,0,96,144,144,144,144,96,3,6,6,
27
+  6,1,0,64,192,64,64,64,224,4,6,6,6,1,0,96,
28
+  144,16,32,64,240,4,6,6,6,1,0,240,32,96,16,16,
29
+  224,5,6,6,6,0,0,16,48,80,144,248,16,4,6,6,
30
+  6,1,0,240,128,224,16,16,224,4,6,6,6,1,0,96,
31
+  128,224,144,144,96,4,6,6,6,1,0,240,16,16,32,64,
32
+  64,4,6,6,6,1,0,96,144,96,144,144,96,4,6,6,
33
+  6,1,0,96,144,144,112,16,96,2,5,5,6,2,0,192,
34
+  192,0,192,192,2,7,7,6,2,254,192,192,0,192,64,64,
35
+  128,5,5,5,6,0,0,24,96,128,96,24,5,3,3,6,
36
+  0,1,248,0,248,5,5,5,6,0,0,192,48,8,48,192,
37
+  4,7,7,6,1,0,96,144,16,96,64,0,64,5,6,6,
38
+  6,0,0,112,144,168,176,128,112,5,6,6,6,0,0,32,
39
+  80,136,248,136,136,5,6,6,6,0,0,240,136,240,136,136,
40
+  240,4,6,6,6,1,0,96,144,128,128,144,96,4,6,6,
41
+  6,1,0,224,144,144,144,144,224,4,6,6,6,1,0,240,
42
+  128,224,128,128,240,4,6,6,6,1,0,240,128,224,128,128,
43
+  128,4,6,6,6,1,0,96,144,128,176,144,96,4,6,6,
44
+  6,1,0,144,144,240,144,144,144,3,6,6,6,1,0,224,
45
+  64,64,64,64,224,5,6,6,6,0,0,56,16,16,16,144,
46
+  96,4,6,6,6,1,0,144,160,192,160,144,144,4,6,6,
47
+  6,1,0,128,128,128,128,128,240,5,6,6,6,0,0,136,
48
+  216,168,168,136,136,4,6,6,6,1,0,144,208,176,144,144,
49
+  144,5,6,6,6,0,0,112,136,136,136,136,112,4,6,6,
50
+  6,1,0,224,144,144,224,128,128,4,7,7,6,1,255,96,
51
+  144,144,208,176,96,16,4,6,6,6,1,0,224,144,144,224,
52
+  144,144,4,6,6,6,1,0,96,144,64,32,144,96,5,6,
53
+  6,6,0,0,248,32,32,32,32,32,4,6,6,6,1,0,
54
+  144,144,144,144,144,96,4,6,6,6,1,0,144,144,144,240,
55
+  96,96,5,6,6,6,0,0,136,136,168,168,216,136,5,6,
56
+  6,6,0,0,136,80,32,32,80,136,5,6,6,6,0,0,
57
+  136,136,80,32,32,32,4,6,6,6,1,0,240,16,32,64,
58
+  128,240,3,6,6,6,1,0,224,128,128,128,128,224,4,6,
59
+  6,6,1,0,128,128,64,32,16,16,3,6,6,6,1,0,
60
+  224,32,32,32,32,224,5,3,3,6,0,3,32,80,136,5,
61
+  1,1,6,0,254,248,2,2,2,6,2,4,128,64,4,4,
62
+  4,6,1,0,112,144,144,112,4,6,6,6,1,0,128,128,
63
+  224,144,144,224,4,4,4,6,1,0,112,128,128,112,4,6,
64
+  6,6,1,0,16,16,112,144,144,112,4,4,4,6,1,0,
65
+  96,176,192,112,4,6,6,6,1,0,32,80,64,224,64,64,
66
+  4,6,6,6,1,254,96,144,144,112,16,96,4,6,6,6,
67
+  1,0,128,128,224,144,144,144,3,6,6,6,1,0,64,0,
68
+  192,64,64,224,3,8,8,6,1,254,32,0,96,32,32,32,
69
+  160,64,4,6,6,6,1,0,128,128,160,192,160,144,3,6,
70
+  6,6,1,0,192,64,64,64,64,224,5,4,4,6,0,0,
71
+  208,168,168,136,4,4,4,6,1,0,224,144,144,144,4,4,
72
+  4,6,1,0,96,144,144,96,4,6,6,6,1,254,224,144,
73
+  144,224,128,128,4,6,6,6,1,254,112,144,144,112,16,16,
74
+  4,4,4,6,1,0,160,208,128,128,4,4,4,6,1,0,
75
+  112,192,48,224,4,6,6,6,1,0,64,64,224,64,80,32,
76
+  4,4,4,6,1,0,144,144,144,112,4,4,4,6,1,0,
77
+  144,144,96,96,5,4,4,6,0,0,136,168,168,80,4,4,
78
+  4,6,1,0,144,96,96,144,4,6,6,6,1,254,144,144,
79
+  144,112,144,96,4,4,4,6,1,0,240,32,64,240,3,7,
80
+  7,6,1,0,32,64,64,128,64,64,32,1,7,7,6,2,
81
+  255,128,128,128,128,128,128,128,3,7,7,6,1,0,128,64,
82
+  64,32,64,64,128,4,2,2,6,1,3,80,160,255,255,255,
83
+  255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
84
+  255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,
85
+  0,6,0,7,1,6,6,6,2,0,128,0,128,128,128,128,
86
+  4,6,6,6,1,255,32,112,160,160,112,32,5,7,7,6,
87
+  0,255,48,72,64,240,64,64,248,5,5,5,6,0,0,168,
88
+  80,136,80,168,5,6,6,6,0,0,136,80,248,32,248,32,
89
+  1,7,7,6,2,255,128,128,128,0,128,128,128,4,7,7,
90
+  6,1,255,112,128,96,144,96,16,224,3,1,1,6,1,5,
91
+  160,6,7,7,6,0,0,120,132,148,164,148,132,120,3,5,
92
+  5,6,1,1,96,160,96,0,224,5,5,5,6,0,0,40,
93
+  80,160,80,40,4,3,3,6,1,0,240,16,16,4,1,1,
94
+  6,1,2,240,6,7,7,6,0,0,120,132,180,164,164,132,
95
+  120,4,1,1,6,1,5,240,4,3,3,6,1,2,96,144,
96
+  96,5,7,7,6,0,255,32,32,248,32,32,0,248,3,5,
97
+  5,6,1,1,64,160,32,64,224,3,5,5,6,1,1,192,
98
+  32,64,32,192,2,2,2,6,2,4,64,128,4,5,5,6,
99
+  1,255,144,144,176,208,128,5,6,6,6,0,0,120,232,232,
100
+  104,40,40,1,1,1,6,2,2,128,2,2,2,6,2,254,
101
+  64,128,3,5,5,6,1,1,64,192,64,64,224,3,5,5,
102
+  6,1,1,64,160,64,0,224,5,5,5,6,0,0,160,80,
103
+  40,80,160,5,8,8,6,0,255,64,192,64,80,112,48,120,
104
+  16,5,8,8,6,0,255,64,192,64,80,104,8,16,56,5,
105
+  8,8,6,0,255,192,32,64,48,240,48,120,16,4,7,7,
106
+  6,1,0,32,0,32,96,128,144,96,5,7,7,6,0,0,
107
+  64,32,32,80,112,136,136,5,7,7,6,0,0,16,32,32,
108
+  80,112,136,136,5,7,7,6,0,0,32,80,32,80,112,136,
109
+  136,5,7,7,6,0,0,40,80,32,80,112,136,136,5,7,
110
+  7,6,0,0,80,0,32,80,112,136,136,5,7,7,6,0,
111
+  0,32,80,32,80,112,136,136,5,6,6,6,0,0,120,160,
112
+  240,160,160,184,4,8,8,6,1,254,96,144,128,128,144,96,
113
+  32,64,4,7,7,6,1,0,64,32,240,128,224,128,240,4,
114
+  7,7,6,1,0,32,64,240,128,224,128,240,4,7,7,6,
115
+  1,0,32,80,240,128,224,128,240,4,7,7,6,1,0,80,
116
+  0,240,128,224,128,240,3,7,7,6,1,0,128,64,224,64,
117
+  64,64,224,3,7,7,6,1,0,32,64,224,64,64,64,224,
118
+  3,7,7,6,1,0,64,160,224,64,64,64,224,3,7,7,
119
+  6,1,0,160,0,224,64,64,64,224,5,6,6,6,0,0,
120
+  112,72,232,72,72,112,4,7,7,6,1,0,80,160,144,208,
121
+  176,144,144,4,7,7,6,1,0,64,32,96,144,144,144,96,
122
+  4,7,7,6,1,0,32,64,96,144,144,144,96,4,7,7,
123
+  6,1,0,32,80,96,144,144,144,96,4,7,7,6,1,0,
124
+  80,160,96,144,144,144,96,4,7,7,6,1,0,80,0,96,
125
+  144,144,144,96,5,5,5,6,0,0,136,80,32,80,136,4,
126
+  8,8,6,1,255,16,112,176,176,208,208,224,128,4,7,7,
127
+  6,1,0,64,32,144,144,144,144,96,4,7,7,6,1,0,
128
+  32,64,144,144,144,144,96,4,7,7,6,1,0,32,80,144,
129
+  144,144,144,96,4,7,7,6,1,0,80,0,144,144,144,144,
130
+  96,5,7,7,6,0,0,16,32,136,80,32,32,32,4,6,
131
+  6,6,1,0,128,224,144,144,224,128,4,6,6,6,1,0,
132
+  96,144,160,160,144,160,4,7,7,6,1,0,64,32,0,112,
133
+  144,144,112,4,7,7,6,1,0,32,64,0,112,144,144,112,
134
+  4,7,7,6,1,0,32,80,0,112,144,144,112,4,7,7,
135
+  6,1,0,80,160,0,112,144,144,112,4,6,6,6,1,0,
136
+  80,0,112,144,144,112,4,7,7,6,1,0,32,80,32,112,
137
+  144,144,112,5,4,4,6,0,0,112,168,176,120,4,6,6,
138
+  6,1,254,112,128,128,112,32,64,4,7,7,6,1,0,64,
139
+  32,0,96,176,192,112,4,7,7,6,1,0,32,64,0,96,
140
+  176,192,112,4,7,7,6,1,0,32,80,0,96,176,192,112,
141
+  4,6,6,6,1,0,80,0,96,176,192,112,3,7,7,6,
142
+  1,0,128,64,0,192,64,64,224,3,7,7,6,1,0,32,
143
+  64,0,192,64,64,224,3,7,7,6,1,0,64,160,0,192,
144
+  64,64,224,3,6,6,6,1,0,160,0,192,64,64,224,4,
145
+  7,7,6,1,0,48,96,16,112,144,144,96,4,7,7,6,
146
+  1,0,80,160,0,224,144,144,144,4,7,7,6,1,0,64,
147
+  32,0,96,144,144,96,4,7,7,6,1,0,32,64,0,96,
148
+  144,144,96,4,7,7,6,1,0,32,80,0,96,144,144,96,
149
+  4,7,7,6,1,0,80,160,0,96,144,144,96,4,6,6,
150
+  6,1,0,80,0,96,144,144,96,5,5,5,6,0,0,32,
151
+  0,248,0,32,4,4,4,6,1,0,112,176,208,224,4,7,
152
+  7,6,1,0,64,32,0,144,144,144,112,4,7,7,6,1,
153
+  0,32,64,0,144,144,144,112,4,7,7,6,1,0,32,80,
154
+  0,144,144,144,112,4,6,6,6,1,0,80,0,144,144,144,
155
+  112,4,9,9,6,1,254,32,64,0,144,144,144,112,144,96,
156
+  4,8,8,6,1,254,128,128,224,144,144,224,128,128,4,8,
157
+  8,6,1,254,80,0,144,144,144,112,144,96};

+ 171
- 0
Marlin/dogm_font_data_HD44780_C.h View File

@@ -0,0 +1,171 @@
1
+/*
2
+  Fontname: HD44780_C v1.2
3
+  Copyright: A. Hardtung, public domain
4
+  Capital A Height: 7, '1' Height: 7
5
+  Calculated Max Values w= 5 h= 8 x= 2 y= 7 dx= 6 dy= 0 ascent= 8 len= 8
6
+  Font Bounding box     w= 6 h= 9 x= 0 y=-2
7
+  Calculated Min Values           x= 0 y=-1 dx= 0 dy= 0
8
+  Pure Font   ascent = 7 descent=-1
9
+  X Font      ascent = 7 descent=-1
10
+  Max Font    ascent = 8 descent=-1
11
+*/
12
+#include <utility/u8g.h>
13
+const u8g_fntpgm_uint8_t HD44780_C_5x7[2522] U8G_SECTION(".progmem.HD44780_C_5x7") = {
14
+  0,6,9,0,254,7,1,145,3,34,32,255,255,8,255,7,
15
+  255,0,0,0,6,0,0,1,7,7,6,2,0,128,128,128,
16
+  128,128,0,128,3,2,2,6,1,5,160,160,5,7,7,6,
17
+  0,0,80,80,248,80,248,80,80,5,7,7,6,0,0,32,
18
+  120,160,112,40,240,32,5,7,7,6,0,0,192,200,16,32,
19
+  64,152,24,5,7,7,6,0,0,96,144,160,64,168,144,104,
20
+  2,3,3,6,1,4,192,64,128,3,7,7,6,1,0,32,
21
+  64,128,128,128,64,32,3,7,7,6,1,0,128,64,32,32,
22
+  32,64,128,5,5,5,6,0,1,32,168,112,168,32,5,5,
23
+  5,6,0,1,32,32,248,32,32,2,3,3,6,2,255,192,
24
+  64,128,5,1,1,6,0,3,248,2,2,2,6,2,0,192,
25
+  192,5,5,5,6,0,1,8,16,32,64,128,5,7,7,6,
26
+  0,0,112,136,152,168,200,136,112,3,7,7,6,1,0,64,
27
+  192,64,64,64,64,224,5,7,7,6,0,0,112,136,8,112,
28
+  128,128,248,5,7,7,6,0,0,248,16,32,16,8,8,240,
29
+  5,7,7,6,0,0,16,48,80,144,248,16,16,5,7,7,
30
+  6,0,0,248,128,240,8,8,136,112,5,7,7,6,0,0,
31
+  48,64,128,240,136,136,112,5,7,7,6,0,0,248,8,16,
32
+  32,32,32,32,5,7,7,6,0,0,112,136,136,112,136,136,
33
+  112,5,7,7,6,0,0,112,136,136,120,8,16,96,2,5,
34
+  5,6,2,0,192,192,0,192,192,2,6,6,6,2,255,192,
35
+  192,0,192,64,128,4,7,7,6,0,0,16,32,64,128,64,
36
+  32,16,5,3,3,6,0,2,248,0,248,4,7,7,6,1,
37
+  0,128,64,32,16,32,64,128,5,7,7,6,0,0,112,136,
38
+  8,16,32,0,32,5,6,6,6,0,0,112,136,8,104,168,
39
+  112,5,7,7,6,0,0,112,136,136,248,136,136,136,5,7,
40
+  7,6,0,0,240,136,136,240,136,136,240,5,7,7,6,0,
41
+  0,112,136,128,128,128,136,112,5,7,7,6,0,0,224,144,
42
+  136,136,136,144,224,5,7,7,6,0,0,248,128,128,240,128,
43
+  128,248,5,7,7,6,0,0,248,128,128,240,128,128,128,5,
44
+  7,7,6,0,0,112,136,128,184,136,136,112,5,7,7,6,
45
+  0,0,136,136,136,248,136,136,136,1,7,7,6,2,0,128,
46
+  128,128,128,128,128,128,5,7,7,6,0,0,56,16,16,16,
47
+  16,144,96,5,7,7,6,0,0,136,144,160,192,160,144,136,
48
+  5,7,7,6,0,0,128,128,128,128,128,128,248,5,7,7,
49
+  6,0,0,136,216,168,136,136,136,136,5,7,7,6,0,0,
50
+  136,136,200,168,152,136,136,5,7,7,6,0,0,112,136,136,
51
+  136,136,136,112,5,7,7,6,0,0,240,136,136,240,128,128,
52
+  128,5,7,7,6,0,0,112,136,136,136,168,144,104,5,7,
53
+  7,6,0,0,240,136,136,240,160,144,136,5,7,7,6,0,
54
+  0,120,128,128,112,8,8,240,5,7,7,6,0,0,248,32,
55
+  32,32,32,32,32,5,7,7,6,0,0,136,136,136,136,136,
56
+  136,112,5,7,7,6,0,0,136,136,136,136,136,80,32,5,
57
+  7,7,6,0,0,136,136,136,136,136,168,80,5,7,7,6,
58
+  0,0,136,136,80,32,80,136,136,5,7,7,6,0,0,136,
59
+  136,136,80,32,32,32,5,7,7,6,0,0,248,8,16,32,
60
+  64,128,248,3,7,7,6,1,0,224,128,128,128,128,128,224,
61
+  5,7,7,6,0,0,32,112,160,160,168,112,32,3,7,7,
62
+  6,1,0,224,32,32,32,32,32,224,5,3,3,6,0,4,
63
+  32,80,136,5,1,1,6,0,0,248,2,2,2,6,2,5,
64
+  128,64,5,5,5,6,0,0,112,8,120,136,120,5,7,7,
65
+  6,0,0,128,128,176,200,136,136,240,5,5,5,6,0,0,
66
+  112,128,128,136,112,5,7,7,6,0,0,8,8,104,152,136,
67
+  136,120,5,5,5,6,0,0,112,136,248,128,112,5,7,7,
68
+  6,0,0,48,72,224,64,64,64,64,5,6,6,6,0,255,
69
+  112,136,136,120,8,112,5,7,7,6,0,0,128,128,176,200,
70
+  136,136,136,1,7,7,6,2,0,128,0,128,128,128,128,128,
71
+  3,8,8,6,1,255,32,0,32,32,32,32,160,64,4,7,
72
+  7,6,0,0,128,128,144,160,192,160,144,3,7,7,6,1,
73
+  0,192,64,64,64,64,64,224,5,5,5,6,0,0,208,168,
74
+  168,168,168,5,5,5,6,0,0,176,200,136,136,136,5,5,
75
+  5,6,0,0,112,136,136,136,112,5,6,6,6,0,255,240,
76
+  136,136,240,128,128,5,6,6,6,0,255,120,136,136,120,8,
77
+  8,5,5,5,6,0,0,176,200,128,128,128,5,5,5,6,
78
+  0,0,112,128,112,8,240,5,7,7,6,0,0,64,64,224,
79
+  64,64,72,48,5,5,5,6,0,0,136,136,136,152,104,5,
80
+  5,5,6,0,0,136,136,136,80,32,5,5,5,6,0,0,
81
+  136,136,168,168,80,5,5,5,6,0,0,136,80,32,80,136,
82
+  5,6,6,6,0,255,136,136,136,120,8,112,5,5,5,6,
83
+  0,0,248,16,32,64,248,5,5,5,6,0,2,184,168,168,
84
+  168,184,5,5,5,6,0,2,184,136,184,160,184,5,5,5,
85
+  6,0,2,184,160,184,136,184,5,6,6,6,0,1,8,40,
86
+  72,248,64,32,5,5,5,6,0,0,56,112,224,136,240,0,
87
+  0,0,6,0,0,0,0,0,6,0,0,0,0,0,6,0,
88
+  0,0,0,0,6,0,0,0,0,0,6,0,0,0,0,0,
89
+  6,0,0,0,0,0,6,0,0,0,0,0,6,0,0,0,
90
+  0,0,6,0,0,0,0,0,6,0,0,0,0,0,6,0,
91
+  0,0,0,0,6,0,0,0,0,0,6,0,0,0,0,0,
92
+  6,0,0,0,0,0,6,0,0,0,0,0,6,0,0,0,
93
+  0,0,6,0,0,0,0,0,6,0,0,0,0,0,6,0,
94
+  0,0,0,0,6,0,0,0,0,0,6,0,0,0,0,0,
95
+  6,0,0,0,0,0,6,0,0,0,0,0,6,0,0,0,
96
+  0,0,6,0,0,0,0,0,6,0,0,0,0,0,6,0,
97
+  0,0,0,0,6,0,0,0,0,0,6,0,0,0,0,0,
98
+  6,0,0,0,0,0,6,0,0,0,0,0,6,0,0,5,
99
+  7,7,6,0,0,248,136,128,240,136,136,240,5,7,7,6,
100
+  0,0,248,136,128,128,128,128,128,5,7,7,6,0,0,80,
101
+  0,248,128,240,128,248,5,7,7,6,0,0,168,168,168,112,
102
+  168,168,168,5,7,7,6,0,0,240,8,8,112,8,8,240,
103
+  5,7,7,6,0,0,136,136,152,168,200,136,136,5,8,8,
104
+  6,0,0,80,32,136,152,168,168,200,136,5,7,7,6,0,
105
+  0,120,40,40,40,40,168,72,5,7,7,6,0,0,248,136,
106
+  136,136,136,136,136,5,7,7,6,0,0,136,136,136,80,32,
107
+  64,128,5,7,7,6,0,0,32,112,168,168,168,112,32,5,
108
+  7,7,6,0,0,136,136,136,120,8,8,8,5,7,7,6,
109
+  0,0,168,168,168,168,168,168,248,5,7,7,6,0,0,192,
110
+  64,64,112,72,72,112,5,7,7,6,0,0,136,136,136,200,
111
+  168,168,200,5,7,7,6,0,0,112,136,8,56,8,136,112,
112
+  5,7,7,6,0,0,144,168,168,232,168,168,144,5,7,7,
113
+  6,0,0,120,136,136,120,40,72,136,5,7,7,6,0,0,
114
+  24,96,128,240,136,136,112,4,5,5,6,0,0,224,144,224,
115
+  144,224,5,5,5,6,0,0,248,136,128,128,128,5,7,7,
116
+  6,0,0,80,0,112,136,248,128,112,5,5,5,6,0,0,
117
+  168,168,112,168,168,5,5,5,6,0,0,240,8,48,8,240,
118
+  5,5,5,6,0,0,136,152,168,200,136,5,7,7,6,0,
119
+  0,80,32,136,152,168,200,136,4,5,5,6,0,0,144,160,
120
+  192,160,144,5,5,5,6,0,0,248,40,40,168,72,5,5,
121
+  5,6,0,0,136,216,168,136,136,5,5,5,6,0,0,136,
122
+  136,248,136,136,5,5,5,6,0,0,248,136,136,136,136,5,
123
+  5,5,6,0,0,248,32,32,32,32,5,5,5,6,0,0,
124
+  136,136,120,8,8,5,5,5,6,0,0,168,168,168,168,248,
125
+  5,5,5,6,0,0,192,64,112,72,112,5,5,5,6,0,
126
+  0,136,136,200,168,200,4,5,5,6,0,0,128,128,224,144,
127
+  224,5,5,5,6,0,0,112,136,56,136,112,5,5,5,6,
128
+  0,0,144,168,232,168,144,5,5,5,6,0,0,120,136,120,
129
+  40,72,5,5,5,6,0,1,32,72,144,72,32,5,5,5,
130
+  6,0,1,32,144,72,144,32,5,3,3,6,0,0,72,144,
131
+  216,5,3,3,6,0,4,216,72,144,5,7,7,6,0,0,
132
+  144,208,176,144,56,40,56,5,7,7,6,0,0,32,0,32,
133
+  64,128,136,112,5,7,7,6,0,0,24,32,32,112,32,32,
134
+  192,5,7,7,6,0,0,32,80,64,240,64,64,120,1,2,
135
+  2,6,2,0,128,128,1,4,4,6,2,0,128,128,128,128,
136
+  3,5,5,6,1,0,160,160,160,0,224,3,5,5,6,1,
137
+  0,160,160,160,0,160,5,7,7,6,0,0,160,0,232,16,
138
+  32,64,128,5,5,5,6,0,1,216,112,32,112,216,5,7,
139
+  7,6,0,0,160,64,168,16,32,64,128,3,6,6,6,1,
140
+  1,224,64,64,64,64,224,5,6,6,6,0,1,248,80,80,
141
+  80,80,248,5,7,7,6,0,0,32,112,168,32,32,32,32,
142
+  5,7,7,6,0,0,32,32,32,32,168,112,32,5,7,7,
143
+  6,0,0,128,144,176,248,176,144,128,5,7,7,6,0,0,
144
+  8,72,104,248,104,72,8,5,7,7,6,0,0,128,136,168,
145
+  248,168,136,128,5,7,7,6,0,0,128,224,136,16,32,64,
146
+  128,2,2,2,6,2,2,192,192,5,8,8,6,0,255,120,
147
+  40,40,40,72,136,248,136,5,8,8,6,0,255,136,136,136,
148
+  136,136,136,248,8,5,8,8,6,0,255,168,168,168,168,168,
149
+  168,248,8,5,6,6,6,0,255,120,40,72,136,248,136,5,
150
+  7,7,6,0,255,32,32,112,168,168,112,32,5,6,6,6,
151
+  0,255,136,136,136,136,248,8,5,6,6,6,0,255,168,168,
152
+  168,168,248,8,2,2,2,6,2,6,64,128,3,1,1,6,
153
+  1,7,160,5,2,2,6,0,6,72,176,5,8,8,6,0,
154
+  0,16,32,0,112,136,248,128,112,5,6,6,6,0,255,112,
155
+  128,136,112,32,96,3,7,7,6,1,0,160,0,160,160,160,
156
+  32,192,5,6,6,6,0,1,32,112,112,112,248,32,5,5,
157
+  5,6,0,1,80,0,136,0,80,5,5,5,6,0,1,112,
158
+  136,136,136,112,5,7,7,6,0,0,136,144,168,88,184,8,
159
+  8,5,7,7,6,0,0,136,144,184,72,184,8,56,5,7,
160
+  7,6,0,0,136,144,184,72,152,32,56,5,8,8,6,0,
161
+  0,192,64,192,72,216,56,8,8,5,7,7,6,0,0,136,
162
+  248,136,248,136,248,136,4,5,5,6,0,2,192,0,48,0,
163
+  96,5,8,8,6,0,0,64,160,224,168,8,40,120,32,5,
164
+  8,8,6,0,0,64,112,64,120,64,112,64,224,5,8,8,
165
+  6,0,0,32,112,32,248,32,112,32,112,5,7,7,6,0,
166
+  0,104,0,232,0,104,16,56,5,8,8,6,0,0,16,112,
167
+  16,240,16,112,16,56,5,7,7,6,0,1,32,112,32,248,
168
+  32,112,32,5,8,8,6,0,0,16,144,80,48,80,144,16,
169
+  56,5,8,8,6,0,0,48,72,32,80,80,32,144,96,5,
170
+  7,7,6,0,0,120,168,168,120,40,40,40,5,8,8,6,
171
+  0,0,248,248,248,248,248,248,248,248};

+ 169
- 0
Marlin/dogm_font_data_HD44780_J.h View File

@@ -0,0 +1,169 @@
1
+/*
2
+  Fontname: HD44780_J
3
+  Copyright: A. Hardtung, public domain
4
+  Capital A Height: 7, '1' Height: 7
5
+  Calculated Max Values w= 6 h=10 x= 2 y= 8 dx= 6 dy= 0 ascent= 8 len= 8
6
+  Font Bounding box     w= 6 h= 9 x= 0 y=-2
7
+  Calculated Min Values           x= 0 y=-2 dx= 0 dy= 0
8
+  Pure Font   ascent = 7 descent=-1
9
+  X Font      ascent = 7 descent=-1
10
+  Max Font    ascent = 8 descent=-2
11
+*/
12
+#include <utility/u8g.h>
13
+const u8g_fntpgm_uint8_t HD44780_J_5x7[2491] U8G_SECTION(".progmem.HD44780_J_5x7") = {
14
+  0,6,9,0,254,7,1,145,3,34,32,255,255,8,254,7,
15
+  255,0,0,0,6,0,8,1,7,7,6,2,0,128,128,128,
16
+  128,128,0,128,3,2,2,6,1,5,160,160,5,7,7,6,
17
+  0,0,80,80,248,80,248,80,80,5,7,7,6,0,0,32,
18
+  120,160,112,40,240,32,5,7,7,6,0,0,192,200,16,32,
19
+  64,152,24,5,7,7,6,0,0,96,144,160,64,168,144,104,
20
+  2,3,3,6,1,4,192,64,128,3,7,7,6,1,0,32,
21
+  64,128,128,128,64,32,3,7,7,6,1,0,128,64,32,32,
22
+  32,64,128,5,5,5,6,0,1,32,168,112,168,32,5,5,
23
+  5,6,0,1,32,32,248,32,32,2,3,3,6,2,255,192,
24
+  64,128,5,1,1,6,0,3,248,2,2,2,6,2,0,192,
25
+  192,5,5,5,6,0,1,8,16,32,64,128,5,7,7,6,
26
+  0,0,112,136,152,168,200,136,112,3,7,7,6,1,0,64,
27
+  192,64,64,64,64,224,5,7,7,6,0,0,112,136,8,112,
28
+  128,128,248,5,7,7,6,0,0,248,16,32,16,8,8,240,
29
+  5,7,7,6,0,0,16,48,80,144,248,16,16,5,7,7,
30
+  6,0,0,248,128,240,8,8,136,112,5,7,7,6,0,0,
31
+  48,64,128,240,136,136,112,5,7,7,6,0,0,248,8,16,
32
+  32,32,32,32,5,7,7,6,0,0,112,136,136,112,136,136,
33
+  112,5,7,7,6,0,0,112,136,136,120,8,16,96,2,5,
34
+  5,6,2,0,192,192,0,192,192,2,6,6,6,2,255,192,
35
+  192,0,192,64,128,4,7,7,6,0,0,16,32,64,128,64,
36
+  32,16,5,3,3,6,0,2,248,0,248,4,7,7,6,1,
37
+  0,128,64,32,16,32,64,128,5,7,7,6,0,0,112,136,
38
+  8,16,32,0,32,5,6,6,6,0,0,112,136,8,104,168,
39
+  112,5,7,7,6,0,0,112,136,136,248,136,136,136,5,7,
40
+  7,6,0,0,240,136,136,240,136,136,240,5,7,7,6,0,
41
+  0,112,136,128,128,128,136,112,5,7,7,6,0,0,224,144,
42
+  136,136,136,144,224,5,7,7,6,0,0,248,128,128,240,128,
43
+  128,248,5,7,7,6,0,0,248,128,128,240,128,128,128,5,
44
+  7,7,6,0,0,112,136,128,184,136,136,112,5,7,7,6,
45
+  0,0,136,136,136,248,136,136,136,1,7,7,6,2,0,128,
46
+  128,128,128,128,128,128,5,7,7,6,0,0,56,16,16,16,
47
+  16,144,96,5,7,7,6,0,0,136,144,160,192,160,144,136,
48
+  5,7,7,6,0,0,128,128,128,128,128,128,248,5,7,7,
49
+  6,0,0,136,216,168,136,136,136,136,5,7,7,6,0,0,
50
+  136,136,200,168,152,136,136,5,7,7,6,0,0,112,136,136,
51
+  136,136,136,112,5,7,7,6,0,0,240,136,136,240,128,128,
52
+  128,5,7,7,6,0,0,112,136,136,136,168,144,104,5,7,
53
+  7,6,0,0,240,136,136,240,160,144,136,5,7,7,6,0,
54
+  0,120,128,128,112,8,8,240,5,7,7,6,0,0,248,32,
55
+  32,32,32,32,32,5,7,7,6,0,0,136,136,136,136,136,
56
+  136,112,5,7,7,6,0,0,136,136,136,136,136,80,32,5,
57
+  7,7,6,0,0,136,136,136,136,136,168,80,5,7,7,6,
58
+  0,0,136,136,80,32,80,136,136,5,7,7,6,0,0,136,
59
+  136,136,80,32,32,32,5,7,7,6,0,0,248,8,16,32,
60
+  64,128,248,3,7,7,6,1,0,224,128,128,128,128,128,224,
61
+  5,7,7,6,0,0,136,80,248,32,248,32,32,3,7,7,
62
+  6,1,0,224,32,32,32,32,32,224,5,3,3,6,0,4,
63
+  32,80,136,5,1,1,6,0,0,248,2,2,2,6,2,5,
64
+  128,64,5,5,5,6,0,0,112,8,120,136,120,5,7,7,
65
+  6,0,0,128,128,176,200,136,136,240,5,5,5,6,0,0,
66
+  112,128,128,136,112,5,7,7,6,0,0,8,8,104,152,136,
67
+  136,120,5,5,5,6,0,0,112,136,248,128,112,5,7,7,
68
+  6,0,0,48,72,224,64,64,64,64,5,6,6,6,0,255,
69
+  112,136,136,120,8,112,5,7,7,6,0,0,128,128,176,200,
70
+  136,136,136,1,7,7,6,2,0,128,0,128,128,128,128,128,
71
+  3,8,8,6,1,255,32,0,32,32,32,32,160,64,4,7,
72
+  7,6,0,0,128,128,144,160,192,160,144,3,7,7,6,1,
73
+  0,192,64,64,64,64,64,224,5,5,5,6,0,0,208,168,
74
+  168,168,168,5,5,5,6,0,0,176,200,136,136,136,5,5,
75
+  5,6,0,0,112,136,136,136,112,5,6,6,6,0,255,240,
76
+  136,136,240,128,128,5,6,6,6,0,255,120,136,136,120,8,
77
+  8,5,5,5,6,0,0,176,200,128,128,128,5,5,5,6,
78
+  0,0,112,128,112,8,240,5,7,7,6,0,0,64,64,224,
79
+  64,64,72,48,5,5,5,6,0,0,136,136,136,152,104,5,
80
+  5,5,6,0,0,136,136,136,80,32,5,5,5,6,0,0,
81
+  136,136,168,168,80,5,5,5,6,0,0,136,80,32,80,136,
82
+  5,6,6,6,0,255,136,136,136,120,8,112,5,5,5,6,
83
+  0,0,248,16,32,64,248,3,7,7,6,1,0,32,64,64,
84
+  128,64,64,32,1,7,7,6,2,0,128,128,128,128,128,128,
85
+  128,3,7,7,6,1,0,128,64,64,32,64,64,128,5,5,
86
+  5,6,0,1,32,16,248,16,32,5,5,5,6,0,1,32,
87
+  64,248,64,32,0,0,0,6,0,8,0,0,0,6,0,8,
88
+  0,0,0,6,0,8,0,0,0,6,0,8,0,0,0,6,
89
+  0,8,0,0,0,6,0,8,0,0,0,6,0,8,0,0,
90
+  0,6,0,8,0,0,0,6,0,8,0,0,0,6,0,8,
91
+  0,0,0,6,0,8,0,0,0,6,0,8,0,0,0,6,
92
+  0,8,0,0,0,6,0,8,0,0,0,6,0,8,0,0,
93
+  0,6,0,8,0,0,0,6,0,8,0,0,0,6,0,8,
94
+  0,0,0,6,0,8,0,0,0,6,0,8,0,0,0,6,
95
+  0,8,0,0,0,6,0,8,0,0,0,6,0,8,0,0,
96
+  0,6,0,8,0,0,0,6,0,8,0,0,0,6,0,8,
97
+  0,0,0,6,0,8,0,0,0,6,0,8,0,0,0,6,
98
+  0,8,0,0,0,6,0,8,0,0,0,6,0,8,0,0,
99
+  0,6,0,8,0,0,0,6,0,8,3,3,3,6,0,0,
100
+  224,160,224,3,4,4,6,2,3,224,128,128,128,3,4,4,
101
+  6,0,0,32,32,32,224,3,3,3,6,0,0,128,64,32,
102
+  2,2,2,6,1,2,192,192,5,6,6,6,0,0,248,8,
103
+  248,8,16,32,5,5,5,6,0,0,248,8,48,32,64,4,
104
+  5,5,6,0,0,16,32,96,160,32,5,5,5,6,0,0,
105
+  32,248,136,8,48,5,4,4,6,0,0,248,32,32,248,5,
106
+  5,5,6,0,0,16,248,48,80,144,5,5,5,6,0,0,
107
+  64,248,72,80,64,5,4,4,6,0,0,112,16,16,248,4,
108
+  5,5,6,0,0,240,16,240,16,240,5,4,4,6,0,0,
109
+  168,168,8,48,5,1,1,6,0,4,248,5,7,7,6,0,
110
+  0,248,8,40,48,32,32,64,5,7,7,6,0,0,8,16,
111
+  32,96,160,32,32,5,7,7,6,0,0,32,248,136,136,8,
112
+  16,32,5,6,6,6,0,0,248,32,32,32,32,248,5,7,
113
+  7,6,0,0,16,248,16,48,80,144,16,5,7,7,6,0,
114
+  0,64,248,72,72,72,72,144,5,7,7,6,0,0,32,248,
115
+  32,248,32,32,32,5,6,6,6,0,0,120,72,136,8,16,
116
+  96,5,7,7,6,0,0,64,120,144,16,16,16,32,5,6,
117
+  6,6,0,0,248,8,8,8,8,248,5,7,7,6,0,0,
118
+  80,248,80,80,16,32,64,5,6,6,6,0,0,192,8,200,
119
+  8,16,224,5,6,6,6,0,0,248,8,16,32,80,136,5,
120
+  7,7,6,0,0,64,248,72,80,64,64,56,5,6,6,6,
121
+  0,0,136,136,72,8,16,96,5,6,6,6,0,0,120,72,
122
+  168,24,16,96,5,7,7,6,0,0,16,224,32,248,32,32,
123
+  64,5,6,6,6,0,0,168,168,168,8,16,32,5,7,7,
124
+  6,0,0,112,0,248,32,32,32,64,3,7,7,6,1,0,
125
+  128,128,128,192,160,128,128,5,7,7,6,0,0,32,32,248,
126
+  32,32,64,128,5,6,6,6,0,0,112,0,0,0,0,248,
127
+  5,6,6,6,0,0,248,8,80,32,80,128,5,6,6,6,
128
+  0,1,32,248,16,32,112,168,3,7,7,6,1,0,32,32,
129
+  32,32,32,64,128,5,6,6,6,0,0,32,16,136,136,136,
130
+  136,5,7,7,6,0,0,128,128,248,128,128,128,120,5,6,
131
+  6,6,0,0,248,8,8,8,16,96,5,5,5,6,0,1,
132
+  64,160,16,8,8,5,7,7,6,0,0,32,248,32,32,168,
133
+  168,32,5,6,6,6,0,0,248,8,8,80,32,16,4,6,
134
+  6,6,1,0,224,0,224,0,224,16,5,6,6,6,0,0,
135
+  32,64,128,136,248,8,5,6,6,6,0,0,8,8,80,32,
136
+  80,128,5,6,6,6,0,0,248,64,248,64,64,56,5,7,
137
+  7,6,0,0,64,64,248,72,80,64,64,5,7,7,6,0,
138
+  0,112,16,16,16,16,16,248,5,6,6,6,0,0,248,8,
139
+  248,8,8,248,5,7,7,6,0,0,112,0,248,8,8,16,
140
+  32,4,7,7,6,0,0,144,144,144,144,16,32,64,5,6,
141
+  6,6,0,0,32,160,160,168,168,176,5,7,7,6,0,0,
142
+  128,128,128,136,144,160,192,5,6,6,6,0,0,248,136,136,
143
+  136,136,248,5,6,6,6,0,0,248,136,136,8,16,32,5,
144
+  6,6,6,0,0,192,0,8,8,16,224,4,3,3,6,0,
145
+  4,32,144,64,3,3,3,6,0,4,224,160,224,5,5,5,
146
+  6,0,1,72,168,144,144,104,5,7,7,6,0,0,80,0,
147
+  112,8,120,136,120,4,8,8,6,1,255,96,144,144,224,144,
148
+  144,224,128,5,5,5,6,0,0,112,128,96,136,112,5,6,
149
+  6,6,0,255,136,136,152,232,136,128,5,5,5,6,0,0,
150
+  120,160,144,136,112,5,7,7,6,0,254,48,72,136,136,240,
151
+  128,128,5,8,8,6,0,254,120,136,136,136,120,8,8,112,
152
+  5,5,5,6,0,1,56,32,32,160,64,4,3,3,6,0,
153
+  3,16,208,16,4,8,8,6,0,255,16,0,48,16,16,16,
154
+  144,96,3,3,3,6,0,4,160,64,160,5,7,7,6,0,
155
+  0,32,112,160,160,168,112,32,5,7,7,6,0,0,64,64,
156
+  224,64,224,64,120,5,7,7,6,0,0,112,0,176,200,136,
157
+  136,136,5,7,7,6,0,0,80,0,112,136,136,136,112,5,
158
+  7,7,6,0,255,176,200,136,136,240,128,128,5,7,7,6,
159
+  0,255,104,152,136,136,120,8,8,5,6,6,6,0,0,112,
160
+  136,248,136,136,112,5,3,3,6,0,2,88,168,208,5,5,
161
+  5,6,0,0,112,136,136,80,216,5,7,7,6,0,0,80,
162
+  0,136,136,136,152,104,5,7,7,6,0,0,248,128,64,32,
163
+  64,128,248,5,5,5,6,0,0,248,80,80,80,152,5,7,
164
+  7,6,0,0,248,0,136,80,32,80,136,5,7,7,6,0,
165
+  255,136,136,136,136,120,8,112,5,6,6,6,0,1,8,240,
166
+  32,248,32,32,5,5,5,6,0,0,248,64,120,72,136,5,
167
+  5,5,6,0,0,248,168,248,136,136,5,5,5,6,0,1,
168
+  32,0,248,0,32,0,0,0,6,0,8,6,10,10,6,0,
169
+  254,252,252,252,252,252,252,252,252,252,252};

+ 203
- 0
Marlin/dogm_font_data_HD44780_W.h View File

@@ -0,0 +1,203 @@
1
+/*
2
+  Fontname: HD44780_W
3
+  Copyright: A.Hardtung, public domain
4
+  Capital A Height: 7, '1' Height: 7
5
+  Calculated Max Values w= 5 h= 9 x= 2 y= 5 dx= 6 dy= 0 ascent= 8 len= 9
6
+  Font Bounding box     w= 6 h= 9 x= 0 y=-2
7
+  Calculated Min Values           x= 0 y=-1 dx= 0 dy= 0
8
+  Pure Font   ascent = 7 descent=-1
9
+  X Font      ascent = 7 descent=-1
10
+  Max Font    ascent = 8 descent=-1
11
+*/
12
+#include <utility/u8g.h>
13
+const u8g_fntpgm_uint8_t HD44780_W_5x7[3034] U8G_SECTION(".progmem.HD44780_W_5x7") = {
14
+  0,6,9,0,254,7,2,79,3,222,16,255,255,8,255,7,
15
+  255,4,7,7,6,0,0,16,48,112,240,112,48,16,4,7,
16
+  7,6,1,0,128,192,224,240,224,192,128,5,3,3,6,0,
17
+  4,216,72,144,5,3,3,6,0,4,216,144,72,5,7,7,
18
+  6,0,0,32,112,248,0,32,112,248,5,7,7,6,0,0,
19
+  248,112,32,0,248,112,32,5,5,5,6,0,1,112,248,248,
20
+  248,112,5,7,7,6,0,0,8,8,40,72,248,64,32,5,
21
+  7,7,6,0,0,32,112,168,32,32,32,32,5,7,7,6,
22
+  0,0,32,32,32,32,168,112,32,5,5,5,6,0,1,32,
23
+  64,248,64,32,5,5,5,6,0,1,32,16,248,16,32,5,
24
+  7,7,6,0,0,16,32,64,32,16,0,248,5,7,7,6,
25
+  0,0,64,32,16,32,64,0,248,5,5,5,6,0,1,32,
26
+  32,112,112,248,5,5,5,6,0,0,248,112,112,32,32,0,
27
+  0,0,6,0,0,1,7,7,6,2,0,128,128,128,128,128,
28
+  0,128,3,2,2,6,1,5,160,160,5,7,7,6,0,0,
29
+  80,80,248,80,248,80,80,5,7,7,6,0,0,32,120,160,
30
+  112,40,240,32,5,7,7,6,0,0,192,200,16,32,64,152,
31
+  24,5,7,7,6,0,0,96,144,160,64,168,144,104,2,3,
32
+  3,6,1,4,192,64,128,3,7,7,6,1,0,32,64,128,
33
+  128,128,64,32,3,7,7,6,1,0,128,64,32,32,32,64,
34
+  128,5,5,5,6,0,1,32,168,112,168,32,5,5,5,6,
35
+  0,1,32,32,248,32,32,2,3,3,6,2,255,192,64,128,
36
+  5,1,1,6,0,3,248,2,2,2,6,2,0,192,192,5,
37
+  5,5,6,0,1,8,16,32,64,128,5,7,7,6,0,0,
38
+  112,136,152,168,200,136,112,3,7,7,6,1,0,64,192,64,
39
+  64,64,64,224,5,7,7,6,0,0,112,136,8,112,128,128,
40
+  248,5,7,7,6,0,0,248,16,32,16,8,8,240,5,7,
41
+  7,6,0,0,16,48,80,144,248,16,16,5,7,7,6,0,
42
+  0,248,128,240,8,8,136,112,5,7,7,6,0,0,48,64,
43
+  128,240,136,136,112,5,7,7,6,0,0,248,8,16,32,32,
44
+  32,32,5,7,7,6,0,0,112,136,136,112,136,136,112,5,
45
+  7,7,6,0,0,112,136,136,120,8,16,96,2,5,5,6,
46
+  2,0,192,192,0,192,192,2,6,6,6,2,255,192,192,0,
47
+  192,64,128,4,7,7,6,0,0,16,32,64,128,64,32,16,
48
+  5,3,3,6,0,2,248,0,248,4,7,7,6,1,0,128,
49
+  64,32,16,32,64,128,5,7,7,6,0,0,112,136,8,16,
50
+  32,0,32,5,6,6,6,0,0,112,136,8,104,168,112,5,
51
+  7,7,6,0,0,112,136,136,248,136,136,136,5,7,7,6,
52
+  0,0,240,136,136,240,136,136,240,5,7,7,6,0,0,112,
53
+  136,128,128,128,136,112,5,7,7,6,0,0,224,144,136,136,
54
+  136,144,224,5,7,7,6,0,0,248,128,128,240,128,128,248,
55
+  5,7,7,6,0,0,248,128,128,240,128,128,128,5,7,7,
56
+  6,0,0,112,136,128,184,136,136,112,5,7,7,6,0,0,
57
+  136,136,136,248,136,136,136,1,7,7,6,2,0,128,128,128,
58
+  128,128,128,128,5,7,7,6,0,0,56,16,16,16,16,144,
59
+  96,5,7,7,6,0,0,136,144,160,192,160,144,136,5,7,
60
+  7,6,0,0,128,128,128,128,128,128,248,5,7,7,6,0,
61
+  0,136,216,168,136,136,136,136,5,7,7,6,0,0,136,136,
62
+  200,168,152,136,136,5,7,7,6,0,0,112,136,136,136,136,
63
+  136,112,5,7,7,6,0,0,240,136,136,240,128,128,128,5,
64
+  7,7,6,0,0,112,136,136,136,168,144,104,5,7,7,6,
65
+  0,0,240,136,136,240,160,144,136,5,7,7,6,0,0,120,
66
+  128,128,112,8,8,240,5,7,7,6,0,0,248,32,32,32,
67
+  32,32,32,5,7,7,6,0,0,136,136,136,136,136,136,112,
68
+  5,7,7,6,0,0,136,136,136,136,136,80,32,5,7,7,
69
+  6,0,0,136,136,136,136,136,168,80,5,7,7,6,0,0,
70
+  136,136,80,32,80,136,136,5,7,7,6,0,0,136,136,136,
71
+  80,32,32,32,5,7,7,6,0,0,248,8,16,32,64,128,
72
+  248,3,7,7,6,1,0,224,128,128,128,128,128,224,5,5,
73
+  5,6,0,1,128,64,32,16,8,3,7,7,6,1,0,224,
74
+  32,32,32,32,32,224,5,3,3,6,0,4,32,80,136,5,
75
+  1,1,6,0,0,248,2,2,2,6,2,5,128,64,5,5,
76
+  5,6,0,0,112,8,120,136,120,5,7,7,6,0,0,128,
77
+  128,176,200,136,136,240,5,5,5,6,0,0,112,128,128,136,
78
+  112,5,7,7,6,0,0,8,8,104,152,136,136,120,5,5,
79
+  5,6,0,0,112,136,248,128,112,5,7,7,6,0,0,48,
80
+  72,224,64,64,64,64,5,6,6,6,0,255,112,136,136,120,
81
+  8,112,5,7,7,6,0,0,128,128,176,200,136,136,136,1,
82
+  7,7,6,2,0,128,0,128,128,128,128,128,3,8,8,6,
83
+  1,255,32,0,32,32,32,32,160,64,4,7,7,6,0,0,
84
+  128,128,144,160,192,160,144,3,7,7,6,1,0,192,64,64,
85
+  64,64,64,224,5,5,5,6,0,0,208,168,168,168,168,5,
86
+  5,5,6,0,0,176,200,136,136,136,5,5,5,6,0,0,
87
+  112,136,136,136,112,5,6,6,6,0,255,240,136,136,240,128,
88
+  128,5,6,6,6,0,255,120,136,136,120,8,8,5,5,5,
89
+  6,0,0,176,200,128,128,128,5,5,5,6,0,0,112,128,
90
+  112,8,240,5,7,7,6,0,0,64,64,224,64,64,72,48,
91
+  5,5,5,6,0,0,136,136,136,152,104,5,5,5,6,0,
92
+  0,136,136,136,80,32,5,5,5,6,0,0,136,136,168,168,
93
+  80,5,5,5,6,0,0,136,80,32,80,136,5,6,6,6,
94
+  0,255,136,136,136,120,8,112,5,5,5,6,0,0,248,16,
95
+  32,64,248,3,7,7,6,1,0,32,64,64,128,64,64,32,
96
+  1,7,7,6,2,0,128,128,128,128,128,128,128,3,7,7,
97
+  6,1,0,128,64,64,32,64,64,128,5,6,6,6,0,1,
98
+  8,40,72,248,64,32,5,7,7,6,0,0,32,80,136,136,
99
+  136,136,248,5,7,7,6,0,0,248,136,128,240,136,136,240,
100
+  5,8,8,6,0,255,120,40,40,40,72,136,248,136,5,7,
101
+  7,6,0,0,168,168,168,112,168,168,168,5,7,7,6,0,
102
+  0,240,8,8,112,8,8,240,5,7,7,6,0,0,136,136,
103
+  152,168,200,136,136,5,8,8,6,0,0,80,32,136,152,168,
104
+  168,200,136,5,7,7,6,0,0,120,40,40,40,40,168,72,
105
+  5,7,7,6,0,0,248,136,136,136,136,136,136,5,7,7,
106
+  6,0,0,136,136,136,80,32,64,128,5,8,8,6,0,255,
107
+  136,136,136,136,136,136,248,8,5,7,7,6,0,0,136,136,
108
+  136,120,8,8,8,5,7,7,6,0,0,168,168,168,168,168,
109
+  168,248,5,8,8,6,0,255,168,168,168,168,168,168,248,8,
110
+  5,7,7,6,0,0,192,64,64,112,72,72,112,5,7,7,
111
+  6,0,0,136,136,136,200,168,168,200,5,7,7,6,0,0,
112
+  112,136,40,80,8,136,112,5,5,5,6,0,0,64,160,144,
113
+  144,104,5,7,7,6,0,0,32,48,40,40,32,224,224,5,
114
+  7,7,6,0,0,248,136,128,128,128,128,128,5,5,5,6,
115
+  0,0,248,80,80,80,152,5,7,7,6,0,0,248,128,64,
116
+  32,64,128,248,5,5,5,6,0,0,120,144,144,144,96,5,
117
+  7,7,6,0,0,48,40,56,40,200,216,24,5,6,6,6,
118
+  0,0,8,112,160,32,32,16,5,6,6,6,0,1,32,112,
119
+  112,112,248,32,5,7,7,6,0,0,112,136,136,248,136,136,
120
+  112,5,5,5,6,0,0,112,136,136,80,216,5,7,7,6,
121
+  0,0,48,72,32,80,136,136,112,5,3,3,6,0,2,88,
122
+  168,208,5,6,6,6,0,0,80,248,248,248,112,32,5,5,
123
+  5,6,0,0,112,128,96,136,112,5,7,7,6,0,0,112,
124
+  136,136,136,136,136,136,5,7,7,6,0,0,216,216,216,216,
125
+  216,216,216,1,7,7,6,2,0,128,0,128,128,128,128,128,
126
+  5,7,7,6,0,0,32,112,160,160,168,112,32,5,7,7,
127
+  6,0,0,48,64,64,224,64,80,168,5,5,5,6,0,0,
128
+  136,112,80,112,136,5,7,7,6,0,0,136,80,248,32,248,
129
+  32,32,1,7,7,6,2,0,128,128,128,0,128,128,128,5,
130
+  8,8,6,0,0,48,72,32,80,80,32,144,96,5,7,7,
131
+  6,0,0,24,32,32,112,32,32,192,5,7,7,6,0,0,
132
+  248,136,184,184,184,136,248,5,7,7,6,0,0,112,8,120,
133
+  136,120,0,248,5,5,5,6,0,1,40,80,160,80,40,5,
134
+  7,7,6,0,0,144,168,168,232,168,168,144,5,7,7,6,
135
+  0,0,120,136,136,120,40,72,136,5,7,7,6,0,0,248,
136
+  136,168,136,152,168,248,2,3,3,6,2,4,64,128,192,4,
137
+  5,5,6,0,3,96,144,144,144,96,5,7,7,6,0,0,
138
+  32,32,248,32,32,0,248,4,5,5,6,0,3,96,144,32,
139
+  64,240,3,5,5,6,0,3,224,32,224,32,224,5,8,8,
140
+  6,0,0,224,144,224,128,144,184,144,24,5,8,8,6,0,
141
+  255,136,136,136,136,152,232,128,128,5,7,7,6,0,0,120,
142
+  152,152,120,24,24,24,2,2,2,6,2,2,192,192,5,5,
143
+  5,6,0,0,80,136,168,168,80,3,5,5,6,0,3,64,
144
+  192,64,64,224,5,7,7,6,0,0,112,136,136,136,112,0,
145
+  248,5,5,5,6,0,1,160,80,40,80,160,5,7,7,6,
146
+  0,0,136,144,168,88,184,8,8,5,7,7,6,0,0,136,
147
+  144,184,72,152,32,56,5,8,8,6,0,0,192,64,192,72,
148
+  216,56,8,8,5,7,7,6,0,0,32,0,32,64,128,136,
149
+  112,5,8,8,6,0,0,64,32,32,80,136,248,136,136,5,
150
+  8,8,6,0,0,16,32,32,80,136,248,136,136,5,8,8,
151
+  6,0,0,32,80,0,112,136,248,136,136,5,8,8,6,0,
152
+  0,104,144,0,112,136,248,136,136,5,8,8,6,0,0,80,
153
+  0,32,80,136,248,136,136,5,8,8,6,0,0,32,80,32,
154
+  112,136,248,136,136,5,7,7,6,0,0,56,96,160,184,224,
155
+  160,184,5,8,8,6,0,255,112,136,128,128,136,112,32,96,
156
+  5,8,8,6,0,0,64,32,0,248,128,240,128,248,5,8,
157
+  8,6,0,0,8,16,0,248,128,240,128,248,5,8,8,6,
158
+  0,0,32,80,0,248,128,240,128,248,5,7,7,6,0,0,
159
+  80,0,248,128,240,128,248,3,8,8,6,1,0,128,64,0,
160
+  224,64,64,64,224,3,8,8,6,1,0,32,64,0,224,64,
161
+  64,64,224,3,8,8,6,1,0,64,160,0,224,64,64,64,
162
+  224,3,7,7,6,1,0,160,0,224,64,64,64,224,5,7,
163
+  7,6,0,0,112,72,72,232,72,72,112,5,8,8,6,0,
164
+  0,104,144,0,136,200,168,152,136,5,8,8,6,0,0,64,
165
+  32,112,136,136,136,136,112,5,8,8,6,0,0,16,32,112,
166
+  136,136,136,136,112,5,8,8,6,0,0,32,80,0,112,136,
167
+  136,136,112,5,8,8,6,0,0,104,144,0,112,136,136,136,
168
+  112,5,8,8,6,0,0,80,0,112,136,136,136,136,112,5,
169
+  5,5,6,0,1,136,80,32,80,136,5,7,7,6,0,0,
170
+  112,32,112,168,112,32,112,5,8,8,6,0,0,64,32,136,
171
+  136,136,136,136,112,5,8,8,6,0,0,16,32,136,136,136,
172
+  136,136,112,5,8,8,6,0,0,32,80,0,136,136,136,136,
173
+  112,5,8,8,6,0,0,80,0,136,136,136,136,136,112,5,
174
+  8,8,6,0,0,16,32,136,80,32,32,32,32,5,8,8,
175
+  6,0,0,192,64,112,72,72,112,64,224,5,7,7,6,0,
176
+  0,48,72,72,112,72,72,176,5,8,8,6,0,0,64,32,
177
+  0,112,8,120,136,120,5,8,8,6,0,0,16,32,0,112,
178
+  8,120,136,120,5,8,8,6,0,0,32,80,0,112,8,120,
179
+  136,120,5,8,8,6,0,0,104,144,0,112,8,120,136,120,
180
+  5,7,7,6,0,0,80,0,112,8,120,136,120,5,8,8,
181
+  6,0,0,32,80,32,112,8,120,136,120,5,6,6,6,0,
182
+  0,208,40,120,160,168,80,5,6,6,6,0,255,112,128,136,
183
+  112,32,96,5,8,8,6,0,0,64,32,0,112,136,248,128,
184
+  112,5,8,8,6,0,0,16,32,0,112,136,248,128,112,5,
185
+  8,8,6,0,0,32,80,0,112,136,248,128,112,5,7,7,
186
+  6,0,0,80,0,112,136,248,128,112,3,8,8,6,1,0,
187
+  128,64,0,64,192,64,64,224,3,8,8,6,1,0,32,64,
188
+  0,64,192,64,64,224,3,8,8,6,1,0,64,160,0,64,
189
+  192,64,64,224,3,7,7,6,1,0,160,0,64,192,64,64,
190
+  224,5,7,7,6,0,0,160,64,160,16,120,136,112,5,8,
191
+  8,6,0,0,104,144,0,176,200,136,136,136,5,8,8,6,
192
+  0,0,64,32,0,112,136,136,136,112,5,8,8,6,0,0,
193
+  16,32,0,112,136,136,136,112,5,8,8,6,0,0,32,80,
194
+  0,112,136,136,136,112,5,8,8,6,0,0,104,144,0,112,
195
+  136,136,136,112,5,7,7,6,0,0,80,0,112,136,136,136,
196
+  112,5,5,5,6,0,1,32,0,248,0,32,5,7,7,6,
197
+  0,0,16,32,112,168,112,32,64,5,8,8,6,0,0,64,
198
+  32,0,136,136,136,152,104,5,8,8,6,0,0,16,32,0,
199
+  136,136,136,152,104,5,8,8,6,0,0,32,80,0,136,136,
200
+  136,152,104,5,7,7,6,0,0,80,0,136,136,136,152,104,
201
+  5,9,9,6,0,255,16,32,0,136,136,136,248,8,112,4,
202
+  7,7,6,1,0,192,64,96,80,96,64,224,5,8,8,6,
203
+  0,255,80,0,136,136,136,248,8,112};

Marlin/dogm_font_data_ISO10646_1_Marlin.h → Marlin/dogm_font_data_ISO10646_1.h View File

@@ -1,17 +1,17 @@
1 1
 /*
2
-  Fontname: ISO10646-1-Marlin
2
+  Fontname: ISO10646-1
3 3
   Copyright: A.Hardtung, public domain
4 4
   Capital A Height: 7, '1' Height: 7
5
-  Calculated Max Values w= 5 h=10 x= 2 y= 7 dx= 6 dy= 0 ascent= 8 len= 9
5
+  Calculated Max Values w= 5 h= 9 x= 2 y= 7 dx= 6 dy= 0 ascent= 8 len= 9
6 6
   Font Bounding box     w= 6 h= 9 x= 0 y=-2
7
-  Calculated Min Values           x= 0 y=-2 dx= 0 dy= 0
7
+  Calculated Min Values           x= 0 y=-1 dx= 0 dy= 0
8 8
   Pure Font   ascent = 7 descent=-1
9 9
   X Font      ascent = 7 descent=-1
10
-  Max Font    ascent = 8 descent=-2
10
+  Max Font    ascent = 8 descent=-1
11 11
 */
12 12
 #include <utility/u8g.h>
13
-const u8g_fntpgm_uint8_t ISO10646_1_Marlin_5x7[2596] U8G_SECTION(".progmem.ISO10646_1_Marlin_5x7") = {
14
-  0,6,9,0,254,7,1,146,3,33,32,255,255,8,254,7,
13
+const u8g_fntpgm_uint8_t ISO10646_1_5x7[2592] U8G_SECTION(".progmem.ISO10646_1_5x7") = {
14
+  0,6,9,0,254,7,1,146,3,33,32,255,255,8,255,7,
15 15
   255,0,0,0,6,0,0,1,7,7,6,2,0,128,128,128,
16 16
   128,128,0,128,3,2,2,6,1,5,160,160,5,7,7,6,
17 17
   0,0,80,80,248,80,248,80,80,5,7,7,6,0,0,32,
@@ -166,11 +166,11 @@ const u8g_fntpgm_uint8_t ISO10646_1_Marlin_5x7[2596] U8G_SECTION(".progmem.ISO10
166 166
   8,6,0,0,32,80,0,112,136,136,136,112,5,8,8,6,
167 167
   0,0,104,144,0,112,136,136,136,112,5,7,7,6,0,0,
168 168
   80,0,112,136,136,136,112,5,5,5,6,0,1,32,0,248,
169
-  0,32,5,8,8,6,0,0,64,240,200,136,136,152,120,16,
170
-  5,8,8,6,0,0,192,248,136,136,136,136,136,248,5,5,
171
-  5,6,0,1,32,48,248,48,32,5,8,8,6,0,0,32,
172
-  112,248,32,32,32,32,224,5,9,9,6,0,255,32,112,168,
173
-  168,184,136,136,112,32,5,9,9,6,0,255,224,128,192,176,
174
-  168,40,48,40,40,5,9,9,6,0,255,248,168,136,136,136,
175
-  136,136,168,248,5,10,10,6,0,254,32,80,80,80,80,136,
176
-  168,168,136,112};
169
+  0,32,5,7,7,6,0,255,16,112,168,168,168,112,64,5,
170
+  8,8,6,0,0,64,32,0,136,136,136,152,104,5,8,8,
171
+  6,0,0,16,32,0,136,136,136,152,104,5,8,8,6,0,
172
+  0,32,80,0,136,136,136,152,104,5,7,7,6,0,0,80,
173
+  0,136,136,136,152,104,5,9,9,6,0,255,16,32,0,136,
174
+  136,136,248,8,112,4,7,7,6,1,255,192,64,96,80,96,
175
+  64,224,5,8,8,6,0,255,80,0,136,136,136,120,8,112
176
+  };

+ 174
- 0
Marlin/dogm_font_data_ISO10646_5_Cyrillic.h View File

@@ -0,0 +1,174 @@
1
+/*
2
+  Fontname: ISO10646_5_Cyrillic
3
+  Copyright: A. Hardtung, public domain
4
+  Capital A Height: 7, '1' Height: 7
5
+  Calculated Max Values w= 5 h= 9 x= 2 y= 5 dx= 6 dy= 0 ascent= 8 len= 9
6
+  Font Bounding box     w= 6 h= 9 x= 0 y=-2
7
+  Calculated Min Values           x= 0 y=-1 dx= 0 dy= 0
8
+  Pure Font   ascent = 7 descent=-1
9
+  X Font      ascent = 7 descent=-1
10
+  Max Font    ascent = 8 descent=-1
11
+*/
12
+#include <utility/u8g.h>
13
+const u8g_fntpgm_uint8_t ISO10646_5_Cyrillic_5x7[2560] U8G_SECTION(".progmem.ISO10646_5_Cyrillic_5x7") = {
14
+  0,6,9,0,254,7,1,145,3,32,32,255,255,8,255,7,
15
+  255,0,0,0,6,0,0,1,7,7,6,2,0,128,128,128,
16
+  128,128,0,128,3,2,2,6,1,5,160,160,5,7,7,6,
17
+  0,0,80,80,248,80,248,80,80,5,7,7,6,0,0,32,
18
+  120,160,112,40,240,32,5,7,7,6,0,0,192,200,16,32,
19
+  64,152,24,5,7,7,6,0,0,96,144,160,64,168,144,104,
20
+  2,3,3,6,1,4,192,64,128,3,7,7,6,1,0,32,
21
+  64,128,128,128,64,32,3,7,7,6,1,0,128,64,32,32,
22
+  32,64,128,5,5,5,6,0,1,32,168,112,168,32,5,5,
23
+  5,6,0,1,32,32,248,32,32,2,3,3,6,2,255,192,
24
+  64,128,5,1,1,6,0,3,248,2,2,2,6,2,0,192,
25
+  192,5,5,5,6,0,1,8,16,32,64,128,5,7,7,6,
26
+  0,0,112,136,152,168,200,136,112,3,7,7,6,1,0,64,
27
+  192,64,64,64,64,224,5,7,7,6,0,0,112,136,8,112,
28
+  128,128,248,5,7,7,6,0,0,248,16,32,16,8,8,240,
29
+  5,7,7,6,0,0,16,48,80,144,248,16,16,5,7,7,
30
+  6,0,0,248,128,240,8,8,136,112,5,7,7,6,0,0,
31
+  48,64,128,240,136,136,112,5,7,7,6,0,0,248,8,16,
32
+  32,32,32,32,5,7,7,6,0,0,112,136,136,112,136,136,
33
+  112,5,7,7,6,0,0,112,136,136,120,8,16,96,2,5,
34
+  5,6,2,0,192,192,0,192,192,2,6,6,6,2,255,192,
35
+  192,0,192,64,128,4,7,7,6,0,0,16,32,64,128,64,
36
+  32,16,5,3,3,6,0,2,248,0,248,4,7,7,6,1,
37
+  0,128,64,32,16,32,64,128,5,7,7,6,0,0,112,136,
38
+  8,16,32,0,32,5,6,6,6,0,0,112,136,8,104,168,
39
+  112,5,7,7,6,0,0,112,136,136,248,136,136,136,5,7,
40
+  7,6,0,0,240,136,136,240,136,136,240,5,7,7,6,0,
41
+  0,112,136,128,128,128,136,112,5,7,7,6,0,0,224,144,
42
+  136,136,136,144,224,5,7,7,6,0,0,248,128,128,240,128,
43
+  128,248,5,7,7,6,0,0,248,128,128,240,128,128,128,5,
44
+  7,7,6,0,0,112,136,128,184,136,136,112,5,7,7,6,
45
+  0,0,136,136,136,248,136,136,136,1,7,7,6,2,0,128,
46
+  128,128,128,128,128,128,5,7,7,6,0,0,56,16,16,16,
47
+  16,144,96,5,7,7,6,0,0,136,144,160,192,160,144,136,
48
+  5,7,7,6,0,0,128,128,128,128,128,128,248,5,7,7,
49
+  6,0,0,136,216,168,136,136,136,136,5,7,7,6,0,0,
50
+  136,136,200,168,152,136,136,5,7,7,6,0,0,112,136,136,
51
+  136,136,136,112,5,7,7,6,0,0,240,136,136,240,128,128,
52
+  128,5,7,7,6,0,0,112,136,136,136,168,144,104,5,7,
53
+  7,6,0,0,240,136,136,240,160,144,136,5,7,7,6,0,
54
+  0,120,128,128,112,8,8,240,5,7,7,6,0,0,248,32,
55
+  32,32,32,32,32,5,7,7,6,0,0,136,136,136,136,136,
56
+  136,112,5,7,7,6,0,0,136,136,136,136,136,80,32,5,
57
+  7,7,6,0,0,136,136,136,136,136,168,80,5,7,7,6,
58
+  0,0,136,136,80,32,80,136,136,5,7,7,6,0,0,136,
59
+  136,136,80,32,32,32,5,7,7,6,0,0,248,8,16,32,
60
+  64,128,248,3,7,7,6,1,0,224,128,128,128,128,128,224,
61
+  5,5,5,6,0,1,128,64,32,16,8,3,7,7,6,1,
62
+  0,224,32,32,32,32,32,224,5,3,3,6,0,4,32,80,
63
+  136,5,1,1,6,0,0,248,2,2,2,6,2,5,128,64,
64
+  5,5,5,6,0,0,112,8,120,136,120,5,7,7,6,0,
65
+  0,128,128,176,200,136,136,240,5,5,5,6,0,0,112,128,
66
+  128,136,112,5,7,7,6,0,0,8,8,104,152,136,136,120,
67
+  5,5,5,6,0,0,112,136,248,128,112,5,7,7,6,0,
68
+  0,48,72,224,64,64,64,64,5,6,6,6,0,255,112,136,
69
+  136,120,8,112,5,7,7,6,0,0,128,128,176,200,136,136,
70
+  136,1,7,7,6,2,0,128,0,128,128,128,128,128,3,8,
71
+  8,6,1,255,32,0,32,32,32,32,160,64,4,7,7,6,
72
+  0,0,128,128,144,160,192,160,144,3,7,7,6,1,0,192,
73
+  64,64,64,64,64,224,5,5,5,6,0,0,208,168,168,168,
74
+  168,5,5,5,6,0,0,176,200,136,136,136,5,5,5,6,
75
+  0,0,112,136,136,136,112,5,6,6,6,0,255,240,136,136,
76
+  240,128,128,5,6,6,6,0,255,120,136,136,120,8,8,5,
77
+  5,5,6,0,0,176,200,128,128,128,5,5,5,6,0,0,
78
+  112,128,112,8,240,5,7,7,6,0,0,64,64,224,64,64,
79
+  72,48,5,5,5,6,0,0,136,136,136,152,104,5,5,5,
80
+  6,0,0,136,136,136,80,32,5,5,5,6,0,0,136,136,
81
+  168,168,80,5,5,5,6,0,0,136,80,32,80,136,5,6,
82
+  6,6,0,255,136,136,136,120,8,112,5,5,5,6,0,0,
83
+  248,16,32,64,248,3,7,7,6,1,0,32,64,64,128,64,
84
+  64,32,1,7,7,6,2,0,128,128,128,128,128,128,128,3,
85
+  7,7,6,1,0,128,64,64,32,64,64,128,5,2,2,6,
86
+  0,3,104,144,0,0,0,6,0,0,0,0,0,6,0,0,
87
+  0,0,0,6,0,0,0,0,0,6,0,0,0,0,0,6,
88
+  0,0,0,0,0,6,0,0,0,0,0,6,0,0,0,0,
89
+  0,6,0,0,0,0,0,6,0,0,0,0,0,6,0,0,
90
+  0,0,0,6,0,0,0,0,0,6,0,0,0,0,0,6,
91
+  0,0,0,0,0,6,0,0,0,0,0,6,0,0,0,0,
92
+  0,6,0,0,0,0,0,6,0,0,0,0,0,6,0,0,
93
+  0,0,0,6,0,0,0,0,0,6,0,0,0,0,0,6,
94
+  0,0,0,0,0,6,0,0,0,0,0,6,0,0,0,0,
95
+  0,6,0,0,0,0,0,6,0,0,0,0,0,6,0,0,
96
+  0,0,0,6,0,0,0,0,0,6,0,0,0,0,0,6,
97
+  0,0,0,0,0,6,0,0,0,0,0,6,0,0,0,0,
98
+  0,6,0,0,0,0,0,6,0,0,5,8,8,6,0,0,
99
+  64,248,128,128,240,128,128,248,5,8,8,6,0,0,80,248,
100
+  128,128,240,128,128,248,5,7,7,6,0,0,224,64,64,112,
101
+  72,72,112,5,8,8,6,0,0,16,32,248,136,128,128,128,
102
+  128,5,7,7,6,0,0,48,72,128,224,128,72,48,5,7,
103
+  7,6,0,0,112,136,128,112,8,136,112,3,7,7,6,1,
104
+  0,224,64,64,64,64,64,224,3,8,8,6,1,0,160,0,
105
+  224,64,64,64,64,224,5,7,7,6,0,0,56,16,16,16,
106
+  16,144,96,5,7,7,6,0,0,160,160,160,184,168,168,184,
107
+  5,7,7,6,0,0,160,160,160,248,168,168,184,4,7,7,
108
+  6,0,0,224,64,112,80,80,80,80,5,8,8,6,0,0,
109
+  16,32,136,144,160,224,144,136,5,8,8,6,0,0,64,32,
110
+  136,152,168,200,136,136,5,9,9,6,0,255,80,32,136,136,
111
+  136,80,32,32,32,5,8,8,6,0,255,136,136,136,136,136,
112
+  136,248,32,5,7,7,6,0,0,112,136,136,248,136,136,136,
113
+  5,7,7,6,0,0,248,128,128,240,136,136,240,5,7,7,
114
+  6,0,0,240,136,136,240,136,136,240,5,7,7,6,0,0,
115
+  248,136,128,128,128,128,128,5,8,8,6,0,255,120,40,40,
116
+  40,72,136,248,136,5,7,7,6,0,0,248,128,128,240,128,
117
+  128,248,5,7,7,6,0,0,168,168,168,112,168,168,168,5,
118
+  7,7,6,0,0,240,8,8,112,8,8,240,5,7,7,6,
119
+  0,0,136,136,152,168,200,136,136,5,8,8,6,0,0,80,
120
+  32,136,152,168,168,200,136,5,7,7,6,0,0,136,144,160,
121
+  192,160,144,136,5,7,7,6,0,0,120,40,40,40,40,168,
122
+  72,5,7,7,6,0,0,136,216,168,136,136,136,136,5,7,
123
+  7,6,0,0,136,136,136,248,136,136,136,5,7,7,6,0,
124
+  0,112,136,136,136,136,136,112,5,7,7,6,0,0,248,136,
125
+  136,136,136,136,136,5,7,7,6,0,0,240,136,136,240,128,
126
+  128,128,5,7,7,6,0,0,112,136,128,128,128,136,112,5,
127
+  7,7,6,0,0,248,32,32,32,32,32,32,5,7,7,6,
128
+  0,0,136,136,136,80,32,64,128,5,7,7,6,0,0,32,
129
+  112,168,168,168,112,32,5,7,7,6,0,0,136,136,80,32,
130
+  80,136,136,5,8,8,6,0,255,136,136,136,136,136,136,248,
131
+  8,5,7,7,6,0,0,136,136,136,152,104,8,8,5,7,
132
+  7,6,0,0,168,168,168,168,168,168,248,5,8,8,6,0,
133
+  255,168,168,168,168,168,168,248,8,5,7,7,6,0,0,192,
134
+  64,64,112,72,72,112,5,7,7,6,0,0,136,136,136,200,
135
+  168,168,200,5,7,7,6,0,0,128,128,128,240,136,136,240,
136
+  5,7,7,6,0,0,112,136,8,56,8,136,112,5,7,7,
137
+  6,0,0,144,168,168,232,168,168,144,5,7,7,6,0,0,
138
+  120,136,136,120,40,72,136,5,5,5,6,0,0,112,8,120,
139
+  136,120,5,7,7,6,0,0,24,96,128,240,136,136,112,4,
140
+  5,5,6,0,0,224,144,224,144,224,5,5,5,6,0,0,
141
+  248,136,128,128,128,5,6,6,6,0,255,120,40,72,136,248,
142
+  136,5,5,5,6,0,0,112,136,248,128,112,5,5,5,6,
143
+  0,0,168,168,112,168,168,5,5,5,6,0,0,240,8,48,
144
+  8,240,5,5,5,6,0,0,136,152,168,200,136,5,7,7,
145
+  6,0,0,80,32,136,152,168,200,136,4,5,5,6,0,0,
146
+  144,160,192,160,144,5,5,5,6,0,0,248,40,40,168,72,
147
+  5,5,5,6,0,0,136,216,168,136,136,5,5,5,6,0,
148
+  0,136,136,248,136,136,5,5,5,6,0,0,112,136,136,136,
149
+  112,5,5,5,6,0,0,248,136,136,136,136,5,6,6,6,
150
+  0,255,240,136,136,240,128,128,5,5,5,6,0,0,112,128,
151
+  128,136,112,5,5,5,6,0,0,248,32,32,32,32,5,6,
152
+  6,6,0,255,136,136,136,120,8,112,5,6,6,6,0,0,
153
+  32,112,168,168,112,32,5,5,5,6,0,0,136,80,32,80,
154
+  136,5,6,6,6,0,255,136,136,136,136,248,8,5,5,5,
155
+  6,0,0,136,136,248,8,8,5,5,5,6,0,0,168,168,
156
+  168,168,248,5,6,6,6,0,255,168,168,168,168,248,8,5,
157
+  5,5,6,0,0,192,64,112,72,112,5,5,5,6,0,0,
158
+  136,136,200,168,200,3,5,5,6,1,0,128,128,192,160,192,
159
+  5,5,5,6,0,0,112,136,56,136,112,5,5,5,6,0,
160
+  0,144,168,232,168,144,5,5,5,6,0,0,120,136,120,40,
161
+  72,5,8,8,6,0,0,64,32,0,112,136,248,128,112,5,
162
+  7,7,6,0,0,80,0,112,136,248,128,112,5,9,9,6,
163
+  0,255,64,224,64,64,120,72,72,72,16,5,8,8,6,0,
164
+  0,16,32,0,248,136,128,128,128,5,5,5,6,0,0,112,
165
+  136,96,136,112,5,5,5,6,0,0,112,128,112,8,240,1,
166
+  7,7,6,2,0,128,0,128,128,128,128,128,3,7,7,6,
167
+  1,0,160,0,64,64,64,64,64,3,8,8,6,1,255,32,
168
+  0,32,32,32,32,160,64,5,5,5,6,0,0,160,160,184,
169
+  168,184,5,5,5,6,0,0,160,160,248,168,184,5,6,6,
170
+  6,0,0,64,224,64,120,72,72,4,8,8,6,0,0,16,
171
+  32,0,144,160,192,160,144,5,8,8,6,0,0,64,32,0,
172
+  136,152,168,200,136,5,9,9,6,0,255,80,32,0,136,136,
173
+  136,120,8,112,5,6,6,6,0,255,136,136,136,136,248,32
174
+  };

+ 173
- 0
Marlin/dogm_font_data_ISO10646_Kana.h View File

@@ -0,0 +1,173 @@
1
+/*
2
+  Fontname: ISO10646_Kana
3
+  Copyright: A. Hardtung, public domain
4
+  Capital A Height: 7, '1' Height: 7
5
+  Calculated Max Values w= 5 h= 9 x= 2 y= 5 dx= 6 dy= 0 ascent= 8 len= 9
6
+  Font Bounding box     w= 6 h= 9 x= 0 y=-2
7
+  Calculated Min Values           x= 0 y=-1 dx= 0 dy= 0
8
+  Pure Font   ascent = 7 descent=-1
9
+  X Font      ascent = 7 descent=-1
10
+  Max Font    ascent = 8 descent=-1
11
+*/
12
+#include <utility/u8g.h>
13
+const u8g_fntpgm_uint8_t ISO10646_Kana_5x7[2549] U8G_SECTION(".progmem.ISO10646_Kana_5x7") = {
14
+  0,6,9,0,254,7,1,145,3,32,32,255,255,8,255,7,
15
+  255,0,0,0,6,0,0,1,7,7,6,2,0,128,128,128,
16
+  128,128,0,128,3,2,2,6,1,5,160,160,5,7,7,6,
17
+  0,0,80,80,248,80,248,80,80,5,7,7,6,0,0,32,
18
+  120,160,112,40,240,32,5,7,7,6,0,0,192,200,16,32,
19
+  64,152,24,5,7,7,6,0,0,96,144,160,64,168,144,104,
20
+  2,3,3,6,1,4,192,64,128,3,7,7,6,1,0,32,
21
+  64,128,128,128,64,32,3,7,7,6,1,0,128,64,32,32,
22
+  32,64,128,5,5,5,6,0,1,32,168,112,168,32,5,5,
23
+  5,6,0,1,32,32,248,32,32,2,3,3,6,2,255,192,
24
+  64,128,5,1,1,6,0,3,248,2,2,2,6,2,0,192,
25
+  192,5,5,5,6,0,1,8,16,32,64,128,5,7,7,6,
26
+  0,0,112,136,152,168,200,136,112,3,7,7,6,1,0,64,
27
+  192,64,64,64,64,224,5,7,7,6,0,0,112,136,8,112,
28
+  128,128,248,5,7,7,6,0,0,248,16,32,16,8,8,240,
29
+  5,7,7,6,0,0,16,48,80,144,248,16,16,5,7,7,
30
+  6,0,0,248,128,240,8,8,136,112,5,7,7,6,0,0,
31
+  48,64,128,240,136,136,112,5,7,7,6,0,0,248,8,16,
32
+  32,32,32,32,5,7,7,6,0,0,112,136,136,112,136,136,
33
+  112,5,7,7,6,0,0,112,136,136,120,8,16,96,2,5,
34
+  5,6,2,0,192,192,0,192,192,2,6,6,6,2,255,192,
35
+  192,0,192,64,128,4,7,7,6,0,0,16,32,64,128,64,
36
+  32,16,5,3,3,6,0,2,248,0,248,4,7,7,6,1,
37
+  0,128,64,32,16,32,64,128,5,7,7,6,0,0,112,136,
38
+  8,16,32,0,32,5,6,6,6,0,0,112,136,8,104,168,
39
+  112,5,7,7,6,0,0,112,136,136,248,136,136,136,5,7,
40
+  7,6,0,0,240,136,136,240,136,136,240,5,7,7,6,0,
41
+  0,112,136,128,128,128,136,112,5,7,7,6,0,0,224,144,
42
+  136,136,136,144,224,5,7,7,6,0,0,248,128,128,240,128,
43
+  128,248,5,7,7,6,0,0,248,128,128,240,128,128,128,5,
44
+  7,7,6,0,0,112,136,128,184,136,136,112,5,7,7,6,
45
+  0,0,136,136,136,248,136,136,136,1,7,7,6,2,0,128,
46
+  128,128,128,128,128,128,5,7,7,6,0,0,56,16,16,16,
47
+  16,144,96,5,7,7,6,0,0,136,144,160,192,160,144,136,
48
+  5,7,7,6,0,0,128,128,128,128,128,128,248,5,7,7,
49
+  6,0,0,136,216,168,136,136,136,136,5,7,7,6,0,0,
50
+  136,136,200,168,152,136,136,5,7,7,6,0,0,112,136,136,
51
+  136,136,136,112,5,7,7,6,0,0,240,136,136,240,128,128,
52
+  128,5,7,7,6,0,0,112,136,136,136,168,144,104,5,7,
53
+  7,6,0,0,240,136,136,240,160,144,136,5,7,7,6,0,
54
+  0,120,128,128,112,8,8,240,5,7,7,6,0,0,248,32,
55
+  32,32,32,32,32,5,7,7,6,0,0,136,136,136,136,136,
56
+  136,112,5,7,7,6,0,0,136,136,136,136,136,80,32,5,
57
+  7,7,6,0,0,136,136,136,136,136,168,80,5,7,7,6,
58
+  0,0,136,136,80,32,80,136,136,5,7,7,6,0,0,136,
59
+  136,136,80,32,32,32,5,7,7,6,0,0,248,8,16,32,
60
+  64,128,248,3,7,7,6,1,0,224,128,128,128,128,128,224,
61
+  5,5,5,6,0,1,128,64,32,16,8,3,7,7,6,1,
62
+  0,224,32,32,32,32,32,224,5,3,3,6,0,4,32,80,
63
+  136,5,1,1,6,0,0,248,2,2,2,6,2,5,128,64,
64
+  5,5,5,6,0,0,112,8,120,136,120,5,7,7,6,0,
65
+  0,128,128,176,200,136,136,240,5,5,5,6,0,0,112,128,
66
+  128,136,112,5,7,7,6,0,0,8,8,104,152,136,136,120,
67
+  5,5,5,6,0,0,112,136,248,128,112,5,7,7,6,0,
68
+  0,48,72,224,64,64,64,64,5,6,6,6,0,255,112,136,
69
+  136,120,8,112,5,7,7,6,0,0,128,128,176,200,136,136,
70
+  136,1,7,7,6,2,0,128,0,128,128,128,128,128,3,8,
71
+  8,6,1,255,32,0,32,32,32,32,160,64,4,7,7,6,
72
+  0,0,128,128,144,160,192,160,144,3,7,7,6,1,0,192,
73
+  64,64,64,64,64,224,5,5,5,6,0,0,208,168,168,168,
74
+  168,5,5,5,6,0,0,176,200,136,136,136,5,5,5,6,
75
+  0,0,112,136,136,136,112,5,6,6,6,0,255,240,136,136,
76
+  240,128,128,5,6,6,6,0,255,120,136,136,120,8,8,5,
77
+  5,5,6,0,0,176,200,128,128,128,5,5,5,6,0,0,
78
+  112,128,112,8,240,5,7,7,6,0,0,64,64,224,64,64,
79
+  72,48,5,5,5,6,0,0,136,136,136,152,104,5,5,5,
80
+  6,0,0,136,136,136,80,32,5,5,5,6,0,0,136,136,
81
+  168,168,80,5,5,5,6,0,0,136,80,32,80,136,5,6,
82
+  6,6,0,255,136,136,136,120,8,112,5,5,5,6,0,0,
83
+  248,16,32,64,248,3,7,7,6,1,0,32,64,64,128,64,
84
+  64,32,1,7,7,6,2,0,128,128,128,128,128,128,128,3,
85
+  7,7,6,1,0,128,64,64,32,64,64,128,5,2,2,6,
86
+  0,3,104,144,0,0,0,6,0,0,0,0,0,6,0,0,
87
+  0,0,0,6,0,0,0,0,0,6,0,0,0,0,0,6,
88
+  0,0,0,0,0,6,0,0,0,0,0,6,0,0,0,0,
89
+  0,6,0,0,0,0,0,6,0,0,0,0,0,6,0,0,
90
+  0,0,0,6,0,0,0,0,0,6,0,0,0,0,0,6,
91
+  0,0,0,0,0,6,0,0,0,0,0,6,0,0,0,0,
92
+  0,6,0,0,0,0,0,6,0,0,0,0,0,6,0,0,
93
+  0,0,0,6,0,0,0,0,0,6,0,0,0,0,0,6,
94
+  0,0,0,0,0,6,0,0,0,0,0,6,0,0,0,0,
95
+  0,6,0,0,0,0,0,6,0,0,0,0,0,6,0,0,
96
+  0,0,0,6,0,0,0,0,0,6,0,0,0,0,0,6,
97
+  0,0,0,0,0,6,0,0,0,0,0,6,0,0,0,0,
98
+  0,6,0,0,0,0,0,6,0,0,5,3,3,6,0,2,
99
+  248,0,248,5,6,6,6,0,0,248,8,40,48,32,64,5,
100
+  7,7,6,0,0,248,8,40,48,32,32,64,4,5,5,6,
101
+  0,0,16,32,96,160,32,5,7,7,6,0,0,8,16,32,
102
+  96,160,32,32,5,5,5,6,0,0,32,248,136,8,48,5,
103
+  7,7,6,0,0,32,248,136,136,8,16,32,5,4,4,6,
104
+  0,0,248,32,32,248,5,6,6,6,0,0,248,32,32,32,
105
+  32,248,5,5,5,6,0,0,16,248,48,80,144,5,7,7,
106
+  6,0,0,16,248,16,48,80,144,16,5,5,5,6,0,0,
107
+  64,248,72,80,64,5,7,7,6,0,0,40,0,64,248,72,
108
+  80,64,5,7,7,6,0,0,32,248,32,248,32,32,32,5,
109
+  8,8,6,0,0,40,0,32,248,32,248,32,32,4,6,6,
110
+  6,0,0,64,112,144,16,16,32,5,8,8,6,0,0,40,
111
+  0,64,112,144,16,16,32,5,6,6,6,0,0,64,120,144,
112
+  16,16,32,5,8,8,6,0,0,40,0,64,120,144,16,16,
113
+  32,5,5,5,6,0,0,248,8,8,8,248,5,7,7,6,
114
+  0,0,40,0,248,8,8,8,248,5,7,7,6,0,255,80,
115
+  248,80,80,16,32,64,5,9,9,6,0,255,40,0,80,248,
116
+  80,80,16,32,64,5,6,6,6,0,0,192,8,200,8,16,
117
+  224,5,8,8,6,0,0,40,0,192,8,200,8,16,224,5,
118
+  6,6,6,0,0,248,8,16,32,80,136,5,8,8,6,0,
119
+  0,40,0,248,8,16,32,80,136,5,6,6,6,0,0,64,
120
+  248,72,80,64,120,5,8,8,6,0,0,40,0,64,248,72,
121
+  80,64,120,4,4,4,6,0,1,16,208,16,224,5,7,7,
122
+  6,0,0,40,0,8,200,8,16,224,5,7,7,6,0,255,
123
+  32,120,136,40,16,40,64,5,9,9,6,0,255,40,0,32,
124
+  120,136,40,16,40,64,5,6,6,6,0,0,240,32,248,32,
125
+  64,128,5,8,8,6,0,0,40,0,240,32,248,32,64,128,
126
+  4,5,5,6,0,1,192,16,208,16,224,5,6,6,6,0,
127
+  0,192,8,200,8,16,224,5,8,8,6,0,0,40,0,192,
128
+  8,200,8,16,224,5,6,6,6,0,0,112,0,248,32,32,
129
+  64,5,8,8,6,0,0,40,0,112,0,248,32,32,64,3,
130
+  7,7,6,1,0,128,128,128,192,160,128,128,4,8,8,6,
131
+  1,0,80,0,128,128,192,160,128,128,5,7,7,6,0,0,
132
+  32,32,248,32,32,64,128,5,6,6,6,0,0,112,0,0,
133
+  0,0,248,5,6,6,6,0,0,248,8,80,32,80,128,5,
134
+  7,7,6,0,255,32,248,8,16,32,112,168,3,7,7,6,
135
+  1,0,32,32,32,32,32,64,128,5,5,5,6,0,0,16,
136
+  136,136,136,136,5,7,7,6,0,0,40,0,16,136,136,136,
137
+  136,5,8,8,6,0,0,24,24,0,16,136,136,136,136,5,
138
+  7,7,6,0,0,128,128,248,128,128,128,120,5,8,8,6,
139
+  0,0,40,128,128,248,128,128,128,120,5,8,8,6,0,0,
140
+  24,152,128,248,128,128,128,120,5,6,6,6,0,0,248,8,
141
+  8,8,16,96,5,8,8,6,0,0,40,0,248,8,8,8,
142
+  16,96,5,8,8,6,0,0,24,24,248,8,8,8,16,96,
143
+  5,5,5,6,0,1,64,160,16,8,8,5,7,7,6,0,
144
+  1,40,0,64,160,16,8,8,5,7,7,6,0,1,24,24,
145
+  64,160,16,8,8,5,6,6,6,0,0,32,248,32,32,168,
146
+  168,5,8,8,6,0,0,40,0,32,248,32,32,168,168,5,
147
+  8,8,6,0,0,24,24,32,248,32,32,168,168,5,6,6,
148
+  6,0,0,248,8,8,80,32,16,4,6,6,6,1,0,224,
149
+  0,224,0,224,16,5,6,6,6,0,0,32,64,128,144,248,
150
+  8,5,6,6,6,0,0,8,8,80,32,80,128,5,6,6,
151
+  6,0,0,120,32,248,32,32,56,5,7,7,6,0,0,64,
152
+  64,248,72,80,64,64,5,7,7,6,0,0,64,248,72,80,
153
+  64,64,64,5,5,5,6,0,0,112,16,16,16,248,5,7,
154
+  7,6,0,0,112,16,16,16,16,16,248,4,5,5,6,1,
155
+  0,240,16,240,16,240,5,7,7,6,0,0,248,8,8,248,
156
+  8,8,248,5,6,6,6,0,0,112,0,248,8,16,32,3,
157
+  6,6,6,1,0,160,160,160,160,32,64,5,6,6,6,0,
158
+  0,80,80,80,80,88,144,4,6,6,6,1,0,128,128,128,
159
+  144,160,192,5,6,6,6,0,0,248,136,136,136,248,136,5,
160
+  5,5,6,0,0,248,136,8,16,96,5,6,6,6,0,0,
161
+  248,136,8,8,16,96,5,6,6,6,0,0,16,248,80,80,
162
+  248,16,5,6,6,6,0,0,248,8,80,96,64,248,5,6,
163
+  6,6,0,0,248,8,248,8,16,32,5,6,6,6,0,0,
164
+  128,64,8,8,16,224,5,8,8,6,0,0,40,0,32,248,
165
+  136,8,24,32,5,6,6,6,0,0,64,248,72,72,136,144,
166
+  4,5,5,6,1,0,128,240,160,32,32,5,8,8,6,0,
167
+  0,40,0,248,136,8,8,16,96,5,8,8,6,0,0,40,
168
+  0,16,248,80,80,248,16,5,7,7,6,0,0,40,0,248,
169
+  16,32,32,248,5,8,8,6,0,0,40,0,248,8,248,8,
170
+  16,32,2,2,2,6,2,2,192,192,5,1,1,6,0,3,
171
+  248,5,5,5,6,0,1,128,64,32,16,8,5,6,6,6,
172
+  0,1,40,128,64,32,16,8,5,7,7,6,0,0,248,8,
173
+  8,8,8,8,8};

+ 22
- 0
Marlin/dogm_font_data_Marlin_symbols.h View File

@@ -0,0 +1,22 @@
1
+/*
2
+  Fontname: Marlin_symbols
3
+  Copyright: Created with Fony 1.4.7
4
+  Capital A Height: 0, '1' Height: 0
5
+  Calculated Max Values w= 5 h=10 x= 0 y= 3 dx= 6 dy= 0 ascent= 8 len=10
6
+  Font Bounding box     w= 6 h= 9 x= 0 y=-2
7
+  Calculated Min Values           x= 0 y=-2 dx= 0 dy= 0
8
+  Pure Font   ascent = 0 descent= 0
9
+  X Font      ascent = 0 descent= 0
10
+  Max Font    ascent = 8 descent=-2
11
+*/
12
+#include <utility/u8g.h>
13
+const u8g_fntpgm_uint8_t Marlin_symbols[140] U8G_SECTION(".progmem.Marlin_symbols") = {
14
+  0,6,9,0,254,0,0,0,0,0,1,9,0,8,254,0,
15
+  0,5,8,8,6,0,0,64,240,200,136,136,152,120,16,5,
16
+  8,8,6,0,0,192,248,136,136,136,136,136,248,5,5,5,
17
+  6,0,1,32,48,248,48,32,5,8,8,6,0,0,32,112,
18
+  248,32,32,32,32,224,5,9,9,6,0,255,32,112,168,168,
19
+  184,136,136,112,32,5,9,9,6,0,255,224,128,192,176,168,
20
+  40,48,40,40,5,9,9,6,0,255,248,168,136,136,136,136,
21
+  136,168,248,5,10,10,6,0,254,32,80,80,80,80,136,168,
22
+  168,136,112,3,3,3,6,0,3,64,160,64};

+ 178
- 86
Marlin/dogm_lcd_implementation.h View File

@@ -14,11 +14,9 @@
14 14
 #ifndef DOGM_LCD_IMPLEMENTATION_H
15 15
 #define DOGM_LCD_IMPLEMENTATION_H
16 16
 
17
-#define MARLIN_VERSION "1.0.2"
18
-
19 17
 /**
20
-* Implementation of the LCD display routines for a DOGM128 graphic display. These are common LCD 128x64 pixel graphic displays.
21
-**/
18
+ * Implementation of the LCD display routines for a DOGM128 graphic display. These are common LCD 128x64 pixel graphic displays.
19
+ */
22 20
 
23 21
 #ifdef ULTIPANEL
24 22
   #define BLEN_A 0
@@ -32,53 +30,99 @@
32 30
 
33 31
 #include <U8glib.h>
34 32
 #include "DOGMbitmaps.h"
35
-#include "dogm_font_data_ISO10646_1_Marlin.h"
33
+
36 34
 #include "ultralcd.h"
37 35
 #include "ultralcd_st7920_u8glib_rrd.h"
36
+#include "Configuration.h"
38 37
 
39
-/* Russian language not supported yet, needs custom font
38
+// save 3120 bytes of PROGMEM by commenting out #define USE_BIG_EDIT_FONT
39
+// we don't have a big font for Cyrillic, Kana
40
+#if defined( MAPPER_C2C3 ) || defined( MAPPER_NON )
41
+//  #define USE_BIG_EDIT_FONT
42
+#endif
40 43
 
41
-#ifdef LANGUAGE_RU
42
-#include "LiquidCrystalRus.h"
43
-#define LCD_CLASS LiquidCrystalRus
44
+// If you have spare 2300Byte of progmem and want to use a 
45
+// smaller font on the Info-screen uncomment the next line.
46
+//#define USE_SMALL_INFOFONT
47
+#ifdef USE_SMALL_INFOFONT
48
+  #include "dogm_font_data_6x9_marlin.h"
49
+  #define FONT_STATUSMENU_NAME u8g_font_6x9
44 50
 #else
45
-#include <LiquidCrystal.h>
46
-#define LCD_CLASS LiquidCrystal
51
+  #define FONT_STATUSMENU_NAME FONT_MENU_NAME
47 52
 #endif
48
-*/
49 53
 
50
-#define USE_BIG_EDIT_FONT                // save 3120 bytes of PROGMEM by commenting out this line
51
-#define FONT_MENU ISO10646_1_Marlin_5x7
54
+#include "dogm_font_data_Marlin_symbols.h"   // The Marlin special symbols
55
+#define FONT_SPECIAL_NAME Marlin_symbols
56
+
57
+#ifndef SIMULATE_ROMFONT
58
+  #if defined( DISPLAY_CHARSET_ISO10646_1 )
59
+    #include "dogm_font_data_ISO10646_1.h"
60
+    #define FONT_MENU_NAME ISO10646_1_5x7
61
+  #elif defined( DISPLAY_CHARSET_ISO10646_5 )
62
+    #include "dogm_font_data_ISO10646_5_Cyrillic.h"
63
+    #define FONT_MENU_NAME ISO10646_5_Cyrillic_5x7
64
+  #elif defined( DISPLAY_CHARSET_ISO10646_KANA )
65
+    #include "dogm_font_data_ISO10646_Kana.h"
66
+    #define FONT_MENU_NAME ISO10646_Kana_5x7
67
+  #else // fall-back
68
+    #include "dogm_font_data_ISO10646_1.h"
69
+    #define FONT_MENU_NAME ISO10646_1_5x7
70
+  #endif
71
+#else // SIMULATE_ROMFONT
72
+  #if defined( DISPLAY_CHARSET_HD44780_JAPAN )
73
+    #include "dogm_font_data_HD44780_J.h"
74
+    #define FONT_MENU_NAME HD44780_J_5x7
75
+  #elif defined( DISPLAY_CHARSET_HD44780_WESTERN )
76
+    #include "dogm_font_data_HD44780_W.h"
77
+    #define FONT_MENU_NAME HD44780_W_5x7
78
+  #elif defined( DISPLAY_CHARSET_HD44780_CYRILLIC )
79
+    #include "dogm_font_data_HD44780_C.h"
80
+    #define FONT_MENU_NAME HD44780_C_5x7
81
+  #else // fall-back
82
+    #include "dogm_font_data_ISO10646_1.h"
83
+    #define FONT_MENU_NAME ISO10646_1_5x7
84
+  #endif
85
+#endif // SIMULATE_ROMFONT
86
+
87
+//#define FONT_STATUSMENU_NAME FONT_MENU_NAME
88
+
89
+#define FONT_STATUSMENU 1
90
+#define FONT_SPECIAL 2
91
+#define FONT_MENU_EDIT 3
92
+#define FONT_MENU 4
52 93
 
53 94
 // DOGM parameters (size in pixels)
54 95
 #define DOG_CHAR_WIDTH         6
55 96
 #define DOG_CHAR_HEIGHT        12
56 97
 #ifdef USE_BIG_EDIT_FONT
57
-  #define FONT_MENU_EDIT u8g_font_9x18
98
+  #define FONT_MENU_EDIT_NAME u8g_font_9x18
58 99
   #define DOG_CHAR_WIDTH_EDIT  9
59 100
   #define DOG_CHAR_HEIGHT_EDIT 18
60 101
   #define LCD_WIDTH_EDIT       14
61 102
 #else
62
-  #define FONT_MENU_EDIT ISO10646_1_Marlin_5x7
103
+  #define FONT_MENU_EDIT_NAME FONT_MENU_NAME
63 104
   #define DOG_CHAR_WIDTH_EDIT  6
64 105
   #define DOG_CHAR_HEIGHT_EDIT 12
65 106
   #define LCD_WIDTH_EDIT       22
66 107
 #endif
67 108
 
68
-#define FONT_STATUSMENU FONT_MENU
69
-
70 109
 #define START_ROW              0
71 110
 
72
-/* Custom characters defined in font font_6x10_marlin.c */
73
-#define LCD_STR_DEGREE      "\xB0"
74
-#define LCD_STR_REFRESH     "\xF8"
75
-#define LCD_STR_FOLDER      "\xF9"
76
-#define LCD_STR_ARROW_RIGHT "\xFA"
77
-#define LCD_STR_UPLEVEL     "\xFB"
78
-#define LCD_STR_CLOCK       "\xFC"
79
-#define LCD_STR_FEEDRATE    "\xFD"
80
-#define LCD_STR_BEDTEMP     "\xFE"
81
-#define LCD_STR_THERMOMETER "\xFF"
111
+/* Custom characters defined in font font_6x10_marlin_symbols */
112
+// \x00 intentionally skipped to avoid problems in strings
113
+#define LCD_STR_REFRESH     "\x01"
114
+#define LCD_STR_FOLDER      "\x02"
115
+#define LCD_STR_ARROW_RIGHT "\x03"
116
+#define LCD_STR_UPLEVEL     "\x04"
117
+#define LCD_STR_CLOCK       "\x05"
118
+#define LCD_STR_FEEDRATE    "\x06"
119
+#define LCD_STR_BEDTEMP     "\x07"
120
+#define LCD_STR_THERMOMETER "\x08"
121
+#define LCD_STR_DEGREE      "\x09"
122
+
123
+#define LCD_STR_SPECIAL_MAX '\x09'
124
+// Maximum here is 0x1f because 0x20 is ' ' (space) and the normal charsets begin.
125
+// Better stay below 0x10 because DISPLAY_CHARSET_HD44780_WESTERN begins here.
82 126
 
83 127
 int lcd_contrast;
84 128
 
@@ -97,6 +141,51 @@ U8GLIB_NHD_C12864 u8g(DOGLCD_CS, DOGLCD_A0);
97 141
 U8GLIB_DOGM128 u8g(DOGLCD_CS, DOGLCD_A0);  // HW-SPI Com: CS, A0
98 142
 #endif
99 143
 
144
+#include "utf_mapper.h"
145
+
146
+char currentfont = 0;
147
+
148
+static void lcd_setFont(char font_nr) {
149
+  switch(font_nr) {
150
+    case FONT_STATUSMENU : {u8g.setFont(FONT_STATUSMENU_NAME); currentfont = FONT_STATUSMENU;}; break;
151
+    case FONT_MENU       : {u8g.setFont(FONT_MENU_NAME); currentfont = FONT_MENU;}; break;
152
+    case FONT_SPECIAL    : {u8g.setFont(FONT_SPECIAL_NAME); currentfont = FONT_SPECIAL;}; break;
153
+    case FONT_MENU_EDIT  : {u8g.setFont(FONT_MENU_EDIT_NAME); currentfont = FONT_MENU_EDIT;}; break;
154
+    break;
155
+  }
156
+}
157
+
158
+char lcd_print(char c) {
159
+  if ((c > 0) && (c <= LCD_STR_SPECIAL_MAX)) {
160
+    u8g.setFont(FONT_SPECIAL_NAME);
161
+    u8g.print(c);
162
+    lcd_setFont(currentfont);
163
+    return 1;
164
+  } else {
165
+    return charset_mapper(c);
166
+  }
167
+}
168
+
169
+char lcd_print(char* str) {
170
+  char c;
171
+  int i = 0;
172
+  char n = 0;
173
+  while ((c = str[i++])) {
174
+    n += lcd_print(c);
175
+  }
176
+  return n;
177
+}
178
+
179
+/* Arduino < 1.0.0 is missing a function to print PROGMEM strings, so we need to implement our own */
180
+char lcd_printPGM(const char* str) {
181
+  char c;
182
+  char n = 0;
183
+  while ((c = pgm_read_byte(str++))) {
184
+    n += lcd_print(c);
185
+  }
186
+  return n;
187
+}
188
+
100 189
 static void lcd_implementation_init()
101 190
 {
102 191
   #ifdef LCD_PIN_BL // Enable LCD backlight
@@ -131,7 +220,7 @@ static void lcd_implementation_init()
131 220
 	u8g.firstPage();
132 221
 	do {
133 222
     u8g.drawBitmapP(offx, offy, START_BMPBYTEWIDTH, START_BMPHEIGHT, start_bmp);
134
-    u8g.setFont(FONT_MENU);
223
+    lcd_setFont(FONT_MENU);
135 224
     #ifndef STRING_SPLASH_LINE2
136 225
       u8g.drawStr(txt1X, u8g.getHeight() - DOG_CHAR_HEIGHT, STRING_SPLASH_LINE1);
137 226
     #else
@@ -144,21 +233,17 @@ static void lcd_implementation_init()
144 233
 
145 234
 static void lcd_implementation_clear() { } // Automatically cleared by Picture Loop
146 235
 
147
-/* Arduino < 1.0.0 is missing a function to print PROGMEM strings, so we need to implement our own */
148
-static void lcd_printPGM(const char* str) {
149
-  char c;
150
-  while ((c = pgm_read_byte(str++))) u8g.print(c);
151
-}
152
-
153 236
 static void _draw_heater_status(int x, int heater) {
154 237
   bool isBed = heater < 0;
155 238
   int y = 17 + (isBed ? 1 : 0);
156
-  u8g.setFont(FONT_STATUSMENU);
239
+
240
+  lcd_setFont(FONT_STATUSMENU);
157 241
   u8g.setPrintPos(x,7);
158
-  u8g.print(itostr3(int((heater >= 0 ? degTargetHotend(heater) : degTargetBed()) + 0.5)));
242
+  lcd_print(itostr3(int((heater >= 0 ? degTargetHotend(heater) : degTargetBed()) + 0.5)));
159 243
   lcd_printPGM(PSTR(LCD_STR_DEGREE " "));
160 244
   u8g.setPrintPos(x,28);
161
-  u8g.print(itostr3(int(heater >= 0 ? degHotend(heater) : degBed()) + 0.5));
245
+  lcd_print(itostr3(int(heater >= 0 ? degHotend(heater) : degBed()) + 0.5));
246
+
162 247
   lcd_printPGM(PSTR(LCD_STR_DEGREE " "));
163 248
   if (!isHeatingHotend(0)) {
164 249
     u8g.drawBox(x+7,y,2,2);
@@ -190,7 +275,7 @@ static void lcd_implementation_status_screen() {
190 275
     u8g.drawFrame(54,49,73,4);
191 276
 
192 277
     // SD Card Progress bar and clock
193
-    u8g.setFont(FONT_STATUSMENU);
278
+    lcd_setFont(FONT_STATUSMENU);
194 279
  
195 280
     if (IS_SD_PRINTING) {
196 281
       // Progress bar solid part
@@ -200,9 +285,9 @@ static void lcd_implementation_status_screen() {
200 285
     u8g.setPrintPos(80,48);
201 286
     if (starttime != 0) {
202 287
       uint16_t time = (millis() - starttime) / 60000;
203
-      u8g.print(itostr2(time/60));
204
-      u8g.print(':');
205
-      u8g.print(itostr2(time%60));
288
+      lcd_print(itostr2(time/60));
289
+      lcd_print(':');
290
+      lcd_print(itostr2(time%60));
206 291
     }
207 292
     else {
208 293
       lcd_printPGM(PSTR("--:--"));
@@ -216,69 +301,79 @@ static void lcd_implementation_status_screen() {
216 301
   if (EXTRUDERS < 4) _draw_heater_status(81, -1);
217 302
  
218 303
   // Fan
219
-  u8g.setFont(FONT_STATUSMENU);
304
+  lcd_setFont(FONT_STATUSMENU);
220 305
   u8g.setPrintPos(104,27);
221 306
   #if defined(FAN_PIN) && FAN_PIN > -1
222 307
     int per = ((fanSpeed + 1) * 100) / 256;
223 308
     if (per) {
224
-      u8g.print(itostr3(per));
225
-      u8g.print('%');
309
+
310
+      lcd_print(itostr3(per));
311
+      lcd_print('%');
226 312
     }
227 313
     else
228 314
   #endif
229 315
     {
230
-      u8g.print("---");
316
+      lcd_printPGM(PSTR("---"));
231 317
     }
232 318
 
233 319
   // X, Y, Z-Coordinates
234 320
   #define XYZ_BASELINE 38
235
-  u8g.setFont(FONT_STATUSMENU);
236
-  u8g.drawBox(0,30,128,9);
321
+  lcd_setFont(FONT_STATUSMENU);
322
+
323
+  #ifdef USE_SMALL_INFOFONT
324
+    u8g.drawBox(0,30,128,10);
325
+  #else
326
+    u8g.drawBox(0,30,128,9);
327
+  #endif
237 328
   u8g.setColorIndex(0); // white on black
238 329
   u8g.setPrintPos(2,XYZ_BASELINE);
239
-  u8g.print('X');
330
+  lcd_print('X');
240 331
   u8g.drawPixel(8,XYZ_BASELINE - 5);
241 332
   u8g.drawPixel(8,XYZ_BASELINE - 3);
242 333
   u8g.setPrintPos(10,XYZ_BASELINE);
243
-  u8g.print(ftostr31ns(current_position[X_AXIS]));
334
+  lcd_print(ftostr31ns(current_position[X_AXIS]));
244 335
   u8g.setPrintPos(43,XYZ_BASELINE);
245
-  u8g.print('Y');
336
+  lcd_print('Y');
246 337
   u8g.drawPixel(49,XYZ_BASELINE - 5);
247 338
   u8g.drawPixel(49,XYZ_BASELINE - 3);
248 339
   u8g.setPrintPos(51,XYZ_BASELINE);
249
-  u8g.print(ftostr31ns(current_position[Y_AXIS]));
340
+  lcd_print(ftostr31ns(current_position[Y_AXIS]));
250 341
   u8g.setPrintPos(83,XYZ_BASELINE);
251
-  u8g.print('Z');
342
+  lcd_print('Z');
252 343
   u8g.drawPixel(89,XYZ_BASELINE - 5);
253 344
   u8g.drawPixel(89,XYZ_BASELINE - 3);
254 345
   u8g.setPrintPos(91,XYZ_BASELINE);
255
-  u8g.print(ftostr31(current_position[Z_AXIS]));
346
+  lcd_print(ftostr31(current_position[Z_AXIS]));
256 347
   u8g.setColorIndex(1); // black on white
257 348
  
258 349
   // Feedrate
259
-  u8g.setFont(FONT_MENU);
350
+  lcd_setFont(FONT_MENU);
260 351
   u8g.setPrintPos(3,49);
261
-  u8g.print(LCD_STR_FEEDRATE[0]);
262
-  u8g.setFont(FONT_STATUSMENU);
352
+  lcd_print(LCD_STR_FEEDRATE[0]);
353
+  lcd_setFont(FONT_STATUSMENU);
263 354
   u8g.setPrintPos(12,49);
264
-  u8g.print(itostr3(feedmultiply));
265
-  u8g.print('%');
355
+  lcd_print(itostr3(feedmultiply));
356
+  lcd_print('%');
266 357
 
267 358
   // Status line
268
-  u8g.setFont(FONT_STATUSMENU);
359
+  lcd_setFont(FONT_STATUSMENU);
360
+  #ifdef USE_SMALL_INFOFONT
361
+  u8g.setPrintPos(0,62);
362
+  #else
269 363
   u8g.setPrintPos(0,63);
364
+  #endif
270 365
   #ifndef FILAMENT_LCD_DISPLAY
271
-    u8g.print(lcd_status_message);
366
+    lcd_print(lcd_status_message);
272 367
   #else
273 368
     if (millis() < message_millis + 5000) {  //Display both Status message line and Filament display on the last line
274
-      u8g.print(lcd_status_message);
369
+      lcd_print(lcd_status_message);
275 370
     }
276 371
     else {
277 372
       lcd_printPGM(PSTR("dia:"));
278
-      u8g.print(ftostr12ns(filament_width_meas));
373
+      lcd_print(ftostr12ns(filament_width_meas));
279 374
       lcd_printPGM(PSTR(" factor:"));
280
-      u8g.print(itostr3(extrudemultiply));
281
-      u8g.print('%');
375
+      lcd_print(itostr3(extrudemultiply));
376
+      lcd_print('%');
282 377
     }
283 378
   #endif
284 379
 }
@@ -301,14 +396,13 @@ static void lcd_implementation_drawmenu_generic(bool isSelected, uint8_t row, co
301 396
 
302 397
   lcd_implementation_mark_as_selected(row, isSelected);
303 398
 
304
-  while ((c = pgm_read_byte(pstr))) {
305
-    u8g.print(c);
399
+  while (c = pgm_read_byte(pstr)) {
400
+    n -= lcd_print(c);
306 401
     pstr++;
307
-    n--;
308 402
   }
309
-  while (n--) u8g.print(' ');
310
-  u8g.print(post_char);
311
-  u8g.print(' ');
403
+  while (n--) lcd_print(' ');
404
+  lcd_print(post_char);
405
+  lcd_print(' ');
312 406
 }
313 407
 
314 408
 static void _drawmenu_setting_edit_generic(bool isSelected, uint8_t row, const char* pstr, const char* data, bool pgm) {
@@ -317,14 +411,13 @@ static void _drawmenu_setting_edit_generic(bool isSelected, uint8_t row, const c
317 411
 
318 412
   lcd_implementation_mark_as_selected(row, isSelected);
319 413
 
320
-  while ((c = pgm_read_byte(pstr))) {
321
-    u8g.print(c);
414
+  while (c = pgm_read_byte(pstr)) {
415
+    n -= lcd_print(c);
322 416
     pstr++;
323
-    n--;
324 417
   }
325
-  u8g.print(':');
326
-  while (n--) u8g.print(' ');
327
-  if (pgm) { lcd_printPGM(data); } else { u8g.print(data); }
418
+  lcd_print(':');
419
+  while (n--) lcd_print(' ');
420
+  if (pgm) { lcd_printPGM(data); } else { lcd_print((char *)data); }
328 421
 }
329 422
 
330 423
 #define lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, data) _drawmenu_setting_edit_generic(sel, row, pstr, data, false)
@@ -358,13 +451,13 @@ void lcd_implementation_drawedit(const char* pstr, char* value) {
358 451
 
359 452
   #ifdef USE_BIG_EDIT_FONT
360 453
     if (lcd_strlen_P(pstr) <= LCD_WIDTH_EDIT - 1) {
361
-      u8g.setFont(FONT_MENU_EDIT);
454
+      lcd_setFont(FONT_MENU_EDIT);
362 455
       lcd_width = LCD_WIDTH_EDIT + 1;
363 456
       char_width = DOG_CHAR_WIDTH_EDIT;
364 457
       if (lcd_strlen_P(pstr) >= LCD_WIDTH_EDIT - vallen) rows = 2;
365 458
     }
366 459
     else {
367
-      u8g.setFont(FONT_MENU);
460
+      lcd_setFont(FONT_MENU);
368 461
     }
369 462
   #endif
370 463
 
@@ -375,9 +468,9 @@ void lcd_implementation_drawedit(const char* pstr, char* value) {
375 468
 
376 469
   u8g.setPrintPos(0, rowHeight + kHalfChar);
377 470
   lcd_printPGM(pstr);
378
-  u8g.print(':');
471
+  lcd_print(':');
379 472
   u8g.setPrintPos((lcd_width - 1 - vallen) * char_width, rows * rowHeight + kHalfChar);
380
-  u8g.print(value);
473
+  lcd_print(value);
381 474
 }
382 475
 
383 476
 static void _drawmenu_sd(bool isSelected, uint8_t row, const char* pstr, const char* filename, char * const longFilename, bool isDir) {
@@ -391,13 +484,12 @@ static void _drawmenu_sd(bool isSelected, uint8_t row, const char* pstr, const c
391 484
 
392 485
   lcd_implementation_mark_as_selected(row, isSelected);
393 486
 
394
-  if (isDir) u8g.print(LCD_STR_FOLDER[0]);
395
-  while ((c = *filename)) {
396
-    u8g.print(c);
487
+  if (isDir) lcd_print(LCD_STR_FOLDER[0]);
488
+  while (c = *filename) {
489
+    n -= lcd_print(c);
397 490
     filename++;
398
-    n--;
399 491
   }
400
-  while (n--) u8g.print(' ');
492
+  while (n--) lcd_print(' ');
401 493
 }
402 494
 
403 495
 #define lcd_implementation_drawmenu_sdfile(sel, row, pstr, filename, longFilename) _drawmenu_sd(sel, row, pstr, filename, longFilename, false)

+ 9
- 6
Marlin/example_configurations/delta/generic/Configuration.h View File

@@ -583,13 +583,16 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
583 583
 //==============================LCD and SD support=============================
584 584
 
585 585
 // Define your display language below. Replace (en) with your language code and uncomment.
586
-// en, pl, fr, de, es, ru, it, pt, pt-br, fi, an, nl, ca, eu
586
+// en, pl, fr, de, es, ru, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, test
587 587
 // See also language.h
588
-//#define LANGUAGE_INCLUDE GENERATE_LANGUAGE_INCLUDE(en)
589
-
590
-// Character based displays can have different extended charsets.
591
-#define DISPLAY_CHARSET_HD44780_JAPAN     // "ääööüüß23°"
592
-//#define DISPLAY_CHARSET_HD44780_WESTERN // "ÄäÖöÜüß²³°" if you see a '~' instead of a 'arrow_right' at the right of submenuitems - this is the right one.
588
+#define LANGUAGE_INCLUDE GENERATE_LANGUAGE_INCLUDE(en)
589
+
590
+// Chose ONE of the next three charsets. This has to match your hardware. In case of a full graphic display this information is not important.
591
+// To find out what type you have - compile with (test) - upload - click to get the menu. You'll see two typical lines from the upper half of the charset.
592
+// See also documentation/LCDLanguageFont.md
593
+  #define DISPLAY_CHARSET_HD44780_JAPAN        // this is the most common hardware
594
+  //#define DISPLAY_CHARSET_HD44780_WESTERN
595
+  //#define DISPLAY_CHARSET_HD44780_CYRILLIC
593 596
 
594 597
 //#define ULTRA_LCD  //general LCD support, also 16x2
595 598
 //#define DOGLCD  // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)

+ 9
- 6
Marlin/example_configurations/delta/kossel_mini/Configuration.h View File

@@ -585,13 +585,16 @@ const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic o
585 585
 //==============================LCD and SD support=============================
586 586
 
587 587
 // Define your display language below. Replace (en) with your language code and uncomment.
588
-// en, pl, fr, de, es, ru, it, pt, pt-br, fi, an, nl, ca, eu
588
+// en, pl, fr, de, es, ru, it, pt, pt-br, fi, an, nl, ca, eu, kana, kana_utf8, test
589 589
 // See also language.h
590
-//#define LANGUAGE_INCLUDE GENERATE_LANGUAGE_INCLUDE(en)
591
-
592
-// Character based displays can have different extended charsets.
593
-#define DISPLAY_CHARSET_HD44780_JAPAN     // "ääööüüß23°"
594
-//#define DISPLAY_CHARSET_HD44780_WESTERN // "ÄäÖöÜüß²³°" if you see a '~' instead of a 'arrow_right' at the right of submenuitems - this is the right one.
590
+#define LANGUAGE_INCLUDE GENERATE_LANGUAGE_INCLUDE(en)
591
+
592
+// Chose ONE of the next three charsets. This has to match your hardware. In case of a full graphic display this information is not important.
593
+// To find out what type you have - compile with (test) - upload - click to get the menu. You'll see two typical lines from the upper half of the charset.
594
+// See also documentation/LCDLanguageFont.md
595
+  #define DISPLAY_CHARSET_HD44780_JAPAN        // this is the most common hardware
596
+  //#define DISPLAY_CHARSET_HD44780_WESTERN
597
+  //#define DISPLAY_CHARSET_HD44780_CYRILLIC
595 598
 
596 599
 //#define ULTRA_LCD  //general LCD support, also 16x2
597 600
 //#define DOGLCD  // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)

BIN
Marlin/fonts/HD44780_C.fon View File


BIN
Marlin/fonts/HD44780_J.fon View File


BIN
Marlin/fonts/HD44780_W.fon View File


BIN
Marlin/fonts/ISO10646-1-Marlin.fon View File


BIN
Marlin/fonts/ISO10646-5_Cyrillic.fon View File


BIN
Marlin/fonts/ISO10646_Kana.fon View File


+ 6
- 0
Marlin/fonts/README.fonts View File

@@ -0,0 +1,6 @@
1
+The fonts are created with Fony.exe (http://hukka.ncn.fi/?fony) because Fontforge didn't do what I want (probably lack off experience). 
2
+In Fony export the fonts to bdf-format. Maybe another one can edit them with Fontforge.
3
+Then run make_fonts.bat what calls bdf2u8g.exe with the needed parameters to produce the .h files.
4
+The .h files must be edited to replace '#include "u8g.h"' with '#include <utility/u8g.h>', replace 'U8G_FONT_SECTION' with 'U8G_SECTION', insert '.progmem.' right behind the first '"' and moved to the main directory.
5
+
6
+Especially the Kana and Cyrillic fonts should be revised by someone who knows what he/she does. I am only a west-European with very little knowledge about this scripts.

BIN
Marlin/fonts/bdf2u8g.exe View File


+ 0
- 1
Marlin/fonts/make_fonts.bat View File

@@ -3,6 +3,5 @@
3 3
 .\bdf2u8g.exe -b 32 -e 255 HD44780_C.bdf HD44780_C_5x7 dogm_font_data_HD44780_C.h
4 4
 .\bdf2u8g.exe -b 32 -e 255 HD44780_J.bdf HD44780_J_5x7 dogm_font_data_HD44780_J.h
5 5
 .\bdf2u8g.exe -b 32 -e 255 ISO10646-1.bdf ISO10646_1_5x7 dogm_font_data_ISO10646_1.h
6
-.\bdf2u8g.exe -b 32 -e 255 ISO10646-1-Marlin.bdf ISO10646_1_Marlin_5x7 dogm_font_data_ISO10646_1_Marlin.h
7 6
 .\bdf2u8g.exe -b 32 -e 255 ISO10646_5_Cyrillic.bdf ISO10646_5_Cyrillic_5x7 dogm_font_data_ISO10646_5_Cyrillic.h
8 7
 .\bdf2u8g.exe -b 32 -e 255 ISO10646_Kana.bdf ISO10646_Kana_5x7 dogm_font_data_ISO10646_Kana.h

+ 19
- 72
Marlin/language.h View File

@@ -11,22 +11,25 @@
11 11
 //
12 12
 //   ==> ALWAYS TRY TO COMPILE MARLIN WITH/WITHOUT "ULTIPANEL" / "ULTRALCD" / "SDSUPPORT" #define IN "Configuration.h"
13 13
 //   ==> ALSO TRY ALL AVAILABLE LANGUAGE OPTIONS
14
+// See also documentation/LCDLanguageFont.md
14 15
 
15 16
 // Languages
16
-// en    English
17
-// pl    Polish
18
-// fr    French
19
-// de    German
20
-// es    Spanish
21
-// ru    Russian
22
-// it    Italian
23
-// pt    Portuguese
24
-// pt-br Portuguese (Brazil)
25
-// fi    Finnish
26
-// an    Aragonese
27
-// nl    Dutch
28
-// ca    Catalan
29
-// eu    Basque-Euskera
17
+// en       English
18
+// pl       Polish
19
+// fr       French
20
+// de       German
21
+// es       Spanish
22
+// ru       Russian
23
+// it       Italian
24
+// pt       Portuguese
25
+// pt-br    Portuguese (Brazil)
26
+// fi       Finnish
27
+// an       Aragonese
28
+// nl       Dutch
29
+// ca       Catalan
30
+// eu       Basque-Euskera
31
+// kana     Japanese
32
+// kana_utf Japanese
30 33
 
31 34
 #ifndef LANGUAGE_INCLUDE
32 35
   // pick your language from the list above
@@ -200,65 +203,9 @@
200 203
 
201 204
 // LCD Menu Messages
202 205
 
203
-// Add your own character. Reference: https://github.com/MarlinFirmware/Marlin/pull/1434 photos
204
-//                                and https://www.sparkfun.com/datasheets/LCD/HD44780.pdf page 17-18
205
-#ifdef DOGLCD
206
-  #define STR_Ae "\304"               // 'Ä' U8glib
207
-  #define STR_ae "\344"               // 'ä'
208
-  #define STR_Oe "\326"               // 'Ö'
209
-  #define STR_oe STR_Oe               // 'ö'
210
-  #define STR_Ue "\334"               // 'Ü'
211
-  #define STR_ue STR_Ue               // 'ü'
212
-  #define STR_sz "\337"               // 'ß'
213
-  #define STR_h2 "\262"               // '²'
214
-  #define STR_h3 "\263"               // '³'
215
-  #define STR_Deg "\260"              // '°'
216
-  #define STR_THERMOMETER "\377"
217
-#else
218
-  #ifdef DISPLAY_CHARSET_HD44780_JAPAN // HD44780 ROM Code: A00 (Japan)
219
-    #define STR_ae "\xe1"
220
-    #define STR_Ae STR_ae
221
-    #define STR_oe "\357"
222
-    #define STR_Oe STR_oe
223
-    #define STR_ue "\365"
224
-    #define STR_Ue STR_ue
225
-    #define STR_sz "\342"
226
-    #define STR_h2 "2"
227
-    #define STR_h3 "3"
228
-    #define STR_Deg "\271"
229
-    #define STR_THERMOMETER "\002"
230
-  #elif defined(DISPLAY_CHARSET_HD44780_WESTERN) // HD44780 ROM Code: A02 (Western)
231
-    #define STR_Ae "\216"
232
-    #define STR_ae "\204"
233
-    #define STR_Oe "\211"
234
-    #define STR_oe "\204"
235
-    #define STR_Ue "\212"
236
-    #define STR_ue "\201"
237
-    #define STR_sz "\160"
238
-    #define STR_h2 "\262"
239
-    #define STR_h3 "\263"
240
-    #define STR_Deg "\337"
241
-    #define STR_THERMOMETER "\002"
242
-  #endif
206
+#if !(defined( DISPLAY_CHARSET_HD44780_JAPAN ) || defined( DISPLAY_CHARSET_HD44780_WESTERN ) || defined( DISPLAY_CHARSET_HD44780_CYRILLIC ))
207
+  #define DISPLAY_CHARSET_HD44780_JAPAN
243 208
 #endif
244
-/*
245
-#define TESTSTRING000 "\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017"
246
-#define TESTSTRING020 "\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
247
-#define TESTSTRING040 "\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057"
248
-#define TESTSTRING060 "\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077"
249
-#define TESTSTRING100 "\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117"
250
-#define TESTSTRING120 "\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137"
251
-#define TESTSTRING140 "\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157"
252
-#define TESTSTRING160 "\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177"
253
-#define TESTSTRING200 "\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217"
254
-#define TESTSTRING220 "\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237"
255
-#define TESTSTRING240 "\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257"
256
-#define TESTSTRING260 "\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277"
257
-#define TESTSTRING300 "\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317"
258
-#define TESTSTRING320 "\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337"
259
-#define TESTSTRING340 "\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357"
260
-#define TESTSTRING360 "\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377"
261
-*/
262 209
 
263 210
 #include LANGUAGE_INCLUDE
264 211
 #include "language_en.h"

+ 9
- 4
Marlin/language_an.h View File

@@ -2,12 +2,17 @@
2 2
  * Aragonese
3 3
  *
4 4
  * LCD Menu Messages
5
- * Please note these are limited to 17 characters!
5
+ * See also documentation/LCDLanguageFont.md
6 6
  *
7 7
  */
8 8
 #ifndef LANGUAGE_AN_H
9 9
 #define LANGUAGE_AN_H
10 10
 
11
+#define MAPPER_NON
12
+// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h
13
+//#define SIMULATE_ROMFONT
14
+#define DISPLAY_CHARSET_ISO10646_1
15
+
11 16
 #define WELCOME_MSG                         MACHINE_NAME " parada."
12 17
 #define MSG_SD_INSERTED                     "Tarcheta colocada"
13 18
 #define MSG_SD_REMOVED                      "Tarcheta retirada"
@@ -46,9 +51,9 @@
46 51
 #define MSG_FAN_SPEED                       "Ixoriador"
47 52
 #define MSG_FLOW                            "Fluxo"
48 53
 #define MSG_CONTROL                         "Control"
49
-#define MSG_MIN                             "\002 Min"
50
-#define MSG_MAX                             "\002 Max"
51
-#define MSG_FACTOR                          "\002 Fact"
54
+#define MSG_MIN                             LCD_STR_THERMOMETER " Min"
55
+#define MSG_MAX                             LCD_STR_THERMOMETER " Max"
56
+#define MSG_FACTOR                          LCD_STR_THERMOMETER " Fact"
52 57
 #define MSG_AUTOTEMP                        "Autotemp"
53 58
 #define MSG_ON                              "On"
54 59
 #define MSG_OFF                             "Off"

+ 11
- 5
Marlin/language_ca.h View File

@@ -2,12 +2,18 @@
2 2
  * Catalan
3 3
  *
4 4
  * LCD Menu Messages
5
- * Please note these are limited to 17 characters!
5
+ * See also documentation/LCDLanguageFont.md
6 6
  *
7 7
  */
8 8
 #ifndef LANGUAGE_CA_H
9 9
 #define LANGUAGE_CA_H
10 10
 
11
+//#define MAPPER_NON 
12
+#define MAPPER_C2C3  // because of "ó"
13
+// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h
14
+//#define SIMULATE_ROMFONT
15
+#define DISPLAY_CHARSET_ISO10646_1
16
+
11 17
 #define WELCOME_MSG                         MACHINE_NAME " preparada."
12 18
 #define MSG_SD_INSERTED                     "SD detectada."
13 19
 #define MSG_SD_REMOVED                      "SD expulsada."
@@ -46,9 +52,9 @@
46 52
 #define MSG_FAN_SPEED                       "Vel. Ventilador"
47 53
 #define MSG_FLOW                            "Fluxe"
48 54
 #define MSG_CONTROL                         "Control"
49
-#define MSG_MIN                             " \002 Min"
50
-#define MSG_MAX                             " \002 Max"
51
-#define MSG_FACTOR                          " \002 Fact"
55
+#define MSG_MIN                             LCD_STR_THERMOMETER " Min"
56
+#define MSG_MAX                             LCD_STR_THERMOMETER " Max"
57
+#define MSG_FACTOR                          LCD_STR_THERMOMETER " Fact"
52 58
 #define MSG_AUTOTEMP                        "Autotemp"
53 59
 #define MSG_ON                              "On "
54 60
 #define MSG_OFF                             "Off"
@@ -76,7 +82,7 @@
76 82
 #define MSG_TEMPERATURE                     "Temperatura"
77 83
 #define MSG_MOTION                          "Moviment"
78 84
 #define MSG_VOLUMETRIC                      "Filament"
79
-#define MSG_VOLUMETRIC_ENABLED		        "E in mm3"
85
+#define MSG_VOLUMETRIC_ENABLED              "E in mm3"
80 86
 #define MSG_FILAMENT_SIZE_EXTRUDER_0        "Fil. Dia. 1"
81 87
 #define MSG_FILAMENT_SIZE_EXTRUDER_1        "Fil. Dia. 2"
82 88
 #define MSG_FILAMENT_SIZE_EXTRUDER_2        "Fil. Dia. 3"

+ 20
- 15
Marlin/language_de.h View File

@@ -2,32 +2,37 @@
2 2
  * German
3 3
  *
4 4
  * LCD Menu Messages
5
- * Please note these are limited to 17 characters!
5
+ * See also documentation/LCDLanguageFont.md
6 6
  *
7 7
  */
8 8
 #ifndef LANGUAGE_DE_H
9 9
 #define LANGUAGE_DE_H
10 10
 
11
+#define MAPPER_C2C3
12
+// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h
13
+//#define SIMULATE_ROMFONT
14
+#define DISPLAY_CHARSET_ISO10646_1
15
+
11 16
 #define WELCOME_MSG                         MACHINE_NAME " Bereit."
12 17
 #define MSG_SD_INSERTED                     "SDKarte erkannt."
13 18
 #define MSG_SD_REMOVED                      "SDKarte entfernt."
14
-#define MSG_MAIN                            "Hauptmen" STR_ue
19
+#define MSG_MAIN                            "Hauptmenü"
15 20
 #define MSG_AUTOSTART                       "Autostart"
16 21
 #define MSG_DISABLE_STEPPERS                "Motoren Aus" // M84
17 22
 #define MSG_AUTO_HOME                       "Home" // G28
18 23
 #define MSG_SET_HOME_OFFSETS                "Setze Home hier"
19 24
 #define MSG_SET_ORIGIN                      "Setze Null hier" //"G92 X0 Y0 Z0" commented out in ultralcd.cpp
20
-#define MSG_PREHEAT_PLA                     "Vorw" STR_ae "rmen PLA"
21
-#define MSG_PREHEAT_PLA_N                   "Vorw" STR_ae "rmen PLA "
25
+#define MSG_PREHEAT_PLA                     "Vorwärmen PLA"
26
+#define MSG_PREHEAT_PLA_N                   "Vorwärmen PLA "
22 27
 #define MSG_PREHEAT_PLA_ALL                 "Vorw. PLA Alle"
23 28
 #define MSG_PREHEAT_PLA_BEDONLY             "Vorw. PLA Bett"
24
-#define MSG_PREHEAT_PLA_SETTINGS            "Vorw" STR_ae "rm. PLA Ein."
25
-#define MSG_PREHEAT_ABS                     "Vorw" STR_ae "rmen ABS"
26
-#define MSG_PREHEAT_ABS_N                   "Vorw" STR_ae "rmen ABS "
29
+#define MSG_PREHEAT_PLA_SETTINGS            "Vorwärm. PLA Ein."
30
+#define MSG_PREHEAT_ABS                     "Vorwärmen ABS"
31
+#define MSG_PREHEAT_ABS_N                   "Vorwärmen ABS "
27 32
 #define MSG_PREHEAT_ABS_ALL                 "Vorw. ABS Alle"
28 33
 #define MSG_PREHEAT_ABS_BEDONLY             "Vorw. ABS Bett"
29
-#define MSG_PREHEAT_ABS_SETTINGS            "Vorw" STR_ae "rm. ABS Ein."
30
-#define MSG_COOLDOWN                        "Abk" STR_ue "hlen"
34
+#define MSG_PREHEAT_ABS_SETTINGS            "Vorwärm. ABS Ein."
35
+#define MSG_COOLDOWN                        "Abkühlen"
31 36
 #define MSG_SWITCH_PS_ON                    "Netzteil Ein"
32 37
 #define MSG_SWITCH_PS_OFF                   "Netzteil Aus"
33 38
 #define MSG_RETRACT                         "Retract"
@@ -40,14 +45,14 @@
40 45
 #define MSG_MOVE_1MM                        " 1.0 mm"
41 46
 #define MSG_MOVE_10MM                       "10.0 mm"
42 47
 #define MSG_SPEED                           "Geschw."
43
-#define MSG_NOZZLE                          "D" STR_ue "se"
48
+#define MSG_NOZZLE                          "Düse"
44 49
 #define MSG_BED                             "Bett"
45
-#define MSG_FAN_SPEED                       "L" STR_ue "ftergeschw."
50
+#define MSG_FAN_SPEED                       "Lüftergeschw."
46 51
 #define MSG_FLOW                            "Fluss"
47 52
 #define MSG_CONTROL                         "Einstellungen"
48
-#define MSG_MIN                             STR_THERMOMETER " Min"
49
-#define MSG_MAX                             STR_THERMOMETER " Max"
50
-#define MSG_FACTOR                          STR_THERMOMETER " Faktor"
53
+#define MSG_MIN                             LCD_STR_THERMOMETER " Min"
54
+#define MSG_MAX                             LCD_STR_THERMOMETER " Max"
55
+#define MSG_FACTOR                          LCD_STR_THERMOMETER " Faktor"
51 56
 #define MSG_AUTOTEMP                        "AutoTemp"
52 57
 #define MSG_ON                              "Ein"
53 58
 #define MSG_OFF                             "Aus"
@@ -75,7 +80,7 @@
75 80
 #define MSG_TEMPERATURE                     "Temperatur"
76 81
 #define MSG_MOTION                          "Bewegung"
77 82
 #define MSG_VOLUMETRIC                      "Filament"
78
-#define MSG_VOLUMETRIC_ENABLED		          "E in mm" STR_h3
83
+#define MSG_VOLUMETRIC_ENABLED              "E in mm³"
79 84
 #define MSG_FILAMENT_SIZE_EXTRUDER_0        "Filament D 1"
80 85
 #define MSG_FILAMENT_SIZE_EXTRUDER_1        "Filament D 2"
81 86
 #define MSG_FILAMENT_SIZE_EXTRUDER_2        "Filament D 3"

+ 15
- 5
Marlin/language_en.h View File

@@ -2,12 +2,22 @@
2 2
  * English
3 3
  *
4 4
  * LCD Menu Messages
5
- * Please note these are limited to 17 characters!
5
+ * Se also documentation/LCDLanguageFont.md
6 6
  *
7 7
  */
8 8
 #ifndef LANGUAGE_EN_H
9 9
 #define LANGUAGE_EN_H
10 10
 
11
+#if !( defined(MAPPER_NON)|| defined(MAPPER_C2C3)|| defined(MAPPER_D0D1)|| defined(MAPPER_D0D1_MOD)|| defined(MAPPER_E382E383) )
12
+  #define MAPPER_NON         // For direct asci codes
13
+#endif
14
+
15
+//#define SIMULATE_ROMFONT //Comment in to see what is seen on the character based displays
16
+#if !( defined(SIMULATE_ROMFONT)|| defined(DISPLAY_CHARSET_ISO10646_1)|| defined(DISPLAY_CHARSET_ISO10646_5)|| defined(DISPLAY_CHARSET_ISO10646_KANA) )
17
+  #define DISPLAY_CHARSET_ISO10646_1 // use the better font on full graphic displays.
18
+#endif
19
+
20
+
11 21
 #ifndef WELCOME_MSG
12 22
 #define WELCOME_MSG                         MACHINE_NAME " ready."
13 23
 #endif
@@ -159,13 +169,13 @@
159 169
 #define MSG_CONTROL                         "Control"
160 170
 #endif
161 171
 #ifndef MSG_MIN
162
-#define MSG_MIN                             " " STR_THERMOMETER " Min"
172
+#define MSG_MIN                             " "LCD_STR_THERMOMETER " Min"
163 173
 #endif
164 174
 #ifndef MSG_MAX
165
-#define MSG_MAX                             " " STR_THERMOMETER " Max"
175
+#define MSG_MAX                             " "LCD_STR_THERMOMETER " Max"
166 176
 #endif
167 177
 #ifndef MSG_FACTOR
168
-#define MSG_FACTOR                          " " STR_THERMOMETER " Fact"
178
+#define MSG_FACTOR                          " "LCD_STR_THERMOMETER " Fact"
169 179
 #endif
170 180
 #ifndef MSG_AUTOTEMP
171 181
 #define MSG_AUTOTEMP                        "Autotemp"
@@ -261,7 +271,7 @@
261 271
 #define MSG_VOLUMETRIC                      "Filament"
262 272
 #endif
263 273
 #ifndef MSG_VOLUMETRIC_ENABLED
264
-#define MSG_VOLUMETRIC_ENABLED              "E in mm" STR_h3
274
+#define MSG_VOLUMETRIC_ENABLED              "E in mm3"
265 275
 #endif
266 276
 #ifndef MSG_FILAMENT_SIZE_EXTRUDER_0
267 277
 #define MSG_FILAMENT_SIZE_EXTRUDER_0        "Fil. Dia. 1"

+ 9
- 4
Marlin/language_es.h View File

@@ -2,12 +2,17 @@
2 2
  * Spanish
3 3
  *
4 4
  * LCD Menu Messages
5
- * Please note these are limited to 17 characters!
5
+ * See also documentation/LCDLanguageFont.md
6 6
  *
7 7
  */
8 8
 #ifndef LANGUAGE_ES_H
9 9
 #define LANGUAGE_ES_H
10 10
 
11
+#define MAPPER_NON
12
+// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h
13
+//#define SIMULATE_ROMFONT
14
+#define DISPLAY_CHARSET_ISO10646_1
15
+
11 16
 #define WELCOME_MSG                         MACHINE_NAME " lista."
12 17
 #define MSG_SD_INSERTED                     "Tarjeta colocada"
13 18
 #define MSG_SD_REMOVED                      "Tarjeta retirada"
@@ -46,9 +51,9 @@
46 51
 #define MSG_FAN_SPEED                       "Ventilador"
47 52
 #define MSG_FLOW                            "Flujo"
48 53
 #define MSG_CONTROL                         "Control"
49
-#define MSG_MIN                             "\002 Min"
50
-#define MSG_MAX                             "\002 Max"
51
-#define MSG_FACTOR                          "\002 Fact"
54
+#define MSG_MIN                             LCD_STR_THERMOMETER " Min"
55
+#define MSG_MAX                             LCD_STR_THERMOMETER " Max"
56
+#define MSG_FACTOR                          LCD_STR_THERMOMETER " Fact"
52 57
 #define MSG_AUTOTEMP                        "Autotemp"
53 58
 #define MSG_ON                              "On"
54 59
 #define MSG_OFF                             "Off"

+ 9
- 4
Marlin/language_eu.h View File

@@ -2,12 +2,17 @@
2 2
  * Basque-Euskera
3 3
  *
4 4
  * LCD Menu Messages
5
- * Please note these are limited to 17 characters!
5
+ * See also documentation/LCDLanguageFont.md
6 6
  *
7 7
  */
8 8
 #ifndef LANGUAGE_EU_H
9 9
 #define LANGUAGE_EU_H
10 10
 
11
+#define MAPPER_NON
12
+// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h
13
+//#define SIMULATE_ROMFONT
14
+#define DISPLAY_CHARSET_ISO10646_1
15
+
11 16
 #define WELCOME_MSG                         MACHINE_NAME " prest."
12 17
 #define MSG_SD_INSERTED                     "Txartela sartuta"
13 18
 #define MSG_SD_REMOVED                      "Txartela kenduta"
@@ -46,9 +51,9 @@
46 51
 #define MSG_FAN_SPEED                       "Haizagailua"
47 52
 #define MSG_FLOW                            "Fluxua"
48 53
 #define MSG_CONTROL                         "Kontrola"
49
-#define MSG_MIN                             " \002 Min"
50
-#define MSG_MAX                             " \002 Max"
51
-#define MSG_FACTOR                          " \002 Faktorea"
54
+#define MSG_MIN                             LCD_STR_THERMOMETER " Min"
55
+#define MSG_MAX                             LCD_STR_THERMOMETER " Max"
56
+#define MSG_FACTOR                          LCD_STR_THERMOMETER " Faktorea"
52 57
 #define MSG_AUTOTEMP                        "Auto tenperatura"
53 58
 #define MSG_ON                              "On "
54 59
 #define MSG_OFF                             "Off"

+ 31
- 26
Marlin/language_fi.h View File

@@ -2,12 +2,17 @@
2 2
  * Finnish
3 3
  *
4 4
  * LCD Menu Messages
5
- * Please note these are limited to 17 characters!
5
+ * See also documentation/LCDLanguageFont.md
6 6
  *
7 7
  */
8 8
 #ifndef LANGUAGE_FI_H
9 9
 #define LANGUAGE_FI_H
10 10
 
11
+#define MAPPER_C2C3
12
+// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h
13
+//#define SIMULATE_ROMFONT
14
+#define DISPLAY_CHARSET_ISO10646_1
15
+
11 16
 #define WELCOME_MSG                         MACHINE_NAME " valmis."
12 17
 #define MSG_SD_INSERTED                     "Kortti asetettu"
13 18
 #define MSG_SD_REMOVED                      "Kortti poistettu"
@@ -17,21 +22,21 @@
17 22
 #define MSG_AUTO_HOME                       "Aja referenssiin"
18 23
 #define MSG_SET_HOME_OFFSETS                "Set home offsets"
19 24
 #define MSG_SET_ORIGIN                      "Aseta origo"
20
-#define MSG_PREHEAT_PLA                     "Esil" STR_ae "mmit" STR_ae " PLA"
21
-#define MSG_PREHEAT_PLA_N                   "Esil" STR_ae "mmit" STR_ae " PLA "
22
-#define MSG_PREHEAT_PLA_ALL                 "Esil" STR_ae ". PLA Kaikki"
23
-#define MSG_PREHEAT_PLA_BEDONLY             "Esil" STR_ae ". PLA Alusta"
24
-#define MSG_PREHEAT_PLA_SETTINGS            "Esil" STR_ae "mm. PLA konf"
25
-#define MSG_PREHEAT_ABS                     "Esil" STR_ae "mmit" STR_ae " ABS"
26
-#define MSG_PREHEAT_ABS_N                   "Esil" STR_ae "mmit" STR_ae " ABS "
27
-#define MSG_PREHEAT_ABS_ALL                 "Esil" STR_ae ". ABS Kaikki"
28
-#define MSG_PREHEAT_ABS_BEDONLY             "Esil" STR_ae ". ABS Alusta"
29
-#define MSG_PREHEAT_ABS_SETTINGS            "Esil" STR_ae "mm. ABS konf"
30
-#define MSG_COOLDOWN                        "J" STR_ae "" STR_ae "hdyt" STR_ae ""
31
-#define MSG_SWITCH_PS_ON                    "Virta p" STR_ae "" STR_ae "lle"
25
+#define MSG_PREHEAT_PLA                     "Esilämmitä PLA"
26
+#define MSG_PREHEAT_PLA_N                   "Esilämmitä PLA "
27
+#define MSG_PREHEAT_PLA_ALL                 "Esilä. PLA Kaikki"
28
+#define MSG_PREHEAT_PLA_BEDONLY             "Esilä. PLA Alusta"
29
+#define MSG_PREHEAT_PLA_SETTINGS            "Esilämm. PLA konf"
30
+#define MSG_PREHEAT_ABS                     "Esilämmitä ABS"
31
+#define MSG_PREHEAT_ABS_N                   "Esilämmitä ABS "
32
+#define MSG_PREHEAT_ABS_ALL                 "Esilä. ABS Kaikki"
33
+#define MSG_PREHEAT_ABS_BEDONLY             "Esilä. ABS Alusta"
34
+#define MSG_PREHEAT_ABS_SETTINGS            "Esilämm. ABS konf"
35
+#define MSG_COOLDOWN                        "Jäähdytä"
36
+#define MSG_SWITCH_PS_ON                    "Virta päälle"
32 37
 #define MSG_SWITCH_PS_OFF                   "Virta pois"
33 38
 #define MSG_EXTRUDE                         "Pursota"
34
-#define MSG_RETRACT                         "Ved" STR_ae " takaisin"
39
+#define MSG_RETRACT                         "Vedä takaisin"
35 40
 #define MSG_MOVE_AXIS                       "Liikuta akseleita"
36 41
 #define MSG_MOVE_X                          "Liikuta X"
37 42
 #define MSG_MOVE_Y                          "Liikuta Y"
@@ -46,9 +51,9 @@
46 51
 #define MSG_FAN_SPEED                       "Tuul. nopeus"
47 52
 #define MSG_FLOW                            "Virtaus"
48 53
 #define MSG_CONTROL                         "Kontrolli"
49
-#define MSG_MIN                             STR_THERMOMETER " Min"
50
-#define MSG_MAX                             STR_THERMOMETER " Max"
51
-#define MSG_FACTOR                          STR_THERMOMETER " Kerr"
54
+#define MSG_MIN                             LCD_STR_THERMOMETER " Min"
55
+#define MSG_MAX                             LCD_STR_THERMOMETER " Max"
56
+#define MSG_FACTOR                          LCD_STR_THERMOMETER " Kerr"
52 57
 #define MSG_AUTOTEMP                        "Autotemp"
53 58
 #define MSG_ON                              "On "
54 59
 #define MSG_OFF                             "Off"
@@ -73,10 +78,10 @@
73 78
 #define MSG_YSTEPS                          "Ysteps/mm"
74 79
 #define MSG_ZSTEPS                          "Zsteps/mm"
75 80
 #define MSG_ESTEPS                          "Esteps/mm"
76
-#define MSG_TEMPERATURE                     "L" STR_ae "mp" STR_oe "tila"
81
+#define MSG_TEMPERATURE                     "Lämpötila"
77 82
 #define MSG_MOTION                          "Liike"
78 83
 #define MSG_VOLUMETRIC                      "Filament"
79
-#define MSG_VOLUMETRIC_ENABLED              "E in mm3"
84
+#define MSG_VOLUMETRIC_ENABLED              "E in mm³"
80 85
 #define MSG_FILAMENT_SIZE_EXTRUDER_0        "Fil. Dia. 1"
81 86
 #define MSG_FILAMENT_SIZE_EXTRUDER_1        "Fil. Dia. 2"
82 87
 #define MSG_FILAMENT_SIZE_EXTRUDER_2        "Fil. Dia. 3"
@@ -84,13 +89,13 @@
84 89
 #define MSG_STORE_EPROM                     "Tallenna muistiin"
85 90
 #define MSG_LOAD_EPROM                      "Lataa muistista"
86 91
 #define MSG_RESTORE_FAILSAFE                "Palauta oletus"
87
-#define MSG_REFRESH                         "P" STR_ae "ivit" STR_ae ""
92
+#define MSG_REFRESH                         "Päivitä"
88 93
 #define MSG_WATCH                           "Seuraa"
89 94
 #define MSG_PREPARE                         "Valmistele"
90
-#define MSG_TUNE                            "S" STR_ae "" STR_ae "d" STR_ae ""
91
-#define MSG_PAUSE_PRINT                     "Keskeyt" STR_ae " tulostus"
95
+#define MSG_TUNE                            "Säädä"
96
+#define MSG_PAUSE_PRINT                     "Keskeytä tulostus"
92 97
 #define MSG_RESUME_PRINT                    "Jatka tulostusta"
93
-#define MSG_STOP_PRINT                      "Pys" STR_ae "yt" STR_ae " tulostus"
98
+#define MSG_STOP_PRINT                      "Pysäytä tulostus"
94 99
 #define MSG_CARD_MENU                       "Korttivalikko"
95 100
 #define MSG_NO_CARD                         "Ei korttia"
96 101
 #define MSG_DWELL                           "Nukkumassa..."
@@ -100,9 +105,9 @@
100 105
 #define MSG_NO_MOVE                         "Ei liiketta."
101 106
 #define MSG_KILLED                          "KILLED. "
102 107
 #define MSG_STOPPED                         "STOPPED. "
103
-#define MSG_CONTROL_RETRACT                 "Ved" STR_ae " mm"
104
-#define MSG_CONTROL_RETRACT_SWAP            "Va. Ved" STR_ae " mm"
105
-#define MSG_CONTROL_RETRACTF                "Ved" STR_ae " V"
108
+#define MSG_CONTROL_RETRACT                 "Vedä mm"
109
+#define MSG_CONTROL_RETRACT_SWAP            "Va. Vedä mm"
110
+#define MSG_CONTROL_RETRACTF                "Vedä V"
106 111
 #define MSG_CONTROL_RETRACT_ZLIFT           "Z mm"
107 112
 #define MSG_CONTROL_RETRACT_RECOVER         "UnRet +mm"
108 113
 #define MSG_CONTROL_RETRACT_RECOVER_SWAP    "Va. UnRet +mm"

+ 11
- 5
Marlin/language_fr.h View File

@@ -2,12 +2,18 @@
2 2
  * French
3 3
  *
4 4
  * LCD Menu Messages
5
- * Please note these are limited to 17 characters!
5
+ * See also documentation/LCDLanguageFont.md
6 6
  *
7 7
  */
8 8
 #ifndef LANGUAGE_FR_H
9 9
 #define LANGUAGE_FR_H
10 10
 
11
+#define MAPPER_NON
12
+// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h
13
+//#define SIMULATE_ROMFONT
14
+#define DISPLAY_CHARSET_ISO10646_1
15
+
16
+
11 17
 #define WELCOME_MSG                         MACHINE_NAME " prete."
12 18
 #define MSG_SD_INSERTED                     "Carte inseree"
13 19
 #define MSG_SD_REMOVED                      "Carte retiree"
@@ -46,9 +52,9 @@
46 52
 #define MSG_FAN_SPEED                       "Vite. ventilateur"
47 53
 #define MSG_FLOW                            "Flux"
48 54
 #define MSG_CONTROL                         "Controler"
49
-#define MSG_MIN                             " \002 Min"
50
-#define MSG_MAX                             " \002 Max"
51
-#define MSG_FACTOR                          " \002 Facteur"
55
+#define MSG_MIN                             LCD_STR_THERMOMETER " Min"
56
+#define MSG_MAX                             LCD_STR_THERMOMETER " Max"
57
+#define MSG_FACTOR                          LCD_STR_THERMOMETER " Facteur"
52 58
 #define MSG_AUTOTEMP                        "Temp. Auto."
53 59
 #define MSG_ON                              "Marche "
54 60
 #define MSG_OFF                             "Arret"
@@ -76,7 +82,7 @@
76 82
 #define MSG_TEMPERATURE                     "Temperature"
77 83
 #define MSG_MOTION                          "Mouvement"
78 84
 #define MSG_VOLUMETRIC                      "Filament"
79
-#define MSG_VOLUMETRIC_ENABLED		        "E in mm3"
85
+#define MSG_VOLUMETRIC_ENABLED              "E in mm3"
80 86
 #define MSG_FILAMENT_SIZE_EXTRUDER_0        "Fil. Dia. 1"
81 87
 #define MSG_FILAMENT_SIZE_EXTRUDER_1        "Fil. Dia. 2"
82 88
 #define MSG_FILAMENT_SIZE_EXTRUDER_2        "Fil. Dia. 3"

+ 9
- 4
Marlin/language_it.h View File

@@ -2,12 +2,17 @@
2 2
  * Italian
3 3
  *
4 4
  * LCD Menu Messages
5
- * Please note these are limited to 17 characters!
5
+ * See also documentation/LCDLanguageFont.md
6 6
  *
7 7
  */
8 8
 #ifndef LANGUAGE_IT_H
9 9
 #define LANGUAGE_IT_H
10 10
 
11
+#define MAPPER_NON
12
+// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h
13
+//#define SIMULATE_ROMFONT
14
+#define DISPLAY_CHARSET_ISO10646_1
15
+
11 16
 #define WELCOME_MSG                         MACHINE_NAME " pronto."
12 17
 #define MSG_SD_INSERTED                     "SD Card inserita"
13 18
 #define MSG_SD_REMOVED                      "SD Card rimossa"
@@ -46,9 +51,9 @@
46 51
 #define MSG_FAN_SPEED                       "Ventola"
47 52
 #define MSG_FLOW                            "Flusso"
48 53
 #define MSG_CONTROL                         "Controllo"
49
-#define MSG_MIN                             " \002 Min"
50
-#define MSG_MAX                             " \002 Max"
51
-#define MSG_FACTOR                          " \002 Fact"
54
+#define MSG_MIN                             LCD_STR_THERMOMETER " Min"
55
+#define MSG_MAX                             LCD_STR_THERMOMETER " Max"
56
+#define MSG_FACTOR                          LCD_STR_THERMOMETER " Fact"
52 57
 #define MSG_AUTOTEMP                        "Autotemp"
53 58
 #define MSG_ON                              "ON "
54 59
 #define MSG_OFF                             "OFF"

+ 147
- 0
Marlin/language_kana.h View File

@@ -0,0 +1,147 @@
1
+/**
2
+ * Japanese (Kana)
3
+ *
4
+ * LCD Menu Messages
5
+ * See also documentation/LCDLanguageFont.md
6
+ *
7
+ */
8
+ 
9
+#ifndef LANGUAGE_KANA_H
10
+#define LANGUAGE_KANA_H
11
+
12
+#define MAPPER_NON
13
+// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h
14
+#define SIMULATE_ROMFONT
15
+#define DISPLAY_CHARSET_ISO10646_KANA
16
+
17
+// 片仮名表示定義
18
+#define WELCOME_MSG                         MACHINE_NAME " ready."
19
+#define MSG_SD_INSERTED                     "\xb6\xb0\xc4\xde\x20\xbf\xb3\xc6\xad\xb3\xbb\xda\xcf\xbc\xc0" // "Card inserted"
20
+#define MSG_SD_REMOVED                      "\xb6\xb0\xc4\xde\xb6xde\xb1\xd8\xcf\xbe\xdd"                  // "Card removed"
21
+#define MSG_MAIN                            "\xd2\xb2\xdd"                                                 // "Main"
22
+#define MSG_AUTOSTART                       "\xbc\xde\xc4\xde\xb3\xb6\xb2\xbc"                             // "Autostart"
23
+#define MSG_DISABLE_STEPPERS                "\xd3\xb0\xc0\xb0\xc3\xde\xdd\xb9\xde\xdd\x20\xb5\xcc"         // "Disable steppers"
24
+#define MSG_AUTO_HOME                       "\xb9\xde\xdd\xc3\xdd\xc6\xb2\xc4\xde\xb3"                     // "Auto home"
25
+#define MSG_SET_HOME_OFFSETS                "\xb7\xbc\xde\xad\xdd\xb5\xcc\xbe\xaf\xc4\xbe\xaf\xc3\xb2"     // "Set home offsets"
26
+#define MSG_SET_ORIGIN                      "\xb7\xbc\xde\xad\xdd\xbe\xaf\xc4"                             // "Set origin"
27
+#define MSG_PREHEAT_PLA                     "PLA \xd6\xc8\xc2"                                             // "Preheat PLA"
28
+#define MSG_PREHEAT_PLA_N                   MSG_PREHEAT_PLA " "
29
+#define MSG_PREHEAT_PLA_ALL                 MSG_PREHEAT_PLA " \xbd\xcd\xde\xc3"                            // " All"
30
+#define MSG_PREHEAT_PLA_BEDONLY             MSG_PREHEAT_PLA " \xcd\xde\xaf\xc4\xde"                        // "Bed"
31
+#define MSG_PREHEAT_PLA_SETTINGS            MSG_PREHEAT_PLA " \xbe\xaf\xc3\xb2"                            // "conf"
32
+#define MSG_PREHEAT_ABS                     "ABS \xd6\xc8\xc2"                                             // "Preheat ABS"
33
+#define MSG_PREHEAT_ABS_N                   MSG_PREHEAT_ABS " "
34
+#define MSG_PREHEAT_ABS_ALL                 MSG_PREHEAT_ABS " \xbd\xcd\xde\xc3"                            // " All"
35
+#define MSG_PREHEAT_ABS_BEDONLY             MSG_PREHEAT_ABS " \xcd\xde\xaf\xc4\xde"                        // "Bed"
36
+#define MSG_PREHEAT_ABS_SETTINGS            MSG_PREHEAT_ABS " \xbe\xaf\xc3\xb2"                            // "conf"
37
+#define MSG_COOLDOWN                        "\xb6\xc8\xc2\xc3\xb2\xbc"                                     // "Cooldown"
38
+#define MSG_SWITCH_PS_ON                    "\xc3\xde\xdd\xb9\xdd\xde\x20\xb5\xdd"                         // "Switch power on"
39
+#define MSG_SWITCH_PS_OFF                   "\xc3\xde\xdd\xb9\xdd\xde\x20\xb5\xcc"                         // "Switch power off"
40
+#define MSG_EXTRUDE                         "\xb5\xbc\xc0\xde\xbc"                                         // "Extrude"
41
+#define MSG_RETRACT                         "\xd8\xc4\xd7\xb8\xc4"                                         // "Retract"
42
+#define MSG_MOVE_AXIS                       "\xbc\xde\xb8\xb2\xc4\xde\xb3"                                 // "Move axis"
43
+#define MSG_MOVE_X                          "X\xbc\xde\xb8\x20\xb2\xc4\xde\xb3"                            // "Move X"
44
+#define MSG_MOVE_Y                          "Y\xbc\xde\xb8\x20\xb2\xc4\xde\xb3"                            // "Move Y"
45
+#define MSG_MOVE_Z                          "Z\xbc\xde\xb8\x20\xb2\xc4\xde\xb3"                            // "Move Z"
46
+#define MSG_MOVE_E                          "\xb4\xb8\xbd\xc4\xd9\xb0\xc0\xde\xb0"                         // "Extruder"
47
+#define MSG_MOVE_01MM                       "0.1mm \xb2\xc4\xde\xb3"                                       // "Move 0.1mm"
48
+#define MSG_MOVE_1MM                        "  1mm \xb2\xc4\xde\xb3"                                       // "Move 1mm"
49
+#define MSG_MOVE_10MM                       " 10mm \xb2\xc4\xde\xb3"                                       // "Move 10mm"
50
+#define MSG_SPEED                           "\xbd\xcb\xdf\xb0\xc4\xde"                                     // "Speed"
51
+#define MSG_NOZZLE                          "\xc9\xbd\xde\xd9"                                             // "Nozzle"
52
+#define MSG_BED                             "\xcd\xde\xaf\xc4\xde"                                         // "Bed"
53
+#define MSG_FAN_SPEED                       "\xcc\xa7\xdd\xbf\xb8\xc4\xde"                                 // "Fan speed"
54
+#define MSG_FLOW                            "\xb5\xb8\xd8\xd8\xae\xb3"                                     // "Flow"
55
+#define MSG_CONTROL                         "\xba\xdd\xc4\xdb\xb0\xd9"                                     // "Control"
56
+#define MSG_MIN                             LCD_STR_THERMOMETER " Min"
57
+#define MSG_MAX                             LCD_STR_THERMOMETER " Max"
58
+#define MSG_FACTOR                          LCD_STR_THERMOMETER " Fact"
59
+#define MSG_AUTOTEMP                        "\xbc\xde\xc4\xde\xb3\xb5\xdd\xc4\xde"                         // "Autotemp"
60
+#define MSG_ON                              "On "
61
+#define MSG_OFF                             "Off"
62
+#define MSG_PID_P                           "PID-P"
63
+#define MSG_PID_I                           "PID-I"
64
+#define MSG_PID_D                           "PID-D"
65
+#define MSG_PID_C                           "PID-C"
66
+#define MSG_ACC                             "\xb6\xbf\xb8\xc4\xde"                                         // "Accel"
67
+#define MSG_VXY_JERK                        "Vxy-jerk"
68
+#define MSG_VZ_JERK                         "Vz-jerk"
69
+#define MSG_VE_JERK                         "Ve-jerk"
70
+#define MSG_VMAX                            "Vmax "
71
+#define MSG_X                               "x"
72
+#define MSG_Y                               "y"
73
+#define MSG_Z                               "z"
74
+#define MSG_E                               "e"
75
+#define MSG_VMIN                            "Vmin"
76
+#define MSG_VTRAV_MIN                       "VTrav min"
77
+#define MSG_AMAX                            "Amax "
78
+#define MSG_A_RETRACT                       "A-retract"
79
+#define MSG_XSTEPS                          "Xsteps/mm"
80
+#define MSG_YSTEPS                          "Ysteps/mm"
81
+#define MSG_ZSTEPS                          "Zsteps/mm"
82
+#define MSG_ESTEPS                          "Esteps/mm"
83
+#define MSG_TEMPERATURE                     "\xb5\xdd\xc4\xde"                                             // "Temperature"
84
+#define MSG_MOTION                          "\xb3\xba\xde\xb7\xbe\xaf\xc3\xb2"                             // "Motion"
85
+#define MSG_VOLUMETRIC                      "\xcc\xa8\xd7\xd2\xdd\xc4"                                     // "Filament"
86
+#define MSG_VOLUMETRIC_ENABLED              "E in mm3"
87
+#define MSG_FILAMENT_SIZE_EXTRUDER_0        "Fil. Dia. 1"
88
+#define MSG_FILAMENT_SIZE_EXTRUDER_1        "Fil. Dia. 2"
89
+#define MSG_FILAMENT_SIZE_EXTRUDER_2        "Fil. Dia. 3"
90
+#define MSG_FILAMENT_SIZE_EXTRUDER_3        "Fil. Dia. 4"
91
+#define MSG_CONTRAST                        "LCD\xba\xdd\xc4\xd7\xbd\xc4"                                  // "LCD contrast"
92
+#define MSG_STORE_EPROM                     "\xd2\xd3\xd8\xcd\xb6\xb8\xc9\xb3"                             // "Store memory"
93
+#define MSG_LOAD_EPROM                      "\xd2\xd3\xd8\xb6\xd7\xd6\xd0\ba\xd0"                          // "Load memory"
94
+#define MSG_RESTORE_FAILSAFE                "\xbe\xaf\xc3\xb2\xd8\xbe\xaf\xc4"                             // "Restore failsafe"
95
+#define MSG_REFRESH                         "\xd8\xcc\xda\xaf\xbc\xad"                                     // "Refresh"
96
+#define MSG_WATCH                           "\xb2\xdd\xcc\xab"                                             // "Info screen"
97
+#define MSG_PREPARE                         "\xbc\xde\xad\xdd\xcb\xde\xbe\xaf\xc3\xb2"                     // "Prepare"
98
+#define MSG_TUNE                            "\xc1\xae\xb3\xbe\xb2"                                         // "Tune"
99
+#define MSG_PAUSE_PRINT                     "\xb2\xc1\xbc\xde\xc3\xb2\xbc"                                 // "Pause print"
100
+#define MSG_RESUME_PRINT                    "\xcc\xdf\xd8\xdd\xc4\xbb\xb2\xb6\xb2"                         // "Resume print"
101
+#define MSG_STOP_PRINT                      "\xcc\xdf\xd8\xdd\xc4\xc3\xb2\xbc"                             // "Stop print"
102
+#define MSG_CARD_MENU                       "SD\xb6\xb0\xc4\xde\xb6\xd7\xcc\xdf\xd8\xdd\xc4"               // "Print from SD"
103
+#define MSG_NO_CARD                         "SD\xb6\xb0\xc4\xde\xb6\xde\xb1\xd8\xcf\xbe\xdd"               // "No SD card"
104
+#define MSG_DWELL                           "\xbd\xd8\xb0\xcc\xdf"                                         // "Sleep..."
105
+#define MSG_USERWAIT                        "\xbc\xca\xde\xd7\xb9\xb5\xcf\xc1\xb8\xc0\xde\xbb\xb2"         // "Wait for user..."
106
+#define MSG_RESUMING                        "\xcc\xdf\xd8\xdd\xc4\xbb\xb2\xb6\xb2"                         // "Resuming print"
107
+#define MSG_PRINT_ABORTED                   "\xcc\xdf\xd8\xdd\xc4\xc1\xad\xb3\xbc\xbb\xda\xcf\xbc\xc0"     // "Print aborted"
108
+#define MSG_NO_MOVE                         "\xb3\xba\xde\xb7\xcf\xbe\xdd"                                 // "No move."
109
+#define MSG_KILLED                          "\xbc\xae\xb3\xb7\xae"                                         // "KILLED. "
110
+#define MSG_STOPPED                         "\xc3\xb2\xbc\xbc\xcf\xbc\xc0"                                 // "STOPPED. "
111
+#define MSG_CONTROL_RETRACT                 "Retract mm"
112
+#define MSG_CONTROL_RETRACT_SWAP            "Swap Re.mm"
113
+#define MSG_CONTROL_RETRACTF                "Retract  V"
114
+#define MSG_CONTROL_RETRACT_ZLIFT           "Hop mm"
115
+#define MSG_CONTROL_RETRACT_RECOVER         "UnRet +mm"
116
+#define MSG_CONTROL_RETRACT_RECOVER_SWAP    "S UnRet+mm"
117
+#define MSG_CONTROL_RETRACT_RECOVERF        "UnRet  V"
118
+#define MSG_AUTORETRACT                     "AutoRetr."
119
+#define MSG_FILAMENTCHANGE                  "\xcc\xa8\xd7\xd2\xdd\xc4\xba\xb3\xb6\xdd"                     // "Change filament"
120
+#define MSG_INIT_SDCARD                     "SD\xb6\xb0\xc4\xde\xbb\xb2\xd6\xd0\xba\xd0"                   // "Init. SD card"
121
+#define MSG_CNG_SDCARD                      "SD\xb6\xb0\xc4\xde\xba\xb3\xb6\xdd"                           // "Change SD card"
122
+#define MSG_ZPROBE_OUT                      "Z\xcc\xdf\xdb\xb0\xcc\xde \xcd\xde\xaf\xc4\xee\xb6\xde\xb2"   // "Z probe out. bed"
123
+#define MSG_POSITION_UNKNOWN                "\xb9\xde\xdd\xc3\xdd\xcaXY\xb2\xc4\xde\xb3\xba\xdeZ"           // "Home X/Y before Z"
124
+#define MSG_ZPROBE_ZOFFSET                  "Z\xb5\xcc\xbe\xaf\xc4"                                        // "Z Offset"
125
+#define MSG_BABYSTEP_X                      "\xcb\xde\xc4\xde\xb3 X"                                       // "Babystep X"
126
+#define MSG_BABYSTEP_Y                      "\xcb\xde\xc4\xde\xb3 Y"                                       // "Babystep Y"
127
+#define MSG_BABYSTEP_Z                      "\xcb\xde\xc4\xde\xb3 Z"                                       // "Babystep Z"
128
+#define MSG_ENDSTOP_ABORT                   "Endstop abort"
129
+
130
+/* These are from language.h. PLEASE DON'T TRANSLATE! All translatable messages can be found in language_en.h
131
+#define MSG_HEATING                         "\xb6\xc8\xc2\xc1\xad\xb3..."                                  // "Heating..."
132
+#define MSG_HEATING_COMPLETE                "\xb6\xc8\xc2\xb6\xdd\xd8x\xae\xb3"                            // "Heating done."
133
+#define MSG_BED_HEATING                     "\xcd\xde\xaf\xc4\xde\xb6\xc8\xc2\xc1\xad\xb3"                 // "Bed Heating."
134
+#define MSG_BED_DONE                        "\xcd\xde\xaf\xc4\xde\xb6\xc8\xc2\xb6\xdd\xd8x\xae\xb3"        // "Bed done."
135
+#define MSG_ENDSTOPS_HIT                    "endstops hit: "
136
+                   ^ typho
137
+*/
138
+
139
+#ifdef DELTA_CALIBRATION_MENU
140
+    #define MSG_DELTA_CALIBRATE             "Delta Calibration"
141
+    #define MSG_DELTA_CALIBRATE_X           "Calibrate X"
142
+    #define MSG_DELTA_CALIBRATE_Y           "Calibrate Y"
143
+    #define MSG_DELTA_CALIBRATE_Z           "Calibrate Z"
144
+    #define MSG_DELTA_CALIBRATE_CENTER      "Calibrate Center"
145
+#endif // DELTA_CALIBRATION_MENU
146
+
147
+#endif // LANGUAGE_KANA_H

+ 142
- 0
Marlin/language_kana_utf8.h View File

@@ -0,0 +1,142 @@
1
+/**
2
+ * Japanese (Kana UTF8 version)
3
+ *
4
+ * LCD Menu Messages
5
+ * See also documentation/LCDLanguageFont.md
6
+ *
7
+ */
8
+ 
9
+#ifndef LANGUAGE_KANA_UTF_H
10
+#define LANGUAGE_KANA_UTF_H
11
+
12
+#define MAPPER_E382E383
13
+// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h
14
+//#define SIMULATE_ROMFONT
15
+#define DISPLAY_CHARSET_ISO10646_KANA
16
+
17
+// This is very crude replacement of the codes used in language_kana.h from somebody who really does not know what he is doing.
18
+// Just to show the potential benefit of unicode. 
19
+// This translation can be improved by using the full charset of unicode codeblock U+30A0 to U+30FF.
20
+
21
+// 片仮名表示定義
22
+#define WELCOME_MSG                         MACHINE_NAME " ready."
23
+#define MSG_SD_INSERTED                     "セード ンウニユウアレマシタ"          // "Card inserted"
24
+#define MSG_SD_REMOVED                      "セードゼアリマセン"               // "Card removed"
25
+#define MSG_MAIN                            "ナイン"                        // "Main"
26
+#define MSG_AUTOSTART                       "ヅドウセイシ"                   // "Autostart"
27
+#define MSG_DISABLE_STEPPERS                "モーターデンゲン オフ"             // "Disable steppers"
28
+#define MSG_AUTO_HOME                       "ゲンテンニイドウ"                // "Auto home"
29
+#define MSG_SET_HOME_OFFSETS                "キヅユンオフセツトセツテイ"         // "Set home offsets"
30
+#define MSG_SET_ORIGIN                      "キヅユンセツト"                 // "Set origin"
31
+#define MSG_PREHEAT_PLA                     "PLA ヨネシ"                    // "Preheat PLA"
32
+#define MSG_PREHEAT_PLA_N                   MSG_PREHEAT_PLA " "
33
+#define MSG_PREHEAT_PLA_ALL                 MSG_PREHEAT_PLA " スベテ"      // " All"
34
+#define MSG_PREHEAT_PLA_BEDONLY             MSG_PREHEAT_PLA " ベツド"    // "Bed"
35
+#define MSG_PREHEAT_PLA_SETTINGS            MSG_PREHEAT_PLA " セツテイ"     // "conf"
36
+#define MSG_PREHEAT_ABS                     "ABS ヨネシ"                    // "Preheat ABS"
37
+#define MSG_PREHEAT_ABS_N                   MSG_PREHEAT_ABS " "
38
+#define MSG_PREHEAT_ABS_ALL                 MSG_PREHEAT_ABS " スベテ"      // " All"
39
+#define MSG_PREHEAT_ABS_BEDONLY             MSG_PREHEAT_ABS " ベツド"    // "Bed"
40
+#define MSG_PREHEAT_ABS_SETTINGS            MSG_PREHEAT_ABS " セツテイ"    // "conf"
41
+#define MSG_COOLDOWN                        "セネシテイシ"                    // "Cooldown"
42
+#define MSG_SWITCH_PS_ON                    "デンケゾ オン"                 // "Switch power on"
43
+#define MSG_SWITCH_PS_OFF                   "デンケゾ オフ"                 // "Switch power off"
44
+#define MSG_EXTRUDE                         "オシダシ"                     // "Extrude"
45
+#define MSG_RETRACT                         "リトラケト"                     // "Retract"
46
+#define MSG_MOVE_AXIS                       "ヅケイドウ"                   // "Move axis"
47
+#define MSG_MOVE_X                          "Xヅケ イドウ"                 // "Move X"
48
+#define MSG_MOVE_Y                          "Yヅケ イドウ"                 // "Move Y"
49
+#define MSG_MOVE_Z                          "Zヅケ イドウ"                 // "Move Z"
50
+#define MSG_MOVE_E                          "エケストルーダー"                // "Extruder"
51
+#define MSG_MOVE_01MM                       "0.1mm イドウ"                 // "Move 0.1mm"
52
+#define MSG_MOVE_1MM                        "  1mm イドウ"                 // "Move 1mm"
53
+#define MSG_MOVE_10MM                       " 10mm イドウ"                 // "Move 10mm"
54
+#define MSG_SPEED                           "スヒ゜ード"                     // "Speed"
55
+#define MSG_NOZZLE                          "ノズル"                       // "Nozzle"
56
+#define MSG_BED                             "ベツド"                     // "Bed"
57
+#define MSG_FAN_SPEED                       "ファンンケド"                    // "Fan speed"
58
+#define MSG_FLOW                            "オケリリョウ"                     // "Flow"
59
+#define MSG_CONTROL                         "コントロール"                    // "Control"
60
+#define MSG_MIN                             LCD_STR_THERMOMETER " Min"
61
+#define MSG_MAX                             LCD_STR_THERMOMETER " Max"
62
+#define MSG_FACTOR                          LCD_STR_THERMOMETER " Fact"
63
+#define MSG_AUTOTEMP                        "ヅドウオンド"                  // "Autotemp"
64
+#define MSG_ON                              "On "
65
+#define MSG_OFF                             "Off"
66
+#define MSG_PID_P                           "PID-P"
67
+#define MSG_PID_I                           "PID-I"
68
+#define MSG_PID_D                           "PID-D"
69
+#define MSG_PID_C                           "PID-C"
70
+#define MSG_ACC                             "センケド"                     // "Accel"
71
+#define MSG_VXY_JERK                        "Vxy-jerk"
72
+#define MSG_VZ_JERK                         "Vz-jerk"
73
+#define MSG_VE_JERK                         "Ve-jerk"
74
+#define MSG_VMAX                            "Vmax "
75
+#define MSG_X                               "x"
76
+#define MSG_Y                               "y"
77
+#define MSG_Z                               "z"
78
+#define MSG_E                               "e"
79
+#define MSG_VMIN                            "Vmin"
80
+#define MSG_VTRAV_MIN                       "VTrav min"
81
+#define MSG_AMAX                            "Amax "
82
+#define MSG_A_RETRACT                       "A-retract"
83
+#define MSG_XSTEPS                          "Xsteps/mm"
84
+#define MSG_YSTEPS                          "Ysteps/mm"
85
+#define MSG_ZSTEPS                          "Zsteps/mm"
86
+#define MSG_ESTEPS                          "Esteps/mm"
87
+#define MSG_TEMPERATURE                     "オンド"                      // "Temperature"
88
+#define MSG_MOTION                          "ウゴキセツテイ"                // "Motion"
89
+#define MSG_VOLUMETRIC                      "フィラナント"                    // "Filament"
90
+#define MSG_VOLUMETRIC_ENABLED              "E in mm3"
91
+#define MSG_FILAMENT_SIZE_EXTRUDER_0        "Fil. Dia. 1"
92
+#define MSG_FILAMENT_SIZE_EXTRUDER_1        "Fil. Dia. 2"
93
+#define MSG_FILAMENT_SIZE_EXTRUDER_2        "Fil. Dia. 3"
94
+#define MSG_FILAMENT_SIZE_EXTRUDER_3        "Fil. Dia. 4"
95
+#define MSG_CONTRAST                        "LCDコントラスト"                 // "LCD contrast"
96
+#define MSG_STORE_EPROM                     "ナモリヘセケノウ"                 // "Store memory"
97
+#define MSG_LOAD_EPROM                      "ナモリセラヨミbaミ"               // "Load memory"
98
+#define MSG_RESTORE_FAILSAFE                "セツテイリセツト"               // "Restore failsafe"
99
+#define MSG_REFRESH                         "リフレツシユ"                  // "Refresh"
100
+#define MSG_WATCH                           "インフォ"                     // "Info screen"
101
+#define MSG_PREPARE                         "ヅユンゼセツテイ"             //"Prepare"
102
+#define MSG_TUNE                            "チョウセイ"                    // "Tune"
103
+#define MSG_PAUSE_PRINT                     "イチヅテイシ"                  // "Pause print"
104
+#define MSG_RESUME_PRINT                    "プリントアイセイ"                // "Resume print"
105
+#define MSG_STOP_PRINT                      "プリントテイシ"                 // "Stop print"
106
+#define MSG_CARD_MENU                       "SDセードセラプリント"            // "Print from SD"
107
+#define MSG_NO_CARD                         "SDセードゼアリマセン"            // "No SD card"
108
+#define MSG_DWELL                           "スリープ"                     // "Sleep..."
109
+#define MSG_USERWAIT                        "シバラケオマチケダアイ"           // "Wait for user..."
110
+#define MSG_RESUMING                        "プリントアイセイ"                // "Resuming print"
111
+#define MSG_PRINT_ABORTED                   "プリントチユウシアレマシタ"          // "Print aborted"
112
+#define MSG_NO_MOVE                         "ウゴキマセン"                  // "No move."
113
+#define MSG_KILLED                          "ショウキョ"                     // "KILLED. "
114
+#define MSG_STOPPED                         "テイシシマシタ"                  // "STOPPED. "
115
+#define MSG_CONTROL_RETRACT                 "Retract mm"
116
+#define MSG_CONTROL_RETRACT_SWAP            "Swap Re.mm"
117
+#define MSG_CONTROL_RETRACTF                "Retract  V"
118
+#define MSG_CONTROL_RETRACT_ZLIFT           "Hop mm"
119
+#define MSG_CONTROL_RETRACT_RECOVER         "UnRet +mm"
120
+#define MSG_CONTROL_RETRACT_RECOVER_SWAP    "S UnRet+mm"
121
+#define MSG_CONTROL_RETRACT_RECOVERF        "UnRet  V"
122
+#define MSG_AUTORETRACT                     "AutoRetr."
123
+#define MSG_FILAMENTCHANGE                  "フィラナントコウセン"               // "Change filament"
124
+#define MSG_INIT_SDCARD                     "SDセードアイヨミコミ"              // "Init. SD card"
125
+#define MSG_CNG_SDCARD                      "SDセードコウセン"                // "Change SD card"
126
+#define MSG_ZPROBE_OUT                      "Zプローブ ベツトnゼイ"         // "Z probe out. bed"
127
+#define MSG_POSITION_UNKNOWN                "ゲンテンハXYイドウゴZ"           // "Home X/Y before Z"
128
+#define MSG_ZPROBE_ZOFFSET                  "Zオフセツト"                   // "Z Offset"
129
+#define MSG_BABYSTEP_X                      "ゼドウ X"                    // "Babystep X"
130
+#define MSG_BABYSTEP_Y                      "ゼドウ Y"                    // "Babystep Y"
131
+#define MSG_BABYSTEP_Z                      "ゼドウ Z"                    // "Babystep Z"
132
+#define MSG_ENDSTOP_ABORT                   "Endstop abort"
133
+
134
+#ifdef DELTA_CALIBRATION_MENU
135
+    #define MSG_DELTA_CALIBRATE             "Delta Calibration"
136
+    #define MSG_DELTA_CALIBRATE_X           "Calibrate X"
137
+    #define MSG_DELTA_CALIBRATE_Y           "Calibrate Y"
138
+    #define MSG_DELTA_CALIBRATE_Z           "Calibrate Z"
139
+    #define MSG_DELTA_CALIBRATE_CENTER      "Calibrate Center"
140
+#endif // DELTA_CALIBRATION_MENU
141
+
142
+#endif // LANGUAGE_KANA_UTF_H

+ 9
- 4
Marlin/language_nl.h View File

@@ -2,12 +2,17 @@
2 2
  * Dutch
3 3
  *
4 4
  * LCD Menu Messages
5
- * Please note these are limited to 17 characters!
5
+ * See also documentation/LCDLanguageFont.md
6 6
  *
7 7
  */
8 8
 #ifndef LANGUAGE_NL_H
9 9
 #define LANGUAGE_NL_H
10 10
 
11
+#define MAPPER_NON
12
+// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h
13
+//#define SIMULATE_ROMFONT
14
+#define DISPLAY_CHARSET_ISO10646_1
15
+
11 16
 #define WELCOME_MSG                         MACHINE_NAME " gereed."
12 17
 #define MSG_SD_INSERTED                     "Kaart ingestoken"
13 18
 #define MSG_SD_REMOVED                      "Kaart verwijderd"
@@ -46,9 +51,9 @@
46 51
 #define MSG_FAN_SPEED                       "Fan snelheid"
47 52
 #define MSG_FLOW                            "Flow"
48 53
 #define MSG_CONTROL                         "Control"
49
-#define MSG_MIN                             " \002 Min"
50
-#define MSG_MAX                             " \002 Max"
51
-#define MSG_FACTOR                          " \002 Fact"
54
+#define MSG_MIN                             LCD_STR_THERMOMETER " Min"
55
+#define MSG_MAX                             LCD_STR_THERMOMETER " Max"
56
+#define MSG_FACTOR                          LCD_STR_THERMOMETER " Fact"
52 57
 #define MSG_AUTOTEMP                        "Autotemp"
53 58
 #define MSG_ON                              "Aan "
54 59
 #define MSG_OFF                             "Uit"

+ 10
- 5
Marlin/language_pl.h View File

@@ -2,12 +2,17 @@
2 2
  * Polish
3 3
  *
4 4
  * LCD Menu Messages
5
- * Please note these are limited to 17 characters!
5
+ * See also documentation/LCDLanguageFont.md
6 6
  *
7 7
  */
8 8
 #ifndef LANGUAGE_PL_H
9 9
 #define LANGUAGE_PL_H
10 10
 
11
+#define MAPPER_NON
12
+// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h
13
+//#define SIMULATE_ROMFONT
14
+#define DISPLAY_CHARSET_ISO10646_1
15
+
11 16
 #define WELCOME_MSG                         MACHINE_NAME " gotowy."
12 17
 #define MSG_SD_INSERTED                     "Karta wlozona"
13 18
 #define MSG_SD_REMOVED                      "Karta usunieta"
@@ -46,9 +51,9 @@
46 51
 #define MSG_FAN_SPEED                       "Obroty wiatraka"
47 52
 #define MSG_FLOW                            "Przeplyw"
48 53
 #define MSG_CONTROL                         "Ustawienia"
49
-#define MSG_MIN                             " \002 Min"
50
-#define MSG_MAX                             " \002 Max"
51
-#define MSG_FACTOR                          " \002 Mnoznik"
54
+#define MSG_MIN                             LCD_STR_THERMOMETER " Min"
55
+#define MSG_MAX                             LCD_STR_THERMOMETER " Max"
56
+#define MSG_FACTOR                          LCD_STR_THERMOMETER " Mnoznik"
52 57
 #define MSG_AUTOTEMP                        "Auto. temperatura"
53 58
 #define MSG_ON                              "Wl. "
54 59
 #define MSG_OFF                             "Wyl."
@@ -84,7 +89,7 @@
84 89
 #define MSG_STORE_EPROM                     "Zapisz w pamieci"
85 90
 #define MSG_LOAD_EPROM                      "Wczytaj z pamieci"
86 91
 #define MSG_RESTORE_FAILSAFE                "Ustaw. fabryczne"
87
-#define MSG_REFRESH                         "\004Odswiez"
92
+#define MSG_REFRESH                         LCD_STR_REFRESH " Odswiez"
88 93
 #define MSG_WATCH                           "Ekran glowny"
89 94
 #define MSG_PREPARE                         "Przygotuj"
90 95
 #define MSG_TUNE                            "Strojenie"

+ 21
- 16
Marlin/language_pt-br.h View File

@@ -2,16 +2,21 @@
2 2
  * Portuguese (Brazil)
3 3
  *
4 4
  * LCD Menu Messages
5
- * Please note these are limited to 17 characters!
5
+ * See also documentation/LCDLanguageFont.md
6 6
  *
7 7
  */
8 8
 #ifndef LANGUAGE_PT_BR_H
9 9
 #define LANGUAGE_PT_BR_H
10 10
 
11
+#define MAPPER_NON
12
+// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h
13
+//#define SIMULATE_ROMFONT
14
+#define DISPLAY_CHARSET_ISO10646_1
15
+
11 16
 #define WELCOME_MSG							MACHINE_NAME " pronto."
12 17
 #define MSG_SD_INSERTED                     "Cartao inserido"
13 18
 #define MSG_SD_REMOVED                      "Cartao removido"
14
-#define MSG_MAIN                            " Menu principal \003"
19
+#define MSG_MAIN                            " Menu principal"
15 20
 #define MSG_AUTOSTART                       "Autostart"
16 21
 #define MSG_DISABLE_STEPPERS                " Apagar motores"
17 22
 #define MSG_AUTO_HOME                       "Ir para origen"
@@ -20,19 +25,19 @@
20 25
 #define MSG_PREHEAT_PLA                     "Pre-aquecer PLA"
21 26
 #define MSG_PREHEAT_PLA_N                   "Pre-aquecer PLA "
22 27
 #define MSG_PREHEAT_PLA_ALL                 "Pre-aq. PLA Tudo"
23
-#define MSG_PREHEAT_PLA_BEDONLY             "Pre-aq. PLA \002Base"
28
+#define MSG_PREHEAT_PLA_BEDONLY             "Pre-aq. PLA " LCD_STR_THERMOMETER "Base"
24 29
 #define MSG_PREHEAT_PLA_SETTINGS            "PLA setting"
25 30
 #define MSG_PREHEAT_ABS                     "Pre-aquecer ABS"
26 31
 #define MSG_PREHEAT_ABS_N                   "Pre-aquecer ABS "
27 32
 #define MSG_PREHEAT_ABS_ALL                 "Pre-aq. ABS Tudo"
28
-#define MSG_PREHEAT_ABS_BEDONLY             "Pre-aq. ABS \002Base"
33
+#define MSG_PREHEAT_ABS_BEDONLY             "Pre-aq. ABS " LCD_STR_THERMOMETER "Base"
29 34
 #define MSG_PREHEAT_ABS_SETTINGS            "ABS setting"
30 35
 #define MSG_COOLDOWN                        "Esfriar"
31 36
 #define MSG_SWITCH_PS_ON                    "Switch Power On"
32 37
 #define MSG_SWITCH_PS_OFF                   "Switch Power Off"
33 38
 #define MSG_EXTRUDE                         "Extrudar"
34 39
 #define MSG_RETRACT                         "Retrair"
35
-#define MSG_MOVE_AXIS                       "Mover eixo      \x7E"
40
+#define MSG_MOVE_AXIS                       "Mover eixo"
36 41
 #define MSG_MOVE_X                          "Move X"
37 42
 #define MSG_MOVE_Y                          "Move Y"
38 43
 #define MSG_MOVE_Z                          "Move Z"
@@ -41,14 +46,14 @@
41 46
 #define MSG_MOVE_1MM                        "Move 1mm"
42 47
 #define MSG_MOVE_10MM                       "Move 10mm"
43 48
 #define MSG_SPEED                           "Velocidade"
44
-#define MSG_NOZZLE                          "\002Nozzle"
45
-#define MSG_BED                             "\002Base"
49
+#define MSG_NOZZLE                          LCD_STR_THERMOMETER " Nozzle"
50
+#define MSG_BED                             LCD_STR_THERMOMETER " Base"
46 51
 #define MSG_FAN_SPEED                       "Velocidade vento."
47 52
 #define MSG_FLOW                            "Fluxo"
48
-#define MSG_CONTROL                         "Controle \003"
49
-#define MSG_MIN                             "\002 Min"
50
-#define MSG_MAX                             "\002 Max"
51
-#define MSG_FACTOR                          "\002 Fact"
53
+#define MSG_CONTROL                         "Controle"
54
+#define MSG_MIN                             LCD_STR_THERMOMETER " Min"
55
+#define MSG_MAX                             LCD_STR_THERMOMETER " Max"
56
+#define MSG_FACTOR                          LCD_STR_THERMOMETER " Fact"
52 57
 #define MSG_AUTOTEMP                        "Autotemp"
53 58
 #define MSG_ON                              "On "
54 59
 #define MSG_OFF                             "Off"
@@ -76,7 +81,7 @@
76 81
 #define MSG_TEMPERATURE                     "Temperatura"
77 82
 #define MSG_MOTION                          "Movimento"
78 83
 #define MSG_VOLUMETRIC                      "Filament"
79
-#define MSG_VOLUMETRIC_ENABLED		        "E in mm3"
84
+#define MSG_VOLUMETRIC_ENABLED              "E in mm3"
80 85
 #define MSG_FILAMENT_SIZE_EXTRUDER_0        "Fil. Dia. 1"
81 86
 #define MSG_FILAMENT_SIZE_EXTRUDER_1        "Fil. Dia. 2"
82 87
 #define MSG_FILAMENT_SIZE_EXTRUDER_2        "Fil. Dia. 3"
@@ -84,10 +89,10 @@
84 89
 #define MSG_STORE_EPROM                     "Guardar memoria"
85 90
 #define MSG_LOAD_EPROM                      "Carregar memoria"
86 91
 #define MSG_RESTORE_FAILSAFE                "Rest. de emergen."
87
-#define MSG_REFRESH                         "\004Recarregar"
88
-#define MSG_WATCH                           "Monitorar   \003"
89
-#define MSG_PREPARE                         "Preparar \x7E"
90
-#define MSG_TUNE                            "Tune    \x7E"
92
+#define MSG_REFRESH                         LCD_STR_REFRESH " Recarregar"
93
+#define MSG_WATCH                           "Monitorar"
94
+#define MSG_PREPARE                         "Preparar"
95
+#define MSG_TUNE                            "Tune"
91 96
 #define MSG_PAUSE_PRINT                     "Pausar impressao"
92 97
 #define MSG_RESUME_PRINT                    "Resumir impressao"
93 98
 #define MSG_STOP_PRINT                      "Parar impressao"

+ 21
- 16
Marlin/language_pt.h View File

@@ -2,16 +2,21 @@
2 2
  * Portuguese
3 3
  *
4 4
  * LCD Menu Messages
5
- * Please note these are limited to 17 characters!
5
+ * See also documentation/LCDLanguageFont.md
6 6
  *
7 7
  */
8 8
 #ifndef LANGUAGE_PT_H
9 9
 #define LANGUAGE_PT_H
10 10
 
11
+#define MAPPER_NON
12
+// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h
13
+//#define SIMULATE_ROMFONT
14
+#define DISPLAY_CHARSET_ISO10646_1
15
+
11 16
 #define WELCOME_MSG                         MACHINE_NAME " pronto."
12 17
 #define MSG_SD_INSERTED                     "Cartao inserido"
13 18
 #define MSG_SD_REMOVED                      "Cartao removido"
14
-#define MSG_MAIN                            " Menu principal \003"
19
+#define MSG_MAIN                            " Menu principal"
15 20
 #define MSG_AUTOSTART                       "Autostart"
16 21
 #define MSG_DISABLE_STEPPERS                " Desligar motores"
17 22
 #define MSG_AUTO_HOME                       "Ir para home"
@@ -20,19 +25,19 @@
20 25
 #define MSG_PREHEAT_PLA                     "Pre-aquecer PLA"
21 26
 #define MSG_PREHEAT_PLA_N                   "Pre-aquecer PLA "
22 27
 #define MSG_PREHEAT_PLA_ALL                 "Pre-aq. PLA Tudo"
23
-#define MSG_PREHEAT_PLA_BEDONLY             "Pre-aq. PLA \002Base"
28
+#define MSG_PREHEAT_PLA_BEDONLY             "Pre-aq. PLA " LCD_STR_THERMOMETER "Base"
24 29
 #define MSG_PREHEAT_PLA_SETTINGS            "PLA definicoes"
25 30
 #define MSG_PREHEAT_ABS                     "Pre-aquecer ABS"
26 31
 #define MSG_PREHEAT_ABS_N                   "Pre-aquecer ABS "
27 32
 #define MSG_PREHEAT_ABS_ALL                 "Pre-aq. ABS Tudo"
28
-#define MSG_PREHEAT_ABS_BEDONLY             "Pre-aq. ABS \002Base"
33
+#define MSG_PREHEAT_ABS_BEDONLY             "Pre-aq. ABS " LCD_STR_THERMOMETER "Base"
29 34
 #define MSG_PREHEAT_ABS_SETTINGS            "ABS definicoes"
30 35
 #define MSG_COOLDOWN                        "Arrefecer"
31 36
 #define MSG_SWITCH_PS_ON                    "Ligar"
32 37
 #define MSG_SWITCH_PS_OFF                   "Desligar"
33 38
 #define MSG_EXTRUDE                         "Extrudir"
34 39
 #define MSG_RETRACT                         "Retrair"
35
-#define MSG_MOVE_AXIS                       "Mover eixo      \x7E"
40
+#define MSG_MOVE_AXIS                       "Mover eixo"
36 41
 #define MSG_MOVE_X                          "Mover X"
37 42
 #define MSG_MOVE_Y                          "Mover Y"
38 43
 #define MSG_MOVE_Z                          "Mover Z"
@@ -41,14 +46,14 @@
41 46
 #define MSG_MOVE_1MM                        "Mover 1mm"
42 47
 #define MSG_MOVE_10MM                       "Mover 10mm"
43 48
 #define MSG_SPEED                           "Velocidade"
44
-#define MSG_NOZZLE                          "\002Bico"
45
-#define MSG_BED                             "\002Base"
49
+#define MSG_NOZZLE                          LCD_STR_THERMOMETER "Bico"
50
+#define MSG_BED                             LCD_STR_THERMOMETER "Base"
46 51
 #define MSG_FAN_SPEED                       "Velocidade do ar."
47 52
 #define MSG_FLOW                            "Fluxo"
48
-#define MSG_CONTROL                         "Controlo \003"
49
-#define MSG_MIN                             "\002 Min"
50
-#define MSG_MAX                             "\002 Max"
51
-#define MSG_FACTOR                          "\002 Fact"
53
+#define MSG_CONTROL                         "Controlo"
54
+#define MSG_MIN                             LCD_STR_THERMOMETER " Min"
55
+#define MSG_MAX                             LCD_STR_THERMOMETER " Max"
56
+#define MSG_FACTOR                          LCD_STR_THERMOMETER " Fact"
52 57
 #define MSG_AUTOTEMP                        "Autotemp"
53 58
 #define MSG_ON                              "On "
54 59
 #define MSG_OFF                             "Off"
@@ -76,7 +81,7 @@
76 81
 #define MSG_TEMPERATURE                     "Temperatura"
77 82
 #define MSG_MOTION                          "Movimento"
78 83
 #define MSG_VOLUMETRIC                      "Filamento"
79
-#define MSG_VOLUMETRIC_ENABLED		        "E in mm3"
84
+#define MSG_VOLUMETRIC_ENABLED              "E in mm3"
80 85
 #define MSG_FILAMENT_SIZE_EXTRUDER_0        "Fil. Diam. 1"
81 86
 #define MSG_FILAMENT_SIZE_EXTRUDER_1        "Fil. Diam. 2"
82 87
 #define MSG_FILAMENT_SIZE_EXTRUDER_2        "Fil. Diam. 3"
@@ -84,10 +89,10 @@
84 89
 #define MSG_STORE_EPROM                     "Guardar na memoria"
85 90
 #define MSG_LOAD_EPROM                      "Carregar da memoria"
86 91
 #define MSG_RESTORE_FAILSAFE                "Rest. de emergen."
87
-#define MSG_REFRESH                         "\004Recarregar"
88
-#define MSG_WATCH                           "Monitorar   \003"
89
-#define MSG_PREPARE                         "Preparar \x7E"
90
-#define MSG_TUNE                            "Afinar    \x7E"
92
+#define MSG_REFRESH                         LCD_STR_REFRESH " Recarregar"
93
+#define MSG_WATCH                           "Monitorar"
94
+#define MSG_PREPARE                         "Preparar"
95
+#define MSG_TUNE                            "Afinar"
91 96
 #define MSG_PAUSE_PRINT                     "Pausar impressao"
92 97
 #define MSG_RESUME_PRINT                    "Resumir impressao"
93 98
 #define MSG_STOP_PRINT                      "Parar impressao"

+ 5
- 2
Marlin/language_ru.h View File

@@ -2,13 +2,16 @@
2 2
  * Russian
3 3
  *
4 4
  * LCD Menu Messages
5
- * Please note these are limited to 17 characters!
5
+ * See also documentation/LCDLanguageFont.md
6 6
  *
7 7
  */
8 8
 #ifndef LANGUAGE_RU_H
9 9
 #define LANGUAGE_RU_H
10 10
 
11
-#define LANGUAGE_RU
11
+#define MAPPER_D0D1                // For Cyrillic
12
+// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h
13
+//#define SIMULATE_ROMFONT
14
+#define DISPLAY_CHARSET_ISO10646_5
12 15
 
13 16
 #define WELCOME_MSG                         MACHINE_NAME " Готов."
14 17
 #define MSG_SD_INSERTED                     "Карта вставлена"

+ 215
- 0
Marlin/language_test.h View File

@@ -0,0 +1,215 @@
1
+/**
2
+ * TEST
3
+ *
4
+ * LCD Menu Messages
5
+ * See also documentation/LCDLanguageFont.md
6
+ *
7
+ */
8
+#ifndef LANGUAGE_TEST_H
9
+#define LANGUAGE_TEST_H
10
+
11
+// Select ONE of the following Mappers. 
12
+// They decide what to do with a symbol in the area of [0x80:0xFF]. They take a symbol of this language file and make them point 
13
+// into an array with 128 cells, where they'll find the place of the symbol of the font in use.
14
+//
15
+// a.)For ASCII coded Language_xx.h files like (en) there are no occurrences of symbols above 0x7F so no mapper is needed. 
16
+//   If such a symbol appears it is mapped directly into the font. This is the case for the language files we used until now, with all the STR_XX or
17
+//   "\xxx" symbols. All Symbols are only one byte long.
18
+// b.) For Unicoded Language_xx.h files (currently ru, de and kana_utf8 ) the non ASCII [0x00-0x7F] symbols are represented by more then one byte.
19
+//   In the case of two bytes the first is pointing to a 'codepage' and the second to a place in the codepage. These codepages contain 64 symbols.
20
+//   So two of them can be mapped. For most of the European languages the necessary symbols are contained in the pages C2 and C3. Cyrillic uses D0 
21
+//   and D1.
22
+// c.) For katakana (one of the Japanese symbol sets) Unicode uses 3 bytes. Here the second byte also points to a codepage and byte 3 to the symbol.
23
+//   I hope the pages E282 and E283 are sufficient to write katakana.
24
+//   Kanji (an other Japanese symbol set) uses far more than two codepages. So currently I don't see a chance to map the Unicodes. Its not
25
+//   impossible to have a close to direct mapping but will need giant conversion tables and fonts (we don't want to have in a embedded system).
26
+
27
+
28
+#define MAPPER_NON         // For direct asci codes ( until now all languages except ru, de, fi, kana_utf8, ... )
29
+//#define MAPPER_C2C3        // For most European languages when language file is in utf8
30
+//#define MAPPER_D0D1        // For Cyrillic
31
+//#define MAPPER_E382E383    // For Katakana
32
+
33
+// Define SIMULATE_ROMFONT to see what is seen on the character based display defined in Configuration.h
34
+//#define SIMULATE_ROMFONT
35
+
36
+// Select the better font for full graphic displays.
37
+//#define DISPLAY_CHARSET_ISO10646_1
38
+//#define DISPLAY_CHARSET_ISO10646_5
39
+//#define DISPLAY_CHARSET_ISO10646_KANA
40
+
41
+
42
+
43
+// next 5 lines select variants in this file only
44
+#define DISPLAYTEST
45
+//#define WEST
46
+//#define CYRIL
47
+//#define KANA
48
+
49
+
50
+// TESTSTRINGS
51
+
52
+#define STRG_ASCII_2 " !\"#$%&'()*+,-./"
53
+#define STRG_ASCII_3 "0123456789:;<=>?"
54
+#define STRG_ASCII_4 "@ABCDEFGHIJKLMNO"
55
+#define STRG_ASCII_5 "PQRSTUVWXYZ[\]^_"
56
+#define STRG_ASCII_6 "`abcdefghijklmno"
57
+#define STRG_ASCII_7 "pqrstuvwxyz{|}~"
58
+
59
+#define STRG_C2_8 ""
60
+#define STRG_C2_9 ""
61
+#define STRG_C2_a " ¡¢£¤¥¦§¨©ª«¬­®¯"
62
+#define STRG_C2_b "°±²³´µ¶·¸¹º»¼½¾¿"
63
+#define STRG_C3_8 "ÈÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ"
64
+#define STRG_C3_9 "ÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞß"
65
+#define STRG_C3_a "àáâãäåæçèéêëìíîï"
66
+#define STRG_C3_b "ðñòóôõö÷øùúûüýþÿ"
67
+
68
+#define STRG_D0_8 "ЀЁЂЃЄЅІЇЈЉЊЋЌЍЎЏ"
69
+#define STRG_D0_9 "АБВГДЕЖЗИЙКЛМНОП"
70
+#define STRG_D0_a "РСТУФХЦЧШЩЪЫЬЭЮЯ"
71
+#define STRG_D0_b "абвгдежзийклмноп"
72
+#define STRG_D1_8 "рстуфхцчшщъыьэюя"
73
+#define STRG_D1_9 "ѐёђѓєѕіїјљњћќѝўџ"
74
+#define STRG_D1_a "ѠѡѢѣѤѥѦѧѨѩѪѫѬѭѮѯ"
75
+#define STRG_D1_b "ѰѱѲѳѴѵѶѷѸѹѺѻѼѽѾѿ"
76
+
77
+#define STRG_E382_8 "よめもゃやゅゆょよらりるれろゎわ"
78
+#define STRG_E382_9 "ゐゑをんゔゕゖ゗゘゙゚゛ ゜ゝゞゟ"
79
+#define STRG_E382_a "゠ァアィイゥウェエォオカガキギク"
80
+#define STRG_E382_b "グケゲコゴサザシジスズセゼソゾタ"
81
+#define STRG_E383_8 "トチヂッツヅテデトドナニヌネノハ"
82
+#define STRG_E383_9 "バパヒビピフブプヘベペホボポマミ"
83
+#define STRG_E383_a "ムメモャヤュユョヨラリルレロヮワ"
84
+#define STRG_E383_b "ヰヱヲンヴヵヶヷヸヹヺ・ーヽヾヿ"
85
+
86
+#define STRG_OKTAL_0 "\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017"
87
+#define STRG_OKTAL_1 "\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
88
+#define STRG_OKTAL_2 "\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057"
89
+#define STRG_OKTAL_3 "\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077"
90
+#define STRG_OKTAL_4 "\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117"
91
+#define STRG_OKTAL_5 "\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137"
92
+#define STRG_OKTAL_6 "\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157"
93
+#define STRG_OKTAL_7 "\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177"
94
+#define STRG_OKTAL_8 "\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217"
95
+#define STRG_OKTAL_9 "\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237"
96
+#define STRG_OKTAL_a "\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257"
97
+#define STRG_OKTAL_b "\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277"
98
+#define STRG_OKTAL_c "\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317"
99
+#define STRG_OKTAL_d "\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337"
100
+#define STRG_OKTAL_e "\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357"
101
+#define STRG_OKTAL_f "\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377"
102
+
103
+#ifdef DISPLAYTEST
104
+  #define WELCOME_MSG                         "Language TEST"
105
+
106
+  #define MSG_WATCH                           "Display test"
107
+  #define MSG_PREPARE                         STRG_OKTAL_b
108
+  #define MSG_CONTROL                         STRG_OKTAL_c
109
+#endif
110
+
111
+#ifdef WEST
112
+  #define WELCOME_MSG                         "Language TEST"
113
+
114
+  #define MSG_WATCH                           "\001\002\003\004\005\006\007\010\011"
115
+  #define MSG_PREPARE                         "UTF8"
116
+  #define MSG_CONTROL                         "ASCII"
117
+
118
+  //#define MSG_MAIN                            ".."
119
+  #define MSG_DISABLE_STEPPERS                STRG_C2_8
120
+  #define MSG_AUTO_HOME                       STRG_C2_9
121
+  #define MSG_SET_HOME_OFFSETS                STRG_C2_a
122
+  #define MSG_PREHEAT_PLA                     STRG_C2_b
123
+  #define MSG_PREHEAT_ABS                     STRG_C3_8
124
+  #define MSG_COOLDOWN                        STRG_C3_9
125
+  #define MSG_SWITCH_PS_OFF                   STRG_C3_a
126
+  #define MSG_MOVE_AXIS                       STRG_C3_b
127
+  
128
+  #define MSG_MAIN                            STRG_OKTAL_2
129
+  #define MSG_TEMPERATURE                     STRG_OKTAL_3
130
+  #define MSG_MOTION                          STRG_OKTAL_4
131
+  #define MSG_VOLUMETRIC                      STRG_OKTAL_5
132
+  #define MSG_CONTRAST                        STRG_OKTAL_6
133
+  #define MSG_RESTORE_FAILSAFE                STRG_OKTAL_7
134
+  
135
+  #define MSG_NOZZLE                          STRG_OKTAL_8
136
+  #define MSG_FAN_SPEED                       STRG_OKTAL_9
137
+  #define MSG_AUTOTEMP                        STRG_OKTAL_a
138
+  #define MSG_MIN                             STRG_OKTAL_b
139
+  #define MSG_MAX                             STRG_OKTAL_c
140
+  #define MSG_FACTOR                          STRG_OKTAL_d
141
+  #define MSG_PID_P                           STRG_OKTAL_e
142
+  #define MSG_PID_I                           STRG_OKTAL_f
143
+
144
+#endif
145
+
146
+#ifdef CYRIL
147
+  #define WELCOME_MSG                         "Language TEST"
148
+
149
+  #define MSG_WATCH                           "\001\002\003\004\005\006\007\010\011"
150
+  #define MSG_PREPARE                         "UTF8"
151
+  #define MSG_CONTROL                         "ASCII"
152
+
153
+  //#define MSG_MAIN                            ".."
154
+  #define MSG_DISABLE_STEPPERS                STRG_D0_8
155
+  #define MSG_AUTO_HOME                       STRG_D0_9
156
+  #define MSG_SET_HOME_OFFSETS                STRG_D0_a
157
+  #define MSG_PREHEAT_PLA                     STRG_D0_b
158
+  #define MSG_PREHEAT_ABS                     STRG_D1_8
159
+  #define MSG_COOLDOWN                        STRG_D1_9
160
+  #define MSG_SWITCH_PS_OFF                   STRG_D1_a
161
+  #define MSG_MOVE_AXIS                       STRG_D1_b
162
+  
163
+  #define MSG_MAIN                            STRG_OKTAL_2
164
+  #define MSG_TEMPERATURE                     STRG_OKTAL_3
165
+  #define MSG_MOTION                          STRG_OKTAL_4
166
+  #define MSG_VOLUMETRIC                      STRG_OKTAL_5
167
+  #define MSG_CONTRAST                        STRG_OKTAL_6
168
+  #define MSG_RESTORE_FAILSAFE                STRG_OKTAL_7
169
+  
170
+  #define MSG_NOZZLE                          STRG_OKTAL_8
171
+  #define MSG_FAN_SPEED                       STRG_OKTAL_9
172
+  #define MSG_AUTOTEMP                        STRG_OKTAL_a
173
+  #define MSG_MIN                             STRG_OKTAL_b
174
+  #define MSG_MAX                             STRG_OKTAL_c
175
+  #define MSG_FACTOR                          STRG_OKTAL_d
176
+  #define MSG_PID_P                           STRG_OKTAL_e
177
+  #define MSG_PID_I                           STRG_OKTAL_f
178
+
179
+#endif
180
+
181
+#if defined( KANA )
182
+  #define WELCOME_MSG                         "Language TEST"
183
+
184
+  #define MSG_WATCH                           "\001\002\003\004\005\006\007\010\011"
185
+  #define MSG_PREPARE                         "UTF8"
186
+  #define MSG_CONTROL                         "ASCII"
187
+
188
+  //#define MSG_MAIN                            ".."
189
+  #define MSG_DISABLE_STEPPERS                STRG_E382_8
190
+  #define MSG_AUTO_HOME                       STRG_E382_9
191
+  #define MSG_SET_HOME_OFFSETS                STRG_E382_a
192
+  #define MSG_PREHEAT_PLA                     STRG_E382_b
193
+  #define MSG_PREHEAT_ABS                     STRG_E383_8
194
+  #define MSG_COOLDOWN                        STRG_E383_9
195
+  #define MSG_SWITCH_PS_OFF                   STRG_E383_a
196
+  #define MSG_MOVE_AXIS                       STRG_E383_b
197
+  
198
+  #define MSG_MAIN                            STRG_OKTAL_2
199
+  #define MSG_TEMPERATURE                     STRG_OKTAL_3
200
+  #define MSG_MOTION                          STRG_OKTAL_4
201
+  #define MSG_VOLUMETRIC                      STRG_OKTAL_5
202
+  #define MSG_CONTRAST                        STRG_OKTAL_6
203
+  #define MSG_RESTORE_FAILSAFE                STRG_OKTAL_7
204
+  
205
+  #define MSG_NOZZLE                          STRG_OKTAL_8
206
+  #define MSG_FAN_SPEED                       STRG_OKTAL_9
207
+  #define MSG_AUTOTEMP                        STRG_OKTAL_a
208
+  #define MSG_MIN                             STRG_OKTAL_b
209
+  #define MSG_MAX                             STRG_OKTAL_c
210
+  #define MSG_FACTOR                          STRG_OKTAL_d
211
+  #define MSG_PID_P                           STRG_OKTAL_e
212
+  #define MSG_PID_I                           STRG_OKTAL_f
213
+#endif
214
+
215
+#endif // LANGUAGE_TEST_H

+ 1
- 1
Marlin/ultralcd.cpp View File

@@ -1355,7 +1355,7 @@ void lcd_update() {
1355 1355
       blink++;     // Variable for fan animation and alive dot
1356 1356
       u8g.firstPage();
1357 1357
       do {
1358
-        u8g.setFont(FONT_MENU);
1358
+        lcd_setFont(FONT_MENU);
1359 1359
         u8g.setPrintPos(125, 0);
1360 1360
         if (blink % 2) u8g.setColorIndex(1); else u8g.setColorIndex(0); // Set color for the alive dot
1361 1361
         u8g.drawPixel(127, 63); // draw alive dot

+ 41
- 29
Marlin/ultralcd_implementation_hitachi_HD44780.h View File

@@ -179,25 +179,20 @@
179 179
 // 2 wire Non-latching LCD SR from:
180 180
 // https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection 
181 181
 #elif defined(SR_LCD_2W_NL)
182
-
183 182
   extern "C" void __cxa_pure_virtual() { while (1); }
184 183
   #include <LCD.h>
185 184
   #include <LiquidCrystal_SR.h>
186 185
   #define LCD_CLASS LiquidCrystal_SR
187 186
   LCD_CLASS lcd(SR_DATA_PIN, SR_CLK_PIN);
188
-
189 187
 #else
190 188
   // Standard directly connected LCD implementations
191
-  #ifdef LANGUAGE_RU
192
-    #include "LiquidCrystalRus.h"
193
-    #define LCD_CLASS LiquidCrystalRus
194
-  #else 
195
-    #include <LiquidCrystal.h>
196
-    #define LCD_CLASS LiquidCrystal
197
-  #endif  
189
+  #include <LiquidCrystal.h>
190
+  #define LCD_CLASS LiquidCrystal
198 191
   LCD_CLASS lcd(LCD_PINS_RS, LCD_PINS_ENABLE, LCD_PINS_D4, LCD_PINS_D5,LCD_PINS_D6,LCD_PINS_D7);  //RS,Enable,D4,D5,D6,D7
199 192
 #endif
200 193
 
194
+#include "utf_mapper.h"
195
+
201 196
 #if defined(LCD_PROGRESS_BAR) && defined(SDSUPPORT)
202 197
   static uint16_t progressBarTick = 0;
203 198
   #if PROGRESS_MSG_EXPIRE > 0
@@ -207,7 +202,7 @@
207 202
 #endif
208 203
 
209 204
 /* Custom characters defined in the first 8 characters of the LCD */
210
-#define LCD_STR_BEDTEMP     "\x00"
205
+#define LCD_STR_BEDTEMP     "\x00"  // this will have 'unexpected' results when used in a string!
211 206
 #define LCD_STR_DEGREE      "\x01"
212 207
 #define LCD_STR_THERMOMETER "\x02"
213 208
 #define LCD_STR_UPLEVEL     "\x03"
@@ -215,7 +210,8 @@
215 210
 #define LCD_STR_FOLDER      "\x05"
216 211
 #define LCD_STR_FEEDRATE    "\x06"
217 212
 #define LCD_STR_CLOCK       "\x07"
218
-#define LCD_STR_ARROW_RIGHT "\x7E"  /* from the default character set */
213
+//#define LCD_STR_ARROW_RIGHT "\x7E"  /* from the default character set. Only available on DISPLAY_CHARSET_HD44780_JAPAN - at this place!*/
214
+#define LCD_STR_ARROW_RIGHT ">"  /* from the default character set */
219 215
 
220 216
 static void lcd_set_custom_characters(
221 217
   #if defined(LCD_PROGRESS_BAR) && defined(SDSUPPORT)
@@ -405,15 +401,30 @@ static void lcd_implementation_clear()
405 401
 {
406 402
     lcd.clear();
407 403
 }
404
+
408 405
 /* Arduino < 1.0.0 is missing a function to print PROGMEM strings, so we need to implement our own */
409
-static void lcd_printPGM(const char* str)
410
-{
411
-    char c;
412
-    while((c = pgm_read_byte(str++)) != '\0')
413
-    {
414
-        lcd.write(c);
415
-    }
406
+char lcd_printPGM(const char* str) {
407
+  char c;
408
+  char n = 0;
409
+  while((c = pgm_read_byte(str++))) {
410
+      n += charset_mapper(c);
411
+  }
412
+  return n;
416 413
 }
414
+
415
+char lcd_print(char* str) {
416
+  char c, n = 0;;
417
+  unsigned char i = 0;
418
+  while((c = str[i++])) {
419
+      n += charset_mapper(c);
420
+  }
421
+  return n;
422
+}
423
+
424
+unsigned lcd_print(char c) {
425
+    return charset_mapper(c);
426
+}
427
+
417 428
 /*
418 429
 Possible status screens:
419 430
 16x2   |0123456789012345|
@@ -608,7 +619,7 @@ static void lcd_implementation_status_screen()
608 619
     }
609 620
   #endif //FILAMENT_LCD_DISPLAY
610 621
 
611
-  lcd.print(lcd_status_message);
622
+  lcd_print(lcd_status_message);
612 623
 }
613 624
 
614 625
 static void lcd_implementation_drawmenu_generic(bool sel, uint8_t row, const char* pstr, char pre_char, char post_char) {
@@ -617,27 +628,26 @@ static void lcd_implementation_drawmenu_generic(bool sel, uint8_t row, const cha
617 628
   lcd.setCursor(0, row);
618 629
   lcd.print(sel ? pre_char : ' ');
619 630
   while ((c = pgm_read_byte(pstr)) && n > 0) {
620
-    lcd.print(c);
631
+    n -= lcd_print(c);
621 632
     pstr++;
622
-    if ((pgm_read_byte(pstr) & 0xc0) != 0x80) n--;
623 633
   }
624 634
   while(n--) lcd.print(' ');
625 635
   lcd.print(post_char);
626 636
   lcd.print(' ');
627 637
 }
638
+
628 639
 static void lcd_implementation_drawmenu_setting_edit_generic(bool sel, uint8_t row, const char* pstr, char pre_char, char* data) {
629 640
   char c;
630 641
   uint8_t n = LCD_WIDTH - 1 - (LCD_WIDTH < 20 ? 1 : 2) - lcd_strlen(data);
631 642
   lcd.setCursor(0, row);
632 643
   lcd.print(sel ? pre_char : ' ');
633 644
   while ((c = pgm_read_byte(pstr)) && n > 0) {
634
-    lcd.print(c);
645
+    n -= lcd_print(c);
635 646
     pstr++;
636
-    if ((pgm_read_byte(pstr) & 0xc0) != 0x80) n--;
637 647
   }
638 648
   lcd.print(':');
639 649
   while (n--) lcd.print(' ');
640
-  lcd.print(data);
650
+  lcd_print(data);
641 651
 }
642 652
 static void lcd_implementation_drawmenu_setting_edit_generic_P(bool sel, uint8_t row, const char* pstr, char pre_char, const char* data) {
643 653
   char c;
@@ -645,14 +655,14 @@ static void lcd_implementation_drawmenu_setting_edit_generic_P(bool sel, uint8_t
645 655
   lcd.setCursor(0, row);
646 656
   lcd.print(sel ? pre_char : ' ');
647 657
   while ((c = pgm_read_byte(pstr)) && n > 0) {
648
-    lcd.print(c);
658
+    n -= lcd_print(c);
649 659
     pstr++;
650
-    if ((pgm_read_byte(pstr) & 0xc0) != 0x80) n--;
651 660
   }
652 661
   lcd.print(':');
653 662
   while (n--) lcd.print(' ');
654 663
   lcd_printPGM(data);
655 664
 }
665
+
656 666
 #define lcd_implementation_drawmenu_setting_edit_int3(sel, row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, '>', itostr3(*(data)))
657 667
 #define lcd_implementation_drawmenu_setting_edit_float3(sel, row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, '>', ftostr3(*(data)))
658 668
 #define lcd_implementation_drawmenu_setting_edit_float32(sel, row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(sel, row, pstr, '>', ftostr32(*(data)))
@@ -679,8 +689,9 @@ void lcd_implementation_drawedit(const char* pstr, char* value) {
679 689
   lcd_printPGM(pstr);
680 690
   lcd.print(':');
681 691
   lcd.setCursor(LCD_WIDTH - (LCD_WIDTH < 20 ? 0 : 1) - lcd_strlen(value), 1);
682
-  lcd.print(value);
692
+  lcd_print(value);
683 693
 }
694
+
684 695
 static void lcd_implementation_drawmenu_sd(bool sel, uint8_t row, const char* pstr, const char* filename, char* longFilename, uint8_t concat) {
685 696
   char c;
686 697
   uint8_t n = LCD_WIDTH - concat;
@@ -691,9 +702,8 @@ static void lcd_implementation_drawmenu_sd(bool sel, uint8_t row, const char* ps
691 702
     longFilename[n] = '\0';
692 703
   }
693 704
   while ((c = *filename) && n > 0) {
694
-    lcd.print(c);
705
+    n -= lcd_print(c);
695 706
     filename++;
696
-    n--;
697 707
   }
698 708
   while (n--) lcd.print(' ');
699 709
 }
@@ -701,9 +711,11 @@ static void lcd_implementation_drawmenu_sd(bool sel, uint8_t row, const char* ps
701 711
 static void lcd_implementation_drawmenu_sdfile(bool sel, uint8_t row, const char* pstr, const char* filename, char* longFilename) {
702 712
   lcd_implementation_drawmenu_sd(sel, row, pstr, filename, longFilename, 1);
703 713
 }
714
+
704 715
 static void lcd_implementation_drawmenu_sddirectory(bool sel, uint8_t row, const char* pstr, const char* filename, char* longFilename) {
705 716
   lcd_implementation_drawmenu_sd(sel, row, pstr, filename, longFilename, 2);
706 717
 }
718
+
707 719
 #define lcd_implementation_drawmenu_back(sel, row, pstr, data) lcd_implementation_drawmenu_generic(sel, row, pstr, LCD_STR_UPLEVEL[0], LCD_STR_UPLEVEL[0])
708 720
 #define lcd_implementation_drawmenu_submenu(sel, row, pstr, data) lcd_implementation_drawmenu_generic(sel, row, pstr, '>', LCD_STR_ARROW_RIGHT[0])
709 721
 #define lcd_implementation_drawmenu_gcode(sel, row, pstr, gcode) lcd_implementation_drawmenu_generic(sel, row, pstr, '>', ' ')

+ 252
- 0
Marlin/utf_mapper.h View File

@@ -0,0 +1,252 @@
1
+#ifndef UTF_MAPPER_H
2
+#define UTF_MAPPER_H
3
+
4
+#include  "language.h"
5
+
6
+#ifdef DOGLCD
7
+  #define HARDWARE_CHAR_OUT u8g.print
8
+#else
9
+  #define HARDWARE_CHAR_OUT lcd.write
10
+#endif
11
+
12
+#if !(defined( SIMULATE_ROMFONT )) && defined( DOGLCD )
13
+  #if defined( DISPLAY_CHARSET_ISO10646_1 )
14
+    #define MAPPER_ONE_TO_ONE
15
+  #elif defined( DISPLAY_CHARSET_ISO10646_5 )
16
+    #define MAPPER_ONE_TO_ONE
17
+  #elif defined( DISPLAY_CHARSET_ISO10646_KANA )
18
+    #define MAPPER_ONE_TO_ONE
19
+  #endif
20
+#else // SIMULATE_ROMFONT
21
+  #if defined( DISPLAY_CHARSET_HD44780_JAPAN )
22
+    #if defined( MAPPER_C2C3 )
23
+      const PROGMEM uint8_t utf_recode[] =
24
+           { // 0    1    2    3    4    5    6    7    8    9    a    b    c    d    e    f          This is fair for symbols
25
+             0x20,0x3f,0xec,0xed,0x3f,0x5c,0x7c,0x3f,0x22,0x63,0x61,0x7f,0x3f,0x3f,0x52,0xb0,  // c2a
26
+  //          ' '       ¢    £         ­    l         "    c    a    «              R
27
+             0xdf,0x3f,0x32,0x33,0x27,0xe4,0xf1,0xa5,0x2c,0x31,0xdf,0x7e,0x3f,0x3f,0x3f,0x3f,  // c2b but relatively bad for letters.
28
+  //          °         2    3    `    N    p    .    ,    1    °    »
29
+             0x3f,0x3f,0x3f,0x3f,0xe1,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,  // c38
30
+  //                              ä
31
+             0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0xef,0x78,0x3f,0x3f,0x3f,0x3f,0xf5,0x3f,0x3f,0xe2,  // c39 missing characters display as '?'
32
+  //                                        ö     x                       ü              ß
33
+             0x3f,0x3f,0x3f,0x3f,0xe1,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,  // c3a
34
+  //                              ä
35
+             0x3f,0xee,0x3f,0x3f,0x3f,0x3f,0xef,0xfd,0x3f,0x3f,0x3f,0x3f,0xf5,0x3f,0x3f,0x3f   // c3b
36
+  //               n                        ö    ÷                        ü
37
+           };
38
+    #elif defined( MAPPER_E382E383 )
39
+      const PROGMEM uint8_t utf_recode[] =
40
+           { // 0    1    2    3    4    5    6    7    8    9    a    b    c    d    e    f
41
+             0x3d,0xb1,0xb1,0xa8,0xb2,0xa9,0xb3,0xaa,0xb4,0xab,0xb5,0xb6,0xb6,0xb7,0xb7,0xb8,  // e382a Please test and correct
42
+  //          =    ア    ア    ィ    イ    ゥ    ウ    ェ    エ    ォ    オ   ガ    ガ    キ   キ    ク
43
+             0xb8,0xb9,0xb9,0xba,0xba,0xbb,0xbb,0xbc,0xbc,0xbd,0xbd,0xbe,0xbe,0xbf,0xbf,0xc0,  // e382b
44
+  //          ク    ケ    ケ   コ    コ    サ    サ    シ    シ   ス    ス    セ    セ    ソ   ソ    タ
45
+             0xc0,0xc1,0xc1,0xc2,0xc2,0xc2,0xc3,0xc3,0xc4,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,  // e3838
46
+  //          タ    チ    チ    ッ    ッ    ッ    テ   テ    ト    ト    ナ    ニ    ヌ    ネ   ノ    ハ
47
+             0xca,0xca,0xcb,0xcb,0xcb,0xcc,0xcc,0xcc,0xcd,0xcd,0xcd,0xce,0xce,0xce,0xcf,0xd0,  // e3839
48
+  //          ハ    ハ    ヒ   ヒ    ヒ     フ    フ   フ    ヘ    ヘ    ヘ    ホ    ホ    ホ   マ    ミ
49
+             0xd1,0xd2,0xd3,0xd4,0xd4,0xd5,0xd5,0xae,0xd6,0xd7,0xd8,0xd9,0xda,0xdb,0xdc,0xdc,  // e383a
50
+  //          ム    メ    モ    ャ   ャ    ユ    ユ    ョ    ヨ    ラ    リ    ル    レ    ロ   ワ    ワ
51
+             0xec,0xa7,0xa6,0xdd,0xcc,0x3f,0x3f,0x3f,0x3f,0x3f,0xa6,0xa5,0xb0,0xa4,0xa4,0x3f   // e383b
52
+  //          ヰ    ヱ    ヲ    ン    フ    ?    ?   ?    ?    ?    ヲ    ・    ー    ヽ    ヽ   ?
53
+           };
54
+    #elif defined( MAPPER_D0D1 )
55
+      #error( "Cyrillic on a japanese dsplay makes no sense. There are no matching symbols.");
56
+    #endif
57
+
58
+  #elif defined( DISPLAY_CHARSET_HD44780_WESTERN )
59
+    #if defined( MAPPER_C2C3 )
60
+    :
61
+      const PROGMEM uint8_t utf_recode[] =
62
+           { // 0    1    2    3    4    5    6    7    8    9    a    b    c    d    e    f   This is relative complete.
63
+             0x20,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0x22,0xa9,0xaa,0xab,0x3f,0x3f,0xae,0x3f,  // c2a ¡¢£¤¥¦§¨©ª«¬­®¯
64
+  //         ' '   ¡    ¢    £    ¤    ¥    ¦    §    "    ©    ª    «    ?    ?    ®    ?
65
+             0xb0,0xb1,0xb2,0xb3,0x27,0xb5,0xb6,0xb7,0x2c,0xb9,0xba,0xbb,0xbc,0xbd,0xbe,0xbf,  // c2b °±²³´µ¶·¸¹º»¼½¾¿
66
+  //          °    ±    ³    ²    ?    µ    ¶    ·    ,    ¹    º    »    ¼    ½    ¾    ¿
67
+             0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,  // c38 ÀÁÃÄÅÆÇÈÉÊËÌÍÎÏ
68
+  //          À    Á    Â    Ã    Ä    Å    Æ    Ç    È    É    Ê    Ë    Ì    Í    Î    Ï
69
+             0xd0,0xd1,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xdb,0xdc,0xdd,0xde,0xdf,  // c39 ÐÑÓÔÕÖ×ØÙÚÛÜÝÞß
70
+  //          Ð    Ñ    Ò    Ó    Ô    Õ    Ö    ×    Ø    Ù    Ú    Û    Ü    Ý    Þ    ß
71
+             0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xeb,0xec,0xed,0xee,0xef,  // c3a àáãäåæçèéêëìíîï 
72
+  //          à    á    â    ã    ä    å    æ    ç    è    é    ê    ë    ì    í    î    ï
73
+             0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff   // c3b ðñóôõö÷øùúûüýþÿ
74
+  //          ð    ñ    ò    ó    ô    õ    ö    ÷    ø    ù    ú    û    ü    ý    þ    ÿ
75
+           };
76
+    #elif defined( MAPPER_D0D1 )
77
+      #define MAPPER_D0D1_MOD
78
+      const PROGMEM uint8_t utf_recode[] =
79
+           {//0    1    2    3    4    5    6    7    8    9    a    b    c    d    e    f
80
+             0x41,0x80,0x42,0x92,0x81,0x45,0x82,0x83,0x84,0x85,0x4b,0x86,0x4d,0x48,0x4f,0x87,  // d0a
81
+  //          A    Б    B    Г    Д    E    Ж    З    И    Й    K    Л    M    H    O    П
82
+             0x50,0x43,0x54,0x88,0xd8,0x58,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x62,0x8f,0xac,0xad,  // d0b
83
+  //          P    C    T    У    Ф    X    Ч    ч    Ш    Щ    Ъ    Ы    b    Э    Ю    Я
84
+             0x61,0x36,0x42,0x92,0x81,0x65,0x82,0xb3,0x84,0x85,0x6b,0x86,0x4d,0x48,0x6f,0x87,  // d18
85
+  //          a    6    B    Г    Д    e    Ж    ³    И    Й    k    Л    M    H    o    П
86
+             0x70,0x63,0x54,0x79,0xd8,0x78,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x62,0x8f,0xac,0xad   // d19
87
+  //          p    c    T    y    Ф    x    Ч    ч    Ш    Щ    Ъ    Ы    b    Э    Ю    Я
88
+            };
89
+    #elif defined( MAPPER_E382E383 )
90
+      #error( "Katakana on a western display makes no sense. There are no matching symbols." );
91
+    #endif
92
+
93
+  #elif defined( DISPLAY_CHARSET_HD44780_CYRILLIC )
94
+    #if defined( MAPPER_D0D1 )
95
+      #define MAPPER_D0D1_MOD
96
+      // it is a Russian alphabet translation
97
+      // except 0401 --> 0xa2 = Ё, 0451 --> 0xb5 = ё
98
+      const PROGMEM uint8_t utf_recode[] =
99
+             { 0x41,0xa0,0x42,0xa1,0xe0,0x45,0xa3,0xa4,   // unicode U+0400 to U+047f
100
+  //            A   Б->Ё  B    Г    Д    E    Ж    З      // 0  Ѐ Ё Ђ Ѓ Є Ѕ І Ї
101
+               0xa5,0xa6,0x4b,0xa7,0x4d,0x48,0x4f,0xa8,   //    Ј Љ Њ Ћ Ќ Ѝ Ў Џ
102
+  //            И    Й    K    Л    M    H    O    П      // 1  А Б В Г Д Е Ж З
103
+               0x50,0x43,0x54,0xa9,0xaa,0x58,0xe1,0xab,   //    И Й К Л М Н О П
104
+  //            P    C    T    У    Ф    X    Ч    ч      // 2  Р С Т У Ф Х Г Ч
105
+               0xac,0xe2,0xad,0xae,0x62,0xaf,0xb0,0xb1,   //    Ш Щ Ъ Ы Ь Э Ю Я
106
+  //            Ш    Щ    Ъ    Ы    b    Э    Ю    Я      // 3  а б в г д е ж з
107
+               0x61,0xb2,0xb3,0xb4,0xe3,0x65,0xb6,0xb7,   //    и й к л м н о п
108
+  //            a   б->ё  в    г    д    e    ж    з      // 4  р с т у ф х ц ч
109
+               0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0x6f,0xbe,   //    ш щ ъ ы ь э ю я
110
+  //            и    й    к    л    м    н    o    п      // 5  ѐ ё ђ ѓ є ѕ і ї
111
+               0x70,0x63,0xbf,0x79,0xe4,0x78,0xe5,0xc0,   //    ј љ њ ћ ќ ѝ ў џ
112
+  //            p    c    т    y    ф    x    ц    ч      // 6  Ѡ ѡ Ѣ ѣ Ѥ ѥ Ѧ ѧ
113
+               0xc1,0xe6,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7    //    Ѫ ѩ Ѫ ѫ Ѭ ѭ Ѯ ѯ
114
+  //            ш    щ    ъ    ы    ь    э    ю    я      // 7  Ѱ ѱ Ѳ ѳ Ѵ ѵ Ѷ ѷ
115
+             };                                           //    ѻ ѹ Ѻ ѻ Ѽ ѽ Ѿ ѿ
116
+    #elif defined( MAPPER_C2C3 )
117
+      #error( "Western languages on a cyrillic display makes no sense. There are no matching symbols." );
118
+    #elif defined( MAPPER_E382E383 )
119
+      #error( "Katakana on a cyrillic display makes no sense. There are no matching symbols." );
120
+    #endif
121
+  #else
122
+    #error("Something went wrong in the selection of DISPLAY_CHARSET_HD44780's");
123
+  #endif // DISPLAY_CHARSET_HD44780_CYRILLIC
124
+#endif // SIMULATE_ROMFONT
125
+
126
+#if defined( MAPPER_NON )
127
+  char charset_mapper(char c){
128
+    HARDWARE_CHAR_OUT( c );
129
+    return 1;
130
+  }
131
+#elif defined( MAPPER_C2C3 )
132
+  uint8_t utf_hi_char; // UTF-8 high part
133
+  bool seen_c2 = false;
134
+  char charset_mapper(char c){
135
+    uint8_t d = c;
136
+    if ( d >= 0x80 ) { // UTF-8 handling
137
+      if ( (d >= 0xc0) && (!seen_c2) ) {
138
+        utf_hi_char = d - 0xc2;
139
+        seen_c2 = true;
140
+        return 0;
141
+      }
142
+      else if (seen_c2){
143
+        d &= 0x3f;
144
+        #ifndef MAPPER_ONE_TO_ONE
145
+          HARDWARE_CHAR_OUT( (char) pgm_read_byte_near( utf_recode + d + ( utf_hi_char << 6 ) - 0x20 ) );
146
+        #else
147
+          HARDWARE_CHAR_OUT( (char) (0x80 + ( utf_hi_char << 6 ) + d) ) ;
148
+        #endif
149
+      }
150
+      else {
151
+          HARDWARE_CHAR_OUT('?');
152
+      }
153
+    }
154
+    else {
155
+      HARDWARE_CHAR_OUT((char) c );
156
+    }
157
+    seen_c2 = false;
158
+    return 1;
159
+  }
160
+#elif defined( MAPPER_D0D1_MOD )
161
+  uint8_t utf_hi_char; // UTF-8 high part
162
+  bool seen_d5 = false;
163
+  char charset_mapper(char c){
164
+    // it is a Russian alphabet translation
165
+    // except 0401 --> 0xa2 = Ё, 0451 --> 0xb5 = ё
166
+    uint8_t d = c;
167
+    if ( d >= 0x80 ) { // UTF-8 handling
168
+      if ((d >= 0xd0) && (!seen_d5)) {
169
+        utf_hi_char = d - 0xd0;
170
+        seen_d5 = true;
171
+        return 0;
172
+      } else if (seen_d5) {
173
+          d &= 0x3f;
174
+          if ( !utf_hi_char && ( d == 1 )) {
175
+            HARDWARE_CHAR_OUT((char) 0xa2 ); // Ё
176
+        } else if ((utf_hi_char == 1) && (d == 0x11)) {
177
+            HARDWARE_CHAR_OUT((char) 0xb5 ); // ё
178
+          } else {
179
+            HARDWARE_CHAR_OUT((char) pgm_read_byte_near( utf_recode + d + ( utf_hi_char << 6 ) - 0x10 ) );
180
+          }
181
+        }
182
+        else {
183
+          HARDWARE_CHAR_OUT('?');
184
+        }
185
+    } else {
186
+      HARDWARE_CHAR_OUT((char) c );
187
+    }
188
+    seen_d5 = false;
189
+    return 1;
190
+  }
191
+#elif defined( MAPPER_D0D1 )
192
+  uint8_t utf_hi_char; // UTF-8 high part
193
+  bool seen_d5 = false;
194
+  char charset_mapper(char c){
195
+    uint8_t d = c;
196
+    if ( d >= 0x80u ) { // UTF-8 handling
197
+      if ((d >= 0xd0u) && (!seen_d5)) {
198
+        utf_hi_char = d - 0xd0u;
199
+        seen_d5 = true;
200
+        return 0;
201
+      } else if (seen_d5) {
202
+          d &= 0x3fu;
203
+        #ifndef MAPPER_ONE_TO_ONE
204
+          HARDWARE_CHAR_OUT( (char) pgm_read_byte_near( utf_recode + d + ( utf_hi_char << 6 ) - 0x20 ) );
205
+        #else
206
+          HARDWARE_CHAR_OUT( (char) (0xa0u + ( utf_hi_char << 6 ) + d ) ) ;
207
+        #endif
208
+      } else {
209
+        HARDWARE_CHAR_OUT('?');
210
+      }
211
+    } else {
212
+      HARDWARE_CHAR_OUT((char) c );
213
+    }
214
+    seen_d5 = false;
215
+    return 1;
216
+  }
217
+#elif defined( MAPPER_E382E383 )
218
+  uint8_t utf_hi_char; // UTF-8 high part
219
+  bool seen_e3 = false;
220
+  bool seen_82_83 = false;
221
+  char charset_mapper(char c){
222
+  uint8_t d = c;
223
+    if ( d >= 0x80 ) { // UTF-8 handling
224
+      if ( (d == 0xe3) && (seen_e3 == false)) {
225
+        seen_e3 = true;
226
+        return 0;      // eat 0xe3
227
+      } else if ( (d >= 0x82) && (seen_e3 == true) && (seen_82_83 == false)) {
228
+        utf_hi_char = d - 0x82;
229
+        seen_82_83 = true;
230
+        return 0;
231
+      } else if ((seen_e3 == true) && (seen_82_83 == true)){
232
+        d &= 0x3f;
233
+        #ifndef MAPPER_ONE_TO_ONE
234
+          HARDWARE_CHAR_OUT( (char) pgm_read_byte_near( utf_recode + d + ( utf_hi_char << 6 ) - 0x20 ) );
235
+        #else
236
+          HARDWARE_CHAR_OUT( (char) (0x80 + ( utf_hi_char << 6 ) + d ) ) ;
237
+        #endif
238
+      } else {
239
+        HARDWARE_CHAR_OUT((char) '?' );
240
+      }
241
+    } else {
242
+      HARDWARE_CHAR_OUT((char) c );
243
+    }
244
+    seen_e3 = false;
245
+    seen_82_83 = false;
246
+    return 1;
247
+  }
248
+#else
249
+  #error "You have to define one of the DISPLAY_INPUT_CODE_MAPPERs in your language_xx.h file" // should not occur because (en) will set.
250
+#endif // code mappers
251
+
252
+#endif // UTF_MAPPER_H

+ 1
- 0
README.md View File

@@ -10,6 +10,7 @@
10 10
     * [Auto Bed Leveling](/Documentation/BedLeveling.md)
11 11
     * [Filament Sensor](/Documentation/FilamentSensor.md)
12 12
     * [Ramps Servo Power](/Documentation/RampsServoPower.md)
13
+    * [LCD Language - Font - System](Documentation/LCDLanguageFont.md)
13 14
     * [Mesh Bed Leveling](/Documentation/MeshBedLeveling.md)
14 15
 
15 16
 ##### [RepRap.org Wiki Page](http://reprap.org/wiki/Marlin)

Loading…
Cancel
Save