Здавалка
Главная | Обратная связь

Настройка параметров шрифта



В контекст отображения по умолчанию выбирают системный шрифт. Для создания логического шрифта удобно вызвать функцию 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_DONTCARE FW_NORMAL FW_BOLD
FW_THIN FW_REGULAR FW_EXTRABOLD
FW_EXTRALIGHT FW_MEDIUM FW_ULTRABOLD
FW_ULTRALIGHT FW_SEMIBOLD FW_BLACK
FW_LIGHT FW_DEMIBOLD FW_HEAVY

 

Многие шрифты содержат символы только весов FW_NORMAL, FW_REGULAR (нормальный) и FW_BOLD (полужирный). Если задать нулевое значение (lfWeight = 0), используют вес по умолчанию.

6. Если lfItalic не равен 0, запрашивают шрифт с наклонными буквами.

7. Если lfUnderline не равен 0, запрашивают шрифт с подчеркиванием букв.

8. Если lfStrikeOut не равен 0, запрашивают шрифт с перечеркнутыми буквами.

9. lfCharSet – наиболее важное поле структуры. Оно задает набор требуемых символов. Может принимать значения констант из следующей таблицы:

Константа Описание
ANSI_CHARSET Набор символов в кодировке ANSI
DEFAULT_CHARSET Задают для запроса логического шрифта
SYMBOL_CHARSET Символьный шрифт (например, Wingdings)
SHIFTJIS_CHARSET Нужен для работы с японской версией Windows
OEM_CHARSET Набор символов в кодировке OEM

 

Если lfCharSet = 0, будет выбран шрифт ANSI_CHARSET.

10. lfOutPrecision задает необходимую степень соответствия между параметрами запрашиваемого и предоставляемого шрифта. Можно указывать одну из следующих констант:

Константы Описание
OUT_DEFAULT_PRECIS Степень соответствия по умолчанию
OUT_STRING_PRECIS или OUT_CHARACTER_PRECIS Выбрать шрифт с наибольшим соответствием в размерах символов
OUT_STROKE_PRECIS Искать шрифт с полным соответствием
OUT_TT_PRECIS Предпочтение шрифтам True Туре
OUT_DEVICE_PRECIS Выбрать шрифт устройства вывода
OUT_RASTER_PRECIS Выбрать растровый шрифт
OUT_TT_ONLY_PRECIS Выбирать только шрифты True Туре

 

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 задает качество отображения символов. Можно указывать одну из следующих констант:

Константа Описание
DEFAULT_QUALITY Качество не имеет значения
DRAFT_QUALITY Низкое качество
PROOF_QUALITY Высокое качество

13. lfPitchAndFamily задает ширину символов и определяет семейство шрифта. Фиксированная или переменная ширина символов задается при помощи следующих констант:

Константа Описание
DEFAULT_PITCH Не имеет значения, будет ли шрифт иметь фиксированную или переменную ширину символов
FIXED_PITCH Нужен шрифт фиксированной ширины символов
VARIABLE_PITCH Нужен шрифт с переменной шириной символов

Следующие константы задают семейство шрифта:

Константа Описание
FF_DECORATIVE Шрифт, содержащий маленькие рисунки (например, Wingdings)
FF_DONTCARE Семейство шрифта не имеет значения
FF_MODERN Семейство Modem. Фиксированная ширина символов, могут быть засечки (но могут и не бьггь)
FF_ROMAN Семейство Roman. Переменная ширина букв, есть засечки
FF_SCRIPT Семейство Script. Рукописный шрифт
FF_SWISS Семейство Swiss. Переменная ширина букв, нет засечек

14. lfFaceName – строка с именем шрифта. Длина этой строки не должна превышать 32 символа. Если lfFaceName – пустая строка, используют шрифт, который соответствует по другим атрибутам.

Получив запрос, GDI начинает искать шрифт, сравнивая последовательно поля lfCharSet, lfPitchAndFamily и lfFaceName. После сравнения этих полей GDI сравнивает высоту букв шрифта, затем поля lfWidth, lfItalic, lfUnderline и lfStrikeOut.







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.