Структура TEXTMETRIC содержит основную информацию о физическом шрифте. Все размеры даются на логических устройствах; то есть, они зависят от текущего распределения режима дисплейного контекста.
typedef struct tagTEXTMETRIC { LONG tmHeight; //Полная высота шрифта LONG tmAscent; //Высота над основной линией LONG tmDescent; //Высота подстрочных элементов LONG tmInternalLeading; //Пустое пространство над символами LONG tmExternalLeading; //Интервал между строками LONG tmAveCharWidth; //Средняя ширина символов LONG tmMaxCharWidth; //Максимальная ширина символов LONG tmWeight; //Насыщенность (жирность) символов LONG tmOverhang; //Дополнительная жирность для специальных шрифтов LONG tmDigitizedAspectX; //Горизонтальный коэффициент сжатия LONG tmDigitizedAspectY; //Вертикальный коэффициент сжатия BCHAR tmFirstChar; //Первый символ шрифта BCHAR tmLastChar; //Последний символ шрифта BCHAR tmDefaultChar; //Символ, выбираемый по умолчанию BCHAR tmBreakChar; //Символ, используемый для разделения слов BYTE tmItalic; //Не ноль, если шрифт курсивный BYTE tmUnderlined; //Не ноль, если шрифт подчеркнутый BYTE tmStruckOut; //Не ноль, если шрифт перечеркнутый BYTE tmPitchAndFamily; //Тип и семейство шрифта BYTE tmCharSet; //Идентификатор базового набора символов } TEXTMETRIC;
Получить информацию о текущем шрифте можно с помощью функции GetTextMetrics(). Её прототип таков:
BOOL CDC::GetTextMetrics(LPTEXTMETRIC lpTextAtrib) const;
Здесь параметр lpTextAtrib является указателем на структуру типа TEXTMETRIC, в которой после выполнения функции будут содержаться текстовые установки текущего шрифта, связанного с данным контекстом устройства. Функция возвращает ненулевое значение при успешном завершении и ноль - в противном случае.
Материал прислал Dmitry (astra@mail.iks.ru).