mirror of
https://github.com/MarlinFirmware/Marlin.git
synced 2024-11-29 23:07:42 +00:00
🩹 Fix MarlinUI UTF-8 chars (#26381)
This commit is contained in:
parent
a6c8afc5a9
commit
5523c12cfd
@ -51,6 +51,7 @@ lcd_uint_t expand_u8str_P(char * const outstr, PGM_P const ptpl, const int8_t in
|
||||
int8_t n = maxlen;
|
||||
while (n > 0) {
|
||||
lchar_t wc;
|
||||
uint8_t *psc = (uint8_t *)p;
|
||||
p = get_utf8_value_cb(p, read_byte_rom, wc);
|
||||
if (!wc) break;
|
||||
if (wc == '{' || wc == '~' || wc == '*') {
|
||||
@ -88,20 +89,11 @@ lcd_uint_t expand_u8str_P(char * const outstr, PGM_P const ptpl, const int8_t in
|
||||
n -= utf8_strlen(o);
|
||||
o += strlen(o);
|
||||
}
|
||||
else if (wc == '@') {
|
||||
*o++ = AXIS_CHAR(ind);
|
||||
*o = '\0';
|
||||
n--;
|
||||
}
|
||||
else if (wc > 255 && prop == 2) {
|
||||
// Wide glyph support incomplete
|
||||
*((uint16_t*)o) = wc;
|
||||
o += 2;
|
||||
*o = '\0';
|
||||
n--;
|
||||
}
|
||||
else {
|
||||
*o++ = wc;
|
||||
if (wc == '@')
|
||||
*o++ = AXIS_CHAR(ind);
|
||||
else
|
||||
while (psc != p) *o++ = read_byte_rom(psc++);
|
||||
*o = '\0';
|
||||
n--;
|
||||
}
|
||||
|
@ -94,13 +94,15 @@ int pf_bsearch_r(void *userdata, size_t num_data, pf_bsearch_cb_comp_t cb_comp,
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Returns true if passed byte is first byte of UTF-8 char sequence */
|
||||
// Is the passed byte the first byte of a UTF-8 char sequence?
|
||||
static inline bool utf8_is_start_byte_of_char(const uint8_t b) {
|
||||
return 0x80 != (b & 0xC0);
|
||||
}
|
||||
|
||||
/* This function gets the character at the pstart position, interpreting UTF8 multibyte sequences
|
||||
and returns the pointer to the next character */
|
||||
/**
|
||||
* Get the character at pstart, interpreting UTF8 multibyte sequences.
|
||||
* Return the pointer to the next character.
|
||||
*/
|
||||
const uint8_t* get_utf8_value_cb(const uint8_t *pstart, read_byte_cb_t cb_read_byte, lchar_t &pval) {
|
||||
uint32_t val = 0;
|
||||
const uint8_t *p = pstart;
|
||||
|
Loading…
Reference in New Issue
Block a user