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


Функция 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
Функция извлекает данные кривой в виде куба bézier spline (не в формате квадратной строки spline).
GGO_BITMAP
Функция извлекает растровое изображение глифа. Сведения о выделении памяти см. в следующем разделе "Примечания".
GGO_GLYPH_INDEX
Указывает, что параметр uChar является индексом Glyph 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 структуры OUTLINETEXT METRIC.

Битовое изображение глифа, возвращаемое GetGlyphOutline при указании GGO_BITMAP является выровненным по строкам, ориентированным на строки, монохромным растровым изображением. При указании GGO_GRAY2_BITMAP возвращается растровое изображение, выравниваемое по строке массив байтов, значения которого варьируются от 0 до 4. При указании GGO_GRAY4_BITMAP возвращается растровое изображение, выравниваемое по строке массив байтов, значения которого варьируются от 0 до 16. При указании GGO_GRAY8_BITMAP возвращается растровое изображение, выравниваемое по строке массив байтов, значения которого варьируются от 0 до 64.

Собственный буфер, возвращаемый GetGlyphOutline при указании GGO_NATIVE является глифом. Контур глифа возвращается в виде ряда одного или нескольких контуров, определенных структурой TTPOLYGONHEADER, за которой следует одна или несколько кривых. Каждая кривая в контуре определяется структурой TTPOLYCURVE, за которой следует ряд точек данных POINTFX. POINTFX точки являются абсолютными позициями, а не относительными перемещениями. Отправной точкой контура является pfxStart член структуры TTPOLYGONHEADER. Начальная точка каждой кривой — это последняя точка предыдущей кривой или начальная точка контура. Количество точек данных в кривой хранится в cpfx член структуры TTPOLYCUR VE. Размер каждого контура в буфере в байтах хранится в cb член структуры TTPOLYGONHEADER. Дополнительные определения кривых упаковываются в буфер после предыдущих кривых, а дополнительные контуры упаковываются в буфер, следующий за предыдущими контурами. Буфер содержит столько контуров, сколько соответствует буферу, возвращаемого GetGlyphOutline.

Структура GLYPHMETRICS указывает ширину ячейки символа и расположение глифа в ячейке символа. Источник ячейки символа расположен в левой части ячейки в базовой части шрифта. Расположение источника глифа относительно источника символьной ячейки. Высота ячейки символов, базовых показателей и других метрик, глобальных шрифта, предоставляется структурой OUTLINETEXTMETRIC.

Приложение может изменить символы, полученные в растровом рисунке или собственном формате, указав матрицу преобразования 2-от 2 в параметре lpMatrix. Например, глиф можно изменить путем увеличения, поворота, масштабирования или любого сочетания трех с помощью умножения матрицы.

Дополнительные сведения о контурах глифа находятся в спецификациях TrueType и OpenType.

Заметка

Заголовок wingdi.h определяет GetGlyphOutline как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 2000 Профессиональный [только классические приложения]
минимальный поддерживаемый сервер Windows 2000 Server [только классические приложения]
целевая платформа Виндоус
заголовка wingdi.h (включая Windows.h)
библиотеки Gdi32.lib
DLL Gdi32.dll

См. также

ExtTextOut

FORM_INFO_1

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

шрифтов и текста

ГЛИФМЕТРИИ

GetOutlineTextMetrics

MAT2

OUTLINETEXTMETRIC

POINT

POINTFX

TTPOLYCURVE

TTPOLYGONHEADER