5. Ghostscript でフォントを使う

Ghostscript でフォントを利用するには、そのフォントに対応するファイルのありかを Ghostscript に教えてやるだけのことです。そのためには /usr/share/ghostscript/version/Fontmap を編集します。フォーマットはごく単純ですから、ざっと目を通すだけですぐにも理解できるでしょう。

5.1. Type1 フォント

Type1 フォントは簡単に追加できます。フォントのあるディレクトリで type1inst を実行してください。type1inst は Fontmap という名前のファイルを出力します。このファイルの内容を Ghostscript が使う Fontmap ファイルの最後に追記しましょう。

5.2. TrueType フォント

TrueType フォントの追加はやや面倒で、まずフォント名を調べなければなりません。その手段としては(強引な力技ですが)、TrueType フォントを Type1 フォントに変換するプログラム ttf2pt1 を用いて、afm ファイルからフォント名を取得するという手があります(もっと効率のいい方法があるはずなのに! まあ、みっともないやりかたではあっても、うまくいくことは確かなのですが)。こんなふうにコマンドを実行してください。
	ttf2pt1 -A フォントのファイル名 - 2> /dev/null | grep FontName
そのあと、Ghostscript の Fontmap ファイルにエントリを追加します。以下は正しい書式の一例です。
	xxx-font	(/usr/share/fonts/subdirectory/xxxfont.ttf);
さて、これはこれでいいのですが、500 やそこらのフォントをこの方法で処理するとなったら大変ですね。そういうときはちょっとした Perl スクリプトの出番です。
#!/usr/bin/perl
# ttfontmap -- TrueType フォント用の Fontmap ファイルを生成
my $directory=shift || print STDERR "Usage: ttfontmap {directory}\n";

$directory=~s/\/$//;

for my $fontname ( glob ( "$directory/*.ttf" ) )
{
    open ( R, "sh -c \"ttf2pt1 -A $fontname - 2>/dev/null\" |" );
    while ( <R> )
    {
        if ( $_ =~ /^FontName/ )
        {
            s/^FontName\s*//;
            chomp;
            print "/" .  $_ . "    ($fontname);\n" ;
        }
    }
    close R;
}           
このスクリプトは
ダウンロードできます。

カット & ペーストした内容を ttfontmap という名前で保存し、そのファイルをパスの通っているところ(例えば /usr/bin)に格納すれば、スクリプトのセットアップは完了です。以下のように実行してください。
	ttfontmap ディレクトリ > 出力ファイル名
「ディレクトリ」の部分にはフォントのあるディレクトリのパスを入力します。作成された出力ファイルの内容を Ghostscript の Fontmap に追加すればよいわけです。

注意:「ttfontmap ディレクトリ >> /usr/share/ghostscript/version/Fontmap」とすればいいじゃないか、と思う方もいらっしゃることでしょう。しかし、これはお勧めできません(>> と入力すべきところを > としたらどうなることか……)。

5.3. Ghostscript でフォントをプレビューする

Ghostscript で使えるようになったフォントはプレビューできます。Ghostscript パッケージに含まれている prfont.ps というファイルを読みこませる形で Ghostscript インタープリタを起動してから、
	/フォント名 DoFont
と入力してください(「フォント名」には見たいフォントの Ghostscript 用フォント名を指定)。gs を呼び出す手段はほかにもいくつかあります。一例として、gv のようにもっと気のきいた PostScript ビューアで見られる PostScript ファイルを作成したければ、
	gs -sDEVICE=pswrite -sOutputFile=xxxxxx.ps  prfont.ps
とすることができます。こうしておけば、出力ファイルを印刷することもできます。