忍者ブログ

ぼんぷろぐ

InDesignとかイラレとかのスクリプトよもやま話

新しいブログに引っ越しました。

こちらのブログはもう更新しませんが、コメント欄は生きてますので疑問、ご指摘などありましたらどうぞ。

[ExtendScript]
ExtendScriptでUTF-8 BOM付きで保存する

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

コメント

お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード Vodafone絵文字 i-mode絵文字 Ezweb絵文字

プロフィール

kawamoto_α
(あるふぁ(仮))


InDesignで新聞組版のようなことをしています。

ツイッタ

※ブラウザによっては当ブログからDLしたzipファイルが拡張子なしになることがあるようですが、.zipを補って開いてください。



イラレ用トーンカーブスクリプト(¥1500)



クロソイド式角丸長方形スクリプト(¥500)
Illustrator用
InDesign用



イラレスクリプトをキーボードショートカットで実行するやつ(Win用)