<pre class="metadata">
Title: CSS Print Profile
Shortname: css-print
Group: csswg
Level:
Status: ED
Work status: abandoned
TR: http://www.w3.org/TR/css-print/
ED: https://dev.w3.org/csswg/css-print/
Previous Version: https://www.w3.org/TR/2013/NOTE-css-print-20130314/
Editor: Elika J. Etemad, w3cid 35400
Editor: Melinda Grant, Hewlett-Packard Company, w3cid 33062
Default Biblio Status: current
Abstract:
  <p>This specification defines a subset of <cite>Cascading Style
  Sheets Level 2, revision 1</cite> [[!CSS21]] and <cite>CSS Paged
  Media Level 3</cite> [[!CSS3PAGE]] for printing to low-cost devices.
  It is designed for printing in situations where it is not feasible
  or desirable to install a printer-specific driver, and for
  situations were some variability in the output is acceptable.</p>
  <p>This profile is designed to work in conjunction with
  <cite>XHTML-Print</cite> [[XHTML-PRINT]] and defines a minimum level
  of conformance as well as an extension set that provides stronger
  layout control for the printing of mixed text and images, tables and
  image collections.</p>
  <p><strong>This profile is obsolete. Please see the latest <a
  href="https://www.w3.org/TR/CSS/" >CSS Snapshot</a> for the
  specifications that make up CSS.</strong></p>
Status text:
   <p>Relative to the <a
   href="https://www.w3.org/TR/2004/CR-css-print-20040225/" >previous
   Candidate Recommendation</a>, this version adds two new features
   ('object-fit' and 'object-position'), synchronizes this profile with changes to
   <a href="https://www.w3.org/TR/xhtml-print/" >XHTML-Print</a>,
   removes redundancies with <a
   href="https://www.w3.org/TR/css3-page/" >CSS Paged Media
   Level 3</a> and makes miscellaneous clarifications and editorial
   improvements.</p>
   <p>Relative to the <a
   href="https://www.w3.org/TR/2006/WD-css-print-20061013/" >previous
   Working Draft</a>, this version updates the names and behavior of
   'object-fit' and 'object-position' to match the Candidate
   Recommendation of <a href="https://www.w3.org/TR/css3-images/" >CSS
   Images and Replaced Content Level 3</a> (and <a
   href="#section-images" >adds a mapping allowance</a>), and updates
   references to <a href="https://www.w3.org/TR/css3-page/" >CSS Paged
   Media Level 3</a> and <a href="https://www.w3.org/TR/CSS21/">CSS 2.1</a>.</p>
   <p><em>At this time, the CSS Working Group does not envisage
   further work on this specification and does not plan to propose it
   as a W3C Recommendation.</em></p>
</pre>
<pre class="link-defaults">
spec:css-images-3; type:value; text:fill
</pre>
<pre class="anchors">
urlPrefix:https://www.w3.org/TR/2011/REC-CSS2-20110607/colors.html#propdef-
    spec:CSS21; type:property; text:color
    spec:CSS21; type:property; text:display
    spec:CSS21; type:property; text:vertical-align
</pre>
<pre class="biblio">
  {
  "CSSPP": {
  "title": "CSS Print Profile",
  "authors": ["D. Wright", "J. Bigelow, eds."],
  "publisher": "PWG",
  "status": "Proposed Standard 5102.2",
  "date": "28 March 2003",
  "href": "http://www.pwg.org/xhtml-print/HTML-Version/CSS-Print.html"
  }
  }
</pre>

<style>
    th { background: #005A9C; color: white; }
    tr.yes { background: aqua; }
    tr.no  { background: transparent; }
    tr.enh { background: yellow; }
      .new { color : blue } /* added during 11/4 pwg review */
      .tableNotes { font-size: 75%;font-style: italic;  margin-bottom: 0in; padding-bottom: 0}
      .aTableNote { font-size: 75%;  margin:0; margin-left: .125in; padding: 0;}
      .editorial { display: block; font-family:  arial, helvetica, sans-serif; 
                   font-size: 80%;
                   margin-left: .5in; margin-right: 1in ; padding: 0.125in;
                   background: #FFFFDD ;
                 }
     
      .editorial:after { content: "Ed."}
    div.editorial pre {padding: 0; margin: 0 0 0 0;color:maroon; 
                       font-family: helvetica, sans-serif; font-size:90%;}
    table.keys td { vertical-align:top; margin-top: 5px;}
    .RFC2119 { text-transform: lowercase; font-style: italic }
    em em.RFC2119 { text-transform: lowercase; font-style: normal }
</style>

<!-- ****************** -->
<!--      OVERVIEW      -->
<!-- ****************** -->
<h2 id="section-overview">1. Overview</h2>
<p> All sections of this document are normative unless noted as informative.
</p>

<p>This document specifies a profile of the <cite>Cascading Style Sheets,
level 2, revision 1</cite> (CSS 2.1) specification [[!CSS21]] along with
the <cite>CSS Paged Media Level 3</cite> [[!CSS3PAGE]]
and <cite>CSS Images Level 3</cite> [[!CSS3-IMAGES]]
</p>


<p>CSS 2.1 specifies how developers can author style sheets for 
presenting documents across multiple devices and media types. While this is very 
important, it is also important that authors have an understanding of what 
features are supported on these different devices. Likewise, it is important 
that similar devices operate in a similar manner. Otherwise, authors could need 
to develop style sheets for each version of each device -- raising the cost of 
content development and decreasing interoperability.</p>

<p>
The CSS Print Profile specifies a conformance profile for 
printing in environments where it is not feasible or desirable to use a 
printer-specific driver. An example of such an environment is printing to 
low-cost printers from mobile phones.&nbsp; The profile identifies a minimum set of properties, values, selectors,
and cascading rules to support these use scenarios.   This profile was designed in
conjunction with <cite>XHTML-Print</cite> [[XHTML-PRINT]]) 
for low cost printers that may not have a full-page buffer and that
generally print from top-to-bottom.</p>
<p> This profile also contains an enhanced layout
extension set which supports more exacting page layouts and orientations. These 
features provide sufficient richness to print, for example, photo album pages 
from a digital still camera or print-targeted television content.</p>
<p>Conformance to this profile means that a user agent
supports, at a minimum, the features defined in this specification.
This subject is addressed in <a href="#section-conformance">Section 2,
Conformance</a> below.</p>

<!-- ******************** -->
<!--      CONFORMANCE     -->
<!-- ******************** -->
<h2 id="section-conformance">2. Conformance</h2>

<p>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY" and "OPTIONAL" in this
document are to be interpreted as described in RFC&nbsp;2119 (see [[RFC2119]]). However, for readability, these
words do not appear in all uppercase letters in this
specification.</p>

