:note

言語ごとにフォントの一覧作成スクリプト

フォントをフェッチするスクリプト のテストのために書いたスクリプト(欧文フォントをパッケージさせるためのユニークなドキュメントを何個かつくる)をちょっとアレンジ。

フォントの言語はWritingScriptで設定出来ますが、こちらが詳しいです→ フォントの言語を調べる(InDesign編) - 名もないテクノ手

ドキュメント毎のフォント数とドキュメント数、言語、サンプルドキュメントは言語ごとにオブジェクトとして設定しておき、実行すると新規ドキュメントを作り、サンプルテキストにフォントを順番に適用していき規定数に達したら終了します。

全書体を処理したいなら多めに設定しておいたらフォント総数に達した時点で終了します。 あとはお好みで文字サイズ、行送りをいじるとか、段数をいじるとか…

lang = 1の場合

言語ごとにフォントの一覧作成スクリプト /images/2010/11/create_fontlist.png
/**
 * create font sample 
 */

//fonts par documents ドキュメントごとのフォント数
var font_par_doc = 30;
//amount of documents ドキュメント数
var doc_amount = 5;
//language 言語
var lang = 1;//0:Roman, 1:Japanese....
//sample text
var con = {//add writingscript and text as object
  0: "Lorem ipsum dolor sit amet, consectetur adipisicing elit.",
  1: "具ヌー寺の和尚がカボスを嫉む、琵と取れんと見上げるアキの空。"
  };

var sum_font = app.fonts.length;
var i = 0;
for (var j=0; j < doc_amount ; j++) {
  var doc = app.documents.add();
  var tf = doc.textFrames.add();
  var doc_info = getDocInfo(doc);
  tf.geometricBounds = [
    doc_info['maT'], 
    doc_info['maL'], 
    doc_info['H']-doc_info['maB'], 
    doc_info['W']-doc_info['maR']
    ];
  var st = tf.parentStory;
  with(st){
    pointSize = "12pt";
    leading = "18pt";
  }
  var t = 0;
  while( t < font_par_doc) {
    if (j * font_par_doc + i >= sum_font) {
      exit();
    };
    if (app.fonts[i].writingScript == lang) {
      st.insertionPoints[-1].contents = con[lang] + "\r";
        st.paragraphs[t].appliedFont = app.fonts[ j * font_par_doc + i ];
      i++;
      t++;
    };
    else{
      i++;
    }
  };
};

function getDocInfo (doc) {
  var inf = {};
  inf['H'] = doc.documentPreferences.pageHeight;
  inf['W'] = doc.documentPreferences.pageWidth;
  inf['maL'] = doc.marginPreferences.left;
  inf['maT'] = doc.marginPreferences.top;
  inf['maR'] = doc.marginPreferences.right;
  inf['maB'] = doc.marginPreferences.bottom;
  return inf;
}
 
comments powered by Disqus
back to top