Oxy976 / M5Stack_Rus_fonts

MIT License
3 stars 0 forks source link

После обновления библиотеки M5Stack, перестала отображаться кириллица #1

Open pulsar85 opened 4 years ago

pulsar85 commented 4 years ago

Доброго дня. Судя по комментария в Readme, не один я заметил, что сломалось отображение шрифтов. Насколько я понял, они подняли версию библиотеки TFT_eSPI и вроде как добавили поддержку юникода. Но вот добавить шрифты с национальными символами "забыли". В оригинальной библиотеке TFT_eSPI есть пример, где с SPIFS загружается шрифт в формате VLW. Там всякие иероглифы отображаются нормально. Видимо теперь всё сводится к тому, что бы сделать подходящие шрифты в данном формате. Может, конечно, можно и в RobotoR16pt8b.h какой ни будь добавить кириллицу, так что бы она работала "из коробки", но пока не знаю как к этому подступиться. Подозреваю, что в итоге, из проекта нужно будет выбросить библиотеку utf8rus. Тут виден момент, когда была внесена правка: https://github.com/m5stack/M5Stack/commits/master/src/utility/In_eSPI.cpp Здесь пример из оригинальной библиотеки, показывающий работу с юникодом. Код во многом совместим. https://github.com/Bodmer/TFT_eSPI/tree/master/examples/Smooth%20Fonts/Unicode_test

pulsar85 commented 4 years ago

В общем, берём вот эту программу: https://processing.org/download/ Далее, по вот этому гайду: https://pages.uoregon.edu/park/Processing/process5.html Выполняем шаг1. В папке data будет лежать готовый шрифт в формате *.VLW. При выгрузке шрифта, выбираем, какие символы нам нужны, и тут же выбираем, нужно ли нам сглаживание, или нет. Далее, шрифт кладём в проект, в папку data, загружаем в SPIFFS, и пользуемся согласно примеру из моего предыдущего сообщения. Кириллица отображается. Другой вопрос, сколько это займёт памяти... Пока не исследовал этот вопрос, но файлы шрифтов не маленькие получаются...

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

Oxy976 commented 4 years ago

Спасибо. Пороюсь.

UT2UH commented 4 years ago

После обновления TFT_eSPI в M5Stack он прекрасно выводит Unicode из кавычек без всяких utf8rus - вот этот пример Display_Unicode работает, но памяти не оставляет. Убрал руками в файле шрифта из примера все ненужные символы, структура очень простая - тоже работает. Т.е. чтобы пофиксить вывод кирилицы нужно отказываться от WIN1251 а в файлах шрифтов поисковые коды с 192-255 нужно менять на коды из Unicode диапазона 0x0400 - 0x04FF. Вопрос - есть ли какой-то редактор в котором это ненапряжно делать? Чем вы свои шрифты делали?

Oxy976 commented 4 years ago

Спасибо за информацию. Для создания шрифтов использовал http://fontforge.github.io/ - переносятся символы на нужные места, корректируются интервалы (по необходимости) и добавляются свои символы (чем пользовался). Полученный из fontforge шрифт скармливал Adafruit fontconvert https://github.com/adafruit/Adafruit-GFX-Library/tree/master/fontconvert

И да, в manual это описано.

UT2UH commented 4 years ago

Все, проблема решена - недосмотрел, скрипт для вытаскивания из TTF шрифтов нужных Юникод блоков есть прямо в репозитории M5Stack от автора примера - FontCreator. Все работает, нужно только наловчиться задавать нужные блоки из шрифта. ))