Проблема с рендерингом составных символов в openGL с использованием FTGL

В моем приложении FTGL отображает символы Юникода шрифты истинного типа Что ж кроме составных символов. Составной символ — это комбинация согласных и гласных звуков Юникода.

Например, на индийском языке тамильский, следующая строка ввода

«கா கி கீ கு கூ கெ கே கை கொ கோ கௌ»

отображается как

в просмотрщик openGL.

вывод некоторых символов не совпадает с вводом.

Кто-нибудь может помочь в этом?

мой фрагмент кода,

    std::ifstream fontFile("latha.ttf", std::ios::binary);//tamil unicode font
if (fontFile.fail())
return NULL;
fontFile.seekg(0, std::ios::end);
std::fstream::pos_type fontFileSize = fontFile.tellg();
fontFile.seekg(0);
unsigned char *fontBuffer = new unsigned char[fontFileSize];
fontFile.read((char *)fontBuffer, fontFileSize);

FTBitmapFont* m_pFTFont = new FTBitmapFont(fontBuffer, fontFileSize);
m_pFTFont->Render("கா கி கீ கு கூ கெ கே கை கொ கோ  கௌ");

0

Решение

Добро пожаловать в чудесный мирсложное расположение текста«. Приятного пребывания;)

Проще говоря, сценарий, который использует сложную разметку текста, не имеет простого отображения 1: 1 между кодовыми точками Unicode и глифом, который будет отображаться. И тамильский такой сценарий.

FTGL обрабатывает только те скрипты, которые имеют простую разметку, потому что сложная разметка текста сложный (даже очень). Поэтому он не сможет правильно воспроизвести тамильский сценарий.

Вам нужно будет использовать механизм верстки, как HarfBuzz для макета вашего текста. FTGL все еще может отрисовывать скрипт, но вам понадобится Harfbuzz, чтобы сообщить вам, какие глифы в шрифте визуализировать.

1

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

Других решений пока нет …

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