From 2644928a5623b4912355d3efba5041226d8f702e Mon Sep 17 00:00:00 2001
From: egorguslyan <egorguslyan@gmail.com>
Date: Thu, 25 Nov 2021 09:26:04 +0000
Subject: [PATCH] Russian font

---
 Dashboard/font.h | 348 ++++++++++++++++++++++++++++++++++-------------
 1 file changed, 250 insertions(+), 98 deletions(-)

diff --git a/Dashboard/font.h b/Dashboard/font.h
index 97b50e0..d9ac1dc 100644
--- a/Dashboard/font.h
+++ b/Dashboard/font.h
@@ -5,6 +5,7 @@
 // Example char
 // const uint8_t char[] PROGMEM = {cords(x, y, b),  0b11111110, 0b11110111, 0b01011101, 0b11101111, 0b11100000};
 
+const uint8_t font_null[]   PROGMEM =       {0};
 const uint8_t font_notdef[] PROGMEM =       {cords(5, 0, 5), 0b11111110, 0b11110111, 0b01011101, 0b11101111, 0b11100000};
 const uint8_t font_space[] PROGMEM =        {cords(1, 6, 1), 0b00000000};
 const uint8_t font_exclamation[] PROGMEM =  {cords(1, 0, 1), 0b11110100};