<p>The primary role of a profile is to define a subset of features that provides 
a minimal guarantee of interoperability. In the case of the CSS Print Profile, 
this guarantee is that a conforming user agent will support the features defined 
in this specification following the CSS 2.1 conformance clause ([[!CSS21]] Section 3.2), recast 
and summarized below:</p>
<ol>
<li>A CSS Print Profile conforming user agent (PP-UA or more simply "printer")  <em title="SHALL in the RFC 2119 context" class="RFC2119">SHALL</em> support the 
<em>all</em> and <em>print</em> CSS 2.1 media types. A printer <em title="MAY in the RFC 2119 context" class="RFC2119">MAY</em> support other 
CSS 2.1 media types, as well. </li>
<li>For each source document, a printer  <em title="SHALL in the RFC 2119 context" class="RFC2119">SHALL</em> attempt to retrieve all associated
style sheets that are appropriate for the supported media types. 
A failure to retrieve a style sheet due to problems such as
a loss of network connection <em title="SHOULD NOT in the RFC 2119 context" class="RFC2119">SHOULD NOT</em> stop the printer from processing the document.
</li>
<li>A printer  <em title="SHALL in the RFC 2119 context" class="RFC2119">SHALL</em> parse the style sheets according to this specification. In 
particular, 
the printer  <em title="SHALL in the RFC 2119 context" class="RFC2119">SHALL</em> recognize all CSS Print Profile at-rules, blocks, 
declarations, and selectors. If a printer encounters a property that applies for 
a supported media type, the printer  <em title="SHALL in the RFC 2119 context" class="RFC2119">SHALL</em> parse the value according to the 
property definition. This means that the printer  <em title="SHALL in the RFC 2119 context" class="RFC2119">SHALL</em> accept all valid values 
and  <em title="MAY in the RFC 2119 context" class="RFC2119">MAY</em> ignore declarations with invalid values. A printer  <em title="SHALL in the RFC 2119 context" class="RFC2119">SHALL</em> ignore rules that 
apply to unsupported media types. </li>
<li>For each element in a document tree, the printer  <em title="SHALL in the RFC 2119 context" class="RFC2119">SHALL</em> assign a value for 
every applicable property according to the property's definition and the rules 
of cascading and inheritance. </li>
<li>If the source document comes with alternate style sheets (such as with the 
"alternate" keyword in HTML 4.01 [[!HTML401]]), the printer <em title="MAY in the RFC 2119 context" class="RFC2119">MAY</em> 
ignore the style sheet or treat it in some implementation dependent manner. </li></ol>
<p>As with CSS 2.1, there are qualifications to this conformance clause:</p>
<ol>
<li>Values <em title="MAY in the RFC 2119 context" class="RFC2119">MAY</em> be approximated when <em title="REQUIRED in the RFC 2119 context" class="RFC2119">REQUIRED</em> by the printer.</li> 
<li>The inability of a printer to implement part of this specification due to 
the limitations of a particular device (e.g., a printer cannot render colors on 
a monochrome page) <em title="SHALL NOT in the RFC 2119 context" class="RFC2119">SHALL NOT</em> imply non-conformance. </li>
</ol>
<p>It is <em title="RECOMMENDED in the RFC 2119 context" class="RFC2119">RECOMMENDED</em>
 that authors use this conformance profile to take advantage 
of forward compatibility. Authors <em title="MAY in the RFC 2119 context" class="RFC2119">MAY</em> use style properties with 
an understanding that the cascading rules are processed correctly and that 
unknown properties and values are ignored. For example:</p>

<div class="code-example"><pre>  body {
&nbsp;&nbsp;&nbsp;&nbsp;background-position: center center;
&nbsp;&nbsp;&nbsp;&nbsp;background-position: 45% 55%; 
  }
 </pre></div>
<p>A printer that can accept percentage values for the 
background-position property will process the first background-position 
declaration and then replace that value with the second 
background-position declaration. A printer that cannot accept percentage values will process the first 
background-position declaration and ignore the second background-position 
declaration.</p>

<h3 id="s2.1">2.1. Enhanced Layout Extension Conformance</h3>
<p>Some print applications require a
more exacting page layout than is available from a
minimally conforming printer (<i>e.g.,</i> photo album pages or pages from
a digital TV).
The Enhanced Layout Extension increases the number
of properties that a conforming printer <em title="MUST in the RFC 2119 context" class="RFC2119">MUST</em> support and thereby the
requirements of its memory and performance capabilities. These
added CSS constructs 
are indicated with a "<em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em>" or 
an increased range of values, in the CSS
Print-Enhanced columns below.</p>

<p> Printers supporting the Enhanced Layout
Extension <em
title="MAY in the RFC 2119 context" class="RFC2119">MAY</em> also
support an <em title="OPTIONAL in the RFC 2119 context"
class="RFC2119">OPTIONAL</em>, discoverable (via some means outside the scope of 
this document) Enhanced Layout Extension indicator.</p>

<!-- ******************* -->
<!--      SELECTORS      -->
<!-- ******************* -->
<h2 id="section-selectors">3. Selectors</h2>
<p>In CSS 2.1, pattern matching rules determine which style rules apply to elements 
in the document tree [[!CSS21]].</p>

<p>
Consideration is given to low-cost printers  that might not be able 
to store all the attributes of each element, but only keep the few that are necessary.  
Therefore, only Enhanced Layout Extension conforming 
printers <em title="MUST in the RFC 2119 context" class="RFC2119">MUST</em> support attribute selectors.
</p>
<p>
The following table summarizes CSS Print Profile selector syntax. In 
addition to the selectors marked "<em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em>" 
in the CSS Print or CSS Print-Enhanced columns, the CSS Print 
Profile includes the CSS 2.1 grouping mechanism (See [[!CSS21]] Section 5.2.1).
</p>
<table border="1" width="80%" 
 summary="List of all selectors indicating which ones are supported">
<tbody>
<tr>
<th>Pattern</th>
<th>Meaning</th>
<th>Selector type</th>
<th>CSS Print</th>
<th>CSS Print-Enhanced</th>
</tr>
<tr class="yes">
<td>*</td>
<td>Matches any element</td>
<td>Universal selector</td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
</tr>
<tr class="yes">
<td>E</td>
<td>Matches any E element (i.e., any element of type E)</td>
<td>Type selectors</td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
</tr>
<tr class="yes">
<td>E F</td>
<td>Matches any F element that is a descendant of an E element</td>
<td>Descendant selectors</td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
</tr>
<tr class="yes">
<td>E &gt; F</td>
<td>Matches any F element that is a child of an element E</td>
<td>Child selectors</td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
</tr>
<tr class="enh">
<td>E[foo]</td>
<td>Matches any E element with the "foo" attribute set (whatever the 
value).</td>
<td>Attribute selectors</td>
<td><em title="MAY In The RFC 2119 Context" class="RFC2119">MAY</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
</tr>
<tr class="enh">
<td>E[foo="warning"]</td>
<td>Matches any E element whose "foo" attribute value is exactly equal to 
"warning".</td>
<td>Attribute selectors</td>
<td><em title="MAY In The RFC 2119 Context" class="RFC2119">MAY</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
</tr>
<tr class="enh">
<td>E[foo~="warning"]</td>
<td>Matches any E element whose "foo" attribute value is a list of 
space-separated values, one of which is exactly equal to "warning".</td>
<td>Attribute selectors</td>
<td><em title="MAY In The RFC 2119 Context" class="RFC2119">MAY</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
</tr>
<tr class="yes">
<td>E.classid</td>
<td>The same as E[class~=classid]</td>
<td>Class selectors</td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
</tr>
<tr class="yes">
<td>E#myid</td>
<td>Matches any E element id equal to "myid".</td>
<td>ID selectors</td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
</tr>
<tr class="yes">
<td>@page :first</td>
<td>Specifies style for the first page of a document</td>
<td>Page pseudo-classes</td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
</tr>
</tbody>
</table>
<h3 id="at-rules">3.1 At-rules</h3>
<p>The following table summarizes CSS Print Profile at-rule syntax.</p>
<table border="1" width="80%">
<tbody>
<tr>
<th>at-rule</th>
<th>Function</th>
<th>CSS Print</th>
<th>CSS Print-Enhanced</th></tr>
<tr class="enh">
<td>@import</td>
<td>Imports an external style sheet.</td>
<td><em title="MAY In The RFC 2119 Context" class="RFC2119">MAY</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td></tr>
<tr class="yes">
<td>@charset</td>
<td>Defines character set for the style sheet.</td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td></tr>
<tr class="yes">
<td>@media</td>
<td>Groups a set of style rules to apply only to one or more particular 
media.</td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td></tr>
<tr class="yes">
<td>@page</td>
<td>Defines a (optionally named) page formatting context.</td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td></tr>
<tr class="yes">
<td>@bottom-left-corner, @bottom-left, <br />@bottom-center, @bottom-right, @bottom-right-corner</td>
<td>Defines areas on the page within the running footer in the page's bottom margin [[!CSS3PAGE]]</td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
</tr>
<tr class="yes">
<td>@top-left-corner, @top-left, <br />@top-center, <br /> @top-right, <br />@top-right-corner</td>
<td>Defines areas on the page within the running header in the page's top margin [[!CSS3PAGE]]</td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
</tr>
</tbody>
</table>

