mirror of
https://github.com/meshtastic/firmware.git
synced 2025-08-17 18:53:30 +00:00
Adding medium and large RU fonts. Fixing RU string width calculation (#7498)
* Adding medium and large RU fonts. Fixing string width calculation for RU font * Update src/graphics/draw/MessageRenderer.cpp Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Ben Meadors <benmmeadors@gmail.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
parent
05f1518951
commit
9b8149f14e
@ -40,6 +40,9 @@
|
|||||||
#ifdef OLED_PL
|
#ifdef OLED_PL
|
||||||
#define FONT_MEDIUM_LOCAL ArialMT_Plain_16_PL // Height: 19
|
#define FONT_MEDIUM_LOCAL ArialMT_Plain_16_PL // Height: 19
|
||||||
#else
|
#else
|
||||||
|
#ifdef OLED_RU
|
||||||
|
#define FONT_MEDIUM_LOCAL ArialMT_Plain_16_RU // Height: 19
|
||||||
|
#else
|
||||||
#ifdef OLED_UA
|
#ifdef OLED_UA
|
||||||
#define FONT_MEDIUM_LOCAL ArialMT_Plain_16_UA // Height: 19
|
#define FONT_MEDIUM_LOCAL ArialMT_Plain_16_UA // Height: 19
|
||||||
#else
|
#else
|
||||||
@ -50,9 +53,13 @@
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
#ifdef OLED_PL
|
#ifdef OLED_PL
|
||||||
#define FONT_LARGE_LOCAL ArialMT_Plain_24_PL // Height: 28
|
#define FONT_LARGE_LOCAL ArialMT_Plain_24_PL // Height: 28
|
||||||
#else
|
#else
|
||||||
|
#ifdef OLED_RU
|
||||||
|
#define FONT_LARGE_LOCAL ArialMT_Plain_24_RU // Height: 28
|
||||||
|
#else
|
||||||
#ifdef OLED_UA
|
#ifdef OLED_UA
|
||||||
#define FONT_LARGE_LOCAL ArialMT_Plain_24_UA // Height: 28
|
#define FONT_LARGE_LOCAL ArialMT_Plain_24_UA // Height: 28
|
||||||
#else
|
#else
|
||||||
@ -63,6 +70,7 @@
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#if (defined(USE_EINK) || defined(ILI9341_DRIVER) || defined(ILI9342_DRIVER) || defined(ST7701_CS) || defined(ST7735_CS) || \
|
#if (defined(USE_EINK) || defined(ILI9341_DRIVER) || defined(ILI9342_DRIVER) || defined(ST7701_CS) || defined(ST7735_CS) || \
|
||||||
defined(ST7789_CS) || defined(USE_ST7789) || defined(HX8357_CS) || defined(ILI9488_CS)) && \
|
defined(ST7789_CS) || defined(USE_ST7789) || defined(HX8357_CS) || defined(ILI9488_CS)) && \
|
||||||
|
@ -137,7 +137,11 @@ void drawStringWithEmotes(OLEDDisplay *display, int x, int y, const std::string
|
|||||||
display->drawString(cursorX + 1, fontY, textChunk.c_str());
|
display->drawString(cursorX + 1, fontY, textChunk.c_str());
|
||||||
}
|
}
|
||||||
display->drawString(cursorX, fontY, textChunk.c_str());
|
display->drawString(cursorX, fontY, textChunk.c_str());
|
||||||
|
#if defined(OLED_UA) || defined(OLED_RU)
|
||||||
|
cursorX += display->getStringWidth(textChunk.c_str(), textChunk.length(), true);
|
||||||
|
#else
|
||||||
cursorX += display->getStringWidth(textChunk.c_str());
|
cursorX += display->getStringWidth(textChunk.c_str());
|
||||||
|
#endif
|
||||||
i = nextControl;
|
i = nextControl;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -155,7 +159,12 @@ void drawStringWithEmotes(OLEDDisplay *display, int x, int y, const std::string
|
|||||||
display->drawString(cursorX + 1, fontY, remaining.c_str());
|
display->drawString(cursorX + 1, fontY, remaining.c_str());
|
||||||
}
|
}
|
||||||
display->drawString(cursorX, fontY, remaining.c_str());
|
display->drawString(cursorX, fontY, remaining.c_str());
|
||||||
|
#if defined(OLED_UA) || defined(OLED_RU)
|
||||||
|
cursorX += display->getStringWidth(remaining.c_str(), remaining.length(), true);
|
||||||
|
#else
|
||||||
cursorX += display->getStringWidth(remaining.c_str());
|
cursorX += display->getStringWidth(remaining.c_str());
|
||||||
|
#endif
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -374,10 +383,16 @@ std::vector<std::string> generateLines(OLEDDisplay *display, const char *headerS
|
|||||||
} else {
|
} else {
|
||||||
word += ch;
|
word += ch;
|
||||||
std::string test = line + word;
|
std::string test = line + word;
|
||||||
// Keep these lines for diagnostics
|
// Keep these lines for diagnostics
|
||||||
// LOG_INFO("Char: '%c' (0x%02X)", ch, (unsigned char)ch);
|
// LOG_INFO("Char: '%c' (0x%02X)", ch, (unsigned char)ch);
|
||||||
// LOG_INFO("Current String: %s", test.c_str());
|
// LOG_INFO("Current String: %s", test.c_str());
|
||||||
if (display->getStringWidth(test.c_str()) > textWidth) {
|
// Note: there are boolean comparison uint16 (getStringWidth) with int (textWidth), hope textWidth is always positive :)
|
||||||
|
#if defined(OLED_UA) || defined(OLED_RU)
|
||||||
|
uint16_t strWidth = display->getStringWidth(test.c_str(), test.length(), true);
|
||||||
|
#else
|
||||||
|
uint16_t strWidth = display->getStringWidth(test.c_str());
|
||||||
|
#endif
|
||||||
|
if (strWidth > textWidth) {
|
||||||
if (!line.empty())
|
if (!line.empty())
|
||||||
lines.push_back(line);
|
lines.push_back(line);
|
||||||
line = word;
|
line = word;
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -8,4 +8,6 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern const uint8_t ArialMT_Plain_10_RU[] PROGMEM;
|
extern const uint8_t ArialMT_Plain_10_RU[] PROGMEM;
|
||||||
|
extern const uint8_t ArialMT_Plain_16_RU[] PROGMEM;
|
||||||
|
extern const uint8_t ArialMT_Plain_24_RU[] PROGMEM;
|
||||||
#endif
|
#endif
|
Loading…
Reference in New Issue
Block a user