Translate

2016年7月26日火曜日

【indesign】【javascript】不足フォントのバージョンとpostscriptnameを取得

indesignでフォント情報がないものの一覧を作成し、postscriptname,versionを取得する
document.fontでプロパティを得ようとすると、置き換えられた後のフォント情報が手に入ってしまうので、
postscriptnameとversionはxmpから入手する。
(「フォント検索」で表示される、置き換えられる前のフォント情報がほしかったが、fontのプロパティは置き換えられた後のもので、置き換え前のものにはアクセスできなかった。
テキストファイルで強引に開くとメタデータとして残っているようだったので、色々と検索した結果、xmpに行きついた)

http://chuwa.iobb.net/tech/archive/2014/06/xmp-1.html
こちらに詳しい。 ありがたや。
改変したものが以下。

fontproperty ={};//ここに集約される

var f = app.activeDocument.fullName.fsName;
read(f);
function read (fls){
     var property = "Fonts";
     var ns ="http://ns.adobe.com/xap/1.0/t/pg/";
     var xmpLib = new ExternalObject('lib:AdobeXMPScript');
     var xmpFile = new XMPFile(fls, XMPConst.UNKNOWN, XMPConst.OPEN_FOR_READ);
     var xmpPackets = xmpFile.getXMP();
     var xmp = new XMPMeta(xmpPackets.serialize());
     for (var i=1;i<=xmp.countArrayItems(ns,property);i++){//xmpは1から数えるんですって
         var postscriptname = xmp.getProperty(ns, property + "[" + i + "]" + "/stFnt:fontName").toString();
         var version = xmp.getProperty(ns, property + "[" + i + "]" + "/stFnt:versionString").toString();
         version = version.split(postscriptname)[1];
         fontproperty[postscriptname] = version ;
      }
}
これで、ドキュメント内の全てのフォントの、置き換え前のfontバージョンがpostscriptnameをkeyにして手に入る。・・・①
後は、document.fontから使用しているpostscriptnameを取得し、・・・②
①のpostscriptnameと②のpostscriptnameを照合すれば、
documentのfont全ての置き換え前のversionが手に入るというわけ。

0 件のコメント:

コメントを投稿