PXacid パッケージ
~AJ1 フォントの従属欧文の TFM 生成~

Adobe-Japan1 の CID 対応の OpenType フォントの欧文部分の字形を LaTeX で用いるために必要な一連のファイル (メトリックファイル、フォント定義ファイル、マップファイル、等) を XeTeX を利用して自動生成するための Perl スクリプトである (使用に関しては XeTeX である必要はない)。 OT1・T1・LY1・TS1 エンコーディングに対応、 また AJ1 に含まれるイタリック字形をイタリックシェープのフォント として使うことも可能。
変更履歴
  • 2017/04/22:ダウンロードのリンク先を GitHub に変更(0.3.1 版)。
  • 2011/02/19:0.2.3 版を公開。 ovp2ovf の 2.0 版でエラーになるというバグを修正。
  • 2010/06/09:0.2.2 版(初の公開版)。

概要

対応環境

pxacid スクリプトの実行には以下のものが必要。

  • XeTeX 0.997 版以降
  • pltotf : TeX の配布物に含まれる
  • opl2ofm/ovp2ovf (1.1 版/2.0 版ともに可): Omega の配布物に含まれる(W32TeX では aleph-w32.tar.xz)
  • Perl (5.8.1 版以降ならOK)
注意: 0.2.2 版では ovp2ovf の 2.0 版が使えないという不具合があった。

スクリプトの実行で得られるフォント(TFM) は以下の DVI ウェアで使用できる。

  • dvipdfmx
    (「Omega フォントと CID アクセスに対応した DVI ウェア」 であれば適切なマップファイルを書けば対応できると思われるが、 試していない。)

ダウンロード

github のページから ZIP アーカイブをダウンロードできる。 (「Download ZIP」のボタンを押す。)

インストール

このパッケージに実質的に含まれるのは Perl スクリプト pxacid.pl のみである。 Perl と XeTeX がインストールされていれば動作するはずである。

以下の解説では、このスクリプトが pxacid のコマンド名で実行されることを想定する。 (これは必須ではなく、単純に 「perl pxacid.pl」等で起動しても問題ない。)

※W32TeX でそれを実現する一つの方法としては、 $TEXMF/bin/runscr.exe を pxacid.exe の名前でコピーし、 実行パスの通ったフォルダに置いた後、 pxacid.pl を同じフォルダに置く。

基本的な使い方

コマンドライン書式は以下の通り。

pxacid [<オプション>...] <ファミリ>[/<シリーズ>] <フォントファイル名>

<ファミリ><シリーズ> は当該フォントに対応させる NFSS のファミリとシリーズの名前を指定する。 シリーズの既定値は m(標準)である。

対象のフォントはフォント名(「ほげら明朝 Pr6N R」とか) ではなくファイル名(HogeraMin-Pr6N-R.otf とか) で指定する。 フォントファイルは Kpathsearch で検索可能なディレクトリに置く。 (ファイル名で検索しているので XeTeX の通常のフォント探索で検出できる必要はない。)

オプションは次の通り。

  • -a / --append: 追記モード。 当該のファミリのフォント定義ファイル(*.fd) とマップファイル(*.map)が既に (カレントディレクトリに)ある場合は 上書きせずにその中に新しい項目を追記する。
  • -b / --use-berry: TeX フォント名(TFM ファイルのベース名) に「Berry 命名規則」(xxxri7t のような形式)を採用する。 既定は「ZR 命名規則(謎)」(xxx-ri-ot1 のような形式)である。
  • -t / --tfm-family=<名前>: TeX フォント名の「ファミリ名」の部分(前項の xxx の部分;Berry 規則の場合「ベンダ名+ファミリ名」に相当する) の名前を指定する。 この名前の既定値は引数の <ファミリ> に指定 した名前(つまり NFSS でのファミリ名)である。
  • --min-kern=<値>: フォントに含まれるペアカーニング情報で 大きさがこの値(単位はデザインサイズ)未満のものを無視する。 既定値は 0.01。
  • --slant=<値>: 斜体(slanted;シェープ sl)の傾斜値 (TFM の SLANT 値)を指定する。 斜体はこの値に基づいて機械的に変形させた字形になる。 既定値は 0.167。 なお、イタリック(シェープ it)の傾斜値は自動的に推定されるが、 もしそれが失敗した場合はイタリックにもここで指定した値が使われる。 (こちらは字形には影響しない。)

