日曜日, 6月 25, 2023

JavaScriptでAI遊び 03 
文字入力位置は文字のセンター位置

文字を指定位置に記述するだけです。

/* font_position.jsx */
var userInput = prompt("入力してください", "");
// ダイアログボックスを表示して入力を受け取る

if (userInput !== null) {
var doc = app.activeDocument;
// アクティブなドキュメントを取得

var Xposition = 100; // テキストのX座標
var Yposition = -100; // テキストのY座標
var fontSize = 36; // テキストのフォントサイズ

var textContent = userInput;
// ダイアログボックスから取得した入力値

var textFrame = doc.textFrames.add();
// テキストフレームを作成
textFrame.position = [Xposition, Yposition];
// テキストの位置を設定

var textRange = textFrame.textRange; // テキスト範囲を取得
textRange.contents = textContent; // テキストの内容を設定
textRange.characterAttributes.size = fontSize;
// テキストのフォントサイズを設定
textRange.characterAttributes.kerningMethod =
    AutoKernType.OPTICAL; // カーニングのメソッドを設定
textRange.characterAttributes.textFont =
    app.textFonts.getByName("migu-1p-bold");
// 書体を指定 migu-1p-bold

doc.selection = null; // 選択を解除
}
/* font_position.jsx */

実は、一番の問題はフォント名指定なのです。和名はNGなので英文表記にしないといけないのですが、今回は元々英語表記のMiguフォントを指定しています。
更にWindowsとmacOSでは同じフォントでも表記異なるケースもあるようでワケワカメです。

実行すると表示するテキストの入直を求めてきます。

上は処理結果です。
x100, y-100
つまりファイルの左上をの起点とし・・・
var Xposition = 100; // テキストのX座標
var Yposition = -100; // テキストのY座標
からの描画ということになります。
ちなみに、テキストの中央位置が起点となるようです。チョット怪しいですが気にしないことに。