InDesign禁断のスクリプト技! テキストフレームから文字が飛び出す

この記事は【大DTP勉強部屋】「Saturday online SP 〜眠くなるまで〜」で紹介した内容の1つです。

私がかなり以前(CS2の頃)に作成して、今でも使えるものの1つに「文字に囲み罫を設定する」スクリプトがあります。

実はこのスクリプト、通常の操作ではできず、スクリプトからでしかできないことをやっています。それは図の②のところで、このアキは「文字前のアキ」「文字後のアキ」で設定しています。

文字前のアキ」「文字後のアキ」は通常の操作では「自動」「アキなし」「八分」「四分」「三分」「二分」「二分四分」「全角」から選択することしかできません。

しかし、内部では数値として持っており、「アキなし」の場合0、「全角」1、「二分」0.5、「自動」は-1などとなります。つまりユーザーインターフェイスの方では特定の値しか入れられないように制限を掛けているのに対して、スクリプトの方は制限をかけ忘れているので好きな値を入力できるわけです。「文字に囲み罫を設定する」スクリプトではそれを利用して、通常の操作ではできないこと(最初の図のように「3」とか入力している)をしているので、あとから(履歴になければ)手動で変更することができない仕様になっています。

したがって、他人に渡InDesignデータでは使ってはいけないスクリプトということです。(自分であってもこのスクリプトを使ったことを忘れてしまったら変更できません)ですから使用するときは注意しましょう。


もともと、大阪ではここまでの話をするつもりだったのですが、検証しているとさらにまずいことに気づきました。

その前に付属情報を。

ちなみに、「文字前のアキ」「文字後のアキ」は、機能名を見て分かる通り日本語の組版機能です。InDesign英語版には存在しません。中国語版・韓国語版はどうなのか知らないので、日本語版独自とは断定できないのですが、日本語版のために開発された機能であることには違いありません。ただ、スクリプトについては各言語版共通なので、英語版でも「leadingAki(文字前のアキ)」「trailingAki(文字後のアキ)」は設定できるはずです。

また、文字の囲み罫については、UserVoiceに要望が挙げられており(ほったらかし状態ですが)います。私のスクリプトと同程度のものが実装されたら、私のところでの公開は終わりです。


さて、まずいことというのは「文字前のアキ」「文字後のアキ」にマイナスの値も入れられるということです。それをするとこうなります。

これはよろしくないですね。今まで誰からも指摘がなかったので、皆さんまっとうな使い方をしていらっしゃったんですね。スクリプト自体は修正せず、注意書きを追加しておきますので、引き続きまっとうな使い方をしてください。変な値を入れてドキュメントが壊れても責任は持てません。

と言っておきながら、これを悪用した使い方を思いついてしまいました。InDesignの想定外の挙動なので、本当に真似しちゃいけない、でもやってみたい。

行の先頭の文字を選択した状態で次のスクリプトを実行します。

app.selection[0].leadingAki = -2;

これは選択した文字の「文字前のアキ」をマイナス2に設定するものです。

ああー、テキストがフレームから飛び出した!

これはまずい!

明らかInDesignの想定外の挙動だ……

でもエラーになったりクラッシュしてない。PDFも見た目通りに作成されてる……

困った。これは困った。

これこそ本当に自己責任でお願いします。

ちなみに-1を入れても1文字飛び出ることはありません。-1は「自動」だから。-0.99とかでないと)