Pārlūkot izejas kodu

Fix utf8 conversion for ukrainian symbol except Г'.

Vladimir N. Shilov 1 gadu atpakaļ
vecāks
revīzija
9037dfc92f
2 mainītis faili ar 31 papildinājumiem un 5 dzēšanām
  1. 30 4
      lib/st7735/st7735.c
  2. 1 1
      lib/st7735/st7735.h

+ 30 - 4
lib/st7735/st7735.c

@@ -286,15 +286,41 @@ void ST7735_WriteString(uint16_t x, uint16_t y, const char* str, FontDef font, u
         case 0xD0: {
           str ++;
           ch = *str;
-          if (ch == 0x81) { ch = 0xA8; break; }
-          if (ch >= 0x90 && ch <= 0xBF) ch += 0x2F;
+          if (ch == 0x81) { // Ё
+            ch = 0xA8;
+          } else if (ch == 0x83) { // Ѓ
+            ch =  0xa5;
+          } else if (ch == 0x84) { // Є
+            ch =  0xaa;
+          } else if (ch == 0x86) { // І
+            ch =  0xb2;
+          } else if (ch == 0x87) { // Ї
+            ch =  0xaf;
+          } else if (ch >= 0x90 && ch <= 0xBF) {
+            ch += 0x30;
+          } else {
+            ch =  '.';
+          }
           break;
         }
         case 0xD1: {
           str ++;
           ch = *str;
-          if (ch == 0x91) { ch = 0xB8; break; }
-          if (ch >= 0x7E && ch <= 0x8F) ch += 0x6F;
+          if (ch == 0x91) { // ё
+            ch = 0xB8;
+          } else if (ch == 0x93) { // ѓ
+            ch =  0xb4;
+          } else if (ch == 0x94) { // є
+            ch =  0xba;
+          } else if (ch == 0x96) { // і
+            ch =  0xb3;
+          } else if (ch == 0x97) { // ї
+            ch =  0xbf;
+          } else if (ch >= 0x7E && ch <= 0x8F) {
+            ch += 0x70;
+          } else {
+            ch =  '.';
+          }
           break;
         }
       }

+ 1 - 1
lib/st7735/st7735.h

@@ -230,7 +230,7 @@
 #define ST7735_YELLOW  0xFFE0
 #define ST7735_WHITE   0xFFFF
 #define ST7735_GREY    0x7BEF
-#define S7735_SILVER   0xE75F
+#define ST7735_SILVER   0xE75F
 #define ST7735_COLOR565(r, g, b) (((r & 0xF8) << 8) | ((g & 0xFC) << 3) | ((b & 0xF8) >> 3))
 
 typedef enum {