GNU Ghostscript 7.07 (非推奨)

この項目は編集途中です :削除されていた項目をとりあえず復活させることを急ぎました。 全面的に2015年の環境で可能かどうか検証作業中です。 動く保証はまったくありませんので,よくわからない方はこのページは無視してください。 (2015-10-16)

最新の GPL Ghostscript(ライセンスは AGPL)は,日本語の縦書き PostScript ファイルが正しく表示できます。 かつて Ghostscript には GNU Ghostscript 7.07 というバージョンが存在し,日本の gs-cjk プロジェクトの寄与を含み,日本語の縦書き PostScript ファイルを正しく扱うことができました。 ここではその Ghostscript 7.07 について説明します。

なお,Ghostscript 7.07 には脆弱性が存在しますので,最新の Ghostscript を利用することをお勧めします。



ダウンロード

Ghostscript で利用する欧文フォントは,Sourceforge (gs-fonts) やそのミラーから入手できます。 CJK フォントを扱うためには CMap Resource も必要で,これは Adobe Type Tools - GitHub からダウンロードできます。

ソースから make する場合は,これに加えて GNU Ghostscript 7.07 本体と依存ライブラリのソースも必要です。 本体のソースは ghostscript-7.07b.tar.gz の場合は https://ftp.gnu.org/gnu/ghostscript/http://ftp.yz.yamagata-u.ac.jp/pub/GNU/ghostscript/ ,ghostscript-7.07.tar.bz2 または ghostscript-7.07.tar.gz の場合は Sourceforge (gnu-gs) から,依存ライブラリのソースは,ftp.gnu.org やそのミラーから入手できます。

バージョンによってはライセンスが異なりますので,注意深くダウンロードしてください。

インストール(バイナリを入手する方法)

Windows

角藤さんが配布している filegs707w32full.zip を展開し,中にある “setupgs.exe” を実行します。 デフォルトでは C:\gs に入ります(ご自分でドキュメントを読んでトラブルを解決するつもりの人以外は,安易に変えないでください)。 C:\gs\gs7.07\bin\gswin32.exe が実行ファイルです(コンソール版は gswin32c.exe)。 Ghostscript fonts も同時に C:\gs\fonts にインストールされます。

動作チェックとして [スタート] → [プログラム] → [Ghostscript] → [Ghostscript 7.07] で Ghostscript を起動し,その窓に C:\gs\gs7.07\examples\tiger.ps をドラッグ & ドロップして虎の絵が表示できれば OK です。

参考:Ghostscript による PDF 作成

Ghostscript 7.07 単独で日本語の PDF を作る場合や,dvipdfmx 処理する EPS ファイルに日本語が含まれている場合など,CJK フォントを扱うためには作業が必要です。 EPS ファイルに日本語が含まれていない(あるいは日本語がアウトライン化されている)ならば,dvipdfmx で処理する本文にいくら日本語が使われていても,以下の作業は特に不要です。

リンクから CMap Resources の5つの zip アーカイブをダウンロードし,解凍してでてくる CMap フォルダの中身をすべて C:\gs\gs7.07\Resource\CMap というフォルダ(なければ作成)の中に配置します。 もし C:\gs\gs7.07\Resource 以外のフォルダに展開するなら,C:\gs\gs7.07\lib\gs_res.ps の248–249行を編集する必要があります。

次は和文フォントを使えるようにします。 ここでは Microsoft Windows の「MS 明朝」,「MS ゴシック」を使ってみます。 C:\gs\gs7.07\lib\CIDFnmap の最後に次のように書き込みます。 ←Windows Vista 以降のMS フォントでは失敗するっぽい…?

/Ryumin-Light      /MS-Mincho        ;
/GothicBBB-Medium  /MS-Gothic        ;
/HeiseiMin-W3      /Ryumin-Light     ;
/HeiseiKakuGo-W5   /GothicBBB-Medium ;

/MS-Mincho         (msmincho.ttc) 1  ;
/MS-Gothic         (msgothic.ttc) 1  ;

これで日本語が表示できます。

