170 похожих чатов

У меня есть массив uint8_t и метод uint8_t Matrix::draw_char(uint16_t x,

uint16_t y, char simbol, uint8_t color, matrix_font_t font){
if(simbol == 32) return font.width >> 1; // если пробел
uint32_t charPtr = ((simbol - 32) * font.height * font.width) / 8; // переменная - указатель, двигающийся по массиву шрифта
uint8_t charWidth = 0;
for(uint16_t height = 0; height < font.height; height++){
for(uint16_t width = 0; width < (font.width / 8); width++){
for(uint8_t bit = 0; bit < 8; bit++){
if(font.font[charPtr] & (0b00000001 << bit)){
if(charWidth < width * 8 + bit) charWidth = width * 8 + bit;
draw_pixel(x + width * 8 + bit, y + height, color);
}
}
charPtr++;
}
}
return charWidth;
}

он работает норм и выводит символы корректно, но метод
uint16_t Matrix::draw_text(uint16_t x, uint16_t y, char* text, uint8_t color, matrix_font_t font){
for(uint8_t simbol = 0; simbol < strlen(text); simbol++){
x += 5 + draw_char(x, y, text[simbol], color, font);
}
return x;
}
уже не работает норм, латиница выводится четко, а кириллица нет(все символы заменяются на "п"(209) или "я"(210))
почему так?

11 ответов

23 просмотра

а куда ты выводишь?

Daniil- Автор вопроса
Ilya Zviagin
а куда ты выводишь?

на матрицу. Это по для мк. У меня растровое изображение всех символов в массиве uint8_t хранится

это что, ты ФОНТ сам пытаешься вывести ?

Daniil
на матрицу. Это по для мк. У меня растровое изобра...

так какая система, кодировка, и прочее?

Daniil- Автор вопроса
Ilya Zviagin
а кто тогда пишет "я"(210)) ?

после метода draw_text, метод draw_char перестает писать кириллицу адекватно и заменяет весь текст на буквы п и я (а в скобках я написал их код в аски)

Daniil
после метода draw_text, метод draw_char перестает ...

кажется это вопрос к методам draw_text и draw_char

Daniil- Автор вопроса
Ilya Zviagin
давай ты весь код пришлёшь..

всю либу? там тыщ 10 строк

Daniil- Автор вопроса
Ilya Zviagin
давай ты весь код пришлёшь..

там ничего вам больше и не надо, кроме этих двух методов

Daniil
всю либу? там тыщ 10 строк

ок, сделай тестовый пример со строкой типа "abcABCабвАБВ" и прогони, но также добавь распечатку посимвольную входных данных, для каждого символа его самого и его кода.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта