Поделиться через


Функция 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

Формат данных, извлекаемых функцией. Этот параметр может принимать одно из указанных ниже значений.

Значение Значение
GGO_BEZIER
Функция извлекает данные кривой в виде кубического сплайна Безье (не в формате квадратичных сплайнов).
GGO_BITMAP
Функция извлекает растровое изображение глифа. Сведения о выделении памяти см. в следующем разделе Примечания.
GGO_GLYPH_INDEX
Указывает, что параметр uChar является индексом глифа TrueType, а не кодом символа. Дополнительные примечания по индексации глифов см. в функции ExtTextOut .
GGO_GRAY2_BITMAP
Функция извлекает растровое изображение глифа, содержащее пять уровней серого.
GGO_GRAY4_BITMAP
Функция извлекает растровое изображение глифа, содержащее 17 уровней серого цвета.
GGO_GRAY8_BITMAP
Функция извлекает битовое изображение глифа, содержащее 65 уровней серого цвета.
GGO_METRICS
Функция извлекает только структуру GLYPHMETRICS , заданную lpgm. LpvBuffer игнорируется. Это значение влияет на значение возвращаемого значения функции при сбое; см. раздел Возвращаемые значения.
GGO_NATIVE
Функция извлекает точки данных кривой в собственном формате средства растеризатора и использует единицы разработки шрифта.
GGO_UNHINTED
Функция возвращает только нехищенные контуры. Этот флаг работает только в сочетании с 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

См. также раздел

ExtTextOut

FORM_INFO_1

Функции шрифта и текста

Общие сведения о шрифтах и тексте

ГЛИФМЕТРИКИ

GetOutlineTextMetrics

MAT2

OUTLINETEXTMETRIC

ТОЧКИ

POINTFX

TTPOLYCURVE

TTPOLYGONHEADER