Dec 21, 2012 11:11
Сейчас я играюсь с fltk3 (да-да, есть уже такой!). В связи со своими интересами захотелось использовать шахматные шрифты. и тут... Оказалось, что в fltk3 немного необычный механизм работы со шрифтами. А именно:
1) тип fltk3:Font есть обычный целочисленный тип. то есть штуку типа fltk3::Font font("MyFont.ttf"); не напишешь.
2) fltk3::ARIAL, fltk3::COURIER и т.д. - предустановленные константы - бери и пользуйся.
3) хочешь шрифт пожирней? используй fltk3::BOLD! => fltk3::ARIAL & fltk3::BOLD (соответственно для наклонного италик).
4) а как быть с нестандартными шрифтами?! Я для себя начеркал такую функцию:
79 fltk3::Font loadFont(const char* font_name){
80 fltk3::Font font;
81 int k = fltk3::set_fonts("-*");
82 for (font = 0; font != k; ++font) {
83 int t;
84 if (strcmp(font_name, fltk3::get_font_name(font, &t)) == 0) {
85 break;
86 }
87 }
88 return(font == k) ? 0: font;
89 }
суть функции: список возможных шрифтов в системе хранится в некоторой таблице. размер этой таблицы (как и сама таблица) определяется функцией set_fonts() c указанным в примере параметром. При большом желании (не проверено!!) можно входной параметр заменить на имя шрифта, тогда он выберет таблицу только с нужными шрифтами. а get_font_name определяет имя шрифта по его индексу в таблице.
fltk2,
С++,
программирование