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

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

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

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

コメント

このブログの人気の投稿

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2020-12-01 09:41:49 RSSフィード2020-12-01 09:00 分まとめ(69件)