diff --git a/src/graphics/Screen.cpp b/src/graphics/Screen.cpp
index ca48647a..c74fa134 100644
--- a/src/graphics/Screen.cpp
+++ b/src/graphics/Screen.cpp
@@ -44,6 +44,10 @@ along with this program. If not, see .
#include "mesh/http/WiFiAPClient.h"
#endif
+#ifdef OLED_RU
+#include "fonts/OLEDDisplayFontsRU.h"
+#endif
+
using namespace meshtastic; /** @todo remove */
extern bool loadProto(const char *filename, size_t protoSize, size_t objSize, const pb_msgdesc_t *fields, void *dest_struct);
@@ -100,7 +104,11 @@ static uint16_t displayWidth, displayHeight;
#define FONT_MEDIUM ArialMT_Plain_24
#define FONT_LARGE ArialMT_Plain_24
#else
+#ifdef OLED_RU
+#define FONT_SMALL ArialMT_Plain_10_RU
+#else
#define FONT_SMALL ArialMT_Plain_10
+#endif
#define FONT_MEDIUM ArialMT_Plain_16
#define FONT_LARGE ArialMT_Plain_24
#endif
diff --git a/src/graphics/Screen.h b/src/graphics/Screen.h
index 18e2285e..2fa702ce 100644
--- a/src/graphics/Screen.h
+++ b/src/graphics/Screen.h
@@ -212,7 +212,7 @@ class Screen : public concurrency::OSThread
uint8_t last = LASTCHAR; // get last char
LASTCHAR = ch;
- switch (last) { // conversion depnding on first UTF8-character
+ switch (last) { // conversion depending on first UTF8-character
case 0xC2: {
SKIPREST = false;
return (uint8_t)ch;
@@ -221,10 +221,23 @@ class Screen : public concurrency::OSThread
SKIPREST = false;
return (uint8_t)(ch | 0xC0);
}
+ // map UTF-8 cyrillic chars to it Windows-1251 (CP-1251) ASCII codes
+ // note: in this case we must use compatible font - provided ArialMT_Plain_10/16/24 by 'ThingPulse/esp8266-oled-ssd1306' library
+ // have empty chars for non-latin ASCII symbols
+ case 0xD0: {
+ SKIPREST = false;
+ if (ch == 129) return (uint8_t)(168); // Ё
+ if (ch > 143 && ch < 192) return (uint8_t)(ch + 48);
+ }
+ case 0xD1: {
+ SKIPREST = false;
+ if (ch == 145) return (uint8_t)(184); // ё
+ if (ch > 127 && ch < 144) return (uint8_t)(ch + 112);
+ }
}
// We want to strip out prefix chars for two-byte char formats
- if (ch == 0xC2 || ch == 0xC3 || ch == 0x82)
+ if (ch == 0xC2 || ch == 0xC3 || ch == 0x82 || ch == 0xD0 || ch == 0xD1)
return (uint8_t)0;
// If we already returned an unconvertable-character symbol for this unconvertable-character sequence, return NULs for the
diff --git a/src/graphics/fonts/OLEDDisplayFontsRU.cpp b/src/graphics/fonts/OLEDDisplayFontsRU.cpp
new file mode 100644
index 00000000..6ce18c9d
--- /dev/null
+++ b/src/graphics/fonts/OLEDDisplayFontsRU.cpp
@@ -0,0 +1,426 @@
+#include "OLEDDisplayFontsRU.h"
+
+// Font generated or edited with the glyphEditor
+const uint8_t ArialMT_Plain_10_RU[] PROGMEM = {
+ 0x0A, // Width: 10
+ 0x0D, // Height: 13
+ 0x20, // First char: 32
+ 0xE0, // Number of chars: 224
+
+ // Jump Table:
+ 0xFF, 0xFF, 0x00, 0x0A, // 32
+ 0x00, 0x00, 0x04, 0x03, // 33
+ 0x00, 0x04, 0x05, 0x04, // 34
+ 0x00, 0x09, 0x09, 0x06, // 35
+ 0x00, 0x12, 0x0A, 0x06, // 36
+ 0x00, 0x1C, 0x10, 0x09, // 37
+ 0x00, 0x2C, 0x0E, 0x08, // 38
+ 0x00, 0x3A, 0x01, 0x02, // 39
+ 0x00, 0x3B, 0x06, 0x04, // 40
+ 0x00, 0x41, 0x06, 0x04, // 41
+ 0x00, 0x47, 0x05, 0x04, // 42
+ 0x00, 0x4C, 0x09, 0x06, // 43
+ 0x00, 0x55, 0x04, 0x03, // 44
+ 0x00, 0x59, 0x03, 0x03, // 45
+ 0x00, 0x5C, 0x04, 0x03, // 46
+ 0x00, 0x60, 0x05, 0x04, // 47
+ 0x00, 0x65, 0x0A, 0x06, // 48
+ 0x00, 0x6F, 0x08, 0x05, // 49
+ 0x00, 0x77, 0x0A, 0x06, // 50
+ 0x00, 0x81, 0x0A, 0x06, // 51
+ 0x00, 0x8B, 0x0B, 0x07, // 52
+ 0x00, 0x96, 0x0A, 0x06, // 53
+ 0x00, 0xA0, 0x0A, 0x06, // 54
+ 0x00, 0xAA, 0x09, 0x06, // 55
+ 0x00, 0xB3, 0x0A, 0x06, // 56
+ 0x00, 0xBD, 0x0A, 0x06, // 57
+ 0x00, 0xC7, 0x04, 0x03, // 58
+ 0x00, 0xCB, 0x04, 0x03, // 59
+ 0x00, 0xCF, 0x0A, 0x06, // 60
+ 0x00, 0xD9, 0x09, 0x06, // 61
+ 0x00, 0xE2, 0x09, 0x06, // 62
+ 0x00, 0xEB, 0x0B, 0x07, // 63
+ 0x00, 0xF6, 0x14, 0x0B, // 64
+ 0x01, 0x0A, 0x0E, 0x08, // 65
+ 0x01, 0x18, 0x0C, 0x07, // 66
+ 0x01, 0x24, 0x0C, 0x07, // 67
+ 0x01, 0x30, 0x0B, 0x07, // 68
+ 0x01, 0x3B, 0x0C, 0x07, // 69
+ 0x01, 0x47, 0x09, 0x06, // 70
+ 0x01, 0x50, 0x0D, 0x08, // 71
+ 0x01, 0x5D, 0x0C, 0x07, // 72
+ 0x01, 0x69, 0x04, 0x03, // 73
+ 0x01, 0x6D, 0x08, 0x05, // 74
+ 0x01, 0x75, 0x0E, 0x08, // 75
+ 0x01, 0x83, 0x0C, 0x07, // 76
+ 0x01, 0x8F, 0x10, 0x09, // 77
+ 0x01, 0x9F, 0x0C, 0x07, // 78
+ 0x01, 0xAB, 0x0E, 0x08, // 79
+ 0x01, 0xB9, 0x0B, 0x07, // 80
+ 0x01, 0xC4, 0x0E, 0x08, // 81
+ 0x01, 0xD2, 0x0C, 0x07, // 82
+ 0x01, 0xDE, 0x0C, 0x07, // 83
+ 0x01, 0xEA, 0x0B, 0x07, // 84
+ 0x01, 0xF5, 0x0C, 0x07, // 85
+ 0x02, 0x01, 0x0D, 0x08, // 86
+ 0x02, 0x0E, 0x11, 0x0A, // 87
+ 0x02, 0x1F, 0x0E, 0x08, // 88
+ 0x02, 0x2D, 0x0D, 0x08, // 89
+ 0x02, 0x3A, 0x0C, 0x07, // 90
+ 0x02, 0x46, 0x06, 0x04, // 91
+ 0x02, 0x4C, 0x06, 0x04, // 92
+ 0x02, 0x52, 0x04, 0x03, // 93
+ 0x02, 0x56, 0x09, 0x06, // 94
+ 0x02, 0x5F, 0x0C, 0x07, // 95
+ 0x02, 0x6B, 0x03, 0x03, // 96
+ 0x02, 0x6E, 0x0A, 0x06, // 97
+ 0x02, 0x78, 0x0A, 0x06, // 98
+ 0x02, 0x82, 0x0A, 0x06, // 99
+ 0x02, 0x8C, 0x0A, 0x06, // 100
+ 0x02, 0x96, 0x0A, 0x06, // 101
+ 0x02, 0xA0, 0x05, 0x04, // 102
+ 0x02, 0xA5, 0x0A, 0x06, // 103
+ 0x02, 0xAF, 0x0A, 0x06, // 104
+ 0x02, 0xB9, 0x04, 0x03, // 105
+ 0x02, 0xBD, 0x04, 0x03, // 106
+ 0x02, 0xC1, 0x08, 0x05, // 107
+ 0x02, 0xC9, 0x04, 0x03, // 108
+ 0x02, 0xCD, 0x10, 0x09, // 109
+ 0x02, 0xDD, 0x0A, 0x06, // 110
+ 0x02, 0xE7, 0x0A, 0x06, // 111
+ 0x02, 0xF1, 0x0A, 0x06, // 112
+ 0x02, 0xFB, 0x0A, 0x06, // 113
+ 0x03, 0x05, 0x05, 0x04, // 114
+ 0x03, 0x0A, 0x08, 0x05, // 115
+ 0x03, 0x12, 0x06, 0x04, // 116
+ 0x03, 0x18, 0x0A, 0x06, // 117
+ 0x03, 0x22, 0x09, 0x06, // 118
+ 0x03, 0x2B, 0x0E, 0x08, // 119
+ 0x03, 0x39, 0x0A, 0x06, // 120
+ 0x03, 0x43, 0x09, 0x06, // 121
+ 0x03, 0x4C, 0x0A, 0x06, // 122
+ 0x03, 0x56, 0x06, 0x04, // 123
+ 0x03, 0x5C, 0x04, 0x03, // 124
+ 0x03, 0x60, 0x05, 0x04, // 125
+ 0x03, 0x65, 0x09, 0x06, // 126
+ 0xFF, 0xFF, 0x00, 0x0A, // 127
+ 0xFF, 0xFF, 0x00, 0x0A, // 128
+ 0xFF, 0xFF, 0x00, 0x0A, // 129
+ 0xFF, 0xFF, 0x00, 0x0A, // 130
+ 0xFF, 0xFF, 0x00, 0x0A, // 131
+ 0xFF, 0xFF, 0x00, 0x0A, // 132
+ 0xFF, 0xFF, 0x00, 0x0A, // 133
+ 0xFF, 0xFF, 0x00, 0x0A, // 134
+ 0xFF, 0xFF, 0x00, 0x0A, // 135
+ 0xFF, 0xFF, 0x00, 0x0A, // 136
+ 0xFF, 0xFF, 0x00, 0x0A, // 137
+ 0xFF, 0xFF, 0x00, 0x0A, // 138
+ 0xFF, 0xFF, 0x00, 0x0A, // 139
+ 0xFF, 0xFF, 0x00, 0x0A, // 140
+ 0xFF, 0xFF, 0x00, 0x0A, // 141
+ 0xFF, 0xFF, 0x00, 0x0A, // 142
+ 0xFF, 0xFF, 0x00, 0x0A, // 143
+ 0xFF, 0xFF, 0x00, 0x0A, // 144
+ 0xFF, 0xFF, 0x00, 0x0A, // 145
+ 0xFF, 0xFF, 0x00, 0x0A, // 146
+ 0xFF, 0xFF, 0x00, 0x0A, // 147
+ 0xFF, 0xFF, 0x00, 0x0A, // 148
+ 0xFF, 0xFF, 0x00, 0x0A, // 149
+ 0xFF, 0xFF, 0x00, 0x0A, // 150
+ 0xFF, 0xFF, 0x00, 0x0A, // 151
+ 0xFF, 0xFF, 0x00, 0x0A, // 152
+ 0xFF, 0xFF, 0x00, 0x0A, // 153
+ 0xFF, 0xFF, 0x00, 0x0A, // 154
+ 0xFF, 0xFF, 0x00, 0x0A, // 155
+ 0xFF, 0xFF, 0x00, 0x0A, // 156
+ 0xFF, 0xFF, 0x00, 0x0A, // 157
+ 0xFF, 0xFF, 0x00, 0x0A, // 158
+ 0xFF, 0xFF, 0x00, 0x0A, // 159
+ 0xFF, 0xFF, 0x00, 0x0A, // 160
+ 0x03, 0x6E, 0x04, 0x03, // 161
+ 0x03, 0x72, 0x0A, 0x06, // 162
+ 0x03, 0x7C, 0x0C, 0x07, // 163
+ 0x03, 0x88, 0x0A, 0x06, // 164
+ 0x03, 0x92, 0x0A, 0x06, // 165
+ 0x03, 0x9C, 0x04, 0x03, // 166
+ 0x03, 0xA0, 0x0A, 0x06, // 167
+ 0x03, 0xAA, 0x0C, 0x07, // 168
+ 0x03, 0xB6, 0x0D, 0x08, // 169
+ 0x03, 0xC3, 0x07, 0x05, // 170
+ 0x03, 0xCA, 0x0A, 0x06, // 171
+ 0x03, 0xD4, 0x09, 0x06, // 172
+ 0x03, 0xDD, 0x03, 0x03, // 173
+ 0x03, 0xE0, 0x0D, 0x08, // 174
+ 0x03, 0xED, 0x0B, 0x07, // 175
+ 0x03, 0xF8, 0x07, 0x05, // 176
+ 0x03, 0xFF, 0x0A, 0x06, // 177
+ 0x04, 0x09, 0x05, 0x04, // 178
+ 0x04, 0x0E, 0x05, 0x04, // 179
+ 0x04, 0x13, 0x05, 0x04, // 180
+ 0x04, 0x18, 0x0A, 0x06, // 181
+ 0x04, 0x22, 0x09, 0x06, // 182
+ 0x04, 0x2B, 0x03, 0x03, // 183
+ 0x04, 0x2E, 0x0B, 0x07, // 184
+ 0x04, 0x39, 0x0B, 0x07, // 185
+ 0x04, 0x44, 0x07, 0x05, // 186
+ 0x04, 0x4B, 0x0A, 0x06, // 187
+ 0x04, 0x55, 0x10, 0x09, // 188
+ 0x04, 0x65, 0x10, 0x09, // 189
+ 0x04, 0x75, 0x10, 0x09, // 190
+ 0x04, 0x85, 0x0A, 0x06, // 191
+ 0x04, 0x8F, 0x0C, 0x07, // 192
+ 0x04, 0x9B, 0x0C, 0x07, // 193
+ 0x04, 0xA7, 0x0C, 0x07, // 194
+ 0x04, 0xB3, 0x0B, 0x07, // 195
+ 0x04, 0xBE, 0x0C, 0x07, // 196
+ 0x04, 0xCA, 0x0C, 0x07, // 197
+ 0x04, 0xD6, 0x0C, 0x07, // 198
+ 0x04, 0xE2, 0x0C, 0x07, // 199
+ 0x04, 0xEE, 0x0C, 0x07, // 200
+ 0x04, 0xFA, 0x0C, 0x07, // 201
+ 0x05, 0x06, 0x0C, 0x07, // 202
+ 0x05, 0x12, 0x0C, 0x07, // 203
+ 0x05, 0x1E, 0x0C, 0x07, // 204
+ 0x05, 0x2A, 0x0C, 0x07, // 205
+ 0x05, 0x36, 0x0C, 0x07, // 206
+ 0x05, 0x42, 0x0C, 0x07, // 207
+ 0x05, 0x4E, 0x0B, 0x07, // 208
+ 0x05, 0x59, 0x0C, 0x07, // 209
+ 0x05, 0x65, 0x0B, 0x07, // 210
+ 0x05, 0x70, 0x0C, 0x07, // 211
+ 0x05, 0x7C, 0x0B, 0x07, // 212
+ 0x05, 0x87, 0x0C, 0x07, // 213
+ 0x05, 0x93, 0x0C, 0x07, // 214
+ 0x05, 0x9F, 0x0C, 0x07, // 215
+ 0x05, 0xAB, 0x0C, 0x07, // 216
+ 0x05, 0xB7, 0x0E, 0x08, // 217
+ 0x05, 0xC5, 0x0C, 0x07, // 218
+ 0x05, 0xD1, 0x0C, 0x07, // 219
+ 0x05, 0xDD, 0x0C, 0x07, // 220
+ 0x05, 0xE9, 0x0C, 0x07, // 221
+ 0x05, 0xF5, 0x0C, 0x07, // 222
+ 0x06, 0x01, 0x0C, 0x07, // 223
+ 0x06, 0x0D, 0x0C, 0x07, // 224
+ 0x06, 0x19, 0x0C, 0x07, // 225
+ 0x06, 0x25, 0x0C, 0x07, // 226
+ 0x06, 0x31, 0x0B, 0x07, // 227
+ 0x06, 0x3C, 0x0C, 0x07, // 228
+ 0x06, 0x48, 0x0B, 0x07, // 229
+ 0x06, 0x53, 0x0C, 0x07, // 230
+ 0x06, 0x5F, 0x0C, 0x07, // 231
+ 0x06, 0x6B, 0x0C, 0x07, // 232
+ 0x06, 0x77, 0x0C, 0x07, // 233
+ 0x06, 0x83, 0x0C, 0x07, // 234
+ 0x06, 0x8F, 0x0C, 0x07, // 235
+ 0x06, 0x9B, 0x0C, 0x07, // 236
+ 0x06, 0xA7, 0x0C, 0x07, // 237
+ 0x06, 0xB3, 0x0C, 0x07, // 238
+ 0x06, 0xBF, 0x0C, 0x07, // 239
+ 0x06, 0xCB, 0x0B, 0x07, // 240
+ 0x06, 0xD6, 0x0C, 0x07, // 241
+ 0x06, 0xE2, 0x0B, 0x07, // 242
+ 0x06, 0xED, 0x0C, 0x07, // 243
+ 0x06, 0xF9, 0x0B, 0x07, // 244
+ 0x07, 0x04, 0x0C, 0x07, // 245
+ 0x07, 0x10, 0x0C, 0x07, // 246
+ 0x07, 0x1C, 0x0C, 0x07, // 247
+ 0x07, 0x28, 0x0C, 0x07, // 248
+ 0x07, 0x34, 0x0E, 0x08, // 249
+ 0x07, 0x42, 0x0C, 0x07, // 250
+ 0x07, 0x4E, 0x0C, 0x07, // 251
+ 0x07, 0x5A, 0x0C, 0x07, // 252
+ 0x07, 0x66, 0x0C, 0x07, // 253
+ 0x07, 0x72, 0x0C, 0x07, // 254
+ 0x07, 0x7E, 0x0C, 0x07, // 255
+
+ // Font Data:
+ 0x00, 0x00, 0xF8, 0x02, // 33
+ 0x38, 0x00, 0x00, 0x00, 0x38, // 34
+ 0xA0, 0x03, 0xE0, 0x00, 0xB8, 0x03, 0xE0, 0x00, 0xB8, // 35
+ 0x30, 0x01, 0x28, 0x02, 0xF8, 0x07, 0x48, 0x02, 0x90, 0x01, // 36
+ 0x00, 0x00, 0x30, 0x00, 0x48, 0x00, 0x30, 0x03, 0xC0, 0x00, 0xB0, 0x01, 0x48, 0x02, 0x80, 0x01, // 37
+ 0x80, 0x01, 0x50, 0x02, 0x68, 0x02, 0xA8, 0x02, 0x18, 0x01, 0x80, 0x03, 0x80, 0x02, // 38
+ 0x38, // 39
+ 0xE0, 0x03, 0x10, 0x04, 0x08, 0x08, // 40
+ 0x08, 0x08, 0x10, 0x04, 0xE0, 0x03, // 41
+ 0x28, 0x00, 0x18, 0x00, 0x28, // 42
+ 0x40, 0x00, 0x40, 0x00, 0xF0, 0x01, 0x40, 0x00, 0x40, // 43
+ 0x00, 0x00, 0x00, 0x06, // 44
+ 0x80, 0x00, 0x80, // 45
+ 0x00, 0x00, 0x00, 0x02, // 46
+ 0x00, 0x03, 0xE0, 0x00, 0x18, // 47
+ 0xF0, 0x01, 0x08, 0x02, 0x08, 0x02, 0x08, 0x02, 0xF0, 0x01, // 48
+ 0x00, 0x00, 0x20, 0x00, 0x10, 0x00, 0xF8, 0x03, // 49
+ 0x10, 0x02, 0x08, 0x03, 0x88, 0x02, 0x48, 0x02, 0x30, 0x02, // 50
+ 0x10, 0x01, 0x08, 0x02, 0x48, 0x02, 0x48, 0x02, 0xB0, 0x01, // 51
+ 0xC0, 0x00, 0xA0, 0x00, 0x90, 0x00, 0x88, 0x00, 0xF8, 0x03, 0x80, // 52
+ 0x60, 0x01, 0x38, 0x02, 0x28, 0x02, 0x28, 0x02, 0xC8, 0x01, // 53
+ 0xF0, 0x01, 0x28, 0x02, 0x28, 0x02, 0x28, 0x02, 0xD0, 0x01, // 54
+ 0x08, 0x00, 0x08, 0x03, 0xC8, 0x00, 0x38, 0x00, 0x08, // 55
+ 0xB0, 0x01, 0x48, 0x02, 0x48, 0x02, 0x48, 0x02, 0xB0, 0x01, // 56
+ 0x70, 0x01, 0x88, 0x02, 0x88, 0x02, 0x88, 0x02, 0xF0, 0x01, // 57
+ 0x00, 0x00, 0x20, 0x02, // 58
+ 0x00, 0x00, 0x20, 0x06, // 59
+ 0x00, 0x00, 0x40, 0x00, 0xA0, 0x00, 0xA0, 0x00, 0x10, 0x01, // 60
+ 0xA0, 0x00, 0xA0, 0x00, 0xA0, 0x00, 0xA0, 0x00, 0xA0, // 61
+ 0x00, 0x00, 0x10, 0x01, 0xA0, 0x00, 0xA0, 0x00, 0x40, // 62
+ 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0xC8, 0x02, 0x48, 0x00, 0x30, // 63
+ 0x00, 0x00, 0xC0, 0x03, 0x30, 0x04, 0xD0, 0x09, 0x28, 0x0A, 0x28, 0x0A, 0xC8, 0x0B, 0x68, 0x0A, 0x10, 0x05, 0xE0, 0x04, // 64
+ 0x00, 0x02, 0xC0, 0x01, 0xB0, 0x00, 0x88, 0x00, 0xB0, 0x00, 0xC0, 0x01, 0x00, 0x02, // 65
+ 0x00, 0x00, 0xF8, 0x03, 0x48, 0x02, 0x48, 0x02, 0x48, 0x02, 0xF0, 0x01, // 66
+ 0x00, 0x00, 0xF0, 0x01, 0x08, 0x02, 0x08, 0x02, 0x08, 0x02, 0x10, 0x01, // 67
+ 0x00, 0x00, 0xF8, 0x03, 0x08, 0x02, 0x08, 0x02, 0x10, 0x01, 0xE0, // 68
+ 0x00, 0x00, 0xF8, 0x03, 0x48, 0x02, 0x48, 0x02, 0x48, 0x02, 0x48, 0x02, // 69
+ 0x00, 0x00, 0xF8, 0x03, 0x48, 0x00, 0x48, 0x00, 0x08, // 70
+ 0x00, 0x00, 0xE0, 0x00, 0x10, 0x01, 0x08, 0x02, 0x48, 0x02, 0x50, 0x01, 0xC0, // 71
+ 0x00, 0x00, 0xF8, 0x03, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0xF8, 0x03, // 72
+ 0x00, 0x00, 0xF8, 0x03, // 73
+ 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0xF8, 0x01, // 74
+ 0x00, 0x00, 0xF8, 0x03, 0x80, 0x00, 0x60, 0x00, 0x90, 0x00, 0x08, 0x01, 0x00, 0x02, // 75
+ 0x00, 0x00, 0xF8, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, // 76
+ 0x00, 0x00, 0xF8, 0x03, 0x30, 0x00, 0xC0, 0x01, 0x00, 0x02, 0xC0, 0x01, 0x30, 0x00, 0xF8, 0x03, // 77
+ 0x00, 0x00, 0xF8, 0x03, 0x30, 0x00, 0x40, 0x00, 0x80, 0x01, 0xF8, 0x03, // 78
+ 0x00, 0x00, 0xF0, 0x01, 0x08, 0x02, 0x08, 0x02, 0x08, 0x02, 0x08, 0x02, 0xF0, 0x01, // 79
+ 0x00, 0x00, 0xF8, 0x03, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x30, // 80
+ 0x00, 0x00, 0xF0, 0x01, 0x08, 0x02, 0x08, 0x02, 0x08, 0x03, 0x08, 0x03, 0xF0, 0x02, // 81
+ 0x00, 0x00, 0xF8, 0x03, 0x48, 0x00, 0x48, 0x00, 0xC8, 0x00, 0x30, 0x03, // 82
+ 0x00, 0x00, 0x30, 0x01, 0x48, 0x02, 0x48, 0x02, 0x48, 0x02, 0x90, 0x01, // 83
+ 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0xF8, 0x03, 0x08, 0x00, 0x08, // 84
+ 0x00, 0x00, 0xF8, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0xF8, 0x01, // 85
+ 0x08, 0x00, 0x70, 0x00, 0x80, 0x01, 0x00, 0x02, 0x80, 0x01, 0x70, 0x00, 0x08, // 86
+ 0x18, 0x00, 0xE0, 0x01, 0x00, 0x02, 0xF0, 0x01, 0x08, 0x00, 0xF0, 0x01, 0x00, 0x02, 0xE0, 0x01, 0x18, // 87
+ 0x00, 0x02, 0x08, 0x01, 0x90, 0x00, 0x60, 0x00, 0x90, 0x00, 0x08, 0x01, 0x00, 0x02, // 88
+ 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0xC0, 0x03, 0x20, 0x00, 0x10, 0x00, 0x08, // 89
+ 0x08, 0x03, 0x88, 0x02, 0xC8, 0x02, 0x68, 0x02, 0x38, 0x02, 0x18, 0x02, // 90
+ 0x00, 0x00, 0xF8, 0x0F, 0x08, 0x08, // 91
+ 0x18, 0x00, 0xE0, 0x00, 0x00, 0x03, // 92
+ 0x08, 0x08, 0xF8, 0x0F, // 93
+ 0x40, 0x00, 0x30, 0x00, 0x08, 0x00, 0x30, 0x00, 0x40, // 94
+ 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, // 95
+ 0x08, 0x00, 0x10, // 96
+ 0x00, 0x00, 0x00, 0x03, 0xA0, 0x02, 0xA0, 0x02, 0xE0, 0x03, // 97
+ 0x00, 0x00, 0xF8, 0x03, 0x20, 0x02, 0x20, 0x02, 0xC0, 0x01, // 98
+ 0x00, 0x00, 0xC0, 0x01, 0x20, 0x02, 0x20, 0x02, 0x40, 0x01, // 99
+ 0x00, 0x00, 0xC0, 0x01, 0x20, 0x02, 0x20, 0x02, 0xF8, 0x03, // 100
+ 0x00, 0x00, 0xC0, 0x01, 0xA0, 0x02, 0xA0, 0x02, 0xC0, 0x02, // 101
+ 0x20, 0x00, 0xF0, 0x03, 0x28, // 102
+ 0x00, 0x00, 0xC0, 0x05, 0x20, 0x0A, 0x20, 0x0A, 0xE0, 0x07, // 103
+ 0x00, 0x00, 0xF8, 0x03, 0x20, 0x00, 0x20, 0x00, 0xC0, 0x03, // 104
+ 0x00, 0x00, 0xE8, 0x03, // 105
+ 0x00, 0x08, 0xE8, 0x07, // 106
+ 0xF8, 0x03, 0x80, 0x00, 0xC0, 0x01, 0x20, 0x02, // 107
+ 0x00, 0x00, 0xF8, 0x03, // 108
+ 0x00, 0x00, 0xE0, 0x03, 0x20, 0x00, 0x20, 0x00, 0xE0, 0x03, 0x20, 0x00, 0x20, 0x00, 0xC0, 0x03, // 109
+ 0x00, 0x00, 0xE0, 0x03, 0x20, 0x00, 0x20, 0x00, 0xC0, 0x03, // 110
+ 0x00, 0x00, 0xC0, 0x01, 0x20, 0x02, 0x20, 0x02, 0xC0, 0x01, // 111
+ 0x00, 0x00, 0xE0, 0x0F, 0x20, 0x02, 0x20, 0x02, 0xC0, 0x01, // 112
+ 0x00, 0x00, 0xC0, 0x01, 0x20, 0x02, 0x20, 0x02, 0xE0, 0x0F, // 113
+ 0x00, 0x00, 0xE0, 0x03, 0x20, // 114
+ 0x40, 0x02, 0xA0, 0x02, 0xA0, 0x02, 0x20, 0x01, // 115
+ 0x20, 0x00, 0xF8, 0x03, 0x20, 0x02, // 116
+ 0x00, 0x00, 0xE0, 0x01, 0x00, 0x02, 0x00, 0x02, 0xE0, 0x03, // 117
+ 0x20, 0x00, 0xC0, 0x01, 0x00, 0x02, 0xC0, 0x01, 0x20, // 118
+ 0xE0, 0x01, 0x00, 0x02, 0xC0, 0x01, 0x20, 0x00, 0xC0, 0x01, 0x00, 0x02, 0xE0, 0x01, // 119
+ 0x20, 0x02, 0x40, 0x01, 0x80, 0x00, 0x40, 0x01, 0x20, 0x02, // 120
+ 0x20, 0x00, 0xC0, 0x09, 0x00, 0x06, 0xC0, 0x01, 0x20, // 121
+ 0x20, 0x02, 0x20, 0x03, 0xA0, 0x02, 0x60, 0x02, 0x20, 0x02, // 122
+ 0x80, 0x00, 0x78, 0x0F, 0x08, 0x08, // 123
+ 0x00, 0x00, 0xF8, 0x0F, // 124
+ 0x08, 0x08, 0x78, 0x0F, 0x80, // 125
+ 0xC0, 0x00, 0x40, 0x00, 0xC0, 0x00, 0x80, 0x00, 0xC0, // 126
+ 0x00, 0x00, 0xA0, 0x0F, // 161
+ 0x00, 0x00, 0xC0, 0x01, 0xA0, 0x0F, 0x78, 0x02, 0x40, 0x01, // 162
+ 0x40, 0x02, 0x70, 0x03, 0xC8, 0x02, 0x48, 0x02, 0x08, 0x02, 0x10, 0x02, // 163
+ 0x00, 0x00, 0xE0, 0x01, 0x20, 0x01, 0x20, 0x01, 0xE0, 0x01, // 164
+ 0x48, 0x01, 0x70, 0x01, 0xC0, 0x03, 0x70, 0x01, 0x48, 0x01, // 165
+ 0x00, 0x00, 0x38, 0x0F, // 166
+ 0xD0, 0x04, 0x28, 0x09, 0x48, 0x09, 0x48, 0x0A, 0x90, 0x05, // 167
+ 0x00, 0x00, 0xE0, 0x03, 0xA8, 0x02, 0xA0, 0x02, 0xA8, 0x02, 0x20, 0x02, // 168
+ 0xE0, 0x00, 0x10, 0x01, 0x48, 0x02, 0xA8, 0x02, 0xA8, 0x02, 0x10, 0x01, 0xE0, // 169
+ 0x68, 0x00, 0x68, 0x00, 0x68, 0x00, 0x78, // 170
+ 0x00, 0x00, 0x80, 0x01, 0x40, 0x02, 0x80, 0x01, 0x40, 0x02, // 171
+ 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0xE0, // 172
+ 0x80, 0x00, 0x80, // 173
+ 0xE0, 0x00, 0x10, 0x01, 0xE8, 0x02, 0x68, 0x02, 0xC8, 0x02, 0x10, 0x01, 0xE0, // 174
+ 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, // 175
+ 0x00, 0x00, 0x38, 0x00, 0x28, 0x00, 0x38, // 176
+ 0x40, 0x02, 0x40, 0x02, 0xF0, 0x03, 0x40, 0x02, 0x40, 0x02, // 177
+ 0x48, 0x00, 0x68, 0x00, 0x58, // 178
+ 0x48, 0x00, 0x58, 0x00, 0x68, // 179
+ 0x00, 0x00, 0x10, 0x00, 0x08, // 180
+ 0x00, 0x00, 0xE0, 0x0F, 0x00, 0x02, 0x00, 0x02, 0xE0, 0x03, // 181
+ 0x70, 0x00, 0xF8, 0x0F, 0x08, 0x00, 0xF8, 0x0F, 0x08, // 182
+ 0x00, 0x00, 0x40, // 183
+ 0x00, 0x00, 0xC0, 0x01, 0xA8, 0x02, 0xA0, 0x02, 0xA8, 0x02, 0xC0, // 184
+ 0x00, 0x00, 0xF0, 0x03, 0x40, 0x00, 0x80, 0x00, 0xF8, 0x03, 0x08, // 185
+ 0x30, 0x00, 0x48, 0x00, 0x48, 0x00, 0x30, // 186
+ 0x00, 0x00, 0x40, 0x02, 0x80, 0x01, 0x40, 0x02, 0x80, 0x01, // 187
+ 0x00, 0x00, 0x10, 0x02, 0x78, 0x01, 0xC0, 0x00, 0x20, 0x01, 0x90, 0x01, 0xC8, 0x03, 0x00, 0x01, // 188
+ 0x00, 0x00, 0x10, 0x02, 0x78, 0x01, 0x80, 0x00, 0x60, 0x00, 0x50, 0x02, 0x48, 0x03, 0xC0, 0x02, // 189
+ 0x48, 0x00, 0x58, 0x00, 0x68, 0x03, 0x80, 0x00, 0x60, 0x01, 0x90, 0x01, 0xC8, 0x03, 0x00, 0x01, // 190
+ 0x00, 0x00, 0x00, 0x06, 0x00, 0x09, 0xA0, 0x09, 0x00, 0x04, // 191
+ 0x00, 0x00, 0xF0, 0x03, 0x88, 0x00, 0x88, 0x00, 0x88, 0x00, 0xF0, 0x03, // 192
+ 0x00, 0x00, 0xF8, 0x03, 0x48, 0x02, 0x48, 0x02, 0x48, 0x02, 0x88, 0x01, // 193
+ 0x00, 0x00, 0xF8, 0x03, 0x48, 0x02, 0x48, 0x02, 0x48, 0x02, 0xB0, 0x01, // 194
+ 0x00, 0x00, 0xF8, 0x03, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x18, // 195
+ 0x00, 0x00, 0x00, 0x02, 0xFC, 0x03, 0x04, 0x02, 0xFC, 0x03, 0x00, 0x02, // 196
+ 0x00, 0x00, 0xF8, 0x03, 0x48, 0x02, 0x48, 0x02, 0x48, 0x02, 0x08, 0x02, // 197
+ 0x00, 0x00, 0xB8, 0x03, 0x40, 0x00, 0xF8, 0x03, 0x40, 0x00, 0xB8, 0x03, // 198
+ 0x00, 0x00, 0x08, 0x02, 0x48, 0x02, 0x48, 0x02, 0x48, 0x02, 0xB0, 0x01, // 199
+ 0x00, 0x00, 0xF8, 0x03, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0xF8, 0x03, // 200
+ 0x00, 0x00, 0xE0, 0x03, 0x08, 0x01, 0x90, 0x00, 0x48, 0x00, 0xE0, 0x03, // 201
+ 0x00, 0x00, 0xF8, 0x03, 0x40, 0x00, 0xA0, 0x00, 0x10, 0x01, 0x08, 0x02, // 202
+ 0x00, 0x00, 0x00, 0x02, 0xF0, 0x01, 0x08, 0x00, 0x08, 0x00, 0xF8, 0x03, // 203
+ 0x00, 0x00, 0xF8, 0x03, 0x10, 0x00, 0x60, 0x00, 0x10, 0x00, 0xF8, 0x03, // 204
+ 0x00, 0x00, 0xF8, 0x03, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0xF8, 0x03, // 205
+ 0x00, 0x00, 0xF0, 0x01, 0x08, 0x02, 0x08, 0x02, 0x08, 0x02, 0xF0, 0x01, // 206
+ 0x00, 0x00, 0xF8, 0x03, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0xF8, 0x03, // 207
+ 0x00, 0x00, 0xF8, 0x03, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x30, // 208
+ 0x00, 0x00, 0xF0, 0x01, 0x08, 0x02, 0x08, 0x02, 0x08, 0x02, 0x10, 0x01, // 209
+ 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0xF8, 0x03, 0x08, 0x00, 0x08, // 210
+ 0x00, 0x00, 0x38, 0x00, 0x40, 0x02, 0x40, 0x02, 0x40, 0x02, 0xF8, 0x01, // 211
+ 0x00, 0x00, 0x70, 0x00, 0x88, 0x00, 0xF8, 0x03, 0x88, 0x00, 0x70, // 212
+ 0x00, 0x00, 0x18, 0x03, 0xA0, 0x00, 0x40, 0x00, 0xA0, 0x00, 0x18, 0x03, // 213
+ 0x00, 0x00, 0xF8, 0x03, 0x00, 0x02, 0x00, 0x02, 0xF8, 0x03, 0x00, 0x02, // 214
+ 0x00, 0x00, 0x38, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0xF8, 0x03, // 215
+ 0x00, 0x00, 0xF8, 0x03, 0x00, 0x02, 0xF8, 0x03, 0x00, 0x02, 0xF8, 0x03, // 216
+ 0x00, 0x00, 0xF8, 0x03, 0x00, 0x02, 0xF8, 0x03, 0x00, 0x02, 0xF8, 0x03, 0x00, 0x06, // 217
+ 0x00, 0x00, 0x08, 0x00, 0xF8, 0x03, 0x40, 0x02, 0x40, 0x02, 0x80, 0x01, // 218
+ 0x00, 0x00, 0xF8, 0x03, 0x40, 0x02, 0x40, 0x02, 0x80, 0x01, 0xF8, 0x03, // 219
+ 0x00, 0x00, 0xF8, 0x03, 0x40, 0x02, 0x40, 0x02, 0x40, 0x02, 0x80, 0x01, // 220
+ 0x00, 0x00, 0x10, 0x01, 0x08, 0x02, 0x48, 0x02, 0x48, 0x02, 0xF0, 0x01, // 221
+ 0x00, 0x00, 0xF8, 0x03, 0x40, 0x00, 0xF0, 0x01, 0x08, 0x02, 0xF0, 0x01, // 222
+ 0x00, 0x00, 0x30, 0x02, 0x48, 0x01, 0xC8, 0x00, 0x48, 0x00, 0xF8, 0x03, // 223
+ 0x00, 0x00, 0x00, 0x01, 0xA0, 0x02, 0xA0, 0x02, 0xA0, 0x02, 0xC0, 0x03, // 224
+ 0x00, 0x00, 0xE0, 0x01, 0x50, 0x02, 0x50, 0x02, 0x48, 0x02, 0x88, 0x01, // 225
+ 0x00, 0x00, 0xE0, 0x03, 0xA0, 0x02, 0xA0, 0x02, 0xA0, 0x02, 0x40, 0x01, // 226
+ 0x00, 0x00, 0xE0, 0x03, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x60, // 227
+ 0x00, 0x00, 0x00, 0x02, 0xC0, 0x03, 0x20, 0x02, 0xE0, 0x03, 0x00, 0x02, // 228
+ 0x00, 0x00, 0xC0, 0x01, 0xA0, 0x02, 0xA0, 0x02, 0xA0, 0x02, 0xC0, // 229
+ 0x00, 0x00, 0x60, 0x03, 0x80, 0x00, 0xE0, 0x03, 0x80, 0x00, 0x60, 0x03, // 230
+ 0x00, 0x00, 0x20, 0x02, 0xA0, 0x02, 0xA0, 0x02, 0xA0, 0x02, 0x40, 0x01, // 231
+ 0x00, 0x00, 0xE0, 0x03, 0x00, 0x01, 0x80, 0x00, 0x40, 0x00, 0xE0, 0x03, // 232
+ 0x00, 0x00, 0xE0, 0x03, 0x00, 0x01, 0x98, 0x00, 0x40, 0x00, 0xE0, 0x03, // 233
+ 0x00, 0x00, 0xE0, 0x03, 0x80, 0x00, 0x80, 0x00, 0x40, 0x01, 0x20, 0x02, // 234
+ 0x00, 0x00, 0x00, 0x02, 0xC0, 0x01, 0x20, 0x00, 0x20, 0x00, 0xE0, 0x03, // 235
+ 0x00, 0x00, 0xE0, 0x03, 0x40, 0x00, 0x80, 0x00, 0x40, 0x00, 0xE0, 0x03, // 236
+ 0x00, 0x00, 0xE0, 0x03, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0xE0, 0x03, // 237
+ 0x00, 0x00, 0xC0, 0x01, 0x20, 0x02, 0x20, 0x02, 0x20, 0x02, 0xC0, 0x01, // 238
+ 0x00, 0x00, 0xE0, 0x03, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0xE0, 0x03, // 239
+ 0x00, 0x00, 0xE0, 0x03, 0xA0, 0x00, 0xA0, 0x00, 0xA0, 0x00, 0x40, // 240
+ 0x00, 0x00, 0xC0, 0x01, 0x20, 0x02, 0x20, 0x02, 0x20, 0x02, 0x40, 0x02, // 241
+ 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0xE0, 0x03, 0x20, 0x00, 0x20, // 242
+ 0x00, 0x00, 0x60, 0x00, 0x80, 0x02, 0x80, 0x02, 0x80, 0x02, 0xE0, 0x01, // 243
+ 0x00, 0x00, 0xC0, 0x00, 0x20, 0x01, 0xE0, 0x03, 0x20, 0x01, 0xC0, // 244
+ 0x00, 0x00, 0x20, 0x02, 0x40, 0x01, 0x80, 0x00, 0x40, 0x01, 0x20, 0x02, // 245
+ 0x00, 0x00, 0xE0, 0x03, 0x00, 0x02, 0x00, 0x02, 0xE0, 0x03, 0x00, 0x02, // 246
+ 0x00, 0x00, 0x60, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0xE0, 0x03, // 247
+ 0x00, 0x00, 0xE0, 0x03, 0x00, 0x02, 0xE0, 0x03, 0x00, 0x02, 0xE0, 0x03, // 248
+ 0x00, 0x00, 0xE0, 0x03, 0x00, 0x02, 0xE0, 0x03, 0x00, 0x02, 0xE0, 0x03, 0x00, 0x06, // 249
+ 0x00, 0x00, 0x20, 0x00, 0xE0, 0x03, 0x80, 0x02, 0x80, 0x02, 0x00, 0x01, // 250
+ 0x00, 0x00, 0xE0, 0x03, 0x80, 0x02, 0x80, 0x02, 0x00, 0x01, 0xE0, 0x03, // 251
+ 0x00, 0x00, 0xE0, 0x03, 0x80, 0x02, 0x80, 0x02, 0x80, 0x02, 0x00, 0x01, // 252
+ 0x00, 0x00, 0x40, 0x01, 0x20, 0x02, 0xA0, 0x02, 0xA0, 0x02, 0xC0, 0x01, // 253
+ 0x00, 0x00, 0xE0, 0x03, 0x80, 0x00, 0xC0, 0x01, 0x20, 0x02, 0xC0, 0x01, // 254
+ 0x00, 0x00, 0x40, 0x02, 0xA0, 0x01, 0xA0, 0x00, 0xA0, 0x00, 0xE0, 0x03, // 255
+};
\ No newline at end of file
diff --git a/src/graphics/fonts/OLEDDisplayFontsRU.h b/src/graphics/fonts/OLEDDisplayFontsRU.h
new file mode 100644
index 00000000..7510dcdf
--- /dev/null
+++ b/src/graphics/fonts/OLEDDisplayFontsRU.h
@@ -0,0 +1,11 @@
+#ifndef OLEDDISPLAYFONTSRU_h
+#define OLEDDISPLAYFONTSRU_h
+
+#ifdef ARDUINO
+#include
+#elif __MBED__
+#define PROGMEM
+#endif
+
+extern const uint8_t ArialMT_Plain_10_RU[] PROGMEM;
+#endif
\ No newline at end of file
diff --git a/variants/diy/platformio.ini b/variants/diy/platformio.ini
index 6cd51ee1..9a2b5d46 100644
--- a/variants/diy/platformio.ini
+++ b/variants/diy/platformio.ini
@@ -6,6 +6,7 @@ build_flags =
${esp32_base.build_flags}
-D DIY_V1
-D EBYTE_E22
+ -D OLED_RU
-I variants/diy/v1
; Meshtastic DIY v1.1 new schematic based on ESP32-WROOM-32 & SX1262/SX1268 modules
@@ -16,4 +17,17 @@ build_flags =
${esp32_base.build_flags}
-D DIY_V1
-D EBYTE_E22
- -I variants/diy/v1_1
\ No newline at end of file
+ -D OLED_RU
+ -I variants/diy/v1_1
+
+; Port to Disaster Radio's ESP32-v3 Dev Board
+[env:meshtastic-dr-dev]
+extends = esp32_base
+board = esp32doit-devkit-v1
+board_upload.maximum_size = 4194304
+board_upload.maximum_ram_size = 532480
+build_flags =
+ ${esp32_base.build_flags}
+ -D DR_DEV
+ -D EBYTE_E22
+ -I variants/diy/dr-dev