異体字の入力は文字種類によって異なります。

 

異体字であってもUnicodeにあるものはコードで指定することができます。

var ch= app.selection[0];
ch.contents= '\u56FD\u570B'; //国と旧字体の国

 

同じUnicodeを共有している異体字のうちOpenTypeの異体字カテゴリーに定義されているものは、テキストオブジェクトにあるglyphFormプロパティに異体字の種類をAlternateGlyphForms定数で指定します。

var selObj= app.activeDocument.selection[0]; //テキストフレームが選択されているとして...
selObj.contents= '\u0032\u0032'; //数字の2
//2文字目の異体字プロパティを等幅半角字形に
selObj.characters[1].glyphForm= AlternateGlyphForms.MONOSPACED_HALF_WIDTH_FORM; //等幅半角字形

なお、先の例で行った「国」の異体字はOpenTypeの「旧字体」として定義されていますので、文字コードを「\u56FD」から「\u570B」へ変更せず、この方法を使ってAlternateGlyphFormsプロパティに旧字体(TRADITIONAL_FORM)を設定することでも変更可能です。

var selObj= app.activeDocument.selection[0]; //テキストフレームが選択されているとして...
selObj.contents= '\u56FD\u56FD'; //国の通常字形
//2文字目の異体字プロパティを旧字体に
selObj.characters[1].glyphForm= AlternateGlyphForms.TRADITIONAL_FORM; //旧字体

 

OpenTypeの異体字カテゴリーに定義されていないものは、テキストオブジェクトにあるopentypeFeaturesプロパティに字形の種類を表す引数を渡します。

var selObj= app.activeDocument.selection[0]; //テキストフレームが選択されているとして...
selObj.contents= '\u21D0'; //左矢印
selObj.characters[0].opentypeFeatures =[['aalt',7]];

なお、引数に渡す文字列と数値は情報パレットを見ることで知ることができます。

 

<Unicodeを持たない字形>

 

Unicodeを持たない字形はCIDとして入力しなければならないのですが、残念ながらスクリプトから直接CIDコードで文字を入力したり変換したりすることはできません。

この類の文字は「検索と置換」の機能を使い、一度何らかの文字を入力してその文字をCIDコードで指定した文字に変換します。

var selObj= app.activeDocument.selection[0]; //テキストフレームが選択されているとして...
//仮文字入力
selObj.contents= '●'; //CID 724
selObj.characters[0].properties={
    appliedFont : 'A-OTF 中ゴシックBBB Pr6',
    fontStyle: 'Medium'}
//----------------------------検索と置換の設定
//字形の検索
app.findGlyphPreferences.appliedFont= 'A-OTF 中ゴシックBBB Pr6'; //フォント
app.findGlyphPreferences.fontStyle= 'Medium'; //スタイル
app.findGlyphPreferences.glyphID= 724; //黒丸
//字形の置換
app.changeGlyphPreferences.appliedFont= 'A-OTF 中ゴシックBBB Pr6'; //フォント
app.changeGlyphPreferences.fontStyle= 'Medium'; //スタイル
app.changeGlyphPreferences.glyphID= 10604; //黒丸囲み数字の100
//----------------------------対象オブジェクトに実行
//対象オブジェクト>パレットの「検索」相当。ここでは最初に入力した文字
selObj.characters[0].changeGlyph(); //実行

それぞれのプロパティは「検索と置換」のダイアログにあるものなので、それを見比べてみると理解が進みます。

 

Joomla templates by a4joomla