PXtosb パッケージ

変更履歴
  • 2012/05/19: pxtosb-extra の書庫形式を lzma から xz に変更。

概要

pTeX の和文フォントを Unicode サブフォントに分解する為の一連の VF およびそれを利用する為の dvi2dvi の fontdesc ファイルをまとめたものである。 サブフォント分解を行うことで pTeX の和文 TFM に未対応の DVI ウェアが設定次第で pTeX(upTeX) の横書き DVI を扱えるようになる。 このパッケージでは dvipng を使うための設定も含んでいる。

対応環境

このパッケージ中の VF を使って pTeX の DVI を変換する為には dvi2dvi が必要である。 また、変換した DVI に対して dvipng を使うには ttf2pk が必要になる。

W32TeX (角藤版 TeX) の場合、それぞれ次のアーカイブに含まれる。

  • dvi2dvi: jtex-2.1-w32.tar.bz2
  • ttf2pk: ttf2pk-w32.tar.bz2
  • dvipng: dvitools-w32.tar.bz2

ダウンロード

pxtosb.zip に含まれる VF は pTeX 標準の和文フォント(rml, gbm) に対応するもののみである。 UTF/OTF パッケージや upTeX のフォントに対応するものは pxtosb-extra の方に含まれている。 このファイルはサイズを特に小さくする為に xz 圧縮を用いた (アーカイブのサイズは 235KB だが展開すると 37MB になる)。 W32TeX の環境でこれを展開するには、texinst###.zip 内の実行ファイルをちゃんと実行パスに入れているならば、

tar xJf pxtosb-extra.tar.xz

とすればよい。

インストール方法については、 パッケージ付属の説明書(README)を参照してほしい。

サンプル

基本的な使用法

dvipng に適した DVI を作るための LaTeX 文書の作成法は、 和文が可能なことを除いて、普通に dvipng を用いる時と同じである。 例として、Web ページ用に数式の画像を作ることを考える。 例えば、次のファイル eq01a.tex を作る。

\documentclass{jsarticle}
\usepackage{amsmath,amssymb}
\pagestyle{empty}
\begin{document}
$f(x) = \begin{cases}
          x & \text{($x=3$ のとき)}\\
         -x & \text{($x=-3$ のとき)}\\
          3 & \text{(それ以外)}
        \end{cases}$
と定義する。
\end{document}

ここから次のようにして PNG 画像が作れる。

platex eq01a
dvi2dvi -F pxtosb eq01a.dvi > eq01n.dvi
dvipng -D 150 -T tight eq01n.dvi
(結果:eq01n1.png)
結果(eq01n1.png)

dvi2dvi により、和文フォントを参照する DVI である eq01a.dvi を欧文と同じ構造のフォントしか含まない eq01n.dvi に変換している。 この DVI であれば dvipng に通せるということである。 dvipng のオプション “-D 150” は解像度設定、 “-T tight” は 文字のある部分だけを切り出した画像を作るという意味である。 1 ページ毎に 1 つの画像となるので、出力ファイル名は 既定では後ろに番号がついた形 (この場合は eq01n1.png)になる。 詳しくは dvipng のマニュアルを参照すること。

透過画像を作る

dvipng の使い方自体は欧文の時と何も変わらないので、 これ以上説明することはないのであるが、 もう少し例をあげておく。

-fg で前景色、-bg で背景色を指定する。 背景色を transparent にすると、単純な透過色を用いた透過画像になる。 この場合、アンチエイリアスの部分は完全非透過になるので、 「想定される背景色」を一度 -bg で指定する必要がある。 (何か変な指定方法だが、こうしないと上手くいかない。) ここでは、このページの背景色(#001133)と同じにしている。 想定と大きく異なる背景色に乗せると、 アンチエイリアスの部分が変な色に見えるので、 透過画像としては不完全である。

dvipng -D 150 -T tight --gamma 2 -fg "gray 1" -bg "rgb 0 0.067 0.2"
-bg transparent -o eq01-tr1.png eq01n.dvi        (実際は一行で入力)
(結果:eq01-tr1.png)
結果(eq01-tr1.png)

これに対して、 -bg に Transparent (先頭大文字)を指定すると、 アルファチャネルを用いた透過画像になる。 これはどんな背景に対しても正しい表示になる。 ただし、Internet Explorer ではアルファチャネル透過画像は バージョン 7 (タブブラウズをサポートした版) 以降でのみ対応しているので注意が必要である。 正しく表示されていれば、上と同じように見えるはずである。

dvipng -D 150 -T tight --gamma 2 -fg "gray 1" -bg Transparent
-o eq01-tr2.png eq01n.dvi                        (実際は一行で入力)
(結果:eq01-tr2.png)
結果(eq01-tr2.png)