ルビありの文章を作っていて、ルビのある行とない行で行間がずれるのを防ぐにはどうしようかと考えていた。どうもInternet ExplorerとChrome共にrt
の表示はCSSで制御できないみたい。それならと論理的な計算で行間を確保すればいけるかと思ったけれども、それもダメそう。アバウトにline-height: 2
という結論は出たけれども……。
Demo: Sizing Ruby
rt
のフォント・サイズは50%
でline-height
プロパティーはnormal
なので、その高さは0.5 * 1.25 = 0.625
と計算できる。例えば親のフォント・サイズが16px
とすると16px * 0.625 = 10px
となる。これが行間に収まれば良いので、line-height: 1.625
あれば十分そうだが、フォントによっては1.85
程度必要になる。アセンダラインとディセンダラインの影響なんだと思う。
これにブラウザー側の最小フォントサイズ設定の影響が加わる。Chromeでは9px
がデフォルトだったような気がするので、単純に50%
と考えて計算はできないことになる。
結果ワークアラウンド的な対処にならざるを得なそう。僕の結論としてはline-height: 2
くらいでそこそこ安定してルビが振れるということになった。徒労感しか残らない結論だ。
以下のような感じにできると、行ボックスから独立させられるので良さそうだけど、今のところ出来ない。
ruby {
position: relative;
}
ruby rt {
display: block;
position: absolute;
bottom: 100%;
}
逆に行間に合わせてルビのフォント・サイズを自動調整できるという形でも良さそうだけど、どっちにしろ出来ないことには変わりない。今のところはおとなしくline-height: 2
くらいの、可能な限り小さな値を指定するしかなさそう。