機種依存文字!

波線「〜」には、別々のキャラクターコードに割り当てられた、似たような字形の文字があるので注意。
…という話。

結論から書くと、
  • Macで「から」を変換して出てくる「〜」や、JISキーボードで「へ」のキーに割り当てられている「〜」のUnicodeは 301c
  • Windowsでは、それらのUnicodeは ff5e
そっくりな字形だけれど、別の文字なのです。

  → こちらのブログ記事(波線文字化け対策|ガチムキ覚書)がとても参考になります。

入力した文字のキャラクターコードを出力するJavaScriptを書いてみたので、Win / Mac両刀使いの人は、それぞれのプラットフォームで確かめてみてください。

  → 文字コードのテスト|freefielder.jp

Macから入力した「〜」と、Windowsからコピペしてきた「~」を並べてキャラクターコードを求めてみると、こんな感じになるのです。



Macの標準フォントで表示すると、字形はまったく同じなのですが、実は内部的にコードが異なっている…。困りもんですなぁ。

なぜ困ったかと言いますと、ウチのサイトで公開している縦書きWebページ作成のための「横→縦変換スクリプト」。このスクリプトは、

入力された文字列中の、縦書きWebレイアウトをする際に表示位置を調整しなくてはならない文字たちを検出して、それらにスタイルタグを付けて出力する

という動きをします。

「位置を調整しなくてはならない文字たち」の中に波線「〜」が含まれているのですが、"Windows+IEの環境で「~」にタグが付かない" という不具合報告を頂いたので調べてみたら、「〜」は2種類ある! という驚愕の事実が判明したわけです。あ、オレが知らなかっただけで、けっこう有名な話なのかも。

つまりですね、うまく動かなかった原因は、

入力文字列中の「〜」を、スクリプト内で「〜(301c)」とマッチングさせていたのだが、Windows環境から入力された「~」は「~(ff5e)」であるので、当然「〜(301c)」とはマッチしない。

ということだったので、「~(ff5e)」にもマッチするようにスクリプトを改修して一件落着。ちゃんと動くようになった筈。

カテゴリ: