Re: [css3-page][CSS21] Allowed page breaks for inline-block

On Wed, Oct 24, 2012 at 08:11:42PM +0200, Bert Bos wrote:
> On Saturday 20 October 2012 15:24:30 Koji Ishii wrote:
> > Recently I heard two different interpretations of "Allowed page
> > breaks" in CSS3 Paged Media[1] (and also the same text appear in CSS
> > 2.1,)
> > [...]
> > When [the content of an inline-block] is very long, longer than a page,
> > I heard two different interpretations.
> > 
> > 1. <p> is a block, and the <p> has a big line box. Since the linebox
> > is bigger than the page, it's an overflow behavior and therefore
> > page can break anywhere, even if it's at the middle of a line inside
> > the span.
> > 
> > 2. There are nested line boxes inside the span. UA should only break
> > pages between the line boxes inside the span.
> > 
> > Which is correct?
> 
> You cannot break between the lines in the span without also breaking in 
> the middle of a line box of the p, which isn't allowed.

I'm happy with this choice of behaviour, and I know that the above was in
context of a request for "opinions", but I'd like to echo Koji's point that
neither css3-page nor CSS21/page.html is clear in saying this (that I can
see).  The closest I can see is where §9.4 of css3-page says 

  # In the normal flow, page breaks <em class="RFC2119">may</em> occur at
  # the following places: [...]

(CSS21/page.html section 13.3.3 is similar, but with "can" instead of
the RFC2119 "may".)

For the css3-page wording, RFC2119 is quite clear that this describes
"truly optional" behaviour.

Even if one were to read between the lines that one can only break at the
places explicitly listed, one could reasonably take that to include being
allowed to break there, by virtue of the break within the inline-block
being explicitly listed.

(That said, I can also see that one might take this sentence as intending
to mean "within each normal flow, page breaks may occur only at these
places", and might take the content of an inline-block to be a different
normal flow from that in which the inline-block participates; though see
below on that second part.)

The end of §9.4 implies that keeping content from overflowing the page
boxes should be a goal, and similarly §9.6 currently reads as saying that
the content of that inline-block SHOULD be broken across more than one
page.

If the example were modified to add an explicit page-break-before or -after
directive, then, §9.1 says that page-break-before etc. must apply "in the
normal flow of the root element" (and may be applied elsewhere).
I don't see a definition of the exact phrase "in the normal flow of", but
CSS21/visuren.html section 9.3 comes very close, apparently defining it to
include the content of inline-blocks, table cells and
overflow-other-than-visible blocks.

Considering these points, and considering that there's at least one major
implementation that does break within an inline-block and one WG member
who's written to www-style to ask what the behaviour is, I think that both
specs should be clarified if it is in fact desired that implementations not
break within an inline-block.

[Regarding CSS 2.1: "should" in the above is of course in the sense of
 having a technical soundness issue, ignoring the question of whether any
 errors in CSS 2.1 are to be corrected.]

pjrm.

Received on Wednesday, 31 October 2012 00:12:33 UTC