RE: ルビと行間についてご意見ください

桂川さんのメールにも書きましたが、私が前提を大分飛ばして提案だけ書いたので、申し訳なかったです。

ちょっと長くなりますが、現況と私の考えを書かせていただきます。

ルビに関しては、元々規定がなかったこともあり、IEはルビのある行の高さを高くする実装をしていますが、塩澤さんのおっしゃるようにこれだと行の送りが一定になりません。

そこでこの問題をこの二つのケースに分けて、
●プロや組版の知識がある方は、ルビを入れる時には全体の行間(line-height) を多めに取るので、ルビが入るだけの行間があれば、一定に組むことを可能にする
●そうでない場合は、一定に組むことを断念するが、ルビが重なるのはよくない
ということをしましょう、というのがこのご提案です。

塩澤さんの

>ブロック内の文書に <ruby> が含まれる場合に、
>その <ruby> の高さも考慮して line-height
>を自動的に決定するような仕組みがあると便利だと思います。

これはちょっと行き過ぎとなる場面もあるのではないかと思います。携帯のような小さい画面で、人名だけにルビを振るような場合、行が一定に揃うことよりもたくさんの情報を詰め込むことを優先することもあるので、これはこれでできた方がいいと思いますし、例えば100行に渡る長い段落の最後の行にルビがあったらレンダリングの最後で100行前まで戻って行間がぐっと広がる、というのはあまりよい体験にはならない可能性があります。

●日本語を読みやすく作りたいなら、特にルビを入れるのであれば、最低でもline-height:1.5以上を使うのは著者の責任
●ルビが入るだけの行間が空いているのであれば、行送りを一定に揃えるのがW3C/ブラウザーの責任

と分けた方がすっきりするのではないでしょうか。

こちらの例

>応用例としては、JavaScript などの操作などでルビを消した場合 (rt { display: none; })
>ブラウザ側の解釈によって行間が狭められます。

では、ルビをなくしても行間を変えたくないケースと言うのも存在ます。なので、ルビを消して、かつ行間を狭めたいのであれば、JavaScriptで両方を操作するべきではないでしょうか。デフォルトでなるべくきれいに、というのはよいことだと思いますが、ブラウザーはやはり製作者の意図を反映するのが第一です。過度な自動は、それと異なるものを意図したい場合に、製作者の負担を増やす可能性がある部分が心配となります。

>また、ルビの中心線で判断するという意見には賛成です。

ご賛同、ありがとうございます。

なお、日本語は、ルビに限らず、行の送りを一定にすることにこだわりが強いため、これに対する根本解決案がいくつか提案されています。一つ目が90年代にMSが提案したdocument gridあるはline gridと呼ばれるもの、もうひとつがCSS line boxで提案されているline-stacking-strategyで「行の送りを一定にする」モデルをCSSでサポートしましょう、という案です。

塩澤さんがおっしゃられている問題の根本解決は、このいずれかになると思っています。どちらの仕様ももう数年更新がないまま止まっていますので、来年のどこかで再スタートさせられれば、というのが私の希望的観測で、そのための予備調査を丁度始めようとしているところです。

とはいえ、これはまだだいぶ先の話ですし、これだけですべて解決するわけでもないので、今回のルビの議論も大切だと思います。


-----Original Message-----
From: 塩澤 元 (Shiozawa, Hajime) [mailto:hajime.shiozawa@gmail.com] 
Sent: Sunday, December 12, 2010 2:56 PM
To: Koji Ishii
Cc: public-html-ig-jp@w3.org
Subject: Re: ルビと行間についてご意見ください

こんにちわ、青山学院大学理工学研究科の塩澤です。

私は Mozilla でのルビ表示の実装を試みています [1]。
その実装でも、IE と同じような挙動 (included-ruby) になります。
これは内部で Inline-Block と同じように処理されているためです。
私は Mozilla 内のラインレイアウトの詳細が分からないので、include-ruby や auto の実装にどれだけコストがかかるかは把握できません。
しかし、Web でのルビ表示を普及させることを考えた場合に、この行間の問題は非常に重要だと感じています。
テストのためにいろいろなルビ付き文書をブラウザで見ますが、行間がそろっていないと非常に見づらく、綺麗ではありません。


ここからは私の提案です。
ブロック内の文書に <ruby> が含まれる場合に、その <ruby> の高さも考慮して line-height
を自動的に決定するような仕組みがあると便利だと思います。
これは line-stacking-ruby の話よりも、line-height の話になるのかもしれませんが。

<p>
国連気候変動枠組み条約第16回締約国会議(COP16)で、
2012年末までの温室効果ガス削減策を定めた京都議定書の単純延長という「最悪の展開」が回避されたことを受け、
産業界には<ruby><rb>安堵</rb><rt>あんど</rt></ruby>の声が広がっている。
</p>

という文書があった場合に、

p { line-height: auto; }

と指定することで、ルビのふられた「安堵」がある行の行間を、他の全ての行に適用する。
こうすれば、ルビのある行とない行で行間がバラバラになることはありません。
行間を気にする手間もはぶけるので、組版が意識されやすいページ以外の場所で、よりルビが使いやすくなるのではないかと思いました。(例えばニュースの配信やブログへの投稿)
応用例としては、JavaScript などの操作などでルビを消した場合 (rt { display: none; })
、ブラウザ側の解釈によって行間が狭められます。

もしすでにこのようなことを CSS で実現できたら教えてください。私の勉強不足です。


また、ルビの中心線で判断するという意見には賛成です。
Web の場合、ルビのサイズは50%だとルビ文字がつぶれて見づらい場合があると思います。
ディスプレイ装置の解像度やフォント表示技術の品質の問題もありますが、製作者がわざと親文字自体を小さくしている場合もあると思うので。


よろしくお願いします。

塩澤

[1]: https://bugzilla.mozilla.org/show_bug.cgi?id=256274


-- 
# 青山学院大学大学院
# 理工学研究科  知能情報コース
# 塩澤 元 (Shiozawa, Hajime)
# mail: hajime.shiozawa@gmail.com

Received on Sunday, 12 December 2010 12:25:59 UTC