<!-- ******************************* -->
<!--      PROPERTIES AND VALUES      -->
<!-- ******************************* -->
<h2 id="section-properties">4. Properties</h2>

<p> As with selectors, the properties a printer <em title="MUST in the RFC 2119 context" class="RFC2119">MUST</em>
support are similar to those that a mobile device <em title="MUST in the RFC 2119 context" class="RFC2119">MUST</em> support ([[CSS-MOBILE]], <a
href="http://www.w3.org/TR/css-mobile#properties">
Properties</a>) with the exception of those that don't apply to the
page or are specifically targeted at media other than the page.  </p>

<p>
In some cases the allowable values for a printer are a subset of the full range of 
values to match the reduced memory and performance capabilities of a low-cost printer.
</p>

<p>The following table summarizes CSS Print Profile properties and property values.
Refer to <cite>CSS Paged Media Level 3</cite> [[!CSS3PAGE]]
for the definition of the 'size' properties,
<cite>CSS Image Values and Replaced Content Level 3</cite>
[[!CSS3-IMAGES]] for the definition of the
'image-orientation', 'object-fit', and 'object-position' properties,
and CSS 2.1 [[!CSS21]] 
for the definition of all other properties and values.</p>

<table border="1" width="80%">
<thead>
<tr align="center">
<th>Name</th>
<th>CSS Print</th>
<th>CSS Print-Enhanced</th>
<th>CSS Values</th>
<th>Initial value</th></tr></thead>
<tbody>
<tr class="yes">
<td>'background'</td>
<td>background-color | inherit</td>
<td>
['background-color' || 'background-image' || 'background-repeat' || 'background-position']
 | inherit</td>
<td>['background-color' || 'background-image' || 'background-repeat' || 'background-attachment' || 'background-position'] | inherit</td>
<td>see individual properties</td></tr>
<tr class="yes">
<td>'background-color'</td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td>&lt;color&gt; | transparent | inherit</td>
<td>transparent</td></tr>
<tr class="enh">
<td>'background-image'</td>
<td><em title="MAY In The RFC 2119 Context" class="RFC2119">MAY</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td>&lt;uri&gt; | none | inherit</td>
<td>none</td></tr>
<tr class="enh">
<td>'background-position'</td>
<td><em title="MAY In The RFC 2119 Context" class="RFC2119">MAY</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td>[ [ &lt;percentage&gt; | &lt;length&gt; ]{1,2} | [ [top | center | 
bottom] || [left | center | right] ] ] | inherit</td>
<td>0% 0%</td></tr>
<tr class="enh">
<td>'background-repeat'</td>
<td><em title="MAY In The RFC 2119 Context" class="RFC2119">MAY</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td>repeat | repeat-x | repeat-y | no-repeat | inherit</td>
<td>repeat</td></tr>
<tr class="enh">
<td>'border'</td>
<td><em title="MAY In The RFC 2119 Context" class="RFC2119">MAY</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td>[ &lt;border-width&gt; || &lt;border-style&gt; || [&lt;color&gt; | 
transparent] ] | inherit</td>
<td>see individual properties</td></tr>
<tr class="enh">
<td>'border-collapse'</td>
<td><em title="MAY In The RFC 2119 Context" class="RFC2119">MAY</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td>collapse | separate | inherit</td>
<td>collapse</td></tr>
<tr class="enh">
<td>'border-color'</td>
<td><em title="MAY In The RFC 2119 Context" class="RFC2119">MAY</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td>[&lt;color&gt; | transparent]{1,4} | inherit</td>
<td>see individual properties</td></tr>
<tr class="enh">
<td>'border-spacing'</td>
<td><em title="MAY In The RFC 2119 Context" class="RFC2119">MAY</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td>&lt;length&gt; &lt;length&gt;? | inherit</td>
<td>0</td></tr>
<tr class="enh">
<td>'border-style'</td>
<td><em title="MAY In The RFC 2119 Context" class="RFC2119">MAY</em></td>
<td> none, solid </td>
<td>&lt;border-style&gt;{1,4} | inherit</td>
<td>see individual properties</td></tr>
<tr class="enh">
<td>'border-top' 'border-right' 'border-bottom' 'border-left'</td>
<td><em title="MAY In The RFC 2119 Context" class="RFC2119">MAY</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td>[ &lt;border-width&gt; || &lt;border-style&gt; || [&lt;color&gt; | 
transparent] ] | inherit</td>
<td>see individual properties</td></tr>
<tr class="enh">
<td>'border-top-color' 'border-right-color' 'border-bottom-color' 
'border-left-color'</td>
<td><em title="MAY In The RFC 2119 Context" class="RFC2119">MAY</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td>&lt;border-color&gt; | transparent | inherit</td>
<td>the value of the 'color' property</td></tr>
<tr class="enh">
<td>'border-top-style' 'border-right-style' 'border-bottom-style' 
'border-left-style'</td>
<td><em title="MAY In The RFC 2119 Context" class="RFC2119">MAY</em></td>
<td>none, solid</td>
<td>&lt;border-style&gt; | inherit</td>
<td>none</td></tr>
<tr class="enh">
<td>'border-top-width' 'border-right-width' 'border-bottom-width' 
'border-left-width'</td>
<td><em title="MAY In The RFC 2119 Context" class="RFC2119">MAY</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td>&lt;border-width&gt; | inherit</td>
<td>medium</td></tr>
<tr class="enh">
<td>'border-width'</td>
<td><em title="MAY In The RFC 2119 Context" class="RFC2119">MAY</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td>&lt;border-width&gt;{1,4} | inherit</td>
<td>see individual properties</td></tr>
<tr class="enh">
<td>'bottom'</td>
<td><em title="MAY In The RFC 2119 Context" class="RFC2119">MAY</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td>&lt;length&gt; | &lt;percentage&gt; | auto | inherit</td>
<td>auto</td></tr>
<tr class="enh">
<td>'caption-side'</td>
<td><em title="MAY In The RFC 2119 Context" class="RFC2119">MAY</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td>top | bottom | left | right | inherit</td>
<td>top</td></tr>
<tr class="enh">
<td>'clear'</td>
<td><em title="MAY In The RFC 2119 Context" class="RFC2119">MAY</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td>none | left | right | both | inherit</td>
<td>none</td></tr>
<tr class="enh">
<td>'clip'</td>
<td><em title="MAY In The RFC 2119 Context" class="RFC2119">MAY</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td>&lt;shape&gt; | auto | inherit</td>
<td>auto</td></tr>
<tr class="yes">
<td>'color'</td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td>&lt;color&gt; | inherit</td>
<td>depends on user agent</td></tr>
<tr class="yes">
<td>'content'</td>
<td>inherit | [&lt;string&gt; | counter(pages<a href="#table_note_0">&dagger;</a>)]+</td>
<td>inherit | [&lt;string&gt; | counter(pages<a href="#table_note_0">&dagger;</a>)]+</td>
<td>[ &lt;string&gt; | &lt;uri&gt; | &lt;counter&gt; | attr(X) | 
open-quote | close-quote | no-open-quote | no-close-quote ]+ | inherit</td>
<td>empty string</td></tr>
<tr class="yes">
<td>'counter-increment'</td>
<td>"pages"<a href="#table_note_0">&dagger;</a></td>
<td>"pages"<a href="#table_note_0">&dagger;</a></td>
<td>[ &lt;identifier&gt; &lt;integer&gt; ]+ | none |
 inherit</td>
