int IfEscapement; //Поворот текста в десятых долях градуса

int IfOrientation; //Угол наклона символа

int IfWeight; //Жирность символа от 0 до 1000

BYTE Ifltalic; //Не ноль, если курсив

BYTE IflJnderlinc; //Не ноль, если подчеркнуто

BYTE IfStrikeOut; //Не ноль, если перечеркнуто

BYTE IfCharSet; //Особенности кодировки

BYTE OutPreccision; //Точность рисования

BYTE IfCli pPreci si on: //Точность отсечения

BYTE IfQuality: //Качество формирования

//DRAFT_QUALYTY - черновое. PR00F_QUALYTY - высокое, обычно DEFAULT_QUALYTY BYTE IfPitchAndFamily; //Флаги, определяющие семейство шрифта BYTE 1 fFaceName[LF_FACESIZE]; //Название шрифта } LOGFONT; Название шрифта 1 f FaceName определяет дизайн символов. Существуют шрифты матричные, векторные и шрифты семейства True Туре. В матричных шрифтах конфигурация символов задается прямоугольной таблицей, содержащей единицы и нули. В векторных шрифтах форма символов задается координатами отрезков, из которых составлен символ. Шрифты True Туре содержат дополнительные данные, позволяющие не искажать форму символов при их масштабировании и выводе на носители изображения с разным разрешением.

При создании шрифта от программиста не требуется определять все 14 полей. Чтобы шрифт был создан, достаточно заполнить часть полей структуры L0GF0NT (остальные могут быть нулями) и вызвать функцию hFont - CreateFontlndi rect(), как показано в листинге 19.1.

Листинг 19.1

HFONT hFont; L0GF0NT If; if(F-3) {
HDC hdc - GetDC(UkOkn);

lf.lfHeight »-12.5; //При отрицательном числе шрифт получается крупнее.

//чем при таком же положительном значении

lf.lfWeight - 200; If.Ifltalic - 1;
strcpy (If.IfFaceName. "Courier"):
hFont - CreateFontlndirect (&lf);
hFont -(HFONT) SelectObject (hdc. hFont);

Если нет возможности точно подобрать заданные в структуре L0GF0HT требования к шрифту, функция создания шрифта создает наиболее близкий шрифт. Например, если отсутствует шрифт с заданным именем, то выбирается другой шрифт из того же семейства.


⇐ Предыдущая| |Следующая ⇒