Функция GetGlyphOutlineA (wingdi.h)
Функция GetGlyphOutline извлекает контур или растровое изображение для символа в шрифте TrueType, выбранного в указанном контексте устройства.
Синтаксис
DWORD GetGlyphOutlineA(
[in] HDC hdc,
[in] UINT uChar,
[in] UINT fuFormat,
[out] LPGLYPHMETRICS lpgm,
[in] DWORD cjBuffer,
[out] LPVOID pvBuffer,
[in] const MAT2 *lpmat2
);
Параметры
[in] hdc
Дескриптор контекста устройства.
[in] uChar
Символ, для которого должны быть возвращены данные.
[in] fuFormat
Формат данных, извлекаемых функцией. Этот параметр может принимать одно из указанных ниже значений.
Значение | Значение |
---|---|
|
Функция извлекает данные кривой в виде кубического сплайна Безье (не в формате квадратичных сплайнов). |
|
Функция извлекает растровое изображение глифа. Сведения о выделении памяти см. в следующем разделе Примечания. |
|
Указывает, что параметр uChar является индексом глифа TrueType, а не кодом символа. Дополнительные примечания по индексации глифов см. в функции ExtTextOut . |
|
Функция извлекает растровое изображение глифа, содержащее пять уровней серого. |
|
Функция извлекает растровое изображение глифа, содержащее 17 уровней серого цвета. |
|
Функция извлекает битовое изображение глифа, содержащее 65 уровней серого цвета. |
|
Функция извлекает только структуру GLYPHMETRICS , заданную lpgm. LpvBuffer игнорируется. Это значение влияет на значение возвращаемого значения функции при сбое; см. раздел Возвращаемые значения. |
|
Функция извлекает точки данных кривой в собственном формате средства растеризатора и использует единицы разработки шрифта. |
|
Функция возвращает только нехищенные контуры. Этот флаг работает только в сочетании с GGO_BEZIER и GGO_NATIVE. |
Обратите внимание, что для GGO_GRAYn_BITMAP значений функция получает битовое изображение глифа, содержащее уровни серого цвета n^2+1 (n в квадрате плюс один).
[out] lpgm
Указатель на структуру GLYPHMETRICS, описывающую размещение глифа в ячейке символов.
[in] cjBuffer
Размер (в байтах) буфера (*lpvBuffer), в котором функция предназначена для копирования сведений о символе структуры. Если это значение равно нулю, функция возвращает требуемый размер буфера.
[out] pvBuffer
Указатель на буфер, который получает сведения о символе структуры. Если это значение равно NULL, функция возвращает требуемый размер буфера.
[in] lpmat2
Указатель на структуру MAT2 , задающую матрицу преобразования для символа.
Возвращаемое значение
Если указано GGO_BITMAP, GGO_GRAY2_BITMAP, GGO_GRAY4_BITMAP, GGO_GRAY8_BITMAP или GGO_NATIVE и функция выполняется успешно, возвращаемое значение больше нуля; в противном случае возвращаемое значение будет GDI_ERROR. Если указан один из этих флагов и размер буфера или адрес равен нулю, возвращаемое значение указывает требуемый размер буфера в байтах.
Если указан GGO_METRICS и функция завершается сбоем, возвращаемое значение GDI_ERROR.
Комментарии
Контур глифа, возвращаемый функцией GetGlyphOutline , предназначен для глифа, размещенного в сетке. (Глиф с сеткой — это глиф, который был изменен таким образом, чтобы его растровое изображение максимально соответствовало первоначальному дизайну глифа.) Если приложению требуется неизмененный контур глифа, оно может запросить структуру глифа для символа в шрифте, размер которого равен единице em шрифта. Значение единицы em шрифта хранится в элементе otmEMSquare структуры OUTLINETEXTMETRIC .
Битовое изображение глифа, возвращаемое Командой GetGlyphOutline при указании GGO_BITMAP, является монохромным растровым рисунком с выравниванием DWORD, ориентированным на строки. Если указано GGO_GRAY2_BITMAP, возвращаемое растровое изображение представляет собой выровнированный по DWORD массив строк байтов, значения которого варьируются от 0 до 4. Если указано GGO_GRAY4_BITMAP, возвращаемое растровое изображение представляет собой выровнированный по DWORD строковый массив байтов, значения которого варьируются от 0 до 16. Если указано GGO_GRAY8_BITMAP, то возвращаемое растровое изображение представляет собой выровнированный по DWORD строковый массив байтов, значения которого варьируются от 0 до 64.
Собственный буфер, возвращаемый GetGlyphOutline при указании GGO_NATIVE, является контуром глифа. Контур глифа возвращается в виде ряда из одного или нескольких контуров, определенных структурой TTPOLYGONHEADER , за которой следует одна или несколько кривых. Каждая кривая в контуре определяется структурой TTPOLYCURVE , за которой следует ряд точек данных POINTFX . Точки POINTFX — это абсолютные позиции, а не относительные перемещения. Начальная точка контура задается элементом pfxStart структуры TTPOLYGONHEADER . Начальная точка каждой кривой — это последняя точка предыдущей кривой или начальная точка контура. Количество точек данных в кривой хранится в элементе cpfx структуры TTPOLYCURVE . Размер каждого контура в буфере в байтах хранится в элементе cb структуры TTPOLYGONHEADER . Дополнительные определения кривых упаковываются в буфер, следующий за предыдущими кривыми, а дополнительные контуры упаковываются в буфер, следующий за предыдущими контурами. Буфер содержит столько контуров, сколько помещается в буфер, возвращаемый GetGlyphOutline.
Структура GLYPHMETRICS определяет ширину символьной ячейки и расположение глифа в ячейке символов. Источник ячейки символов находится в левой части ячейки на базовой линии шрифта. Расположение источника глифа относится к источнику ячейки символов. Высота символьной ячейки, базовые показатели и другие метрики, глобальные для шрифта, задаются структурой OUTLINETEXTMETRIC .
Приложение может изменять символы, полученные в растровом или собственном формате, указав матрицу преобразования 2 на 2 в параметре lpMatrix . Например, глиф можно изменить с помощью сдвига, поворота, масштабирования или любого сочетания трех с помощью матричного умножения.
Дополнительные сведения о структуре глифов находятся в технических спецификациях TrueType и OpenType.
Примечание
Заголовок wingdi.h определяет GetGlyphOutline в качестве псевдонима, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Использование псевдонима, не зависящий от кодирования, с кодом, который не является нейтральным для кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или времени выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | wingdi.h (включая Windows.h) |
Библиотека | Gdi32.lib |
DLL | Gdi32.dll |