vak: (Default)
Serge Vakulenko ([personal profile] vak) wrote2019-12-04 07:36 pm

Шрифты для дисплейчика

Платок с процессором ESP32 много разных, но удобнее всего оказываются те, которые с дисплейчиком. Всегда полезно что-нибудь отобразить, что на светодиодах не помещается: имя сети Wi-Fi, адрес IP, счётчики пересылаемых пакетов и т.п. Я использую плату TTGO LoRa32. Экранчик хоть и маленький, меньше сантиметра в высоту, зато довольно яркий и контрастный. Общий вид:



Исходные коды управления дисплеем можно взять здесь: esp-idf/oled/main
Смотрите файлы oled.c, draw.c и oled.h. В этой же папке лежат исходники шрифтов.

Рисовать точки и линии на дисплее нетрудно. Сложнее выводить текст. Самое нетривиальное - подобрать подходящие шрифты, их внутреннее представление и эффективный алгоритм отрисовки. Я уже давно забавляюсь шрифтами для встроенных систем, так что представление и алгоритм у меня отработанные. А вот со шрифтами всякий раз приходится экспериментировать.

Я сделал пару утилиток, которые позволяют из любого шрифта в формате TrueType (TTF) или OpenType (OTF) сделать растровое представление в виде компактной Си-структуры. Ниже примеры отображения нескольких популярных шрифтов в разных размерах. Кликайте, чтобы разглядеть в увеличенном виде. Лучше всего смотрится Tahoma. Остальные шрифты терпимо выглядят только в некоторых размерах.

Шрифт Tahoma в размерах 8, 10, 12, 14 и 18 пунктов:

 
 


Шрифт Lucida Sans, и отдельно цифры из него же:

 
 
 
 

Шрифт Verdana:

 
 


Шрифт Georgia:

 
 


Шрифт DejaVu Sans:

 
 


Шрифт DejaVu Sans Condensed:

 
 


Шрифт FreeSans:

 
 


Шрифт Liberation Sans:

 
 


Шрифт Liberation Serif:

 
 


Шрифт Ubuntu Regular:

 
 


Для сравнения, растровые шрифты 5x7 и 6x9, приготовленные из формата BDF:

 

[personal profile] mcler 2019-12-05 06:34 am (UTC)(link)
Хорошая работа! С кириллическими символами получится?

[personal profile] dijifi 2019-12-05 07:13 am (UTC)(link)
Lucida Console неплохой шрифт, под такие дела заточенный много лет назад
vit_r: default (Default)

[personal profile] vit_r 2019-12-05 06:23 pm (UTC)(link)
А старые растровые шрифты не проще использовать?

В малом формате лучше всего читается Axel, но его покупать надо.
ext_646638: (Default)

[identity profile] rdia.livejournal.com 2019-12-07 04:17 am (UTC)(link)
А как там хинтинги и прочая чёрная магия? Вы, кстати, с помощью FreeType растеризуете?