ルビを下側に振る : ruby-position: under の実装
ルビを下側に振る : ruby-position: under の実装
地名や人名、ちょっと読めない単語などにふりがな(ルビ)を付けたいこと、ありますよね。Web ページでも同様で、ずっと以前から専用のHTML要素(タグ)が用意されています。
それが ruby 要素です。小さな文字のふりがなが、対象テキストの上側にくっつきます。普通、ふりがなは上につけますから。でもでも、下側に付けたいことだって、ありませんか?
この、ふりがなの位置を指定するCSSプロパティが ruby-position です。under を指定すれば下側に付くという仕様。でもこのプロパティは草案段階で、執筆時現在 Edge と Firefox のみの対応となっています。
ruby 要素を使わなければいいじゃない?という声が聞こえてきそうですが、アクセシビリティに配慮した、セマンティックなコーディングを心がけるならば、なるべく使いたいところ。そこで今回は、ruby要素への ruby-position: under を、シンプルな代替手法で実装してみます。
2023-06-06 追記:
現在、ruby-position プロパティの 値 under は、safari 以外(IEは問題外)で実装済みのようです。
safari でも、-webkit- プレフィックスをつけた上で、値を after に指定することで、同等のスタイルとなります。
この記事で書いたなんちゃって実装は、不要になりました。よかったね。
ruby-position: under;
-webkit-ruby-position: after;
サンプルコード
<!-- HTML -->
<span class="rubyposition_under"><ruby>IEEE(米国電気電子学会)<rt>アイトリプルイー</rt></ruby></span>
/* CSS */
.rubyposition_under{
display: inline-block;
}
.rubyposition_under ruby{
display: flex;
flex-direction: column;
text-align: justify; /* この指定は text-align-last を IE に対応させるために必要 */
text-align-last: justify;
}
サンプルDEMO
IEEE(米国電気電子学会) // デフォルト CSS での指定を何もしなければ、ふりがなはデフォルトで上に付きます。
IEEE(米国電気電子学会) // ruby-position: under ruby-position プロパティの対応ブラウザは、執筆時現在 Edge と Firefox のみ。それ以外では、under を指定しても、ふりがなはデフォルトのとおり上に付きます。
IEEE(米国電気電子学会) // サンプルコード サンプルコードでは、ふりがなは下に付きます。ただし Safari では、執筆時現在 text-align-last に対応していないので、ふりかなが対象テキストに対して両端揃えに広がりません。また、ふりがなと対象テキストとの間隔は、実際には margin や line-height などで調整する必要があるでしょう。
おわりに
始めは ruby 要素の display を inline-block に、rt 要素を block にしてやればいいかなと思ったのですが、safari でうまくいかず。意外に ruby 要素の挙動はややこしいです。