:note

合成フォント名で使用不可な文字

InDesignの合成フォントの命名メモです。

GUIで使っている限りでは不正なキャラクターを使っていたらエラーになります。

合成フォント名で使用不可な文字 /images/2010/12/gui_alert.png

合成フォントなのに「&」が使えないなんて不便ですね。

というか、使えない文字があるなら最初から教えておいて欲しいものです。

そこで、キーボードに印字されている記号類で使えるかどうか試すスクリプトで確認してみると、見事にスルーしてしまい、不正なキャラクターでも合成フォントを作れてしまいました。

Scripting でうっかり混入すると変な爆弾を抱え込むということかもしれません。

var doc = app.documents[0];
//dont use :[colon].[period] => Crash
var char_str = "~!@#$%^&*()_+`-={}[];\"'<>,?/|\ ";

var char_arr = char_str.split('');
for (var i=0, iL=char_arr.length; i < iL ; i++) {
  var test = char_arr[i];
  try{
    doc.compositeFonts.add({name: test });
    // $.sleep(1000);
  }
  catch(e){
    $.writeln(test); //why cant catch erro?
  }
};

var comp_fonts = doc.compositeFonts;
$.writeln(comp_fonts.everyItem().name);

注意

このスクリプトで、コロン「:」はMacのディレクトリのセパレーターとして、ピリオド「 .」はファイル名先頭にあると不可視ファイルとなるのでリストに含めるとInDesignがクラッシュします。Windowsだと別な記号でクラッシュするかもしれません。

合成フォント名で使用不可な文字 images/2010/12/indesign_crash_with_colon.png

この時点でGUIではエラーになる記号類での合成フォントもできてます。ハイフン「-」はリストの区切りと化して選択出来ません(InDesign上では選択出来ます)。実際に使用することもできるのですがとても精神衛生上よくないです。

合成フォント名で使用不可な文字 images/2010/12/created_illegal_name.png

try 〜 catch でエラーにならなかった理由はわからないのですが、仕方がないので、手動で確認してみます。

「新規」をそれぞれの記号を元のセットとして作ってみてエラーになれば、本当に使用不可ということです。

アンダースコア「_」を試してみましょう。

合成フォント名で使用不可な文字 images/2010/12/try_new_compofont.png

「_のコピー」はできずに、エラーになります。

合成フォント名で使用不可な文字 images/2010/12/try_underscore.png

同様に他の記号も試してみます。ハイフンはやはりエラーですね。ハイフンは先頭以外なら使えます。

合成フォント名で使用不可な文字 images/2010/12/try_hyphen.png

(〜中略〜)

「のコピー」ができたら保存していき、最終的に残ったのは

ok = [
" のコピー", //space
"!のコピー", //exclamation mark
"#のコピー", //number sign, hash
"$のコピー", //dollar sign
"'のコピー", //apostrophe
"+のコピー", //plus sign
",のコピー", //comma
";のコピー", //semi colon
"=のコピー", //equal sign
"@のコピー", //commercial at
"^のコピー", //circumflex accent
"`のコピー", //grave accent
"~のコピー" //tilde
];

これらの記号は合成フォント名に使用出来ます、 でもあんまりファイル名として使いたくないのも混じっていますね。 (~/Library/Preferences/Adobe InDesign/Version 6.0-J/ja_JP/CompositeFont などをみてみるとわかると思います。)

合成フォント名で使用不可な文字 /images/2010/12/composite_font_folder.png

結論

使用不可能なのは以下の記号類(全てではない)


ng = ['%', '&', '*', '(', ')', '_', '-', '{', '}', '[', ']', '"', '<', '>', ',', '/', '|', '\' ];

全角記号なら大丈夫というのもありますが、なるべくなら今の時代基本的には欧文で賄いたいものです。

2010-12-16 追記

使用不可能にハイフンが含まれたのは、チェック方法が最初の文字であったためで、本来使えます。

合成フォントの名前を変更する - 名もないテクノ手

「合成フォントは英数名+先頭以外のハイフンの組み合わせが安全」

 
comments powered by Disqus
back to top