使用法

架空の例として、3 ウェイトからなる「ほげら明朝」 のファミリがあり、これを LaTeX でファミリ hogem で使用できるようにすることを考える。 すなわち、以下の 3 つのフォントファイルがあり、 これを各々シリーズに対応付ける。

  • HogeraMin-Pr6N-W3.otf → シリーズ m
  • HogeraMin-Pr6N-W6.otf → シリーズ bx
  • HogeraMin-Pr6N-W8.otf → シリーズ eb

pxacid の実行

この場合、次の一連のコマンドを実行する。 大量のファイルが生成されるので、専用の作業ディレクトリを 作ってそこで実行するのがよいであろう。 (フォントファイル(*.otf)は TeX が見つけられる場所に置いておく。 W32TeX なら Windows にインストールしてもよい。)

> pxacid hogem HogeraMin-Pr6N-W3.otf
> pxacid -a hogem/bx HogeraMin-Pr6N-W6.otf
> pxacid -a hogem/eb HogeraMin-Pr6N-W8.otf

これにより、4 つのエンコーディング、 OT1・T1・LY1・TS1 のために必要な全てのファイルが生成される。 なお、この例のように、同じファミリの複数のシリーズ(ウェイト) を処理する場合は、2 度目以降は、 以前に生成されたファイルを置いたままにして追記モード (-a オプション)で pxacid を実行する必要がある。

正常に必要なファイルが生成されたかを確かめるために、 そのままカレントにある pxacid-test-hogem-*.tex* の部分はシリーズ)を LaTeX で組版してみる。 次のような文字列が所望の書体で正しく出力されていれば成功である。 (ちなみにこの図のフォントは TeX Gyre Schola。)

…

生成ファイルのインストール

正常動作を確認したら、 これらのファイルを TeX ツリーにインストールする。 まず、各ファイルを次に示す場所に移動する。 ここで “hogetype” は「ほげら明朝」の「ベンダ名」 を表すが、実際には任意の名前で構わない。

hogem-*-*.tfm (TFMファイル) → $TEXMF/fonts/tfm/hogetype/hogem/
hogem-*-*.ofm (OFMファイル) → $TEXMF/fonts/ofm/hogetype/hogem/
hogem-*-*.vf (VFファイル) → $TEXMF/fonts/vf/hogetype/hogem/
pdfm-hogem.map (dvipdfmx マップ) → $TEXMF/fonts/map/dvipdfmx/hogem/
*hogem.fd (フォント定義ファイル) → $TEXMF/tex/latex/hogem/
*hogem.fd (フォント定義ファイル) → $TEXMF/tex/latex/hogem/
pxacid-hogem.sty (パッケージファイル) → $TEXMF/tex/latex/hogem/

次に、マップファイルの dvipdfmx への登録を行う。 すなわち、設定ファイル $TEXMF/dvipdfmx/config/dvipdfmx.cfg に「f pdfm-hogem.map」を追記する。 最後に、ls-R 使用の場合は mktexlsr を実行する。

LaTeX のフォントの使用

以上のインストール作業が済むと、NFSS のファミリ名 hogem で「ほげら明朝」が使用できるようになる。

\documentclass[a4paper]{article}
\begin{document}
{\fontfamily{hogem}\selectfont Wow, Hogera Mincho!}\par
{\usefont{T1}{hogem}{eb}{it} Wow, Hogera Mincho in extra bold!!}\par
\end{document}

なお、生成ファイルに含まれる pxacid-hogem.sty は簡易的な LaTeX パッケージであり、hogem ファミリに切り替える命令 \hogemfamily\texthogem が定義されている。

\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{pxacid-hogem}
\begin{document}
\hogemfamily\bfseries
Hogera Special FontPack ---
Campaign price \textyen 198,000 (38\% discount!)
\end{document}