Firefoxの文字化け対策
- 公開日: 2007/02/04(日) 11:24[JST]
ここ最近、FreeBSDでブラウズをしていてずっと気になっていたのだが、なぜか、半角の「ム」という字が文章中に表示されることがある。文脈から判断すると、横線の代わりに半角の「ム」が表示されるようだ。
で、ふと気づいて、このムの時をターミナルにドロップしてみた。ターミナルに表示されたのは"2014"という文字列。つまり、ユニコードのx2014に半角の「ム」が割り当てられる、という状態になっていた。どうやら、web用に使っているIPAモナーフォントに鍵がありそうだ。早速、フォントエディタの`FontForge <https://fontforge.org/en-US/>`__をインストールして調べてみる。
フォントコードx2014はユニコードでは"EM DASH"という記号らしく、モナーフォントでは未定義となっている。さらに、文字化けが起こっているページをテキストエディタで読んでみると、全角ダッシュだった。つまり、Firefox(が使っているシフトJIS→unicode変換ルーチン)は、シフトJISの全角ダッシュをunicodeのEM DASHに変換するが、モナーフォント(というよりは、その元となったIPAフォント)には、EM DASHに対応する文字が無いので、文字化けがおこる、という現象らしい。
さらに調べてみると、JIS漢字とUCS (Unicode)の文字の対応・変換についてというページを発見。そのページによれば、
JIS漢字の全角ダッシュ(—)はEM DASHである。対応するUCSのコードポイントはU+2014である。
しかし、Unicodeコンソーシアムが提供する変換表では、Unicodeで対応する文字はEM DASHでなくHORINZONTAL BAR (U+2015)になっている。
これはUnicodeの変換表の間違いであろう。仮にJISの文字名称を見ないことにしても、JISの規格票では記号の意味として「ダッシュ(全角)」と記されているので、EM DASHとHORINZONTAL BARのどちらが適切かといえばEM DASHである。
ということらしい。確かに、IPAモナーフォントにはx2015に全角ダッシュっぽいグリフが定義されている。と、いうことは、x2015をx2014にコピーすれば解決する、ということか。
FontForgeでフォントの編集をした所、問題解決。良かった良かった。