top page > TeX Live > here

FreeBSD における TeX Live 2021 の導入


概要

対象は次のようなものです.

  1. FreeBSD 12.3, 13.0, 13.1
  2. ports は 2022.2.20 付のもの.
  3. TeX Live は 2021.3.25 付のもの.

内容は次のようなものです.

  1. ports/packages として導入するのものを列挙する.
  2. フォントに関して迷った (現在進行形で迷っている) 記録を残す.

目次

1. はじめに
2. IPA フォントを使い続ける
2.1 psfonts.map
2.2 cidfmap
3. 原ノ味フォントに切り換える
3.1 cjk-gs-integrate
3.2 kanji-config-updmap-sys
4. xdvi
5. dvipdfm

1. はじめに

TeX に関連する ports として直接導入したのは以下の二つです.

texlive-20210325-texmf.tar.xz が巨大なファイルなので,download に数時間を要しました. (この時間は通信環境によりますが.) make する際にはこの点にも注意が必要です.

6 年 (数え方によっては 7 年) ぶりの変更になります. 少しづつ試用を始めているので,迷ったことなどを速報的に書いていこうと思います. 今のところ,再設定が必要なのはフォントに関することだけです.

今回の TeX Live の更新において,dvipsdvipdfmx の日本語フォント埋込の default が IPAex フォントから原ノ味フォントに変更されました. その一方で,xdvighostscript は default では旧来どおり IPA フォントを使う設定になっています.

実際に dvips で dvi から PostScript に変換してみると,フォントの部分が次のように変わっています.

- %%DocumentFonts: Ryumin-Light-H CMR10 CMSY10 CMTT10 CMMI10
+ %%DocumentFonts: HaranoAjiMincho-Regular-2004-H CMR10 CMSY10 CMTT10

このファイルを gv で表示すると,日本語の部分が文字化けします. これは,ghostscript の側が原ノ味フォントに対応するように設定されていないからです.

この問題に対処する前に,どちらのフォントを使うのかを決断しなければなりません.[1][2][3]

  1. IPAex フォントを使い続ける.(2 節)
    • 自前の psfonts.map により dvips を制御する.(2.1 節)
    • ghostscript 側で HaranoAji* も IPAex で出力するように設定する.(2.2 節)
  2. 原ノ味フォントに乗り換える.(3 節)
    • cjk-gs-integrate を使って ghostscript が原ノ味フォントに対応するように変更する. (3.1 節)
    • kanji-config-updmap-sys により dvips を制御する. このやり方はうまく行きませんでした.(3.2 節)

[1] 1 台の PC の中で二つのフォントを併用するという選択はしない方が良いでしょう. 各々の環境を別の PC で保持した方が無難だと思います.

[2] 求める文書ファイルが PostScript なのか PDF なのかでも結論は変わりそうです.

[3] 長い目でみたら,原ノ味フォントに乗り換えるのが楽だと思います. なのでこれは,当面どうするかの決断です.

2. IPA フォントを使い続ける.

2.1  psfonts.map

dvips が出力する PostScript の日本語フォントは,/usr/local/share/texmf-dist/fonts/map/dvips/updmap/psfonts.map により次のように設定されています.

% ptex-haranoaji-04.map
gbm HaranoAjiGothic-Medium-2004-H
gbmv HaranoAjiGothic-Medium-2004-V
rml HaranoAjiMincho-Regular-2004-H
rmlv HaranoAjiMincho-Regular-2004-V

~/texmf/fonts/map/dvips/updmap/ に以下の内容で psfonts.map という名のファイルを作ることで,上記のものよりも優先して設定されます.[1]

rml      Ryumin-Light-H
rmlv     Ryumin-Light-V
gbm      GothicBBB-Medium-H
gbmv     GothicBBB-Medium-V

[1] TeX Live 2015 の /usr/local/share/texmf-dist/fonts/map/dvips/updmap/psfonts.map もこのようになっています.

2.2  cidmap

/usr/local/share/ghostscript/9.52/Resource/Init/cidfmap に以下の内容を書き加えます.

