よろよろ帳

InDesign JavaScript 勉強中

環境にないフォントの置換

モリサワフォントのProとかPr5とか変更したくて検索と置換パネルから動かそうとしましたが、インストールしてないフォントはappliedFontに表示されない(昔のバージョンはできたのかも…CC2019でテストしてます)。

テキスト選択して

var sel=app.selection[0]; alert (sel.appliedFont.name)

とすると環境にないフォント名も取得できたのでcharacterから辿ってみました。

app.doScript (main, ScriptLanguage.JAVASCRIPT, [], UndoModes.ENTIRE_SCRIPT);
function main (){
var Doc=app.activeDocument;
var F=Doc.stories.everyItem().characters.everyItem().getElements();
while(f=F.shift()){
    if(/Pr.+(?=\t)|Std(?=\t)/.test(f.appliedFont.name))//タブ追加
    try{f.appliedFont=f.appliedFont.name.replace(/Pr.+(?=\t)/,"Pr6N").replace(/Std(?=\t)/,"StdN")
        }catch(e){}
    }
}

↓参考
Find/change missing font with scripting | IndiSnip [InDesign® Snippets]
InDesign(Javascrip)高速化について_everyItem()編