LINUX.ORG.RU

Зацените спеку и конвертор битмапных шрифтов для эмбедов

 


0

1

https://github.com/littlevgl/lv_font_conv/blob/spec/doc/font_spec.md

Столкнулся с тем, что в эмбедах ну очень стремные шрифты. Векторные на ходу рисовать железки не тянут, а битмапные народ лепит без поддержки кернинга, с убогим сжатием и т.п. В общем, сел писать спецификацию и конвертор. Совсем с нуля колбасить не стал, вытянул ограниченное подмножество из OpenType/TrueType и приспособил под битмапы. Вроде вышло неплохо и достаточно универсально, нохотелось бы чтобы заценили те, кому подобная вещь нужна.

В отличие от u8g2, который точился под совсем чахлые AVR и поддерживает только битональные глифы, данная спека ориентирована больше под ARM и шрифты с анти-алиасингом. Чтобы рисовать красивые интерфейсы вроде Material Design. Но простенькие шрифты для OLED тоже поддерживаются и занимают совсем мало места. Всякие навороты вроде вертикального кернинга для арабского и акцентов, лигатуры и т.п. не поддерживаются «за ненадобностью».

Сам конвертор сделан на node.js и позволяет склеивать несколько шрифтов, менять коды символов, и вырезать только необходимые подмножества глифов. В основном сделано для того, чтобы сливать вместе английский + дополнительные европейские языки + CJK + иконки. Таким образом можно уйти от ада, когда разработчики хранят в репах «шрифты от васяна» с непонятными лицензиями и источником, и заскриптовать генерацию из ttf/woff.

Это все делалось с дальним прицелом под Rust, но поскольку он еще «не совсем готов» для эмбедов, будет использоваться с LittlevGL (надеюсь).

Посмотрите, чего еще не хватает, что не понятно, ну и поиграйтесь с конвертором. Прогресс, прмеры запуска и комментарии по размерам можно посмотреть тут https://github.com/littlevgl/lvgl/issues/995.

★★★★★

Маленький вопрос, эти шрифты можно срастить с Nuklear GUI? Или только LittlevGL?

Попутно заинтересовался LittlevGL, почитал доку, но не вижу какой компилятор там минимально требуется?

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

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

Попутно заинтересовался LittlevGL, почитал доку, но не вижу какой компилятор там минимально требуется?

Кажется С90. В общем он поддерживает весь старый шлак, который в эмбедах накопился.

Vit ★★★★★
() автор топика
Ответ на: комментарий от Deleted

Не понял вопроса. В репе же конвертор https://github.com/littlevgl/lv_font_conv. Если нода установлена, можно даже без инсталляции через npx запустить.

Все из командной строки, один раз забил в Макеfile (или что у тебя там) параметры и забыл. Никогда не понимал этих графических штук под одну платформу, где каждый раз надо ручками все выставлять.

Vit ★★★★★
() автор топика
Ответ на: комментарий от Deleted

http://www.angelcode.com/products/bmfont/doc/file_format.html

Посмотри формат, там блин «padding» и прочий самопал вместо нормальных метрик. А кернинг хранится только парами. Будешь несколько языков утаптывать - таблица кернинга нереально распухнет. На десктопе на все это конечно можно и забить, а для эмбедов не подойдет.

Vit ★★★★★
() автор топика
Ответ на: комментарий от Vit

Нуклеар же для десктопа

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

Кажется С90

Спасибо за инфу, в общем я попробую, сравню. Для меня и Nuklear и LittlevGL одинаково попабольные, но из двух зол попробую выбрать меньшее.

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от Vit

Нуклеар же для десктопа

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

yetanother ★★
()
Ответ на: комментарий от I-Love-Microsoft

У него ж шрифты векторные. Толсто для эмбедов. А других готовых решений я в нем не увидел

Vit ★★★★★
() автор топика
Ответ на: комментарий от yetanother

Дело не в тех зависимостях. Вопрос в том, что со шрифтами и сколько это памяти сожрет. Кроме TTF я в нем ничего не нашел. Может плохо смотрел.

Vit ★★★★★
() автор топика

без лигатур на мелких экранах тяжко будет :(

slapin ★★★★★
()
Ответ на: комментарий от Deleted

Спасибо. Ссылку не подскажешь, чем они генерят растр, как сжимают и т.п.? Или там просто bdf без кернинга?

Vit ★★★★★
() автор топика
Ответ на: комментарий от Deleted

Дык нуклеар уровнем выше рендерит TTF и строит атлас битмапов. А ты дал ссылку на пример драйвера, которому уже готовые битмапы прилетают. Но оно не из растровых фонтов берется.

Vit ★★★★★
() автор топика
Ответ на: комментарий от Vit

Но оно не из растровых фонтов берется.

Ну так ничего не мешает сделать так что бы бралось же, я про это.

Deleted
()

Красавчик!

anonymous
()
Ответ на: комментарий от Deleted

Набор «сделай сам» мне не интересен. Тут речь о готовых решениях.

Vit ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.