Посидел пару вечеров над шрифтами и выводом текста. Можно конечно слямзить код шрифта с функциями вывода символа и текста, но как быть если хочется шрифт покрасивше?! Да и поглубже разобраться с данным вопросом не помешает.
Есть такая замечательная программка matrixFont, с помощью нее можно с конвертировать в код С/С++ любой виндовый шрифт, что я и сделал с любимым шрифтом Tahoma
Выгрузил шрифт в «h» файл со следующими настройками
Из шрифта Terminus взял только цифры размером в 10×15 пикселей
Пришлось напрячь извилины и написать функции вывода этих двух шрифтов, если по простому, то шрифт кодируется набором строк и столбцов, в которых «1» это закрашенный пиксель, а «0» не закрашенный пиксель, количество пикселей по горизонтали и вертикали есть ни что иное как размер символа шрифта. Разница между выбранными размерами шрифтов в том, что в тахоме строка одного символа хранится в одном байте, а в терминусе в двух байтах. В библиотеку было добавлено три функции:
- вывод одного символа шрифта с однобайтовой строкой;
- вывод одного символа шрифта с двухбайтовой строкой;
- вывод строки шрифтом с однобайтовой строкой.
В итоге вот, что получилось, кстати данный дисплей хорошо симулируется в протеусе
Сделал возможность вывода инверсных символов и строк, добавил в демку вывод символов и строк, в обычном и инверсном отображении, вот оно на видео
Таким образом в проект можно интегрировать практически любой виндовый шрифт. Данную библиотеку не сложно подправить и под цветной TFT дисплей, который лежит ждет своей очереди!
Ниже проект с библиотекой в архиве
stm32_gmg12864 #2
Да, один момент, если писать в STM32CubeIDE с настройками по умолчанию, то так как кодировка там стоит UTF-8, с выводом на дисплей и в UART будут проблемы с русскими буковками, но все легко лечится:
- копируем текст кода проекта в буфер обмена, потом через меню Edit/Set Encoding…
- конвертируем код в кодировку Windows-1251(CP1251), и вставляем из буфера скопированный код, сохраняем и радуемся!
Продолжение следует…
73!