/HaranoAjiMincho-Regular-2004  /Ryumin-Light ;
/HaranoAjiGothic-Medium-2004   /GothicBBB-Medium ;

3. 原ノ味フォントに切り換える

3.1  cjk-gs-integrate

必要な物はすべて texlive-full に入っているので,新たに何かを download する必要はありません.

次のようにすれば,ghostscript が原ノ味フォントに対応するようになります.[1]

# cd /usr/local/share/ghostscript/9.52/Resource
# cp -pR Font Font.orig   ← 必須ではありませんが,元に戻せるように保存しておきます.[2]

# cd /usr/local/share/texmf-dist/scripts/cjk-gs-integrate
# cjk-gs-integrate --link-texmf --force
cjk-gs-integrate: reading font database ...
cjk-gs-integrate: checking for files ...
cjk-gs-integrate: searching for Ghostscript resource
cjk-gs-integrate: output is going to /usr/local/share/ghostscript/9.52/Resource
cjk-gs-integrate: generating links and snippets for CID fonts ...
cjk-gs-integrate: generating links, snippets and cidfmap.local for non-CID fonts ...
cjk-gs-integrate: adding cidfmap.local to cidfmap file ...
cjk-gs-integrate: generating snippets and cidfmap.aliases for font aliases ...
cjk-gs-integrate: adding cidfmap.aliases to cidfmap file ...
cjk-gs-integrate: running mktexlsr ...
mktexlsr: Updating /usr/local/share/texmf-config/ls-R...
mktexlsr: Updating /usr/local/share/texmf-dist/ls-R...
mktexlsr: Updating /usr/local/share/texmf-local/ls-R...
mktexlsr: Updating /usr/local/share/texmf-var/ls-R...
mktexlsr: Done.
cjk-gs-integrate: finished

また,/usr/local/share/ghostscript/9.52/Resource/Init/cidfmap を次のように変更します. (IPA font の読み込みを止めます.)

--- cidfmap.orig        2022-03-08 17:48:12.574447000 +0900
+++ cidfmap     2022-03-08 17:50:28.928388000 +0900
@@ -37,8 +37,8 @@
 %   /ShinGo-Bold   /HeiseiKakuGo-W5 ;
 %   /Ryumin-Medium << /FileType /TrueType /Path (H:/AuxFiles/Fonts/BATANG.TTC) /SubfontID 3 /CSI [(Japan1) 2] >> ;
 %   /Ryumin-Medium << /FileType /TrueType /Path (windir) getenv not {(c:/windows)}if (/Fonts/BATANG.TTC)concatstrings /SubfontID 3 /CSI [(Japan1) 2] >> ;
-/Ryumin-Light << /FileType /TrueType /Path (std.ja_JP/Ryumin-Light) /SubfontID 0 /CSI [(Japan1) 6] >> ;
-/GothicBBB-Medium << /FileType /TrueType /Path (std.ja_JP/GothicBBB-Medium) /SubfontID 0 /CSI [(Japan1) 6] >> ;
+%/Ryumin-Light << /FileType /TrueType /Path (std.ja_JP/Ryumin-Light) /SubfontID 0 /CSI [(Japan1) 6] >> ;
+%/GothicBBB-Medium << /FileType /TrueType /Path (std.ja_JP/GothicBBB-Medium) /SubfontID 0 /CSI [(Japan1) 6] >> ;

 /Ryumin-Medium         /Ryumin-Light ;
 /Ryumin-Regular                /Ryumin-Light ;

これは,この変更を施した後は IPAex もそれ以外の TrueType フォントも読み込めなくなるためです. (当然,cidfmap.aliases は消した状態で試しました.) gv で表示しようとすると,文字化けでなくフォントの読み込み (と思われる) 段階でエラーが出ます.

Error /typecheck in /findfont ...

既存の Ryumin-Light-H, /GothicBBB-Medium などと書かれた PostScript も原ノ味フォントで表示するために,/usr/local/share/ghostscript/9.52/Resource/Init/cidfmap.aliases を次のように変更します. (太さはお好みで設定して下さい.)

