さっさと解決したい人向けの解説
変換ツール作ったんでここで変換。
詳細説明
PDFで濁点や半濁点の文字をコピーし、Firefoxの検索窓などに入力したり、フォームに貼り付けると以下の様に濁点の部分が分離した様な描画になります(Macの場合)。
原因についてざっくりと言うとUnicodeによる文字の正規化の種類の違いです。
Unicodeの場合には例えば「ダ」という文字を表現する時に「ダ」という文字としての表現の他にも「タ」と濁点の「 ゙」を組み合わせて表現(※)する事も可能です。
※これは合成や合成列と呼ばれます。(参考サイト http://tama-san.com/?p=3512 )
この様に複数の表現方法が有ると文字の検索を行う時に単体で表現されているものと合成文字のパターンの両方を考慮した検索ルーチンを作成する必要が有ります。
その様な手間を防ぐ為に正規化という作業を行います。正規化には主に以下の2つパターンが有ります。
- 全ての文字を「単体で表現される文字(例:ダ)」に正規化する、Normalization Form C(NFC、正規化形式 C)。
- 全ての文字を「バラバラのパーツで表現される文字(例:タ ゙)」に正規化する、Normalization Form D(NFD、正規化形式 D)
【NFCのサンプル】
ガギグゲゴ
パピプペポ
【NFDのサンプル】
ガギグゲゴ
パピプペポ
(2017/03/30 追記)
(追記ここまで)
ここまで聞くと既に分かったかもしれませんが今回の症状はこの「バラバラのパーツで表現される文字」の方への正規化が行われた為に発生した問題だと思われます。
検索をした所、こちらのページでとても分り易く丁寧な解説がされていました。
ウノウラボ by Zynga Japan: Mac OS X上のUnicode
http://labs.unoh.net/2007/09/unicode-on-mac.html
NFDからNFCに変換する為のコードも記載されていましたのでこちらを使わせて頂き、変換ツールを作ってみました。「バラバラなヤツ(合成文字)は嫌だーーっ!!」という方はこちらをご活用下さい。
関連情報
紹介マニアどらふと版: Mac OS X におけるファイル名に関するメモ(NFC, NFD等)
http://www.sakito.com/2010/05/mac-os-x-normalization.html
ドラえもん問題 @ Terabithia
http://key2.jp/~yskhashi/wordpress/?p=427