JavaScript
1pg = app.activeDocument; 2for (j=0; j<pg.allPageItems.length; j++) 3{ 4 dType = pg.allPageItems[j].constructor.name; 5 dFont = pg.allPageItems[j].lines[0].appliedFont.fontFamily; 6 7 if (dType == "TextFrame" && dFont == "A-OTF 新ゴ Pro") 8 { 9 alert(pg.allPageItems[j].lines[0].associatedXMLElements[0].markupTag.name); 10 } 11}
InDesignのデータ上に、テキストフレームが複数あります。その中の1つにだけ、"A-OTF 新ゴ Pro"のフォントが設定されていて、『税込』のタグが設定されています。
その状態で上記のスクリプトを実行すると、本来なら"A-OTF 新ゴ Pro"の適用されたテキストフレームを見つけたらそのフレームのタグを読み込んでアラートで表示する、というプログラムになるはずでした。
が、これを実行するとalertは表示されず、下図のエラーが表示されます(つまり、if文の中には入れています)。
ここで不思議なことに、そのフレームのフォントと下記のスクリプト部分、両方とも"MS Pゴシック"に変えると、このエラーがでずにalertで正しく『税込』が表示されることに気が付きました。
しかも、"小塚ゴシック Pro"でも正常に表示されましたが、ここを"小塚明朝 Pro"に変えると、今度はalertで『税込』が表示されるのに、そこでOKを押すとまた上図のエラーが表示されることがわかりました。
大した違いのないフォントなのに、なぜこのようなことが起こるのか・・・。JavaScriptは素人同然のレベルなので、一体何が起こっているのかが全く見当がつきません。何をどうしたら、どのフォントでも正しくタグを読み込めるようになるでしょうか。ご助力お願いいたします。
【---追記---】
小塚明朝にしたときだけエラーが出る件に関して、alertの後ろにbreakを付ければ出なくなりました。ということは、ループしていることで何かエラーが出ているのだと思います。それがなぜ小塚明朝では起こって小塚ゴシックだと起こらないのかといった疑問は残りますが。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/29 14:26
2018/11/30 00:46