как вывести русские буквы на LCD ST7920?

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

гыы ну да мозг ты повыносил знатно, тебя уже просто игнорили.. но получилось хорошо, акуратно, мыладец!

Клапауций
Offline
Зарегистрирован: 10.02.2013

hugoboss317 пишет:

 На восьмой меге модуль ИК пиёмника ))). А по коментам, да как то стремаюсь я показывать как всё это у меня туго выходило и как всем форумом наставляли на путь истинный. В ролике вроде как со стороны всё просто получается, а если по ссылкам ковырнуть так  нуб нубом получусь. 

Ага - я подозревал, что кому-то пригодится ИК на восьмой.

Нечего там стесняться - начал с нуля и довёл до реализации проекта в железе.

Бывает, увидишь на ютубе интересную реализацию - ни описания, что это, как это, не понятно, где концы искать.

Сделай - оно полезно всем будет, и новичкам, и тебе.

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

Отошли от темы!

Я решил поиграться с аналогичным дисплеем подключил по HW SPI - указывая только CS пин - все замечательно, но нет русского языка.

1. Ставим Fontforge (если некорретно отображаются строки - удалить русскую локаль - будет инглиш)

2. качаем шрифты BDF

3. Так как русский в юникоде кодируется 2 байтами а библиотека работает с однобайтовыми строками - юникод отпадает на глаза попалась кодировка ISO8859-5 где английские и руские буквы ограниченны одним байтом. Конвертим кодировку BDF c помощью fontforge, добавляем свои символы если надо.

4. используя команды типа "bdf2u8g font/6x10.bdf u8g_font_6x10 utility/u8g_font_6x10.c" конвертим обратно, попутно удаляя дубликаты из "utility/u8g_font_data.c" или добавляем как новый в "utility/u8g.h" и кидаем рядом ".с" файлик

5. записывать строки придется "\xb0\xb1\xb2\xb3" //АБВГ

В планах переписать препроцессор Arduino IDE добавив перекодировку UTF-8 -> ISO8859-5 - чтобы записывать как есть.

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

Переписал исходники IDE добавил настройку в какой кодировке выводить исходник. Вобщем теперь он UTF8 перекодирует в  то что я хочу во время препроцессинга исходника.

Выкладывать пока рано - не тестировал.

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

NeiroN пишет:

Выкладывать пока рано - не тестировал.

Протестировал! Все работает как Запланировано

/lib/pde.jar Настройки->Кодировка строк->[кодировка шрифта]

PROFFIT!!!

hugoboss317
Offline
Зарегистрирован: 21.03.2013

titovich пишет:
сделал простой шрифт 5x7

titovich, а можно на BDF этого шрифта взглянуть?

DAD
Offline
Зарегистрирован: 23.06.2014

Ай молодца, не удержался, зарегистрировался, чтобы респект выразить. Как в "Назад в будущее" - неужели я сделал что-то, что работает? Молодец. Достал всех, но это того стоило))

hugoboss317
Offline
Зарегистрирован: 21.03.2013

DAD пишет:

Ай молодца, не удержался, зарегистрировался, чтобы респект выразить. Как в "Назад в будущее" - неужели я сделал что-то, что работает? Молодец. Достал всех, но это того стоило))

А Вы о чём? Ну или о ком?

hugoboss317
Offline
Зарегистрирован: 21.03.2013

Коли уж зашёл в тему, как то рисовал для себя русский 10х14, тоже самое - может кому-нЬтЬ.....



