8月 11, 2008

Comis Sansの埋め込みに失敗

CTANからComis Sansパッケージをダウンロードしてインストール。texhashもupdmapもちゃんとして実験。dviファイルは作られるが,dvipdfmxでPDFに変換中にエラー。

** ERROR ** Unable to find TFM file "ComicSansMS"

試しに日本語TeXではなく,欧文専用のpdfTeX (dviを経由せずに直接PDFを生成するもの) でコンパイルすると,とくにエラーもなくPDFが作られる。ということは,基本線は間違ってないはず。しかし解せないのは,メトリックファイル(TFM)が見つからないというエラーの意味。TeXのコンパイルは出来ているのに・・・。dvipdfmx が変換時にどういう情報を必要としているのか,調べる必要があるなあ。

Windowsの自己解凍ファイルをMac OS X で開く

MS Comic Sans というフォントをMac上のTeXから使うためのメモ。フォント自体はMacにもインストールしてあるが,ファイル形式が Font Suitcase なので,拡張子が ttf の普通の TrueType フォントが欲しい。変換ツールが見つからなかったので,フォントをダウンロードすることにした。

An easy way to install Microsoft’s TrueType core fonts on linux

Download Microsoft Core Fonts

Windowsのフォントは自己解凍形式で comic32.exe という実行ファイルとしてしか入手できないみたいだ。しかし,これを他のプラットフォームで解凍するためのツール CabExtract (Extract Cabinet Fileということかな?) がある。

cabextract

Mac OS X には,Finkのパッケージがあったので,Fink Commander からインストール。シェルから

$ cabextract comic32.exe

とすれば,comic.ttf と comicbd.ttf の2つが生成される。

日本語フォントをPDFに埋め込む実験

このところ,Windows版TeXでの実験ばかりだったが,Mac OSX にはもともとヒラギノという美しいフォントが付属しているわけで,これを使わない手はなかった。ということで,埋め込みの実験。実は,utfパッケージを拡張した otfパッケージを使えば,自動的にヒラギノが埋め込まれる。しかし,それ以外にも埋め込みたいフォントがあるので,仕組みを理解しておきたいのであ〜る。

参考にしたのは,otfパッケージを作成された齋藤修三郎さんのサイト LaTeX2e的 と 具体的な事例が紹介されている MacPorts の pTeX における和文多書体環境の整えかた というページ。作業は意外と簡単だったが,忘れないうちにメモ。

とりあえず,ファイル群はすべてカレントに置いて実験。本格的に使うときは,適切なディレクトリーに置いて,texhash すること。

まず,フォント本体をダウンロード。今回は cinecaption.otf というOpenType Font を使う。jis.tfm あるいは otfパッケージの tfm ファイルをコピーして cinecaption.tfm なるメトリックファイルを作る。今回は otfパッケージのをコピーした,あとで縮尺するのだが,jis.tfmと違い,0.92469倍にすることに注意。

次に,vf (Virtual Font) などを作る。makejvf を使って,cinecaption.vf と cinecap.tfm を生成する。作り方は

% makejvf cinecaption.tfm cinecap

さらにマップファイルを作る。次の内容を cinecap.map というファイルに保存する。

cinecap H cinecaption.otf

最後に,このフォントを使うためのマクロ。とりあえず,sample.tex というファイルで実験。プリアンブルの部分に次のような記述をする。


\makeatletter
\DeclareKanjiFamily{JY1}{cinecap}{}
\DeclareFontShape{JY1}{cinecap}{m}{n}{<-> s * [0.92469] cinecaption}{}
\newcommand{\cinecapdefault}{cinecap}
\DeclareRobustCommand\cinecapfamily{%
  \not@math@alphabet\cinecapfamily\relax
  \kanjifamily\cinecapdefault\selectfont}
\def\textcinecap#1{\relax\ifmmode\hbox\fi{\cinecapfamily #1}}

これで,コンパイルすれば,sample.dvi ができる。これを PDF に変換する際には,マップファイルへの参照が必要となる。本格運用時は cid-x.map に書き込んで updmap するが,今回は実験なので dvipdfmx が読み込むように,オプションで指定する。

% dvipdfmx -f cinecap.map sample.dvi

以上でフォントがちゃんと埋め込まれているのを確認。