[css-page] Forcing the first printed page to be a verso page

[Possibly the very recent change to the Editors' Page was intended to
 clarify the answer to the first part of this message, by moving the two
 most relevant sentences into the same paragraph, with the intent that it
 be understood that the first sentence actually means "other than in the
 circumstance described in the rest of this paragraph".

 However, since the edit only moves text rather than changing wording,
 it's not clear that that was the intent.]
 

There are some things that aren't clear about how these parts of section
3.3 (Page Progression) combine:

  # In documents with a left-to-right page progression
  # the first page of the document is a right page, and vice versa.

  # The UA must suppress the first (empty) page(s)
  # [if the author forces printing to begin on a left or right page].

In the forced case, in what sense does this suppressed first page of the
document still exist?

Does it still increment the implicit page counter, such that the first
printed page (as matched by :first) is page 2?

(The spec as written says yes, in that any "first page of the document" is
by definition a page in the document, and "every page of the document"
increments an implicit page counter.)

Other than possibly incrementing the page counter, does this suppressed
page have any other presence in a PDF or postscript document that might be
used for printing; what consequences, if any, are there of this page being
in the document?

If UAs are to prevent an initial blank page, then what is the expected usual
practice for printing this document in a way that binding works?  How practical
is this, how common is it that software provides for this?

(I've looked at only a couple of pieces of software I had on hand, and didn't
find provision for it in the duplexing options of the printer setup dialog
box.)


It also isn't clear in the existing text what the condition is in general
for when the first printed page is a left or right page.  The relevant
part of the spec is:

  # To explicitly force a document to begin printing on a left or right page,
  # authors can specify a 'break-before' value
  # that that propagates a page break to the root. [[!CSS3-BREAK]]

(Presumably "that that" is a typo for "that", rather than meaning "which
this".)

css-break doesn't really define the phrase "propagating a page break
to the root", and the closest it gets seems like it isn't the definition
one would want:

  - css-break suggests that setting break-before on :root itself doesn't
    count (because it isn't isn't a child and has no container, so it isn't
    described as propagating).

  - it isn't clear what counts as a page break being propagated, i.e. what
    values of page-break-before force the first page to be verso.  By
    a literal reading, even the value 'recto' might count.

  - The example that break-before:always is sufficient is surprising to
    me, as print-media stylesheets have traditionally (e.g. the CSS 2.1
    recommended UA stylesheet for HTML) had
    
      h1 { page-break-before: always }
    
    which suggests that every document starting with an h1 (not inside an
    element that starts a new fragmentation context) would have this
    swapped behaviour.  This is surprising, because I think users would
    very rarely want this behaviour, so the language should not make it
    the behaviour for standard document practice.

    (Similar comments might apply for the common practice of
    div.chapter { page-break-before: recto }.)


Here are the answers to the above questions that I chose for implementation:

  - That the suppressed page has no presence at all as a page in the
    document, i.e. that the first page of the document is the first printed
    page, and it's numbered 1 when the page counter is left to be updated
    implicitly.

  - Omit the blank page like the spec says; duplexing is the user's
    responsibility.
    
    (However, my preliminary findings above as to practicality of printing
    the resulting document make me question this behaviour.)

  - That the only values of 'break-before' that cause the first page
    to be verso are 'verso' and whichever of 'left' and 'right' corresponds
    to 'verso' per the document's page progression direction ('left' for
    rtl).

    (In other words, "page-break-before:always/left/right/..." means "make
    sure that this element is always at the top of a [left/right/...]
    page", comparable to the usual combining of multiple
    break-{before,after} values.)

pjrm.

Received on Thursday, 17 September 2015 12:55:35 UTC