LINUX.ORG.RU

А был ли мальчик? То есть, есть ли русские глифы в шрифте, и где они расположены. Нормальный шрифт должен быть юникодным, и поэтому выводить надо используя юникод. Преобразовать текст в юникод можно функцией mbstowcs. Она будет работать только если в программе была проинициализирована локаль.

asso_w
()
Ответ на: комментарий от asso_w

>То есть, есть ли русские глифы в шрифте, и где они расположены

Пока я взял шрифт из винды. arial.ttf. Он не юникодный?

>если в программе была проинициализирована локаль.

Я так понимаю это делается функцией setlocale?

Пробовал

setlocale (LC_ALL, "");

и

setlocale (LC_ALL, "ru_RU.utf8");

Без изменений.

>Преобразовать текст в юникод можно функцией mbstowcs

Спасибо. Попробую.

И еще. Я использую gettext. Там наверно можно чтобы текст в .mo файлах сразу в юникоде был?

anonymous
()
Ответ на: комментарий от anonymous

arial.ttf юникодный, но есть проблемы с лицензией. Бесплатные русифицированные шрифты можно найти в интернете, ищи по словам "проект веди". Только там многие шрифты не юникодные, но в них русский можно выводить используя кодировку Windows-1251.

Про setlocale я написал потому что она требуется mbstowcs, на вывод шрифта она не влияет. Про gettext не в курсе, у меня своя система интернационализации.

И еще, чтобы не было путаницы (utf-8 это то же юникод), надо уточнить что я в том письме юникодом называл кодировку UCS-4, которая в Linux'е используется в "широких" строках (wchar_t* в си, std::wstring в си++).

asso_w
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.