Настройка параметров шрифта
В контекст отображения по умолчанию выбирают системный шрифт. Для создания логического шрифта удобно вызвать функцию CreateFontIndirect:
HFONT WINAPI CreateFontIndirect(const LOGFONT FAR* tptf);
Она возвращает дескриптор созданного шрифта. В качестве аргумента вызова функции CreateFontIndirect передают указатель на структуру типа LOGFONT:
typedef struct { LONG lfHeight; LONG lfWidth; LONG lfEscapement; LONG lfOrientation; LONG lfWeight; BYTE lfItalic; BYTE lfUnderline; BYTE lfStrikeOut; BYTE lfCharSet; BYTE lfOutPrecision; BYTE lfClipPrecision; BYTE lfQuality; BYTE lfPitchAndFamily; TCHAR lfFaceName[LF_FACESIZE]; } LOGFONT;
Назначение полей этой структуры: 1. lfHeight – высота шрифта в логических единицах. Положительное значение поля lfHeight задает высоту ячейки вывода букв. Если lfHeight < 0, то абсолютная величина значения lfHeight задает высоту символов. При lfHeight = 0 создают шрифт с высотой символов по умолчанию: lfHeight = 12. 2. lfWidth – ширина символов в логических единицах. Если указано нулевое значение, используют ширину по умолчанию. 3. lfEscapement – угол (в направлении против часовой стрелки) в десятых долях градуса между линией вывода строки и координатной осью X. Значение lfEscapement может отличаться от нуля только для масштабируемых и векторных шрифтов. 4. lfOrientation – угол (в направлении против часовой стрелки) в десятых долях градуса между линией основания символа и координатной осью X. Рекомендуется задавать равным значению lfEscapement. 5. lfWeight – вес шрифта. Определяет жирность символов шрифта и может находиться в пределах от 0 до 1000. Принимает значения констант из следующей таблицы:
Многие шрифты содержат символы только весов FW_NORMAL, FW_REGULAR (нормальный) и FW_BOLD (полужирный). Если задать нулевое значение (lfWeight = 0), используют вес по умолчанию. 6. Если lfItalic не равен 0, запрашивают шрифт с наклонными буквами. 7. Если lfUnderline не равен 0, запрашивают шрифт с подчеркиванием букв. 8. Если lfStrikeOut не равен 0, запрашивают шрифт с перечеркнутыми буквами. 9. lfCharSet – наиболее важное поле структуры. Оно задает набор требуемых символов. Может принимать значения констант из следующей таблицы:
Если lfCharSet = 0, будет выбран шрифт ANSI_CHARSET. 10. lfOutPrecision задает необходимую степень соответствия между параметрами запрашиваемого и предоставляемого шрифта. Можно указывать одну из следующих констант:
11. lfClipPrecision задает способ обрезания изображения символа на границе вывода. Можно использовать следующие константы: CLIP_STROKE_PRECIS, CLIP_MASK, CLIP_DEFAULT_PRECIS, CLIP_LH_ANGLES, CLIP_TT_ALWAYS, CLIP_EMBEDDED и CLIP_CHARACTER_PRECIS. Если указана CLIP_LH_ANGLES, направление вращения текста зависит от установленного режима отображения. 12. lfQuality задает качество отображения символов. Можно указывать одну из следующих констант:
13. lfPitchAndFamily задает ширину символов и определяет семейство шрифта. Фиксированная или переменная ширина символов задается при помощи следующих констант:
Следующие константы задают семейство шрифта:
14. lfFaceName – строка с именем шрифта. Длина этой строки не должна превышать 32 символа. Если lfFaceName – пустая строка, используют шрифт, который соответствует по другим атрибутам. Получив запрос, GDI начинает искать шрифт, сравнивая последовательно поля lfCharSet, lfPitchAndFamily и lfFaceName. После сравнения этих полей GDI сравнивает высоту букв шрифта, затем поля lfWidth, lfItalic, lfUnderline и lfStrikeOut. ©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.
|