血統の森+はてな

旧はてなダイアリーの自動インポートによるアーカイブです。

webでローマ数字を表現するということ

パート1国入りしたことによる弊害ぱさぱさ
JRAが国際機関から注文をつけられるの巻。本題からそれて、ローマ数字をwebで表現することについては、何らかの形でグレード表記が話題に上がるたびに繰り返される?ような気もしますが。

HTMLで機種依存文字であるローマ数字を直接入力するのは論外ですが、アルファベットのIを並べてローマ数字に見立てるのもどうなのかと思います(理由はあえて書きませんよ)。かといってHTML4.01の文字参照にローマ数字は含まれないので、結局のところ文字コードUTF-8を使うのが理想ですか、数値文字参照のⅠ[→Ⅰ]、Ⅱ[→Ⅱ]、Ⅲ[→Ⅲ]を使うのが現状の答えでしょうか(面倒なのでやってない)。

微妙に表現が混乱してますぜ、兄者。

機種依存文字、というのは通称であって正確な用語ではないというのはこの際置いておくとして、HTMLで機種依存文字であるローマ数字を直接入力するのが論外ならば、機種依存ではないutf-8エンコーディングを用いれば解決します。それでも後述する理由により、あまりお勧めしませんが。
HTML4.01の文字参照にローマ数字は含まれない、といいつつ数値文字参照でローマ数字を表現することができています。含まれないのは文字実体参照であって、文字参照そのものではありません。また、文字参照エンコーディングは無関係です。*1
つまり、ローマ数字を規格の中で表示させる条件としては、

のどちらかを取ることになります。しかし、これらは必要条件であって十分条件ではありません。OS、ブラウザ、フォントの条件が満たされないと、正しくローマ数字が表示されることは保障されません。実際に上記の方法をとっても、Windowsで正しく表示されているにもかかわらずMacでは表示されないケースがあります(この目で直接見たわけではないですが)。Macヒラギノフォントはバグがあって、ローマ数字を正しく表示できなかったと思います*2

アルファベットでローマ数字を表現するのは次善の策ではありますが、ぱさぱさでも触れられているように、これもお勧めしません。理由としては、機械がローマ字と認識せずに、単なるアルファベットと認識する…ファイル内検索をかければ、ローマ数字とアルファベットを同一の文字とみなすことはプログラム側で細工をしないかぎりないはずです。数値文字参照にしても、同様のことが言えると思います。

面倒ですが、画像として表示させる、というのはありです。少なくとも確実に表示させることはできます。しかし、文字が何のためにエンコードされるのかと考えると、虚しさを覚えますが。


そんなこんなで、ローマ数字が環境を問わず正確に表現できることは保証されていない、というのを頭の片隅に入れた上で使っていくのが現状の答えかなと。