2.3 EMF Records

This section specifies the EMF metafile records, which have been grouped into the following categories.

Name

Section

Description

Bitmap record types

2.3.1

Manage and output bitmap images.

Clipping record types

2.3.2

Specify and manage clipping regions.

Comment record types

2.3.3

Define formats for specifying arbitrary private data, embedding records in other metafile formats, and adding new or special-purpose commands.

Control record types

2.3.4

Define the start and end of an EMF metafile and its properties.

Drawing record types

2.3.5

Perform graphics drawing.

Escape record types

2.3.6

Execute printer driver functions.

Object creation record types

2.3.7

Create graphics objects.

Object manipulation record types

2.3.8

Manage and modify graphics objects.

OpenGL record types

2.3.9

Specify metafile records generated by OpenGL [OPENGL].

Path bracket record types

2.3.10

Specify and manipulate paths in path brackets.

State record types

2.3.11

Specify and manage graphics properties.

Transform record types

2.3.12

Specify and modify world-space to page-space transforms.

All EMF records MUST be multiples of 4 bytes in length; hence, each record starts on a 32-bit offset from the start of the metafile. To ensure each subsequent record also starts on a 32-bit boundary, an AlignmentPadding field is used, if necessary. The contents of AlignmentPadding fields are indeterminate and MUST be ignored. In general, such fields are shown only in the generic definitions of record categories.

To ensure maximum compatibility, implementations need to allow for record truncation for unused fields at the end of an EMF record. If there are extra data at the end of the record undocumented by this specification, these data MUST be ignored.