Привет. В общем, товарищ попросил написать тут вопрос.
Необходимо самому на c/c++ выводить текст на экран (просто область памяти). На данный момент есть код отображения текста, где каждый символ представляет собой набор линий. К сожалению, он не полноценный. Например, нельзя изменить толщину линии шрифта. Текст выглядит примитивно, например, ноль рисуется как прямоугольник. Самому изобретать набор линий не хочется.
Этот софт реализуется не на ПК, а на контроллере, на котором нет операционной системы.
На данный момент для отрисовки текста используется данный велосипед:
int draw_text(int frame_index, char str[], int x, int y, int size)
{
const float aspect = 2; // ratio between height and width
const float corner_ratio = 8; // ratio between height and corner width/height
const int th = size;
const int tw = (int)round((float)size/aspect);
const int offset = size / 4;
const int crn = (int)floor((float)size / corner_ratio);
const int su = max(1, (int)floor((float)size / corner_ratio)); // small unit, same as crn but has minimum value of 1
int xp = x + offset;
int yp = y + offset;
std::string instr ( str);
char symbol;
for (unsigned int i=0; i<instr.size(); i++) {
symbol = str[i];
switch (symbol){
case '0':
draw_square(frame_index, xp, yp, xp+tw, yp+th);
break;
case '1':
draw_line(frame_index, xp, yp, xp+tw/2, yp);
draw_line(frame_index, xp+tw/2, yp, xp+tw/2, yp+th);
draw_line(frame_index, xp, yp+th, xp+tw, yp+th);
break;
case '2':
draw_line(frame_index, xp, yp, xp+tw, yp);
draw_line(frame_index, xp+tw, yp, xp+tw, yp+th/2);
draw_line(frame_index, xp, yp+th/2, xp+tw, yp+th/2);
draw_line(frame_index, xp, yp+th/2, xp+tw, yp+th/2);
draw_line(frame_index, xp, yp+th/2, xp, yp+th);
draw_line(frame_index, xp, yp+th, xp+tw, yp+th);
break;
...............
В общем, подскажите какую-нибудь маленькую опенсорсную либу для этих целей (либо сам механизм), которая позволяет преобразовать текст в набор линий определенного шрифта (моноширинного).