2016-08-05 3 views
0

Я на малине Pi с прикрепленным экраном.Растерирование шрифта TTF

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

Где я нахожу проблему, это рисовать текст. Экран - это просто массив байтов с этого уровня, поэтому мне нужен способ взять шрифт, размер, текст и т. Д. И преобразовать его в растровое изображение (на самом деле предпочтительны bool[] и width/height, поскольку это экономит дополнительное чтение/пишет.

Я не знаю, как подойти к этому.

вещи Я считал до сих пор ...

  • Использование фиксированной ширины шрифта и атлас/spritemap. Должно работать , Я уже могу читать изображения, однако моноширинные шрифты имеют ограниченную визуальную привлекательность. Также означает, что добавление большего количества шрифтов является сложным.
  • Использование шрифта с фиксированной шириной, атласа и маски, указывающих, где находится каждый символ. Будут поддерживаться шрифты с переменной шириной, однако масштабирование будет потеряно, и это похоже на кошмар обслуживания, если я не смогу автоматизировать создание атласа/маски.

Неужели кому-нибудь удалось сделать что-нибудь подобное раньше?

Если библиотека необходима, я могу жить с этим, но поскольку это больше упражнение в понимании моего Пи, чем это серьезный проект, я бы предпочел объяснение/учебник.

+0

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

ответ

0

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

На нижнем уровне вы также можете использовать библиотеку Freetype для загрузки шрифтов и визуализации символов из них напрямую. С трудом работать с этим сложно.

Смежные вопросы