ExtendScriptのFileオブジェクトで、encodingプロパティに使えるエンコーディング形式の名前はAdobeの『JavaScript Tools Guide』にずらっと出てくるのですが、
この中にUTF-8 BOM付きに相当するものはあるのでしょうか。さっぱり分かりません。探すよりバイナリモードで書き込んでやる方が早いと思ったので関数を書いてみました。
function saveUTF8BOM(fileObj,txt){
fileObj.encoding="binary";
fileObj.open ("w");
fileObj.write("\xEF\xBB\xBF");
fileObj.close();
fileObj.encoding="utf-8";
fileObj.open ("a");
fileObj.write(txt);
fileObj.close();
}
これができるとどんなおいしいことがあるかというと、AutoHotkey(AHK)スクリプトが書き出せます。AHKで日本語を扱うにはBOM付きで保存しないといけません。
AHKを使うと、たとえばクリップボードに文字列を格納するのが超カンタンにできます。
clipboard = クリップボードに入れたい文字列
と書くだけです。右辺は""で囲んだりする必要もありません。複数行にわたる場合は
clipboard =
(
クリップボードに
入れたい
文字列
)
のように書きます。
※『%』と『`』は特殊な意味を持つ記号なので、クリップボードに入れたい文字列に含まれる場合は『`%』『``』のようにエスケープしてやる必要があります。
これを使って、InDesignで選択文字列に適用されているフォントのフォントファミリーネームをクリップボードに入れるExtendScriptを書いてみましょう。拡張子.ahkがAutoHotkeyに関連付けられていることが必要です。
var fontFamilyName=app.selection[0].texts[0].appliedFont.fontFamily;
var ahkCode="clipboard="+fontFamilyName;
var f=File(Folder.desktop+"/es001.ahk");
saveUTF8BOM(f,ahkCode);
f.execute();
おしまい
PR