[css-writing-modes] float interaction when line-left and line-right swap

http://dev.w3.org/csswg/css-writing-modes/#propdef-writing-mode
says:

  # If a box has a different block flow direction than its
  # containing block:
  #   * [...]
  #   * If the box is a block container, then it establishes a new
  #     block formatting context. 

("block flow direction" is essentially a value of the writing-mode
property, so this just means that a new block formatting is
established when a block has a different writing-mode from its
containing block.)

http://dev.w3.org/csswg/css-writing-modes/#line-mappings says:

  # The line-right and line-left directions are calculated with
  # respect to the writing mode of the containing block of the box
  # and used to interpret the left and right values of the following
  # properties:
  #
  #   * the float property [CSS21] 
  #   * [...]

http://dev.w3.org/csswg/css-writing-modes/#logical-to-physical
defines the mappings from writing-mode, text-orientation, and
direction to line-left and line-right directions.

Note that this introduces (thanks to 'text-orientation:
sideways-left' differing from other values of 'text-orientation')
the concept of a block formatting context in which line-left and
line-right vary within the block formatting context.

This, in turn, means that css-writing-modes needs to rewrite the
rules for float placement to account for this.  I presume that when
the float placement rules in
http://dev.w3.org/csswg/css2/visuren.html#float-position refer to
other left-floating or right-floating boxes (as in rules 2, 3, 7,
and 9), these sides are intended to refer to a consistent side
across the entire block formatting context.

For example, when interpreting rule (2), a left-floating box whose
containing block is a vertical-rl/sideways-left block should be
positioned relative to right-floating boxes whose containing block
is one of its vertical-rl/mixed ancestors within the same block
formatting context.

This is in addition, of course, to rewriting the float placement
rules in terms of logical directions.

It might be clearest to define a term that says whether a box is
left-floating or right-floating relative to its block formatting
context, which would be different from whether the box is
left-floating or right-floating exactly when the float's containing
block and the element that establishes its block-formatting context
both have writing-mode:vertical-*, and one of them has
text-orientation:sideways-left and the other does not.

In the absence of a formal definition, it would be useful for the
specification to at least point out that this issue is more complex
than it first appears because text-orientation: sideways-left allows
line-left and line-right to switch sides within a single block
formatting context.


(Thankfully, Gecko is not currently implementing sideways-left, so
we don't need to deal with this right now.)

-David

-- 
𝄞   L. David Baron                         http://dbaron.org/   𝄂
𝄢   Mozilla                          https://www.mozilla.org/   𝄂
             Before I built a wall I'd ask to know
             What I was walling in or walling out,
             And to whom I was like to give offense.
               - Robert Frost, Mending Wall (1914)

Received on Thursday, 2 April 2015 23:31:36 UTC