diff --git a/firmware/drivers/lcd-charcell.c b/firmware/drivers/lcd-charcell.c index ce0eca94ca..e68b35aa92 100644 --- a/firmware/drivers/lcd-charcell.c +++ b/firmware/drivers/lcd-charcell.c @@ -520,7 +520,7 @@ void lcd_puts_scroll_offset(int x, int y, const unsigned char *string, } end = strchr(s->line, '\0'); - strncpy(end, string, LCD_WIDTH); + strncpy(end, string, utf8seek(s->line, LCD_WIDTH)); s->offset = offset; s->startx = xmargin + x; diff --git a/firmware/export/lcd.h b/firmware/export/lcd.h index 0d56389480..48de53ada3 100644 --- a/firmware/export/lcd.h +++ b/firmware/export/lcd.h @@ -382,9 +382,9 @@ extern void lcd_bitmap_transparent(const fb_data *src, int x, int y, /* internal usage, but in multiple drivers */ #define SCROLL_SPACING 3 #ifdef HAVE_LCD_BITMAP -#define SCROLL_LINE_SIZE (MAX_PATH + LCD_WIDTH/2 + SCROLL_SPACING + 2) +#define SCROLL_LINE_SIZE (MAX_PATH + SCROLL_SPACING + 3*LCD_WIDTH/2 + 2) #else -#define SCROLL_LINE_SIZE (MAX_PATH + LCD_WIDTH + SCROLL_SPACING + 2) +#define SCROLL_LINE_SIZE (MAX_PATH + SCROLL_SPACING + 3*LCD_WIDTH + 2) #endif struct scrollinfo {