教育社会学の勉強・備忘録

教育社会学のお勉強メモ。Macユーザーのための記事もたまに書きます。

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 XLaTeXで使いたい

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のフォント利用の仕組みは大変わかりにくくなっています。全ての動作の仕組みを理解しているのはドキュメントを読み通した一部の達人だけみたいな「古の技術」みたいなところがあり、僕も全体像は全く把握できていませんが、わかることだけ書いていきます。

もし間違っているところがあれば、達人の方々、ぜひご指摘下さい。

まずは参考文献として、こことか読んでみるといいんじゃないでしょうか。

ではコマンドの解説です。

フォントの実ファイルの設置

 $ 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.mapotf-yu.mapptex-yu.mapuptex-yu.map)を書き換えます。必要な書き換えは以下の2点です。コマンドでやってしまっていますが、うまくいかないという方は、この作業を手動で行っても問題ありません(コマンドについて詳しくは「ruby ワンライナー」などでググってみてください)。

  1. .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」が含まれる行を削除し、上書き保存する
  2. .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

*1:ターミナルを開いて、1行ずつコピペして enter です。先頭の $ マークはプロンプトの目印なので一緒にコピペしないように。

*2:gitをインストールしていない方は、開発元のレポジトリからダウンロードし、手動で配置して下さい→http://gitorious.org/tlptexlive/jfontmaps のページ右上の方のDownloadからtar.gzをダウンロードし、/usr/local/texlive/texmf-local/fonts/map/dvipdfmx/jfontmaps に解凍して下さい。