Solaris ghostscript カスタマイズ

Ghostscript で日本語の CID フォント(Ryumin-Light, GothicBBB-Medium など)を、システムに入っている TrueType フォントで代替させる設定を説明する。

Ghostscript 7 系では代替の設定ファイルは lib/CIDFnmap であったが、Ghostscript 8 以降は Resource/Init/cidfmap に変わった。記述の書式も変わっている。2026年5月時点の最新版は 10.07.1 である。

インストールとファイルの場所の確認

Solaris 11 では、pkg コマンドで Ghostscript をインストールする。パッケージ名は pkg search で確認する。

pkg search -l ghostscript
pkg install ghostscript

設定ファイルを置くディレクトリは、バージョンによって異なる。gs -h を実行すると、末尾にファイルの探索パス(Search path)が表示されるので、その中の Resource ディレクトリを使う。

gs --version
gs -h

探索パスが /usr/share/ghostscript/10.07.1/Resource/Init であれば、cidfmap は次のファイルである。

/usr/share/ghostscript/10.07.1/Resource/Init/cidfmap

cidfmap の設定例

CID フォント名に対して、代替に使う TrueType フォントのファイルを辞書形式で対応付ける。/Path は絶対パスで書く。/CSI の 2 番目の要素は Supplement 番号である。

/Ryumin-Light <<
  /FileType /TrueType
  /Path (/usr/share/fonts/TrueType/ipafont/ipam.ttf)
  /SubfontId 0
  /CSI [(Japan1) 7]
>> ;

/GothicBBB-Medium <<
  /FileType /TrueType
  /Path (/usr/share/fonts/TrueType/ipafont/ipag.ttf)
  /SubfontId 0
  /CSI [(Japan1) 7]
>> ;

/HeiseiMin-W3       /Ryumin-Light     ;
/HeiseiKakuGo-W5    /GothicBBB-Medium ;

上の例のように、フォント名だけを書けば別名(エイリアス)になる。Ryumin-Light-H のように符号化方式の接尾辞が付いた名前は、CID フォントと CMap の組み合わせとして Ghostscript が解決するので、cidfmap に書く必要はない。

フォントのファイル名とパスは、システムに実際に入っているものに合わせる。次のコマンドで探すことができる。

find /usr/share/fonts -name '*.tt[fc]'

リソースディレクトリの指定

Ghostscript 7 系では lib/gs_rep.ps を編集して FontResourceDirGenericResourceDir を設定していたが、現在はコマンドラインオプションで指定する。

gs -sGenericResourceDir=/usr/share/ghostscript/10.07.1/Resource/ \
   -sFontResourceDir=/usr/share/ghostscript/10.07.1/Resource/Font/ \
   -o out.pdf -sDEVICE=pdfwrite sample.ps

Ghostscript は COMPILE_INITS=1 でビルドされていることが多く、この場合は Resource ディレクトリの内容が実行ファイルに埋め込まれている(探索パスに %rom%Resource/ と表示される)。埋め込みが使われているときは、ファイルを編集しても反映されない。外部のディレクトリに cidfmap を置き、-I オプションまたは上記の -sGenericResourceDir でそのディレクトリを指定する。

gs -I/usr/local/share/ghostscript/Resource/Init \
   -sGenericResourceDir=/usr/local/share/ghostscript/Resource/ \
   -o out.pdf -sDEVICE=pdfwrite sample.ps

CID フォントではない Type 1 や TrueType のフォントを追加で探させたいときは、-sFONTPATH= オプション、または環境変数 GS_FONTPATH にディレクトリを指定する。

動作確認

日本語を含む PostScript ファイルを PDF に変換し、フォントが埋め込まれたかどうかを確認する。

gs -o out.pdf -sDEVICE=pdfwrite sample.ps
gs -dPDFINFO -dNODISPLAY -q out.pdf

-dPDFINFO は、PDF 内で使われているフォントの一覧を表示する。代替の設定が効いていないときは、警告メッセージが出るか、文字が表示されない。