В настоящее время я жестко кодирую свои изображения в свою программу на 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 КБ, поэтому проблем нет)
Спасибо!!
Это выглядит Шрифт имеет штраф loadFromMemory
метод. Таким образом, вы можете использовать его точно так же, как и в предыдущем примере, представляя данные в виде строкового литерала и передавая его.
Нетрудно написать программу, которая преобразует двоичный файл в формат xxH, подобный hexdump, подходящий для включения.
Хорошо, это мое решение:
Я использовал инструмент Bin2h (http://www.deadnode.org/sw/bin2h/) создать следующий код:
unsigned int fontSize = 22256;
unsigned char fontChar[] = {
0x00,0x01,0x00,...
};
Тогда я использую
font.loadFromMemory(fontChar, fontSize)
загрузить шрифт.