InDesign ではすべての属性がスクリプト可能なのかと思いきや、フレームグリッドの基本情報である文字数/行数だけはなぜか簡単に読み書きする方法が用意されてない。日本語圏では頻繁に操作する箇所なので、自分でメソッドを作った。
- 縦組み/横組み
- テキストサイズ単位や組版単位などの違い
- 段数、段間
- 字間、行間
- フレーム内マージン
- フレームの線の太さ
などの設定をすべて考慮して、テキストフレームの geometricBounds
から文字数と行数を逆算する仕組み。
TextFrame.prototype
の拡張になっているので、外部ファイル扱い (.jsxinc) にしておいて #import
で適宜読み込むのがおすすめ。
使い方
Getter と setter を兼ねた gridDimensions()
というメソッドになっている。そのまま呼び出せば get、引数を渡して呼び出せば set として動作する。
フレームの種類が「フレームグリッド」に設定されているテキストフレームにのみ有効。フレームグリッドでない場合はエラーを返す。
Get
1段のサイズが 15文字 × 20行 のテキストフレーム myTextFrame
があるとすると、
myTextFrame.gridDimensions();
で [15, 20]
という [文字数, 行数] 形式の array を返す。
Set
同じく [文字数, 行数] 形式の array を渡すことで、フレームグリッドのサイズを変更する。
myTextFrame.gridDimensions([16, 40]);
これで、段数・字間などはそのままに、各段のサイズが 16文字 × 40行 に変更される。どちらか片方だけ変更したい場合は、[0, 55]
のようにゼロを使えばそこだけ無変更。