@@ -103,103 +104,254 @@ const uint8_t font_w[] PROGMEM =            {cords(5, 2, 3), 0b10001100, 0b01101
 const uint8_t font_x[] PROGMEM =            {cords(3, 2, 2), 0b10110101, 0b01011010};
 const uint8_t font_y[] PROGMEM =            {cords(3, 2, 2), 0b10110101, 0b10011100};
 const uint8_t font_z[] PROGMEM =            {cords(3, 2, 2), 0b11100101, 0b01001110};
+// Russian
+#ifdef LANG_RU_RU
+const uint8_t font_ru_ru_B[] PROGMEM =         {cords(4, 0, 4), 0b11111000, 0b10001111, 0b10011001, 0b11110000};
+const uint8_t font_ru_ru_G[] PROGMEM =         {cords(4, 0, 4), 0b11111000, 0b10001000, 0b10001000, 0b10000000};
+const uint8_t font_ru_ru_D[] PROGMEM =         {cords(5, 0, 5), 0b00110010, 0b10010100, 0b10101001, 0b01111110, 0b00100000};
+const uint8_t font_ru_ru_Ye[] PROGMEM =        {cords(3, 0, 3), 0b10100011, 0b11001111, 0b00111000};
+const uint8_t font_ru_ru_J[] PROGMEM =         {cords(5, 0, 5), 0b10101101, 0b01011101, 0b01011010, 0b11010110, 0b10100000};
+const uint8_t font_ru_ru_Z[] PROGMEM =         {cords(4, 0, 4), 0b11100001, 0b00011110, 0b00010001, 0b11100000};
+const uint8_t font_ru_ru_I[] PROGMEM =         {cords(5, 0, 5), 0b10001100, 0b11101011, 0b01011010, 0b11100110, 0b00100000};
+const uint8_t font_ru_ru_Yi[] PROGMEM =        {cords(5, 0, 5), 0b01110000, 0b00100011, 0b00111010, 0b11100110, 0b00100000};
+const uint8_t font_ru_ru_L[] PROGMEM =         {cords(4, 0, 5), 0b00110101, 0b01010101, 0b01010101, 0b10010000};
+const uint8_t font_ru_ru_P[] PROGMEM =         {cords(4, 0, 5), 0b11111001, 0b10011001, 0b10011001, 0b10010000};
+const uint8_t font_ru_ru_U[] PROGMEM =         {cords(4, 0, 5), 0b10011001, 0b10010111, 0b00010010, 0b11000000};
+const uint8_t font_ru_ru_F[] PROGMEM =         {cords(5, 0, 5), 0b01110101, 0b01101010, 0b11100010, 0b00010000, 0b10000000};
+const uint8_t font_ru_ru_C[] PROGMEM =         {cords(5, 0, 5), 0b10010100, 0b10100101, 0b00101001, 0b01111100, 0b00100000};
+const uint8_t font_ru_ru_Ch[] PROGMEM =        {cords(4, 0, 5), 0b10011001, 0b10011111, 0b00010001, 0b00010000};
+const uint8_t font_ru_ru_Sh[] PROGMEM =        {cords(5, 1, 5), 0b10101101, 0b01101011, 0b01011010, 0b11111100};
+const uint8_t font_ru_ru_Sc[] PROGMEM =        {cords(5, 0, 5), 0b11111000, 0b10001111, 0b10011001, 0b11110000, 0b10000000};
+const uint8_t font_ru_ru_Tz[] PROGMEM =        {cords(5, 0, 5), 0b11000010, 0b00010000, 0b11100100, 0b10100101, 0b11000000};
+const uint8_t font_ru_ru_Y[] PROGMEM =         {cords(5, 0, 5), 0b10001100, 0b01100011, 0b10011010, 0b11010111, 0b00100000};
+const uint8_t font_ru_ru_Mz[] PROGMEM =        {cords(4, 0, 5), 0b10001000, 0b10001110, 0b10011001, 0b11100000};
+const uint8_t font_ru_ru_Ae[] PROGMEM =        {cords(4, 0, 5), 0b11100001, 0b00010111, 0b00010001, 0b11100000};
+const uint8_t font_ru_ru_Yu[] PROGMEM =        {cords(5, 0, 5), 0b10010101, 0b01101011, 0b11011010, 0b11010110, 0b01000000};
+const uint8_t font_ru_ru_Ya[] PROGMEM =        {cords(4, 0, 5), 0b01111001, 0b10010111, 0b00110101, 0b10010000};
+const uint8_t font_ru_ru_b[] PROGMEM =         {cords(3, 0, 5), 0b01110001, 0b00111011, 0b01010000};
+const uint8_t font_ru_ru_v[] PROGMEM =         {cords(3, 0, 4), 0b01010111, 0b01011010, 0b10000000};
+const uint8_t font_ru_ru_g[] PROGMEM =         {cords(3, 2, 5), 0b11110010, 0b01001000};
+const uint8_t font_ru_ru_d[] PROGMEM =         {cords(5, 2, 5), 0b00110010, 0b10010101, 0b11111000, 0b10000000};
+const uint8_t font_ru_ru_ye[] PROGMEM =        {cords(4, 0, 5), 0b10010000, 0b01101001, 0b11101000, 0b01100000};
+const uint8_t font_ru_ru_j[] PROGMEM =         {cords(5, 2, 5), 0b10101011, 0b10001000, 0b11101010, 0b10000000};
+const uint8_t font_ru_ru_z[] PROGMEM =         {cords(3, 2, 5), 0b11000111, 0b00011100};
+const uint8_t font_ru_ru_i[] PROGMEM =         {cords(5, 2, 5), 0b10001100, 0b11101011, 0b10011000, 0b10000000};
+const uint8_t font_ru_ru_yi[] PROGMEM =        {cords(5, 0, 5), 0b01110000, 0b00100011, 0b00111010, 0b11100110, 0b00100000};
+const uint8_t font_ru_ru_k[] PROGMEM =         {cords(4, 2, 5), 0b10011010, 0b11001010, 0b10010000};
+const uint8_t font_ru_ru_l[] PROGMEM =         {cords(4, 2, 5), 0b00110101, 0b01010101, 0b10010000};
+const uint8_t font_ru_ru_n[] PROGMEM =         {cords(4, 2, 5), 0b10011001, 0b11111001, 0b10010000};
+const uint8_t font_ru_ru_p[] PROGMEM =         {cords(4, 0, 5), 0b11111001, 0b10011001, 0b10010000};
+const uint8_t font_ru_ru_t[] PROGMEM =         {cords(3, 2, 5), 0b11101001, 0b00100100};
+const uint8_t font_ru_ru_f[] PROGMEM =         {cords(5, 2, 5), 0b00100011, 0b10101010, 0b11100010};
+const uint8_t font_ru_ru_c[] PROGMEM =         {cords(4, 2, 5), 0b10101010, 0b10101111, 0b00010000};
+const uint8_t font_ru_ru_ch[] PROGMEM =        {cords(4, 2, 5), 0b10011001, 0b01110001, 0b00010000};
+const uint8_t font_ru_ru_sh[] PROGMEM =        {cords(5, 2, 5), 0b10101101, 0b01101011, 0b01011111, 0b10000000};
+const uint8_t font_ru_ru_sc[] PROGMEM =        {cords(5, 1, 5), 0b10101101, 0b01101011, 0b01011111, 0b10000100};
+const uint8_t font_ru_ru_tz[] PROGMEM =        {cords(4, 2, 5), 0b11000100, 0b01100101, 0b01100000};
+const uint8_t font_ru_ru_y[] PROGMEM =         {cords(5, 2, 5), 0b10001100, 0b01110011, 0b01011100, 0b10000000};
+const uint8_t font_ru_ru_mz[] PROGMEM =        {cords(3, 2, 5), 0b10010011, 0b01011100};
+const uint8_t font_ru_ru_ae[] PROGMEM =        {cords(3, 2, 5), 0b11000101, 0b10011100};
+const uint8_t font_ru_ru_yu[] PROGMEM =        {cords(5, 2, 5), 0b10010101, 0b01111011, 0b01011001};
+const uint8_t font_ru_ru_ya[] PROGMEM =        {cords(4, 2, 5), 0b01111001, 0b01110101, 0b10010000};
+#endif
 
-// Font dictionary                              Location            Char    Addres
-const uint8_t* const font[] /*PROGMEM*/ =   {   font_notdef, //     NONE    NONE
-                                                font_space, //              32
-                                                font_exclamation, //!       33
-                                                font_quote, //      "       34
-                                                font_hashtag, //    #       35
-                                                font_promt, //      $       36
-                                                font_percent, //    %       37
-                                                font_octopus, //    &       38
-                                                font_singlequote, //'       39
-                                                font_bracketO, //   (       40
-                                                font_bracketC, //   )       41
-                                                font_multiply, //   *       42
-                                                font_plus, //       +       43
-                                                font_comma, //      ,       44
-                                                font_minus, //      -       45
-                                                font_dot, //        .       46
-                                                font_slash, //      /       47
-                                                font_num0, //       0       48
-                                                font_num1, //       1       49
-                                                font_num2, //       2       50
-                                                font_num3, //       3       51
-                                                font_num4, //       4       52
-                                                font_num5, //       5       53
-                                                font_num6, //       6       54
-                                                font_num7, //       7       55
-                                                font_num8, //       8       56
-                                                font_num9, //       9       57
-                                                font_colon, //      :       58
-                                                font_semicolon, //  ;       59
-                                                font_less, //       <       60
-                                                font_equal, //      =       61
-                                                font_greater, //    >       62
-                                                font_question, //   ?       63
-                                                font_mail, //       @       64
-                                                font_A, //          A       65
-                                                font_B, //          B       66
-                                                font_C, //          C       67
-                                                font_D, //          D       68
-                                                font_E, //          E       69
-                                                font_F, //          F       70
-                                                font_G, //          G       71
-                                                font_H, //          H       72
-                                                font_I, //          I       73
-                                                font_J, //          J       74
-                                                font_K, //          K       75
-                                                font_L, //          L       76
-                                                font_M, //          M       77
-                                                font_N, //          N       78
-                                                font_O, //          O       79
-                                                font_P, //          P       80
-                                                font_Q, //          Q       81
-                                                font_R, //          R       82
-                                                font_S, //          S       83
-                                                font_T, //          T       84
-                                                font_U, //          U       85
-                                                font_V, //          V       86
-                                                font_W, //          W       87
-                                                font_X, //          X       88
-                                                font_Y, //          Y       89
-                                                font_Z, //          Z       90
-                                                font_sbracketO, //  [       91
-                                                font_bslash, //     \       92
-                                                font_sbracketC, //  ]       93
-                                                font_caret, //      ^       94
-                                                font_underscore, // _       95
-                                                font_grave, //      `       96
-                                                font_a, //          a       97
-                                                font_b, //          b       98
-                                                font_c, //          c       99
-                                                font_d, //          d       100
-                                                font_e, //          e       101
-                                                font_f, //          f       102
-                                                font_g, //          g       103
-                                                font_h, //          h       104
-                                                font_i, //          i       105
-                                                font_j, //          j       106
-                                                font_k, //          k       107
-                                                font_l, //          l       108
-                                                font_m, //          m       100
-                                                font_n, //          n       110
-                                                font_o, //          o       111
-                                                font_p, //          p       112
-                                                font_q, //          q       113
-                                                font_r, //          r       114
-                                                font_s, //          s       115
-                                                font_t, //          t       116
-                                                font_u, //          u       117
-                                                font_v, //          v       118
-                                                font_w, //          w       119
-                                                font_x, //          x       120
-                                                font_y, //          y       121
-                                                font_z, //          z       122
-                                                font_fbracketO, //  {       123
-                                                font_pipe, //       |       124
-                                                font_fbracketC, //  }       125
-                                                font_tilda //       ~       126
+// Font dictionary                              Location            Char    Addres  Lang
+const uint8_t* const font[] /*PROGMEM*/ =   {   font_notdef, //     NONE    NONE    0
+                                                font_space, //              32      0
+                                                font_exclamation, //!       33      0
+                                                font_quote, //      "       34      0
+                                                font_hashtag, //    #       35      0
+                                                font_promt, //      $       36      0
+                                                font_percent, //    %       37      0
+                                                font_octopus, //    &       38      0
+                                                font_singlequote, //'       39      0
+                                                font_bracketO, //   (       40      0
+                                                font_bracketC, //   )       41      0
+                                                font_multiply, //   *       42      0
+                                                font_plus, //       +       43      0
+                                                font_comma, //      ,       44      0
+                                                font_minus, //      -       45      0
+                                                font_dot, //        .       46      0
+                                                font_slash, //      /       47      0
+                                                font_num0, //       0       48      0
+                                                font_num1, //       1       49      0
+                                                font_num2, //       2       50      0
+                                                font_num3, //       3       51      0
+                                                font_num4, //       4       52      0
+                                                font_num5, //       5       53      0
+                                                font_num6, //       6       54      0
+                                                font_num7, //       7       55      0
+                                                font_num8, //       8       56      0
+                                                font_num9, //       9       57      0
+                                                font_colon, //      :       58      0
+                                                font_semicolon, //  ;       59      0
+                                                font_less, //       <       60      0
+                                                font_equal, //      =       61      0
+                                                font_greater, //    >       62      0
+                                                font_question, //   ?       63      0
+                                                font_mail, //       @       64      0
+                                                font_A, //          A       65      0
+                                                font_B, //          B       66      0
+                                                font_C, //          C       67      0
+                                                font_D, //          D       68      0
+                                                font_E, //          E       69      0
+                                                font_F, //          F       70      0
+                                                font_G, //          G       71      0
+                                                font_H, //          H       72      0
+                                                font_I, //          I       73      0
+                                                font_J, //          J       74      0
+                                                font_K, //          K       75      0
+                                                font_L, //          L       76      0
+                                                font_M, //          M       77      0
+                                                font_N, //          N       78      0
+                                                font_O, //          O       79      0
+                                                font_P, //          P       80      0
+                                                font_Q, //          Q       81      0
+                                                font_R, //          R       82      0
+                                                font_S, //          S       83      0
+                                                font_T, //          T       84      0
+                                                font_U, //          U       85      0
+                                                font_V, //          V       86      0
+                                                font_W, //          W       87      0
+                                                font_X, //          X       88      0
+                                                font_Y, //          Y       89      0
+                                                font_Z, //          Z       90      0
+                                                font_sbracketO, //  [       91      0
+                                                font_bslash, //     \       92      0
+                                                font_sbracketC, //  ]       93      0
+                                                font_caret, //      ^       94      0
+                                                font_underscore, // _       95      0
+                                                font_grave, //      `       96      0
+                                                font_a, //          a       97      0
+                                                font_b, //          b       98      0
+                                                font_c, //          c       99      0
+                                                font_d, //          d       100     0
+                                                font_e, //          e       101     0
+                                                font_f, //          f       102     0
+                                                font_g, //          g       103     0
+                                                font_h, //          h       104     0
+                                                font_i, //          i       105     0
+                                                font_j, //          j       106     0
+                                                font_k, //          k       107     0
+                                                font_l, //          l       108     0
+                                                font_m, //          m       100     0
+                                                font_n, //          n       110     0
+                                                font_o, //          o       111     0
+                                                font_p, //          p       112     0
+                                                font_q, //          q       113     0
+                                                font_r, //          r       114     0
+                                                font_s, //          s       115     0
+                                                font_t, //          t       116     0
+                                                font_u, //          u       117     0
+                                                font_v, //          v       118     0
+                                                font_w, //          w       119     0
+                                                font_x, //          x       120     0
+                                                font_y, //          y       121     0
+                                                font_z, //          z       122     0
+                                                font_fbracketO, //  {       123     0
+                                                font_pipe, //       |       124     0
+                                                font_fbracketC, //  }       125     0
+                                                font_tilda, //      ~       126     0
+                                                
+                                                // Russian QWERTY-ЙЦУКЕН
+                                                #ifdef LANG_RU_RU
+                                                font_notdef, //     NONE    NONE    1
+                                                font_space, //              32      1
+                                                font_exclamation, //!       33      1
+                                                font_ru_ru_Ae, //   Э       34      1
+                                                font_hashtag, //    #       35      1
+                                                font_semicolon, //  ;       36      1
+                                                font_percent, //    %       37      1
+                                                font_question, //   ?       38      1
+                                                font_ru_ru_ae, //   э       39      1
+                                                font_bracketO, //   (       40      1
+                                                font_bracketC, //   )       41      1
+                                                font_multiply, //   *       42      1
+                                                font_plus, //       +       43      1
+                                                font_ru_ru_b, //    б       44      1
+                                                font_minus, //      -       45      1
+                                                font_ru_ru_yu, //   ÑŽ       46      1
+                                                font_dot, //        .       47      1
+                                                font_num0, //       0       48      1
+                                                font_num1, //       1       49      1
+                                                font_num2, //       2       50      1
+                                                font_num3, //       3       51      1
+                                                font_num4, //       4       52      1
+                                                font_num5, //       5       53      1
+                                                font_num6, //       6       54      1
+                                                font_num7, //       7       55      1
+                                                font_num8, //       8       56      1
+                                                font_num9, //       9       57      1
+                                                font_ru_ru_J, //    Ж       58      1
+                                                font_ru_ru_j, //    ж       59      1
+                                                font_ru_ru_B, //    Б       60      1
+                                                font_equal, //      =       61      1
+                                                font_ru_ru_Yu, //   Ю       62      1
+                                                font_comma, //      ,       63      1
+                                                font_quote, //      "       64      1
+                                                font_ru_ru_F, //    Ф       65      1
+                                                font_ru_ru_I, //    И       66      1
+                                                font_C, //          С       67      1
+                                                font_ru_ru_V, //    Ð’       68      1
+                                                font_ru_ru_U, //    У       69      1
+                                                font_A, //          А       70      1
+                                                font_ru_ru_P, //    П       71      1
+                                                font_P, //          Р       72      1
+                                                font_ru_ru_Sh, //   Ш       73      1
+                                                font_O, //          О       74      1
+                                                font_ru_ru_L, //    Л       75      1
+                                                font_ru_ru_D, //    Д       76      1
+                                                font_ru_ru_Mz, //   Ь       77      1
+                                                font_T, //          Т       78      1
+                                                font_ru_ru_Sc, //   Щ       79      1
+                                                font_ru_ru_Z, //    З       80      1
+                                                font_ru_ru_Yi, //   Й       81      1
+                                                font_K, //          К       82      1
+                                                font_ru_ru_Y, //    Ы       83      1
+                                                font_E, //          Е       84      1
+                                                font_ru_ru_G, //    Г       85      1
+                                                font_M, //          М       86      1
+                                                font_ru_ru_C, //    Ц       87      1
+                                                font_ru_ru_Ch, //   Ч       88      1
+                                                font_H, //          Н       89      1
+                                                font_ru_ru_Ya, //   Я       90      1
+                                                font_x, //          Ñ…       91      1
+                                                font_bslash, //     \       92      1
+                                                font_ru_ru_tz, //   ÑŠ       93      1
+                                                font_colon, //      :       94      1
+                                                font_underscore, // _       95      1
+                                                font_ru_ru_ye, //   Ñ‘       96      1
+                                                font_ru_ru_f, //    Ñ„       97      1
+                                                font_ru_ru_i, //    и       98      1
+                                                font_c, //          с       99      1
+                                                font_ru_ru_v, //    в       100     1
+                                                font_u, //          у       101     1
+                                                font_a, //          а       102     1
+                                                font_ru_ru_p, //    п       103     1
+                                                font_p, //          р       104     1
+                                                font_ru_ru_sh, //   ш       105     1
+                                                font_o, //          о       106     1
+                                                font_ru_ru_l, //    л       107     1
+                                                font_ru_ru_d, //    д       108     1
+                                                font_ru_ru_mz, //   ь       100     1
+                                                font_ru_ru_t, //    Ñ‚       110     1
+                                                font_ru_ru_sc, //   щ       111     1
+                                                font_ru_ru_z, //    з       112     1
+                                                font_ru_ru_yi, //   й       113     1
+                                                font_ru_ru_k, //    к       114     1
+                                                font_ru_ru_y, //    Ñ‹       115     1
+                                                font_e, //          е       116     1
+                                                font_ru_ru_g, //    г       117     1
+                                                font_m, //          м       118     1
+                                                font_ru_ru_c, //    ц       119     1
+                                                font_ru_ru_ch, //   ч       120     1
+                                                font_ru_ru_n, //    н       121     1
+                                                font_ru_ru_ya, //   я       122     1
+                                                font_X, //          Х       123     1
+                                                font_slash, //      /       124     1
+                                                font_ru_ru_Tz, //   Ъ       125     1
+                                                font_ru_ru_Ye, //   Ё       126     1
+                                                #endif
+
+                                                font_null   // Final element
 };
-                                                
\ No newline at end of file
-- 
GitLab