[CSS21] page-break-inside

(ISSUE-35)

If I understand Fantasai's proposal correctly, the ultimate goal is to 
add relative strengths to page break opportunities in level 3, so that 
the author can indicate between two undesired break points which is the 
lesser of two evils. (In level 2, if it has to be one or the other, the 
UA would probably take the one closest to the end of the page, for lack 
of any other information.)

Relative strengths is a good goal, I think. E.g., you neither want to 
break a page after the first line of a paragraph, nor inside a two-line 
section header, but if it has to be one or the other, then take the 
former. (A level 2 UA always takes the latter, because 'orphans' is 
stronger than 'page-break-inside'.)

The question is what is the best definition for level 2, given that we 
don't know yet how to introduce the strength factor in level 3 and we 
don't want to hold up level 2 until we do.

Fantasai expects that one of the additions in level 3 will be a value
for 'page-break-inside' that increases or decreases the
"undesirability" of a page break inside an element relative to its
parent element. The default should be neutral (neither stronger nor
weaker than its parent). And that default should be the same in level
2 and in level 3 (under the principle that level 3 can't change the
meaning of level 2 rules).

That's a reasonable expectation, although without considering 
how 'widows', 'page-break-before' and others are extended, we don't 
know if a different approach might be better (e.g., 
a 'page-break-strength' property that applies to all page break 
opportunities of an element, whether from 'widows' or 
from 'page-break-before').

The current definition of 'page-break-inside' says that the property
is inherited. From the viewpoint of the hypothetical level 3 model
with multiple levels of break strength, that means that what is
inherited is an absolute strength value. This is similar to how
'font-size' works: it inherits font sizes such as '12pt' and when you 
use the keyword 'larger' or a percentage it inherits the resulting 
absolute size.

Fantasai proposes to not inherit 'page-break-inside', but instead treat 
the default value of 'auto' as meaning "neither increase nor decrease 
the strength" and to interpret 'avoid' as setting a certain medium 
level of strength. We don't have a good analog of that in CSS yet, but 
there is some resemblance with 'text-decoration' and 'display: none', 
in that once they are set, descendants cannot get rid of their effect.

Either way, inherited or not inherited, it is possible to add keywords 
in level 3 to change the strength. The difference is that with the 
non-inherited version a child element in *level 2* cannot allow more 
breaks then its parent, because there is no third keyword in level 2. 
(In the inherited version, the keyword 'auto' has that function.)

To fix that, Fantasai proposes that the 'auto' keyword should be 
interpreted as "decrease the strength slightly" rather than "neither 
decrease nor increase." However, that has the undesirable effect that 
the strength of breaks inside

    <div style="page-break-inside: avoid">
      text
    </div>

is different from

    <div style="page-break-inside: avoid">
      <div>
        text
      </div>
    </div>

Saying that 'auto' only decreases the strength in level 2, but not in 
level 3, is not good either, because then there is a difference between 
level 2 and level 3.

Is it a problem that a child element cannot allow more page breaks than 
its parent? After all, 'page-break-inside' is typically set on small 
elements, such as a short PRE or a short note with a border around it. 
And all UAs should eventually implement level 3 with its new 
keywords...

Indeed, I think it is a small problem. But why should we introduce a 
small problem and forbid a possible use when the other solution, 
inheritance, has no such problem, is just as extensible, and, 
furthermore, has been the rule since 1998?



Bert
-- 
  Bert Bos                                ( W 3 C ) http://www.w3.org/
  http://www.w3.org/people/bos                               W3C/ERCIM
  bert@w3.org                             2004 Rt des Lucioles / BP 93
  +33 (0)4 92 38 76 92            06902 Sophia Antipolis Cedex, France

Received on Wednesday, 16 April 2008 14:45:46 UTC