USB メモリ活用講座
【最新 Ghostscript のポータブル化】

< 最終更新日: 2023-12-07 >

はじめに

Windows 10 でインストール作業を行なうには,管理者 (Administrator) 権限を持つユーザで作業を行うとよいでしょう.

ここでは USB メモリを PC に挿入したときに,認識されるドライブレターが (U:) であるものとし,このドライブのことを USB ドライブと呼びます.

今回は手動でファイルを展開 (解凍) する必要があります. 事前に W32TeX ポータブル化 でダウンロードした unzip.exePATH の通ったフォルダに入れておいてください.

準備が整ったら,角藤先生が配布してくださっている gs9533w32full-gpl.exe を次のサイトなどからローカルハードディスクの適切なフォルダ (C:\temp など) にダウンロードしましょう.

Ghostscript のローカル PC へのインストール

Ghostscript 9.53.3 の配布ファイルは実行形式 (.exe) です. このため,一旦ローカル PC にインストールして,必要なファイルを USB ドライブにコピーする方が確実です※1

  1. gs9533w32full-gpl.exe をダブルクリックすると,Ghostscript のインストーラが起動され,図1 の画面が表示されます. 英文の説明 (他のアプリケーションを閉じることを推奨することと,関連するシステムファイルが再起動不要でアップデートされるといったことが書いてあります) をざっと読んだら Next をクリックします.
    図1・Ghostscript のインストール(1)
    図1・Ghostscript のインストール(1)
  2. 図2 の GPL ライセンス契約文書が表示されるので内容を一読して,同意できるならば I agree をクリックします. 同意できなければ Ghostscript を利用することはできません.
    図2・Ghostscript のインストール(2)
    図2・Ghostscript のインストール(2)
  3. 図3のインストール先フォルダ指定画面が表示されます. デフォルトでは C:\Program Files\gs\gs9.53.3 などのようになっているはずですが,1 バイト文字の空白が含まれるパスは,他のアプリケーションから Ghostscript を呼び出すような場合に不具合が発生する可能性があるので変更することを推奨します. たとえば C:\gs\gs9.53.3 と変更すればよいでしょう. ここで,画面下部の Space required の後の数値は,Ghostscript をインストールするために必要なディスクのアキ容量 (43.0MB) を示しています. 設定および確認が済んだら Install をクリックします. なお,ここでインストール先として USB ドライブを指定すればよいのではないかと考える方もいると思います. しかし,Ghostscript のインストーラはスタートメニューにショートカットを登録したり,「プログラムと機能」にアンインストールのための情報を登録します. これらは USB ドライブを取り外すと無効となり,不具合が発生する可能性があるので,インストール先は必ずローカルドライブを指定しましょう.
    図3・Ghostscript のインストール(3)
    図3・Ghostscript のインストール(3)
  4. しばらく待つとインストール終了画面 (図4) が表示されます. 2 つのチェックボックスがありますが,Generate cidfmap for Windows CJK TrueType fonts は,日本語・中国語・韓国語の文字を表示するために TrueType フォントの設定を行うためにオン (チェック付き) にしておくことを推奨します (詳しくは cidfmap の生成 参照). もう一つの Show Readme にチェックを付けておくと,英文の HTML ファイルが開かれます (実体は C:\gs\gs9.53.3\doc\index.html です). チェックボックスのオン/オフを設定したら,Finish ボタンをクリックします.
    図4・Ghostscript のインストール(4)
    図4・Ghostscript のインストール(4)

ローカル PC で Ghostscript を利用する場合は,この後環境変数 PATH の最後に次の項目を追加します (先頭にパスの区切り文字としてのセミコロンがあることに注意してください).

;C:\gs\gs9.53.3\bin;C:\gs\gs9.53.3\lib

環境変数の設定法は OS によって異なりますので,OS 付属のヘルプファイルや Web の検索エンジンを利用して調べてみてください.

ローカル PC でも Ghostscript を活用するのであれば,SumatraPDF もインストールすることを推奨します (詳細は省略します).

Ghostscript のポータブル化

