色々フォントが欲しくてMORISAWA PASSPORT購入しました。 高いモリサワ税の元を取るために、TeXでも使えるようにします。
単にフォントを使えるようにするだけでなく、オールドがなとの混植や、 繋がらないヒラギノのダッシュを繋げるような設定も試みます。
この試みは、2020年秋、japanese-otf-uplatex が v0.25 の頃に始めたので、 v0.26 の内容は反映されてません。途中でv0.26用に解析をやり直す気力はあ りませんでした。最悪TeX Live にv0.26が降りてきたら、動かなくなる可能性 があります。
cygwinを使いますので、cygwinをインストールしておいてください。 cygwinではperlも使えるようにしておきましょう。 Tera Termもインストールしてあると、cyglaunchがあるので便利です。
適当なフォルダを作り、otfパッケージを展開してください。 同じフォルダに、japanese-otf-uplatexを展開してください。
同じフォルダに、japanese-otf-mori-pasを展開してください。
japanese-otf-mori-pas-20201213.zip
インストーラの使い方はモリサワの説明書読んでください。 読まなくても使えると思いますが。
過去の互換性も兼ねて、基本7書体パックと同じフォント(Pro)と、そのPr6, Pr6Nをインストールします。リュウミンL-KL、太ミンA101、見出ミンMA31、 中ゴシックBBB、太ゴB101、見出ゴMB31です。残念ながら、じゅん101のPr6, Pr6Nはありません。
そして、リュウミン、新ゴ、新丸ゴ、リュウミンKO、 ヒラギノ明朝、ヒラギノ角ゴ、ヒラギノ丸ゴ、游築五号仮名、TB古印体の 全ウェイトをインストールします。
モリサワは全部Pr6N(Adobe-Japan1-6)があるから楽ですが、ヒラギノは Std(Adobe-Japan1-3)やPro(Adobe-Japan1-5)が混じっているので、面倒です。
フォントは C:\Windows\Fonts
フォルダにインストールされます
が、そのままではTeXで使えません。TeX用のフォルダにファイルがある必要が
あります。コピーはできないので、シンボリックリンクを貼ることになります。
何十というフォントのシンボリックリンクちまちま貼りたくないので、 スクリプトで一気に貼ります。
WindowsなのでBATやPowerShellを使うのが素直なんでしょうが、 筆者はPowerShellをよく知らないので、bashで組みます。
モリサワのフォントは、ファイル名がアルファベットで、空白も無いので楽です。 ワイルドカードで一気に回せます。
ヒラギノはファイル名が日本語だし、空白もあるのでとても面倒です。 シンボリックリンク元のファイル名と、シンボリックリンク先のファイル名の 一覧表を作り、貼っていきます。
モリサワの書体一覧、fontname_202002.xlsxでの PostScript名、file名をコピペしていき、最後はcsvで保存し直します。
まず、cyglaunchを管理者権限で立ち上げます。そこで、
$ ./morisawa-slink-01.sh
$ ./hiragino-slink-01.sh hiragino-list-200924.csv
と実行してください。
その後、
$ kanji-config-updmap-sys --ja morisawa-pr6n
としておくと、
リュウミンL-KL、太ミンA101、中ゴシックBBB、太ゴB101、見出ゴMB31、 新丸ゴLが普通のotfパッケージの設定で使えます。
多書体を使えるようにするだけなら、make-mori-pas-02.sh を実行するだけで 良いですが、何をやってるかの解説をします。 otfパッケージや、japanese-otf-uplatexパッケージの改造です。
otfパッケージは、hmc/l, hmc/m, hmc/bx, hgt/m, hgt/bx, hgt/eb, mg/m の 7書体が使えるように設計されています。7書体限定で、さらに増やすようには 作られていません。
scriptフォルダにあるスクリプトは、CID指定用やUTF指定用のtfmやvf等を出 力しますが、7書体分の設定をハードコーディングしています。
それを、フェイス名を引数に取り、引数分の設定を生成する様に改造しました。 なお、日本語限定の為、中国語や韓国語設定はコメントアウトしています。
通常のumkjvfに色々なオプションを加えています。
リュウミン等ならダッシュが繋がりますが、ヒラギノだと繋がりません。繋げ るためにダッシュを3つ使って繋げるマクロを作る方法が提案されてますが、 面倒だし、コピペするとダッシュが3つになるし、どのフォントを使うかでマ クロを仕込むかどうかを分けなければならず、互換性が薄れます。なのでVF設 定で繋げます。ダッシュを罫線に置換する方法と、ダッシュを拡大する方法が 使えます。
「で」の形は、写研の石井細明朝体 オールドスタイル大がな LM-OKLっぽくす る為の設定ですが、今では電撃文庫もリュウミンオールドがなになったし、も う良いかなと。互換性のために残していますが、筆者以外に使ってた人いるん でしょうか? そもそも写研のオープン化どうなったんでしょうね……
ヒラギノのカギ括弧・二重カギ括弧は子カギと言われる小さめのタイプです。 游築五号仮名には大カギと呼ばれるタイプが入っていて、混植する場合はそち らを利用する事ができます。
umkjvfも、7書体限定なので、CID指定も決め打ちなコードが入っています。 cidjminrが指定されていたら実際はcidjmr、漢字がhminrなら、cidjmrを指定 するみたいなコードが入ってます。
すると、別書体用だと上手くCID用が組み合わさらないので、直接指定します。 これで漢字とかなを混植し、さらに-cmや-cqで引用符をCIDの引用符に変換す ると言った事を同時に実現できます。
最初にフェイスを作ります。
ループで一気に作れると思ったら、各フォント毎に存在するウェイトが違うの で、ファミリー毎に配列を作っていき、最後に全部結合したのも作っています。
そして、TFMやVFを作っていきます。
ヒラギノ明朝W4, W5はStdですが、横組用かなが提供されているので、横組用 はそれと混植します。
もちろんヒラギノはダッシュの拡大率も設定します。モリサワは何もしなくて も繋がるので、指定しません。ヒラギノ丸ゴのダッシュは端が丸いので、その 分拡大率が大きめです。
TB古印のダッシュは繋がるとかどうのの形じゃないので、そこそこの拡大率で す。
$ ./make-mori-pas-02.sh
とすれば、tfm, vf, ofmができます。
時間はCore i7-9700K のマシンで約80分かかりました。気長に待ちましょう。 これはcygwinだとプロセス起動、もっと深く言うとforkが遅いためです。 VMwareでUbuntuを動かして、そこで実行したら約20分で済みました。 ネイティブUbuntuだともっと速いかも知れません。
そして最終的にできるファイルは1GB以上と巨大です。vfが大きいからですが、 japanese-otf-uplatex v0.26をベースに改造すると小さくなる筈です。 その内チャレンジするかもしれません。
styファイル中に\special命令でフォントを指定する方法もあるのですが、 見づらくなるのでmapファイル作ります。
フォント登録やUTF・CID指定マクロ組みます。
これもモリサワは楽ですが、ヒラギノはウェイト毎に細かい調整が要ります。
Stdだとexpertでかなが出なくなりますが、それだと使いづらいので、nmlを使 う用にしてます。ルビはPr6を持つウェイトで代用です。
CID指定は、最初\mpCID
を作り、deluxだと、\CID
を\mpCID
を呼び出すように置き換えます。これで普通のotfパッ
ケージ利用の文書を同様に、\CID
でそのまま利用できます。
\UTF
も同様です。これでajmacroがそのまま動くので便利です。
c:/texlive/texmf-local/fonts/
以下にtfm, vf, ofm, mapをコピーします。
ofmもコピーしておかないと、\Tsumesuji
を使う時、数字が同じ
場所に書かれるという不具合が起こります。
c:/texlive/texmf-local/fonts/tfm/mori-pas/tfm/
c:/texlive/texmf-local/fonts/vf/mori-pas/vf/
c:/texlive/texmf-local/fonts/ofm/mori-pas/ofm/
c:/texlive/texmf-local/fonts/map/mori-pas/map/
となる様にコピーします。
texmf/fonts/<type>/<supplier>/<typeface>/
なので、
c:/texlive/texmf-local/fonts/tfm/morisawa/mori-pas/
とすべきなのかもしれませんが。
c:/texlive/texmf-local/tex/platex/mori-pas/
に、otf-mori-pas.sty をコピーします。
全部コピーしたら、
$ xmktexlsr
します。
$ updmap-sys --enable KanjiMap=mori-pas.map
updmap-sys でmapファイルを登録します。
otf.styを読んだ後に、otf-mori-pas.styを読みます。
\usepackage[uplatex,jis2004,expert,deluxe]{otf}
\usepackage{otf-mori-pas}
リュウミン:Ryumin/l r m b eb h eh u/n o 新ゴ:ShinGo/el l r m db b h u/n 新丸ゴ:ShinMGo/l r m db b h u/n ヒラギノ明朝:HiraMin/w2 w3 w4 w5 w6 w7 w8/n o ヒラギノ角ゴ:HiraKaku/w0 w1 w2 w3 w4 w5 w6 w7 w8 w9/n ヒラギノ丸ゴ:HiraMaru/w2 w3 w4 w5 w6 w8/n TB古印:TBkoin/m/nの組合せで、ファミリー・シリーズ・シェイプを指定します。
ルビ用かなは、rubyRyumin, rubyShinGo, rubyMGo, rubyHiraMin, rubyHiraKaku, rubyHiraMaru, rubyTBkoin ファミリーです。ウェイトも指定 できますが、元々使い回されてるので実質1ウェイトです。Stdなウェイトは他 のウェイトのルビ用かなや通常のかなで代用してます。ルビ用といっても、ヒ ラギノ角ゴや丸ゴだと通常のかなと見分けつかないですが。
新丸ゴのルビ用かなが明朝ですが、元々リュウミンのルビ用かなと共通です。 設定ミスじゃありません。むしろ通常のかなが出るように設定した方が良いの かもしれませんが。
\rubyfamily
と指定しても良いです。
サンプルファイルを5つ程同梱してます。下の絵はその一例です。