/*
  Fontname: Verdana
  Copyright: 
  Capital A Height: 14, '1' Height: 14
  Calculated Max Values w=11 h=16 x= 1 y=12 dx=11 dy= 0 ascent=15 len=30
  Font Bounding box     w=11 h=15 x= 0 y=-1
  Calculated Min Values           x= 0 y=-1 dx= 0 dy= 0
  Pure Font   ascent =14 descent= 0
  X Font      ascent =14 descent= 0
  Max Font    ascent =15 descent=-1
*/
//#include "u8g.h"
const u8g_fntpgm_uint8_t my14x10rus[4157] U8G_SECTION(".progmem.my14x10") = {
  0,11,15,0,255,14,3,35,6,248,32,255,0,15,255,14,
  0,0,0,0,8,0,0,2,14,14,4,1,0,64,192,192,
  192,192,192,192,192,192,128,0,64,192,128,6,5,5,7,0,
  9,68,204,204,204,136,10,14,28,11,0,0,8,128,8,128,
  17,0,17,0,127,192,17,0,17,0,34,0,34,0,255,128,
  34,0,34,0,68,0,68,0,9,14,28,10,0,0,8,0,
  8,0,59,128,123,0,200,0,200,0,232,0,107,0,11,128,
  9,128,9,128,111,0,238,0,8,0,8,14,14,9,0,0,
  97,179,214,102,12,12,24,24,48,48,102,107,205,134,9,14,
  28,10,0,0,56,0,124,0,108,0,108,0,108,0,56,0,
  56,128,109,128,199,0,194,0,199,0,237,128,124,128,56,0,
  2,5,5,3,0,10,128,192,192,192,64,5,14,14,6,0,
  0,24,48,96,96,192,192,192,192,192,192,96,96,48,24,5,
  14,14,6,0,0,192,96,48,48,24,24,24,24,24,24,56,
  48,96,192,7,7,7,8,0,4,146,214,124,16,124,214,146,
  8,10,10,10,0,1,8,24,24,24,127,254,24,24,24,16,
  4,6,6,5,0,0,112,96,96,64,192,192,8,2,2,9,
  0,5,127,254,3,3,3,4,0,0,224,160,224,8,14,14,
  9,0,0,3,3,6,6,12,12,24,24,48,48,96,96,192,
  192,9,14,28,10,0,0,62,0,127,0,227,128,197,128,197,
  128,197,128,201,128,201,128,209,128,209,128,209,128,227,128,127,
  0,62,0,9,14,28,10,0,0,12,0,28,0,60,0,124,
  0,8,0,4,0,12,0,12,0,8,0,4,0,12,0,12,
  0,127,128,255,128,9,14,28,10,0,0,126,0,255,0,195,
  128,193,128,1,128,3,128,63,0,126,0,224,0,192,0,192,
  0,192,0,223,128,191,0,9,14,28,10,0,0,126,0,255,
  0,195,128,1,128,1,128,3,0,58,0,119,0,3,128,1,
  128,1,128,3,128,255,0,126,0,9,14,28,10,0,0,2,
  0,6,0,14,0,30,0,62,0,118,0,230,0,198,0,251,
  128,247,0,6,0,6,0,6,0,4,0,9,14,28,10,0,
  0,127,128,127,128,96,0,96,0,96,0,110,0,111,0,3,
  128,1,128,1,128,1,128,195,0,255,0,124,0,9,14,28,
  10,0,0,31,0,127,0,96,0,192,0,192,0,192,0,222,
  0,223,0,195,128,193,128,193,128,227,0,127,0,60,0,9,
  14,28,10,0,0,127,128,255,128,0,0,3,0,3,0,6,
  0,6,0,12,0,12,0,24,0,24,0,48,0,48,0,32,
  0,9,14,28,10,0,0,58,0,119,0,227,128,193,128,193,
  128,99,0,54,0,111,0,227,128,193,128,193,128,227,128,119,
  0,46,0,9,14,28,10,0,0,60,0,255,0,231,0,195,
  128,193,128,193,128,225,128,253,128,125,128,1,128,3,128,7,
  0,127,0,252,0,3,11,11,4,0,2,224,160,224,0,0,
  0,0,0,224,160,224,4,13,13,5,0,0,112,80,112,0,
  0,0,0,0,112,80,112,96,192,9,11,22,10,0,1,1,
  128,3,128,15,0,28,0,120,0,224,0,120,0,28,0,15,
  0,3,128,1,128,9,6,12,10,0,4,127,128,255,0,0,
  0,0,0,127,128,255,0,9,11,22,10,0,1,192,0,224,
  0,120,0,60,0,15,0,3,128,15,0,60,0,120,0,224,
  0,192,0,8,14,14,9,0,0,116,238,135,3,3,6,14,
  56,48,48,0,0,48,48,9,11,22,10,0,1,62,0,65,
  0,128,128,154,128,166,128,162,128,162,128,166,128,155,0,64,
  0,63,128,9,14,28,10,0,0,252,0,254,0,199,0,195,
  128,193,128,193,128,193,128,253,128,253,128,193,128,193,128,193,
  128,193,128,129,0,9,14,28,10,0,0,94,0,223,0,195,
  128,193,128,193,128,195,128,255,0,255,0,195,128,193,128,193,
  128,195,128,223,0,190,0,9,14,28,10,0,0,14,0,63,
  0,115,128,97,128,192,0,192,0,192,0,192,0,192,0,192,
  0,96,0,112,0,63,128,15,0,9,14,28,10,0,0,238,
  0,111,0,99,128,97,128,97,128,97,128,97,128,97,128,97,
  128,97,128,97,128,99,128,111,0,238,0,9,14,28,10,0,
  0,95,128,223,0,192,0,192,0,192,0,192,0,223,0,222,
  0,192,0,192,0,192,0,192,0,223,128,191,0,9,14,28,
  10,0,0,95,128,223,0,192,0,192,0,192,0,192,0,223,
  0,222,0,192,0,192,0,192,0,192,0,192,0,128,0,9,
  14,28,10,0,0,63,128,127,128,225,128,192,0,192,0,192,
  0,192,0,207,128,223,128,193,128,193,128,225,128,127,128,62,
  0,9,14,28,10,0,0,129,0,193,128,193,128,193,128,193,
  128,193,128,223,128,223,128,193,128,193,128,193,128,193,128,193,
  128,64,128,8,14,14,10,1,0,254,127,24,24,24,24,24,
  24,24,24,24,24,254,127,9,14,28,10,0,0,31,128,63,
  128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,
  128,1,128,195,128,255,0,62,0,9,14,28,10,0,0,65,
  128,195,128,199,0,206,0,220,0,216,0,216,0,216,0,216,
  0,220,0,206,0,199,0,195,128,65,128,9,14,28,10,0,
  0,64,0,192,0,192,0,192,0,192,0,192,0,192,0,192,
  0,192,0,192,0,192,0,192,0,255,128,255,0,9,14,28,
  10,0,0,193,128,227,128,247,128,247,128,213,128,193,128,213,
  128,221,128,221,128,201,128,193,128,193,128,193,128,129,0,9,
  14,28,10,0,0,225,0,225,128,241,128,241,128,249,128,217,
  128,221,128,205,128,205,128,197,128,197,128,193,128,193,128,128,
  128,9,14,28,10,0,0,46,0,111,0,227,128,193,128,193,
  128,193,128,193,128,193,128,193,128,193,128,193,128,227,128,123,
  0,58,0,9,14,28,10,0,0,254,0,255,0,195,128,193,
  128,193,128,195,128,223,0,222,0,192,0,192,0,192,0,192,
  0,192,0,128,0,10,15,30,10,0,255,46,0,111,0,227,
  128,193,128,193,128,193,128,193,128,193,128,193,128,193,128,193,
  128,227,0,123,128,58,192,0,192,9,14,28,10,0,0,126,
  0,255,0,195,128,193,128,193,128,195,128,223,0,220,0,206,
  0,199,0,195,128,193,128,193,128,129,0,9,14,28,10,0,
  0,62,0,127,0,224,0,192,0,192,0,224,0,118,0,27,
  0,3,128,1,128,1,128,3,128,255,128,127,0,9,14,28,
  10,0,0,255,0,127,128,0,0,12,0,12,0,12,0,12,
  0,12,0,12,0,12,0,12,0,12,0,12,0,4,0,9,
  14,28,10,0,0,64,128,193,128,193,128,193,128,193,128,193,
  128,193,128,193,128,193,128,193,128,193,128,99,0,127,0,62,
  0,9,14,28,10,0,0,227,128,99,0,99,0,99,0,34,
  0,54,0,54,0,54,0,20,0,28,0,28,0,28,0,8,
  0,8,0,10,14,28,11,0,0,64,64,192,192,192,192,192,
  192,192,192,192,192,204,192,204,192,204,192,222,192,222,192,211,
  192,193,192,128,192,9,14,28,10,0,0,193,128,193,128,193,
  128,99,0,99,0,50,0,56,0,28,0,14,0,103,0,99,
  0,193,128,193,128,193,128,10,14,28,10,0,0,192,192,192,
  192,97,128,97,128,51,0,63,0,30,0,12,0,8,0,4,
  0,12,0,12,0,12,0,8,0,9,14,28,10,0,0,127,
  128,255,128,1,128,3,128,7,0,6,0,4,0,16,0,48,
  0,112,0,224,0,192,0,255,128,255,0,5,14,14,6,0,
  0,248,192,192,192,192,192,192,192,192,192,192,192,192,248,9,
  14,28,10,0,0,192,0,96,0,96,0,48,0,48,0,24,
  0,24,0,12,0,12,0,6,0,6,0,3,0,3,0,1,
  128,5,14,14,6,0,0,248,24,24,24,24,24,24,24,24,
  24,24,24,24,248,9,6,12,10,0,8,8,0,28,0,54,
  0,99,0,193,128,128,128,10,1,2,10,0,255,255,192,4,
  3,3,5,0,12,224,96,48,8,11,11,9,0,0,124,127,
  3,3,59,123,227,195,199,255,123,9,13,26,10,0,0,64,
  0,192,0,192,0,192,0,192,0,222,0,223,0,195,128,193,
  128,193,128,195,0,255,0,222,0,8,11,11,9,0,0,30,
  63,115,224,192,192,192,224,240,127,30,9,13,26,10,0,0,
  0,128,1,128,1,128,1,128,1,128,61,128,125,128,225,128,
  193,128,193,128,227,128,127,128,61,128,8,11,11,9,0,0,
  60,126,231,195,195,223,222,192,227,127,62,7,13,13,8,0,
  0,62,124,96,96,252,248,96,96,96,96,96,96,32,8,13,
  13,9,0,0,63,127,227,195,195,195,227,123,51,3,3,127,
  254,8,13,13,9,0,0,64,192,192,192,222,223,195,195,195,
  195,195,195,130,2,13,13,3,0,0,64,192,128,64,192,192,
  192,192,192,192,192,192,128,5,14,14,6,0,255,16,24,24,
  8,48,120,24,24,24,24,24,24,120,240,8,13,13,9,0,
  0,64,192,192,198,198,204,216,216,216,204,198,199,131,2,14,
  14,3,0,0,64,192,192,192,192,192,192,192,192,192,192,192,
  192,128,9,11,22,10,0,0,91,0,219,128,201,128,201,128,
  201,128,201,128,201,128,201,128,201,128,193,128,129,0,8,11,
  11,9,0,0,94,223,195,195,195,195,195,195,195,195,130,8,
  11,11,9,0,0,52,118,227,195,195,195,195,195,227,118,52,
  8,11,11,9,0,0,252,254,199,195,199,222,220,192,192,192,
  128,9,13,26,9,0,255,63,0,127,0,227,0,195,0,195,
  0,195,0,251,0,123,0,3,0,3,0,3,128,3,128,3,
  128,7,11,11,8,0,0,92,222,224,224,192,192,192,192,192,
  192,128,8,11,11,9,0,0,62,127,192,192,240,102,15,3,
  3,254,124,6,13,13,7,0,0,32,96,96,252,248,96,96,
  96,96,96,96,124,60,8,11,11,9,0,0,65,195,195,195,
  195,195,195,195,227,123,58,8,11,11,9,0,0,129,129,195,
  195,102,102,102,36,60,24,24,9,11,22,10,0,0,128,128,
  193,128,201,128,201,128,201,128,201,128,193,128,221,128,247,128,
  227,128,65,0,8,11,11,9,0,0,195,102,102,52,24,24,
  24,52,102,102,195,8,12,12,9,0,255,193,227,99,102,110,
  44,12,24,24,48,240,224,8,11,11,9,0,0,127,255,7,
  6,12,0,48,96,224,255,254,7,14,14,8,0,0,14,28,
  24,24,24,48,224,224,48,24,24,24,28,14,2,16,16,5,
  1,255,192,192,192,192,192,192,192,192,192,192,192,192,192,192,
  192,192,8,14,14,9,0,0,224,112,24,24,24,12,7,7,
  12,24,24,24,112,224,10,5,10,11,0,4,48,192,120,192,
  204,192,199,128,195,0,5,13,13,6,0,1,248,136,136,136,
  136,136,136,136,136,136,136,136,248,8,11,11,9,0,0,252,
  254,199,195,199,222,220,192,192,192,128,8,11,11,9,0,0,
  30,63,115,224,192,192,192,224,240,127,30,8,11,11,9,0,
  0,127,254,24,24,24,24,24,24,24,24,16,8,12,12,9,
  0,255,193,227,99,102,110,44,12,24,24,48,240,224,8,12,
  12,9,0,255,126,255,219,219,219,219,90,24,24,24,24,16,
  8,11,11,9,0,0,195,102,102,52,24,24,24,52,102,102,
  195,8,12,12,9,0,255,132,198,198,198,198,198,198,198,198,
  254,255,3,8,11,11,9,0,0,65,195,195,195,231,127,63,
  3,3,3,2,8,11,11,9,0,0,130,195,195,211,219,219,
  219,219,219,203,255,8,12,12,9,0,255,130,195,195,211,219,
  219,219,219,218,200,255,3,8,11,11,9,0,0,192,224,96,
  96,108,110,103,99,103,126,124,8,11,11,9,0,0,130,195,
  195,195,219,221,207,199,207,253,251,8,11,11,9,0,0,64,
  192,192,192,220,222,199,195,199,254,252,8,11,11,9,0,0,
  124,254,198,3,27,59,3,3,6,254,120,9,11,22,10,0,
  0,71,0,207,128,205,128,205,128,221,128,221,128,205,128,205,
  128,205,128,207,128,135,0,8,11,11,9,0,0,63,127,227,
  195,227,123,59,51,51,115,226,9,14,28,10,0,0,252,0,
  254,0,199,0,195,128,193,128,193,128,193,128,253,128,253,128,
  193,128,193,128,193,128,193,128,129,0,9,14,28,10,0,0,
  223,128,223,0,192,0,192,0,192,0,192,0,222,0,223,0,
  195,128,193,128,193,128,195,128,255,0,254,0,9,14,28,10,
  0,0,94,0,223,0,195,128,193,128,193,128,195,128,255,0,
  255,0,195,128,193,128,193,128,195,128,223,0,190,0,9,14,
  28,10,0,0,223,0,223,128,192,0,192,0,192,0,192,0,
  192,0,192,0,192,0,192,0,192,0,192,0,192,0,128,0,
  9,14,28,10,0,0,11,0,27,0,59,0,115,0,99,0,
  99,0,99,0,99,0,99,0,99,0,123,0,251,128,193,128,
  193,128,9,14,28,10,0,0,95,128,223,0,192,0,192,0,
  192,0,192,0,223,0,222,0,192,0,192,0,192,0,192,0,
  223,128,191,0,10,14,28,11,0,0,64,64,192,192,196,192,
  204,192,204,192,109,128,109,128,109,128,109,128,204,192,204,192,
  204,192,200,192,128,128,9,14,28,10,0,0,122,0,251,0,
  131,128,1,128,1,128,3,0,58,0,123,0,3,128,1,128,
  1,128,131,128,251,0,120,0,9,14,28,10,0,0,67,128,
  195,128,199,128,199,128,199,128,205,128,205,128,205,128,217,128,
  217,128,217,128,209,128,209,128,193,0,9,14,28,10,0,0,
  91,128,219,128,215,128,199,128,199,128,205,128,205,128,205,128,
  217,128,217,128,217,128,209,128,209,128,193,0,9,14,28,10,
  0,0,65,128,195,128,199,0,206,0,220,0,216,0,216,0,
  216,0,216,0,220,0,206,0,199,0,195,128,65,128,9,14,
  28,10,0,0,220,0,222,0,199,0,195,128,193,128,193,128,
  193,128,193,128,193,128,193,128,193,128,193,128,193,128,193,128,
  9,14,28,10,0,0,193,128,227,128,247,128,247,128,213,128,
  193,128,213,128,221,128,221,128,201,128,193,128,193,128,193,128,
  129,0,9,14,28,10,0,0,129,0,193,128,193,128,193,128,
  193,128,193,128,223,128,223,128,193,128,193,128,193,128,193,128,
  193,128,64,128,9,14,28,10,0,0,46,0,111,0,227,128,
  193,128,193,128,193,128,193,128,193,128,193,128,193,128,193,128,
  227,128,123,0,58,0,9,14,28,10,0,0,223,128,223,128,
  193,128,193,128,193,128,193,128,193,128,193,128,193,128,193,128,
  193,128,193,128,193,128,129,0,9,14,28,10,0,0,254,0,
  255,0,195,128,193,128,193,128,195,128,223,0,222,0,192,0,
  192,0,192,0,192,0,192,0,128,0,9,14,28,10,0,0,
  14,0,63,0,115,128,97,128,192,0,192,0,192,0,192,0,
  192,0,192,0,96,0,112,0,63,128,15,0,9,14,28,10,
  0,0,255,0,127,128,0,0,12,0,12,0,12,0,12,0,
  12,0,12,0,12,0,12,0,12,0,12,0,4,0,9,14,
  28,10,0,0,129,0,193,128,193,128,193,128,193,128,125,128,
  61,128,1,128,1,128,1,128,193,128,225,128,127,0,62,0,
  10,14,28,11,0,0,63,0,127,128,237,192,204,192,204,192,
  237,192,109,128,45,0,12,0,12,0,12,0,12,0,12,0,
  4,0,9,14,28,10,0,0,193,128,193,128,193,128,99,0,
  99,0,50,0,56,0,28,0,14,0,103,0,99,0,193,128,
  193,128,193,128,10,15,30,10,0,255,130,0,195,0,195,0,
  195,0,195,0,195,0,195,0,195,0,195,0,195,0,195,0,
  195,0,223,0,223,128,1,192,9,14,28,10,0,0,129,0,
  193,128,193,128,193,128,193,128,193,128,225,128,125,128,61,128,
  1,128,1,128,1,128,1,128,0,128,10,14,28,11,0,0,
  128,128,192,192,192,192,192,192,200,192,204,192,204,192,204,192,
  204,192,204,192,196,192,192,64,223,128,95,192,11,15,30,11,
  0,255,128,128,192,192,192,192,192,192,200,192,204,192,204,192,
  204,192,204,192,204,192,196,192,192,64,223,128,95,192,0,224,
  9,14,28,10,0,0,224,0,224,0,96,0,96,0,96,0,
  96,0,110,0,111,0,99,128,97,128,97,128,99,128,127,0,
  62,0,10,14,28,11,0,0,128,128,192,192,192,192,192,192,
  192,192,192,192,220,192,222,192,199,64,195,64,195,64,199,64,
  254,192,124,192,9,14,28,10,0,0,128,0,192,0,192,0,
  192,0,192,0,192,0,222,0,223,0,195,128,193,128,193,128,
  195,128,255,0,254,0,9,14,28,10,0,0,62,0,127,0,
  227,128,193,128,193,128,1,128,29,128,29,128,1,128,1,128,
  193,128,227,128,127,0,62,0,10,14,28,11,0,0,71,0,
  207,128,221,192,216,192,216,192,216,192,248,192,248,192,216,192,
  216,192,216,192,221,192,207,128,135,0,9,14,28,10,0,0,
  63,128,127,128,225,128,193,128,193,128,225,128,125,128,61,128,
  29,128,57,128,113,128,225,128,193,128,129,0,8,11,11,9,
  0,0,124,127,3,3,59,123,227,195,199,255,123,8,11,11,
  9,0,0,7,31,56,112,102,207,195,195,231,126,60,8,11,
  11,9,0,0,92,222,198,198,220,222,195,195,199,222,188,8,
  11,11,9,0,0,254,255,192,192,192,192,192,192,192,192,128,
  10,11,22,11,0,0,31,128,31,128,25,128,49,128,49,128,
  49,128,1,128,127,192,255,192,192,192,192,192,8,11,11,9,
  0,0,60,126,231,195,195,223,222,192,227,127,62,9,11,22,
  10,0,0,64,128,201,128,201,128,107,0,54,0,54,0,107,
  0,201,128,201,128,201,128,129,0,8,11,11,9,0,0,116,
  246,195,7,126,62,6,3,7,254,124,8,11,11,9,0,0,
  65,195,195,199,207,223,219,211,195,195,130,8,11,11,9,0,
  0,89,219,211,199,207,223,219,211,195,195,130,8,11,11,9,
  0,0,71,207,204,220,216,216,216,220,206,199,67,8,11,11,
  9,0,0,27,59,115,227,195,195,195,195,195,195,195,9,11,
  22,10,0,0,65,0,227,128,247,128,247,128,213,128,213,128,
  213,128,213,128,193,128,193,128,129,0,8,11,11,9,0,0,
  65,195,195,251,251,195,195,195,195,195,130,8,11,11,9,0,
  0,52,118,227,195,195,195,195,195,227,118,52,8,11,11,9,
  0,0,95,223,195,195,195,195,195,195,195,195,130,255,255,255,
  255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
  255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
  255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
  255,255,255,255,255,255,255,255,255,255,255,255,255};

 

DAD
Offline
Зарегистрирован: 23.06.2014

О вам) Или про вас. Про тебя, в общем. Законченная конструкция - это так редко бывает. Молодец. По ходу пьесы, кстати, быстренько разобрался с нокиевским экранчиком. Огромный респект титовичу и лешаку. Очень полезный и доступный материал получился.

hugoboss317
Offline
Зарегистрирован: 21.03.2013

DAD пишет:
По ходу пьесы, кстати, быстренько разобрался с нокиевским экранчиком..

Чтож, спасибо. По поводу нокиевского экранчика кстати, нашёл времечко и дописываю библиотеку для МК с килобайтной оперативкой и возможностью вывода граффики и текста. Пишу это к тому что в основе её принцип, похожий на U8G. Помню как "хаил" создателя за такую бибу, а когда надумал как "писать и рисовать" на экранчике без чтения из него, вспомнил, что где-то я это уже видел.... но это уже совсем другая история.

goodwind
Offline
Зарегистрирован: 11.09.2014

hugoboss317 пишет:

Коли уж зашёл в тему, как то рисовал для себя русский 10х14, тоже самое - может кому-нЬтЬ.....

а bdf-ки под него не сохранилось? Или, еще лучше, если есть 6х9 и 6х10... был бы благодарен

никак не могу раскурить как внутри эти шрифты рисовать чтобы после конвертации в код нормально отображались, везде в виде кода уже, подглядеть негде. Уже думаю написать софтинку для обратной конвертации в битмап

hugoboss317
Offline
Зарегистрирован: 21.03.2013

