Re: [css3-text-layout] margin-before/after/start/end etc. and :ttb pseudo-classes

Also sprach MURATA Makoto:

 > >  > We are stuck.
 > >  > 
 > >  > Pseudo-selectors based on values specified in documents or stylesheets 
 > >  > do not allow reasonable fallbacks from vertical writing to horizontal writing.
 > > 
 > > I don't understand how you reached this conclusion. Could you
 > > illustrate with an example?
 > 
 > Because no matter what is specified within documents or stylesheets, 
 > browsers or usres might choose horizontal writing direction, and 
 > will then interpret every property.

Let me try to rephrase the problem to see if I have understood. An
author writes some content that is intended for vertical layout. Then
the user chooses to view the content in horizontal mode, or perhaps
the UA only handles horizontal mode. You're saying that, in cases like
these, it's not possible to set reasonable fallback values using
the pseudo-selector scheme.

Assuming I have understood the problem, let's see if it can be solved. 

Let's use these definitions for the pseudo-selectors:

  :lrt   horizontal writing is supported and @dir has been set to 'lrt'
  :rtl   horizontal writing is supported and @dir has been set to 'rtl'
  :ttb   vertial writing is supported and the initial value of
         'writing-mode' is 'tb-rl'

Further, let's assumue that the initial value of 'writing-mode' is
'tb-rl' when the UA is started. If so, this style sheet could describe
a presentation for primarily vertical content, but with horizontal
tables:

  /* preferred styling for vertical content */

  body:ttb {
    writing-mode: tb-rl;
    margin: ...;
    padding: ...;
    font: ...;
  }

  body:ttb table {
    writing-mode: lr-tb;
    margin: ...;
    padding: ...;
    font: ...;
  }
 
Now, perhaps the user turns the tablet or give some other hint that a
horizontal presentation is preferred. Then the initial value of
'writing-mode' is set to 'lr-tb' and the :ttb selectors do not match
anymore. So, the declarations above would not apply. Instead, these
declarations could apply:

   /* fallback values for horizontal presentation */

  body {
    writing-mode: lr-tb;
    margin: ...; 
    padding: ...;
    font: ...;
  }

  body table {
    writing-mode: lr-tb;
    margin: ...;
    padding: ...;
    font: ...;
  }

These declarations would also be used by UAs that do not know the :ttb
pseudo-class.

The normal cascading rules of CSS will ensure that the declarations
meant for vertical presentation are used in vertical mode, and that
the fallback values are used in horizontal mode. You can also change
fonts etc. when the mode change from vertical to horizontal. 

So, it seems that it is possible to encode reasonable fallback values
using pseudo-selectors, no?

-h&kon
              Håkon Wium Lie                          CTO °þe®ª
howcome@opera.com                  http://people.opera.com/howcome

Received on Sunday, 6 June 2010 14:10:54 UTC