Ghostscript を USB ドライブにインストールします. USB メモリを PC に挿入したときに,認識されるドライブレターが (U:) であるものとし,このドライブのことを USB ドライブと呼びます.

  1. コマンドプロンプトを開き,USB ドライブの usr ディレクトリにカレントディレクトリを移動します.
    U:Enter
    cd \usr Enter
    
  2. ローカルにインストールした Ghostscript を USB ドライブにコピーします (インストール先が C:\gs\gs9.53.3 でない場合は適宜置き換えてください).
    xcopy C:\gs\*.* . /D /S Enter
    これで USB ドライブの \usrgs9.53.3 というフォルダがコピーされてきたはずです.
  3. ポータブル化に必要のないファイルを削除します.
    del gs9.53.3\gs9533w32full-gpl.diff Enter
    del gs9.53.3\uninstgs.exe Enter
    

クラスタサイズ 4096 バイト (4K バイト) でフォーマットされた USB ドライブで,この段階で U:\usr\gs9.53.3 のサイズは 43.7MB でした.

ローカル PC へのインストールにおいて Generate cidfmap for Windows CJK TrueType fonts (図4) にチェックを付けていれば,そのローカル PC の Windows システムフォルダとシステムフォントに合わせて適切な cidfmap が作成されているはずです. 厳密には USB ドライブを挿入して環境設定を行う (texenv.vbs を起動する) ときに cidfmap を再生成する必要があります. さもないと,他の PC で Windows システムフォルダやシステムフォントの構成が異なっていた場合に,和文フォント (Ryumin-LightGothicBBB-Medium) を使う PS/EPS ファイルの和文が表示されなくなります. たとえば Windows 10 ではデフォルトの Windows システムフォルダは C:\Windows ですが,異なるドライブやフォルダに Windows がインストールされている場合には不具合が発生する可能性があります. また,海外で現地の PC を利用する場合には MS 明朝MS ゴシックが無く,和文が表示できないという可能性もあります.

そこで,IPA フォントの利用に従って cidfmap の設定を行うことを推奨します (設定作業は次の動作確認が終わってからでもよいでしょう).

Ghostscript & SumatraPDF の動作確認

SumatraPDF のポータブル化が済んでいない方は,PS/EPS ビューアとしての SumatraPDF まで作業を進めてください.

それでは動作確認を行いましょう.

  1. エクスプローラなどから sumPDF.bat を起動します. SumatraPDF が起動しない場合は sumPDF.bat にタイプミスなどが無いか,Ghostscript のインストール先やバージョンの指定に誤りがないか確かめてください.
  2. SumatraPDF が起動されたら,ツールバーの 開く などから U:\usr\gs9.53.3\examples の中にある tiger.eps を開きます. おなじみの「虎」の絵が表示されれば,第 1 段階は成功です.
  3. 続いて,同様の操作で U:\usr\gs9.53.3\kanji の中にある article9.ps を開きます. 「日本国憲法第 9 条」の条文が縦書きで表示されれば,第 2 段階も成功です※3
  4. 最後に,コマンドプロンプトまたは Windows PowerShell を開いて,次のようにタイプします (sumPDF.batU:\bin ではないフォルダに保存している場合は適宜パス指定を変更してください).
    U:\bin\sumPDF.bat U:\usr\gs9.53.3\example\golfer.eps Enter
    女性のゴルファーのイラストが表示されれば成功です. このように sumPDF.bat では,開きたい PS/EPS ファイルをコマンドライン引数に与えることもできます.

このような確認作業は,ローカル PC に Ghostscript がインストールされていない環境でも行うことを強く推奨します. これを怠ると,肝心の場面で正常に動作してくれずに原因究明に手間取る可能性があります.

W32TeX 向けの設定と動作確認

TeX 文書で PostScript や EPS,PDF 形式の画像を扱う場合は,TeX 実行環境から Ghostscript を呼びだせるようにする必要があります. 具体的には,W32TeX のポータブル化のために作成した texenv.vbs を編集して,次のように書きかえればよいでしょう.

' TeX ポータブル環境設定 (Ghostscript 9.5.3対応)
Option Explicit
Dim objWshShell,objFS,objEnv
Dim strDrv,strTeXPath,strGSPath
Set objWshShell = WScript.CreateObject("WScript.Shell")
Set objFS = WScript.CreateObject("Scripting.FileSystemObject")
' カレントドライブを取得
strDrv = objFS.GetDriveName(WScript.ScriptFullName)
' usr\w32tex フォルダが存在するかをチェック
strTeXPath = strDrv & "\usr\w32tex"
If objFS.FolderExists(strTeXPath)=0 Then
    WScript.Echo strTeXPath & "が見つかりませんので終了します"
    WScript.Quit 0
