Воскресенье, 18.02.2018, 02:53
Мир Irrlicht
Главная | Форум | Статьи | Файлы | Регистрация | Вход
Меню сайта
Категории каталога
Для начинающих [5]
Наш опрос
Приходилось ли вам иметь дело с Irrlicht?
Всего ответов: 907
Главная » Статьи » Для начинающих

Кириллический текст
В проектах, довольно часто возникает необходимость выводить национальные символы. Если мы собираемся использовать Irrlicht на русском языке, давайте на примере кириллицы разберём этот момент под микроскопом.

С Irrlicht 1.3.1 в папке \bin\Win32-VisualStudio есть утилита FontTool.exe, которая написана с использованием Irrlicht и поэтому она так же требует Irrlicht.dll. Эта утилита предназначена для генерации шрифтов, которые в свою очередь могут быть легко загружены системой гуи.

Работа с FontTool.exe

Запустите утилиту FontTool.exe, установите Charset в Russian. Выберите шрифт, я для примера выбрал Trebuchet MS, размер 14px. Поставьте галку напротив AA (Anti Aliasing -- антиналожение (сглаживание ребристостей начертаний шрифта)) и галку напротив Alpha (для задания прозрачного фона). Укажите разрешение генерируемых карт шрифта Max Width и Max Height, я указал 512 и 256 соответственно. Этот параметр влияет на файловое размещение определённых символов шрифта. Если этот параметр задать маленьким и шрифт весь не поместится на это разрешение, то будет сгенерировано не одна, а больше карт. С точки зрения программиста -- нет никакой разницы, система гуи Irrlicht загружает все карты автоматически. Всегда будет создано минимум 2 файла: XML файл (описатель шрифта) и изображение шрифта (графический файл с начертанием символов шрифта; тип файла можно выбрать). Напишите имя генерируемого файла шрифта и выберите формат изображения шрифта.

Кликните на кнопку Create:


Теперь можно сохранить созданный шрифт в файл. Для этого кликните на Save. Файлы шрифта будут сгенерированы в текущей папке (в папке с утилитой FontTool.exe).

Использование русского шрифта

Полученный ранее шрифт можно использовать для отображения кириллических символов и не только. Вы так же заметили что он гораздо красивее встроенного стандартного шрифта Irrlicht.

Использовать шрифт можно так:
#include "irrlicht.h"
#pragma comment(lib, "Irrlicht.lib")
using namespace irr;
using namespace core;

int main()
{
IrrlichtDevice *irrDevice =
createDevice(video::EDT_OPENGL, dimension2d(500, 400));

video::IVideoDriver *irrDriver = irrDevice->getVideoDriver();
gui::IGUIEnvironment *irrGUI = irrDevice->getGUIEnvironment();

irrDevice->setWindowCaption(L"002. Кириллический текст");

gui::IGUIFont* fnt = irrGUI->getFont("../media/myfont.xml");

irrGUI->getSkin()->setFont(fnt);

gui::IGUIStaticText *label =
irrGUI->addStaticText(L"Это пример русского текста на метке",
core::rect(10, 10, 490, 60), true);
label->setOverrideColor(video::SColor(255, 255, 0, 0));

gui::IGUIButton *button =
irrGUI->addButton(core::rect(100, 200, 400, 225),
0, -1, L"Название кнопки", L"Подсказка для кнопки");

while(irrDevice->run())
{
irrDriver->beginScene(true, true, video::SColor(255, 30, 60, 90));
irrGUI->drawAll();
irrDriver->endScene();
}

irrDevice->drop();
return 0;
}
В результате будет отображено следующее окно:


Мы использовали
irrGUI->getSkin()->setFont(fnt);
чтобы задать определённый шрифт сразу всему гуи. Тоесть, после этой строки каждый элемент пользовательского интерфейса будет выводить свои надписи используя этот шрифт. Если в шрифте не определены начертания выводимых символов -- они игнорируются (так например русский текст не будет выведен стандартным шрифтом Irrlicht).

Любой отдельно взятый объект гуи может переопределить стандартный шрифт на свой. Для этого нужно использовать метод самого гуи-объекта setOverrideFont(), например так:
button->setOverrideFont(fnt);
Категория: Для начинающих | Добавил: greenya (03.10.2007) | Автор: greenya
Просмотров: 4206 | Комментарии: 4 | Рейтинг: 5.0/3 |

Всего комментариев: 4
4  
Сейчас в версии 1.7.1 EditBox-ы отлично работают с кириллическим текстом wink

3  
нда, видимо никто, а жаль
видимо вариант freetype от китайского парня, пока единственная возможность

2  
я предпочитаю использовать для вывода текста freetype. Просто делаю наследника от класса шрифта

1  
Забавно, а кто-нибудь пробовал EditBox заставить работать с кириллицей?

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа
Поиск
Друзья сайта
Статистика
Copyright MyCorp © 2018 Создать бесплатный сайт с uCoz