Re: CSS の left/right/top/bottom と縦書きの関係について

Ishii Koji <kojiishi@gluesoft.co.jp> wrote on 2010/07/07 14:49:11
> 村上さん、ありがとうございます。英語MLで「あってもいいかな」レベルまで来たのに、日本で賛成が0だったので、ちょっとめげていたところで、非常に心強いです。
> 
> 実装者にとっては慣れ親しんだ方法ですので、実例は多いと思います。また、text-align:leftの「left」とmargin-leftの「left」が同じ方向を指すので、わかりやすいと思う人は一定数はいると思っています。
> 
> もちろん逆の方もいらっしゃるので、あくまでモード切替ではありますが、複数の正解があって、人によって支持する解が違う場合には、オプションとする、というのは、正しい方向性だと思っています。

賛成です。
英語ML www-style に書きました:
http://lists.w3.org/Archives/Public/www-style/2010Jul/0127.html
(以下その主な内容)

石井さんの 'directional-mode' の提案を受け入れたい。

  Name:           directional-mode
  Value:          physical | logical
  Initial:        physical
  Applies to:     all elements
  Inherited:      yes

'directional-mode: logical' が指定されたときは方向を示す語
left/right/top/bottom/width/height を次のように論理的に解釈:

  left   = start  (インライン方向での先頭側)
  right  = end    (startの反対側)
  top    = before (ブロック方向での先頭側)
  bottom = after  (beforeの反対側)
  width  = logical-width  (インライン方向の寸法)
  height = logical-height (ブロック方向の寸法)


(方向のキーワードが左横書き以外で標準的な意味と違ってきておかしくないか
という意見に対して)

すでにそういう例がある。Unicode標準仕様では文字の名前に 
LEFT PARENTHESIS のようなものがある。この LEFT 文字はRTLにおいては
右側になるし、縦書きでは上側になる。Unicodeの文字の名前の LEFT というの
は論理的な方向であって物理的ではない。
なぜCSS標準でそれができない?

論理方向モードは縦書きの電子書籍ビューアにとって重要。
現在いくつかのEPUBビューアはコンテンツ(XHTML+CSS2)を縦書きで
表示することができてその場合 'margin-left' は上マージンとして
扱われる。

そのような実装の例:
  http://blog.print.cssj.jp/?itemid=212
ドキュメント
  http://blog.print.cssj.jp/?itemid=197
(「縦書きのスタイル」のところが参考になる)

これは典型的な縦書き対応のEPUBあるいはHTML+CSSの実装である。
私はこれが将来のCSS3 Text Layout標準と互換性があるべきだと信じる。
そうでないと、CSSの縦書きの標準化は失敗するだろう。
だから 'directional-mode: logical' のしくみをCSS3 Text Layout
で定義する必要がある。

典型的な縦書きスタイルシートは次のようなものになるだろう:

  :root {
    block-flow: rl;
    directional-mode: logical;
  }
  img { /* 画像の width と height は物理方向で */
    directional-mode: physical;
  }
  ...

これは縦書きの電子書籍ビューアのデフォルトスタイルシートになりえる。

(以上、www-style に書いたことでした)

-- 
村上 真雄 (MURAKAMI Shinyu)
http://twitter.com/MurakamiShinyu
Antenna House Formatter:
http://www.antenna.co.jp/AHF/
http://www.antennahouse.com

Received on Friday, 9 July 2010 17:35:48 UTC