LaTeX多書体化の話


LaTeX 多書体化


LaTeXを多書体化する話です。基本的にネットに落ちてる情報のつぎはぎ。




※2017年追記
以下pLaTeXでのやり方です。UpLaTeXではうまくいってません。。(勉強不足で何故かよく分かってないけど)

筑紫書体関連で、Macにバンドルされている筑紫書体を利用したい方はこちらが参考になります。

(u)pTeX における和文多書体の実現 〜Sierraの全和文フォント出力を例として〜





せっかくモリパスとLETSを契約しているので、LaTeXでもそのフォントを使いたいなと思って作業しました。目標は「コマンドひとつで好きなフォントの好きなウェイトを使えるようにする」こと。色々ネットで見ながらやってると、実際にできたので忘備録的にまとめます。


念のため、作業環境はMac OS 10.7です。


全体の流れは以下のとおり。
  1. 日本語用OpenType(TrueType)フォントを用意する
  2. TeXが認識できるように実態を収納するか、リンクを貼る
  3. ベースにする和文フォントメトリックファイルを用意する
  4. makejvfツールでtfmファイルとvfファイルを作る
  5. フォントへのMapファイルを作る
  6. フォントの使用開始宣言を記述する



作業に入る前に、makejvfがインストールされているか確認して下さい。(正直これが何なのか僕にはよく分かっていません。わかっていないことを記事として公開するのは無責任で若干気が引けるんですが、ここだけはご了承ください。。)


僕はなぜか、始めからパスまで通っていていきなりターミナルで使えました。TeXをインストールする際にMacTeXを使ったんですが、多分そこで一緒にインストールされたんじゃないかと思ってます。


既にインストールされている場合は、ターミナルで
 $ makejvf

と打てば、バージョン等出るはずです。

インストールされていなかった方は下記リンクからmakejvfをダウンロードできます。
2番目のリンクはその説明書きで、インストール方法が書かれているようです。

http://ascii.asciimw.jp/pb/ptex/base/sources.html
http://ascii.asciimw.jp/pb/ptex/etc/README.makejvf.txt





1. 日本語OpenType(TrueType)フォントを用意する

特に書くこともないので次へ。




2. TeXが認識できるようにリンクを貼る。

ここからの作業はターミナルを使います。それで、ターミナルだけでも作業はできるんですが、どうも慣れないのでFinderで確認しながら進めました。作業するディレクトリは普通Finderには表示されていないところなので、Finderメニューの「移動>フォルダへ移動」から
 /usr

と打って進んで下さい。これからいじっていくのはこの中の
 /usr/local/texlive/texmf-local/fonts/opentype

になります。整理するため、僕はopentypeの下に更にfontworksフォルダを新しく作りました。


TeXで使用するフォントファイルですが、コピーするのはライセンス的にまずいので、ここではLibrary下のフォントにリンクを貼っていきます。ターミナルでリンクを置くディレクトリまで移動します(この辺二度手間みたいでかっこわるい)。

 $ cd /usr/local/texlive/texmf-local/fonts/opentype/fontworks

ここから下記の要領で、ひたすらフォントファイルへリンクを貼ります。

僕はここでめちゃくちゃな数リンクを貼ったわけですが、それをここに全部書くとすごいことになるので、代表して筑紫明朝だけ書きます。

ln -fs "/Library/Fonts/FOT-TsukuMinPr5N-L.otf" ./TsukuMinPr5N-L.otf
ln -fs "/Library/Fonts/FOT-TsukuMinPr5N-R.otf" ./TsukuMinPr5N-R.otf
ln -fs "/Library/Fonts/FOT-TsukuMinPr5N-M.otf" ./TsukuMinPr5N-M.otf
ln -fs "/Library/Fonts/FOT-TsukuMinPr5N-D.otf" ./TsukuMinPr5N-D.otf
ln -fs "/Library/Fonts/FOT-TsukuMinPr5N-B.otf" ./TsukuMinPr5N-B.otf
ln -fs "/Library/Fonts/FOT-TsukuMinPr5N-E.otf" ./TsukuMinPr5N-E.otf
ln -fs "/Library/Fonts/FOT-TsukuMinPr5N-H.otf" ./TsukuMinPr5N-H.otf

見てわかるように、フォントは/Library下(ここも普段は非表示)にあります。フォントのファイル名はそこでチェックしてください。



こんな感じでリンクが作成されていると思います。これで2の作業は終わりです。




3. ベースにする和文フォントメトリックファイルを用意する。

TeXの組版の流れって、