А чегож, остался. Я тоже когда завёлся с русским, нужен был исходник. Правда не докричался.



STARTFONT 2.1
COMMENT Exported by Fony v1.3.6
FONT Verdana
SIZE 16 96 96
FONTBOUNDINGBOX 11 15 0 -1
STARTPROPERTIES 6
COPYRIGHT ""
RESOLUTION_X 96
RESOLUTION_Y 96
FONT_ASCENT 15
FONT_DESCENT 1
DEFAULT_CHAR 0
ENDPROPERTIES
CHARS 160
STARTCHAR 032
ENCODING 32
SWIDTH 576 0
DWIDTH 8 0
BBX 0 0 0 0
BITMAP
ENDCHAR
STARTCHAR 033
ENCODING 33
SWIDTH 288 0
DWIDTH 4 0
BBX 2 14 1 0
BITMAP
40
C0
C0
C0
C0
C0
C0
C0
C0
80
00
40
C0
80
ENDCHAR
STARTCHAR 034
ENCODING 34
SWIDTH 504 0
DWIDTH 7 0
BBX 6 5 0 9
BITMAP
44
CC
CC
CC
88
ENDCHAR
STARTCHAR 035
ENCODING 35
SWIDTH 792 0
DWIDTH 11 0
BBX 10 14 0 0
BITMAP
0880
0880
1100
1100
7FC0
1100
1100
2200
2200
FF80
2200
2200
4400
4400
ENDCHAR
STARTCHAR 036
ENCODING 36
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
0800
0800
3B80
7B00
C800
C800
E800
6B00
0B80
0980
0980
6F00
EE00
0800
ENDCHAR
STARTCHAR 037
ENCODING 37
SWIDTH 648 0
DWIDTH 9 0
BBX 8 14 0 0
BITMAP
61
B3
D6
66
0C
0C
18
18
30
30
66
6B
CD
86
ENDCHAR
STARTCHAR 038
ENCODING 38
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
3800
7C00
6C00
6C00
6C00
3800
3880
6D80
C700
C200
C700
ED80
7C80
3800
ENDCHAR
STARTCHAR 039
ENCODING 39
SWIDTH 216 0
DWIDTH 3 0
BBX 2 5 0 10
BITMAP
80
C0
C0
C0
40
ENDCHAR
STARTCHAR 040
ENCODING 40
SWIDTH 432 0
DWIDTH 6 0
BBX 5 14 0 0
BITMAP
18
30
60
60
C0
C0
C0
C0
C0
C0
60
60
30
18
ENDCHAR
STARTCHAR 041
ENCODING 41
SWIDTH 432 0
DWIDTH 6 0
BBX 5 14 0 0
BITMAP
C0
60
30
30
18
18
18
18
18
18
38
30
60
C0
ENDCHAR
STARTCHAR 042
ENCODING 42
SWIDTH 576 0
DWIDTH 8 0
BBX 7 7 0 4
BITMAP
92
D6
7C
10
7C
D6
92
ENDCHAR
STARTCHAR 043
ENCODING 43
SWIDTH 720 0
DWIDTH 10 0
BBX 8 10 0 1
BITMAP
08
18
18
18
7F
FE
18
18
18
10
ENDCHAR
STARTCHAR 044
ENCODING 44
SWIDTH 360 0
DWIDTH 5 0
BBX 4 6 0 0
BITMAP
70
60
60
40
C0
C0
ENDCHAR
STARTCHAR 045
ENCODING 45
SWIDTH 648 0
DWIDTH 9 0
BBX 8 2 0 5
BITMAP
7F
FE
ENDCHAR
STARTCHAR 046
ENCODING 46
SWIDTH 288 0
DWIDTH 4 0
BBX 3 3 0 0
BITMAP
E0
A0
E0
ENDCHAR
STARTCHAR 047
ENCODING 47
SWIDTH 648 0
DWIDTH 9 0
BBX 8 14 0 0
BITMAP
03
03
06
06
0C
0C
18
18
30
30
60
60
C0
C0
ENDCHAR
STARTCHAR 048
ENCODING 48
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
3E00
7F00
E380
C580
C580
C580
C980
C980
D180
D180
D180
E380
7F00
3E00
ENDCHAR
STARTCHAR 049
ENCODING 49
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
0C00
1C00
3C00
7C00
0800
0400
0C00
0C00
0800
0400
0C00
0C00
7F80
FF80
ENDCHAR
STARTCHAR 050
ENCODING 50
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
7E00
FF00
C380
C180
0180
0380
3F00
7E00
E000
C000
C000
C000
DF80
BF00
ENDCHAR
STARTCHAR 051
ENCODING 51
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
7E00
FF00
C380
0180
0180
0300
3A00
7700
0380
0180
0180
0380
FF00
7E00
ENDCHAR
STARTCHAR 052
ENCODING 52
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
0200
0600
0E00
1E00
3E00
7600
E600
C600
FB80
F700
0600
0600
0600
0400
ENDCHAR
STARTCHAR 053
ENCODING 53
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
7F80
7F80
6000
6000
6000
6E00
6F00
0380
0180
0180
0180
C300
FF00
7C00
ENDCHAR
STARTCHAR 054
ENCODING 54
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
1F00
7F00
6000
C000
C000
C000
DE00
DF00
C380
C180
C180
E300
7F00
3C00
ENDCHAR
STARTCHAR 055
ENCODING 55
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
7F80
FF80
0000
0300
0300
0600
0600
0C00
0C00
1800
1800
3000
3000
2000
ENDCHAR
STARTCHAR 056
ENCODING 56
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
3A00
7700
E380
C180
C180
6300
3600
6F00
E380
C180
C180
E380
7700
2E00
ENDCHAR
STARTCHAR 057
ENCODING 57
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
3C00
FF00
E700
C380
C180
C180
E180
FD80
7D80
0180
0380
0700
7F00
FC00
ENDCHAR
STARTCHAR 058
ENCODING 58
SWIDTH 288 0
DWIDTH 4 0
BBX 3 11 0 2
BITMAP
E0
A0
E0
00
00
00
00
00
E0
A0
E0
ENDCHAR
STARTCHAR 059
ENCODING 59
SWIDTH 360 0
DWIDTH 5 0
BBX 4 13 0 0
BITMAP
70
50
70
00
00
00
00
00
70
50
70
60
C0
ENDCHAR
STARTCHAR 060
ENCODING 60
SWIDTH 720 0
DWIDTH 10 0
BBX 9 11 0 1
BITMAP
0180
0380
0F00
1C00
7800
E000
7800
1C00
0F00
0380
0180
ENDCHAR
STARTCHAR 061
ENCODING 61
SWIDTH 720 0
DWIDTH 10 0
BBX 9 6 0 4
BITMAP
7F80
FF00
0000
0000
7F80
FF00
ENDCHAR
STARTCHAR 062
ENCODING 62
SWIDTH 720 0
DWIDTH 10 0
BBX 9 11 0 1
BITMAP
C000
E000
7800
3C00
0F00
0380
0F00
3C00
7800
E000
C000
ENDCHAR
STARTCHAR 063
ENCODING 63
SWIDTH 648 0
DWIDTH 9 0
BBX 8 14 0 0
BITMAP
74
EE
87
03
03
06
0E
38
30
30
00
00
30
30
ENDCHAR
STARTCHAR 064
ENCODING 64
SWIDTH 720 0
DWIDTH 10 0
BBX 9 11 0 1
BITMAP
3E00
4100
8080
9A80
A680
A280
A280
A680
9B00
4000
3F80
ENDCHAR
STARTCHAR 065
ENCODING 65
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
FC00
FE00
C700
C380
C180
C180
C180
FD80
FD80
C180
C180
C180
C180
8100
ENDCHAR
STARTCHAR 066
ENCODING 66
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
5E00
DF00
C380
C180
C180
C380
FF00
FF00
C380
C180
C180
C380
DF00
BE00
ENDCHAR
STARTCHAR 067
ENCODING 67
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
0E00
3F00
7380
6180
C000
C000
C000
C000
C000
C000
6000
7000
3F80
0F00
ENDCHAR
STARTCHAR 068
ENCODING 68
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
EE00
6F00
6380
6180
6180
6180
6180
6180
6180
6180
6180
6380
6F00
EE00
ENDCHAR
STARTCHAR 069
ENCODING 69
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
5F80
DF00
C000
C000
C000
C000
DF00
DE00
C000
C000
C000
C000
DF80
BF00
ENDCHAR
STARTCHAR 070
ENCODING 70
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
5F80
DF00
C000
C000
C000
C000
DF00
DE00
C000
C000
C000
C000
C000
8000
ENDCHAR
STARTCHAR 071
ENCODING 71
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
3F80
7F80
E180
C000
C000
C000
C000
CF80
DF80
C180
C180
E180
7F80
3E00
ENDCHAR
STARTCHAR 072
ENCODING 72
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
8100
C180
C180
C180
C180
C180
DF80
DF80
C180
C180
C180
C180
C180
4080
ENDCHAR
STARTCHAR 073
ENCODING 73
SWIDTH 720 0
DWIDTH 10 0
BBX 8 14 1 0
BITMAP
FE
7F
18
18
18
18
18
18
18
18
18
18
FE
7F
ENDCHAR
STARTCHAR 074
ENCODING 74
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
1F80
3F80
0180
0180
0180
0180
0180
0180
0180
0180
0180
C380
FF00
3E00
ENDCHAR
STARTCHAR 075
ENCODING 75
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
4180
C380
C700
CE00
DC00
D800
D800
D800
D800
DC00
CE00
C700
C380
4180
ENDCHAR
STARTCHAR 076
ENCODING 76
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
4000
C000
C000
C000
C000
C000
C000
C000
C000
C000
C000
C000
FF80
FF00
ENDCHAR
STARTCHAR 077
ENCODING 77
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
C180
E380
F780
F780
D580
C180
D580
DD80
DD80
C980
C180
C180
C180
8100
ENDCHAR
STARTCHAR 078
ENCODING 78
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
E100
E180
F180
F180
F980
D980
DD80
CD80
CD80
C580
C580
C180
C180
8080
ENDCHAR
STARTCHAR 079
ENCODING 79
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
2E00
6F00
E380
C180
C180
C180
C180
C180
C180
C180
C180
E380
7B00
3A00
ENDCHAR
STARTCHAR 080
ENCODING 80
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
FE00
FF00
C380
C180
C180
C380
DF00
DE00
C000
C000
C000
C000
C000
8000
ENDCHAR
STARTCHAR 081
ENCODING 81
SWIDTH 720 0
DWIDTH 10 0
BBX 10 15 0 -1
BITMAP
2E00
6F00
E380
C180
C180
C180
C180
C180
C180
C180
C180
E300
7B80
3AC0
00C0
ENDCHAR
STARTCHAR 082
ENCODING 82
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
7E00
FF00
C380
C180
C180
C380
DF00
DC00
CE00
C700
C380
C180
C180
8100
ENDCHAR
STARTCHAR 083
ENCODING 83
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
3E00
7F00
E000
C000
C000
E000
7600
1B00
0380
0180
0180
0380
FF80
7F00
ENDCHAR
STARTCHAR 084
ENCODING 84
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
FF00
7F80
0000
0C00
0C00
0C00
0C00
0C00
0C00
0C00
0C00
0C00
0C00
0400
ENDCHAR
STARTCHAR 085
ENCODING 85
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
4080
C180
C180
C180
C180
C180
C180
C180
C180
C180
C180
6300
7F00
3E00
ENDCHAR
STARTCHAR 086
ENCODING 86
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
E380
6300
6300
6300
2200
3600
3600
3600
1400
1C00
1C00
1C00
0800
0800
ENDCHAR
STARTCHAR 087
ENCODING 87
SWIDTH 792 0
DWIDTH 11 0
BBX 10 14 0 0
BITMAP
4040
C0C0
C0C0
C0C0
C0C0
C0C0
CCC0
CCC0
CCC0
DEC0
DEC0
D3C0
C1C0
80C0
ENDCHAR
STARTCHAR 088
ENCODING 88
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
C180
C180
C180
6300
6300
3200
3800
1C00
0E00
6700
6300
C180
C180
C180
ENDCHAR
STARTCHAR 089
ENCODING 89
SWIDTH 720 0
DWIDTH 10 0
BBX 10 14 0 0
BITMAP
C0C0
C0C0
6180
6180
3300
3F00
1E00
0C00
0800
0400
0C00
0C00
0C00
0800
ENDCHAR
STARTCHAR 090
ENCODING 90
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
7F80
FF80
0180
0380
0700
0600
0400
1000
3000
7000
E000
C000
FF80
FF00
ENDCHAR
STARTCHAR 091
ENCODING 91
SWIDTH 432 0
DWIDTH 6 0
BBX 5 14 0 0
BITMAP
F8
C0
C0
C0
C0
C0
C0
C0
C0
C0
C0
C0
C0
F8
ENDCHAR
STARTCHAR 092
ENCODING 92
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
C000
6000
6000
3000
3000
1800
1800
0C00
0C00
0600
0600
0300
0300
0180
ENDCHAR
STARTCHAR 093
ENCODING 93
SWIDTH 432 0
DWIDTH 6 0
BBX 5 14 0 0
BITMAP
F8
18
18
18
18
18
18
18
18
18
18
18
18
F8
ENDCHAR
STARTCHAR 094
ENCODING 94
SWIDTH 720 0
DWIDTH 10 0
BBX 9 6 0 8
BITMAP
0800
1C00
3600
6300
C180
8080
ENDCHAR
STARTCHAR 095
ENCODING 95
SWIDTH 720 0
DWIDTH 10 0
BBX 10 1 0 -1
BITMAP
FFC0
ENDCHAR
STARTCHAR 096
ENCODING 96
SWIDTH 360 0
DWIDTH 5 0
BBX 4 3 0 12
BITMAP
E0
60
30
ENDCHAR
STARTCHAR 097
ENCODING 97
SWIDTH 648 0
DWIDTH 9 0
BBX 8 11 0 0
BITMAP
7C
7F
03
03
3B
7B
E3
C3
C7
FF
7B
ENDCHAR
STARTCHAR 098
ENCODING 98
SWIDTH 720 0
DWIDTH 10 0
BBX 9 13 0 0
BITMAP
4000
C000
C000
C000
C000
DE00
DF00
C380
C180
C180
C300
FF00
DE00
ENDCHAR
STARTCHAR 099
ENCODING 99
SWIDTH 648 0
DWIDTH 9 0
BBX 8 11 0 0
BITMAP
1E
3F
73
E0
C0
C0
C0
E0
F0
7F
1E
ENDCHAR
STARTCHAR 100
ENCODING 100
SWIDTH 720 0
DWIDTH 10 0
BBX 9 13 0 0
BITMAP
0080
0180
0180
0180
0180
3D80
7D80
E180
C180
C180
E380
7F80
3D80
ENDCHAR
STARTCHAR 101
ENCODING 101
SWIDTH 648 0
DWIDTH 9 0
BBX 8 11 0 0
BITMAP
3C
7E
E7
C3
C3
DF
DE
C0
E3
7F
3E
ENDCHAR
STARTCHAR 102
ENCODING 102
SWIDTH 576 0
DWIDTH 8 0
BBX 7 13 0 0
BITMAP
3E
7C
60
60
FC
F8
60
60
60
60
60
60
20
ENDCHAR
STARTCHAR 103
ENCODING 103
SWIDTH 648 0
DWIDTH 9 0
BBX 8 13 0 0
BITMAP
3F
7F
E3
C3
C3
C3
E3
7B
33
03
03
7F
FE
ENDCHAR
STARTCHAR 104
ENCODING 104
SWIDTH 648 0
DWIDTH 9 0
BBX 8 13 0 0
BITMAP
40
C0
C0
C0
DE
DF
C3
C3
C3
C3
C3
C3
82
ENDCHAR
STARTCHAR 105
ENCODING 105
SWIDTH 216 0
DWIDTH 3 0
BBX 2 13 0 0
BITMAP
40
C0
80
40
C0
C0
C0
C0
C0
C0
C0
C0
80
ENDCHAR
STARTCHAR 106
ENCODING 106
SWIDTH 432 0
DWIDTH 6 0
BBX 5 14 0 -1
BITMAP
10
18
18
08
30
78
18
18
18
18
18
18
78
F0
ENDCHAR
STARTCHAR 107
ENCODING 107
SWIDTH 648 0
DWIDTH 9 0
BBX 8 13 0 0
BITMAP
40
C0
C0
C6
C6
CC
D8
D8
D8
CC
C6
C7
83
ENDCHAR
STARTCHAR 108
ENCODING 108
SWIDTH 216 0
DWIDTH 3 0
BBX 2 14 0 0
BITMAP
40
C0
C0
C0
C0
C0
C0
C0
C0
C0
C0
C0
C0
80
ENDCHAR
STARTCHAR 109
ENCODING 109
SWIDTH 720 0
DWIDTH 10 0
BBX 9 11 0 0
BITMAP
5B00
DB80
C980
C980
C980
C980
C980
C980
C980
C180
8100
ENDCHAR
STARTCHAR 110
ENCODING 110
SWIDTH 648 0
DWIDTH 9 0
BBX 8 11 0 0
BITMAP
5E
DF
C3
C3
C3
C3
C3
C3
C3
C3
82
ENDCHAR
STARTCHAR 111
ENCODING 111
SWIDTH 648 0
DWIDTH 9 0
BBX 8 11 0 0
BITMAP
34
76
E3
C3
C3
C3
C3
C3
E3
76
34
ENDCHAR
STARTCHAR 112
ENCODING 112
SWIDTH 648 0
DWIDTH 9 0
BBX 8 11 0 0
BITMAP
FC
FE
C7
C3
C7
DE
DC
C0
C0
C0
80
ENDCHAR
STARTCHAR 113
ENCODING 113
SWIDTH 648 0
DWIDTH 9 0
BBX 9 13 0 -1
BITMAP
3F00
7F00
E300
C300
C300
C300
FB00
7B00
0300
0300
0380
0380
0380
ENDCHAR
STARTCHAR 114
ENCODING 114
SWIDTH 576 0
DWIDTH 8 0
BBX 7 11 0 0
BITMAP
5C
DE
E0
E0
C0
C0
C0
C0
C0
C0
80
ENDCHAR
STARTCHAR 115
ENCODING 115
SWIDTH 648 0
DWIDTH 9 0
BBX 8 11 0 0
BITMAP
3E
7F
C0
C0
F0
66
0F
03
03
FE
7C
ENDCHAR
STARTCHAR 116
ENCODING 116
SWIDTH 504 0
DWIDTH 7 0
BBX 6 13 0 0
BITMAP
20
60
60
FC
F8
60
60
60
60
60
60
7C
3C
ENDCHAR
STARTCHAR 117
ENCODING 117
SWIDTH 648 0
DWIDTH 9 0
BBX 8 11 0 0
BITMAP
41
C3
C3
C3
C3
C3
C3
C3
E3
7B
3A
ENDCHAR
STARTCHAR 118
ENCODING 118
SWIDTH 648 0
DWIDTH 9 0
BBX 8 11 0 0
BITMAP
81
81
C3
C3
66
66
66
24
3C
18
18
ENDCHAR
STARTCHAR 119
ENCODING 119
SWIDTH 720 0
DWIDTH 10 0
BBX 9 11 0 0
BITMAP
8080
C180
C980
C980
C980
C980
C180
DD80
F780
E380
4100
ENDCHAR
STARTCHAR 120
ENCODING 120
SWIDTH 648 0
DWIDTH 9 0
BBX 8 11 0 0
BITMAP
C3
66
66
34
18
18
18
34
66
66
C3
ENDCHAR
STARTCHAR 121
ENCODING 121
SWIDTH 648 0
DWIDTH 9 0
BBX 8 12 0 -1
BITMAP
C1
E3
63
66
6E
2C
0C
18
18
30
F0
E0
ENDCHAR
STARTCHAR 122
ENCODING 122
SWIDTH 648 0
DWIDTH 9 0
BBX 8 11 0 0
BITMAP
7F
FF
07
06
0C
00
30
60
E0
FF
FE
ENDCHAR
STARTCHAR 123
ENCODING 123
SWIDTH 576 0
DWIDTH 8 0
BBX 7 14 0 0
BITMAP
0E
1C
18
18
18
30
E0
E0
30
18
18
18
1C
0E
ENDCHAR
STARTCHAR 124
ENCODING 124
SWIDTH 360 0
DWIDTH 5 0
BBX 2 16 1 -1
BITMAP
C0
C0
C0
C0
C0
C0
C0
C0
C0
C0
C0
C0
C0
C0
C0
C0
ENDCHAR
STARTCHAR 125
ENCODING 125
SWIDTH 648 0
DWIDTH 9 0
BBX 8 14 0 0
BITMAP
E0
70
18
18
18
0C
07
07
0C
18
18
18
70
E0
ENDCHAR
STARTCHAR 126
ENCODING 126
SWIDTH 792 0
DWIDTH 11 0
BBX 10 5 0 4
BITMAP
30C0
78C0
CCC0
C780
C300
ENDCHAR
STARTCHAR 127
ENCODING 127
SWIDTH 432 0
DWIDTH 6 0
BBX 5 13 0 1
BITMAP
F8
88
88
88
88
88
88
88
88
88
88
88
F8
ENDCHAR
STARTCHAR 128
ENCODING 128
SWIDTH 648 0
DWIDTH 9 0
BBX 8 11 0 0
BITMAP
FC
FE
C7
C3
C7
DE
DC
C0
C0
C0
80
ENDCHAR
STARTCHAR 129
ENCODING 129
SWIDTH 648 0
DWIDTH 9 0
BBX 8 11 0 0
BITMAP
1E
3F
73
E0
C0
C0
C0
E0
F0
7F
1E
ENDCHAR
STARTCHAR 130
ENCODING 130
SWIDTH 648 0
DWIDTH 9 0
BBX 8 11 0 0
BITMAP
7F
FE
18
18
18
18
18
18
18
18
10
ENDCHAR
STARTCHAR 131
ENCODING 131
SWIDTH 648 0
DWIDTH 9 0
BBX 8 12 0 -1
BITMAP
C1
E3
63
66
6E
2C
0C
18
18
30
F0
E0
ENDCHAR
STARTCHAR 132
ENCODING 132
SWIDTH 648 0
DWIDTH 9 0
BBX 8 12 0 -1
BITMAP
7E
FF
DB
DB
DB
DB
5A
18
18
18
18
10
ENDCHAR
STARTCHAR 133
ENCODING 133
SWIDTH 648 0
DWIDTH 9 0
BBX 8 11 0 0
BITMAP
C3
66
66
34
18
18
18
34
66
66
C3
ENDCHAR
STARTCHAR 134
ENCODING 134
SWIDTH 648 0
DWIDTH 9 0
BBX 8 12 0 -1
BITMAP
84
C6
C6
C6
C6
C6
C6
C6
C6
FE
FF
03
ENDCHAR
STARTCHAR 135
ENCODING 135
SWIDTH 648 0
DWIDTH 9 0
BBX 8 11 0 0
BITMAP
41
C3
C3
C3
E7
7F
3F
03
03
03
02
ENDCHAR
STARTCHAR 136
ENCODING 136
SWIDTH 648 0
DWIDTH 9 0
BBX 8 11 0 0
BITMAP
82
C3
C3
D3
DB
DB
DB
DB
DB
CB
FF
ENDCHAR
STARTCHAR 137
ENCODING 137
SWIDTH 648 0
DWIDTH 9 0
BBX 8 12 0 -1
BITMAP
82
C3
C3
D3
DB
DB
DB
DB
DA
C8
FF
03
ENDCHAR
STARTCHAR 138
ENCODING 138
SWIDTH 648 0
DWIDTH 9 0
BBX 8 11 0 0
BITMAP
C0
E0
60
60
6C
6E
67
63
67
7E
7C
ENDCHAR
STARTCHAR 139
ENCODING 139
SWIDTH 648 0
DWIDTH 9 0
BBX 8 11 0 0
BITMAP
82
C3
C3
C3
DB
DD
CF
C7
CF
FD
FB
ENDCHAR
STARTCHAR 140
ENCODING 140
SWIDTH 648 0
DWIDTH 9 0
BBX 8 11 0 0
BITMAP
40
C0
C0
C0
DC
DE
C7
C3
C7
FE
FC
ENDCHAR
STARTCHAR 141
ENCODING 141
SWIDTH 648 0
DWIDTH 9 0
BBX 8 11 0 0
BITMAP
7C
FE
C6
03
1B
3B
03
03
06
FE
78
ENDCHAR
STARTCHAR 142
ENCODING 142
SWIDTH 720 0
DWIDTH 10 0
BBX 9 11 0 0
BITMAP
4700
CF80
CD80
CD80
DD80
DD80
CD80
CD80
CD80
CF80
8700
ENDCHAR
STARTCHAR 143
ENCODING 143
SWIDTH 648 0
DWIDTH 9 0
BBX 8 11 0 0
BITMAP
3F
7F
E3
C3
E3
7B
3B
33
33
73
E2
ENDCHAR
STARTCHAR 144
ENCODING 144
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
FC00
FE00
C700
C380
C180
C180
C180
FD80
FD80
C180
C180
C180
C180
8100
ENDCHAR
STARTCHAR 145
ENCODING 145
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
DF80
DF00
C000
C000
C000
C000
DE00
DF00
C380
C180
C180
C380
FF00
FE00
ENDCHAR
STARTCHAR 146
ENCODING 146
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
5E00
DF00
C380
C180
C180
C380
FF00
FF00
C380
C180
C180
C380
DF00
BE00
ENDCHAR
STARTCHAR 147
ENCODING 147
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
DF00
DF80
C000
C000
C000
C000
C000
C000
C000
C000
C000
C000
C000
8000
ENDCHAR
STARTCHAR 148
ENCODING 148
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
0B00
1B00
3B00
7300
6300
6300
6300
6300
6300
6300
7B00
FB80
C180
C180
ENDCHAR
STARTCHAR 149
ENCODING 149
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
5F80
DF00
C000
C000
C000
C000
DF00
DE00
C000
C000
C000
C000
DF80
BF00
ENDCHAR
STARTCHAR 150
ENCODING 150
SWIDTH 792 0
DWIDTH 11 0
BBX 10 14 0 0
BITMAP
4040
C0C0
C4C0
CCC0
CCC0
6D80
6D80
6D80
6D80
CCC0
CCC0
CCC0
C8C0
8080
ENDCHAR
STARTCHAR 151
ENCODING 151
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
7A00
FB00
8380
0180
0180
0300
3A00
7B00
0380
0180
0180
8380
FB00
7800
ENDCHAR
STARTCHAR 152
ENCODING 152
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
4380
C380
C780
C780
C780
CD80
CD80
CD80
D980
D980
D980
D180
D180
C100
ENDCHAR
STARTCHAR 153
ENCODING 153
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
5B80
DB80
D780
C780
C780
CD80
CD80
CD80
D980
D980
D980
D180
D180
C100
ENDCHAR
STARTCHAR 154
ENCODING 154
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
4180
C380
C700
CE00
DC00
D800
D800
D800
D800
DC00
CE00
C700
C380
4180
ENDCHAR
STARTCHAR 155
ENCODING 155
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
DC00
DE00
C700
C380
C180
C180
C180
C180
C180
C180
C180
C180
C180
C180
ENDCHAR
STARTCHAR 156
ENCODING 156
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
C180
E380
F780
F780
D580
C180
D580
DD80
DD80
C980
C180
C180
C180
8100
ENDCHAR
STARTCHAR 157
ENCODING 157
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
8100
C180
C180
C180
C180
C180
DF80
DF80
C180
C180
C180
C180
C180
4080
ENDCHAR
STARTCHAR 158
ENCODING 158
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
2E00
6F00
E380
C180
C180
C180
C180
C180
C180
C180
C180
E380
7B00
3A00
ENDCHAR
STARTCHAR 159
ENCODING 159
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
DF80
DF80
C180
C180
C180
C180
C180
C180
C180
C180
C180
C180
C180
8100
ENDCHAR
STARTCHAR 160
ENCODING 160
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
FE00
FF00
C380
C180
C180
C380
DF00
DE00
C000
C000
C000
C000
C000
8000
ENDCHAR
STARTCHAR 161
ENCODING 161
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
0E00
3F00
7380
6180
C000
C000
C000
C000
C000
C000
6000
7000
3F80
0F00
ENDCHAR
STARTCHAR 162
ENCODING 162
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
FF00
7F80
0000
0C00
0C00
0C00
0C00
0C00
0C00
0C00
0C00
0C00
0C00
0400
ENDCHAR
STARTCHAR 163
ENCODING 163
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
8100
C180
C180
C180
C180
7D80
3D80
0180
0180
0180
C180
E180
7F00
3E00
ENDCHAR
STARTCHAR 164
ENCODING 164
SWIDTH 792 0
DWIDTH 11 0
BBX 10 14 0 0
BITMAP
3F00
7F80
EDC0
CCC0
CCC0
EDC0
6D80
2D00
0C00
0C00
0C00
0C00
0C00
0400
ENDCHAR
STARTCHAR 165
ENCODING 165
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
C180
C180
C180
6300
6300
3200
3800
1C00
0E00
6700
6300
C180
C180
C180
ENDCHAR
STARTCHAR 166
ENCODING 166
SWIDTH 720 0
DWIDTH 10 0
BBX 10 15 0 -1
BITMAP
8200
C300
C300
C300
C300
C300
C300
C300
C300
C300
C300
C300
DF00
DF80
01C0
ENDCHAR
STARTCHAR 167
ENCODING 167
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
8100
C180
C180
C180
C180
C180
E180
7D80
3D80
0180
0180
0180
0180
0080
ENDCHAR
STARTCHAR 168
ENCODING 168
SWIDTH 792 0
DWIDTH 11 0
BBX 10 14 0 0
BITMAP
8080
C0C0
C0C0
C0C0
C8C0
CCC0
CCC0
CCC0
CCC0
CCC0
C4C0
C040
DF80
5FC0
ENDCHAR
STARTCHAR 169
ENCODING 169
SWIDTH 792 0
DWIDTH 11 0
BBX 11 15 0 -1
BITMAP
8080
C0C0
C0C0
C0C0
C8C0
CCC0
CCC0
CCC0
CCC0
CCC0
C4C0
C040
DF80
5FC0
00E0
ENDCHAR
STARTCHAR 170
ENCODING 170
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
E000
E000
6000
6000
6000
6000
6E00
6F00
6380
6180
6180
6380
7F00
3E00
ENDCHAR
STARTCHAR 171
ENCODING 171
SWIDTH 792 0
DWIDTH 11 0
BBX 10 14 0 0
BITMAP
8080
C0C0
C0C0
C0C0
C0C0
C0C0
DCC0
DEC0
C740
C340
C340
C740
FEC0
7CC0
ENDCHAR
STARTCHAR 172
ENCODING 172
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
8000
C000
C000
C000
C000
C000
DE00
DF00
C380
C180
C180
C380
FF00
FE00
ENDCHAR
STARTCHAR 173
ENCODING 173
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
3E00
7F00
E380
C180
C180
0180
1D80
1D80
0180
0180
C180
E380
7F00
3E00
ENDCHAR
STARTCHAR 174
ENCODING 174
SWIDTH 792 0
DWIDTH 11 0
BBX 10 14 0 0
BITMAP
4700
CF80
DDC0
D8C0
D8C0
D8C0
F8C0
F8C0
D8C0
D8C0
D8C0
DDC0
CF80
8700
ENDCHAR
STARTCHAR 175
ENCODING 175
SWIDTH 720 0
DWIDTH 10 0
BBX 9 14 0 0
BITMAP
3F80
7F80
E180
C180
C180
E180
7D80
3D80
1D80
3980
7180
E180
C180
8100
ENDCHAR
STARTCHAR 176
ENCODING 176
SWIDTH 648 0
DWIDTH 9 0
BBX 8 11 0 0
BITMAP
7C
7F
03
03
3B
7B
E3
C3
C7
FF
7B
ENDCHAR
STARTCHAR 177
ENCODING 177
SWIDTH 648 0
DWIDTH 9 0
BBX 8 11 0 0
BITMAP
07
1F
38
70
66
CF
C3
C3
E7
7E
3C
ENDCHAR
STARTCHAR 178
ENCODING 178
SWIDTH 648 0
DWIDTH 9 0
BBX 8 11 0 0
BITMAP
5C
DE
C6
C6
DC
DE
C3
C3
C7
DE
BC
ENDCHAR
STARTCHAR 179
ENCODING 179
SWIDTH 648 0
DWIDTH 9 0
BBX 8 11 0 0
BITMAP
FE
FF
C0
C0
C0
C0
C0
C0
C0
C0
80
ENDCHAR
STARTCHAR 180
ENCODING 180
SWIDTH 792 0
DWIDTH 11 0
BBX 10 11 0 0
BITMAP
1F80
1F80
1980
3180
3180
3180
0180
7FC0
FFC0
C0C0
C0C0
ENDCHAR
STARTCHAR 181
ENCODING 181
SWIDTH 648 0
DWIDTH 9 0
BBX 8 11 0 0
BITMAP
3C
7E
E7
C3
C3
DF
DE
C0
E3
7F
3E
ENDCHAR
STARTCHAR 182
ENCODING 182
SWIDTH 720 0
DWIDTH 10 0
BBX 9 11 0 0
BITMAP
4080
C980
C980
6B00
3600
3600
6B00
C980
C980
C980
8100
ENDCHAR
STARTCHAR 183
ENCODING 183
SWIDTH 648 0
DWIDTH 9 0
BBX 8 11 0 0
BITMAP
74
F6
C3
07
7E
3E
06
03
07
FE
7C
ENDCHAR
STARTCHAR 184
ENCODING 184
SWIDTH 648 0
DWIDTH 9 0
BBX 8 11 0 0
BITMAP
41
C3
C3
C7
CF
DF
DB
D3
C3
C3
82
ENDCHAR
STARTCHAR 185
ENCODING 185
SWIDTH 648 0
DWIDTH 9 0
BBX 8 11 0 0
BITMAP
59
DB
D3
C7
CF
DF
DB
D3
C3
C3
82
ENDCHAR
STARTCHAR 186
ENCODING 186
SWIDTH 648 0
DWIDTH 9 0
BBX 8 11 0 0
BITMAP
47
CF
CC
DC
D8
D8
D8
DC
CE
C7
43
ENDCHAR
STARTCHAR 187
ENCODING 187
SWIDTH 648 0
DWIDTH 9 0
BBX 8 11 0 0
BITMAP
1B
3B
73
E3
C3
C3
C3
C3
C3
C3
C3
ENDCHAR
STARTCHAR 188
ENCODING 188
SWIDTH 720 0
DWIDTH 10 0
BBX 9 11 0 0
BITMAP
4100
E380
F780
F780
D580
D580
D580
D580
C180
C180
8100
ENDCHAR
STARTCHAR 189
ENCODING 189
SWIDTH 648 0
DWIDTH 9 0
BBX 8 11 0 0
BITMAP
41
C3
C3
FB
FB
C3
C3
C3
C3
C3
82
ENDCHAR
STARTCHAR 190
ENCODING 190
SWIDTH 648 0
DWIDTH 9 0
BBX 8 11 0 0
BITMAP
34
76
E3
C3
C3
C3
C3
C3
E3
76
34
ENDCHAR
STARTCHAR 191
ENCODING 191
SWIDTH 648 0
DWIDTH 9 0
BBX 8 11 0 0
BITMAP
5F
DF
C3
C3
C3
C3
C3
C3
C3
C3
82
ENDCHAR
ENDFONT

