OM Wiki

Technical Artist Wiki

ユーザ用ツール

サイト用ツール


adobe:photoshop:get_text_layer_size

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

adobe:photoshop:get_text_layer_size [2018/10/28 21:06]
42.125.139.24 作成
adobe:photoshop:get_text_layer_size [2019/08/04 12:11]
ochiaimitsuo
行 1: 行 1:
 ====== テキストレイヤーのフォントサイズを取得するスクリプト ====== ====== テキストレイヤーのフォントサイズを取得するスクリプト ======
  
 +Adobe Photoshopでテキストレイヤーのフォントサイズを取得します。
 +
 +## Adobe Photoshop Script API
 +<code JavaScript>
 +var fontSize = activeDocument.activeLayer.textItem.size;
 +alert(fontSize);
 +</code>
 +
 +このAPIには不具合があり、テキストレイヤーの変形を行うと正しいフォントサイズを取得できません。変形したテキストレイヤーのフォントサイズを取得したい場合は、次のスクリプトを試してください。
 +
 +## トランスフォーム拡縮対応したスクリプト
 <code JavaScript> <code JavaScript>
 var layer = app.activeDocument.activeLayer; var layer = app.activeDocument.activeLayer;
-var textSize = getFontSize(layer);+var fontSize = getFontSize(layer);
  
 function getFontSize(layer){ function getFontSize(layer){
行 9: 行 20:
     ref.putEnumerated( charIDToTypeID("Lyr "), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") );        ref.putEnumerated( charIDToTypeID("Lyr "), charIDToTypeID("Ordn"), charIDToTypeID("Trgt") );   
     var desc = executeActionGet(ref).getObjectValue(stringIDToTypeID('textKey'));       var desc = executeActionGet(ref).getObjectValue(stringIDToTypeID('textKey'));  
-    var textSize =  desc.getList(stringIDToTypeID('textStyleRange')).getObjectValue(0).getObjectValue(charIDToTypeID( "TxtS" )).getDouble(stringIDToTypeID('size'));  +    var fontSize=  desc.getList(stringIDToTypeID('textStyleRange')).getObjectValue(0).getObjectValue(charIDToTypeID( "TxtS" )).getDouble(stringIDToTypeID('size'));  
     if (desc.hasKey(charIDToTypeID("Trnf"))) {       if (desc.hasKey(charIDToTypeID("Trnf"))) {  
         var mFactor = desc.getObjectValue(charIDToTypeID("Trnf")).getUnitDoubleValue (stringIDToTypeID("yy") );         var mFactor = desc.getObjectValue(charIDToTypeID("Trnf")).getUnitDoubleValue (stringIDToTypeID("yy") );
-        textSize = (textSize* mFactor).toFixed(2);  +        fontSize = (textSize* mFactor).toFixed(2);  
     }       }  
-    return textSize;+    return fontSize;
 }; };
  
-alert(textSize);+alert(fontSize); 
 +</code> 
 + 
 + 
 +## トランスフォームに対応したスクリプト 
 +<code JavaScript> 
 +//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);
 </code> </code>
adobe/photoshop/get_text_layer_size.txt · 最終更新: 2019/08/04 12:11 by ochiaimitsuo