完成コード
例えば小塚ゴシックを指定する場合以下のように書く。
sel = activeDocument.selection
sel[0].textRange.characterAttributes.textFont = app.textFonts.getByName("KozGoPro-Regular")
何が理解できなかったのか
上記コードでフォントは指定できるが、例えば以下コードのように文字列で指定するとエラーが出る。
sel = activeDocument.selection
sel[0].textRange.characterAttributes.textFont = "KozGoPro-Regular"
そもそもtextFontプロパティ
の値は文字列ではなくfontオブジェクト
を指定すべである。
しかしなぜこのようなコードを書いてしまったかと言うと以下コードのように書くことで、フォント名を取得することが出来る。
sel = activeDocument.selection
alert(sel[0].textRange.characterAttributes.textFont)
「小塚ゴシック」のテキストオブジェクトを選択して上記コードを実行すると、ダイアログに「textFont KozGoPro-Regular」と表示される。
短絡的に「じゃあtextFontの値に"KozGoPro-Regular"を文字列で指定すればいんじゃね?」と指定してしまった訳である。
結論
textFontプロパティ
の値はFontオブジェクト
でなければならない。
FontオブジェクトはtextFontクラスのgetByName()メソッドで取得出来る。