ビジネス課題への解決策(アイディア)と、新たな発想(+α)が見つかるIT情報メディア

Menu
  1. TOP
  2. データ活用
  3. ~波ダッシュ~って字形が変わった?

~波ダッシュ~って字形が変わった?

  • LINEで送る
  • このエントリーをはてなブックマークに追加

前回記事、「Oracleデータベースで、波ダッシュの文字化けはなぜ起きるのか?」では、Oracleデータベースに格納されたテキストの「波ダッシュ」の文字化けについて書きました。
そのとき、Unicodeコンソーシアムで登録されている波ダッシュの字形が、正しくない形で登録されたことを説明しました。

  16新コード 字形
[Shift_JIS]の波ダッシュ 0x8160
[Unicode]の波ダッシュ U+301C
[Unicode]の全角チルダー U+FF5E

[Shift_JIS]の[0x8160]は、[Unicode]の[U+301C]と同じ名称で、[Unicode]の[U+FF5E]と似た文字の形をしている、ということでした。

お手持ちの環境で試されたかたもいらっしゃると思いますが、Vista以降のWindowsの環境を使った方は、「あれっ?」と思われたのではないでしょうか?

メイリオフォントで確認してみると、

  16新コード 字形
[Shift_JIS]の波ダッシュ 0x8160
メイリオの波ダッシュ U+301C
メイリオの全角チルダー U+FF5E

あれ?[Shift_JIS]と同じ形になっている?
[Unicode]の仕様が変わった?

いえいえ、[Unicode]の仕様は変わっていません。
Unicodeコンソーシアムの定義は文字コードごとに分かれており、[U+301C]と[U+FF5E]は以下に記載されています。

http://www.unicode.org/charts/PDF/U3000.pdf
http://www.unicode.org/charts/PDF/UFF00.pdf

この資料は、Unicode 7.0のもので、2014年に作成されたものです。
なので、2014年現在も

  16新コード 字形
[Unicode]の波ダッシュ U+301C
[Unicode]の全角チルダー U+FF5E

が、Unicodeコンソーシアム的には正しい字形です。

Windows Vista以降のOSになると、かなりのフォントでは[Unicode]の「WAVE DASH」が左から「上がって下がる」字体([Shift_JIS]の「WAVE DASH」の字形と同じ)に変更されています。
しかし、[Shift_JIS]の[0x8160]が変換される[Unicode]の16進コードは相変わらず[U+FF5E]ですし、字体が変更されたことにより、[Unicode]の[U+FF5E]と[U+301C]は、見た目が一致する文字なのに16進コードが異なる文字、ということになってしまっています。

Windows XPとWindows Vistaそれぞれ、OSに付属している文字コード表を使って[U+301C]の文字を見てみます。

Windows XPの文字コード表で「MS ゴシック」フォントを使って、[Unicode]の「U+301C」を選択した画面です。
字形がUnicodeコンソーシアムの 定義にある「WAVE DASH」と同じになっていることがわかります。
また、この画面からはわかりませんが、[Shift_JIS]の[0x8160]は、 [Unicode]の[U+FF5E]に変換されます。

Windows 7の文字コード表で、同じく「MS ゴシック」フォントを使って、[Unicode]の「U+301C」を選択した画面です。
Windows XPと同じフォントセットなのに字形が変わり、[Shift_JIS]の「WAVE DASH」と同じになっていることがわかります。
字形は変わりましたが、[Shift_JIS]の[0x8160]は、相変わらず[Unicode]の[U+FF5E]に変換されます。

この字体の変更がいつ行われたのかは、フォントによって異なります。
例えば、MS 明朝およびMS ゴシックでは、フォントのJIS2004対応(Windows Vista)およびその旧字体(JIS90)互換用フォントのリリースと同時に変更されていますし、メイリオでは当初から[Shift_JIS]の「WAVE DASH」と同じ字形で提供されています。

参考として、筆者が使っているWindows 7環境に導入されているフォントのうち、[U+301C]を持つフォントで[Unicode]の「WAVE DASH」と「FULLWIDTH TILDE」を並べて出力してみました。 

それぞれ、[U+301C][U+FF5E]の順で並べています。
MS 明朝/MS P明朝 のように2つの字形が異なるフォントもありますが、ほとんどのフォントは全く同じ字形です。
(notepadなどを使用して表示したとき、[U+301C]の字形が汚く見えるのは、そのフォントが縮小フォントを持っていないためです。だいたい18ptくらいのサイズにすると、キレイに見えるようになるはずです)

[U+301C]を持たないフォントは代替フォントで表示され、 こんな感じに見えます(左が代替フォント)。

ここまでWindowsを基準に書いてきましたが、同様に、この2文字をiOS、Android、Linuxの、Microsoft以外の環境で表示してみると

Apple iOS 8.1

Android 4.4

Linux (Fedora 20)

いずれも、同じ字形に見えます。

「字体が正しくなったし、これで問題解決」かというと、実はそんなことはなく。正しい字体が表示されることによって、余計やっかいなことになるかも知れません。

前回説明したとおり「波ダッシュ」は、環境によってどちらの文字を使用するかが異なります。
iOS、Android、Linuxなどの環境では、「波ダッシュ」は16進コードの[U+301C]で入力されます。
Windows環境では、「波ダッシュ」は16進コードの[U+FF5E](全角チルダー)で入力されます。
ということは、これら2つの環境それぞれで入力した
「なが〜い」

「なが~い」
の2つの文字列は、見た目は同じでも「波ダッシュ」16進コードが異なるので、テキスト検索では一致しない文字列、ということになるのです(なので、データ側を何とかして同一のコードに揃えるか、検索側で何とかしなければならないのです)。

「見た目が一致する文字なのに16進コードが異なる文字」って、見た目が違う以上にやっかいだと思いませんか?


関連コンテンツ

Oracleデータベースで、波ダッシュの文字化けはなぜ起きるのか?

追記:Waha! Transformer 製品サイトの関連コンテンツ

Waha! Transformer の対応文字コード体系

データの抽出や加工、連携にお悩みではありませんか?

20年以上の実績に裏打ちされた信頼のデータ連携ツール「Waha! Transformer」で、自社に眠るデータを有効活用。まずは無料のハンズオンセミナーや体験版で効果を実感していただけます。

> 純国産ETLツール「Waha! Transformer」

Waha! Transformer
メールマガジンの登録はこちらから
メルマガ登録 お問い合わせ