Help us understand the problem. What is going on with this article?

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

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

以上。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした