Функция GetGlyphOutline извлекает контур (обводку) или точечный рисунок символа в шрифте TrueType, который выбирается в указанный контекст устройства.
Синтаксис
DWORD GetGlyphOutline( HDC hdc, // дескриптор DC UINT uChar, // запрашиваемый символ UINT uFormat, // формат данных LPGLYPHMETRICS lpgm, // метрики глифа DWORD cbBuffer, // размер буфера данных LPVOID lpvBuffer, // буфер данных CONST MAT2 *lpmat2 // матрица преобразования ); |
Значение | Предназначение |
---|---|
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 возведенный в квадрат плюс один) уровней серого. |
Если флажок 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 |
Замечания по платформе |
Не имеется |