PSDで使用しているフォントをテキストに出力
詳細は後ほど
var PassOffset = "\\.\\"; // PSDと同じフォルダに出力。一つ上の場合は\\..\\ var Data = new Array(); var FontTable = CreateFontTables(); var rootFolderObj = Folder.selectDialog("フォント情報を抜き出すフォルダを選択してください"); if ( rootFolderObj != null ) { var fList = GetFilesAll(rootFolderObj, [".psd"]); // 拡張子は小文字で for(var i=0; i<fList.length; i++) { var file = fList[i]; var d = null; try { var d = app.open(file); } catch( ex) { } if ( d != null ) { Collect(); d.close( SaveOptions.DONOTSAVECHANGES ); } } } function Collect() { Data.length = 0; // レイヤー検索をして、使用しているフォントを取得する。 for ( var i = 0; i < activeDocument.layers.length; ++i ) { CollectUseFont( activeDocument.layers[ i ] ); } Write(); } function CollectUseFont( l ) { if ( l.kind == LayerKind.TEXT ) { try { var item = l.textItem; var family = FontTable[ item.font ]; if ( !ContainsArray( Data, family ) ) { Data.push( family ); } } catch(ex){} } else if ( l.typename == "LayerSet" ) { for ( var i = 0; i < l.layers.length; ++i ) { CollectUseFont( l.layers[i] ); } } } function Write() { if ( Data.length == 0 ){ return; } var name = activeDocument.name.substr( 0, activeDocument.name.length-4 ); var path = activeDocument.path + PassOffset; fObj = new File( path + name + ".txt" ); if ( fObj.exists ){ return ; } var flag = fObj.open("w"); if ( flag ) { for each ( var d in Data ) { fObj.writeln( d ); } fObj.close(); } } function CreateFontTables() { var table = new Object(); var f = app.fonts; for ( var i = 0; i < f.length; ++i ) { table[ f[i].postScriptName ] = f[i].family; } return table; } function ContainsArray( ary, value ) { for each ( var d in ary ) { if ( d == value ){ return true; } } return false; } function GetFilesAll( obj, ext ) { var l = new Array(); GetFiles(l, obj, ext); return l; } function GetFiles( l, obj, ext ) { var fileList = obj.getFiles(); for (var i=0; i<fileList.length; i++) { if (fileList[i].getFiles) { GetFiles(l, fileList[i], ext ); } else { var f = fileList[i].name.toLowerCase(); for(var j=0; j<ext.length; j++) { if (f.indexOf(ext[j]) > -1) { l.push(fileList[i]); } } } } }