Мне удалось получить правильные глифы (формирование глифов), используя libraqm, и теперь я необходимо выполнить соединение глифов, чтобы глифы соединились правильно.
Мне удалось получить правильное горизонтальное продвижение, используя:
advance = (glyphs[i].x_advance / glyphs[i].ftface->units_per_EM) * fontsize;
Однако смещение не кажется правильным, потому что все смещения глифов x и y устанавливаются в 0 libraqm.
Первоначально я устанавливал положение глифов, используя:
const float left = (float)(origin_x + glyphs[i].x_offset);
const float top = (float)(origin_y + font->leading + (font->ascent - glyphs[i].y_offset));
Но это привело к тому, что все глифы были выровнены по верхней части текстовой строки, например: (пример случайного текста)
Поэтому я изменил код, чтобы выровнять глифы по нижней части строки текста, например так:
const float left = (float)(origin_x + glyphs[i].x_offset);
const float top = (float)(origin_y + font->leading + (font->ascent - glyphs[i].y_offset)) - glyphs[i].ftface->glyph->bitmap.rows;
но хоть и выглядит лучше, но все же не совсем то...
Кто-нибудь знает, как я должен получить правильные смещения для каждого глифа, используя libraqm?