Русские шрифты для библиотеки FabGL.
- Войдите на сайт для отправки комментариев
Ср, 13/04/2022 - 19:51
Превосходная библиотека FabGL! VGA монитор, вполне себе не плохой дисплей на 17..20" для ESP32. Библиотека постоянно обновляется и уже не плохо работает. Мышка/клавиатура/дисплей VGA/генерация звука , очень не плохой набор инструментов для ESP32.
https://github.com/fdivitto/FabGL
Не могу ни как победить русификацию шрифтов.
Есть встроенный инструмент Fonttool. С Питоном не дружу, даже не знаю как запустить готовую прогу на Пайтоне...
https://github.com/fdivitto/FabGL/tree/master/tools/fonttool
Помогите, люди добрые, кто чем сможет...
Iv_. во-первых, вставьте ссылки правильно. для этого есть отдельная кнопка в интерфейсе.
Во-вторых - какой формат фонтов поддерживает библиотека? Под формат GFX Adafruit на форуме несколько библиотек руссифицировано уже...
Iv_. во-первых, вставьте ссылки правильно. для этого есть отдельная кнопка в интерфейсе.
Во-вторых - какой формат фонтов поддерживает библиотека? Под формат GFX Adafruit на форуме несколько библиотек руссифицировано уже...
Постараюсь разобраться с тонкостями форума. C GFX у меня без проблем, на любых дисплеях, всё пр русски.
У Фабрицио Ди Витторио свои шрифты/библиотека шрифтов, видимо некоторого стандартного(не стандартного?) формата. У него есть компилятор шрифтов на Пайтоне, с которым мне нужно разобраться.
Iv_. во-первых, вставьте ссылки правильно. для этого есть отдельная кнопка в интерфейсе.
А как первое сообщение ветки отредактировать?
Превосходная библиотека FabGL!
Подскажите, если вы уже разобрались с этой библиотекой, какое оптимальное разрешение выставляете для когда то массовых мониторов 17-19''
DisplayController.setResolution(VESA_720x400_85Hz, -1, -1, DOUBLEBUFFERING);
Вот это не подошло. Пробовал на двух, - превысило, мониторы не показывают с VESA_768x576_60Hz работает, но хотелось бы больше, перебирать все не хотелось бы.
На каком вы конкретно остановились?
Зависит от количества памяти у esp32.
У меня на платах Devkit v1 терпимо работает разрешение 640/480 для 64 битного цвета. Если нужен ещё WiFi, падаем в 640/200. Это для ESP32 Wroom. Чем у вас больше код, тем меньше область памяти под видео, тем ниже разрешение и цветность.
Лучше использовать Wrover, особенно под эмулятор ПК.
Спасибо за ответ. У меня нет пинов свободных, чтобы показывало 64 цвета. Я подключил только RGB H и V синхронизации. Таким образом задействую 5 пинов. Получилось идеально заменить по железу дисплей Nokia5110 в проекте. Правда цветов всего 8, но это лучше чем 2 и во много раз лучше по размеру диагонали. Для меня подошло оптимально VGA_640x240_60Hz проект с WiFi делами. Теперь заказал скалер под выбранную матрицу. Вообщем сасибо за наводку. А со шрифтами, думаю разберусь в дальнейшем.
Спасибо за ответ. У меня нет пинов свободных, чтобы показывало 64 цвета. Я подключил только RGB H и V синхронизации. Таким образом задействую 5 пинов. Получилось идеально заменить по железу дисплей Nokia5110 в проекте. Правда цветов всего 8, но это лучше чем 2 и во много раз лучше по размеру диагонали. Для меня подошло оптимально VGA_640x240_60Hz проект с WiFi делами. Теперь заказал скалер под выбранную матрицу. Вообщем сасибо за наводку. А со шрифтами, думаю разберусь в дальнейшем.
Всегда пожалуйста. Всегда рад с коллегами поделиться. В FabGl появился ещё PAL/NTSC Color Composite видеовыход. Совсем уж для древних/кубических телевизоров. Я пытался, но пока не смог. Железа нужного под рукой не было. Esp32-cam, отказался генерировать древнючий видеосигнал.
Ну вот и русский шрифт сделал. Правда взял самый дешманский шрифт 5х7 для эксперимента, но можно любой который есть в системе теперь брать и править.
SAB - каааак???!!!
Я всё это уже делал. Шрифт font_5x7 который с библиотекой fabgl шёл?
Весь вечер вчера развлекался с конвертором шрифтов на Пайтане, который внутри fabgl есть. Даже нашёл Пайтон, который под Win7 работает. Всё конвертируется, только fabgl не принимает эти шрифты.
Я не использовал ни какие пайтоны. Просто брал уже существующий в системе (они в отдельной папке ) и рисовал сам какой символ мне нужен. Прямо в Notepad++. Пару часов и вот результат.
SAB, поделитесь пожалуйста имеющейся библиотекой с русским шрифтом. А то, у меня скоро уже крыша поедет на этой почве. Бегаю кругами и нифига не выходит.
Для шрифтов до 8 включительно шириной - каждый байт это одна строка. Если бит установлен, то точка есть. Иначе точки нет.
Для шрифтов от 9 до 16 включительно шириной - каждые два байта это одна строка. (не проверял, но сужу по размеру)
https://wokwi.com/projects/329382043718779476
Шрифт font_8x8.h подменил аналогичным шрифтом с кириллицей. Теперь туплю с функцией utf8rus. В моём новом шрифте заглавная А(русская часть фонта) начинается с кода 128, а должна со 192.
-64
Уже пытался, не всё так просто.
Само собой с учетом диапазона...
Оказалось, легче поправить фонт под стандарт.
Оказалось, легче поправить фонт под стандарт.
5 букв не смогли в функции отдельно прописать?
Оказалось, легче поправить фонт под стандарт.
5 букв не смогли в функции отдельно прописать?
Я решил, что легче иметь более/менее стандартный фонт и utf8rus.
Лучше подскажите решение следующей проблемы.
Функция классическая utf8rus, у меня позволяет русифицировать не более 10 символов. Раньше такого не замечал. Возможно, корни проблемы в библиотеке FabGL.
Функция классическая utf8rus на tft дисплейчиках, без проблем рисовала длинные строки.
Проблема решаемая, но код выходит корявый.
canvas.drawTextFmt(5,5,"%s%s%s%s%c%s",utf8rus("Температур"),utf8rus("а на улице"),utf8rus(" : +"),String(incData[i].d),191,"C");
Функция классическая utf8rus на tft дисплейчиках, без проблем рисовала длинные строки.
Проблема решаемая, но код выходит корявый.
canvas.drawTextFmt(5,5,"%s%s%s%s%c%s",utf8rus("Температур"),utf8rus("а на улице"),utf8rus(" : +"),String(incData[i].d),191,"C");
покажите пример кода. где функция не работает больше чем с 10 символами.
Только, пожалуйста. код должен быть полным - такой. который можно скомпилировать и запустить
Функция классическая utf8rus на tft дисплейчиках, без проблем рисовала длинные строки.
Проблема решаемая, но код выходит корявый.
canvas.drawTextFmt(5,5,"%s%s%s%s%c%s",utf8rus("Температур"),utf8rus("а на улице"),utf8rus(" : +"),String(incData[i].d),191,"C");
покажите пример кода. где функция не работает больше чем с 10 символами.
Только, пожалуйста. код должен быть полным - такой. который можно скомпилировать и запустить
Железяку придётся собирать. Иначе, баг проверить не получится. В принципе, в монохроме с одним цветом, четыре проводка припаять от VGA кабеля к любому ESP32, не так уж сложно. Я сегодня проверил ESP32-CAM на совместимость с FabGl, отлично всё работает.
Фонт font_8x8.h из FabGL, нужно заменить содержание файла на то что постом выше.
Для ESP32-CAM компилируем и заливаем код как для Wrover Module.
что-то не нашел в вашем коде строчек длиннее 10 символов
Если у вас не так много памяти - не совсем понял нафига писать функцию utfrus через String
Железяку придётся собирать. Иначе, баг проверить не получится.
ерунда.
вы утверждаете, что баг в utf8rus, которая не работает более чем с 10 символами? Чтобы проверить это, никакие железяки собирать не надо.
Все что нужно - это передать utf8rus строчку длинее 10 символов и прочитать ответ. Для этого достаточно монитора порта.
Это чего получается - на старый аналоговый ЖК монитор через три резистора и D-SUB могу ESP-шку прицепить?
Если 8 цветов хватит, так и есть. Если надо 64 цвета, надо уже 6 резисторов. :)
Тоже удивился 10 символам, но потом понизил разрешение и стало нормально. Вообщем памяти не хватает.
Вообщем памяти не хватает.
если вот так вот символы прибавлять - никакой памяти не хватит :)
Тоже удивился 10 символам, но потом понизил разрешение и стало нормально. Вообщем памяти не хватает.
Нет, дело не в количестве свободной памяти. Значительно снизил разрешение, один фиг - баги...
Проблема решена.
canvas.drawTextFmt(5,25,utf8rus1("Температура в квартире: Нет Данных."));
Проблема решена.
и? в чем ошибка была?
Проблема была в двойном преобразовании типа данных. Сначала в стринг, потом из стринга в чар.
Вот эта всем давно известная функция, работает с FabGl корректно.
касательно функции utf2rus
зачем вот эта конструкция... сначала превращаем символ в промежуточную строку, потом используем strcat() ??? - зачем??
что мешает сделать так?
только не забудьте в конце процедуры добавить в строчку терминатор. ОДИН РАЗ.
И еще - проверка в строке 28 написана с ошибкой, к моменту как она сработает, вы уже вылезете за границу массива. Не говоря уж о том, что при переполнении строки вы просто отдаете ее пользователю вместо генерации ошибки...
Кому нужны шрифты, обращайтесь. Но имейте в виду на 4м2м есп32, это дело не взлетит.
Привет. выложи плз файлы шрифтов, думаю что не только мне понадобится.