Рисование текста на фреймбуффере в Linux из C

Как программа может рисовать текст в буфере кадров, отображаемом в виде массива? То, что необходимо, - это как средство представления отдельных символов, так и рисование символов пиксель за пикселем способом, который не слишком неэффективен. Представление символов в идеале должно быть определено исключительно в коде, и никакие сторонние библиотеки не потребуются.

кто-нибудь знает код для этого предоставляются под либеральной лицензией? Или инструмент для создания определений данных для шрифта для использования в программном коде, например, массив растровых глиф / символьных значений?

3 ответов


У меня нет никакой информации, специфичной для буферов кадров, но у меня есть интересный способ кодирования шрифта.

Если у вас есть приложение, которое может писать формат XBM, вы можете кодировать шрифт, просто создав изображение, содержащее все символы. Файл XBM может быть включен как файл C или C++, и с помощью соответствующих смещений вы можете легко получить доступ к одному символу. Убедитесь, что каждый символ начинается с координаты X, кратной 8, поскольку изображение кодируется как один бит на пиксель; все, что не соответствует 8-битной границе, нуждается в маскировке и сдвиге.


Я думаю, что лучший способ сделать это-использовать растровые шрифты:http://www.iua.upf.es / ~ggeiger/redbookhtml/ch09.html. Этот учебник предназначен для OpenGL, но вы, вероятно, найдете много полезной информации.


чтобы нарисовать линию на 2D массива, используйте Besengam это.

чтобы нарисовать символы, используя прямые линии, создайте свой алфавит, используя серию moveTo, lineTo. Е. Г. для простого 'л':

image.moveTo(0,-fontHeight);
image.lineTo(0, 0);
image.lineTo(fontWidth,0);