<td>none</td></tr>
<tr class="yes">
<td>'counter-reset'</td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td>[ &lt;identifier&gt; &lt;integer&gt;? ]+ | none | inherit</td>
<td>none</td></tr>
<tr class="enh">
<td>'display'</td>
<td><em title="MAY In The RFC 2119 Context" class="RFC2119">MAY</em></td>
<td>inline | block | list-item | none |inherit</td>
<td>inline | block | list-item | run-in | compact | marker | table | 
inline-table | table-row-group | table-header-group | table-footer-group | 
table-row | table-column-group | table-column | table-cell | table-caption 
| none | inherit</td>
<td>inline</td></tr>
<tr class="enh"><td>'object-fit'</td>
<td><em title="MAY In The RFC 2119 Context" class="RFC2119">MAY</em> </td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td>fill | none | cover | contain</td>
<td>fill</td>
</tr>
<tr class="yes">
<td>'font'</td>
<td> [ [ 'font-style' || 'font-weight' ]? 'font-size'   [ / 'line-height' ]?   'font-family' ] | inherit</td>
<td> [ [ 'font-style' || 'font-variant' || 'font-weight' ]? 'font-size'   [ / 'line-height' ]?   'font-family' ] | inherit</td>
<td> [ [ 'font-style' || 'font-variant' || 'font-weight' ]? 'font-size' [ / 'line-height' ]? 'font-family' ] | caption | icon | menu | message-box | 
small-caption | status-bar | inherit</td>
<td>see individual properties</td></tr>
<tr class="yes">
<td>'font-family'</td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em><a href="#table_note_1">*</a></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em><a href="#table_note_1">*</a></td>
<td>[[ &lt;font-family-name&gt; | &lt;generic-font-family&gt; ],]* [ 
&lt;font-family-name&gt; | &lt;generic-font-family&gt; ] | inherit</td>
<td>depends on user agent</td></tr>
<tr class="yes">
<td>'font-size'</td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em> <a
 href="#table_note_2">**</a></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em> <a
 href="#table_note_2">**</a></td>
<td>&lt;absolute-size&gt; | &lt;relative-size&gt; | &lt;length&gt; | 
&lt;percentage&gt; | inherit</td>
<td>medium</td></tr>
<tr class="yes">
<td>'font-style'</td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em><a
 href="#table_note_2">**</a></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em> <a
 href="#table_note_2">**</a></td>
<td>normal | italic | oblique | inherit</td>
<td>normal</td></tr>
<tr class="enh">
<td>'font-variant'</td>
<td><em title="MAY In The RFC 2119 Context" class="RFC2119">MAY</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td>normal | small-caps | inherit</td>
<td>normal</td></tr>
<tr class="yes">
<td>'font-weight'</td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em> <a
 href="#table_note_2">**</a></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em> <a
 href="#table_note_2">**</a></td>
<td>normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 
700 | 800 | 900 | inherit</td>
<td>normal</td></tr>
<tr class="yes">
<td>'height'</td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em> </td>
<td>&lt;length&gt; | &lt;percentage&gt; | auto | inherit</td>
<td>auto</td></tr>
<tr class="enh">
<td>'image-orientation'</td>
<td><em title="MAY In The RFC 2119 Context" class="RFC2119">MAY</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td>&lt;angle&gt; | auto</td>
<td>auto</td></tr>
<tr class="enh">
<td>'left'</td>
<td><em title="MAY In The RFC 2119 Context" class="RFC2119">MAY</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em> </td>
<td>&lt;length&gt; | &lt;percentage&gt; | auto | inherit</td>
<td>auto</td></tr>
<tr class="enh">
<td>'letter-spacing'</td>
<td><em title="MAY In The RFC 2119 Context" class="RFC2119">MAY</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td>normal | &lt;length&gt; | inherit</td>
<td>normal</td></tr>
<tr class="yes">
<td>'line-height'</td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td>normal | &lt;number&gt; | &lt;length&gt; | &lt;percentage&gt; | 
 inherit</td>
