Для разбора взял демку - IwGxFontBasic. Заменил текст для вывода в коде на русский.
В Font Builder создал шрифт с русскими буквами. Но текст на русском не выводится.
В итоге докопал до того, что проблема в Visual Studio 2010. Она хранит строку в кодировке 1251, а Marmalade ожидает utf-8.
Если в Студии принудильно сохранить в utf-8, то вываливается с ошибкой Maramalade
IwAssert failure: Channel: GX_FONT File: IwGxFontRenderer.cpp Line: 174 Expression: num_characters > 0 Message: String is not UTF8 encoded? Callstack: IwGxFontDrawText _IwGxInitPipeline
У кого-нибудь получилось вывести русский шрифт?
Как временный вариант рассматриваю хранить текст в коде виде "Privet", выполнив файле .gxfont замену русских букв на похожие латинские.
Не уверен на счет студии, но возможно сам файл исходников переконвертировать в UTF.
Все работает, если пересохранить itx-файл из этого примера в формате "UTF-8 без сигнатуры", кодовая страница 65001.
Это можно сделать в Visual Studio (через "Сохранить как").
Если не получится, пиши, скину пример:)
Что за файл itx? Я у себя таких не нашел в папке проекта :(
Файл исходника разумеется пробовал в utf-8 сохранять - результат выше написан.
Если не сложно можно скинуть работающий пример на почту ?
Ответил на почту
vmelnikov, ого, еще и локализацией! Gracias! :)
P.S. Еще головняк с хранением текста, чтобы не в коде, убран заодно.
Рад был помочь:)
А что за itx-файл - так и осталось в секрете?
разобрался, нет? все же выскажусь ) не храни текст в коде, все равно под ARM не скомпилируется. лучше сразу все тексты выносить в файлы и грузить оттуда. использовать можно обычный wstring из STL. + локализацию проще сделать.
Сейчас я читаю ASCII строки в char через s3eFileRead. Для wstring потребуется юзать s3eFileRead?
да без разницы, чем читать - просто в string (в нем char) символ занимает 1 байт, в wstring - 2 байта. текст должен быть в юникоде, тогда wstring адекватно считывается по два байта. ну и русский в мармеладе через ASCII и однобайтовую строку ты врятли подключишь.
Я так понимаю мармеладовское Api не поддерживает чтение в wstring? Нужно писать что-то свое?
Тема в архиве.