2015年5月22日

書体見本を自動生成する

大阪DTPの勉強会の隔週勉強会で「書体見本を自動生成する」という宿題が出た。
それを今日、発表することになってしまった。そのためのレジュメ代わり。
(22日21:36 いろいろ修正しました)

書体見本の自動生成

処理の方針:


タブ区切りのフォントリストから、タグ付きテキストを作り、それをInDesingに配置する。自分のコンピュータで使えるすべてのフォントをふくむリストの作り方はこの記事の末尾に書いておきましたが、ここではフォントリストサンプルのダウンロード )ができているとして、それからタグ付きテキストを作る方法を紹介します。

スタート:フォントのファミリー名とスタイル名がタブで区切られているリストから、
小塚明朝 Pr6N R
游ゴシック体 ミディアム
……
……
ゴール:次のようなInDesignの「タグ付き」テキストを作る。
<UNICODE-MAC>
<vsn:9.3><fset:InDesign-Japanese>
<pstyle:><cf:小塚明朝 Pr6N><ct:R>小塚明朝 Pr6N R
Lorem ipsum dolor sit amet, consectetur adipisicing elit,
あのイーハトーヴォのすきとおった風、夏でも底に冷たさをもつ青いそら、うつくしい森で飾られたモーリオ市、郊外のぎらぎらひかる草の波。
祇辻飴葛蛸鯖鰯噌庖箸
Lorem ipsum dolor sit amet,
1234567890
12234567890
<ct:><cf:>
<pstyle:><cf:游ゴシック体><ct:ミディアム>游ゴシック体 ミディアム
Lorem ipsum dolor sit amet, consectetur adipisicing elit,
あのイーハトーヴォのすきとおった風、夏でも底に冷たさをもつ青いそら、うつくしい森で飾られたモーリオ市、郊外のぎらぎらひかる草の波。
祇辻飴葛蛸鯖鰯噌庖箸
Lorem ipsum dolor sit amet,
1234567890
12234567890
<ct:><cf:>
……
……

処理の実際:


1)最初に1回だけ、ファイル開始タグを書き出す。
<UNICODE-MAC>
<vsn:9.3><fset:InDesign-Japanese>
2)フォントリストの1行ずつについて次の操作を繰り返す。
2-1)ファミリー名を変数$1に、スタイル名を変数$2に読み込む。
2-2)雛形の$1$2ファミリー名スタイル名を代入して出力する。

雛形:
<pstyle:><cf:$1><ct:$2>$1 $2
Lorem ipsum dolor sit amet, consectetur adipisicing elit,
あのイーハトーヴォのすきとおった風、夏でも底に冷たさをもつ青いそら、うつくしい森で飾られたモーリオ市、郊外のぎらぎらひかる草の波。
祇辻飴葛蛸鯖鰯噌庖箸
Lorem ipsum dolor sit amet,
1234567890
12234567890
<ct:><cf:>

これをPerlやAWKスクリプトで実現すると次のようになる。

Perlスクリプト ダウンロード
use utf8;
binmode STDOUT, ':utf8';
binmode STDERR, ':utf8';
binmode STDIN, ':utf8';
print "<UNICODE-MAC>\n<vsn:9.3><fset:InDesign-Japanese>\n";
#print "<UNICODE-WIN>\n<vsn:9.3><fset:InDesign-Japanese>\n";
while (<>) {
 /([^\t]+)\t(.+)/;
 print "<pstyle:><cf:$1><ct:$2>$1 $2\
Lorem ipsum dolor sit amet, consectetur adipisicing elit, \
あのイーハトーヴォのすきとおった風、夏でも底に冷たさをもつ青いそら、うつくしい森で飾られたモーリオ市、郊外のぎらぎらひかる草の波。\
祇辻飴葛蛸鯖鰯噌庖箸とか\
Lorem ipsum dolor sit amet,\
1234567890とか\
12234567890\
<ct:><cf:>";
}

実行例:$ perl -f addtag.pl < fontlist.txt | iconv -t utf-16le > fontsample.txt

