ExtendScript、Creative Suite特有の情報
スクリプト中でフォントを扱う際、フォント名が日本語の文字列を含んでいると、エラーが生じることが幾度となくありました。
但し、「日本語のフォント」であっても、Osakaなど、ASCII文字だけで構成されたフォント名ならば、問題はないようです。その逆に、ヒラギノフォントの類は、ポストスクリプト名で指定してもエラーが起こります。
──具体的に例を示します。
var the_font = app.fonts.item('ヒラギノ明朝 Pro');
app.documents[n].pages[n].textFrames[n].paragraphs[n].appliedFont = the_font;
といったようなコードは、ほぼ失敗に終わります。
回避策は、下のように前以て、組み込み関数のencodeURIComponentを使い、*1 URIエンコードした文字列を用意しておきます。
encodeURIComponent('ヒラギノ明朝 Pro');
結果、「ヒラギノ明朝 Pro」は「%E3%83%92%E3%83%A9%E3%82%AE%E3%83%8E%E6%98%8E%E6%9C%9D%20Pro」となります。
更にこの文字列を、同じく組み込み関数のdecodeURIComponentで元に戻して、変数に格納します。
var font_name = decodeURIComponent('%E3%83%92%E3%83%A9%E3%82%AE%E3%83%8E%E6%98%8E%E6%9C%9D%20Pro');
この変数font_nameを、前出のapp.fonts.itemプロパティに与えた場合、フォントを日本語名で指定可能です。