Re: [css3-marquee] Comments on Terminology and marquee-direction

(For those wondering what specification "css3-marquee" refers to: the WG 
decided a few months ago to put the marquee-* properties from the Box 
module into a module of their own[1]. The quotes are from text for that 
module that I expect to be published in about two weeks, if the holiday 
season doesn't slow things down too much.)

[1] http://www.w3.org/Style/CSS/current-work.html#css3-marquee



On Thursday 10 July 2008 00:11, fantasai wrote:
> Writing Mode Terminology
> ------------------------
>
>    # The specification may refer to the specified value, the used
> value, # and the computed value of a property. Unless stated
> explicitly, the # short form "value" means the computed value.
>    #   A glossary of technical terms can be found in chapter 3 of CSS
>    # level 2 [CSS21].
>
> Swap these two paragraphs, and then merge them into one paragraph.
> Add "as defined in <insert CSS2 reference here>" right after
> "computed value of a property" in that first sentence.

OK

>
>    # Furthermore, the following writing modes are defined for the
> purpose # of this module.
>
> There's a sentence in the definition of "vertical writing mode":
>    # An element can have horizontal or vertical writing mode, but not
>    # both. (Although child elements can have different writing modes
>    # from their parent.)
> This sentence is quite general, and should be pulled out of this
> definition and put, e.g. right after that "Futhermore" sentence.

That sentence indeed applies to both definitions, but moving it before 
the DL doesn't seem to improve readability, nor does moving it after 
the list. I've instead merged the two DDs into one. That makes it more 
consistent with the next definition, which also defines two mutually 
exclusive terms.

>
> Shift the "The precise definition will be in a separate module..."
> sentence into a non-normative note.
> s/block-progression/writing-mode/.

Marked it up as a note.

But why 'writing-mode'? 'Writing-mode' is too wide, it 
includes 'direction', which doesn't affect this definition.

>
>    # horizontal writing mode -
>    # A horizontal element (or box) is one that is laid out as
> horizontal # line boxes with later lines below earlier ones. This is
> the usual # writing mode for English.
>
> I suggest s/laid out as/laid out as (or would be laid out as if its
> 'display' value were 'block')/ to make sure non-blocks such as table
> row elements can be classified correctly.

I tried to avoid mentioning what kinds of elements the terms apply to, 
to avoid contradicting what the Text Layout Module will say. All that I 
need is that elements to which 'overflow' applies can be classified as 
horizontal or vertical. 'Overflow' applies to non-replaced block-level 
elements, table cells, and inline-block elements. There may be more in 
level 3.

Inline elements, table rows, replaced elements, etc., may or may not 
have a writing mode, but as far as the Marquee module is concerned, 
that is of no importance, because the marquee properties don't apply to 
them.

>
> Secondly, you need to remove "with later lines below earlier ones"
> because it's possible to have a bottom-top writing mode as well.

I'll remove it, but I thought we decided to not support bt mode in CSS?

>
> I suggest splitting the definitions of left-right writing mode and
> right-left writing mode into their own sections. Add a definition
> for top-bottom writing mode.

Only if you convince me that we indeed decided to support 'bt'...

(Theoretically, it doesn't matter to define terms for situations that 
never occur, but in practice it will cause confusion.)

>
> Minor editorial comment: Replace "Otherwise" in the definitions of
> marquee-line and marquee-block with "In vertical writing mode".

OK

>
> marquee-direction
> -----------------
>
> The table here is only correct if we don't later add the ability to
> reverse-stack line boxes for horizontal and right-left writing modes
> or the ability to forward-stack line boxes for left-right writing
> mode. By reverse-stacking, what I mean is that the lines stack like
> they do in Mongolian, where if you took the box and turned it 90deg
> the English would either be laid out stacking top-to-bottom but with
> each line upside down or with the lines right-side-up but stacking
> bottom-to-top.

Reverse stacking line boxes in CSS? If we ever add a thing like that, 
we'll have time enough to update the marquee module.

You can no doubt do strange things by writing English in 'lr' mode and 
using 'transform: rotate(90deg)' to put the whole thing on its side. 
But if you really want to write xingped (as in

    X I N G
     P E D

which takes me at least two seconds to parse, every time I see it 
painted on a street in the US :-) ) I suggest you use SVG...

And, actually, a 'forward' marquee would show you the PED before the 
XING just fine.

>
> In other words, as long as horizontal writing modes always have
> right-side-up lines and vertical writing modes have 90deg
> clockwise-rotated lines, the table is correct. If we add the ability
> to rotate 90deg counter-clockwise in a vertical writing mode, then
> the table is incorrect.
>
> My suggestion here is to replace the table with definitions for
> 'start', 'end', 'before', 'after' and define the directions in terms
> of these relative directions.

Writing precise and clear specifications is a bit like solving a puzzle 
(or writing a software program). It requires as much creativity as 
inventing the described features in the first place...

I've tried three or four different ways of organizing the table: 
splitting it into two or more tables, making a table with fewer columns 
and more rows, defining auxiliary terms... but this one was the 
shortest and clearest. (Actually, it was even better 
with 'block-progression', but as you pointed out earlier, that 
introduced a dependency on the text layout module.)

Somewhere it has to be defined whether the content moves up, down, to 
the left or to the right. I can split the table in two: one table that 
relates forward/reverse, line/block and start/after/end/before, and a 
second one that relates writing mode, ltr/rtl, start/after/end/before 
and left/right/up/down. But why? It just adds more jargon and makes the 
definition longer.

Start and before aren't really helpful words for remembering what 
concept they stand for either. On the contrary, it takes effort to 
remember which one is which. (My trick is to remember that they are 
the "wrong way round," i.e., the '::before' of CSS is by default 
*not* "before" the element; the meaning of the other three then follows 
from their symmetry.)

And in this case the words fit the specification even less, because the 
table needs words to express a direction, not a location. If the "top" 
edge is the "start" edge, then going "up" is going startward? ahead? 
back? forward? (Hmm, not forward, because that is the keyword we're 
trying to define in the first place :-) )

I'm always trying to make definitions in WDs shorter and more memorable 
by defining suggestive (but precise) intermediate terms. I haven't yet 
found a word, or even a short phrase, that means going in the opposite 
direction from the block progression direction. And if the term isn't 
good, then it will only make the definitions more difficult to read. So 
far, in all drafts I've tried, it has been easier to talk about top and 
left and just repeat the definition for the other sides; or, 
alternatively, to use a table like I did here.

The former may be verbose, but is easy to read, because it talks about 
concrete things. You can draw a picture of it. The latter is compact, 
because it uses two dimensions instead of one to explain the relation 
between the sides and the properties that affect them.



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 Friday, 11 July 2008 13:19:41 UTC