先日、言及した Netscape でのルビ表示の代替策であるが、ここは、原點に戻りルビの仕樣書を見直してみた。
ルビ表記の完全な文法は次のとほりである。
(1) <ruby><rb>圍</rb><rp>(</rp><rt>ヰ</rt><rp>)</rp></ruby>
このなかに、代替策として次のやうな記述がある。
rt:before { content: "(" }
rt:after { content: ")" }
ブラウザが CSS2 に對應してゐれば、rp要素をわざわざ記述する必要がなく、しかも、引用符を好みに應じて後から一括變更することもできる。それに、はてな日記を閲覽するやうなユーザが使ってゐるブラウザは CSS2 に對應してゐるはずだ。でなければ、ルビ以前にはてな日記のレイアウトが崩れて讀めなくなる。
となると、次のやうに簡略化できる。
(2) <ruby><rb>圍</rb><rt>ヰ</rt></ruby>
XML の流れを引く XHTMLでなく、SGMLの流れを引く HTML では、もつと過激な簡略化もできる。ルビタグの草稿案によると、究極は次の形になる。
(3) <ruby>圍<rt>ヰ</ruby>
實は、(3) こそ、日本人が、當初、求めてゐたルビタグに近いものであり、このぐらいシンプルだと、HTMLのソースをそのまま編集することも難しくない。ただ、この場合、次のやうにスタイル宣言を變更して、rtの終了タグが ruby の終了タグを飛び越すことを禁止する必要がある。
ruby rt:before { content: "(" }
ruby rt:after { content: ")" }
しかし、これは、Explorerが CSS2 の擬似宣言の一部をサポートしてゐなかつたり、Netscapeがルビタグをサポートしないといふ後ろ向きの機能を當てにした對應であり、假に兩者がそれぞれに對應してしまつたら、次のやうな表示になるのではあるまいか?
これはこれで間拔けな状況だ。ブラウザが機能アップして多くのユーザがハッピーになつたとき、この日記は逆にアンパッピーな表示になつてしまふ。
また、ルビタグの草稿案では、過去との互換性を重視し、なはかつ一番簡潔にした表記は次のやうになる。
(4) <ruby>圍<rp>(<rt>ヰ<rp>)</ruby>
實は、この日記は、基本的にこのタグ付けを採用してゐた。しかし、終了タグを省略した表記は、ユーザー定義のスタイルシートでカスタマイズするのが困難で、モラル的に好ましくない。
といふことで、もう一度スタイルシートの原點に戻り、フォントのスタイルに注目する。ルビタグのフォントサイズは、rt要素は、ruby要素に對してデフォルトでは 55%の表示をすることになつてゐる。これに着目して、次のやうに rt と rp に對してフォントサイズの指定をしてみる。
ruby rp { font-size:55%; }
ruby rt { font-size:55%; }
すると、Netscapeで表示した場合、ルビが、テキストの進行方向に展開されるといふ状況は變はらないが、ルビの部分が縮小表示されて、可讀性が向上する。また、Explorerでは、もともと 55%の大きさを再指定しただけなので、表示に変化はない。
もちろん、可讀性は主觀的な規準に頼ることが多く、これでも、許せない人が大部分だらうが、このスタイルシートが適用される以前は、私でさへ Netscape で日記を讀むのを斷念してゐたのが、少なくとも、適用後は、Netscapeでの日記もからうじて讀める状況になつてきた。實は、これが一番の正攻法だつた。
この正攻法と (1)の完全表記を使ふことで
- ルビに對應したブラウザでは、正しくルビが表示される。
- ルビに對應してゐないがスタイルシートが使へるブラウザでは、ルビの部分が括弧付きで縮小表示になる。
- ルビにもスタイルシートにも對應してゐないブラウザでは、ルビの部分が括弧付きで通常大表示される。
といふ、次善の對應が可能になつた。