В других размерах руского нет. Как напишите, миласти просим выкласть тут.

 

goodwind
Offline
Зарегистрирован: 11.09.2014

Благодарю, как сделаю - обязательно заделюсь

goodwind
Offline
Зарегистрирован: 11.09.2014

странно, отрисовал шрифт 6х9, залил в ардуино и получил вот такое: буквы пишутся через пробел

Причем, английские выглядят нормально.

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

значит не правильно в били шрифт. Насколько я знаю там в шрифтах у каждого символа задается его ширина - у вас она встала поумолчанию. Переделайте шрифт правильно.

goodwind
Offline
Зарегистрирован: 11.09.2014

Спасибо!

Вы были правы - проверил ширину символов, и у пустых она оказалась равна шести. Не знаю почему, но после того как я выставил им ширину 1, всё встало на свои места. Еще чуть причешу шрифт и выложу сюда

titovich
Offline
Зарегистрирован: 29.05.2013

Скорее всего процедура вывода строки не понимает юникод  и для нее строчка "Готов" выглядит как "*Г*о*т*о*в"

где * - первый байт двухбайтного символа в кодировке юникод.

Поэтому, когда ширина "непечатаемых" символов была равна ширине символа - эти * печатались как пробел. Когда Вы изменили их ширину на 1, они стали незаметными.