<td>normal</td></tr>
<tr class="enh">
<td>'list-style'</td>
<td><em title="MAY In The RFC 2119 Context" class="RFC2119">MAY</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td>[ 'list-style-type' || 'list-style-position' || 'list-style-image' ] | 
inherit</td>
<td>see individual properties</td></tr>
<tr class="enh">
<td>'list-style-image'</td>
<td><em title="MAY In The RFC 2119 Context" class="RFC2119">MAY</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td>&lt;uri&gt; | none | inherit</td>
<td>none</td></tr>
<tr class="yes">
<td>'list-style-position'</td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em> </td>
<td>inside | outside | inherit</td>
<td>outside</td></tr>
<tr class="yes">
<td>'list-style-type'</td>
<td>disc,  decimal,  lower-alpha, upper-alpha, none and inherit</td>
<td>disc,  decimal,  lower-alpha, 
upper-alpha, none and inherit</td>
<td>disc | circle | square | decimal | decimal-leading-zero | lower-roman 
| upper-roman | lower-greek | lower-alpha | lower-latin | upper-alpha | 
upper-latin | hebrew | armenian | georgian | cjk-ideographic | hiragana | 
katakana | hiragana-iroha | katakana-iroha | none | inherit</td>
<td>disc</td></tr>
<tr class="yes">
<td>'margin'</td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td>&lt;margin-width&gt;{1,4} | inherit</td>
<td>see individual properties</td></tr>
<tr class="yes">
<td>'margin-top' 'margin-right' 'margin-bottom' 'margin-left'</td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td>&lt;margin-width&gt; | inherit</td>
<td>0</td></tr>
<tr class="enh"><td>'object-position'</td>
<td><em title="MAY In The RFC 2119 Context" class="RFC2119">MAY</em> </td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td>[ [&lt;percentage&gt; | &lt;length&gt; ]{1,2} | [ [top | center | 
bottom] || [left | center | right] ] ]</td>
<td>50% 50%</td>
</tr>
<tr class="enh">
<td>'float'</td>
<td><em title="MAY In The RFC 2119 Context" class="RFC2119">MAY</em> </td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td>left | right | none | inherit</td>
<td>none</td></tr>
<tr class="enh">
<td>'orphans'</td>
<td><em title="MAY In The RFC 2119 Context" class="RFC2119">MAY</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td>&lt;integer&gt; | inherit</td>
<td>2</td></tr>
<tr class="enh">
<td>'overflow'</td>
<td><em title="MAY In The RFC 2119 Context" class="RFC2119">MAY</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em> </td>
<td>visible | hidden | scroll | auto | inherit</td>
<td>visible</td></tr>
<tr class="enh">
<td>'padding'</td>
<td><em title="MAY In The RFC 2119 Context" class="RFC2119">MAY</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td>&lt;padding-width&gt;{1,4} | inherit</td>
<td>see individual properties</td></tr>
<tr class="enh">
<td>'padding-top' 'padding-right' 'padding-bottom' 'padding-left'</td>
<td><em title="MAY In The RFC 2119 Context" class="RFC2119">MAY</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td>&lt;padding-width&gt; | inherit</td>
<td>0</td></tr>
<tr class="yes">
<td>'page'</td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td>&lt;identifier&gt; | auto</td>
<td>auto</td></tr>
<tr class="yes">
<td>'page-break-after'</td>
<td> auto | always | inherit </td>
<td>auto | always | inherit </td>
<td>auto | always | avoid | left | right | inherit</td>
<td>auto</td></tr>
<tr class="yes">
<td>'page-break-before'</td>
<td> auto | always | inherit </td>
<td>auto | always | inherit </td>
<td>auto | always | avoid | left | right | inherit</td>
<td>auto</td></tr>
<tr class="yes">
<td>'page-break-inside'</td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td>avoid | auto | inherit</td>
<td>auto</td></tr>
<tr class="enh">
<td>'position'</td>
<td><em title="MAY In The RFC 2119 Context" class="RFC2119">MAY</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em> <a href="#table_note_pos">&Dagger;</a> </td>
<td>static | relative | absolute | fixed | inherit</td>
<td>static</td></tr>
<tr class="enh">
<td>'right'</td>
<td><em title="MAY In The RFC 2119 Context" class="RFC2119">MAY</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td>&lt;length&gt; | &lt;percentage&gt; | auto | inherit</td>
<td>auto</td></tr>
<tr class="yes">
<td>'size'</td>
<td>[&lt;length&gt;{1,2}| letter | legal | ledger | A4 | A5 | A3 | B4 | B5 ] | auto | portrait | inherit</td>
<td>[&lt;length&gt;{1,2} | letter | legal 
| ledger | A4 | A5 | A3 | B4 | B5 ] | auto | portrait | landscape | inherit
</td>
<td>[&lt;length&gt;{1,2} |  letter | legal | ledger | A4 | A5 | 
A3 | B4 | B5 ] | auto | portrait | landscape | inherit</td>
<td>auto</td></tr>
<tr class="enh">
<td>'table-layout'</td>
<td><em title="MAY In The RFC 2119 Context" class="RFC2119">MAY</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td>auto | fixed | inherit</td>
<td>auto</td></tr>
<tr class="yes">
<td>'text-align'</td>
<td>left | center  | inherit</td>
<td>left | right | center  | inherit</td>
<td>left | right | center | justify | &lt;string&gt; | inherit</td>
<td>depends on user agent and writing direction</td></tr>
<tr class="yes">
<td>'text-decoration'</td>
<td>none, underline, and inherit</td>
<td>none, underline, and inherit</td>
<td>none | [ underline || overline || line-through || blink ] | inherit</td>
<td>none</td></tr>
<tr class="yes">
<td>'text-indent'</td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td>&lt;length&gt; | &lt;percentage&gt; | inherit</td>
<td>0</td></tr>
<tr class="enh">
<td>'text-transform'</td>
<td><em title="MAY In The RFC 2119 Context" class="RFC2119">MAY</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td>capitalize | uppercase | lowercase | none | inherit</td>
<td>none</td></tr>
<tr class="enh">
<td>'top'</td>
<td><em title="MAY In The RFC 2119 Context" class="RFC2119">MAY</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td>&lt;length&gt; | &lt;percentage&gt; | auto | inherit</td>
<td>auto</td></tr>
<tr class="enh">
<td>'vertical-align'</td>
<td><em title="MAY In The RFC 2119 Context" class="RFC2119">MAY</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em><sup><a href="#table_note_vert_align">1</a></sup></td>
<td>baseline | sub | super | top | text-top | middle | bottom | 
text-bottom | &lt;percentage&gt; | &lt;length&gt; | inherit</td>
<td>baseline</td></tr>
<tr class="enh">
<td>'visibility'</td>
<td><em title="MAY In The RFC 2119 Context" class="RFC2119">MAY</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td>visible | hidden | collapse | inherit</td>
<td>inherit</td></tr>
<tr class="yes">
<td>'white-space'</td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em> </td>
<td>normal | pre | nowrap | inherit</td>
<td>normal</td></tr>
<tr class="enh">
<td>'widows'</td>
<td><em title="MAY In The RFC 2119 Context" class="RFC2119">MAY</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em> </td>
<td>&lt;integer&gt; | inherit</td>
<td>2</td></tr>
<tr class="yes">
<td>'width'</td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td><em title="MUST In The RFC 2119 Context" class="RFC2119">MUST</em></td>
<td>&lt;length&gt; | &lt;percentage&gt; | auto | inherit</td>
<td>auto</td></tr>
</tbody></table>

<p class="tableNotes"> Table Note:</p>

<p class="aTableNote" id="table_note_0">&dagger; Only the single 
identifier "pages" that represents the current page number is <em title="REQUIRED in the RFC 2119 context" class="RFC2119">REQUIRED</em>.</p>

<p  class="aTableNote" id="table_note_1">* It is <em title="RECOMMENDED in the RFC 2119 context" class="RFC2119">RECOMMENDED</em> that a printer minimally support
 "serif," "sans-serif," and "monospace" font families. </p>

<p class="aTableNote" id="table_note_2"> ** The supported values <em title="SHOULD in the RFC 2119 context" class="RFC2119">SHOULD</em> be appropriate to
the fonts available to the printer.</p>

<p class="aTableNote" id="table_note_pos"> &Dagger; 
The printer <em title="MAY in the RFC 2119 context" class="RFC2119">MAY</em> ignore positioned elements that are placed on the page before the position of the current element in the normal flow.
</p>

<p class="aTableNote" id="table_note_vert_align"> <sup>1</sup>
Vertical alignment is undefined across page boundaries.
</p>

<h3 id="section-images">Image Rendering Properties</h3>

<p>A previous Working Draft of this document defined
fit and fit-position properties.</p>

<p>To support legacy content using these properties,
implementations of the CSS Print Profile MAY
alias the 'object-fit' and 'object-position' properties
as defined below:</p>

<table class="data">
  <thead>
    <tr><th>Property/Value</th>
        <th>Alias</th></tr>
  </thead>
  <tbody>
    <tr><td>'object-fit'</td>
        <td>fit</td></tr>
    <tr><td>none</td>
        <td>hidden</td></tr>
    <tr><td>cover</td>
        <td>slice</td></tr>
    <tr><td>contain</td>
        <td>meet</td></tr>
  </tbody>
  <tbody>
    <tr><td>'object-position'</td>
        <td>fit-position</td></tr>
  </tbody>
</table>

<p>Additionally, implementations MAY override initial value
of 'object-position' (which is '50% 50%') to be '0% 0%'
by adding an appropriate rule to the UA style sheet,
if that is required for compatibility with existing content.
Similarly, if inheritance is required,
then that may also be indicated by UA style sheet rule.</p>

<div class="example">
  <p>The following rule positions all images with 'object-fit' values other than ''fill'' to be top-left aligned:</p>
  <pre>* { object-position: top left; }</pre>
  <p>The following rules also cause 'object-position' to inherit.</p>
  <pre>* { object-position: inherit; }
