LoginSignup
69
56

More than 3 years have passed since last update.

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

Last updated at Posted at 2017-01-26

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

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

  • 「お読みください」
  • 「お読みくた゛さい」

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

原因

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

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

NFD → NFCに変換をする。

nkf(Network Kanji Filter)で変換が可能。
- UTF-8にもいろいろある

どこで?

  1. コピーした時点で変換する。
  2. タスクランナーに組み込んで変換する。

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

やる

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つ用意して、
コピペしてみる。

NFCとNFDのサンプルは↓こちらからお借りします。
http://pollux.sakura.ne.jp/test/unicode/

【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)を上書きすると常に実行されたりもする。

以上。

69
56
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
69
56