InDesign の深刻なバグ。
CS4 まで正常に表示されていた文字が、CS5 以降で開くと別の文字に化けてしまうことがあります。
かならず化けるわけではありません。化けるのは、ある特定の条件が重なったときです。その条件のひとつが「異体字属性の伝染」です。
異体字属性の伝染
異体字属性には「等幅半角字形 hwid」「旧字体 trad」「欧文イタリック ital」など様々なものがあります。 (ここでいう異体字は記号も含みます)
CS2〜4 では、異体字属性が付いた文字の前後に、書式スタイルがない文字をペーストすると(1、ペーストした文字にも同じ異体字属性が付きます。これを私たちは「異体字属性の伝染」と呼んでいます。CS5 以降ではまったく伝染しなくなりました。
異体字属性が伝染すると、ペーストした瞬間に字形が変わります。意図しないところで勝手に字形が変わるので、CS2〜4 では問題視されました。(2
一方で、異体字属性が伝染しても、該当する異体字がなければ字形は変わりません。「ありえない異体字属性が付いてしまった不正な状態」ではあるものの、見た目が正常なので伝染していることがわからず、CS2〜4 ではさして問題にはなりませんでした(3。 ところが CS5 以降で、これが深刻なバグを発生させます。(4
CS5 以降で開くと文字化けする
異体字属性が伝染しているものの見た目は正常だった文字が、CS5 以降で開くと文字化けする(字形が変わる)ようになりました。
不正な異体字属性のすべてが文字化けするわけではありません。化けるのは、2つの条件が重なった文字です(5(細かい話は省略して、概要だけ書いておきます)
- CS2〜4 で不正な aalt または nalt が伝染した。
- その文字の aalt または nalt の異体字グループの個数が、その文字を含んで2つだけ。
このような文字を人の目と手で見つけ出すのは、ほとんど不可能です。
そこで「なると巻き」
人の目と手で無理なことは、ソフトウェアでやるのが筋ってものです(6。ということで「なると巻き」を作りました。不正な aalt または naltを(化けていない文字も含めて)すべて検出します。aalt/nalt 除去機能付き。Mac 用ですけど…
サンプル
不正な aalt/nalt で化ける「文字化けindd」のサンプルです(CS2 で作成)
↓ダウンロード
Mac用 mojibake_indd_mac.zip
Windows用 mojibake_indd_win.zip
これを CS5 以降で開くと 600 字ほどの文字化けが発生します。詳しくは同梱の「文字化けinddについて」をお読みください。
- プレーンテキストをペーストしたり、[フォマートなしでペースト]をすることです [↩]
- 参照:InDesign CS4で異体字のあとにテキストをペーストしたときの文字化け [↩]
- 「ありえない異体字属性が付いた文字はフォントを変更できなくなる」という問題はあります。 [↩]
- 参照:異体字属性あるいは痛い持続性
参照:【InDesign CS5】ホントに痛い持続性 [↩] - 上の画像は、この2つの条件で化ける文字ばかり集めたものです。 [↩]
- Adobe がプラグインを作って配布するのが本筋ですけどね! [↩]
これはwindowsでは使えないんでしょうか?
Mac のみです。ごめんなさい!
Windows 版を作れる方には方法をすべてお教えします。
・indd で取得した情報を戻り値として得る必要があります。VB ならできる?
・スクリプトだけではおそらく無理でしょう。
・スクリプトをメソッドのように扱える開発環境が必要でしょう。
[報告]Windows版ができました!