2.2.5 EmrText Object

The EmrText object contains values for text output.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

Reference

...

Chars

offString

Options

Rectangle (optional)

...

...

...

offDx

StringBuffer (variable)

...

...

...

DxBuffer (variable, optional)

...

...

...

Reference (8 bytes): A PointL object ([MS-WMF] section 2.2.2.15) that specifies the coordinates of the reference point used to position the string. The reference point is defined by the last EMR_SETTEXTALIGN record (section 2.3.11.25). If no such record has been set, the default alignment is (TA_LEFT, TA_TOP), which is specified using TextAlignmentMode flags ([MS-WMF] section 2.1.2.3).

Chars (4 bytes): An unsigned integer that specifies the number of characters in the string.

offString (4 bytes): An unsigned integer that specifies the offset to the output string in bytes, from the start of the record in which this object is contained. This value is 8- or 16-bit aligned, according to the character format.

Options (4 bytes): An unsigned integer that specifies how to use the rectangle specified in the Rectangle field. This field can be a combination of more than one ExtTextOutOptions enumeration (section 2.1.11) values.

Rectangle (16 bytes, optional): A RectL object ([MS-WMF] section 2.2.2.19) that defines a clipping and/or opaquing rectangle in logical units. This rectangle is applied to the text output performed by the containing record.<44>

offDx (4 bytes): An unsigned integer that specifies the offset to an intercharacter spacing array in bytes, from the start of the record in which this object is contained. This value is 32-bit aligned.

StringBuffer (variable): The character string buffer.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

UndefinedSpace1 (variable, optional)

...

OutputString (variable)

...

UndefinedSpace1 (variable, optional): The number of unused bytes. The OutputString field is not required to follow immediately the preceding portion of this structure.

OutputString (variable): An array of characters that specify the string to output. The location of this field is specified by the value of offString in bytes from the start of this record. The number of characters is specified by the value of Chars.

DxBuffer (variable, optional): The character spacing buffer.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

UndefinedSpace2 (variable, optional)

...

OutputDx (variable)

...

UndefinedSpace2 (variable, optional): The number of unused bytes. The OutputDx field is not required to follow immediately the preceding portion of this structure.

OutputDx (variable): An array of 32-bit unsigned integers that specify the output spacing between the origins of adjacent character cells in logical units. The location of this field is specified by the value of offDx in bytes from the start of this record. If spacing is defined, this field contains the same number of values as characters in the output string.

If the Options field of the EmrText object contains the ETO_PDY flag, then this buffer contains twice as many values as there are characters in the output string, one horizontal and one vertical offset for each, in that order.

If ETO_RTLREADING is specified, characters are laid right to left instead of left to right. No other options affect the interpretation of this field.

The size and encoding of the characters in the OutputString is determined by the type of record that contains this object, as follows: