ttf2pk は,その名の通り TrueType フォントを TeX の標準的なフォントフォーマットである PK フォントに変換するツールです. PS フォントを PK フォントに変換するツールとして ps2pk, gsftopk が知られていますが,ttf2pk はこれらの TrueType 版に相当します. 実際 ttf2pk (ttf2tfm) のソースは gsftopk (afm2tfm) をベースにしているようです.
ttf2pk は CJK package (Chinese Japanese Korean 等の multi byte 文字を扱うための LaTeX マクロ) での利用を考慮して設計されており, msmincho 等の日本語 TrueType フォントも問題なく利用できます. 特に Windows 98 に付属する msmincho.ttc/msgothic.ttc には JIS 補助漢字 (JIS X 0212-1990) の範囲の漢字が追加されており, これらを TeX で利用できれば漢字不足の問題がかなり改善されるものと思われます.
なお,ttf2pk という名前のツールは CTAN の languages/chinese/CJK/4_1.3/utils/ttf2pk/ にあるものと, FreeType project の contrib として配布されているものの 2 種類が存在しているようですが, ここでは FreeType エンジンを使った後者について説明します. (作者の一部が共通しており,後者が進化バージョンと考えられます)
FreeType 版 ttf2pk のソースコードは FreeType project の full source archive から入手できます. MS-DOS や OS/2 版のバイナリも提供されているようです.
msmin@unicode@ msmincho.ttc msgoth@unicode@ msgothic.ttcなお,texmf.cnf で TTFONTS (後述) に指定した場所以外に存在するフォントの場合は, ファイル名をフルパスで指定しておく必要があります.
% TrueType outline fonts. TTFONTS = .;c:/windows/fonts;$TEXMF/fonts/truetype// TTF2PKINPUTS = .;$TEXMF/ttf2pk TTF2TFMINPUTS = .;$TEXMF/ttf2pkなお,淺山氏の DLL 版 ptex を使用している人は, 角藤版のパッケージなどから texmf.cnf だけを $TEXMF/web2c にコピーし, TEXMF 変数を適切に書き直した上でその所在を環境変数 TEXMFCNF に指定してください.
まず, ttf2tfm を使って変換したいフォントの tfm ファイルを作成します. msmincho/msgothic の場合は以下のようにタイプします.
ttf2tfm msmincho.ttc msmin@unicode@ ttf2tfm msgothic.ttc msgoth@unicode@カレントディレクトリに msmin??.tfm, msgoth??.tfm (?? は 00 〜 ff までの 16 進数) が作成されていれば OK です. これらの tfm ファイルは例えば $TEXMF/fonts/tfm/ttf2pk といった名前のディレクトリに移動しておきます.
次に ttf2pk を使って,必要な文字を含む PK フォントを作成します. 例えば出力装置の解像度が 300dpi で,デザインサイズ (10pt) の文字を出力したい場合, 次のようにタイプします.
ttf2pk msmin9a 300ここで ttf2pk の第 1 引数はフォント名に unicode の上位 2 バイトを付加したもの, 2 引数は解像度を意味しています.
ttf2pk によって作成された msmin9a.300pk を PK フォントの検索パス (例えば $TEXMF/fonts/pk/ttf2pk) に格納し,以下のサンプルで unicode: 9ad9 の文字 (はしご高) がタイプセットできれていれば成功です.
\documentclass{article}
\newfont{\msminIXA}{msmin9a}
\begin{document}
{\msminIXA\symbol{"D9}}島屋
\end{document}
なお,新しい PK フォントが必要になる度に
ttf2pk を手で起動するのは面倒なので,
私は次のバッチファイル (mktexpk.bat) を用意し,
mktexpk.exe と同じインターフェースで実行できるようにしています.
(dviout の場合 gen: `mktexpk.bat ^s ^d ^D ^d/^D のように指定)
set FONTDIR=c:\ptex\texmf\fonts\pk\ttf2pk
ttf2pk %1 %2
if not exist %1.%2pk goto mktexpk
move %1.%2pk %FONTDIR%
goto exit
:mktexpk
mktexpk.exe %1 %2 %3 %4 %5 %6 %7 %8 %9
:exit
※
角藤さんの新しい
mftoolsでは,
mktexpk が ttf2pk に対応しています!
\begin{CJK*}{JIS}{song}
となっている部分を
\begin{CJK*}{JIS}{msknj}
のように書き換えるだけで,タイプセットできるようになります
なお,フォント定義ファイル c??msknj.fd の c?? の部分は, CJK package で規定されている C?? encoding に対応しています (C40: JIS X 0208,C50: JIS X 0212, C70: Unicode). これらのフォント定義ファイルでは medium series に対して明朝体 (j*msm??.vf), bold series に対してゴシック体 (j*msg??.vf) が割り当てられるようになっています. また,pTeX の min/goth フォントとのバランスを考えて, デザインサイズに対して 0.96 倍の大きさに縮小するようになっています. この辺りの設定は好みに合わせて適宜変更してみてください.
利用可能なマクロは以下の通りです.
\documentclass{jarticle}
\usepackage{jskanji}
\begin{document}
森\JSkanji{"6C}{"3F}外,
\jskanji{66}{39}小平,
\Unicode{"9A}{"D9}島屋
\end{document}
出力結果
そこで,msmincho/msgothic から補助漢字 METAFONT と互換性のあるフォントを生成できるようにしてみました. 本来なら, 内部で msmincho?? を呼び出すような virtual font を用意するのが素直(?)なのですが, ここでは単純にコード変換だけを行うこととし, ttf2pk の sfd ファイル (Subfont definition file) を利用する方法について説明します.
HeiseiMin-W3-G@uni2hj@ msmincho.ttcここではフォント名を補助漢字 METAFONT と同じ (HeiseiMin-W3-G??)にしてありますが, 利用目的や書体に応じて適当な名前をつけて下さい.
ttf2tfm msmincho.ttc HeiseiMin-W3-G@uni2hj@ここで生成される tfm ファイルは, 本物の補助漢字 METAFONT とメトリック 情報が異なることに注意して下さい. 既に補助漢字 METAFONT がインストールされている場合は, 本物をそのまま使うこともできます.
ttf2pk HeiseiMin-W3-G01 300
なお,補助漢字 METAFONT の利用法については以下のページが参考になります.
これらの問題は dviout が msmincho/msgothic の補助漢字領域を 直接ラスタライズできるようになれば解決すると思われますが, 同時に dvi ファイルの可搬性も考慮しなくてはなりません.