:root { object-position: top left; }</pre>
</div>

<!-- **************** -->
<!--      SYNTAX      -->
<!-- **************** -->
<h2 id="section-syntax">5. CSS Syntax</h2>
<p>The CSS Print Profile uses the same syntax as specified in <cite>Cascading Style Sheets, Level 2, revision 1</cite> (CSS 2.1) [[!CSS21]]. The CSS Print 
Profile uses a subset of the values used in CSS 2.1. Specifically:</p>
<ol>
<li>The printer <em title="SHALL in the RFC 2119 context" class="RFC2119">SHALL</em> support integer and real numbers 
([[!CSS21]], <a href="http://www.w3.org/TR/2004/CR-CSS21-20040225/syndata.html#q15">Section 4.3.1</a>). </li>
<li>The printer <em title="SHALL in the RFC 2119 context" class="RFC2119">SHALL</em> support the following lengths 
([[!CSS21]], <a href="http://www.w3.org/TR/2004/CR-CSS21-20040225/syndata.html#length-units">Section 4.3.2</a>): 
<ul>
<li>px</li> 
<li>em</li> 
<li>ex</li> 
<li>in</li> 
<li>cm</li> 
<li>mm</li> 
<li>pt</li> 
<li>pc</li>
</ul>
The printer <em title="MAY in the RFC 2119 context" class="RFC2119">MAY</em> support other lengths. </li>
<li>The printer <em title="SHALL in the RFC 2119 context" class="RFC2119">SHALL</em> support percentage values 
([[!CSS21]], <a href="http://www.w3.org/TR/2004/CR-CSS21-20040225/syndata.html#percentage-units">Section 4.3.3</a>). </li>
<li>The printer <em title="SHALL in the RFC 2119 context" class="RFC2119">SHALL</em> support URI values 
([[!CSS21]], <a href="http://www.w3.org/TR/2004/CR-CSS21-20040225/syndata.html#uri">Section 4.3.4</a>). </li>
<li>The printer <em title="SHALL in the RFC 2119 context" class="RFC2119">SHALL</em> support 
a "pages" counter value that tracks page numbers 
([[!CSS21]], <a href="http://www.w3.org/TR/2004/CR-CSS21-20040225/syndata.html#counter">Section 4.3.5</a>). </li>
<li>The printer <em title="SHALL in the RFC 2119 context" class="RFC2119">SHALL</em> 
support the following color values: 
<ul>
<li>The 16 colors defined in HTML 4.01 [[!HTML401]] </li>
<li>A numerical RGB specification 
([[!CSS21]], <a href="http://www.w3.org/TR/2004/CR-CSS21-20040225/syndata.html#color-units">Section 4.3.6</a>) </li>
</ul>
The printer <em title="MAY in the RFC 2119 context" class="RFC2119">MAY</em> support other color values. The printer 
<em title="MAY in the RFC 2119 context" class="RFC2119">MAY</em> support user preferences for colors 
([[!CSS21]], <a href="http://www.w3.org/TR/2004/CR-CSS21-20040225/ui.html#system-colors">Section 18.2</a>).</li>
<li>The printer <em title="MAY in the RFC 2119 context" class="RFC2119">MAY</em> support user preferences for fonts 
([[!CSS21]], <a href="http://www.w3.org/TR/2004/CR-CSS21-20040225/ui.html#system-fonts">Section 18.3</a>).</li>
</ol>
<p>Similarly, the CSS Print Profile requires that conforming user agents 
support the character encoding mechanisms specified in CSS 2.1 [[!CSS21]]. Specifically:</p>
<ol>
<li>The printer <em title="SHALL in the RFC 2119 context" class="RFC2119">SHALL</em> support priorities specified in 
CSS 2.1 [[!CSS21]] to determine a 
document's character encoding. </li>
<li>The printer <em title="SHALL in the RFC 2119 context" class="RFC2119">SHALL</em> support the 
CSS 2.1 @charset rules. 
However, if the character set specified by the @charset
rule of a external style sheet is not supported by the printer, the style sheet
will be ignored.
</li>
</ol>

<!-- *************************************************************** -->
<!--      ASSIGNING PROPERTY VALUES, CASCADING, and INHERITANCE      -->
<!-- *************************************************************** -->
<h2 id="section-assigning">6. Assigning Property Values, Cascading, and 
Inheritance</h2>
<p>In general, the CSS Print Profile uses the same cascading rules as in CSS 2.1. 
Specifically:</p>
<ol>
<li>The printer <em title="SHALL in the RFC 2119 context" class="RFC2119">SHALL</em> assign values as described in 
CSS 2.1 ([[!CSS21]], <a href="http://www.w3.org/TR/2004/CR-CSS21-20040225/cascade.html#q1">Section 6.1</a>). </li>
<li>The printer <em title="SHALL in the RFC 2119 context" class="RFC2119">SHALL</em> support inheritance as described in 
CSS 2.1 ([[!CSS21]], <a href="http://www.w3.org/TR/2004/CR-CSS21-20040225/cascade.html#inheritance">Section 6.2</a>). </li>
<li>A
printer supporting Enhanced Layout Extension conformance
<em title="SHALL in the RFC 2119 context" class="RFC2119">SHALL</em> support the 
CSS 2.1 @import rules as specified in CSS 2.1 ([[!CSS21]], <a href="http://www.w3.org/TR/2004/CR-CSS21-20040225/cascade.html#at-import">Section 6.3</a>). </li>
<li>The printer <em title="SHALL in the RFC 2119 context" class="RFC2119">SHALL</em> support author style sheets. The printer <em title="MAY in the RFC 2119 context" class="RFC2119">MAY</em> 
support user or user-agent style sheets 
([[!CSS21]], <a href="http://www.w3.org/TR/2004/CR-CSS21-20040225/cascade.html#cascade">Section 6.4</a>). </li>
<li>The printer <em title="SHALL in the RFC 2119 context" class="RFC2119">SHALL</em> support all 
CSS 2.1 cascading mechanisms 
([[!CSS21]] Sections 
<a href="http://www.w3.org/TR/2004/CR-CSS21-20040225/cascade.html#cascading-order">6.4.1</a>-<a href="http://www.w3.org/TR/2004/CR-CSS21-20040225/cascade.html#q13">6.4.4</a>). </li>
</ol>

<!-- ******************** -->
<!--      MEDIA TYPES     -->
<!-- ******************** -->
<h2 id="section-mediatypes">7. Media Types</h2>
<p>A CSS Print Profile conforming user agent  <em title="SHALL in the RFC 2119 context" class="RFC2119">SHALL</em> be able to process 
media-dependent style sheets as specified in CSS 2.1 ([[!CSS21]], <a href="http://www.w3.org/TR/2004/CR-CSS21-20040225/media.html">Section 7</a>). 
Specifically:</p>
<ol>
<li>The printer <em title="SHALL in the RFC 2119 context" class="RFC2119">SHALL</em> support the 
CSS 2.1 @media rules as specified in CSS 2.1 ([[!CSS21]], <a href="http://www.w3.org/TR/2004/CR-CSS21-20040225/media.html">Section 7</a>). </li>
<li>The printer <em title="SHALL in the RFC 2119 context" class="RFC2119">SHALL</em> accept and process style sheets that target the 
<code>print</code> media type. </li>
<li>The printer <em title="SHALL in the RFC 2119 context" class="RFC2119">SHALL</em> accept and process style sheets that target the 
<code>all</code> media type. </li>
<li>The printer <em title="SHALL in the RFC 2119 context" class="RFC2119">SHALL</em> accept style sheets that contain other (non-print) 
media-dependent style sheets. </li>
<li>The printer <em title="MAY in the RFC 2119 context" class="RFC2119">MAY</em> process other media types (such as 
<code>projection</code> or 
<code>handheld</code>). </li>
</ol>
<h2 id="section-interactions">8. CSS Print Profile Properties and user agent interactions</h2>
<p>The following sections relax or otherwise modify the conformance requirements.</p>

