Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > Как работать с русскими символами в FreeType2? |
Автор: Proger10 12.4.2017, 08:50 | ||||
Пытаюсь пропихнуть русские символы в FreeType2, но вместо символов вижу квадраты, что очевидно, покуда FT_Load_Char забирает у меня один байт на один символ, а русские символы в UTF-8 - занимают два байта. Вот официальный пример FreeType2: https://www.freetype.org/freetype2/docs/tutorial/example1.c Выдержка оттуда:
В этом примере предполагается один байт на символ (strlen(text)), что не верно для наших в UTF-8. (мне код нужен переносимый: OS X <-> Win ). В качестве символа FT_Load_Char принимает "unsigned long", но я совершенно не понимаю, как мне символ (в UTF-8) подать ему в этот unsigned long? Я могу разбить строчку std::string на std::vector < std::string >, где каждый элемент будет: std::string символа размером в два байта (парсинг UTF-8). Но что дальше делать с этим? Грубо говоря, я не понимаю как проделать вот что:
Как сконвертить этот символ ему в unsigned long совершенно не понимаю... |
Автор: volatile 12.4.2017, 09:27 | ||
а с чего вы взяли что ему нужно UTF-8 ? если то скорей всего нужен нормальный юникод попробуйте так
скорей всего заработает. если нет, и нужен действительно UTF-8, то задавайте вопрос типа: как переносимо преобразовать строку в UTF-8 |
Автор: Proger10 12.4.2017, 10:01 | ||||||
Реально, именно так и работает ![]() Не подскажите как сконвертить:
в юникодное представление? |
Автор: volatile 12.4.2017, 10:55 | ||
|
Автор: Proger10 12.4.2017, 11:01 | ||
Спасибо! Сейчас опробуем ![]() Добавлено: Не, тоже не прокатило, не срабатывает ![]() ![]() Вот что я получаю:
|
Автор: volatile 12.4.2017, 11:11 | ||
Proger10, вы С/С++ второй день изучаете чтоли? зачем подавать std::wstring в функцию, требующую лишь один простой юникодный символ надо как-то так:
|
Автор: Proger10 12.4.2017, 11:23 |
Хахах ![]() ![]() ![]() Спасибо, теперь понял как дальше с этим работать ![]() |