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

村上さんにお誘いいただいたので、投稿させていただきます。このMLでは新人なので、ご無礼な点ありましたらご容赦の上ご教示いただけると幸いです。

現在英語の www-style@w3.org で標記の件について質問・議論させてもらっていますが、よろしければこちらのMLの方のご意見も伺えればと思います。

CSS Text Layout Module
http://dev.w3.org/csswg/css3-text-layout/
では、縦書き・横書きにかかわらず例えばmargin-topはページの上を指す、という方向で規格が進んでいます。

ページのマージンとしては両方のケースがあるのでそれもありでしょうが、marginやpaddingは、段落間スペースやインデントとしても使われるため、このままだと横書きの場合はmargin-topだけど、縦書きの場合はmargin-rightに書き換える、という作業が必要になってしまいます。また、例えばH1の上に横線を引く場合、border-topですが、これも縦書きではborder-rightに書き換えなければいけません。

それを解決するために現在検討されているのが、上記リンク内にあるlogical propertiesという規格で、例えばmargin-beforeという、フローの方向によってその位置が変わる新しいプロパティを導入しよう、という案です。これをmarginだけに限らず、padding, border, float, text-align, positionなど、すべてのプロパティに対して行う、という話のようです。

これはこれで有用な場面も多々あり、進めていただきたいと思っている仕様ではあるのですが、これだけではすべての問題が解決しないのではないかと思っています。

一番大きいのは、過去互換性です。CSS 2で書かれたHTMLを縦書きに変換する場合や、縦書きで表示するブラウザーの機能を開発する場合、すべての「left/right/top/bottom/width/height」を「start/end/before/after/before-width /after-width」に書き換えなければなりません。また、将来のドキュメントについても、ツールの対応や慣れの問題から、left/right/top/bottom/width/heightを使ってしまった場合、それは縦書きに変換するのが困難になります。

当初、アジアの縦書き文化に合わせて、topは右を差すようにするのはどうか、と提案したところ、MLで多くの人からの反対に合いました。

ので、改めてleft/right/top/bottom/width/heightの指す方向を変更する新しいプロパティを導入してはどうか、という提案を今行っています。writing-mode:tb-rlだけだと段落間やインデントが狂ってしまいますが、せめて全部を変換しろ、というのではなく、二つプロパティを指定すれば変換できるようにしたい、という意図です。またページマージンのように、topがページ上を指す場合と右を差す場合の両方がある場合には、writing-modeと別に指定できるメリットがあります。

が、これも今のところあまりいい返事が聞けていません。

そもそもフローがなかったところに新規策定しようとしているので、フローが縦書きの場合にtopをどう解釈するか、というのは決めの問題ではないかとは思うのですが、とにかくtopは縦書きでもページの上、という点についてはかなり強い主張をされている方がMLでは主流のようで、どういう提案ならML全体として賛成可能かというのを考えています。

もちろん断念してlogical propertiesだけで行く、という方向性もあるとは思うのですが、規格策定後の将来に開発者やWebデザイナーの方への大きな負担にならないか、という懸念がどうしても残ってしまいます。

この点について、私の杞憂である可能性も含め、ML皆様のご意見いただければ幸いです。

よろしくお願いいたします。

Received on Wednesday, 30 June 2010 03:54:10 UTC