C:\gs\gs7.07\lib も Path に含めておけば,ps2pdf コマンドで PostScript ファイルを PDF ファイルに変換できます。 ただし『無効なフォント「MS-Mincho」が文書から削除されました。』と出て,すべてゴシック体で表示されてしまいます。 これを防ぐには,MS-Mincho,MS-Gothic を文書から削除して Ryumin-Light,GothicBBB-Medium という名前に置き換えればいいわけです。 これを自動化するスクリプト replacecjkfonts, cjkps2pdf中丸幸治さんが作られています。 これを使えば PDF のサイズも小さくなりますし,Adobe Acrobat Reader DC が適当なフォントできれいに表示してくれます。

2003年9月5日以降の角藤さんが配布なさっている Ghostscript 7.07 なら,replacecjkfonts 無しでうまくいくと思います。 たとえば,dvipdfmx で PDF を作る際に和文フォントを埋め込まない設定は,dvipdfmx.cfg の “D” で始まる行を次のように書き直します(適当に改行してありますのでつなげてください;本当は1行です): ←この情報は古いが,アーカイブとして残しておく

D "gswin32c -q -dSAFER -dNOPAUSE -dBATCH -sPAPERSIZE=a0
-sDEVICE=pdfwrite -dCompatibilityLevel=1.3
-dAutoFilterGrayImages=false -dAutoFilterColorImages=false
-dGrayImageFilter=/FlateEncode -dColorImageFilter=/FlateEncode
-dUseFlateCompression=true -sOutputFile=%o -c '.setpdfwrite <<
/NeverEmbed [/Courier /Courier-Bold /Courier-Oblique /Courier-BoldOblique
/Helvetica /Helvetica-Bold /Helvetica-Oblique /Helvetica-BoldOblique
/Times-Roman /Times-Bold /Times-Italic /Times-BoldItalic
/Symbol /ZapfDingbats
/Ryumin-Light /GothicBBB-Medium /MS-Mincho /MS-Gothic]
>> setdistillerparams' -f %i -c quit"

インストール(ソースから make する方法)

Linux, macOS

以下は Linux や macOS でソースからインストールする方法です。 デフォルトでは /usr/local にインストールされますが,既に Ghostscript 8.xx 系をインストールしている場合はそちらの /usr/local/bin/gs が存在しているはずですので,別の場所にインストールするとよいでしょう。 たとえば /usr/local/teTeX にインストールする場合は以下のようにします:

$ tar xvzf ghostscript-7.07.tar.gz
$ cd ghostscript-7.07
$ tar xvzf jpegsrc.v6b.tar.gz
$ mv jpeg-6b jpeg
$ tar xvzf libpng-1.0.2.tar.gz
$ mv libpng-1.0.2 libpng
$ tar xvzf zlib-1.1.3.tar.gz
$ mv zlib-1.1.3 zilb
$ ./configure --prefix=/usr/local/teTeX

この段階で山田泰司さんのパッチを当てておくと,多くの TrueType フォントや OpenType フォントを扱えるようになります。 そして,トップレベルで make,make install します。

$ make
$ make install

すると,次のものが /usr/local/teTeX/bin/ に入ります。

bdftops dvipdf eps2eps fixmswrd.pl font2c gs gsbj gsdj gsdj500 gslj gslp gsnd lprsetup.sh pdf2dsc pdf2ps pdfopt pf2afm pfbtopfa pj-gs.sh printafm ps2ascii ps2epsi ps2pdf ps2pdf12 ps2pdf13 ps2pdf14 ps2pdfwr ps2ps pv.sh sysvlp.sh unix-lpr.sh wftopfa

また,/usr/local/teTeX/share/ghostscript/7.07/ の下にたくさんのものが入ります。

次に,仕上げです。 lib/gs_res.ps の249–250行

/FontResourceDir (/Resource/Font/) readonly .forcedef  % pssys'params is r-o
/GenericResourceDir (/Resource/) readonly .forcedef    % pssys'params is r-o

の /Resource/ (2箇所)を /usr/local/teTeX/share/ghostscript/Resource/ に書き直します(あるいは ln -s /usr/local/teTeX/share/ghostscript/Resource /Resource のようにシンボリックリンクしてもいいでしょう)。