--- cidfmap.aliases.orig        2022-03-08 17:39:56.157786000 +0900
+++ cidfmap.aliases     2022-03-08 17:47:33.726592000 +0900
@@ -27,7 +27,8 @@
 /MidashiGoPro-MB31 /HaranoAjiGothic-Bold ;
 /MidashiMin-MA31 /HaranoAjiMincho-SemiBold ;
 /MidashiMinPro-MA31 /HaranoAjiMincho-SemiBold ;
-/Ryumin-Light /HaranoAjiMincho-Light ;
+/Ryumin-Light /HaranoAjiMincho-Regular ;        ← 既に設定されていますが,太さを変えました.
+/GothicBBB-Medium   /HaranoAjiGothic-Regular ;  ← これを追加します.
 /RyuminPro-Light /HaranoAjiMincho-Light ;
 /HeiseiMin-W3 /Ryumin-Light ;
 /HeiseiKakuGo-W5 /GothicBBB-Medium ;

[1] 2022.3.8 時点で,ports の ghostscript が version 9.55 になっています.
  2022.5.9 時点で,ports の ghostscript が version 9.56.1 になっています.
  これらの version になっても上記の操作は必要です. directory 名を適宜読み替えて対処してください.

[2] ports/packages の機能を使って ghostscript を消して入れ直せば元に戻せます. ただし,pkg-plist にないファイルは消してくれませんし,空になっていない directory は消してくれません. そこは手作業で対処しなければなりません.

3.2  kanji-config-updmap-sys

私の使い方が間違っているのかもしれませんが,うまく行きませんでした.

# kanji-config-updmap-sys --ja status
CURRENT family for ja: noEmbed (variant: <empty>)
Standby family : haranoaji    ← 優先順位から,これが選ばれる
Standby family : ipa
Standby family : ipaex

次のようにすれば,見掛け上は IPAex フォントになります. 実行するのは最後まで読んでからにして下さい.

# kanji-config-updmap-sys --ja ipaex

(中略)

Files generated:
  /usr/local/share/texmf-var/fonts/map/dvips/updmap:
       15782 2022-02-22 13:22:12 builtin35.map
       21255 2022-02-22 13:22:12 download35.map
       21255 2022-02-22 13:22:12 psfonts_pk.map
       21255 2022-02-22 13:22:12 psfonts_t1.map
       21250 2022-02-22 13:22:12 ps2pk.map
          14 2022-02-22 13:22:12 psfonts.map -> psfonts_t1.map
  /usr/local/share/texmf-var/fonts/map/pdftex/updmap:
       21257 2022-02-22 13:22:12 pdftex_dl14.map
       19592 2022-02-22 13:22:12 pdftex_ndl14.map
          15 2022-02-22 13:22:12 pdftex.map -> pdftex_dl14.map
  /usr/local/share/texmf-var/fonts/map/dvipdfmx/updmap:
         305 2022-02-22 13:22:12 kanjix.map

ただし,更新される psfonts.map (実体は psfonts_t1.map) には rml 等はありません. (dvips の実行中に「rml がないよ!」と言われてしまいます.) それ以外にも texmf-dist にあるオリジナルのものに比べて「いろいろ足りない」ものになってしまいます.[1][2]

さらに困ったことに

# kanji-config-updmap-sys --ja nofont

などとしても元の状態には戻せません.[3] すなわち,psfonts.map が不完全なままです. この場合,

