Структура 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)

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

DrvGetGlyphMode

DrvTextOut