<h3 id="s.8.1">8.1 Nested Floats, Divs, and Absolutely Positioned Boxes</h3>

<p>
Authors are cautioned that the nesting of floats, divs, and absolutely positioned boxes within
themselves, each other, and table cells should be used carefully, since the 
nesting depth of these constructs is printer and implementation dependent.</p>


<h3 id="s.8.2">8.2 Page Breaks</h3>
<p>If <code>page-break-inside: avoid</code> is specified for a long element and 
the printer is unable to buffer the entire element before committing it to 
paper, it <em title="SHOULD in the RFC 2119 context" class="RFC2119">SHOULD</em> force a page break to occur before the long element and begin 
the element starting at the top of the next page. If the long element starts at 
the top of a page and exceeds the page length, the printer <em title="SHALL in the RFC 2119 context" class="RFC2119">SHALL</em> print as much 
as possible on the first page and then resume that element on the next and 
subsequent pages as <em title="REQUIRED in the RFC 2119 context" class="RFC2119">REQUIRED</em> 
to preserve the content. A printer
<em title="MAY in the RFC 2119 context" class="RFC2119">MAY</em> perform scaling 
to fit the long element on a single page; but this is not recommended unless the 
scaling required is minimal.</p>
<h3 id="s.8.3">8.3 Page Size</h3>

<p>Due to a printer's mechanical limitations, the actual printable area of the 
page is often less than the page size.&nbsp;
However, a printer <em title="SHOULD in the RFC 2119 context" class="RFC2119">SHOULD</em> be guided by  the page size value supplied by the CSS size property when 
choosing the media to print on.</p>
<p>See 
<a href="http://www.w3.org/TR/css3-page/#renderingpages">
http://www.w3.org/TR/css3-page/#renderingpages</a> in <cite>CSS3
Paged Media</cite> [[!CSS3PAGE]] for a discussion of fitting contents to media 
sheets.</p>
<h3 id="s.8.4">8.4 Default Style Sheets </h3>
<p>This entire section is informative.</p>
<p><a href="http://www.w3.org/TR/2004/CR-CSS21-20040225/sample.html">Appendix D</a> of <cite>Cascading Style Sheets, Level 2, revision 1</cite> ([[!CSS21]], <a href="http://www.w3.org/TR/2004/CR-CSS21-20040225/sample.html">Appendix D</a>)
provides a sample style sheet. 
This sheet uses several properties that are not required of a conforming printer, even
ones supporting the <a href="#s2.1">enhanced layout extensions</a> (section 2.1).</p>
<h4 id="s.8.5.1">8.5.1 Default Style Sheet Guidelines for printers</h4>
<p>
Developers of printers that do not implement the enhanced layout facilities 
are encouraged but not required to adhere to the following implementation guidelines
that address unsupported properties. These guidelines are presented to promote
consistency between printer implementations.
</p>
<!-- Editorial Annotation -->
<p class="editorial">The guidelines below are annotated to show derivation of the guideline from the 
<cite>Cascading Style Sheets, Level 2, revision 1</cite>
[[!CSS21]] style sheet.
</p>

<ol>
<li> The <code> address, blockquote, body, dd, div, dl, dt, h1, h2, h3, h4, h5, h6,
hr, object, ol, p, pre, </code> and <code> ul</code> elements
should be treated as if their display property were set to <code>block</code>.
</li>
<li>The <code>li</code> element should be treated as if its display property were set to <code>list-items</code>.
</li>
<li> The table elements, <code>table, tr, td, th,</code> and <code>caption</code>, should have their 
standard meaning and display treatments: <code>table, table-row, table-cell,</code> and <code>table-caption</code>.
</li>
<li> The elements <code>base, br, html, head, link, meta, param, style </code> and <code> title</code> should be treated as if their display property were set to <code>none</code>.
</li>
<li>The remaining elements,<code> 
a, abbr, acronym, b, big, cite, code, dfn, em, form, i, img, 
input, kbd, option, samp, small, select, strong, sub, sup, textarea, tt,
</code> and <code> var</code>, 
should be treated as if their display property were set to <code>inline</code>.  
A display property of <code> inline </code> for the elements <code>img, input, select,</code> and <code> textarea </code>
allows document authors a flexibility not available if their display property were <code>block</code>.

<div class="editorial">
The above guidelines come from the following portion of the CSS 2.1 default style sheet:
<pre><code>
ADDRESS, BLOCKQUOTE, BODY, DD, DIV, DL, DT, FIELDSET, FORM, 
FRAME, FRAMESET, H1, H2, H3, H4, H5, H6, IFRAME, NOFRAMES, 
OBJECT, OL, P, UL, APPLET, CENTER, DIR, HR, MENU, 
              { display: block }
LI            { display: list-item }
HEAD          { display: none }
TABLE         { display: table }
TR            { display: table-row }
THEAD         { display: table-header-group }
TBODY         { display: table-row-group }
TFOOT         { display: table-footer-group }
COL           { display: table-column }
COLGROUP      { display: table-column-group }
TD, TH        { display: table-cell }
CAPTION       { display: table-caption } 
</code></pre>
</div></li>

<li> The edges of the content of <code>body</code> element should have 0.1 inch wide inset from the 
left, top, right, and bottom of the printable area of the page. 
Margin calculations will start from these offsets.

<div class="editorial">
<!-- Editorial Annotation -->
The .1 inch figure comes from the calculation that 8 px divided by 75px/inch ( a normal display resolution) is about .1 inches. 
<pre><code>
BODY          { padding: 8px; 
                line-height: 1.33 } 
</code></pre>

</div>
</li>

<li>The content of the <code>sub</code> element should be treated as if its vertical-align property
were set to <code>sub</code>. Similarly, the content of the <code>sup</code> element should be treated
as if its vertical-align property were set to <code>sup</code>.


<div class="editorial">
<!-- Editorial Annotation -->
<pre><code>
SUB             { vertical-align: sub }
SUP             { vertical-align: super } 
</code></pre>
</div>
</li>

<li>The <code>hr</code> element should be treated as if its area, as defined by its height and width, were outlined 
by a one pixel thick, solid line. 
The default line should be one pixel 
high and the width of the  containing box.

<div class="editorial">
<!-- Editorial Annotation -->
<pre><code>
HR              { border: 1px inset } 
</code></pre>
</div>
</li>

<li>The lowercase letters of the content of the <code>abbr</code> and <code>acronym</code> elements should be rendered as scaled capital
letters, at approximately 75% of their size at the current font size. Upper case letters will be unchanged. Printers may 
also choose to simply render lowercase letters as uppercase letters without scaling.

<div class="editorial">
<!-- Editorial Annotation -->
The 75% figure above is only one way to approximate small-caps.  The printer is free to use
its own rendering of small-caps.
<pre><code>
ABBR, ACRONYM   { font-variant: small-caps; 
                  letter-spacing: 0.1em } 
</code></pre>
</div>
</li>

<li>Page break avoidance both inside and after is removed for the
elements <code> h1, h2, h3, h4, h5,</code> and
<code>h6</code>. Therefore, the printer is not
required to move  the content of these elements from the bottom of
one page to the top of the next.

