Как интегрировать (жесткий код) файл шрифта в мою программу?

В настоящее время я жестко кодирую свои изображения в свою программу на C ++ в виде структуры (исходный код с данными пикселей может быть создан с помощью GIMP), например, так:

static const struct {
unsigned int   width;
unsigned int   height;
unsigned int   bytes_per_pixel;
unsigned char  pixel_data[16 * 16 * 4 + 1];
} my_icon = {
16, 16, 4,
"...", pixel data here
};

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

Так как GIMP сделал преобразование для меня, но, очевидно, не может преобразовать шрифт для меня, я застрял сейчас и не знаю, как бы я занялся жестким кодированием font.ttf, как я делаю с изображениями.

Если это имеет какое-либо отношение, вот как я сейчас загружаю файл шрифта:

sf::Font font;
if (!font.loadFromFile("font.ttf")) {
std::cout << "Could not load font" << std::endl;
return -1;
}

Может ли кто-нибудь помочь мне? (Шрифт размером менее 25 КБ, поэтому проблем нет)

Спасибо!!

0

Решение

Это выглядит Шрифт имеет штраф loadFromMemory метод. Таким образом, вы можете использовать его точно так же, как и в предыдущем примере, представляя данные в виде строкового литерала и передавая его.

Нетрудно написать программу, которая преобразует двоичный файл в формат xxH, подобный hexdump, подходящий для включения.

1

Другие решения

Хорошо, это мое решение:

Я использовал инструмент Bin2h (http://www.deadnode.org/sw/bin2h/) создать следующий код:

unsigned int fontSize = 22256;
unsigned char fontChar[] = {
0x00,0x01,0x00,...
};

Тогда я использую

font.loadFromMemory(fontChar, fontSize)

загрузить шрифт.

0

По вопросам рекламы [email protected]