4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

OSXでPDFから濁点付きのひらがなを普通にコピーする

Posted at

Mac OSXでは,PDFから濁音付きの日本語をコピーしてどこかに貼り付けようとすると,変な感じになります。
スクリーンショット 2019-01-12 15.29.18.png
これは,OSXでは平仮名の濁音を「◯+゛」の「2字」(結合文字列)で表現しようとする傾向があるため,なんじゃないかと思っています。
 参考文献→文字コード地獄秘話 第2話:聖母マリアよ、二人を何故別々に? - ALBERT Engineer Blog

もっとも,JavaScriptではこうした結合文字列を等価性に基づく合成済み文字(例:て+゛→で)に正規化するString.normalize(form)が実装されています。
"て゛".normalize("NFC") という感じにすれば「で」になります。(「という感じ」というのは,この例は結合文字列ではなく単なる2文字なので,コピペしても動かない故。)
 参考文献→String.prototype.normalize() - MDN web docs

そんでもって,Macでクリップボードやシステムサービス的なものを操作しようと思ったら,古くからAppleScriptが使われていたのですが,最近はJavaScriptを使うこともできます。
つまり,JavaScriptの標準機能を使って,OSから容易に呼び出せる,結合文字列をどうにかするサービスを作ることができます。たとえばAutomator+JavaScriptで「クイックアクション」の「サービス」にしてシステム環境設定でキーボードショートカットを割り当てるとこんな感じに。
スクリーンショット 2019-01-12 15.47.42.png

たとえばこんなコード

スクリーンショット 2019-01-12 15.51.48.png
Automatorで【新規作成→クイックアクション】。
JavaScriptを実行→クリップボードにコピー。
JavaScriptの内容はこんな感じ。

function run(input, parameters) {	
	// Your script goes here
	return input.toString().normalize("NFC");
}

おまけ:クリップボード内を操作する。

上記はAutomatorのワークフローとして作りましたが,たとえばクリップボード内に置いたまま操作することも考えられます。
私の場合,他にも,半角を全角にしたりとか(裁判所への提出文書は全角にする慣行なので…)その他諸々の処理を加えたいので,こんな感じのスクリプトを作っています。

法曹用正規化コピー.scpt
var app = Application.currentApplication();
app.includeStandardAdditions = true;

var cb = app.theClipboard();

cb = cb.split("\r").join("\n"); // \rを普通の改行に
cb = cb.normalize("NFC"); //合成文字を単文字化
cb = cb.replace(/[^\x01-\x7E] [^\x01-\x7E]/g, function(s) { //全角文字間の半角スペース削除
	return s.split(" ").join("");
});
cb = cb.replace(" "," "); //残った半角スペースを全角化
cb = cb.replace(/[A-Za-z0-9\(\)]/g, function(s) { //半角文字を全角化
    return String.fromCharCode(s.charCodeAt(0) + 0xFEE0);
});

app.setTheClipboardTo(cb);

使い方:PDF等から任意の文字列をコピーし,上記スクリプトを実行してから貼り付ける。

AppleScript的な感じでJavaScriptでクリップボードを扱う場合,まずStandardAdditionsを呼び出せるようにする必要がある点に注意。
 参考文献→JavaScriptによるMacの自動操作入門の情報まとめ - 大石製作ブログ
スクリプトエディタ.appで上記スクリプトを作って,スクリプトメニューから使用。
 →インストール方法委細 AppleScript ことはじめ - Script Factory

これでてきとーな判決文からコピペして裁判所提出文書作成が容易に!

4
2
0

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
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?