<div class="editorial">
<!-- Editorial Annotation -->
<pre><code>
H1, H2, H3,
H4, H5, H6    { page-break-after: avoid; 
                page-break-inside: avoid }
</code></pre>
</div>
</li>

<li>The printer
need not avoid page breaks before the <code> ul, ol,</code> and
<code>dl</code> elements.

<div class="editorial">
<!-- Editorial Annotation -->
<pre><code>
UL, OL, DL    { page-break-before: avoid } 
</code></pre>
</div>
</li>

<li>The printer
may choose its own, fixed value for the padding properties of
 elements where the <cite>Cascading Style Sheets,
 Level 2, revision 1</cite> <a
 href="http://www.w3.org/TR/2004/CR-CSS21-20040225/box.html">box model</a> ([[!CSS21]], <a href="http://www.w3.org/TR/2004/CR-CSS21-20040225/box.html">Section 8</a>) applies.  </li>

<li>The content
 of all elements, except <code>hr</code>, should be treated as if the
 element's border-style property were set to <code>none</code>.  </li>


<li> The content of all elements may be treated as if the element's
 overflow property were set to <code>visible</code> and the clip
 property set to <code>auto</code>.  

<div class="editorial"> 
<!-- Editorial Annotation --> 
 This guideline suggests consistent behavior among implementations.  
</div>

</li> 

<li>The content of all elements
 may be treated as if the element's positioning property were set to
<code>static</code>.  

<div class="editorial"> 
<!-- Editorial Annotation --> 
 Elements should be treated as if they are in the
 normal flow.  
</div> 

</li> 

<li> Tables should be treated as if the
 table-layout property were set to <code>fixed</code>.  
<div
 class="editorial"> 
<!-- Editorial Annotation --> 
This guideline promotes consistency since 
<ul> 
<li> the table-layout property is not mandated</li> 
<li> There isn't a CSS default style sheet rule for  this property</li> 
</ul>
</div>
</li>
</ol>

<p>The following style sheet is a modification of the sample sheet in
<a href="http://www.w3.org/TR/2004/CR-CSS21-20040225/sample.html">Appendix D</a> of
<cite>Cascading Style Sheets, Level 2, revision 1</cite> ([[!CSS21]], <a
href="http://www.w3.org/TR/2004/CR-CSS21-20040225/sample.html">Appendix D</a>) and
depends on the above guidelines.
</p>

<pre style="margin-left: .25in;">th              { font-weight: bolder; text-align: center }
caption         { text-align: center }
body            { line-height: 1.33 }
h1              { font-size: 2em; margin: .67em 0 }
h2              { font-size: 1.5em; margin: .83em 0 }
h3              { font-size: 1.17em; margin: 1em 0 }
h4, p,
blockquote, ul,
form,
ol, dl          { margin: 1.33em 0 }
h5              { font-size: .83em; line-height: 1.17em; margin: 1.67em 0 }
h6              { font-size: .67em; margin: 2.33em 0 }
h1, h2, h3, h4,
h5, h6, b,
strong          { font-weight: bolder }
blockquote      { margin-left: 40px; margin-right: 40px }
i, cite, em,
var, address    { font-style: italic }
pre, tt, code,
kbd, samp       { font-family: monospace }
pre             { white-space: pre }
big             { font-size: 1.17em }
small, sub, sup { font-size: .83em }
ol, ul, dd      { margin-left: 40px }
ol              { list-style-type: decimal }
ol ul, ul ol,
ul ul, ol ol    { margin-top: 0; margin-bottom: 0 }
br       { content: &quot;\A&quot; }

@media print {
  @page         { margin: 10% }
  blockquote, 
  pre           { page-break-inside: avoid }
}
</pre>


<h4 id="s.8.5.2">8.5.2 Default Style Sheet Guidelines for Enhanced Layout printers</h4>

<p>Developers of printers 
conforming to the <a href="#s2.1">enhanced
layout extensions</a> (section 2.1) <em title="MUST in the RFC 2119 context" class="RFC2119">MUST</em> implement more of
<cite>Cascading Style Sheets, Level 2, revision 1</cite> [[!CSS21]] than conforming 
printers, although
the set of properties and their values is still less than 
complete.
</p>

<p>
Developers of printers 
are encouraged but not required to adhere to
the following implementation guidelines that address unsupported
properties.
</p>

<ol>
<li> The table elements, <code>table, tr, td, th,</code> and
<code>caption</code>, should have their standard meaning and display
treatments: <code>table, table-row, table-cell,</code> and
<code>table-caption</code>.  </li>

<li>
The rendering of the hr element is implementation dependent since support of the <code>inset</code> value of the border-style property is not required.
</li>


<li>Page break avoidance both inside and after is removed for the
elements <code> h1, h2, h3, h4, h5,</code> and
<code>h6</code>. Therefore, the printer
need not be concerned with moving the content
of these elements from the bottom of one page to the top of the next.
</li>

<li>The printer
need not avoid page breaks before the <code> ul, ol,</code> and
<code>dl</code> elements.  </li>

</ol>

<p>The following style sheet is a modification of the sample sheet in
<a href="http://www.w3.org/TR/2004/CR-CSS21-20040225/sample.html">Appendix D</a> of
[[!CSS21]] and depends on the above guidelines.
</p>

<pre style="margin-left: .25in;">address,
blockquote, 
body, dd, div, 
dl, dt, 
form,
h1, h2, h3, h4, 
h5, h6, 
object, ol, p, 
ul,
hr, pr e        { display: block }
li              { display: list-item }
head            { display: none }
th              { font-weight: bolder; text-align: center }
caption         { text-align: center }
body            { padding: 8px; line-height: 1.33 }
h1              { font-size: 2em; margin: .67em 0 }
h2              { font-size: 1.5em; margin: .83em 0 }
h3              { font-size: 1.17em; margin: 1em 0 }
h4, p,
blockquote, ul,
form,
ol, dl,         { margin: 1.33em 0 }
h5              { font-size: .83em; line-height: 1.17em; margin: 1.67em 0 }
h6              { font-size: .67em; margin: 2.33em 0 }
h1, h2, h3, h4,
h5, h6, b,
strong          { font-weight: bolder }
blockquote      { margin-left: 40px; margin-right: 40px }
i, cite, em,
var, address    { font-style: italic }
pre, tt, code,
kbd, samp       { font-family: monospace }
pre             { white-space: pre }
big             { font-size: 1.17em }
small, sub, sup { font-size: .83em }
hr              { border: 1px  }
ol, ul, dd      { margin-left: 40px }
ol              { list-style-type: decimal }
ol ul, ul ol,
ul ul, ol ol    { margin-top: 0; margin-bottom: 0 }
br       { content: &quot;\A&quot; }

@media print {
  @page         { margin: 10% }
  blockquote, 
  pre           { page-break-inside: avoid }
}
</pre>



<!-- ************************** -->
<!--      acknowledgements      -->
<!-- ************************** -->

<h2 id="section-ack">9. Acknowledgements</h2>
<p>This section is informative.</p>

<p>This specification was prepared by the W3C CSS Working Group.</p>

<p>This specification is based on the specification of 
the same name, <cite>CSS Print Profile</cite> [[CSSPP]] from
the <a href="http://www.pwg.org/">Printer Working Group</a>,  a
program of and through the IEEE Industry Standards and Technology
Organization, Inc. The editor wishes
to express her gratitude to all those who contributed to it.</p>