End If
' Ghostscriptへのパス設定 (存在チェックは省略)
strGSPath = strDrv & "\usr\gs9.53.3"
' 環境変数 PATH の先頭に usr\w32tex\bin を追加
Set objEnv = objWshShell.Environment("Process")
objEnv.Item("PATH") = strDrv & "\bin;" _
  & strTeXPath & "\bin;" _
  & strGSPath & "\bin;" _
  & strGSPath & "\lib;" _
  & objEnv.Item("PATH")
' 環境変数GS_LIBを設定
objEnv.Item("GS_LIB") = strGSPath & "\Resource\Init;" _
  & strGSPath & "\Resource;" _
  & strGSPath & "\lib;" _
  & strGSPath & "\kanji;" _
  & strDrv & "\Resource\fonts"
' コマンドプロンプトウィンドウを開く
objWshShell.Run "%COMSPEC%"

texenv.vbs を実行するとコマンドプロンプトが開きます. そこで次のようなコマンドを実行してみましょう.

gswin32c U:\usr\gs9.53.3\example\tiger.eps Enter

Ghostscript Image というウィンドウが開き,見慣れた「虎」の絵が表示されれば成功です. このウィンドウを閉じると,コマンドプロンプトでは Ghostscript のインタプリタが起動されたままとなっているはずです. Enter を 1 度タイプし,quit Enter と入力することで抜け出すことができます.

【別解】SumatraPDF 起動スクリプト作成

バッチファイルがお好みでなければ,WSH スクリプトで SumatraPDF を起動することも可能です. (WSH について興味がある方は,こちら をご覧ください).

  1. テキストエディタで次のような WSH スクリプト sumPDF.vbs を作成し,PATH を通すフォルダ (U:\binなど) に保存します. なお,保存するときには文字コード (エンコード) をシフト JIS (Shift_JIS) にする必要があるようです.
    ' WSH で gs9.53.3 の環境変数を設定して SumatraPDF を直接起動
    Option Explicit
    Dim objWshShell,objFS,objEnv
    Dim strDrv,strGSPath,strExec,strArg
    Set objWshShell = WScript.CreateObject("WScript.Shell")
    Set objFS = WScript.CreateObject("Scripting.FileSystemObject")
    ' カレントドライブを取得
    strDrv = objFS.GetDriveName(WScript.ScriptFullName)
    ' Ghostscript フォルダが存在するかをチェック
    strGSPath = strDrv & "\usr\gs9.53.3"
    If objFS.FolderExists(strGSPath)=0 Then
        WScript.Echo strGSPath & "が見つかりませんので終了します"
        WScript.Quit 0
    End If
    ' SumatraPDF フォルダが存在するかをチェック
    strExec = strDrv & "\usr\SumatraPDF"
    If objFS.FolderExists(strExec)=0 Then
        WScript.Echo strExec & "が見つかりませんので終了します"
        WScript.Quit 0
    End If
    ' 環境変数PATHの設定
    Set objEnv = objWshShell.Environment("Process")
    objEnv.Item("PATH") = strGSPath & "\bin;" _
      & strGSPath & "\lib;" _
      & objEnv.Item("PATH")
    ' 環境変数GS_LIBを設定
    objEnv.Item("GS_LIB") = strGSPath & "\Resource\Init;" _
      & strGSPath & "\Resource;" _
      & strGSPath & "\lib;" _
      & strGSPath & "\kanji"
    ' 環境変数GS_OPTIONSを設定 (gs9.22以降非推奨だが必要に応じて-dWINKANJIを追加するとよい)
    objEnv.Item("GS_OPTIONS") = "-dSAFER"
    ' SumatraPDF を起動
    strExec = strExec & "\SumatraPDF-3.2-32.exe"
    For Each strArg In WScript.Arguments
      strExec = strExec & " " & strArg
    Next
    objWshShell.Run strExec
    WScript.Quit
    

では,動作確認です. sumPDF.vbs を起動してみてください. SumatraPDF が起動されたら,tiger.epsarticle9.ps などが無事開けるかを確認してください. うまくいったら,コマンドプロンプトウィンドウから,次のような起動法も試してみてください.

sumPDF.vbs \usr\gs9.53.3\examples\golfer.eps Enter

女性のゴルファーのイラストが表示されれば成功です. このように sumPDF.vbs では,開きたい PS/EPS ファイルをコマンドライン引数に与えることもできます.

