前回、<span>を使つてルビの實裝をしたが、個人的な事情で、<span>のネストを避けたくなつた。それは、<span>がネストすることで、終了タグの檢索が、自作ツールからほんのちよつと面倒になることだ。(プロから見れば笑はれるぐらゐのわづかな面倒さではある。)
私は、この日記を書くときに、いちいち本文に直接ルビを振ることはしない。本文に總ルビを振ることを手作業でやつてゐたら、とても片手間に日記など書けない。それに、ルビを振つた後の本文なんて、わづらはしいタグだらけで、とても、推敲なんてできない。
したがつて、自作ツールで、振り假名のデータベースからルビをつけたり、本文からルビを外したりする操作を何度も行なつてゐる。このとき、同一名のタグがネストしてゐるとツールの内部で、餘分なスタックが必要になり、好ましくない状況を生じる。span.ruby は良しとして、span.rt と span.rpを他の要素で代替できないか檢討した。
ここで、テキストを對象にしたインライン要素をあげる。(http://www.w3.org/TR/html4/)
- <em>: 強調
- <strong>: より強い強調
- <cite>: 引用
- <dfn >: 定義
- <code>: コンピュータコード
- <samp>: プログラムサンプル
- <kbd >: キーボードテキスト
- <var >: 變數、引數
- <abbr>: 短縮語
- <acronym>: 頭字語
このなかで、意味的に振り假名として使へさうなのは、<em><strong><dfn >あたりだが、しかし、振り假名付き文字が強調表示や定義内で使はれることもあり、やはり同一タグのネスト問題は起きる。
つぎに檢討したのが以下の二つだ。
- <sup >: 上付き文字
- <sub >: 下付き文字
<sup >は意味的には違ふが、表示的に振り假名に近いし、上付き文字のなかに更に振り假名を使ふことはないだらう。代替用のタグとして<sup >を採用して、スタイルシートを定義してみた。
span.ruby { position:relative; line-height:2.2em; }
span.ruby sup.rt { position:absolute; left:0; top:-1.1em; font:normal 50%/1 "MS PGothic",sans-serif; text-decoration:none; text-indent:0; }
span.ruby sup.rp { display:none; }
<span class=ruby>
圓
<sup class=rp>(</sup>
<sup class=rt>ヱン/sup>
<sup class=rp>)</sup>
</span>
ただ、sup.rtの場合どうしても、文字サイズや位置の部分を<sup >要素のデフォルトから複雜に引き繼いでをり、ブラウザによる調整が難しいので、結局は、<span>だけでルビを表現するといふ正攻法に戻す。そして、自作ツールもその方向に作り變へる。