Skip to main content
Participant
January 24, 2025
Answered

Photoshop APIで取得したフォントサイズについて

  • January 24, 2025
  • 4 replies
  • 415 views

下記の構成となっているテキストレイヤーAがあります。

 
グループレイヤー
 Lグループレイヤー
  LテキストレイヤーA
 
テキストレイヤーAのフォントサイズが25pxとGUIで表示されているにも関わらず、APIで取得するとtextItem.characterStyle.size=24.4909493などの数値となっており、正確な数値が入っていません。
どのように正確な数値を取得することができますか?
 
もしご存知でしたら教えていただけないでしょうか?
Correct answer Ten A

Photoshopのテキストサイズに関しては様々なパラメータの合成結果となります。例えばUIで100pxと入力してテキストを生成したあとに変形パネルで値を変更するとUI上は変更した数値となりますがsizeプロパティは100のままです。これは内部的にtransformパラメータが保持されていてオブジェクトモデル上のプロパティには影響を与えないためです。このUI上のデータを取得するにはこれらのtransformパラメータを得る必要があり、actionReferenceとactionDescripterの組み合わせで参照する必要があります。

4 replies

Ten A
Community Expert
Ten ACommunity ExpertCorrect answer
Community Expert
January 29, 2025

Photoshopのテキストサイズに関しては様々なパラメータの合成結果となります。例えばUIで100pxと入力してテキストを生成したあとに変形パネルで値を変更するとUI上は変更した数値となりますがsizeプロパティは100のままです。これは内部的にtransformパラメータが保持されていてオブジェクトモデル上のプロパティには影響を与えないためです。このUI上のデータを取得するにはこれらのtransformパラメータを得る必要があり、actionReferenceとactionDescripterの組み合わせで参照する必要があります。

Ten A
Community Expert
Community Expert
January 27, 2025

ExtendScriptではsizeプロパティはUnitValueがつかわれていましたが、UXPではピクセル単位ですが基本的に72ppi時のフォントサイズとして設計されているようなので利用中の単位系によってはUI上で明示的に単位付の指定を行っても内部的に端数が保持されている場合があります。
72ppiで端数可ということで、実態としては72ppi時のpointなんで、必要なら丸め込みも考えるとよいのではないかと思います。

Participant
January 28, 2025

ご回答ありがとうございます。

いくつかのPSDファイルで実施したところ、UIと同じ値を取得できる時もあれば、できない場合があります。

なので内部的に端数を持つ時、持たない時というのがどう異なるのかを把握しておかなければ丸め込みをプログラムに組み込めない状況になってしまいました。。。

 

Ten A
Community Expert
Community Expert
January 27, 2025

UXPですね。

ver.26のmacOSなんですけど

 

app.activeDocument.activeLayers[0].textItem.characterStyle.size;

 

でUIと同じ値が取れています。どのような構成のコードで処理しようとしているのか見せていただけませんか?

Participant
January 27, 2025

私はver26.2でMacを利用しています。

コード自体はTen Aさんと同じです。

こちらの問題と同じなのだと思うのですが、リンクほどずれておらず、確かに丸め込まれているのかもしれないです。リンクも古いですし、何か解決策があればと思ったのです。

Ten A
Community Expert
Community Expert
January 24, 2025

Photoshop APIという事でWebサービスの方ですか?

デスクトップ版のJavaScriptであれば、DOM上の扱いはpointなので内部的にはこちらの数値が正しいです。UIでのpx表示が丸め込まれている状態です。

Participant
January 27, 2025

Ten Aさん

 

ご返事ありがとうございます。

UXPでの開発をしており、デスクトップ版に関しての質問になります。

 

ドキュメントには下記の記載があったので、単位はpointではなく、pixelだと思うのですが、変換式などはございますでしょうか。UIでの表示に合わせたいと考えています。


The font size in pixels for a 72ppi document.