MacでPDFからコピペした時のNFD問題対策

More than 1 year has passed since last update.


MacでPDFからコピペした時のNFD問題の対策。

MacでPDFからコピペした文字が、濁点/半濁点が離れる。


  • 「お読みください」

  • 「お読みくた゛さい」


Macのファインダーのコピーだと見た目的な違いが無いので判別が難しい。


原因

MacOSのファイルシステムであるHFS+が使用している、UTF-8の正規化方法が「NFD」というもので、2文字に分けて正規化されてしまうことが原因。


対策とどこでクリアするか?


NFD → NFCに変換をする。

nkf(Network Kanji Filter)で変換が可能。

- UTF-8にもいろいろある


どこで?


  1. コピーした時点で変換する。

  2. タスクランナーに組み込んで変換する。

とりあえず前者の仕組みを MacのAutomaterでシェルスクリプトを実行してクリップボードにコピーするで実現する。


Do


nkfをインストール(npm でもインストールが可能)


nkfで --ic=UTF8-MACオプションを指定して実行

実行するシェルスクリプトは以下

/usr/local/bin/nkf -w --ic=UTF8-MAC


↑コレをAutomaterで処理を登録

スクリーンショット 2017-01-26 23.41.14.png

この処理だけでok。

クリップボードの内容を取得のフローを入れてたら、テキストが2重に表示されたりしてちょっとハマった。


検証

テキストファイルを2つ用意して、

コピペしてみる。

【NFDのサンプル】  

ガギグゲゴ|パピプペポ


変換前

cat test.txt | od -tx1c

0000000    e3  80  90  4e  46  43  e3  81  ae  e3  82  b5  e3  83  b3  e3

【 ** ** N F D の ** ** サ ** ** ン ** ** プ
0000020 83 97 e3 83 ab e3 80 91 0a e3 82 ab e3 82 99 e3
** ** ル ** ** 】 ** ** \n カ ** ** ゙ ** ** キ
0000040 82 ad e3 82 99 e3 82 af e3 82 99 e3 82 b1 e3 82
** ** ゙ ** ** ク ** ** ゙ ** ** ケ ** ** ゙ **
0000060 99 e3 82 b3 e3 82 99 7c e3 83 8f e3 82 9a e3 83
** コ ** ** ゙ ** ** | ハ ** ** ゚ ** ** ヒ **
0000100 92 e3 82 9a e3 83 95 e3 82 9a e3 83 98 e3 82 9a
** ゚ ** ** フ ** ** ゚ ** ** ヘ ** ** ゚ ** **
0000120 e3 83 9b e3 82 9a
ホ ** ** ゚ ** **


変換後

cat test_nfc.txt | od -tx1c

0000000    e3  80  90  4e  46  43  e3  81  ae  e3  82  b5  e3  83  b3  e3

【 ** ** N F D の ** ** サ ** ** ン ** ** プ
0000020 83 97 e3 83 ab e3 80 91 0a e3 82 ac e3 82 ae e3
** ** ル ** ** 】 ** ** \n ガ ** ** ギ ** ** グ
0000040 82 b0 e3 82 b2 e3 82 b4 7c e3 83 91 e3 83 94 e3
** ** ゲ ** ** ゴ ** ** | パ ** ** ピ ** ** プ
0000060 83 97 e3 83 9a e3 83 9d
** ** ペ ** ** ポ ** **

変換できてる。


サービスに登録

スクリーンショット 2017-01-26 23.41.14.png

PDFからコピーするときは、これを選んで変換する。

通常のコピー(cmd + c)を上書きすると常に実行されたりもする。

以上。