|
Модераторы: Daevaorn |
|
Proger10 |
|
||||
Опытный Профиль Группа: Участник Сообщений: 312 Регистрация: 16.12.2008 Репутация: нет Всего: нет |
Пытаюсь пропихнуть русские символы в 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 |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
а с чего вы взяли что ему нужно UTF-8 ? если то скорей всего нужен нормальный юникод попробуйте так
скорей всего заработает. если нет, и нужен действительно UTF-8, то задавайте вопрос типа: как переносимо преобразовать строку в UTF-8 |
|||
|
||||
Proger10 |
|
||||||
Опытный Профиль Группа: Участник Сообщений: 312 Регистрация: 16.12.2008 Репутация: нет Всего: нет |
Реально, именно так и работает Не подскажите как сконвертить:
в юникодное представление? Это сообщение отредактировал(а) Proger10 - 12.4.2017, 10:02 |
||||||
|
|||||||
volatile |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
|
|||
|
||||
Proger10 |
|
|||
Опытный Профиль Группа: Участник Сообщений: 312 Регистрация: 16.12.2008 Репутация: нет Всего: нет |
Спасибо! Сейчас опробуем
Добавлено: Не, тоже не прокатило, не срабатывает Я пробовал схожий вариант, почему и скинул эту charStr Вот что я получаю:
Это сообщение отредактировал(а) Proger10 - 12.4.2017, 11:05 |
|||
|
||||
volatile |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
Proger10, вы С/С++ второй день изучаете чтоли?
зачем подавать std::wstring в функцию, требующую лишь один простой юникодный символ надо как-то так:
|
|||
|
||||
Proger10 |
|
|||
Опытный Профиль Группа: Участник Сообщений: 312 Регистрация: 16.12.2008 Репутация: нет Всего: нет |
Хахах ) Мне просто с wstring ранее не приходилось сталкиваться, машинально подумал, что wstring[ 0 ] получится такой же трэш как и в случае std::string str[0], то бишь просто первый байт от двухбайтного символа но теперь понимаю, что WideString для тех задачей и создан был, чтобы преодолеть эту проблему Спасибо, теперь понял как дальше с этим работать |
|||
|
||||
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |