Вопрос

В настоящее время я работаю над библиотекой для НекоВМ чтобы создать привязку к Свободный Тип 2.Он написан на обычном c, и все это работает действительно хорошо, за исключением того, что когда пользователь вводит некоторые символы unicode, такие как "ü", "Ä" или "β", они преобразуются в какие-то уродливые квадратные буквы.
Когда я получаю данные из NekoVM, вы используете val_string который возвращает char*.Функция (FT_Load_Char) там, где вы вводите данные в freetype, ожидается код без знака long as char.(Каждое письмо обрабатывается самостоятельно.)

Что нужно сделать, чтобы символы отображались правильно?У меня также есть возможность преобразовать их в любую кодовую страницу ISO-8859-XX, прежде чем отправлять их в библиотеку, написанную на c.

Это было полезно?

Решение 2

Решение было довольно простым:

for (i=0;i<l;i++) {
    unsigned long c = FT_Get_Char_Index(face,r[i]);
    FT_Load_Glyph(face,uc,FT_LOAD_RENDER);
    ....
}

Это позволяет freetype обрабатывать все "кодирующие элементы" самостоятельно.

Другие советы

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

  1. Используйте шрифт, содержащий эти символы

  2. Используйте правильную кодировку.Видишь FT_CharMap - Карта и FT_Encoding - кодирование.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top