異なるファイル間でスウォッチ指定のテキスト検索・置換を行うと、スウォッチに連番が追加されるBugについて
問題の概要
2つのInDesignファイル(a.indd と b.indd)があります。それぞれに「red」という同じ名前のスウォッチが存在しますが、CMYKの値は異なります。
この状態で、ファイルをまたいで色を指定し、「検索・置換」を順番に実行すると、2ファイル目以降のスウォッチ名に連番(red 2、red 3…)が追加されてしまうという問題が発生します。
再現手順
a.inddを開き、「検索・置換」ウィンドウを開く。- 検索キーワードを入力(例:「test」)。
- 「置換フォーマット」で文字カラーを「red」スウォッチに設定し、置換を実行する。
- ここまでは正常に動作する。
a.inddを閉じる(InDesignアプリは終了しない)。b.inddを開き、同じ手順(1〜3)を繰り返す。- このとき、カラースウォッチを選択すると「red 2」のように連番が付いた名前が表示される。
- 置換を実行すると、スウォッチパネルに「red 2」「red 3」…といった新しいスウォッチが追加されてしまう。
> ※注意: 手順4でInDesignアプリ自体を一度終了してから再起動すると、この問題は発生しません。
検索スコープ:「ドキュメント」(「すべてのドキュメント」ではありません)
動作環境
- OS: macOS Sequoia 15.5〜(恐らく全バージョンはそうだ)
- InDesign: 2020〜2026(すべてのバージョンで再現を確認。Windowsは未検証)
IDMLファイルでの検証
IDMLファイル、およびIDMLから変換したInDesignファイルでも同じ問題が発生することを確認済みです。
スクリプトによる再現コード
この問題は手動操作だけでなく、スクリプトからも再現できます(これは同然だと思います)。スクリプトで再現:
var files = [
"a.indd",
"b.indd",
];
var curPath = new File($.fileName).path;
var len = files.length;
for (var i = 0; i < len; i++) {
var doc = app.open(new File(curPath + "/" + files[i]));
var redColor = doc.swatches.itemByName("red");
var tf = doc.textFrames.itemByName("tf2");//target textFrame: **edit this
changeKeywordColor(tf, "test", redColor);
doc.close(SaveOptions.YES);//close document
}
function changeKeywordColor(textFrameObj, keyWord, colorObj) {
app.findTextPreferences = NothingEnum.nothing;
app.changeTextPreferences = NothingEnum.nothing;
app.changeTextPreferences.fillColor = NothingEnum.nothing;
app.changeTextPreferences.fillColor = colorObj;//red color
app.findTextPreferences.findWhat = keyWord;
textFrameObj.changeText();// Search scope: only the target textFrame
}
まとめ
InDesignアプリを終了せずに複数のファイルを順番に処理する際、同名で異なるCMYK値を持つスウォッチが競合し、スウォッチ名に連番が付加されるというバグです。かなり前Adobeに報告したが、なにも進捗ない。(該当Issue&テストファイル:https://community.adobe.com/questions-671/new-swatch-with-the-incremental-number-is-added-after-find-change-text-between-different-files-896831)

