2.2.2.2.1.1.2.14 FastIndex (FASTINDEX_ORDER)

The FastIndex Primary Drawing Order encodes a set of glyph indices at a specified position. This order is an improved version of the GlyphIndex (section 2.2.2.2.1.1.2.13) Primary Drawing Order. The regular GlyphIndex order contains five brush fields that the FastIndex order does not: BrushOrgX, BrushOrgY, BrushStyle, BrushHatch, and BrushExtra. These extra fields MUST all be implicitly assumed to exist and contain default values of zero (implying that a solid color brush will be used).

 Encoding order number: 19 (0x13)
 Negotiation order number: 19 (0x13)
 Number of fields: 15
 Number of field encoding bytes: 2
 Maximum encoded field length: 285 bytes
  


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

cacheId (optional)

fDrawing (optional)

BackColor (optional)

...

ForeColor (optional)

...

BkLeft (variable)

BkTop (variable)

...

BkRight (variable)

BkBottom (variable)

...

OpLeft (variable)

OpTop (variable)

...

OpRight (variable)

OpBottom (variable)

...

X (optional)

Y (optional)

...

VariableBytes (variable)

cacheId (1 byte): An 8-bit, unsigned integer. The ID of the glyph cache in which the glyph data MUST be stored. This value MUST be in the range 0 to 9 (inclusive).

fDrawing (2 bytes): A 16-bit, unsigned integer. Combined flAccel and ulCharInc fields from the GlyphIndex (section 2.2.2.2.1.1.2.13) Primary Drawing Order. The high-order byte contains the flAccel field, and the low-order byte contains the ulCharInc field.

BackColor (3 bytes): The text color described by using a Generic Color (section 2.2.2.2.1.1.1.8) structure.

ForeColor (3 bytes): Opaque rectangle color described by using a Generic Color (section 2.2.2.2.1.1.1.8) structure.

BkLeft (variable): Left coordinate of the text background rectangle specified by using a Coord Field (section 2.2.2.2.1.1.1.1).

BkTop (variable): Top coordinate of the text background rectangle specified by using a Coord Field (section 2.2.2.2.1.1.1.1).

BkRight (variable): Right coordinate of the text background rectangle specified by using a Coord Field (section 2.2.2.2.1.1.1.1).

BkBottom (variable): Bottom coordinate of the text background rectangle specified by using a Coord Field (section 2.2.2.2.1.1.1.1).

OpLeft (variable): Left coordinate of the opaque rectangle specified by using a Coord Field (section 2.2.2.2.1.1.1.1). This field MUST be set to 0 if it is the same as BkLeft.

OpTop (variable): The top coordinate of the opaque rectangle specified by using a Coord Field (section 2.2.2.2.1.1.1.1).

This field MUST contain opaque rectangle encoding flags if the OpBottom field is set to be the value of -32768. In this case, OpTop holds the encoding flags in the low 4 bits.

Value

Meaning

OPRECT_BOTTOM_ABSENT

0x01

Bottom coordinate of the opaque rectangle is the same as BkBottom.

OPRECT_RIGHT_ABSENT

0x02

Right coordinate of the opaque rectangle is the same as BkRight.

OPRECT_TOP_ABSENT

0x04

Top coordinate of the opaque rectangle is the same as BkTop.

OPRECT_LEFT_ABSENT

0x08

Left coordinate of the opaque rectangle is the same as BkLeft.

The only valid combinations of the encoding flags that are currently supported are as follows:

  • 0x0F: The left, top, right, and bottom coordinates of the opaque rectangle all match the background text rectangle and are absent.

  • 0x0D: The left, top, and bottom coordinates of the opaque rectangle all match the background text rectangle and are absent. The actual value of the right coordinate is present.

OpRight (variable): The right coordinate of the opaque rectangle specified using a Coord Field (section 2.2.2.2.1.1.1.1). This field MUST be set to 0 if it is the same as BkRight.

OpBottom (variable): The bottom coordinate of the opaque rectangle specified using a Coord Field (section 2.2.2.2.1.1.1.1). This field MUST be set to -32768 if OpTop contains opaque rectangle encoding flags (see the OpTop field).

X (2 bytes): A 16-bit, signed integer. The x-coordinate of the point where the origin of the starting glyph MUST be positioned specified using a Coord Field (section 2.2.2.2.1.1.1.1). This field MUST be set to -32768 if it is the same as BkLeft.

Y (2 bytes): A 16-bit, signed integer. The y-coordinate of the point where the origin of the starting glyph MUST be positioned specified using a Coord Field (section 2.2.2.2.1.1.1.1). This field MUST be set to -32768 if it is the same as BkTop.

VariableBytes (variable): A One-Byte Header Variable Field (section 2.2.2.2.1.1.1.2) structure. The contents and format of this field are the same as the VariableBytes field of the GlyphIndex (section 2.2.2.2.1.1.2.13) Primary Drawing Order.