TeX がTFMを参照して組版 ⇒ dvips がDVI中のTFMと同じ名前のVFを参照(なければ文字合成なし) ⇒ VF中に記述されている各文字の定義(文字毎にフォントを設定できる)を参照 ⇒ 文字定義に従って dvips が各文字を置換


こういうことをやっているみたいで、まずはTFMで組版するらしいです。そこでここでは、各フォントのための.tmfファイルを用意します。一から作るのではなく元からある.tmfファイルをコピーして使い回します(よく分からないメトリックファイルを使うのは気持ち悪いですが、今のところ問題ありません)。

ベースにするのは
 /usr/local/texlive/2013/texmf-dist/fonts/tfm/ptex/jis

の中にある、jis.tfmです。これをFinder上でもターミナル上でもいいので

 /usr/local/texlive/texmf-local/fonts/tfm/fontworks

の中にコピーします。僕はここでも散らからないよう、tfm内にfontworksフォルダを作ってそこに入れました。


.tfmファイルは各フォントの各ウェイトの数だけ要るので、必要な分複製して、どのフォントのどのウェイトに対応しているか分かるように名前を変更して下さい。僕はフォントベンダーがつけている名前に習って.tfmファイルに名前を付けました。


筑紫明朝Lに対応するのが 「TsukuMin-L.tfm」って感じで…





4. makejvfツールでtfmファイルとvfファイルを作る

ここからはまたターミナルでの作業です。今.tfmファイルを大量作成したディレクトリに行きます。

 $ cd /usr/local/texlive/texmf-local/fonts/tfm/fontworks

ここでmakejvfツールを使います。例えば「筑紫明朝L」の場合、僕はこれに対応する.tfmファイルを「TsukuMin-L.tfm」と名づけていたので、

 $ makejvf TsukuMin-L.tfm TML

を実行し、「TsukuMin-L.vf」と「TML.tfm」を新たに作成します。(上のコマンドを実行すると作業ディレクトリにこれら2つが作成されます。)TMLというのは僕が勝手に筑紫明朝Lを略記しただけのものです。.vfファイルはちゃんとfots下にvfのフォルダがあるので、そっちに移します。

例のごとくvfの中にfontworksフォルダを新しく作ってまとめました。(/usr/local/texlive/texmf-local/fonts/vf/fontworks)


同じ要領で全ての○○○.tfmファイルについて「○○○.vf」と「●●●.tfm」をmakejvfで作成し、「○○○.vf」はvfフォルダに移します。






5. フォントへのMapファイルを作る

今例に挙げている筑紫明朝の場合こんな感じです。

 TML H TsukuMinPr5N-L.otf
TMR H TsukuMinPr5N-R.otf
TMM H TsukuMinPr5N-M.otf
TMD H TsukuMinPr5N-D.otf
TMB H TsukuMinPr5N-B.otf
TME H TsukuMinPr5N-E.otf
TMH H TsukuMinPr5N-H.otf

これを「fontworks.map」として

 /usr/local/texlive/texmf-local/fonts/map

に保存します。ここまでやったら、ターミナルで下を実行。

 $ sudo mktexlsr





6. フォントの使用開始宣言を記述する

準備は終わりです。TeXファイルのプリアンブルに(長いです…。)

 \AtBeginDvi{\special{pdf:mapfile +fontworks.map}}

%筑紫明朝
\DeclareKanjiFamily{JY1}{TML}{}
\DeclareFontShape{JY1}{TML}{m}{n}{<->s*[0,961]TML}{}
\DeclareKanjiFamily{JY1}{TMR}{}
\DeclareFontShape{JY1}{TMR}{m}{n}{<->s*[0,961]TMR}{}
\DeclareKanjiFamily{JY1}{TMM}{}
\DeclareFontShape{JY1}{TMM}{m}{n}{<->s*[0,961]TMM}{}
\DeclareKanjiFamily{JY1}{TMD}{}
\DeclareFontShape{JY1}{TMD}{m}{n}{<->s*[0,961]TMD}{}
\DeclareKanjiFamily{JY1}{TMB}{}
\DeclareFontShape{JY1}{TMB}{m}{n}{<->s*[0,961]TMB}{}
\DeclareKanjiFamily{JY1}{TME}{}
\DeclareFontShape{JY1}{TME}{m}{n}{<->s*[0,961]TME}{}
\DeclareKanjiFamily{JY1}{TMH}{}
\DeclareFontShape{JY1}{TMH}{m}{n}{<->s*[0,961]TMH}{}

\makeatletter 

