This should get a list of the fonts used in Type Layers in the selected Group.
// get list of fonts used in the active group; // based on code by paul riggott; // 2014, use it at your own risk; #target "photoshop-70.032" if (app.documents.length > 0) { var theFonts = main (); alert ("the fonts used in the folder " + activeDocument.activeLayer.name + " are"+"\n"+theFonts.join("\n")) }; //////////////////////////////////// function main () { var theFonts = new Array; var someLayerStuff = getActiveLayerIIndex(); if (someLayerStuff[1] != "layerSectionStart") {return []}; var aNumber = 0; // get number of layers; var ref = new ActionReference(); ref.putEnumerated( charIDToTypeID("Dcmn"), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") ); var applicationDesc = executeActionGet(ref); var theNumber = applicationDesc.getInteger(stringIDToTypeID("numberOfLayers")); // determine the start index; if (activeDocument.layers[activeDocument.layers.length - 1].isBackgroundLayer == true) {var theStart = someLayerStuff[0] - 2} else {var theStart = someLayerStuff[0] - 1}; ////// for (var p = theStart; p >= 0; p--) { try { var ref = new ActionReference(); ref.putIndex( charIDToTypeID( "Lyr " ), p); var layerDesc = executeActionGet(ref); var layerSet = typeIDToStringID(layerDesc.getEnumerationValue(stringIDToTypeID("layerSection"))); var isBackground = layerDesc.getBoolean(stringIDToTypeID("background")); var theName = layerDesc.getString(stringIDToTypeID('name')); // check if group closes; if (layerSet == "layerSectionStart") {aNumber++}; if (layerSet == "layerSectionEnd" && aNumber == 0) {return theFonts}; if (layerSet == "layerSectionEnd" && aNumber != 0) {aNumber--}; // if not layer group collect values; if (layerSet != "layerSectionEnd" && layerSet != "layerSectionStart" && isBackground != true) { var hasText = layerDesc.hasKey(stringIDToTypeID("textKey")); if (hasText == true) { var textDesc = layerDesc.getObjectValue(stringIDToTypeID('textKey')); var paragraphStyle = textDesc.getList(stringIDToTypeID('paragraphStyleRange')); var kernRange = textDesc.getList(stringIDToTypeID('kerningRange')); var rangeList = textDesc.getList(stringIDToTypeID('textStyleRange')); for (var o = 0; o < rangeList.count; o++) { var styleDesc = rangeList.getObjectValue(o).getObjectValue(stringIDToTypeID('textStyle')); var aFont = styleDesc.getString(stringIDToTypeID('fontPostScriptName')); // add to array; var theCheck = true; for (var n = 0; n < theFonts.length; n++) { if (theFonts[n] == aFont) {theCheck = false} }; if (theCheck == true) {theFonts.push(aFont)} } } } } catch (e) {}; } return theFonts }; ////// get some stuff from the active layer ////// function getActiveLayerIIndex () { var ref = new ActionReference(); ref.putEnumerated( charIDToTypeID("Lyr "), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") ); var layerDesc = executeActionGet(ref); var theIndex = layerDesc.getInteger(stringIDToTypeID("itemIndex")); var theSection = typeIDToStringID(layerDesc.getEnumerationValue(stringIDToTypeID("layerSection"))); var hasText = layerDesc.hasKey(stringIDToTypeID("textKey")); return [theIndex, theSection, hasText] };