IPA フォントの利用

IPA フォントについての詳細については,フォントインストーラー SAKURA の IPA フォントの項を参照してください. ここでは,IPAex 明朝と IPAex ゴシックが U:\usr\w32tex\share\texmf-dist\fonts\truetype\ipa にあるものとします※4

まず,sumPDF.bat をテキストエディタで編集し,環境変数 GS_LIB の設定 (5 行目) を次のように書き換え,上書き保存します:

set GS_LIB=%_GSPath%\Resource\Init;%_GSPath%\Resource;%_GSPath%\lib;%_GSPath%\kanji;%~d0\usr\w32tex\share\texmf-dist\fonts\truetype

WSH スクリプトをご利用の場合は, sumPDF.vbs をテキストエディタで編集し,環境変数 GS_LIB の設定 (26~30 行目) を次のように書き換え (下 2 行が変更部分),上書き保存します:

' 環境変数GS_LIBを設定
objEnv.Item("GS_LIB") = strGSPath & "\Resource\Init;" _
  & strGSPath & "\Resource;" _
  & strGSPath & "\lib;" _
  & strGSPath & "\kanji;"
  & strDrv & "\usr\w32tex\share\texmf-dist\fonts\truetype"

次に U:\usr\gs9.53.3\lib にある cidfmap をテキストエディタで編集します. 既存の記述をすべて削除して,次のように書けばよいでしょう (既存の cidfmapcidfmap.win のような別名にコピーしてから編集すると安心でしょう).

% Aliases
/Ryumin-Light /IPAMincho ;
/GothicBBB-Medium /IPAGothic ;
/HeiseiKakuGo-W5 /IPAMincho ;
/HeiseiMin-W3 /IPAMincho ;
/Ryumin-Medium /IPAMincho ;
%
%%% IPA Fonts
/IPAMincho  << /FileType /TrueType  /CSI [(Japan1) 6]  /Path (ipa/ipaexm.ttf) >> ;
/IPAGothic  << /FileType /TrueType  /CSI [(Japan1) 6]  /Path (ipa/ipaexg.ttf) >> ;

ちなみに,IPA フォントは Ver.1 は TrueType Font,Ver.2 は OpenType Font,Ver.3 は TrueType Font にファイル形式が変更されています. cidfmap の最後の 2 行は,実際に使うフォントに合わせてパスや拡張子を設定してください.

和文の縦書き文書で,文字の位置がズレていたり正しい文字が表示されていないと感じる場合は,sumPDF.batsumPDF.vbs を編集し,-dWINKANJI を有効にしてみてください※3

Ghostscript の設定法や利用法,cidfmap の記述例については TeX Wiki>Ghostscript で詳しく解説されています. また,英文ですが U:\usr\gs9.53.3\doc にある HTML ファイル群にも詳細な説明があります (index.htmlUse.htm から読み始めるとよいでしょう). ここの説明で不十分と感じる方は,ぜひ参照してください.

【参考】cidfmap の生成

Ghostscript のオンラインドキュメントの一つである U:\usr\gs9.53.3\doc\Use.htm"8.4 CID font substitution" (英文) に目を通すと,Ghostscript のインストール終了画面 (図4) の Generate cidfmap for Windows CJK TrueType fonts をチェックした場合に次のようなコマンドが実行されると説明されています (U:\usr\gs9.53.3\lib をカレントディレクトリとして実行するものとします):

..\bin\gswin32c -q -dBATCH -sFONTDIR=c:/windows/fonts -sCIDFMAP=cidfmap mkcidfm.ps Enter

しかし,このコマンドをそのまま実行しても次のようなエラーメッセージが表示され,うまくいきません:

Error: /invaildfileaccess in --file--
Operand stack:
  cidfmap  (U:/usr/gs9.53.3/lib/cidfmap)   (w)

これは U:\usr\gs9.53.3\doc\History9.htm (英文) によれば,Ghostscript 9.50 以降ではデフォルトでファイルアクセス制御が有効となったことが原因であるようです. このエラーを回避して cidfmap を生成するには NOSAGER オプションを追加してファイルアクセス制御を無効にする必要があるようです:

..\bin\gswin32c -q -dNOSAFER -dBATCH -sFONTDIR=c:/windows/fonts -sCIDFMAP=cidfmap mkcidfm.ps Enter