Функция GetGlyphOutline


Функция GetGlyphOutline извлекает контур (обводку) или точечный рисунок  символа в шрифте TrueType, который выбирается в указанный контекст устройства.

Синтаксис 

DWORD GetGlyphOutline(
  HDC hdc,             // дескриптор DC
  UINT uChar,          // запрашиваемый символ
  UINT uFormat,        // формат данных
  LPGLYPHMETRICS lpgm, // метрики глифа
  DWORD cbBuffer,      // размер буфера данных
  LPVOID lpvBuffer,    // буфер данных
  CONST MAT2 *lpmat2   // матрица преобразования
);

Параметры

hdc
[in] Дескриптор контекста устройства.
uChar
[in] Устанавливает символ, для которого должны возвратиться данные.
uFormat
[in] Устанавливает формат данных, которые извлекает функция. Этим параметром могут быть одно из ниже перечисленных значений.

 

Значение Предназначение
GGO_BEZIER Windows 2000/XP: Функция извлекает данные кривой как кубические сплайны Безье (не в квадратичном сплайновом формате). 
GGO_BITMAP Функция извлекает точечный рисунок глифа. Информацию о распределении памяти, см. в следующем разделе Замечаний. 
GGO_GLYPH_INDEX Windows 95/98/Me, Windows NT 4.0 и позже: Указывает, что параметр uChar  - индекс глифа шрифта (TrueType), а не код буквы. См. функцию ExtTextOut, дополнительные замечания по Индексации Глифа. 
GGO_GRAY2_BITMAP Windows 95/98/Me, Windows NT 4.0 и позже: Функция извлекает точечный рисунок глифа, который содержит пять уровней полутонов. 
GGO_GRAY4_BITMAP Windows 95/98/Me, Windows NT 4.0 и позже: Функция извлекает точечный рисунок глифа, который содержит 17 уровней полутонов. 
GGO_GRAY8_BITMAP Windows 95/98/Me, Windows NT 4.0 и позже: Функция извлекает точечный рисунок глифа, который содержит 65 уровней полутонов. 
GGO_METRICS Функция  извлекает только структуру GLYPHMETRICS, заданную параметром lpgm. Другие буфера игнорируются. Этот флажок воздействует на возвращаемое значение функции при завершении по ошибке; см. раздел Возвращаемые значения. 
GGO_NATIVE Функция извлекает данные точек кривой в родном формате растеризации и использует расчетные единицы измерения шрифта. 
GGO_UNHINTED Windows 2000/XP: Функция  возвращает только наброски контуров. Этот флажок работает только вместе с флажками GGO_BEZIER и GGO_NATIVE. 
 

Обратите внимание! на то, что для значений GGO_GRAYN_BITMAP функция извлекает точечный рисунок глифа, который содержит n2+1 (n возведенный в квадрат плюс один) уровней серого.

lpgm
[out] Указатель на структуру GLYPHMETRICS, описывающую размещение глифа в символьном знакоместе.
cbBuffer
[in] Устанавливает размер, в байтах, буфера (*lpvBuffer), куда функция должна копировать информацию об эскизе символа. Если это значение равняется нулю, функция возвращает значение требуемого размера буфера.
lpvBuffer
[out] Указатель на буфер, который принимает информацию об эскизе символа. Если это значение - ПУСТО (NULL), функция возвращает значение необходимого размера буфера.
lpmat2
[in] Указатель на структуру MAT2, устанавливающую матрицу преобразования для символа.

Возвращаемые значения

Если флажок GGO_BITMAP, GGO_GRAY2_BITMAP, GGO_GRAY4_BITMAP, GGO_GRAY8_BITMAP или GGO_NATIVE установлен, и функция завершается успешно, возвращаемое значение больше чем нуль; в противном случае, возвращаемое значение - GDI_ERROR. Если одни из этих флажков установлен, а размер буфера, или адрес равняется нулю, возвращаемое значение устанавливает обязательный размер буфера, в байтах.

Если флажок GGO_METRICS установлен, а функция завершается ошибкой, возвращаемое значение - GDI_ERROR.

Windows NT/2000/XP: Чтобы получить дополнительную информацию об ошибке, вызовите функцию GetLastError.

Замечания

Контур глифа, возвращенный функцией 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.

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

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

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

Дополнительная информация об эскизе глифа, располагается в технические спецификации шрифтов формата TrueType и OpenType .

Windows 95/98/Me: GetGlyphOutlineW поддерживается подпрограммой Microsoft Layer for Unicode. Чтобы использовать ее, Вы должны добавить некоторые файлы к вашему приложению, как изложено в требованиях этой подпрограммы для систем Windows 95/98/Me.

Смотри также

Обзор шрифты и текст, Функции, используемые шрифтами и текстом,   ExtTextOut, FORM_INFO_1 , GetOutlineTextMetrics, GLYPHMETRICS, MAT2, OUTLINETEXTMETRIC, POINT, POINTFX, TTPOLYCURVE, TTPOLYGONHEADER

Размещение и совместимость GetGlyphOutline

Windows. NET Server

Да

Windows XP

Да

Windows 2000

Да

Windows NT

Да версии 3.1 и выше

Windows Me

Да

Windows 98

Да

Windows 95

Да

Используемая библиотека

Gdi32.lib

Заголовочный файл

 

- объявлено в

Wingdi.h

- включено в

Windows.h

Unicode

Реализуется как версии Unicode и  ANSI в Windows NT /2000/XP.

Поддерживается также подпрограммой Microsoft Layer for Unicode

Замечания по платформе

Не имеется

 

Назад в оглавление
На главную страницу
На оглавление справки

Hosted by uCoz