AWKスクリプト ダウンロード
BEGIN {
 FS = "\t"
 print "<UNICODE-MAC>\n<vsn:9.3><fset:InDesign-Japanese>"
}
{ print \
"<pstyle:><cf:" $1 "><ct:" $2 ">" $1 " " $2 "\n\
Lorem ipsum dolor sit amet, consectetur adipisicing elit, \n\
あのイーハトーヴォのすきとおった風、夏でも底に冷たさをもつ青いそら、うつくしい森で飾られたモーリオ市、郊外のぎらぎらひかる草の波。\n\
祇辻飴葛蛸鯖鰯噌庖箸\n\
Lorem ipsum dolor sit amet,\n\
1234567890\n\
12234567890\
<ct:><cf:>"
}

実行例:$ awk -f addtag.pl < fontlist.txt | iconv -t utf-16le > fontsample.txt

留意点:


(ア)ファイル開始タグと改行コードの組み合わせ:
<UNICODE-MAC>とした場合は改行コードをLFに、
<UNICODE-WIN>とした場合は改行コードをCRLFに。
(イ)途中の処理はUTF-8で行っているので、配置する前にUTF-16 (LE BOM付) に変換しておく。
上の実行例ではiconvコマンドを使って変換した。
(ウ)配置する際、「グリッドフォーマットの適用」のチェックを外しておく。


もうちょっとPerlらしいスクリプト ダウンロード
use utf8;
binmode STDOUT, ':utf8';
binmode STDERR, ':utf8';
binmode STDIN, ':utf8';
print "<UNICODE-MAC>\n<vsn:9.3><fset:InDesign-Japanese>\n";
while (<>) {
 chop;
 ($family, $style) = split(/\t/, $_);
 print "<pstyle:><cf:$family><ct:$style>$family $style\
Lorem ipsum dolor sit amet, consectetur adipisicing elit, \
あのイーハトーヴォのすきとおった風、夏でも底に冷たさをもつ青いそら、うつくしい森で飾られたモーリオ市、郊外のぎらぎらひかる草の波。\
祇辻飴葛蛸鯖鰯噌庖箸\
Lorem ipsum dolor sit amet,\
1234567890\
12234567890\
<ct:><cf:>";
}

資料集:


PerlとAWK

OS Xには両方とも最初から入ってます。
Windowsにはどちらも入っていません。Perlなら下のサイトからインストールできます。
ActivePerl:http://www.activestate.com/activeperl

『ADOBE INDESIGN CS5 タグ付きテキストユーザーガイド』

http://www.adobe.com/go/learn_id_taggedtext_cs5_jp
(実際には次のURLへリダイレクトされる)
http://help.adobe.com/ja_JP/indesign/cs/taggedtext/indesign_cs5_taggedtext.pdf

Adobe製品のjavascript入門編

古籏一浩さんの「OpenSpace」 http://www.openspc2.org

利用できるフォント(書体)の名前をテキストフレームに書き出す
CC2014用:http://www.openspc2.org/book/InDesignCC2014/easy/font/002/index.html
CC用:http://www.openspc2.org/book/InDesignCC/easy/font/002/index.html
CS6用:http://www.openspc2.org/book/InDesignCS6/easy/font/002/index.html
これで書き出したフォントのリスト(タブ区切りテキスト):fontlist.txt


フォントリストの作り方:

自分のコンピュータで使えるフォントのリストを作るには前項、古籏氏作の「利用できるフォント(書体)の名前をテキストフレームに書き出す」javascriptが便利です。javascriptの実行の仕方も古籏氏の「OpenSpace」のInDesign自動化の項に詳しく書いてあります。

実行すると、InDesign文書上にファミリー名とスタイル名の一覧が現れますので、
  1. テキストを全て選択
  2. ファイル→書き出し
  3. 形式「テキストのみ」
  4. エンコーディング「UTF-8」
  5. fontlist.txtなど適当な名前で保存
以上です。