We're making a number of changes to the XML Paper Specification in v0.85 to address feedback and fix errors that we (or you) have found. We wanted to give you a small peek at what some of these changes are so far. These changes are not necessarily final and more changes are coming, as we work through the issues. This is merely a "snapshot in time" of the work that's proceeding.


·       The Markup Compatibility specification has been split out from the Open Packaging Conventions specification. Updated the wording to accommodate this change.

Chapter 1. XPS Document Format

·       Added a description of Chapter 12 and each appendix to the list of contents of the specification (1.1).

Chapter 2. Parts and Relationships

·       Updated sample XPS Document diagram in Example 2-1 to remove unsupported Annotations part and add DocumentStructure and StoryFragments parts (2.1).

·       Corrected “ImageHeight” TIFF tag references to “ImageLength” in Table 2-4 (

·       Removed duplicate “SamplesPerPixel” TIFF tag entry in Table 2-4 (

·       Added ICC Color Profile tag (34675) to Table 2-4, in addition to the reference in the color chapter (

·       Removed restriction on TIFF images only supporting embedded profile (inconsistency in spec). TIFF images also support association of a color profile part (

·       Changed references to the Markup Compatibility section of the Open Packaging Conventions to the now independent Markup Compatibility specification (2.3.1,

·       Clarified that markup compatibility mechanisms do not carry from part to part by inline URI reference or relationship (2.3.1).

·       Clarified the inclusion of both property elements and property attributes to be motivated by the need to support markup compatibility mechanisms for these elements (

·       Clarified whitespace usage around comma delimited pairs and leading or trailing whitespace to be consistent with the XML Schema Specification (2.3.4).

·       Moved Validity Rules section to new appendix “Conformance Requirements” (was 2.4).

Chapter 4. Graphics

·       Added a clarification that dash and gap lengths specified in the <Path> element’s StrokeDashArray attribute may vary in an implementation-specific way, referencing the Rendering Rules chapter for more details (4.1).

·       Added a clarification that producers MUST NOT specify path figures of a geometry with both the Figures attribute and a child <PathFigure> element (

·       Added new section to describe how smooth Bézier control points are derived for the abbreviated geometry syntax (

·       Added new section to clarify behavior of relative commands used in the abbreviated geometry syntax with regard to control point and end point specification in curves (

Chapter 5. Text

·       Clarified the range of valid values for the <Glyphs> element’s BidiLevel attribute to be from 0 to 61, inclusive (5.1).

·       Added markup and rendering example for the one-to-many cluster map example (

·       Added markup and rendering example for the many-to-many cluster map example (

·       Corrected typo in Table 5-1 to indicate that the value of the vOffset (not uOffset) is interpreted as an inverse value along the y-axis (5.1.3).

Chapter 6. Brushes

·       Clarified the description of the <VisualBrush> element’s Visual attribute to indicate that “visual element” includes <Path>, <Glyphs>, or <Canvas> elements (6.3).

·       Clarified the origin of the initial tile for tiling brushes (6.4.1).

·       Added new example (Example 6-8) to illustrate the behavior of a Viewbox attribute that specifies an area larger than the size of the image (

·       Added a cross-reference to the Rendering Rules chapter for full details of gradient handling (6.7).

Chapter 7. Common Properties

·       Clarified that Required Resource relationships for indirect resource dependencies, through a Remote Resource Dictionary part, is a burden on the producer. Consumers SHOULD validate, but may choose not to do so and MAY simply rely on proper declaration of the required resources (

·       Clarified that inline references to fonts or images in remote resource dictionary entries are interpreted with the same base URI as the Remote Resource Dictionary part, not from the base URI of the part referring to the particular remote resource dictionary entry (

·       Clarified that <PathGeometry.Transform> does not affect the stroke, where <Path.RenderTransform> does (7.4.5).

·       Changed Example 7-27 to use a solid color brush fill rather than a linear gradient brush to demonstrate the linear gradient brush OpacityMask more clearly (7.5.2).

Chapter 8. Color

·       Added explicit restriction on exponent forms of numbers in scRGB and ContextColor values (8.1.11).

·       Cleaned up typo (closing parenthesis was deleted) in syntax for N-Channel Colors and Named Colors (8.1.15, 8.1.16).

·       Added additional guidance on the usage of named color profiles (8.1.16).

·       Added Windows Media Photo packed pixel formats for sRGB (8.2.1).

·       Added the following Windows Media Photo pixel formats for scRGB: WICPixelFormat64bppRGBFixedPoint, WICPixelFormat64bppRGBHalf, WICPixelFormat128bppRGBFixedPoint, WICPixelFormat32bppRGBE (8.2.2).

·       Addressed explicitly the ability for consumers that do not understand rich colors (for example, scRGB and CMYK) to process those colors in the simpler sRGB space, which may introduce visual deviations for alpha blending and gradients (8.4).

·       Added the following clarification to PageBlendColorSpace setting’s ICCProfile option in Table 8-2: “The profile MUST be an output profile (containing AToB0Tag, BToA0Tag, AToB1Tag, BToA1Tag, AToB2Tag, and BToA2Tag), otherwise it MUST be ignored. The rendering intent specified by PageICMRenderingIntent PrintTicket setting is used, unless the profile specifies a rendering intent of its own. Elements using the profile specified by PageBlendColorSpace MAY be blended naively (channel-by-channel) without converting through PCS.” (8.5)

·       Clarified the PageICMRenderIntent description in Table 8-2: “The rendering intent as defined by the ICC Version 2 specification. This value SHOULD be ignored for elements using a profile that specifies the rendering intent in the profile.” (8.5)

Chapter 9. Document Structure and Interactivity

·       Corrected Example 9-2 to correctly use the OutlineTarget attribute instead of LinkTarget (

Chapter 10. XPS Document Package Features

·       Replaced “Signature Criteria” section with the much more detailed “Signing Rules” and “Signature Validity” sections ( and

Chapter 11. Rendering Rules

·       Added an implementation limit (Table 11-1) for nested VisualBrush elements (at least 16) and guidance for consumers when encountering markup that exceeds the limit: “If the nesting level is higher than the limit, a consumer SHOULD attempt to flatten the nested content to a bitmap representation rather than failing to draw.” (11.2)

·       Added an implementation limit (Table 11-1) for the number of dash-gap segments in the StrokeDashArray property. There is no preset limit; the practical limit depends on the StrokeThickness and the total length of the stroked path (11.2).

·       Corrected gradient interpolation calculations for SpreadMethod of Repeat ONLY to apply just to offsets 0 <= t < 1; this was offsets 0 <= t <=1 (11.3.2, 11.3.3).

·       Clarified the meaning of “closest enclosing gradient stops” for linear and radial gradient interpolation calculations (11.3.2, 11.3.3).

·       Corrected note regarding behavior of stroke rendering and fill when the geometry is less than the value of the stroke thickness across. This was, incorrectly, “half of the value of the stroke thickness” (11.6).

·       Renamed section title from “Dash Caps for Solid Corners” to “Dash Array Adjustment for Solid Corners” to be more descriptive (

·       Added to Dash Array Adjustment for Solid Corners: “Note: If a smooth edge includes curved segments, the length computation of the smooth edge is implementation specific; as a result, different implementations MAY behave differently if the factor used for compression or expansion is very close to 1.2 or (1 / 1.2).” (

Appendix C. XPS Document Schema

·       Rearranged order of elements to optimize performance of validating readers.

·       Removed extraneous comments.

Appendix D. Resource Dictionary Key Schema

·       Corrected the pattern of the Key attribute to match ST_Name from the XPS Document Schema.

Appendix G. Abbreviated Geometry Syntax Algorithm

·       Corrected algorithm to correctly choose true or false rather than 1 or 0 for the IsLargeArc property of an <ArcSegment>.

·       Corrected algorithm to correctly choose Clockwise or Counterclockwise rather than 1 or 0 for the SweepDirection property of an <ArcSegment>.

Appendix I. Standard Namespaces and Content Types

·       Updated packaging namespaces, content types, and relationship types as previously noted in editorial notes.

Appendix J. Conformance Requirements

·       New appendix.


·       Added reference to new Markup Compatibility Specification.

·       Updated date on Open Packaging Conventions to 2006.

That's it for this round. We'll post more as we get further through the change process. If there are any entries above that you'd like more details about, let us know.

- The XPS Team