Re: [css3-multicol] Balancing after a non-breaking element

On Tue, Jul 17, 2012 at 08:29:17AM +1000, Peter Moulder wrote:
> On Fri, Jul 13, 2012 at 11:40:40AM -0500, Scott Johnson wrote:

> > The question I have for the list is whether or not these two lines of
> > text should balance across the remaining columns, since column-fill:
> > balance is specified.
> 
> For the particular case of just two lines to be balanced across two columns:

[More precisely, two lines from the same block container.  If there were
 two one-line block containers left in the multicol, then there's no CSS
 rule to prevent each of those lines going to a different column, but that
 seems less objectionable if each of those lines really is "stand-alone"
 in the sense of being a complete block container, and hence presumably a
 complete paragraph.]

>   # [Whether balanced or not], user agents must honor forced page breaks and
>   # should try to honor `widows', `orphans' and other properties that may
>   # affect column lengths.
> 
> The initial value of 'widows' and 'orphans' is 2.

Short version of this message: I suggest that both column-span:all and
column-fill:balance descriptions use the word "should" when prescribing
that columns be balanced, given that there are aesthetic considerations
beyond just strict column balance and honouring 'widows' and 'orphans'.


Expanding on the widows & orphans example above: I think the reason we get
a different intuitive answer for such an extreme case is a typographic
principle somewhat similar to that of 'widows' and 'orphans'.  However, the
widows & orphans rule isn't enough to prevent four lines of content (from a
single block container) being split into 1,1,2 lines over three columns,
whereas I think we'd prefer for those four lines to be split as 2,2,0 (and
I think some people would consider even two lines to be a bit small and
might prefer an unbalanced 4,0,0 arrangement over 2,2,0).

Another aesthetic concern arising in column balancing that isn't encoded in
CSS is that we usually prefer for the last column not to be the tallest
column, even if honouring this results in more difference between column
lengths than a last-column-is-tallest arrangement.

Yet another aesthetic concern that can result in a less balanced layout
being better is that headings look better at the top of a column
than two lines from the bottom of a column (or whatever the value of
'orphans').

(Granted, the author could do h1+*{orphans: more-than-2} or the like, but
 that requires picking a particular value of more-than-2, and doesn't
 reflect that this typographic principle is merely a preference for having
 "quite a few" lines rather than being an inflexible requirement of some
 particular minimum.)

Yet another aesthetic concern might be avoiding having a float start
one line (in the middle of a paragraph) from the top of a column,
or ending one line from the bottom of a column.

(Another, if the spec doesn't already implicitly prevent this situation,
 would be avoiding having a tall float start near the bottom of a column.)


Perhaps the approach that the spec might take is to acknowledge explicitly
that balance is merely one of several aesthetic concerns to be, erm,
balanced, and that column-fill:balance doesn't require absolute balance
even when there exists a perfectly balanced layout consistent with
"'widows', 'orphans' and other properties that may affect column length".

E.g. while user agents have some freedom in where to break lines or what
line-height:normal means, and we can conceive of cases where making subtle
uses of such freedoms might result in a more pleasing layout of the last
page of the multicol (or last part before column-span:all), we clearly
don't want to force user agents to do so despite both aesthetic and
implementation issues (as a strict reading of the current text would
require: "Balance content equally between columns, if possible", or the
simple unqualified "is automatically balanced" in the case of the existing
column-span:all text).

However, we still want at least a wishy-washy "should"-like recommendation.  
One approach would be for both the column-span:all and column-fill:balance
text to use the word "should", and for column-span:all's balancing
prescription to use a hyperlink to the discussion in the description of
column-fill, and have the description of column-fill mention that user
agents may consider other aesthetic considerations, and more generally
doesn't require strictly minimal difference between column lengths.

The test suite might try to use an aesthetically uncontroversial example
(e.g. more than a few lines per column), and use wording like "reasonably
balanced" (including scare quotes, to acknowledge that it's a subjective
assessment as to how unbalanced is too unbalanced), and be flagged as
"should".

Sorry for the long message about fairly minor aesthetic considerations;
addressing these sorts of aesthetic considerations is pretty much my job.

pjrm.

Received on Tuesday, 17 July 2012 00:51:24 UTC