/** * @fileoverview フォルダの画像のフォント一覧レポートを生成する * @author Kenshi Muto <kmuto@debian.org> */ /* Copyright: 2008-2009 Kenshi Muto ---------------------------------------------------------------------- ソフトウェア使用許諾同意書 本ソフトウェアの利用・変更・再配布にあたっては、下記の使用許諾同意書に 同意する必要があります。 1. 本使用許諾同意書における「ソフトウェア」とは、機械可読の資料 (ライブ ラリ、スクリプト、ソースファイル、データファイル)、実行形式、および 文書を意味します。 2. 本ソフトウェアの使用許諾同意書に同意する限りにおいて、使用者は 本ソフトウェアを自由に利用、変更することができます。 3. 本ソフトウェアに変更を加えない限りにおいて、使用者は本ソフトウェアを 自由にコピー、再配布することができます。 4. 本ソフトウェアは無保証です。作者およびそれに関連する組織、配布者は、 本ソフトウェアの使用に起因する一切の直接損害、間接損害、偶発的損害、 特別損害、懲戒的損害、派生的損害について何らの責任・保証も負いません。 5. 本ソフトウェアを変更した上で再配布するときには、下記の事項すべてに 従わなければなりません。 - 使用許諾同意書の内容に変更を加えてはなりません。技術上の理由で 文字エンコーディングの変換を行うことは許可しますが、その使用者が 特殊な技術的措置なしに可読な形でなければなりません。 - 技術上の理由でバイナリ化・難読化を行う場合も、変更箇所を含めた ソフトウェアを、その使用者が可読可能な形式の形で同一のメディアで 提供しなければなりません。本使用許諾同意書の2条および3条により、 使用者が可読形式の該当ソフトウェアを変更、コピー、再配布することを 妨げてはなりません。 - ソフトウェア構成物の所定の作者名の欄に、変更者のクレジット (個人名、企業名、所属、連絡先など)を「追加」しなければなりません。 6. 本ソフトウェアを変更した上で再配布するときには、変更理由および その内容を明記することが推奨されます。 7. 使用者がソフトウェアに適用可能な特許に対して特許侵害にかかわる何らか の行動を開始した時点で、この使用許諾同意書は自動的に終了し、以降 使用者はこの使用許諾書によって与えられた一切の権利を放棄するものと します。 著作権所有者 Copyright (C) 2009 Kenshi Muto. All rights reserved. 使用許諾同意書バージョン1.0 著作権所有者による書面での事前の許可がない限り、この使用許諾同意書 に変更を加えてはなりません。 ---------------------------------------------------------------------- */ /** * 指定ファイルの使用フォント一覧配列を返す * @param {File} infile 開くファイルオブジェクト * @param {File} tmpfile 一時保管ファイルオブジェクト * @type String[] * @return フォント一覧配列 */ function saveAndRead(infile, tmpfile) { document = app.open(infile); document.saveAs(File(tmpfile), new IllustratorSaveOptions()); document.close(SaveOptions.DONOTSAVECHANGES); var f = File(tmpfile); f.encoding = "UTF-8"; f.open("r"); var font = []; var fontmode = false; var fontmode = "", fontfamily = "", fontface = ""; while (l = f.readln()) { if (l.search(/= 0) { fontmode = true; continue; } if (l.search(/<\/xapTPg:Fonts/) >= 0) { break; } if (fontmode) { if (l.search(//) >= 0) { fontfamily = l.match(/(.*)<\/stFnt:fontFamily>/)[1]; } if (l.search(//) >= 0) { fonttype = l.match(/(.*)<\/stFnt:fontType>/)[1].replace("Open Type", "OpenType"); } if (l.search(//) >= 0) { fontface = l.match(/(.*)<\/stFnt:fontFace>/)[1]; } if (l.search(/<\/rdf:li>/) >= 0) { font.push(infile.name + "\t" + fonttype + "\t" + fontfamily + "\t" + fontface); fontfamly = ""; fonttype = ""; fontface = ""; } } } var font3 = []; var font2 = font.sort(); for (var i = 0; i < font2.length; i++) { if (font3.length == 0 || font3[font3.length - 1] != font2[i]) { font3.push(font2[i]); } } return font3; } var tmpfile = "/tmp/__fontList_output.ai"; var logfile = null; var folder = Folder.selectDialog("探索するフォルダを選択"); var fonts = []; // ファイルのオープンとフォントの取得 if (folder != null) { logfile = File.saveDialog("結果を保存するテキストファイル", "*.txt"); if (logfile == null) exit(0); var list = folder.getFiles(); for (var i = 0; i < list.length; i++) { if (list[i] instanceof File && list[i].name.match(/\.(ai|eps|psd)$/i)) { fonts = fonts.concat(saveAndRead(list[i], tmpfile)); } } } else { exit(0) }; // ログ記録 logfile.encoding = "SJIS"; logfile.open("w"); var farray = []; // ファイル単位 var f = null; var filecount = 0; logfile.writeln("[ファイル単位のリスト]\n--------------------"); for (var i = 0; i < fonts.length; i++) { var a = fonts[i].split("\t"); if (f == null || a[0] != f) { logfile.writeln(fonts[i]); f = a[0]; filecount++; if (farray[a[1] + "\t" + a[2] + "\t" + a[3]] == null) farray[a[1] + "\t" + a[2] + "\t" + a[3]] = ""; farray[a[1] + "\t" + a[2] + "\t" + a[3]] += a[0] + ", "; } else { if (farray[a[1] + "\t" + a[2] + "\t" + a[3]] == null) farray[a[1] + "\t" + a[2] + "\t" + a[3]] = ""; logfile.writeln("\t" + a[1] + "\t" + a[2] + "\t" + a[3]); farray[a[1] + "\t" + a[2] + "\t" + a[3]] += a[0] + ", "; } } // フォント単位 logfile.writeln("\n[フォント単位のリスト]\n--------------------"); var fname = []; for (index in farray) { fname.push(index); } var fname2 = fname.sort(); for (var i = 0; i < fname2.length; i++) { logfile.writeln(fname2[i] + "\t" + farray[fname2[i]].replace(/, $/, "")); } // 一時ファイルの消去 file = File(tmpfile); file.remove(); alert(filecount + "個のファイル、" + fname2.length + "個のフォント情報を" + logfile.name + "に書き出しました。");