ダウンロードした欧文フォントは /usr/local/teTeX/share/ghostscript/fonts に配置します。

$ cd /usr/local/teTeX/share/ghostscript
$ tar xvzf ghostscript-fonts-std-8.11.tar.gz
$ tar xvzf gnu-gs-fonts-other-6.0.tar.gz

さらに,CJK フォントを扱うためには作業が必要です。 リンクから CMap Resources の5つの zip アーカイブをダウンロードし,解凍してでてくる CMap フォルダの中身をすべて /usr/local/teTeX/share/ghostscript/gs7.07/Resource/CMap というフォルダ(なければ作成)の中に配置します。

和文フォントの設定

次は和文フォントを使えるようにします。 あらかじめ山田泰司さんのページにあるパッチを当てておけば,TrueType フォントや OpenType フォントを扱うことができます(一部,非対応のためうまくいかないフォントもあります)。 GNU Ghostscript 当時は CID フォントが使われていましたが,今となっては少数派でしょう。

和文フォントの設定(TrueType フォント,OpenType フォント)

GNU Ghostscript 7.07 から和文フォント TrueType フォントや OpenType フォントを扱うためには

  1. 使いたいフォントを /usr/local/teTeX/share/ghostscript/fonts/ に入れる
  2. /usr/local/teTeX/share/ghostscript/7.07/lib/CIDFnmap に設定を書き加える

という作業が必要です*1

狩野さんが開発している TrueType フォント「さざなみフォント」を使う場合,efont プロジェクト日本語トップページ - OSDN から最新のものをダウンロードし,中にある ttf ファイルを /usr/local/teTeX/share/ghostscript/fonts/ に入れます。 CIDFnmap には以下のように記述すれば,表示も PDF 化も大丈夫のようです:

/Ryumin-Light              /Sazanami-Mincho-Regular ;
/GothicBBB-Medium          /Sazanami-Gothic-Regular ;

/Sazanami-Mincho-Regular   (sazanami-mincho.ttf) ;
/Sazanami-Gothic-Regular   (sazanami-gothic.ttf) ;

情報処理推進機構 (IPA) の TrueType フォント5書体「IPA フォント」を利用するには,以下のように記述します:

/Ryumin-Light              /IPAMincho ;
/GothicBBB-Medium          /IPAGothic ;

/IPAMincho                 (ipam.ttf) ;
/IPAGothic                 (ipag.ttf) ;

ほかの例もあげておきます(以下はダイナフォントの平成書体で,商品):

/Ryumin-Light              (DFHsm3.ttc) ;
/GothicBBB-Medium          (DFHsg5.ttc) ;
/FutoMinA101-Bold          (DFHsm5.ttc) ;
/FutoGoB101-Bold           (DFHsg7.ttc) ;
/Jun101-Light              (DFHsr4.ttc) ;

フォントによっては TrueType Collection 番号を追加します:

/Ryumin-Light              (XXXXXX.ttc) 2 ;

なお他 OS 用フォントを Linux から使うことについては,三田さんがまとめてくださったものがあります。 この中では Microsoft だけ「Windows 以外での使用は認めません」と答えています。 ←この情報は古いかもしれません。要確認

和文フォントの設定(CID フォント)

GNU Ghostscript 7.07 がリリースされた当時は東風明朝 CID/OpenType 化キットがよく使われていましたが,いわゆる東風問題で配布中止となっています。

和田研フォントを CID 化したサンプルフォントを使うには,以下のように設定します。 ←この情報は古いが,失われるべきでないので残す

WadaMin-Regular,WadaGo-Bold をダウンロード (FTP) し,/usr/local/teTeX/share/ghostscript/Resource/CIDFont/ に入れておきます。 そして,/usr/local/teTeX/share/ghostscript/7.07/lib/CIDFnmap に次のように書き込みます。

/Ryumin-Light              /WadaMin-Regular  ;
/GothicBBB-Medium          /WadaGo-Bold      ;
/HeiseiMin-W3              /Ryumin-Light     ;
/HeiseiKakuGo-W5           /GothicBBB-Medium ;

