読者です 読者をやめる 読者になる 読者になる

TeXの多書体化

TEXを多書体化して、文書中で自由にフォントを変えられるようにします。



index



TeXを多書体化するには主に2つの方法があります。

  • pLaTeXを使ったまま(強引に)多書体化
  • XeLaTeXを使う

pLaTeXを使ったまま多書体化する

利点
  • 普段使っているpLaTeXがそのまま使える。
欠点

普段使っているpLaTeXがそのまま使えるのは大きな利点でしょう。XeLaTeXもpLaTeXの文章を殆ど流用できるとはいえ、少なくともプリアンブルは書き換えないといけません。

和文部分を多書体化する(TrueType・OpenType共通)

  1. フォントファイル(ここではhogemincho.ttf)をダウンロード。作業フォルダに保存。
  2. c:¥w32tex内の何処かにあるjis.tfmを作業フォルダにコピー。ファイル名を好きな名前(ここではhoge).tfmに変更。
  3. コマンドプロンプトを開く。カレントディレクトリを作業フォルダに。
  4. makejvf hoge.tfm hogeを実行。
  5. hoge H hogemincho.ttfと書いたmapファイル(ここではfont-hoge.map)を作業フォルダに作る。
  6. 以下をプリアンブルに書き加える。
\AtBeginDvi{\special{pdf:mapfile font-hoge}}
\DeclareKanjiFamily{JT1}{hoge}{}
\DeclareFontShape{JT1}{hoge}{m}{n}{<-> s * [0.961] hoge}{}
\DeclareFontShape{JT1}{hoge}{bx}{n}{<-> s * [0.961] hoge}{}
\DeclareKanjiFamily{JY1}{hoge}{}
\DeclareFontShape{JY1}{hoge}{m}{n}{<-> s * [0.961] hoge}{}
\DeclareFontShape{JY1}{hoge}{bx}{n}{<-> s * [0.961] hoge}{}

蛇足:以下をプリアンブルに書き加えるとPDFの用紙サイズが正しくなる。

\AtBeginDvi{\special{papersize=\the\paperwidth,\the\paperheight}}

同じように、以下をプリアンブルに加えると指定したマップファイルをコンパイル時に読み取らせることができる。

\AtBeginDvi{\special{pdf:mapfile font-hoge}}

TrueTypeの従属欧文を使う

  1. c:¥w32tex内の何処かにあるUnicode.sfdを作業フォルダにコピー。
  2. コマンドプロンプトで「ttf2tfm hogemincho.ttf 好きな名前(ここではhogeA)@Unicode@」を実行。 この時、hogeA4f.tfmみたいなファイルが沢山できるが、この際hogeA00.tfm以外は削除してもらっても構わない。
  3. c:\w32tex内の何処かにあるttfonts.mapをメモ帳で開き、何処でもいいのでhoge@Unicode@ hogemincho.ttfを書き加える。
  4. c:\w32tex内の何処かにあるcid-x.mapをメモ帳で開き、何処でもいいのでhoge@Unicode@ UniJIS-UCS2-H hogemincho.ttfを書き加える。
  5. 以下をプリアンブルに書き加える。
\DeclareFontFamily{OT1}{hogeA}{}
\DeclareFontShape{OT1}{hogeA}{m}{n}{ <-> s * hogeA00}{}
\DeclareFontShape{OT1}{hogeA}{bx}{n}{ <-> s * hogeA00}{}

OpenTypeの従属欧文を使う

一番厄介です。PXacidパッケージを使います。

zrbabbler.sp.land.to

PXacidの実行にはw32texの他にPerlのインストールが必須です。

ActivePerl Downloads - Perl Binaries for Windows, Linux and Mac

以後、c:¥w32tex内の何処かにあるrunscr.exepxacid.exeの名前で作業フォルダにコピーし、pxacid.plやフォントファイル(.otfかそのシンボリックリンク)を作業フォルダに置いた前提で話を進めます。

> pxacid hogea hogemincho.otf

とすれば、ファイルが生成されます。生成されたファイルのうち、

hogea-r-j40.ofm
hogea-r-ot1.tfm
hogea-r-ot1.tfm

以外は使用しないこととしますので、削除しても問題ありません。フォント定義ファイル(.fd)やmapファイルも自動生成されますが、和文部分と一緒にプリアンブルに書きまとめるのが収まりが良いように思われるので使いませんでした。

次に、以下を記述したmapファイル(ここではfont-hoge.map)を作ります。既にmapファイルを作ってある場合は書き足してください。

hogea-r-j40  Identity-H  hogemincho.otf

最後に、以下をプリアンブルに加えます

\AtBeginDvi{\special{pdf:mapfile font-hoge}}
\DeclareFontFamily{OT1}{hogea}{}
\DeclareFontShape{OT1}{hogea}{m}{n}{<-> s * [0.961] hogea-r-ot1}{}

蛇足:シンボリックリンクの作成

シンボリックリンクの作成には、コマンドプロンプトを管理者として実行する必要がある。コマンドプロンプトを管理者として実行するには、「スタート>すべてのプログラム>アクセサリ」の順でたどり、「コマンドプロンプト」を右クリックして「管理者として実行」をクリックする。

あとは、以下のコマンドを入力すればシンボリックリンクが作成できる。

mklink /d "リンク先" "リンク元(ファイルが現存)"

XeLaTeXを使って多書体化する

利点
  • とても簡単に多書体化できる
  • 日本語対応は既にpLaTeX並に充実している
欠点
  • pLaTeXと比較すると利用できるパッケージが少ないかも知れない
  • 画像を多用した場合、コンパイルが遅くなる

画像を多用した場合、コンパイルが遅くなるのはXeLaTeXの特徴でしょう。pLaTeXでは初回コンパイル時に画像を読み取ってBoundingBox値を.xbbファイルに記録するので、二回目以降はコンパイルが早く終わりますが、XeLaTeXでは.xbbファイル或いはそれに準ずるファイルが生成されないので、恐らくコンパイルの度に画像を読み取っているのでしょう。

結局どっちを使ったか

はじめはXeLaTeXを使っていましたが、

  • 画像を多用した場合、コンパイルが遅くなる
  • \verb/.../\texttt{...}を使った時の文字位置が少々ずれて見栄えが悪い
  • \includegraphics[...]{...}のファイル名に全角文字が使えない

などの理由で、後にpLaTeXでもOpenTypeの従属欧文が使えることを知ってから使うのを辞めました。

広告を非表示にする