Re: Directional-mode 補足 (was RE: MozillaとWebkitのlogical property

村上です。

"MURATA Makoto (FAMILY Given)" <eb2m-mrt@asahi-net.or.jp> wrote on 2010/07/18 9:30:29
> 私がdirectional-modeについてもっとも疑っているのは、このプロパティを解釈
> しない実装へのフォールバックがうまくいくかどうかです。directional-modeを
> 解釈するかどうかによって、margin-leftの解釈がまったく変わってしまうの
> ですから。
> 
> しかし、このまえ村上さんと話してつぎのことを思いました。
> 
> directional-modeはwriting-modeとセットでしょう。つまり、directional-mode
> を解釈できるなら、 writing-modeを解釈して縦書きできる。その逆も正しい。
> となると、directional-modeとwriting-modeとをまとめて無視する実装と、両方を
> 解釈する実装のあいだでの動作の違いだけを気にすればいいことになります。そ
> の違いが、現実に混乱をもたらすかどうかだけ整理すればいい。

はい、CSS3 Text Layout には、writing-mode (block-flow)での縦書きを
サポートするならば必ず directional-mode をサポートすることと明記する
考えです。

すでに IE などに writing-mode プロパティが(ベンダープレフィックスなしで)
実装されていて、directional-mode は存在しないので常に 
directional-mode: physical の扱いになるのが問題ですが、ショートハンドの
'writing-mode' の使用を避けて、block-flow プロパティを使うようにすれば、
今のIEで縦書きにはなりませんが混乱は防げます。
(IE8 で block-flow に相当するのは -ms-block-progression)

CSS3 Text Layout が勧告候補の段階までいって、ベンダー拡張プレフィックス
なしでの実装が推奨されるようになるまでには相当の時間がかかります。
それまでは、EPUB においても、CSS3 Text Layout で定義される writing-mode
プロパティなどを使うのは避けるべきであると思います。

将来、CSS3 Text Layout 仕様が完成したあとでの EPUB 仕様の改定のときに
block-flow, directional-mode などを EPUB 仕様に含めることを検討すればよい
と考えます。

それまでは、EPUB の縦書きは、CSSで縦書きを指定するのではなく、ビューアの
側で縦書きにして表示するというものになります。
そのような実装では、margin-left を字下げに使っている、青空文庫の
XHTML+CSSなどがそのまま使えます。

CSS3 Text Layout 仕様が完成したあとの将来のEPUB仕様では、
EPUBの縦書き表示モードにおいては、ルート要素にビューアの側で
{block-flow: rl; directional-mode: logical}
を与えたものとして動作することと規定することができます。
そうすれば、CSS3 Text Layout 標準に従いながら、現在の縦書きEPUB実装とも
互換性がとれることになります。

> 
> もう一点気になるのは、directional-modeは、文書やスタイルシートに書かれて
> いる値に基づいて解釈を変えようという話なのか、それとも文書やスタイルシー
> トに書かれている値に関係なく、ユーザの指示によって変えようという話なのか?
> 
> ユーザ指示もスタイルシートとして扱えばいいという話もありますが、そうすると
> cascadingとの相互作用が問題になります。最終的にcascadingを施して決まった
> 値によって、動作を変えるという話はCSSではすごく嫌われます。すくなくとも
> media queryのときはそうです。

CSS仕様としては、スタイルシートに書かれているのに従うだけですが、
EPUBビューアというアプリケーションとなると、ユーザーの指定、あるいは
パッケージでの指定によって、スタイルを変えることがありえます。
縦書き表示もそのようなものだと思います。

論理的プロパティ(margin-start など)の場合と違って、directional-mode
では cascading が複雑になる問題はありません。
directional-mode が変わっても、cascading 処理は変わりません。
cascading のあとのプロパティの解釈とレンダリングが変わるだけです。

あるプロパティで指定するモードによって他のプロパティの解釈のしかた
が変わるという例は、directional-mode の他にもあります。
box-sizing がそうです。
http://www.w3.org/TR/css3-ui/#box-sizing
このプロパティについてはCSSWGで合意されていて、ブラウザでも実装されてます。
関連記事:
http://builder.japan.zdnet.com/sp/css-firefox-safari/story/0,3800083423,20371390,00.htm

> 
> こちらの問題を整理するためには、先に言った「要求の体系的な整理」をして、
> 縦書きは何によって決まり、何に影響を与えるかをまとめないと駄目です。そう
> でないと、全体像を見ようとしない提案として拒否されるでしょう。

CSS3 Text Layout が標準になれば、縦書きは block-flow プロパティの値に
よって決まるということになります(writing-mode プロパティは block-flow
と direction に展開されるショートハンド)。

「CSS 2.1のプロパティのうち縦書きによって影響を受けるもの」
については次にコメントしました:
http://lists.w3.org/Archives/Public/public-html-ig-jp/2010Jun/0007.html
http://lists.w3.org/Archives/Public/public-html-ig-jp/2010Jun/0009.html
ほぼこれが、directional-mode の影響を受けるものということになります。
そのうちにCSS3プロパティも含めて、directional-mode の影響を受けるものを
詳細にまとめようと思います。

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

Received on Sunday, 18 July 2010 04:16:22 UTC