こうしておけば,表示だけでなくコマンド ps2pdf で日本語 PDF が作れます。 ps2pdf は gs で PDF を作るシェルスクリプトです。 同様な仕組みで dvipdfmx もインクルードされた EPS ファイルを PDF 化しますので,ps2pdf が正しく働くことは重要です。

埋め込まれたフォントを外す・フォントを埋め込まない

和田研フォントは,表示は何とか我慢できる程度ですが,標準の ps2pdf で PDF 化したものは文字の位置がおかしくなって使い物になりません。

対処法はいくつかあります。 ←この情報は古いかもしれません。要確認

参考:Ghostscript のバージョンと歴史的経緯

Ghostscript にはかつて(2006年頃まで),ライセンス形態により複数の系統が存在していました。 ひとつは Ghostscript を開発・保守している Artifex Software Inc. が定める AFPL (Aladdin Free Public License) により保護される AFPL Ghostscript で,これは商用利用が制限されていました。 もうひとつは GPL (GNU General Public License) により保護される GPL Ghostscript です。 これらは

という慣習でした*2。 しかし AFPL Ghostscript は廃れてしまい,2006年の gs8.54 以降は GPL Ghostscript が最新バージョンとして開発されています(参考)。 ライセンスとバージョン番号の関係は Ghostscript - pteTeX Wiki で詳しく説明されています。

Ghostscript は長らく日本語に対応しておらず,日本語化・CJK 化がさまざまな有志によって取り組まれてきました。 特に,gs-cjk プロジェクトJapanese)は2000年の AFPL Ghostscript 6.50 に対する gs-cjk パッチ公開をはじめとして,GNU Ghostscript への gs-cjk パッチをリリースして日本のユーザに広く使われてきました。 GNU Ghostscript へはその後めでたく gs-cjk パッチが統合され,gs7.07 は幅広いプラットフォームで利用されるようになりました。

しかし,残念ながら当時の最新版である AFPL Ghostscript に gs-cjk の成果物が取り込まれることはなく,GPL Ghostscript 8 以降は CJK への対応が不十分なままとなっています。 GPL Ghostscript 9 系となった現在でも,日本語の縦書き(括弧などが回転され,拗音・句読点などが適切にシフトされる)などを正しく扱うことができません。 このため,GNU Ghostscript 7.07 が「CJK に完全対応した最後の Ghostscript のバージョン」ということになっています。

その他

B列(B5判など)の出力については TeX の掲示板の qa:17129 以下に話題が出ています。 Ghostscript のB列は JIS ではなく ISO なのでサイズが微妙に違います。 たとえば JIS の B4 は “/jisb4” と定義されています (gs_statd.ps)。 LIPS のB列出力については qa:19792 をご覧ください。 gdevlips-2.4.0 のパッチ等の情報が竹野さんのページにあります。

dvips のサイズ指定については dvips を参照してください。

Mac OS X 10.3 では API レベルで PS → PDF 変換ができます。 “pstopdf” というコマンドも用意されています。 しかし日本語はフォントが埋め込まれていないといけないようです。 ←最新の状況はどうでしょうか

関連リンク

GNU Ghostscript 7.07 そのものが古いので全体的に古いリンクですが,いまでも一部は参考になるかもしれません。

TeX Forum / Q & A より

書いてある方法そのものを使うことはないでしょうが,Ghostscript のフォント取り扱いの仕組みが見えるので置いておきます。 CIDFnmap の設定でわからないことが起きた場合に参考になるかもしれません。


*1 上記の fonts ディレクトリには,実ファイルを入れる代わりにシンボリックリンクを置くことでも代用可能です。また,fonts ディレクトリ以外に存在するフォントの絶対パスを指定することもできますが,パスに非 ASCII 文字やスペースを含む場合はうまくいきません。
*2 ほかにも ESP Ghostscript という系統が,GPL Ghostscript に基づいて Easy Software Products によって配布されていました。これは ESP の Common Unix Printing System との互換性を改良するためにいくつかの修正を加えたもので,2007年3月14日にリリースされたバージョン 8.15.4 を最後に GPL Ghostscript に統合されています。

Last-modified: 2018-10-06 (土) 21:03:16 (11d)