2005年12月4日の記録

TeXの多書体化のために一連の設定をしてみました。

pTeXのバージョンアップ

まず角藤さんのページから、現時点での最新版であるWeb2C-7.5.5をダウンロー ドしました。

本来はここにあるようにインストールすればよいはずなのです1。ところが、 cygwin上ではパスに若干の問題が生じたため、作業ディレクトリをe:直下に移 動。そこでWindows上で動作する.zipファイルの伸長プログラム(私はeoを利用 しています)を利用してインストーラを展開してから、そのディレクトリ下で まずインストール。展開されたbin/とshare/を所期のインストールディレクト リ(私は/usr/local/です)にExplorerにより移動しました。

TrueTypeフォントからフォントメトリック(tfm)と仮想フォント(vf)を作成

まずはTeXで使いたいと思うフォントをとってきましょう。フォントファ イルは日本語名がついていると後で困るので、英数字にしておきましょう。 Windowsへのフォントのインストールは済んでいるものとしておきます。

ここでは、インストールした/するフォントの名前は FONTNAME としておきます。

dviファイルでフォントを利用できるように設定

  1. フォントメトリックが必要となるわけですが、当然あるわけはないので、既に あるものを流用します。というわけで、 /usr/local/share/texmf/fonts/tfm/ptex にて、newmin.tfmとnewtmin.tfmを コピーしましょう2
    cd /usr/local/share/texmf/fonts/tfm/ptex
    cp newmin.tfm FONTNAME.tfm
    cp newtmin.tfm tFONTNAME.tfm
    
  2. ls-Rを更新しておきましょう。
    mktexlsr
    
  3. 追加したフォントをdvioutのmapファイルにも登録します。dviout/mapにあ る$user.mapに追加してもいいのですが、ここではまず dviout/map/ttfonts.mapの末尾に以下を追加します。
    %input  myfonts.map
    
    その上で、dviout/map/myfonts.mapに以下を追加します。
    FONTNAME "フォントの名前"
    tFONTNAME "フォントの名前"
    
  4. dvioutの設定で、ftt:にttfonts.mapを指定するわけですが、まぁ最初から 設定してあるでしょうから、そのままでいいでしょう。

利用してみる

  1. TeXファイルのプリアンブルに以下のように書きます(ここでは「みか ちゃんフォント」を例にあげています):
    \usepackage{addjfonts}
    \DefineJapaneseFamily{mikachan}{mika}{tmika}{mika}
    
    引数は順番に「フォントファミリー名」「横方向のフォント名」「縦方向のフォ ント名」「コマンド名」です。コマンド名が"foo"だとすると、 \foofamilyおよび\textfooが使えるよう になります。
  2. 本文に次のように書けば、指定した部分が今回設定したフォントになるは ずです:
    \textfoo{ここが設定したフォントで表示されます}
    
  3. もしコンパイル時にtfm関連でエラーを吐くようであれば、先の設定に失敗 しています。

pdfでも利用できるようにする

  1. 仮想フォントを設定するために、まず作業用ディレクトリを作成しておく とよいでしょう:
    mkdir /usr/local/share/texmf/fonts/vf/myfonts
    cd    /usr/local/share/texmf/fonts/vf/myfonts
    
  2. vfファイルを作成します:
    makejvf FONTNAME psFONTNAME
    makejvf tFONTNAME pstFONTNAME
    
  3. 同時にtfmファイルも生成されるので、そちらはtexmf/fonts/tfm/dvipsの 下に置いておきます:
    mkdir /usr/local/share/texmf/fonts/tfm/dvips/myfonts
    mv *.tfm /usr/local/share/texmf/fonts/tfm/dvips/myfonts
    
  4. dvipdfmが参照するmapファイルである texmf/fonts/map/dvipdfm/base/cid-x.mapに以下のような行を追加します(こ こでは「みかちゃんフォント」の場合を例にあげています):
    %mika
    psmika H :0:mikachanALL.ttc
    pstmika V :0:mikachanALL.ttc
    
    Hは水平(Horizontal)、Vは垂直(Vertical)の略です。その後の:0:は、 TTC(TrueType Collection)の場合のフォント番号の指定です。フォント 番号はフォントを閲覧したときに<<や>>で移動できる場合に限り意味をもちま す。そうでなければデフォルトである0を指定しておきましょう。
  5. あとはdvipdfmxを実行することで、実際にフォントが埋め込まれたpdfファ イルが作成されることを確認しましょう。

半角英数字部分まで綺麗に使いたい場合

一般化するのは面倒なので、ここでも「みかちゃんフォント」を例にあげて説 明します。

  1. texmf/fonts/tfm以下に適切なディレクトリを作成して、ttf2tfmを用いて tfmファイルを作成します:
    ttf2tfm mikachanALL.TTC -q -f 0 mika@Unicode@
    ttf2tfm mikachanALL.TTC -q -f 1 mikap@Unicode@
    
  2. texmf/fonts/map/ttf2pkの末尾に以下を追加します:
    % mikachan font
    mika@Unicode@ mikachanALL.ttc Fontindex = 0
    mikap@Unicode@ mikachanALL.ttc Fontindex = 1
    
  3. texmf/fonts/map/dvipdfm/base/cid-x.mapに以下を追加します:
    % mikachan fonts
    mika@Unicode@ UniJIS-UTF16-H :0:mikachanALL.ttc -m <00>
    mikap@Unicode@ UniJIS-UTF16-H :1:mikachanALL.ttc -m <00>
    
  4. mktexlsr を実行しておきます。
  5. フォントを使うファイルのプリアンブルに以下を設定しておきましょう:
    \DeclareFontFamily{U}{mikaa}{}
    \DeclareFontShape{U}{mikaa}{m}{n}{<-> s * mika00}{}
    \DeclareFontFamily{U}{mikaap}{}
    \DeclareFontShape{U}{mikaap}{m}{n}{<-> s * mikap00}{}
    \usepackage{addjfonts}
    \DefineJapaneseFamily{mikachan}{mika}{tmika}{mika}
    \DeclareRobustCommand\mkfamily{%
    \kanjifamily{mika}\fontencoding{U}\romanfamily{mikaa}\selectfont
    }
    \DeclareTextFontCommand{\textmk}{\mkfamily}
    \DeclareRobustCommand\appfamily{%
    \kanjifamily{mika}\fontencoding{U}\romanfamily{mikaap}\selectfont
    }
    \DeclareTextFontCommand{\textmkp}{\mkpfamily}
    

TTFからMETAFONTを作成する

ttf2mf を利用すると、METAFONTファイルを作成することができます。この方 法は只今研究中ですので、詳細はしばらくお待ちください。

参照


[1] 近いうちに参照先を最新版にあうように書き直す予定。

[2] jsarticleなどの奥村スタイルを使う場合にはjis.tfmとjisv.tfmのほうがいいらしいです。