P.S. IMHO )))

hugoboss317
Offline
Зарегистрирован: 21.03.2013

Может вобще не то скажу, но IMHO ))).... Когдат подгонял вывод русских для экрана от нокиа 1280 (кодировка та же), также выводились с пробелом только не перед, а после русской буквы. На солько потом понял, после символа читаются и выводятся данные за пределами массива символов (шрифта) с шириной символа т.к. при загрузке в разные контроллеры или даже другой код с такой же функцией могли не пробелы выводится а "краказюки".  Указал номер последнего символа в массиве шрифта и если номер выводимого символа больше последнего, он игнорируется. Крайний "п" это 191. Всё что больше, return. И пошло всё поехало...

goodwind
Offline
Зарегистрирован: 11.09.2014

как мне показалось, там определенный код используется в качестве дефолтного символа. Когда все пустые сделал равными одному пикселю в ширину, то и проблема ушла. Хотя, разумеется, умнее было бы разобраться, но мне пока некогда

Залил fon файлы на дропбокс, может кому полезны будут. В архиве 6х9 и 6х10. Там пара символов еще добавлена служебных для интерфейса 3D-принтера, не стал их удалять.

 

 

m3xx
Offline
Зарегистрирован: 03.10.2014

NeiroN пишет:

/lib/pde.jar Настройки->Кодировка строк->[кодировка шрифта]

Товарищ NeiroN, меня заинтересовал ваш пост. Не смотря на то, что в описанной вами инструкции количество действий около 0, у меня не получилось повторить ваш подвиг.

Я занимаюсь тем же что и goodwind - руссификация LCD для 3D-принтера. И так же как у него возникла проблема с кодировкой. Путём небольших доработок кода получилось отобразить русские буквы без этих громадных пробелов между ними (коими являются спец символы русских букв в UTF-8), а так же верно выщитывать длины этих строк, что влияет на табуляцию в отображении. Но все же хотелось бы сделать красиво - иметь исходные строки в однобайтовой кодировке, чтобы можно было запутсить тот же самый механизм как и для латиницы.

Использую версию Arduino IDE 1.0.5 (тобишь как и у вас), скачал ваш pde.jar и заменил им одноименный в папке lib, в настройках появилось поле "Кодировка строк". Какие я только не ставил кодирвоки: и MS-DOS и KOI8-R и ASCII. Результат один и тот же - конечная строка так и остается в UTF-8.

Подкиньте, пожалуйста, мысль где и что я не так делаю. Спасибо за внимание.

goodwind
Offline
Зарегистрирован: 11.09.2014

Поделитесь решением проблемы с табуляцией, пожалуйста.. Все руки не дойдут разобраться

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

Может я не писал - оно не меняет кодировку скетча при его сохранениее, оно меняет его кодировку преред компиляцией. Шрифт тоже должен быть в этой кодировке. Скачайте лучше целиком мою версию иде, где все библиотеки http://yadi.sk/d/B-IHNu6QJdiCX

я использовал этот шрифт и думаю что он оптимален u8g.setFont(u8g_font_6x10e);  он уже скомпилирован и нет никаких пробелов, кодировка шрифта ISO-8859-5(вы спросите отчего же не CP-1251 - программа редактирования не поддерживала его)

 

m3xx
Offline
Зарегистрирован: 03.10.2014

По просьбе goodwind:

