Firefoxの文字化け対策

ここ最近、FreeBSDでブラウズをしていてずっと気になっていたのだが、なぜか、半角の「ム」という字が文章中に表示されることがある。文脈から判断すると、横線の代わりに半角の「ム」が表示されるようだ。

で、ふと気づいて、このムの時をターミナルにドロップしてみた。ターミナルに表示されたのは"2014"という文字列。つまり、ユニコードのx2014に半角の「ム」が割り当てられる、という状態になっていた。どうやら、web用に使っているIPAモナーフォント[archive]に鍵がありそうだ。早速、フォントエディタの`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でフォントの編集をした所、問題解決。良かった良かった。

コメント(0)



Note

本サイトのハイパーリンクの一部は、オリジナルのサイトが閉鎖してしまったため"Internet archive Wayback Machine"へのリンクとなっています。そのようなリンクにはアイコン[archive]を付与しています。

本サイトはCookieを使用しています。本サイトにおけるCookieは以下の三種類のみであり、Cookieの内容に基づいてサイトの表示を変更する以外の用途には用いておりません。