フレームグリッドの文字数と行数をスクリプト制御

InDesign ではすべての属性がスクリプト可能なのかと思いきや、フレームグリッドの基本情報である文字数/行数だけはなぜか簡単に読み書きする方法が用意されてない。日本語圏では頻繁に操作する箇所なので、自分でメソッドを作った。

  • 縦組み/横組み
  • テキストサイズ単位や組版単位などの違い
  • 段数、段間
  • 字間、行間
  • フレーム内マージン
  • フレームの線の太さ

などの設定をすべて考慮して、テキストフレームの geometricBounds から文字数と行数を逆算する仕組み。

TextFrame.prototype の拡張になっているので、外部ファイル扱い (.jsxinc) にしておいて #import で適宜読み込むのがおすすめ。

使い方

Getter と setter を兼ねた gridDimensions() というメソッドになっている。そのまま呼び出せば get、引数を渡して呼び出せば set として動作する。

続きを読む

scriptPreferencesをバッチ変更→復元

スクリプト本体の実行前にユーザ設定値を変更しておき、本体実行後に元に戻す、という処理が頻出する。

特によくあるのが app.scriptPreferences の設定。 enableRedraw はほとんどの場合で disable したいだろうし、 measurementUnit は意図しない設定になっていると絶対値の組み込まれたアルゴリズムが不具合を起こす。

この辺の〈保持→変更→復元〉という処理を main() などに直接入れちゃうと煩雑なので、 scriptSettings.alter()scriptSettings.revert() で本体ルーチンを挟むだけでいいようにメソッド化してみた。

続きを読む