Структура STROBJ (winddi.h)
Класс STROBJ или текстовый строковый объект содержит перечисление дескрипторов и позиций глифов для драйвера устройства.
Синтаксис
typedef struct _STROBJ {
ULONG cGlyphs;
FLONG flAccel;
ULONG ulCharInc;
RECTL rclBkGround;
GLYPHPOS *pgp;
LPWSTR pwszOrg;
} STROBJ;
Члены
cGlyphs
Указывает количество глифов в STROBJ.
flAccel
Флаги ускорителя. Этот элемент может иметь любое из следующих значений:
SO_BREAK_EXTRA
Интервал с фиксированной шириной добавляется к каждому символу разрыва.
SO_CHARACTER_EXTRA
Между каждой парой последовательных глифов добавляется интервал фиксированной ширины.
SO_CHAR_INC_EQUAL_BM_BASE
Интервал определяется размерами растровых рисунков. В этом контексте база растрового рисунка определяется как cx для горизонтального регистра, cy для вертикального регистра. Этот бит задан означает, что каждый глиф в шрифте растрового изображения (предоставленного GLYPHBITS в структуре GLYPHBITS GDI) будет иметь основание, равное ширине заранее для этого глифа. Это не означает, что это шрифт фиксированного тона. (Не используется для PATHOBJs.)
SO_DO_NOT_SUBSTITUTE_DEVICE_FONT
Драйвер принтера не должен заменять один из шрифтов принтера для выбора шрифта GDI.
SO_DXDY
Глифы должны отображаться в случайных позициях.
SO_ESC_NOT_ORIENT
Ориентация глифа отличается от направления escapement. Экранирование — это угол, который определяет направление текста с горизонтальным. Ориентация — это угол между базовым показателем глифа и направлением escapement.
SO_FLAG_DEFAULT_PLACEMENT
Векторы приращения по умолчанию используются для размещения символов.
SO_GLYPHINDEX_TEXTOUT
pwszOrg указывает на массив индексов глифов, а не на массив Юникода.
SO_HORIZONTAL
Текст является горизонтальным; слева направо или справа налево в зависимости от SO_REVERSED. Координата y предоставляется только для первого глифа в строке.
SO_MAXEXT_EQUAL_BM_SIDE
Растровые изображения имеют одинаковую ширину. В этом контексте сторона растрового изображения определяется как cy для горизонтального регистра и cx для вертикального регистра. Этот флаг гарантирует, что все глифы в шрифте будут иметь одинаковую сторону, равную сумме по возрастанию и убыванию. Однако этот бит указывает не только на константную сторону. Для горизонтального регистра этот бит также указывает, что вертикальное расстояние между верхней частью растрового изображения глифа и его происхождением символов равно значению возрастания для всех глифов. Для вертикального регистра этот бит указывает, что горизонтальное расстояние между источником глифа и "верхней частью" растрового изображения глифа (которое действительно является правым или левым, в зависимости от того, пишете ли вы в направлении положительной или отрицательной оси y) равно значению возрастания. В любом случае верхние и нижние части всех битовых изображений глифов лежат на одной линии в направлении записи. (Не используется для PATHOBJs.)
SO_REVERSED
Устанавливается, если горизонтальная — справа налево или вертикальная — снизу вверх.
SO_VERTICAL
Текст является вертикальным; "сверху вниз" или "снизу вверх" в зависимости от SO_REVERSED. Координата x предоставляется только для первого глифа в строке.
SO_ZERO_BEARINGS
Все глифы имеют нулевой интервал A и ноль C. Этот бит гарантирует, что черные ящики глифа не перекрываются.
ulCharInc
Указывает, является ли шрифт шрифтом с фиксированным шагом (монопространством). Если это так, этот элемент равен ширине глифов в пелях; в противном случае значение равно нулю. Если этот элемент не имеет нуля, GDI предоставляет допустимую координату только для первого символа в строке. Все остальные позиции символов должны быть созданы драйвером путем последовательного добавления значения этого элемента в направлении записи.
rclBkGround
Задает структуру RECTL , описывающую ограничивающий прямоугольник для строки.
pgp
Указатель на массив GLYPHPOS для всей строки. Может иметь значение NULL (см. следующий раздел о примечаниях ).
pwszOrg
Указатель на исходную строку Юникода или символы cGlyphs . В отличие от ее названия, эта строка обычно не заканчивается null. Кроме того, эта строка не всегда допустима, например в журнале с использованием шрифтов принтера. В этом случае этот параметр будет иметь значение NULL.
Комментарии
Драйвер может вызывать STROBJ_vEnumStart и STROBJ_bEnum для получения удостоверений и положений глифов в строке. Если pgp не имеет значение NULL, он указывает на массив GLYPHPOS, описывающий всю строку, и требуется только один вызов STROBJ_bEnum . Если pgp имеет значение NULL, STROBJ_bEnum придется вызывать повторно в цикле, чтобы получить все позиции глифа строки.
Требования
Требование | Значение |
---|---|
Заголовок | winddi.h (включая Winddi.h) |