悪い予感は当たった。kakomiCS2.jsxとInDesign CS4

スプレッドの回転を使ってみた」「InDesign CS4も前のバージョンのスクリプトが動くように設計されている」の続き。

昨日の帰りの車の中でやな予感がしたんだよな。それkakomiCS2.jsx。皆さんに好評を博している(?)このスクリプト、実はスプレッドの回転で動かないんじゃないか、ということ。

それはスクリプトの最後にある以下の部分。

//フォントのベースラインを取得する関数
function fontbaseline ( myFont, doc ) {
    txf = doc.textFrames.add();
    txf.strokeWeight = 0;
    txf.geometricBounds = [0, 0, 100, 100];
(中略)
    with (txf.parentStory) {
(中略)
        contents = "あ";
        appliedFont = myFont;
        pointSize = 100;
    }
    blp = txf.lines[0].baseline / 100;
    txf.remove();
    return blp;
}

これはなにをしているかというと、下線、打ち消し線のオフセット値を決めるために選択されている文字の、フォントのベースラインを取得する部分。100pt四方のテキストフレームを作成し、100ptの文字を入力してそbaselineプロパティを取得している。取得が完了したらテキストフレームを削除しているので、結果には影響はない。

が、しかし、スプレッドが回転していることでベースラインの値が正しく取得できそうにないことは明白だ。ということで次のように線1mm、行方向のオフセッ2mmの設定でテスト。

その結果がこれだ(分かりやすいように下線は赤、打ち消し線は緑に着色した)。

真ん中の上から順に以下のようになっている。

Version 3.0 Scripts」フォルダに入れた場合(エラーです)
「Version 4.0 Scripts」フォルダに入れた場合
「Version 5.0 Scripts」フォルダに入れた場合
通常の場所に入れた場合
「Version 5.0 Scripts」フォルダに入れ180度回転した状態で実行

左のものは「Version 5.0 Scripts」フォルダに入れて時計回り90度回転した状態で実行

右のものは「Version 5.0 Scripts」フォルダに入れて反時計回り90度回転した状態で実行

ということで、囲み罫の形になっているのは「Version 4.0 Scripts」もしくは「Version 5.0 Scripts」フォルダに入れて回転しない状態で実行したものに限るのである。

回避方法はある。テキストフレームを作る際に新たなドキュメントを作成し、その上でベースラインを取得、ドキュメントを破棄してしまうのである。

これで一件落着とおもいきや、スクリプトの置き場所を通常の場所にした場合では前のフタの位置がずれてしまうことを解決しなければ本当CS4対応にならない。これにはもう少し時間が掛かる(かつ、体験版の期限が切れてしまう前に他のことも試したい)ので、少なくとも年内は修正できません。みなさんごめんなさい。