強火で進め このページをアンテナに追加 RSSフィード

整理された情報は こちら へどうぞ。

2012年05月29日

Mac で PDF からコピーした濁点/半濁点付きの文字列を Firefox に貼り付けた時におかしくなる問題の対処方法

さっさと解決したい人向けの解説

変換ツール作ったんでここで変換。

詳細説明

PDFで濁点や半濁点の文字をコピーし、Firefoxの検索窓などに入力したり、フォームに貼り付けると以下の様に濁点の部分が分離した様な描画になります(Macの場合)。

f:id:nakamura001:20120530002059p:image

原因についてざっくりと言うとUnicodeによる文字の正規化の種類の違いです。

Unicodeの場合には例えば「ダ」という文字を表現する時に「ダ」という文字としての表現の他にも「タ」と濁点の「 ゙」を組み合わせて表現(※)する事も可能です。

※これは合成や合成列と呼ばれます。 http://tama-san.com/?p=3512

この様に複数の表現方法が有ると文字の検索を行う時に単体で表現されているものと合成文字のパターンの両方を考慮した検索ルーチンを作成する必要が有ります。

その様な手間を防ぐ為に正規化という作業を行います。正規化には主に以下の2つパターンが有ります。

  • 全ての文字を「単体で表現される文字(例:ダ)」に正規化する、Normalization Form C(NFC、正規化形式 C)。
  • 全ての文字を「バラバラのパーツで表現される文字(例:タ ゙)」に正規化する、Normalization Form D(NFD、正規化形式 D)

NFCのサンプル】

ガギグゲゴ

パピプペポ

【NFDのサンプル】

ガギグゲゴ

パピプペポ

ここまで聞くと既に分かったかもしれませんが今回の症状はこの「バラバラのパーツで表現される文字」の方への正規化が行われた為に発生した問題だと思われます。

検索をした所、こちらのページでとても分り易く丁寧な解説がされていました。

ウノウラボ by Zynga Japan: Mac OS X上のUnicode

http://labs.unoh.net/2007/09/unicode-on-mac.html

NFDからNFCに変換する為のコードも記載されていましたのでこちらを使わせて頂き、変換ツールを作ってみました。「バラバラなヤツ(合成文字)は嫌だーーっ!!」という方はこちらをご活用下さい。

NFD→NFC変換ツール

http://tsuyobi.heteml.jp/html/tools/nfd2nfc/

関連情報

紹介マニアどらふと版: Mac OS X におけるファイル名に関するメモ(NFC, NFD等)

http://www.sakito.com/2010/05/mac-os-x-normalization.html

ドラえもん問題 @ Terabithia

http://key2.jp/~yskhashi/wordpress/?p=427

guroguro 2016/06/02 18:45 PDFから文字をコピーすることが多くNFD→NFC変換ツール利用させていただいております。
こちら、プなど半濁点も濁点となってしまっている現象が発生しておりました。
念のためご報告させていただきました。

nakamura001nakamura001 2016/11/10 21:38 ご指摘、ありがとうございました。

調査した所、今回使用したライブラリの中にバグを見つけました。
該当のバグを修正したものに更新しましたので現在は改善されたはずです。
また何か有りましたらご連絡下さい。

guroguro 2017/01/07 21:32 ご対応いただき大変感謝致します!

相変わらずPDFからコピペが多いのため、こちらのツールによって
非常に作業が効率的になります。
本当にありがとうございます。

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト

コメントを書くには、なぞなぞ認証に回答する必要があります。