jfontmapsをいろいろといじった記録
注意
この記事は2013年11月17日に書かれましたが、その内容はすでに古い情報となってしまいました。現在LaTeXに游書体を導入する場合はこの記事に従わず、こちらの記事を参考にして下さい→游明朝体・游ゴシック体をMac OS XのLaTeXで使う
一応、全く役に立たないことが書いてあるわけでもない(と思う)ので、そのままの内容を取っておいてあります。以下、当時の記事です。
すごくおどろきました
この記事を書いてから5時間もしないうちに、Mac - TeX Wikiに本記事へのリンクが追加されています…すごい更新の早さですね…中の人スゴい…
日本語環境の整備の節の下の箇条書きのあたりです。
すごくおどろきましたその2
本記事で利用している「jfontmaps」パッケージですが、本記事を書いてから2日後の19日に、Mac OS X 用に游フォントが使えるような更新がなされたようです…中の人スゴい…
ということで、以下のコマンドだけで、游書体が使えるようになります(gitをインストールしていない方は、開発元のレポジトリからダウンロードし、手動で配置して下さい→http://gitorious.org/tlptexlive/jfontmaps のページ右上の方のDownloadからtar.gzをダウンロードし、/usr/local/texlive/texmf-local/fonts/map/dvipdfmx/jfontmaps に解凍して下さい。)。
$ sudo mkdir /usr/local/texlive/texmf-local/fonts/opentype/yu-osx
$ cd /usr/local/texlive/texmf-local/fonts/opentype/yu-osx
$ sudo ln -fs "/Library/Fonts/Yu Gothic Bold.otf" YuGothic-Bold.otf
$ sudo ln -fs "/Library/Fonts/Yu Gothic Medium.otf" YuGothic-Medium.otf
$ sudo ln -fs "/Library/Fonts/Yu Mincho Demibold.otf" YuMincho-Demibold.otf
$ sudo ln -fs "/Library/Fonts/Yu Mincho Medium.otf" YuMincho-Medium.otf
$ sudo mkdir /usr/local/texlive/texmf-local/fonts/map/dvipdfmx
$ cd /usr/local/texlive/texmf-local/fonts/map/dvipdfmx
$ sudo git clone --depth 1 git://gitorious.org/tlptexlive/jfontmaps.git
$ sudo mktexlsr
$ sudo updmap-sys --setoption kanjiEmbed yu-osx
本記事のやり方で出来ないわけではなかったのですが、どちらかと言えばバッドノウハウ的な魔改造という感じのやり方ですので、正直なところおすすめはできないものでした。ただまあせっかく書きましたし、一応解説的なところもあるので、残しておきます。とりあえず本家が更新されて良かったです…
というわけで、以下に以前書いたものをそのまま残しておきます。
游書体をMac OS XのLaTeXで使いたい
Mac OS X 10.9 Mavericks には、游明朝体、游ゴシック体がそれぞれ2ウェイトずつついてくるようになりました(一方Windows 8.1にはそれぞれ3ウェイトずつついてくるのですが)。
このフォントは非常に美しいフォントですが、MacTeX(TeX Live)でLaTeXをインストールしても、游フォントを使うための設定ファイルが付属しておらず、また游フォントを使えるようにするためのアップデートも存在していないため、自分で追加作業を行う必要があります。
日本語フォントをLaTeXで利用可能にしてくれている設定パッケージ「jfontmaps」のREADME(/usr/local/texlive/2013/texmf-dist/doc/fonts/jfontmaps/README
)を読んでみてください。游フォントの項目はないはずです(ただそのうちアップデートが来るかもしれませんので、たまに TeX Live Utility で確認してみてください)。
(2013年12月1日追記:最初に述べたように、既にアップデート来ています。詳しくはこちらの記事で。游明朝体・游ゴシック体をMac OS XのLaTeXで使う)
一応こちらのページ(OTF - TeX Wiki)やこちらのページ([改訂第6版]LaTeX2e 美文書作成入門)には書いてありますが、これはWindows 8.1用の設定ファイル(mapファイル)のようでしたので、これを流用してMac OS Xにインストールします。
環境の違いなどによって、以下の作業で必ずしもうまくいくかわからないのですが、うまくできた人は一応教えていただけると助かります。Twitterなり、ブログのコメントなりで、どうぞよろしくお願いします。
例のごとく脚注で初心者用の解説も入れておきます。
コマンドで
まずTeXディレクトリに、游フォントのシンボリックリンクを張ります。以下のコマンドで*1。
ちなみに以下はMacTeXでTeXをインストールしていた場合ですので、それ以外のパッケージでTeXのインストールを行った方は適宜読み替えて下さい。
$ sudo mkdir /usr/local/texlive/texmf-local/fonts/opentype/yu
$ cd /usr/local/texlive/texmf-local/fonts/opentype/yu
$ sudo ln -fs "/Library/Fonts/Yu Gothic Bold.otf" yugothib.otf
$ sudo ln -fs "/Library/Fonts/Yu Gothic Medium.otf" yugothic.otf
$ sudo ln -fs "/Library/Fonts/Yu Mincho Demibold.otf" yumindb.otf
$ sudo ln -fs "/Library/Fonts/Yu Mincho Medium.otf" yumin.otf
次に、このフォントを利用するための設定ファイルを設置します。
「jfontmaps」というパッケージを利用するのですが、CTAN(TeX関連のファイルやソフトウェアを集めたウェブサイトです。)には游フォントを使うためのmapファイルがなかったので、開発元のレポジトリからgitでcloneします*2。CTANのファイルってどういった基準で更新とかされてるんでしょうか。
(最初に述べたように、いずれCTANにMac用の游フォントmapが追加されるかもしれません。そうなった時にはこの記事はもういらなくなりますね。)
$ sudo mkdir /usr/local/texlive/texmf-local/fonts/map/dvipdfmx
$ cd /usr/local/texlive/texmf-local/fonts/map/dvipdfmx
$ sudo git clone --depth 1 git://gitorious.org/tlptexlive/jfontmaps.git
設定ファイルの設置が完了したら、mapの中身を少し書き換えます。現在の「jfontmaps」のバージョンで設定可能な游フォントは、Windows 8.1にインストールされているものが想定なのですが、これを流用して、Mac OS X 10.9でも利用できるようにします。
ここでは、設定ファイルの書き換えにはRubyを利用しています。手で書き換えることもできるのですが少々面倒なので、コマンドで自動的に書き換えてしまいます。具体的にどんな操作を行っているのかについてはこの記事の下の方に付記しておきますので読んでみて下さい。
$ cd jfontmaps/yu
$ ruby -i".org" -pe 'gsub(/[\s\S]*?yuminl\.ttf\n/, "")' *.map
$ ruby -i -pe 'gsub(/ttf/, "otf")' *.map
$ sudo mktexlsr
$ sudo updmap-sys --setoption kanjiEmbed yu
以上でおしまいです。游フォントを埋め込んだPDFを出力することができます。
一体何をしているのかについて
(La)TeXのフォント利用の仕組みは大変わかりにくくなっています。全ての動作の仕組みを理解しているのはドキュメントを読み通した一部の達人だけみたいな「古の技術」みたいなところがあり、僕も全体像は全く把握できていませんが、わかることだけ書いていきます。
もし間違っているところがあれば、達人の方々、ぜひご指摘下さい。
まずは参考文献として、こことか読んでみるといいんじゃないでしょうか。
- 和文の仕組み - TeX Wiki
- 和文フォントの集中管理
- updmap はなぜ動くのか (2) - マクロツイーター
- updmap and kanji - TeX Live - TeX Users Group
ではコマンドの解説です。
フォントの実ファイルの設置
$ sudo mkdir /usr/local/texlive/texmf-local/fonts/opentype/yu
$ cd /usr/local/texlive/texmf-local/fonts/opentype/yu
$ sudo ln -fs "/Library/Fonts/Yu Gothic Bold.otf" yugothib.otf
$ sudo ln -fs "/Library/Fonts/Yu Gothic Medium.otf" yugothic.otf
$ sudo ln -fs "/Library/Fonts/Yu Mincho Demibold.otf" yumindb.otf
$ sudo ln -fs "/Library/Fonts/Yu Mincho Medium.otf" yumin.otf
TeXのユーザー用領域に游フォントのシンボリックリンクを張っています。リンク先のファイル名(「yugothib」など)ですが、これは次にダウンロードするmapファイル内に記載されたファイル名に準拠しています。ですので、map内のファイル名を適切に書き換えればすればこの名前でなくてもおそらく構いません。
mapの設置
$ sudo mkdir /usr/local/texlive/texmf-local/fonts/map/dvipdfmx
$ cd /usr/local/texlive/texmf-local/fonts/map/dvipdfmx
$ sudo git clone --depth 1 git://gitorious.org/tlptexlive/jfontmaps.git
LaTeXでdvipdfmxを利用してPDFでOpenTypeフォントを利用するためには、mapと呼ばれるファイルが必要になります(もうここだけで説明が謎だという方はいると思いますが、まあ普通に使おうと思ったらmapと呼ばれるファイルがとにかくいるのだ、ととりあえずは思ってよいと思います)。
で、通常日本語フォントを使おうと思ったら、有名どころのフォント(ヒラギノとか小塚とか)であればそれを利用するためのmapファイルがあらかじめTeXLiveにインストールされています。しかし游フォント用のmapはインストールされず、CTANにも公開されていないため、日本語フォントの利用環境を制作しているグループが制作した游フォント用のmapを引っ張ってくるというわけです(ふつうにTeXをインストールしても使えるような状況にはなってないから、自前で用意する必要があるよ!という意味です)。
mapの編集
$ cd jfontmaps/yu
$ ruby -i".org" -pe 'gsub(/[\s\S]*?yuminl\.ttf\n/, "")' *.map
$ ruby -i -pe 'gsub(/ttf/, "otf")' *.map
さて、このmapですが、実はWindows 8.1用に制作されていたものでした。Windows 8.1に入っている游フォントは、游明朝と游ゴシックがそれぞれ3ウェイトで、TrueType(ttf)形式です。一方Mac OS X 10.9 Mavericksに入っている游フォントは、游明朝と游ゴシックがそれぞれ2ウェイトで、OpenType(otf)形式です。なので、Mac用に.map
ファイルを少々書き換える必要があります。
先にダウンロードした/usr/local/texlive/texmf-local/fonts/map/dvipdfmx/jfontmaps/
の中にyu
というディレクトリがあり、この中の.map
ファイル4点(otf-up-yu.map
、otf-yu.map
、ptex-yu.map
、uptex-yu.map
)を書き換えます。必要な書き換えは以下の2点です。コマンドでやってしまっていますが、うまくいかないという方は、この作業を手動で行っても問題ありません(コマンドについて詳しくは「ruby ワンライナー」などでググってみてください)。
.map
内に3ウェイトが指定されているうち、OS X 10.9 Mavericksに含まれないLightウェイトの記述(yuminl)を削除する- そのコマンド→
$ ruby -i".org" -pe 'gsub(/[\s\S]*?yuminl\.ttf\n/, "")' *.map
- このコマンドの意味は以下の通りです。
- 「.map」という拡張子のつくファイルに、「.org」という拡張子をつけてバックアップを取る
- 「.map」という拡張子のつくファイル内で、「yuminl.ttf」が含まれる行を削除し、上書き保存する
- そのコマンド→
- .ttf を .otf に書き換える
- そのコマンド→
$ ruby -i -pe 'gsub(/ttf/, "otf")' *.map
- このコマンドの意味は以下のとおりです。
- 「.map」という拡張子のつくファイル内で、「ttf」という文字列を「otf」に置換し、上書き保存する
- そのコマンド→
TeXシステムへの適用
$ sudo mktexlsr
$ sudo updmap-sys --setoption kanjiEmbed yu
最後に、ファイルの追加をTeXに知らせるためのmktexlsr
と、「游フォントをPDFに埋め込んでくださいね」というお願いのupdmap-sys
をすることで、利用可能となるわけです。
おまけ
以下のようにotfを別の場所に設置することで、ttfと共存させることもできると思います。が、試していないのでこれでできるかわかりません。そもそも共存の必要があるかどうかわかりませんが…
- フォントの設置場所をotf用に用意する
- 例えば
/usr/local/texlive/texmf-local/fonts/opentype/yu-otf
とか
- 例えば
- mapファイルの設置場所をotf用に用意する
- たとえば
/usr/local/texlive/texmf-local/fonts/map/dvipdfmx/jfontmaps/yu-otf
- たとえば
- 上記の操作を行ったmapをこのディレクトリに配置し、さらにmapのファイル名を書き換える
- この例で言えば
*-yu.map
から*-yu-otf.map
に
- この例で言えば
mktexlsr
して、updmap-sys
- この例で言えば
updmap-sys --setoption kanjiEmbed yu-otf
- この例で言えば