%筑紫明朝
\newcommand{\TMLdefault}{TML}
\DeclareRobustCommand\TMLfamily{% \not@math@alphabet\TMLfamily\relax \kanjifamily\TMLdefault\selectfont }
\DeclareTextFontCommand{\textTML}{\TMLfamily}

\newcommand{\TMRdefault}{TMR}
\DeclareRobustCommand\TMRfamily{% \not@math@alphabet\TMRfamily\relax \kanjifamily\TMRdefault\selectfont }
\DeclareTextFontCommand{\textTMR}{\TMRfamily}

\newcommand{\TMMdefault}{TMM}
\DeclareRobustCommand\TMMfamily{% \not@math@alphabet\TMMfamily\relax \kanjifamily\TMMdefault\selectfont }
\DeclareTextFontCommand{\textTMM}{\TMMfamily}

\newcommand{\TMDdefault}{TMD}
\DeclareRobustCommand\TMDfamily{% \not@math@alphabet\TMDfamily\relax \kanjifamily\TMDdefault\selectfont }
\DeclareTextFontCommand{\textTMD}{\TMDfamily}

\newcommand{\TMBdefault}{TMB}
\DeclareRobustCommand\TMBfamily{% \not@math@alphabet\TMBfamily\relax \kanjifamily\TMBdefault\selectfont }
\DeclareTextFontCommand{\textTMB}{\TMBfamily}

\newcommand{\TMEdefault}{TME}
\DeclareRobustCommand\TMEfamily{% \not@math@alphabet\TMEfamily\relax \kanjifamily\TMEdefault\selectfont }
\DeclareTextFontCommand{\textTME}{\TMEfamily}

\newcommand{\TMHdefault}{TMH}
\DeclareRobustCommand\TMHfamily{% \not@math@alphabet\TMHfamily\relax \kanjifamily\TMHdefault\selectfont }
\DeclareTextFontCommand{\textTMH}{\TMHfamily} \makeatother


と書けばあとはコマンド、


\textTML{文章} で筑紫明朝L
\textTMD{文章} で筑紫明朝D


になります!めでたしめでたし!


しかしこのプリアンブルは余りに長すぎるので、スタイルファイルにして読み込んだほうがいいですね。当該プリアンブル部分を、fontworks.styとして次の場所に保存します。
 /usr/local/texlive/texmf-local/tex/latex/fontworks.sty
保存したらターミナルで
 $sudo mktexlsr
を実行してください。これでプリアンブルの記述は
 \usepackage{/usr/local/texlive/texmf-local/tex/latex/fontworks}
の一行でOKです。



[補足1]

例えば筑紫明朝Rをその文章の基本書体(明朝体)として使いたいとき、いちいち文章に

\textTMR{……}

と書くのは非常に面倒なわけですが、プリアンブルに
 \renewcommand{\mcdefault}{TMR}
と一行追加しておけば、入力した和文がデフォルトで筑紫明朝Rになります。もちろん上で用意した別書体を指定するコマンドとも共存可能です。

基本のゴシック体を指定するときは
 \renewcommand{\gtdefault}{TGM}
というように\gtdefaultを設定します。ちなみに英語のサンセリフをHelveticaにするコマンドは
 \renewcommand{\sfdefault}{phv}
です。

LaTeXの組版に必要なファイル、定義がいまいちわかっていなくて、色々見ているとfont familyの設定なんかもできるらしく、そうするともう少しスマートにできるんじゃないかとも思いますが、現状そんなに不便ではないので、僕はこの辺で妥協します。。




参考にしたサイト
[1] LaTeXの勉強記録 その4b  和文フォントの変更・多書体化はもっと結構難しい
[2] 日本語フォントのセットアップ
[3] MacPorts の pTeX における和文多書体環境の整えかた


下の方は参考にしましたが内容はあまり反映されていません。

pLaTeX2e における和文フォントの扱いと多書体化の話 和文フォントを使う仕組み


[蛇足1]
色々試してわかったんですが、筑紫明朝よりはリュウミンのほうが数式フォントのComputer Modernと合うような気がします。というわけで、例として筑紫明朝を上げといてなんですが、僕は普段明朝体にリュウミンL-KL、ゴシック体にこぶりなゴシック、セリフにComputer Modern、サンセリフにHelveticaを使ってます。どっちも合成フォントになりますが、違和感なく自然な感じです。




LaTeX多書体化の話 LaTeX多書体化の話 Reviewed by mug on 3/22/2013 Rating: 5

0 件のコメント:

Powered by Blogger.