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 を編集して FontResourceDir と GenericResourceDir を設定していたが、現在はコマンドラインオプションで指定する。
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 内で使われているフォントの一覧を表示する。代替の設定が効いていないときは、警告メッセージが出るか、文字が表示されない。