1. Первое наперво нужно изменить шрифты 6x9 и 6x10, которые сделал goodwind. А именно нужно сделать ширину всех символов 6 точек (будь то "точка", "пробел" или буква). Это объясняется тем, что длина любой отображаемой строки на дисплее должна быть одинаковой в независимости от содержимого. У вас, например, "восклицательный знак" занимает 2 или 3 точки. Спецсимволы, которые вы сделали шириной в 1 точку а на дисплее они отображались в самом начале пробелами, можно сделать как угодно, так как в итоге нашей целью является исключение этих кодов при выводе информации на LCD. Это умозаключение я сделал, когда распечатал всю латиницу, знаки и символы стандартным марлиновским шрифтом и своим акуляром оценил занимаемое пространство на дисплее каждым символом.

2. Далее делаем уже не раз обмусоленную операцию конвертирования bdf2u8g отредактированных шрифтов и идём в конец файла dogm_font_data_marlin.h и вставляем что-то типа токого текста:

#include "language.h"

#if LANGUAGE_CHOICE == 6
# include "u8g_font_6x9_cyrillic.h"
# define u8g_font_6x9		u8g_font_6x9_cyrillic

# include "u8g_font_6x10_cyrillic.h"
# define u8g_font_6x10_marlin	u8g_font_6x10_cyrillic
# define u8g_font_9x18		u8g_font_6x10_cyrillic
#endif // LANGUAGE_CHOICE

где u8g_font_6x9_cyrillic.h и u8g_font_6x10_cyrillic.h это заголовочные файлы где лежат массивы соответсвующих шрифтов. Я сделал подмену имён массивов с помощью макроопределений лишь с той и только с той целью, чтобы не бегать по скетчу и не искать где нужно поменять шрифты. А так в "language.h" поменял дефайн LANGUAGE_CHOICE и не паришься.

3. Самый ёмкий пункт. Тут пришлось переделать код в файле dogm_lcd_implementation.h. В нём очень часто встречается следующий код:

    while( (c = pgm_read_byte(pstr)) != '\0' )
    {
		u8g.print(c);
        pstr++;
        n--;
    }

Очевидно, что этот код выводит посимвольно строку на LCD дисплей. Имеено сдесь находится причина вывода пустых спецсимволов (пробелов), так как в кодировке UTF-8 русские буквы кодируются двумя байтами, где 1ый - это код страницы (кстати он никогда, вроде, не совпадает по значению с литинскими буквами) и 2ой - это сам код символа. Понятно, что программа не должна выводить спецсимволы. Так же нужно будет в этом файле переделать функцию расчета длины строки с учетом вышесказанного, т.к. действующая считает число однобайтовых символов в строке. Не буду вас утомлять теорией и кину листинг этого файла:

/**
 *dogm_lcd_implementation.h
 *
 *Graphics LCD implementation for 128x64 pixel LCDs by STB for ErikZalm/Marlin
 *Demonstrator: http://www.reprap.org/wiki/STB_Electronics
 *License: http://opensource.org/licenses/BSD-3-Clause
 *
 *With the use of:
 *u8glib by Oliver Kraus
 *http://code.google.com/p/u8glib/
 *License: http://opensource.org/licenses/BSD-3-Clause
 */


#ifndef ULTRA_LCD_IMPLEMENTATION_DOGM_H
#define ULTRA_LCD_IMPLEMENTATION_DOGM_H

/**
* Implementation of the LCD display routines for a DOGM128 graphic display. These are common LCD 128x64 pixel graphic displays.
**/

#ifdef ULTIPANEL
#define BLEN_A 0
#define BLEN_B 1
#define BLEN_C 2
#define EN_A (1<<BLEN_A)
#define EN_B (1<<BLEN_B)
#define EN_C (1<<BLEN_C)
#define encrot0 0
#define encrot1 2
#define encrot2 3
#define encrot3 1
#define LCD_CLICKED (buttons&EN_C)
#endif

#include <U8glib.h>
#include "DOGMbitmaps.h"
#include "dogm_font_data_marlin.h"
#include "ultralcd.h"
#include "ultralcd_st7920_u8glib_rrd.h"


/* Russian language not supported yet, needs custom font

#if LANGUAGE_CHOICE == 6
#include "LiquidCrystalRus.h"
#define LCD_CLASS LiquidCrystalRus
#else
#include <LiquidCrystal.h>
#define LCD_CLASS LiquidCrystal
#endif
*/

// DOGM parameters (size in pixels)
#define DOG_CHAR_WIDTH			6
#define DOG_CHAR_HEIGHT			12
#define DOG_CHAR_WIDTH_LARGE	9
#define DOG_CHAR_HEIGHT_LARGE	18


#define START_ROW				0


/* Custom characters defined in font font_6x10_marlin.c */
#if LANGUAGE_CHOICE == 6
# define LCD_STR_DEGREE     "\xC1"
#else
# define LCD_STR_DEGREE     "\xB0"
#endif
#define LCD_STR_REFRESH     "\xF8"
#define LCD_STR_FOLDER      "\xF9"


#define LCD_STR_ARROW_RIGHT "\xFA"
#define LCD_STR_UPLEVEL     "\xFB"
#define LCD_STR_CLOCK       "\xFC"
#define LCD_STR_FEEDRATE    "\xFD"
#define LCD_STR_BEDTEMP     "\xFE"
#define LCD_STR_THERMOMETER "\xFF"

#define FONT_STATUSMENU	u8g_font_6x9

int lcd_contrast;

// LCD selection
#ifdef U8GLIB_ST7920
//U8GLIB_ST7920_128X64_RRD u8g(0,0,0);
U8GLIB_ST7920_128X64_RRD u8g(0);
#elif defined(MAKRPANEL)
// The MaKrPanel display, ST7565 controller as well
U8GLIB_NHD_C12864 u8g(DOGLCD_CS, DOGLCD_A0);
#else
// for regular DOGM128 display with HW-SPI
U8GLIB_DOGM128 u8g(DOGLCD_CS, DOGLCD_A0);	// HW-SPI Com: CS, A0
#endif

static void lcd_implementation_init()
{
#ifdef LCD_PIN_BL
	pinMode(LCD_PIN_BL, OUTPUT);	// Enable LCD backlight
	digitalWrite(LCD_PIN_BL, HIGH);
#endif

        u8g.setContrast(lcd_contrast);	
	//  Uncomment this if you have the first generation (V1.10) of STBs board
	//  pinMode(17, OUTPUT);	// Enable LCD backlight
	//  digitalWrite(17, HIGH);
	
	u8g.firstPage();
	do {
		u8g.setFont(u8g_font_6x10_marlin);
		u8g.setColorIndex(1);
		u8g.drawBox (0, 0, u8g.getWidth(), u8g.getHeight());
		u8g.setColorIndex(1);
	   } while( u8g.nextPage() );

#ifdef LCD_SCREEN_ROT_90
	u8g.setRot90();	// Rotate screen by 90°
#endif

#ifdef LCD_SCREEN_ROT_180
	u8g.setRot180();	// Rotate screen by 180°
#endif

#ifdef LCD_SCREEN_ROT_270
	u8g.setRot270();	// Rotate screen by 270°
#endif

   
	u8g.firstPage();
	do {
			// RepRap init bmp
			u8g.drawBitmapP(0,0,START_BMPBYTEWIDTH,START_BMPHEIGHT,start_bmp);
			// Welcome message
			u8g.setFont(u8g_font_6x10_marlin);
			u8g.drawStr(62,10,"MARLIN"); 
			u8g.setFont(u8g_font_5x8);
			u8g.drawStr(62,19,"V1.0.0 RC2-mm");
			u8g.setFont(u8g_font_6x10_marlin);
			u8g.drawStr(62,28,"by 3DArt");
			u8g.drawStr(62,41,"DOGM128 LCD");
			u8g.setFont(u8g_font_5x8);
			u8g.drawStr(62,48,"enhancements");
			u8g.setFont(u8g_font_5x8);
			u8g.drawStr(62,55,"by STB, MM");
			u8g.drawStr(62,61,"uses u");
			u8g.drawStr90(92,57,"8");
			u8g.drawStr(100,61,"glib");
	   } while( u8g.nextPage() );
}

static void lcd_implementation_clear()
{
// NO NEED TO IMPLEMENT LIKE SO. Picture loop automatically clears the display.
//
// Check this article: http://arduino.cc/forum/index.php?topic=91395.25;wap2
//
//	u8g.firstPage();
//	do {	
//			u8g.setColorIndex(0);
//			u8g.drawBox (0, 0, u8g.getWidth(), u8g.getHeight());
//			u8g.setColorIndex(1);
//		} while( u8g.nextPage() );
}

/* Arduino < 1.0.0 is missing a function to print PROGMEM strings, so we need to implement our own */
static void lcd_printPGM(const char* str)
{
    char c;
    while((c = pgm_read_byte(str++)) != '\0')
    {
			u8g.print(c);
    }
}

#define DISPLAY_SYMBOL(ch) (((ch) >= 0x20 && (ch) <= 0xC1) || (ch) >= 0xF8)

static char lcd_print_string(const char* str)
{
    char c, count = 0;
    
    while((c = pgm_read_byte(str++)) != '\0')
      if (DISPLAY_SYMBOL((unsigned char)c))
      {
        u8g.print(c);
        count++;
      }
    
    return count;
}

static char strlen_(const char* str)
{
    char c, count = 0;
    
    while((c = pgm_read_byte(str++)) != '\0')
      if (DISPLAY_SYMBOL((unsigned char)c))
        count++;
    
    return count;
}

static void lcd_implementation_status_screen()
{

 static unsigned char fan_rot = 0;
 
 u8g.setColorIndex(1);	// black on white
 
 // Symbols menu graphics, animated fan
 if ((blink % 2) &&  fanSpeed )	u8g.drawBitmapP(9,1,STATUS_SCREENBYTEWIDTH,STATUS_SCREENHEIGHT,status_screen0_bmp);
	else u8g.drawBitmapP(9,1,STATUS_SCREENBYTEWIDTH,STATUS_SCREENHEIGHT,status_screen1_bmp);
 
 #ifdef SDSUPPORT
 //SD Card Symbol
 u8g.drawBox(42,42,8,7);
 u8g.drawBox(50,44,2,5);
 u8g.drawFrame(42,49,10,4);
 u8g.drawPixel(50,43);
 // Progress bar
 u8g.drawFrame(54,49,73,4);
 
 // SD Card Progress bar and clock
 u8g.setFont(FONT_STATUSMENU);
 
 if (IS_SD_PRINTING)
   {
	// Progress bar
	u8g.drawBox(55,50, (unsigned int)( (71 * card.percentDone())/100) ,2);
   }
    else {
			// do nothing
		 }
 
 u8g.setPrintPos(80,47);
 if(starttime != 0)
    {
        uint16_t time = millis()/60000 - starttime/60000;

		u8g.print(itostr2(time/60));
		u8g.print(':');
		u8g.print(itostr2(time%60));
    }else{
			lcd_printPGM(PSTR("--:--"));
		 }
 #endif
 
 // Extruder 1
 u8g.setFont(FONT_STATUSMENU);
 u8g.setPrintPos(6,6);
 u8g.print(itostr3(int(degTargetHotend(0) + 0.5)));
 lcd_printPGM(PSTR(LCD_STR_DEGREE " "));
 u8g.setPrintPos(6,27);
 u8g.print(itostr3(int(degHotend(0) + 0.5)));
 lcd_printPGM(PSTR(LCD_STR_DEGREE " "));
 if (!isHeatingHotend(0)) u8g.drawBox(13,17,2,2);
	else
		{
		 u8g.setColorIndex(0);	// white on black
		 u8g.drawBox(13,17,2,2);
		 u8g.setColorIndex(1);	// black on white
		}
 
 // Extruder 2
 u8g.setFont(FONT_STATUSMENU);
 #if EXTRUDERS > 1
 u8g.setPrintPos(31,6);
 u8g.print(itostr3(int(degTargetHotend(1) + 0.5)));
 lcd_printPGM(PSTR(LCD_STR_DEGREE " "));
 u8g.setPrintPos(31,27);
 u8g.print(itostr3(int(degHotend(1) + 0.5)));
 lcd_printPGM(PSTR(LCD_STR_DEGREE " "));
 if (!isHeatingHotend(1)) u8g.drawBox(38,17,2,2);
	else
		{
		 u8g.setColorIndex(0);	// white on black
		 u8g.drawBox(38,17,2,2);
		 u8g.setColorIndex(1);	// black on white
		}
 #else
 u8g.setPrintPos(31,27);
 u8g.print("---");
 #endif
 
 // Extruder 3
 u8g.setFont(FONT_STATUSMENU);
 # if EXTRUDERS > 2
 u8g.setPrintPos(55,6);
 u8g.print(itostr3(int(degTargetHotend(2) + 0.5)));
 lcd_printPGM(PSTR(LCD_STR_DEGREE " "));
 u8g.setPrintPos(55,27);
 u8g.print(itostr3(int(degHotend(2) + 0.5)));
 lcd_printPGM(PSTR(LCD_STR_DEGREE " "));
 if (!isHeatingHotend(2)) u8g.drawBox(62,17,2,2);
	else
		{
		 u8g.setColorIndex(0);	// white on black
		 u8g.drawBox(62,17,2,2);
		 u8g.setColorIndex(1);	// black on white
		}
 #else
 u8g.setPrintPos(55,27);
 u8g.print("---");
 #endif
 
 // Heatbed
 u8g.setFont(FONT_STATUSMENU);
 u8g.setPrintPos(81,6);
 u8g.print(itostr3(int(degTargetBed() + 0.5)));
 lcd_printPGM(PSTR(LCD_STR_DEGREE " "));
 u8g.setPrintPos(81,27);
 u8g.print(itostr3(int(degBed() + 0.5)));
 lcd_printPGM(PSTR(LCD_STR_DEGREE " "));
 if (!isHeatingBed()) u8g.drawBox(88,18,2,2);
	else
		{
		 u8g.setColorIndex(0);	// white on black
		 u8g.drawBox(88,18,2,2);
		 u8g.setColorIndex(1);	// black on white
		}
 
 // Fan
 u8g.setFont(FONT_STATUSMENU);
 u8g.setPrintPos(104,27);
 #if defined(FAN_PIN) && FAN_PIN > -1
 u8g.print(itostr3(int((fanSpeed*100)/256 + 1)));
 u8g.print("%");
 #else
 u8g.print("---");
 #endif
 
 
 // X, Y, Z-Coordinates
 u8g.setFont(FONT_STATUSMENU);
 u8g.drawBox(0,29,128,10);
 u8g.setColorIndex(0);	// white on black
 u8g.setPrintPos(2,37);
 u8g.print("X");
 u8g.drawPixel(8,33);
 u8g.drawPixel(8,35);
 u8g.setPrintPos(10,37);
 u8g.print(ftostr31ns(current_position[X_AXIS]));
 u8g.setPrintPos(43,37);
 lcd_printPGM(PSTR("Y"));
 u8g.drawPixel(49,33);
 u8g.drawPixel(49,35);
 u8g.setPrintPos(51,37);
 u8g.print(ftostr31ns(current_position[Y_AXIS]));
 u8g.setPrintPos(83,37);
 u8g.print("Z");
 u8g.drawPixel(89,33);
 u8g.drawPixel(89,35);
 u8g.setPrintPos(91,37);
 u8g.print(ftostr31(current_position[Z_AXIS]));
 u8g.setColorIndex(1);	// black on white
 
 // Feedrate
 u8g.setFont(u8g_font_6x10_marlin);
 u8g.setPrintPos(3,49);
 u8g.print(LCD_STR_FEEDRATE[0]);
 u8g.setFont(FONT_STATUSMENU);
 u8g.setPrintPos(12,48);
 u8g.print(itostr3(feedmultiply));
 u8g.print('%');

 // Status line
 u8g.setFont(FONT_STATUSMENU);
 u8g.setPrintPos(0,61);
 u8g.print(lcd_status_message);

}

