(しばらく工事中。結論が出るまで真似は勧めません。)
MacPorts で Ghostscript をインストールしているが、 アップデートして Ghostscript のバージョンが変わると、 ファイルのパス名 (バージョン番号が含まれている) が変わるので、 日本語のための設定を直さないといけない (年に2,3回、使っている全ての Mac で)。 これ、なんとかならないかなあ。
…というのが悩み (軽いけれど、 アップデートのたびに煩わされるので、トータルでは結構時間を食っている) なのだけれど、 そもそも MacPorts の Ghostscript を使うのが面倒の種なのかもしれない、 と考えるようになった。 MacTeX を使っているので TeX Live は入っていて、そちらに Ghostscript があり、 それは日本語もうまく使えるように管理されている(大変素晴らしい)。 二重生活をやめればすっきりするのではないか。
復習をしておく。
復習 (1) MacTeX (TeX Live) の ghostscript (/usr/local/bin/gs) で、日本語が HaranoAji フォントを用いて表示できるようにする |
4つのパッケージをインストールして、cjk-gs-integrate を走らせて設定する。
(途中で gs を呼ぶが、
間違えたものを呼ぶと X11 のウィンドウが現れてハングアップする。
PATH を見直すこと。)
curl -fsSL https://www.preining.info/rsa.asc | sudo tlmgr key add - sudo tlmgr repository add http://contrib.texlive.info/current tlcontrib sudo tlmgr pinning add tlcontrib '*' sudo tlmgr install japanese-otf-nonfree ptex-fontmaps-macos cjk-gs-integrate-macos sudo cjk-gs-integrate --link-texmf --cleanup --force sudo cjk-gs-integrate-macos --link-texmf --fontdef-add=cjkgs-macos-highsierra.dat --force sudo mktexlsr以上は MacTeX の設定でいつもやっていることである -- 「MacTeX 2025が来た」 日本語フォントの選択については、 「MacTeX 2020」 を見よ (kanji-config-updmap-sys コマンドを使う )。 |
復習 (2) MacPorts の ghostscript (/opt/local/bin/gs) で、日本語表示ができるように設定する |
過去の経緯
(古いMacでHiragino残してあればそれを使おうと試すとか -- 個人的趣味。
もう古いMacあまりないし。)
からぐちゃぐちゃやっている。一般向きではない。
curl -O https://m-katsurada.sakura.ne.jp/misc/20250316/README curl -O https://m-katsurada.sakura.ne.jp/misc/20250921/conf-gs.sh chmod +x conf-gs.sh ./conf-gs.shどんなことをやっているか参考になるのは、ちょっと古いけれど 「私の Ghostscript の設定 (Hiraginoフォント)」 |
私は最近は、PostScriptデータを見るときに gv くらいしか使っていない。 これは内部で gs (ghostscript) を呼んでいるのだが、 gs だけ TeX Live のもの (/usr/local/bin/gs) を呼ぶようにしてみたら、 問題なく表示された。
失敗の記録: PATHの先頭に置く gs |
#!/bin/sh exec /usr/local/bin/gs "$@" |
(追記) これは実はダメだ。 /opt/local/bin/gs は /opt/local/bin/gsc へのリンクであるが、 /usr/local/bin/gs は /usr/local/bin/gs-X11 へのリンクである。 そのためか cjk-gs-integrate が正常に実行できなくなる (途中で gs-X11 が起動されてハングアップする)。 gv で呼び出す ghostscript を指定するには、 ~/.gv というファイルに GV.gsCommand: /usr/local/bin/gs と書くと良い、 ~/.Xresources や ~/.Xdefaults でも出来る、 というのを教わった。そうなの?あれ、これは新しい gv では使えない? あるいは次のようにする。
修正版 PATH の先頭におく gs |
#!/bin/sh # もし X11 デバイスが指定されていたら、そのときだけ gs-X11 に逃がす case " $* " in *"-sDEVICE=x11"*|*"-sDEVICE=x11alpha"*|*"-sDEVICE=x11cmyk"*) exec /usr/local/bin/gs-X11 "$@" ;; *) # 通常はヘッドレスの gsc あるいは gs-noX11 を使う(最も安定) exec /usr/local/bin/gs-noX11 "$@" ;; esac |
(gsc と gs-noX11 の仕様は?? この辺はよく分からないで試行錯誤したけれど、 段々状況がわかって来たので、そのうちすっきり説明できるようになるかも。)
MacPorts で sudo port install gv とすると、 依存関係で ghostscript がインストールされてしまう。 その辺を解決すると良いのかな?と考えて、そういう旨、ChatGPT に相談してみた。
こうすれば gv が MacPorts の ghostscript に依存しないようにできる、 という回答を得た。 実はやってもあまり意味がない気もするが、後々参考になりそうなので記録しておく。
sudo mkdir -p /opt/local/var/macports/sources/local sudo chown -R $(whoami) /opt/local/var/macports/sources/local |
file:///opt/local/var/macports/sources/local |
sources.conf というファイルのバックアップを取ろうと考えたら、 sources.conf.default というファイルがあることを見つけた。 至れり尽くせりですね。
mkdir -p /opt/local/var/macports/sources/local/graphics/gv cd /opt/local/var/macports/sources/local/graphics/gv port edit gv |
#depends_run-append path:bin/gs:ghostscript |
sudo mkdir -p /opt/local/var/macports/sources/local/graphics/gv cd /opt/local/var/macports/sources/local/graphics/gv sudo port edit gv |
cd /opt/local/var/macports/sources/local portindex |
sudo port install gv |
すいすいできた。ChatGPT って物知りだな。
これで ghostscript をアンインストールすれば良いかな?と思ったが、 やろうとすると
Note: It is not recommended to uninstall/deactivate a port that has dependents as it breaks the dependents. The following ports will break: gv @3.7.4_6 ImageMagick @6.9.13-21_0 groff @1.23.0_0 libspectre @0.2.12_4 Uninstall ghostscript anyway? [y/N]: |
port rdependents ghostscript |
…もし MacPorts の ghostscript を使わずにすむならば、 ストレージの消費も抑えられて気持ちが良いが、 今回の試みの発端は、MacPorts の ghostscript が更新されるたびに、 日本語関係の設定を調整する手間を無くしたい、ということだったので、 単に MacPorts の ghostscript には手を出さない、で十分なのかもしれない。
ImageMagick や gnuplot 関係で、もし日本語の文字化けが生じたら (何らかの経路で MacPorts の ghostscript が呼ばれたら)、 そのときまた考えることにしよう。
… あ、LaTeX2HTML の中で ghostscript を呼んでいるんだな。 それも置き換えないといけないのか。 これは /usr/local/bin/pstoimg というシェル・スクリプトを調整するだけなので、何とかなるだろう。
my $GS = '/opt/local/bin/gs -dNOSAFER'; |
ImageMagick で何が gs を使っているのかな? 私の使い方だと convert 以外に何かある?この問題は結構長引きそうだ。 少しずつ依存を減らしていって…かな。
MacPorts に ghostscript を日本語対応させる port があればいいのかも、 とも考える。
MacPorts の ghostscript で日本語を扱えるためにどうすれば良いか、 改めてチェックする。
pTeX に必要な、 2004-H, 2004-V が MacPorts に存在しない。 私の場合は TeX Live を入れてあるので、 /usr/local/texlive/2025/texmf-dist/fonts/cmap/ptex-fontmaps/ に見つかった。この2つのファイルを /opt/local/share/ghostscript/10.06.0/Resource/CMap/ にコピーするか、リンクを張れば良い。これは簡単だ。
それから、 /opt/local/share/ghostscript/10.06.0/Resource/CIDFont/ に日本語フォント関係のファイルがなかった。 (/opt/local/share/ghostscript/10.06.0/Resource/CIDFSubst に ipaex 関係のファイルも見えないな。何でだろう。) HaranoAji フォントを使うには、 /usr/local/texlive/2025/texmf-dist/fonts/opentype/public/{haranoaji,haranoaji-extra} にあるファイルへのリンクをはれば良い。
cd /opt/local/share/ghostscript/10.06.0/Resource/CIDFont sudo ln -s /usr/local/texlive/2025/texmf-dist/fonts/opentype/public/haranoaji/* . sudo ln -s /usr/local/texlive/2025/texmf-dist/fonts/opentype/public/haranoaji-extra/* . |
これだけやったら、TeX で
uplatex なんとか.tex dvips -f なんとか.dvi > なんとか.ps |
ところで、 私は TEX 以外に a2ps-j というソフト (テキスト・ファイルを PostScript に変換する) を使っていて、その出力が正常に表示できなくなっていた。
a2ps-j で、 Ryumin-Ligh-H, GothicBBB-Medium-H という大昔よく利用されたフォントを使うようになっているせい。 a2ps-j の方を書き換えるのが良いのかもしれないが、 ある時期、色々なソフトの設定をいじるのが面倒に感じたため、 Ryumin-Ligh-H, GothicBBB-Medium-H をでっちあげる対応をした。 /opt/local/share/ghostscript/10.06.0/Resource/Font/{Ryumin-Light-H,GothicBBB-Medium-H} というのを用意した。 短いので以下に示す (やっていることは安直で HaranoAji フォントで代用している)。
Ryumin-Light-H |
%!PS-Adobe-3.0 Resource-Font %%DocumentNeededResources: H (CMap) %%IncludeResource: H (CMap) %%BeginResource: Font (Ryumin-Light-H) (Ryumin-Light-H) (H) /CMap findresource [(HaranoAjiMincho-Regular) /CIDFont findresource] composefont pop %%EndResource %%EOF |
GothicBBB-Medium-H |
%!PS-Adobe-3.0 Resource-Font %%DocumentNeededResources: H (CMap) %%IncludeResource: H (CMap) %%BeginResource: Font (GothicBBB-Medium-H) (GothicBBB-Medium-H) (H) /CMap findresource [(HaranoAjiGothic-Regular) /CIDFont findresource] composefont pop %%EndResource %%EOF |
2025/9/20 とりあえずのまとめ |
なるべく TeX Live の gs を使うようにする
(それで日本語関係の設定を一々直さずに済む)。
PATH の先頭付近に、 X11 が必要ならば /usr/local/bin/gs-X11 を、そうでないならば /usr/local/bin/gs-noX11 を呼び出すような、 ラッパー (上で示した) を置く。 latex2html については、 /usr/local/bin/pstoimg で my $GS = '/usr/local/bin/gs -dNOSAFER'; と指定する。 以上で、原則として /usr/local/bin/ にある TeX Live に含まれる ghostscript を使うことになるはず、と思っている。 MacPorts のアップデートで MacPorts の ghostscript で、 日本語関係の文字化けが生じたときに、何かおかしなことが起こるか。 |
ImageMagick で gs を使うというと、convert が思い浮かぶ。 これだけならば PATH の先頭付近のディレクトリィに、 次のスクリプトをおけば良いかな。
convert |
#!/bin/sh GS_EXECUTABLE=/usr/local/bin/gs /opt/local/bin/convert "$@" |
gv について、MacPorts のやっかいにはならない、という考え方もある。
curl -O https://ftp.gnu.org/gnu/gv/gv-3.7.4.tar.gz tar xzf gv-3.7.4.tar.gz cd gv-3.7.4 ./configure --enable-SIGCHLD-fallback make sudo make install |
休暇の1日弱を使ってしまった…アホらしいような気もするが、 次からは楽になるはず、と思うことにする。
PostScript は少なくとも主役の座は PDF に譲って、 段々不便になって退潮の道を進みつつあるのは確かなのだと考えている。 macOS でもサポートされなくなったし (以前は PDF への変換くらいはやってくれていた、 日本語未対応といういい加減な扱いではあったけれど)。 でも今のところ使えるようにしておくべき、なのだよね。多分。 (それに依存しているものがとても多いから。) そうだとすると、 PostScript を扱える Ghostscript は貴重な存在である。 (初めて噂を聞いたのは、はるか昔だけれど、 そんな便利なものがフリーで使えるようになるなんて信じられなかった。) しかしフリーであるせいで、色々な配布があって、混乱が生じるわけね。 日本語フォントがからむと、面倒が大きくなる (各配布ごとに設定をするなんて…)。 一番便利に使えそうなものを選んで、なるべくそれに寄せる、 とするのが現実的に有効な対応かと考える。
桂田 祐史