/usr/local/share/texmf-var/fonts/map/dvips/updmap/*
                                     dvipdfmx/updmap/*
                                     pdftex/updmap/*
/usr/local/share/texmf-var/web2c/updmap.log
/usr/local/share/texmf-config/web2c/updmap.cfg

を消して

# cd /usr/local/share/texmf-var
# mktexlsr .
# cd /usr/local/share/texmf-config
# mktexlsr .

とすれば元の状態に戻せます.

[1] psfonts.map として texmf-dist にあるオリジナルのものに対して 2.1 節に述べた部分だけが変更されたものを生成して欲しいです.

[2] dvips にとっては残念な結果ですが,pdftexdvipdfmx にとっては必要な操作なのかもしれません.

[3] マニュアルの読み込みが足らないだけで kanji-config-updmap-sys を使って元に戻す方法はあるのかもしれません.

4. xdvi

xdvi (print/tex-xdvik) 22.87_4 は,default では IPA フォントで表示します.

フォントを規定しているのは /usr/local/share/texmf-dist/fonts/map/xdvi/xdvi-ptex.map のこの部分です.

% IPA font (http://ossipedia.ipa.go.jp/ipafont/)
rml        JIS-H        ipam.ttf
rmlv       JIS-V        ipam.ttf
gbm        JIS-H        ipag.ttf
gbmv       JIS-V        ipag.ttf

~/texmf/fonts/map/xdvi/xdvi-ptex.map にて以下のように指定すれば原ノ味フォントになります.

gbm        JIS-H        HaranoAjiGothic-Medium.otf
gbmv       JIS-V        HaranoAjiGothic-Medium.otf
rml        JIS-H        HaranoAjiMincho-Regular.otf
rmlv       JIS-V        HaranoAjiMincho-Regular.otf

参考までに,これらのフォントの実体は以下のところにあります.

/usr/local/share/texmf-dist/fonts/opentype/public/haranoaji/
/usr/local/share/texmf-dist/fonts/opentype/public/haranoaji-extra/

(2022.6.3) 2022.3.18 から xdvi が 22.87.06 になり,日本語の表示ができなくなってしまいました. /usr/local/share/texmf-dist/fonts/map/xdvi/ 自体がなくなりました. 手作業で xdvi/xdvi-ptex.map を復活させても改善されません.
  pkg-descrpkg info tex-xdvik には以下のようにあります.

This package includes pTeX support.  A fontmap file for xdvi is installed as
TEXMFDIST/fonts/map/xdvi/xdvi-ptex.map.

これが install もされないし,効かなくなっているのです. (この部分は FreeBSD 独自の patch に依るものです.) 22.87.06 になって設定法が変わったのかのかもしれません. 進展があればここに追記します.

なお,現在の ports tree に xdvi 22.87_4 用の print/tex-xdvik を持ってくれば make install することができ,以前の状態に戻せます.

(2022.6.22) 上記の変更に伴い japanese/ja-tex-xdvik が新設されておりました. version は 22.87 です. こちらを使えば問題ありません. 既存の print/tex-xdvik とは conflict するので,そちらは消しておく必要があります.

ただし,このやり方だと pkg check に引っ掛かります.

# pkg check -d
以下,関連部分を抜粋
texlive-full has a missing dependency: tex-xdvik  ← これはその通りです.

>>> Missing package dependencies were detected.
>>> Found 1 issue(s) in the package database.

Installed packages to be REMOVED:
        bison: 3.8.2,1  ← これは本来,問題ありません.

New packages to be INSTALLED:
        tex-xdvik: 22.87.06

Installed packages to be DOWNGRADED:
        libarchive: 3.6.1,1 -q> 3.6.0,1  ← これは本来,問題ありません.

副作用だと思いますが,正しく install されている ports のいくつかが,「消せ」とか「古いものに置き換えろ」と言われます. これは check の機能が正しく動作していないだけで,動作に影響はありません.

なぜか,これらを ports でなく packages を用いて導入した場合には,pkg check に引っ掛かりません.

5. dvipdfm

dvipdfm は,default では原ノ味フォントを使うように設定されています. (どこでどう設定しているのかとか,変更することができるのか等は,そのうち調べます.)

% dvipdfm a.dvi
a.dvi -> a.pdf
[1]
36484 bytes written

生成された a.pdf のフォントとして何が使われているのかは,次のようにして確認ます. (pdffontsgraphics/xpdf の一部です.)

% pdffonts a.pdf
name                                 type              encoding         emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
PCSOKM+HaranoAjiMincho-Regular-Identity-H CID Type 0C       Identity-H       yes yes no       4  0
JVEGFQ+CMR10                         Type 1C           Builtin          yes yes yes      6  0