static void lcd_implementation_drawmenu_generic(uint8_t row, const char* pstr, char pre_char, char post_char)
{


  uint8_t n = LCD_WIDTH - 1 - 2;

  if ((pre_char == '>') || (pre_char == LCD_STR_UPLEVEL[0] ))
  {
    u8g.setColorIndex(1);		// black on white
    u8g.drawBox (0, row*DOG_CHAR_HEIGHT + 3, 128, DOG_CHAR_HEIGHT);
    u8g.setColorIndex(0);		// following text must be white on black
  } else u8g.setColorIndex(1); // unmarked text is black on white

  u8g.setPrintPos(0 * DOG_CHAR_WIDTH, (row + 1) * DOG_CHAR_HEIGHT);
  if (pre_char != '>') u8g.print(pre_char); else u8g.print(' ');	// Row selector is obsolete

  n -= lcd_print_string(pstr);
  while (n--) u8g.print(' ');









  u8g.print(post_char);
  u8g.print(' ');
  
  u8g.setColorIndex(1);		// restore settings to black on white
  
  return;
}

static void lcd_implementation_drawmenu_setting_edit_generic(uint8_t row, const char* pstr, char pre_char, char* data)
{
  static unsigned int fkt_cnt = 0;

  uint8_t n = LCD_WIDTH - 1 - 2 - strlen(data);
		
  u8g.setPrintPos(0 * DOG_CHAR_WIDTH, (row + 1) * DOG_CHAR_HEIGHT);
  u8g.print(pre_char);

  n -= lcd_print_string(pstr);
  u8g.print(':');
  
  while(n--) u8g.print(' ');










  u8g.print(data);
  
  return;
}

static void lcd_implementation_drawmenu_setting_edit_generic_P(uint8_t row, const char* pstr, char pre_char, const char* data)
{
  uint8_t n = LCD_WIDTH - 1 - 2 - strlen_(data);


  u8g.setPrintPos(0 * DOG_CHAR_WIDTH, (row + 1) * DOG_CHAR_HEIGHT);
  u8g.print(pre_char);
  
  n -= lcd_print_string(pstr);
  u8g.print(':');

  while(n--) u8g.print(' ');
  lcd_print_string(data);
  
  return;








}

#define lcd_implementation_drawmenu_setting_edit_int3_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', itostr3(*(data)))
#define lcd_implementation_drawmenu_setting_edit_int3(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', itostr3(*(data)))
#define lcd_implementation_drawmenu_setting_edit_float3_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr3(*(data)))
#define lcd_implementation_drawmenu_setting_edit_float3(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr3(*(data)))
#define lcd_implementation_drawmenu_setting_edit_float32_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr32(*(data)))
#define lcd_implementation_drawmenu_setting_edit_float32(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr32(*(data)))
#define lcd_implementation_drawmenu_setting_edit_float5_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr5(*(data)))
#define lcd_implementation_drawmenu_setting_edit_float5(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr5(*(data)))
#define lcd_implementation_drawmenu_setting_edit_float52_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr52(*(data)))
#define lcd_implementation_drawmenu_setting_edit_float52(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr52(*(data)))
#define lcd_implementation_drawmenu_setting_edit_float51_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr51(*(data)))
#define lcd_implementation_drawmenu_setting_edit_float51(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr51(*(data)))
#define lcd_implementation_drawmenu_setting_edit_long5_selected(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr5(*(data)))
#define lcd_implementation_drawmenu_setting_edit_long5(row, pstr, pstr2, data, minValue, maxValue) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr5(*(data)))
#define lcd_implementation_drawmenu_setting_edit_bool_selected(row, pstr, pstr2, data) lcd_implementation_drawmenu_setting_edit_generic_P(row, pstr, '>', (*(data))?PSTR(MSG_ON):PSTR(MSG_OFF))
#define lcd_implementation_drawmenu_setting_edit_bool(row, pstr, pstr2, data) lcd_implementation_drawmenu_setting_edit_generic_P(row, pstr, ' ', (*(data))?PSTR(MSG_ON):PSTR(MSG_OFF))

//Add version for callback functions
#define lcd_implementation_drawmenu_setting_edit_callback_int3_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', itostr3(*(data)))
#define lcd_implementation_drawmenu_setting_edit_callback_int3(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', itostr3(*(data)))
#define lcd_implementation_drawmenu_setting_edit_callback_float3_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr3(*(data)))
#define lcd_implementation_drawmenu_setting_edit_callback_float3(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr3(*(data)))
#define lcd_implementation_drawmenu_setting_edit_callback_float32_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr32(*(data)))
#define lcd_implementation_drawmenu_setting_edit_callback_float32(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr32(*(data)))
#define lcd_implementation_drawmenu_setting_edit_callback_float5_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr5(*(data)))
#define lcd_implementation_drawmenu_setting_edit_callback_float5(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr5(*(data)))
#define lcd_implementation_drawmenu_setting_edit_callback_float52_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr52(*(data)))
#define lcd_implementation_drawmenu_setting_edit_callback_float52(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr52(*(data)))
#define lcd_implementation_drawmenu_setting_edit_callback_float51_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr51(*(data)))
#define lcd_implementation_drawmenu_setting_edit_callback_float51(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr51(*(data)))
#define lcd_implementation_drawmenu_setting_edit_callback_long5_selected(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, '>', ftostr5(*(data)))
#define lcd_implementation_drawmenu_setting_edit_callback_long5(row, pstr, pstr2, data, minValue, maxValue, callback) lcd_implementation_drawmenu_setting_edit_generic(row, pstr, ' ', ftostr5(*(data)))
#define lcd_implementation_drawmenu_setting_edit_callback_bool_selected(row, pstr, pstr2, data, callback) lcd_implementation_drawmenu_setting_edit_generic_P(row, pstr, '>', (*(data))?PSTR(MSG_ON):PSTR(MSG_OFF))
#define lcd_implementation_drawmenu_setting_edit_callback_bool(row, pstr, pstr2, data, callback) lcd_implementation_drawmenu_setting_edit_generic_P(row, pstr, ' ', (*(data))?PSTR(MSG_ON):PSTR(MSG_OFF))

void lcd_implementation_drawedit(const char* pstr, char* value)
{
		u8g.setPrintPos(0 * DOG_CHAR_WIDTH_LARGE, (u8g.getHeight() - 1 - DOG_CHAR_HEIGHT_LARGE) - (1 * DOG_CHAR_HEIGHT_LARGE) - START_ROW );
		u8g.setFont(u8g_font_9x18);
		lcd_printPGM(pstr);
		u8g.print(':');
		u8g.setPrintPos((14 - strlen(value)) * DOG_CHAR_WIDTH_LARGE, (u8g.getHeight() - 1 - DOG_CHAR_HEIGHT_LARGE) - (1 * DOG_CHAR_HEIGHT_LARGE) - START_ROW );
		u8g.print(value);
}

static void lcd_implementation_drawmenu_sdfile_selected(uint8_t row, const char* pstr, const char* filename, char* longFilename)
{
    char c;
    uint8_t n = LCD_WIDTH - 1;

    if (longFilename[0] != '\0')
    {
        filename = longFilename;
        longFilename[LCD_WIDTH-1] = '\0';
    }

		u8g.setColorIndex(1);		// black on white
		u8g.drawBox (0, row*DOG_CHAR_HEIGHT + 3, 128, DOG_CHAR_HEIGHT);
		u8g.setColorIndex(0);		// following text must be white on black
		u8g.setPrintPos(0 * DOG_CHAR_WIDTH, (row + 1) * DOG_CHAR_HEIGHT);
		u8g.print(' ');	// Indent by 1 char
	   
    while((c = *filename) != '\0')
    {
		u8g.print(c);
        filename++;
        n--;
    }
    while(n--){
					u8g.print(' ');
			   }
	u8g.setColorIndex(1);		// black on white
}

static void lcd_implementation_drawmenu_sdfile(uint8_t row, const char* pstr, const char* filename, char* longFilename)
{
    char c;
    uint8_t n = LCD_WIDTH - 1;

    if (longFilename[0] != '\0')
    {
        filename = longFilename;
        longFilename[LCD_WIDTH-1] = '\0';
    }

		u8g.setPrintPos(0 * DOG_CHAR_WIDTH, (row + 1) * DOG_CHAR_HEIGHT);
		u8g.print(' ');
		
while((c = *filename) != '\0')
    {
			u8g.print(c);
		
        filename++;
        n--;
    }
    while(n--){
					u8g.print(' ');
			   }

}

static void lcd_implementation_drawmenu_sddirectory_selected(uint8_t row, const char* pstr, const char* filename, char* longFilename)
{
    char c;
    uint8_t n = LCD_WIDTH - 2;
		
    if (longFilename[0] != '\0')
    {
        filename = longFilename;
        longFilename[LCD_WIDTH-2] = '\0';
    }
		u8g.setColorIndex(1);		// black on white
		u8g.drawBox (0, row*DOG_CHAR_HEIGHT + 3, 128, DOG_CHAR_HEIGHT);
		u8g.setColorIndex(0);		// following text must be white on black
		u8g.setPrintPos(0 * DOG_CHAR_WIDTH, (row + 1) * DOG_CHAR_HEIGHT);
		u8g.print(' ');	// Indent by 1 char
		u8g.print(LCD_STR_FOLDER[0]);		
	   
    while((c = *filename) != '\0')
    {
			u8g.print(c);
		
        filename++;
        n--;
    }
    while(n--){
					u8g.print(' ');
			   }
	u8g.setColorIndex(1);		// black on white
}

static void lcd_implementation_drawmenu_sddirectory(uint8_t row, const char* pstr, const char* filename, char* longFilename)
{
    char c;
    uint8_t n = LCD_WIDTH - 2;

    if (longFilename[0] != '\0')
    {
        filename = longFilename;
        longFilename[LCD_WIDTH-2] = '\0';
    }

		u8g.setPrintPos(0 * DOG_CHAR_WIDTH, (row + 1) * DOG_CHAR_HEIGHT);
		u8g.print(' ');
		u8g.print(LCD_STR_FOLDER[0]);

    while((c = *filename) != '\0')
    {
			u8g.print(c);
		
        filename++;
        n--;
    }
    while(n--){
					u8g.print(' ');
			   }
}

#define lcd_implementation_drawmenu_back_selected(row, pstr, data) lcd_implementation_drawmenu_generic(row, pstr, LCD_STR_UPLEVEL[0], LCD_STR_UPLEVEL[0])
#define lcd_implementation_drawmenu_back(row, pstr, data) lcd_implementation_drawmenu_generic(row, pstr, ' ', LCD_STR_UPLEVEL[0])
#define lcd_implementation_drawmenu_submenu_selected(row, pstr, data) lcd_implementation_drawmenu_generic(row, pstr, '>', LCD_STR_ARROW_RIGHT[0])
#define lcd_implementation_drawmenu_submenu(row, pstr, data) lcd_implementation_drawmenu_generic(row, pstr, ' ', LCD_STR_ARROW_RIGHT[0])
#define lcd_implementation_drawmenu_gcode_selected(row, pstr, gcode) lcd_implementation_drawmenu_generic(row, pstr, '>', ' ')
#define lcd_implementation_drawmenu_gcode(row, pstr, gcode) lcd_implementation_drawmenu_generic(row, pstr, ' ', ' ')
#define lcd_implementation_drawmenu_function_selected(row, pstr, data) lcd_implementation_drawmenu_generic(row, pstr, '>', ' ')
#define lcd_implementation_drawmenu_function(row, pstr, data) lcd_implementation_drawmenu_generic(row, pstr, ' ', ' ')

