:note

合成フォントで使用不可な文字についてもう少し調べてみた

http://twitter.com/seuzo/status/14904109169639424

が気になったのでもう少し調べてみます。(とりあえずCS4ではフォントが見つからないといった状況にはならないみたい。)

まず、ドキュメント内に名前としてアウトな合成フォントが本当に使えるチェックしてみましょう。MacOSX 10.6.5 InDesign CS4で試してます。

var doc = app.documents[0];
var comp_font = doc.compositeFonts;

var tf = doc.textFrames.add();
tf.textFramePreferences.textColumnCount = 3;
tf.geometricBounds = [1,1,100,100];
for (var i=1; i < comp_font.length; i++) { //i=0 [No composite font]

  tf.parentStory.contents += comp_font[i].name+"\r";
  // alert(comp_font[0].name)
  try  {
    tf.parentStory.lines[i-1].appliedFont = comp_font[i].name;    
  }
  catch(e){
    $.writeln(comp_font[i].name); // => error "/"
  }
};

テキストフレームに合成フォント名を入れて、その合成フォントを適用してみると、気持ち悪いことにほとんど使えます。

唯一、スラッシュ「/」がエラーになりますが、フォント検索ダイアログの詳細情報を見てみるとパスのセパレーターですので理解ができます(フォントのプルダウンメニューにも「/」はでてきませんでした)。

合成フォントで使用不可な文字についてもう少し調べてみた /images/2010/12/composite_font_detail.png

では、フォントのPostScript名はどうなっているか見てみましょう。

ただし合成フォントは、postscriptName のプロパティを持っていないので、調べられません。

合成フォントはドキュメントにロードされるフォントなので、app.documents[0].fonts でどうでしょう(OSにインストールされているフォントを扱うときはapp.fonts)。

doc = app.documents[0];

comp_font = doc.compositeFonts;
for (var i=0, iL=comp_font.length; i < iL ; i++) {
  $.writeln(i+"\t"+comp_font[i].name);
};

for (var j=0, jL=doc.fonts.length; j < jL ; j++) {
  result = j + "\t" +
  doc.fonts.[j].fontFamily + "\t" +
  doc.fonts.[j].postscriptName + "\t" +
  doc.fonts.[j].location;
  $.writeln(result);  
};

PostScript名も抜けました。

合成フォントのPostScript名はATC-●[合成フォント名] という形式になるようです。

「●」のところに、なぜかデスクトップのファイルが表示された(###### ##### #####のところ)他、一部の記号は4桁のUnicodeに変換されてます。

使える記号がそう変換されてるかといえばそうでもなく、パターンがよくわかりません。

//合成フォント名
0 [No composite font]
1 ~
2 !
3 @
4 #
5 $
6 %
7 ^
8 &
9 *
10 (
11 )
12 _
13 +
14 `
15 -
16 =
17 {
18 }
19 [
20 ]
21 ;
22 "
23 '
24 <
25 >
26 ,
27 ?
28 /
29 |
30 \
31

//ドキュメントにロードされてる合成フォント
0 ATC-0020 ~/Library/Preferences/Adobe InDesign/Version 6.0-J/ja_JP/CompositeFont/ 
1 | ATC-*| ~/Library/Preferences/Adobe InDesign/Version 6.0-J/ja_JP/CompositeFont/|
2 / ATC-002f ~/Library/Preferences/Adobe InDesign/Version 6.0-J/ja_JP/CompositeFont/:
3 ? ATC-*? ~/Library/Preferences/Adobe InDesign/Version 6.0-J/ja_JP/CompositeFont/?
4 , ATC-*, ~/Library/Preferences/Adobe InDesign/Version 6.0-J/ja_JP/CompositeFont/,
5 > ATC-003e ~/Library/Preferences/Adobe InDesign/Version 6.0-J/ja_JP/CompositeFont/>
6 < ATC-003c ~/Library/Preferences/Adobe InDesign/Version 6.0-J/ja_JP/CompositeFont/ATC-003c
7 ' ATC-*' ~/Library/Preferences/Adobe InDesign/Version 6.0-J/ja_JP/CompositeFont/'
8 " ATC-*" ~/Library/Preferences/Adobe InDesign/Version 6.0-J/ja_JP/CompositeFont/"
9 ; ATC-*; ~/Library/Preferences/Adobe InDesign/Version 6.0-J/ja_JP/CompositeFont/;
10 ] ATC-005d ~/Library/Preferences/Adobe InDesign/Version 6.0-J/ja_JP/CompositeFont/]
11 [ ATC-005b ~/Library/Preferences/Adobe InDesign/Version 6.0-J/ja_JP/CompositeFont/[
12 } ATC-007d ~/Library/Preferences/Adobe InDesign/Version 6.0-J/ja_JP/CompositeFont/}
13 { ATC-007b ~/Library/Preferences/Adobe InDesign/Version 6.0-J/ja_JP/CompositeFont/{
14 = ATC-*= ~/Library/Preferences/Adobe InDesign/Version 6.0-J/ja_JP/CompositeFont/=
15 - ATC-*- ~/Library/Preferences/Adobe InDesign/Version 6.0-J/ja_JP/CompositeFont/-
16 ` ATC-*` ~/Library/Preferences/Adobe InDesign/Version 6.0-J/ja_JP/CompositeFont/`
17 + ATC-*+ ~/Library/Preferences/Adobe InDesign/Version 6.0-J/ja_JP/CompositeFont/+
18 _ ATC-*_ ~/Library/Preferences/Adobe InDesign/Version 6.0-J/ja_JP/CompositeFont/_
19 ) ATC-0029 ~/Library/Preferences/Adobe InDesign/Version 6.0-J/ja_JP/CompositeFont/)
20 ( ATC-0028 ~/Library/Preferences/Adobe InDesign/Version 6.0-J/ja_JP/CompositeFont/(
21 ########## ############# ########### ############ ######## ATC-002a ~/Library/Preferences/Adobe InDesign/Version 6.0-J/ja_JP/CompositeFont/*
22 & ATC-*& ~/Library/Preferences/Adobe InDesign/Version 6.0-J/ja_JP/CompositeFont/&
23 ^ ATC-*^ ~/Library/Preferences/Adobe InDesign/Version 6.0-J/ja_JP/CompositeFont/^
24 % ATC-0025 ~/Library/Preferences/Adobe InDesign/Version 6.0-J/ja_JP/CompositeFont/%
25 $ ATC-*$ ~/Library/Preferences/Adobe InDesign/Version 6.0-J/ja_JP/CompositeFont/$
26 # ATC-*# ~/Library/Preferences/Adobe InDesign/Version 6.0-J/ja_JP/CompositeFont/#
27 @ ATC-*@ ~/Library/Preferences/Adobe InDesign/Version 6.0-J/ja_JP/CompositeFont/@
28 ! ATC-*! ~/Library/Preferences/Adobe InDesign/Version 6.0-J/ja_JP/CompositeFont/!
29 ~ ATC-*~ ~/Library/Preferences/Adobe InDesign/Version 6.0-J/ja_JP/CompositeFont/~
30 小塚明朝 Pro KozMinPro-Regular /Library/Fonts/KozMinPro-Regular.otf
31 Times Times-Roman /System/Library/Fonts/Times.dfont

基本的に Scripting で合成フォントをどうこうする機会ってなかなかないですが、できてしまってはいけないものができてるということで、Adobeのツメがあまい。って結論でいいものだろうか?

結局、欧文英数のみで大文字小文字の CamelCase の命名が一番しっくりきそう

CamelCase - Wikipedia, the free encyclopedia

2010-12-16 追記

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

 
comments powered by Disqus
back to top