OM Wiki

Technical Artist Wiki

ユーザ用ツール

サイト用ツール


サイドバー

adobe:photoshop:get_text_layer_size

テキストレイヤーのフォントサイズを取得するスクリプト

Adobe Photoshopでテキストレイヤーのフォントサイズを取得します。

Adobe Photoshop Script API

var fontSize = activeDocument.activeLayer.textItem.size;
alert(fontSize);

このAPIには不具合があり、テキストレイヤーの変形を行うと正しいフォントサイズを取得できません。変形したテキストレイヤーのフォントサイズを取得したい場合は、次のスクリプトを試してください。

トランスフォーム拡縮対応したスクリプト

var layer = app.activeDocument.activeLayer;
var fontSize = getFontSize(layer);
 
function getFontSize(layer){
    var ref = new ActionReference();  
    ref.putEnumerated( charIDToTypeID("Lyr "), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") );   
    var desc = executeActionGet(ref).getObjectValue(stringIDToTypeID('textKey'));  
    var fontSize=  desc.getList(stringIDToTypeID('textStyleRange')).getObjectValue(0).getObjectValue(charIDToTypeID( "TxtS" )).getDouble(stringIDToTypeID('size'));  
    if (desc.hasKey(charIDToTypeID("Trnf"))) {  
        var mFactor = desc.getObjectValue(charIDToTypeID("Trnf")).getUnitDoubleValue (stringIDToTypeID("yy") );
        fontSize = (textSize* mFactor).toFixed(2);  
    }  
    return fontSize;
};
 
alert(fontSize);

トランスフォームに対応したスクリプト

//ref: https://forums.adobe.com/thread/2532118
var size = activeDocument.activeLayer.textItem.size;    
 
var r = new ActionReference();      
r.putProperty(stringIDToTypeID("property"), stringIDToTypeID("textKey"));          
r.putEnumerated(stringIDToTypeID("layer"), stringIDToTypeID("ordinal"), stringIDToTypeID("targetEnum"));      
 
var yy = 1;  
var yx = 0;  
 
try {  
    var transform = executeActionGet(r).getObjectValue(stringIDToTypeID("textKey")).getObjectValue(stringIDToTypeID("transform"));  
    yy = transform.getDouble(stringIDToTypeID("yy"));      
    yx = transform.getDouble(stringIDToTypeID("yx"));      
    }  
catch(e) { }   
 
var coeff = Math.sqrt(yy*yy + yx*yx);  
 
alert(size*coeff);
adobe/photoshop/get_text_layer_size.txt · 最終更新: 2019/08/04 12:11 by ochiaimitsuo