static void lcd_implementation_quick_feedback()
{

#if BEEPER > -1
    SET_OUTPUT(BEEPER);
    for(int8_t i=0;i<10;i++)
    {
		WRITE(BEEPER,HIGH);
		delay(3);
		WRITE(BEEPER,LOW);
		delay(3);
    }
#endif
}
#endif//ULTRA_LCD_IMPLEMENTATION_DOGM_H


Итог: Все это конечно не плохо, но сам подход ведёт к большому количеству доработок кода (как уже существующего так и добавляемого). Так, например, изменения которые мы сделали они каснулись только меню. А отображение строк на стартовой странице экрана также остается с "пробелами" между буквами ("*Г*о*т*о*в"). Можно и тут что-нибудь придумать. Но надо мыслить универсально! Именно поэтому я не считаю этот способ хорошим решением проблемы руссификации. А склоняюсь к методу, который предложил "NeiroN".

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

Кстати поковырявшись в редакторе FontForge нашол как добавить(Encoding->Add encoding Name ...) кодировки мелкомягких называются "windows-1251" и "cp866" - теперь можно запилить шрифты русские и в этих кодировках. Кстати строки выводимые в сериал(веб интерфейс, запись в файлы) будут в них же(потому что скетч перед заливкой конвертится в них), вот только "Монитор порта" их не съест, ну можно любым другим терминалом.

Mephistt
Offline
Зарегистрирован: 15.10.2014

NeiroN пишет:

NeiroN пишет:

Выкладывать пока рано - не тестировал.

Протестировал! Все работает как Запланировано

/lib/pde.jar Настройки->Кодировка строк->[кодировка шрифта]

PROFFIT!!!

Специально зарегистрировался, чтобы сказать спасибо.

Спасибо.

m3xx
Offline
Зарегистрирован: 03.10.2014

Так и не получилось по NeiroN'овски сделать. Вот взять, например, такой код:

char lcd_status_message[20] = "АБВГДЕЖЗИКЛМН";

Объявлен однобайтовый массив размером в 20 символов и тутже проинициализировали его 13 символами. С учетом применения либы pde.jar by NeiroN, которая должна перед компиляцией текст "АБВГДЕЖЗИКЛМН" из UTF-8 перевести в указанную мною однобайтовую кодировку, компилятор выдает ошибку вида: инициализируемая строка слишком велика для объявленного массива.

Я решил не тратить время на поиск особенностей своей стреды, а решил на корню решить проблему - сохранять текст сразу в нужной мне кодировке. Я месяц как уже хотел перейти с Arduino IDE на Eclipse c плагином для работы с AVR микроконтроллерами. А тут ещё один лишний повод сделать это. Надо сказать пришлось немного подза***ться, но результат стоил стараний - удобство, быстрота, комфорт при работе с разными кодировками. В итоге взял за основу Windows-1251, налобал шрифт для неё в *.bdf формате, сконвертил, скомпилил, зашил и вот результат:

Full Graphic Smart ControllerFull Graphic Smart Controller

JerryLutor
Offline
Зарегистрирован: 13.11.2014

Не поделетесь файликами для русскикации прошивки?

temperator
Offline
Зарегистрирован: 13.11.2014

И мне, пожалуйста =)

hugoboss317
Offline
Зарегистрирован: 21.03.2013

Что значит "для руссификации прошивки"? Просмотрите тему сначала. Уже всё выложили.

temperator
Offline
Зарегистрирован: 13.11.2014

Сорри. Но просто мои познания далеки от топик стартера.

А свой Мендель русифицировать хочеться. (заводской дисплей 12864)

Я бы была признательна за готовые файлы, которые необходимо поменять в прошивке чтобы получился русский шрифт как на скрине выше. 

Так что мне если можно, мне именно "файликом". Пиво или шоколадку в качестве благодарности гарантирую ;)

 
faraddin
Offline
Зарегистрирован: 11.08.2013

Офтоп! Вот интересно, осенне - весеннее увеличение числа девушек, резко увлекшихся ардуоной как то связано с приближающейся сессией?

Kлапаyций 99.99
Offline
Зарегистрирован: 11.10.2014

faraddin пишет:

Офтоп! Вот интересно, осенне - весеннее увеличение числа девушек, резко увлекшихся ардуоной как то связано с приближающейся сессией?

а, мне уже и не интересно, почему буквы, сцуко, "русские" - в свете чудеснога спасения хуйлом Крыма от бендеровцев, уже не удивляюсь врождённому идиотизму "рускага народа".

hugoboss317
Offline
Зарегистрирован: 21.03.2013

temperator пишет:

Сорри. Но просто мои познания далеки от топик стартера.

А свой Мендель русифицировать хочеться. (заводской дисплей 12864)

Я бы была признательна за готовые файлы, которые необходимо поменять в прошивке чтобы получился русский шрифт как на скрине выше. 

Так что мне если можно, мне именно "файликом". Пиво или шоколадку в качестве благодарности гарантирую ;)

 

Парни, ну вы реально как здрасте среди ночи. Какой дисплей? Синий с белыми квадратиками или всёж на вышеобсуждаемом контроллере?

В какой Вы прошивке и что собрались менять и в чём именно Вы слабы?

Наверное Вы думаете что существует некий файл, который можно просто загрузить в экранчик как то подключив его к компьютеру и он сразу скажет - " О-о-о-о, ПРИВЕТ МИР!" ну и в таком духе? Нет.

Я надеюсь Ваши познания достаточны чтоб уметь читать? Уверен что да. Прочтите Всю тему сначала, уж как тут я выносил мощзг форумчанам и тому же засранцу Клапуцию, и как они всё это мне разжували, по моему детальней некуда. Вы просто примерно поймёте что русские символы не просто отдельный файлик, а целый ритуал и в то же время мелочь, приятная мелочь, особенно когда сам нарисовал.

hugoboss317
Offline
Зарегистрирован: 21.03.2013

P.S. Извиняюсь за "Парни",окончание глагола "былА" не сразу увидел.

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

Я уже где-то кидал ссылку на "свою" среду целиком, со всеми нужными и ненужными библиотеками, тем что я пишу для развлечения тренировки мозгов

hugoboss317
Offline
Зарегистрирован: 21.03.2013

Да, так и есть. В этой же теме выше. Я ж не просто так посылаю в начало...

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

Надо заняться и сконвертировать все шрифты в windows-1251 кодировку, чтобы вместо дополнительных символов там была кириллица. один фиг памяти столько же занимают.

temperator
Offline
Зарегистрирован: 13.11.2014

Сорри, если кого задела или обидела ;(

Экран вот такой: http://www.elecrow.com/12864-smart-lcd-controller-with-adapter-for-reprap-ramps-14-p-1095.html

Прошивка: Marlin

Принтер: Prusa I2 Mendel 

 

Ссылку на среду видела. Спасибо. Просто файлов Марлина там не нашла. Поэтому и спросила.

Да. реально полагала, что есть какой-то файлик вроде Configuration.h или language.h в котором хранится русский шрифт. И считала что кому-то не жалко ими поделиться.

hugoboss317
Offline
Зарегистрирован: 21.03.2013

Так с этого надо было начинать. Тогда стучите к m3xx.

И я тоже оффтоп. Не пойму, вы все что 3Д принтер почастям собираете чтоли? 

Kлапаyций 99.99
Offline
Зарегистрирован: 11.10.2014

стУдентЫ, колитесь - в каком универе лаба с принтером и "рускими буквами"?

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

Меня давно терзает вопрос  - "в каком универе работает пухлявый?" - полюбому это он задал детишкам)))

temperator
Offline
Зарегистрирован: 13.11.2014

hugoboss317 пишет:

Так с этого надо было начинать. Тогда стучите к m3xx.

И я тоже оффтоп. Не пойму, вы все что 3Д принтер почастям собираете чтоли? 

1) В теме не отвечает. А как в личку ему стукнуть?

2) нет. Покупаем в сборе в Китае, а после получения хочеться чтобы принтер заговорил на великом и могучем...

temperator
Offline
Зарегистрирован: 13.11.2014

m3xx пишет:

 скомпилил, зашил и вот результат:

Full Graphic Smart ControllerFull Graphic Smart Controller

Куда тащить шоколадку? =)

m3xx
Offline
Зарегистрирован: 03.10.2014

temperator, у меня не всегда есть возможность попасть на форум, поэтому я могу ответить не сразу. К вашему сожалению это не один файлик, а целая последовательность действий. Мои результы были получины при помощи: Eclipse IDE + AVR Plugin, создания собственных шрифтов для кодировки в которой я пишу русский текст (в моём случае это Windows-2151), доработки кода в 2-3 файлах + создание новых. Если в целом смотреть на задачу руссификации графического дисплея,то у вас есть 2 выхода: пойти по пути NeiroN (работая в стандартной среде Arduino IDE с его либой, которая перед компиляцией конвертит текст из стандартной ардуиновской кодировки UTF-8 в ту, для которой у вас есть шрифты), либо как я - поставить Eclipse IDE (настроив его под AVR) и уже работать в той кодировке, под которую вы заточили свои шрифты. И в том и в другом случае предётся:

0. Создать шрифты для своей кодировки в bdf-формате, как это, например, было уже сделано goodwind'ом и сконвертировать их в u8g формат при помощи bdf2u8g (все это уже было)

1. Заменить ими шрифты прописанные в файле dogm_font_data_marlin.h. Я не стал менять стандартный марлиновский шрифт, поэтому новые шрифты я сделал в других файлах, а в этом - я лишь добавил концовочку, которая в случая компиляции английской прошивки использует марлиновски шрифт, а в случае русской - собственносделанный (смотрите мои предыдущие пасты).

2. Ещё я вынес русский перевод из language.h в отдельный файл с той целью, чтобы language.h редактировать в UTF-8 а русский текст в Windows-1251. Если идти по пути NeiroN'а, то этот пункт не нужно выполнять.

По какому пути вам пойти - выбирайте сами.

hugoboss317
Offline
Зарегистрирован: 21.03.2013

Разрешите предугадать реаакцию temperator. я непоняла не единого слова...

По всей видимости предсавление следующее:

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

temperator
Offline
Зарегистрирован: 13.11.2014

hugoboss317 пишет:

Разрешите предугадать реаакцию temperator. я непоняла не единого слова...

По всей видимости предсавление следующее:

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

Примерно так и есть =)

m3xx пишет:

temperator, у меня не всегда есть возможность попасть на форум, поэтому я могу ответить не сразу. К вашему сожалению это не один файлик, а целая последовательность действий. Мои результы были получины при помощи: Eclipse IDE + AVR Plugin, создания собственных шрифтов для кодировки в которой я пишу русский текст (в моём случае это Windows-2151), доработки кода в 2-3 файлах + создание новых. Если в целом смотреть на задачу руссификации графического дисплея,то у вас есть 2 выхода: пойти по пути NeiroN (работая в стандартной среде Arduino IDE с его либой, которая перед компиляцией конвертит текст из стандартной ардуиновской кодировки UTF-8 в ту, для которой у вас есть шрифты), либо как я - поставить Eclipse IDE (настроив его под AVR) и уже работать в той кодировке, под которую вы заточили свои шрифты. И в том и в другом случае предётся:

0. Создать шрифты для своей кодировки в bdf-формате, как это, например, было уже сделано goodwind'ом и сконвертировать их в u8g формат при помощи bdf2u8g (все это уже было)

1. Заменить ими шрифты прописанные в файле dogm_font_data_marlin.h. Я не стал менять стандартный марлиновский шрифт, поэтому новые шрифты я сделал в других файлах, а в этом - я лишь добавил концовочку, которая в случая компиляции английской прошивки использует марлиновски шрифт, а в случае русской - собственносделанный (смотрите мои предыдущие пасты).

2. Ещё я вынес русский перевод из language.h в отдельный файл с той целью, чтобы language.h редактировать в UTF-8 а русский текст в Windows-1251. Если идти по пути NeiroN'а, то этот пункт не нужно выполнять.

По какому пути вам пойти - выбирайте сами.

Есть и 3й путь. Выпросить у Вас готовую прошивку, а уже потом подправить под себя конфиг =)

Я понимаю что путь неправильный, но он единственный, который я смогла бы реализовать.

Можно с Вами по такому пути договориться? Сколько коврижек для меня такое удовольствие будет стоить? =)

 

P.S. А как на форуме писать в личку?

m3xx
Offline
Зарегистрирован: 03.10.2014

К сожалению, из-за отличия кодировки файла с русским переводом от UTF-8, Arduino IDE не сможет скомпилировать код, который успешно компилируется в Eclipse IDE. Если вы установите среду, то я без особых усилий выслал бы вам инструкцию и необходимые файлы для вашего принтера на указанную вами электронную почту.

temperator
Offline
Зарегистрирован: 13.11.2014

Большущие спасибо. Начну освоение ;)

mariya_gadaeva(тяф-тяф)mail.ru

hugoboss317
Offline
Зарегистрирован: 21.03.2013

Готовьте коврижки :)