Skip to main content
Inspiring
May 13, 2024
Question

How to use script to get the font size in psd file

  • May 13, 2024
  • 1 reply
  • 197 views

How to use script to get the font size in psd file. 

 

This topic has been closed for replies.

1 reply

c.pfaffenbichler
Community Expert
Community Expert
May 13, 2024

 

// thanks to mike hale and paul riggott;
// 2015, use it at your own risk;
#target photoshop
if (app.documents.length > 0) {
var myDocument = app.activeDocument;
var theFonts = selectedLayersFonts ();
alert ("the result:"+"\n"+theFonts.join("\n"))
};
////////////////////////////////////
function selectedLayersFonts () {
var theFonts = new Array;
////////////////////////////////////
var selectedLayers = new Array; 
var ref = new ActionReference(); 
ref.putEnumerated( charIDToTypeID("Dcmn"), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") ); 
var desc = executeActionGet(ref); 
if( desc.hasKey( stringIDToTypeID( 'targetLayers' ) ) ){ 
 desc = desc.getList( stringIDToTypeID( 'targetLayers' )); 
  var c = desc.count 
  var selectedLayers = new Array(); 
  for(var i=0;i<c;i++){ 
	try{ 
	   activeDocument.backgroundLayer; 
	   selectedLayers.push(  desc.getReference( i ).getIndex() ); 
	}catch(e){ 
	   selectedLayers.push(  desc.getReference( i ).getIndex()+1 ); 
	} 
  } 
}else{ 
 var ref = new ActionReference(); 
 ref.putProperty( charIDToTypeID("Prpr") , charIDToTypeID( "ItmI" )); 
 ref.putEnumerated( charIDToTypeID("Lyr "), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") ); 
 try{
	activeDocument.backgroundLayer;
	selectedLayers.push( executeActionGet(ref).getInteger(charIDToTypeID( "ItmI" ))-1);
 }catch(e){
	selectedLayers.push( executeActionGet(ref).getInteger(charIDToTypeID( "ItmI" )));
 }
};
////////////////////////////////////
var theNumber = selectedLayers.length;
////////////////////////////////////
for (var m = theNumber; m >= 0; m--) {
try {
var ref = new ActionReference();
ref.putIndex( charIDToTypeID( "Lyr " ), selectedLayers[m]);
var layerDesc = executeActionGet(ref);
var layerSet = typeIDToStringID(layerDesc.getEnumerationValue(stringIDToTypeID("layerSection")));
var isBackground = layerDesc.getBoolean(stringIDToTypeID("background"));
var theName = layerDesc.getString(stringIDToTypeID('name'));
// 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'));
//checkDesc2 (textDesc)
var paragraphRangeList = 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'));
//checkDesc2 (styleDesc)
var theSize = styleDesc.getUnitDoubleValue(stringIDToTypeID('size'));
// check for default font;
if (styleDesc.hasKey(stringIDToTypeID('fontPostScriptName')) == true) {var aFont = styleDesc.getString(stringIDToTypeID('fontPostScriptName'))}
else {
	var theDefault = styleDesc.getObjectValue(stringIDToTypeID('baseParentStyle'));
	var aFont = theDefault.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)}*/
theFonts.push([aFont, theSize])
}
}
}
} catch (e) {};
}
return theFonts
};