*あるフォントの一覧を作成して,表示を確認する [#me3d4919]

たとえば『美文書作成入門』(第 2 版 pp. 232--233, 第 3 版付録)のような,pifont の一覧を作成したくなったら,任意のディレクトリで,
 tex testfont
とコマンドを打ち,その後,ヘルプを参考にしながら
 pzdr
 \table
 \end
(など)と打つ.

Unix あるいは Unix 互換 shell を使っている場合、これを簡単にするには、たとえば名前が tab.tex で、内容が
 \input testfont \table \end
なる一行のファイルを TEXINPUTS で探せるディレクトリに置いておきます。そうして
 echo pzdr | tex tab
とすれば一発で tab.dvi ができます。 Windows のコマンド プロンプトでは echo とパイプの仕様が異なるので上のようにできません。Windows のコマンド プロンプトの場合は、
 tex tab
のあと、TeX からのプロンプトに答えてフォント名
 pzdr
を入力したら tab.dvi ができます。

>ちなみに,TeX 関係のコマンドは,ソースを TEXINPUTS 変数に記述してあるディレクトリから見つけ出してきて,コンパイルする.出力結果はデフォルトではカレントディレクトリに置かれる.TEXINPUTS 変数はプログラム名によってことなり、platex 用ならば TEXINPUTS.platex というような形で texmf.cnf に記述されている。

なお,ファイル testfont.tex については『The METAFONTbook』(D.E. Knuth 著)
の Appendix H の第 4 節(“フォントサンプル”の節)
// あるいは『LaTeX2e マクロ&クラス プログラミング実践解説』(吉永徹美 著)の補遺 B
に説明があります.

- [動機] pdf ではフォントが埋め込まれていないと&color(#F00){'''?'''};,代替フォントが充てられるので,その表示を確認したいことがある.
-- dvi や ps では『美文書...』と同じフォントで見えるが(それすら環境依存か&color(#F00){'''?'''};),pdf だと異なることがある(フォントが埋め込まれていないと&color(#F00){'''?'''};,代替フォント(pzdr (Zapf Dingbats) に対して AdobePiStd)が充てられるため).
-- pdf に,Zapf Dingbats フォントを埋め込むには,dvipdfm.cfg ファイルの下の方に f embase14.map と書き込んで(% f embase14.map とすでに書いてあれば % を外して),普通に dvipdfm コマンドを掛ければよい(こうしておくと Adobe の Times ,Helvetica ,Courier も埋め込まれます).
//''御存知の方,誰か書き込んでください!''
-記号の番号が分かれば,たとえば (cmr10 で&color(#F00){'''?'''};) [ を出力したければ,
 \symbol{'133}
と入力すれば良いことがわかる.

**Bad Know-How [#zebdcd9a]

上の例では pzdr というフォント名が何気なく出ているが,実際はどう調べるのか?
/// まともに読むのは難しいのですか?
/// 私が下に書いた方法は,いかにも Bad Know-How なので,上のコメントは,
/// 表に出すことに十分値すると思うのですが.
/// どんな書物か参考文献としてページ番号とともに列挙していただけると
/// なお嬉しいと思います.
/// TeX のフォント関係については知識が乏しく,pzdr などと言ったときに
/// tfm を指しているのか mf なのか,type1 なのかといったあたりが
/// 分からないので,よろしくご教授ください.

// 「難しい」かどうかは主観の問題でしょう.
// とりあえず,ごく簡単な記述をいれてみます.
//
// なお,TeX 自身が使用する(ここでは,各種 dviware をはじめとする
// TeX 関連ツールと TeX 自身とは厳格に区別します)のは tfm ファイル
// (和文フォントに関しては jfm ファイル)ですから,
// fd ファイル内に記述されているファイル名あるいは \font による
// フォント識別子の定義時に与えるフォント名(もちろんファイル
// testfont.tex 使用時に尋ねられるフォント名も)は
// tfm/jfm ファイル名になります.
// あとは,各種 dviware が dvi ファイル中の tfm/jfm ファイル名に応じた
// 処理を行います.dviout for Windows でしたら,特に TrueType 版の
// computer modern フォントを使用するための設定を行っていなければ,
// computer modern フォントに対しては mf ファイルから PK 形式の
// フォントを生成・使用することを試みるでしょう.
// 一方,dvips(k) や dvipdfm(x) では map ファイルの中に tfm/jfm ファイルと
// 実際に用いられるフォント(PostScript Type1 フォントなど)の対応関係を
// 記述し(もちろん,書式は dvips(k) 用の map ファイルと dvipdfm(x) 
// 用の map ファイルとでは異なりますが),それに基づいて処理が行われます.
// ただし,仮想フォントが用いられていた場合には,
//   dvi ファイル中のフォント(tfm/jfm ファイル)名・文字コード
//   ↓
//   仮想フォントによる変換(ここは複数段階になることもあります)
//   ↓
//   実際に使用されるフォント(tfm/jfm ファイル)名・文字コード
// という処理が挟まるので,fd ファイルにおけるフォント名が
// map ファイルに現れないということも起こります
// (例えば,ptmr8t と ptmr8r の関係).
// 他の dviware でも同様で,何らかの形で tfm/jfm ファイル名と
// 実際に使用するフォントとの対応関係を与える必要があります.
// そして,実際に使用するフォントが PostScript Type1 フォントなのか,
// TrueType フォントなのか(あるいは,フォントの実体は一切埋め込まずに
// 出力環境で代替してもらうことにするのか)という点は dviware ごとに
// (さらには個々のフォントに対する設定に応じて)異なります
// (それゆえ,TeX そのものについての解説では実際に使用される
// フォントの形式には関知しない,ということにもなるのですが…).

/// ものすごく理解が深まりました.ありがとうございます.
/// 新しい解説部分は表には出さないのですか? 半角空白を前に 1 つずつ置けば,
/// ダブルスラッシュのついた形式 (C++ や JAVA 風) のコメントアウト
/// 表示ですぐに表に出るのですが.
/// たとえば
 // このページの中では,コメントアウトの形でもいろいろな情報が提供されています.
 // 興味のある方は [[差分]] をクリックして,読むとためになるでしょう.
/// というように.

// dviware に関することについては,“専門外”の私が書いた(上記の)ものよりも
// 各種 texware/dviware のマニュアルを参照なさるほうがよろしいでしょう.
// また,各種の会員制コミュニティが持っているデータの中に
// TeX 関連ツールでのフォント関係の設定等に関する日本語で読める
// 優れた解説があるかもしれません.

- 『美文書...』などの書物でファミリ名を調べて,どのまま打ち込んだだけでは NG となることが多い~
(例)
 $ tex testfont
 This is TeX, Version 3.141592 (Web2C 7.5.2)
 encTeX v. Feb. 2003, the reencoding enabled. initialized from format, the reencoding enabled.
 (c:/usr/local/share/texmf/tex/plain/base/testfont.tex
 
 Name of the font to test = pzd
 kpathsea: Running mktextfm pzd
 Cannot find pzd.mf.
 kpathsea: Appending font creation commands to missfont.log.
 ! Font \testfont=pzd not loadable: Metric (TFM) file not found.
 (以下略)

- おおよそのフォントでは [ファミリ名+シェイプ+サイズ (8 とか 10 とか)] で何とかなるが,Bad Know-How としては,cmr10 は普通よく使われているので,ないはずがない.よって,
 find | less
 /cmr10
などとして,cmr10 のまわりのフォント名を見れば(ある程度の規則性さえ見つければ),そこそこ的中する.

-fd ファイルの記述内容を理解できる場合には,
fd ファイルを読むとフォントの属性と実際に用いられるフォント名(tfm ファイル名)
の対応を知ることができます.
上記の ZapfDingbats(エンコーディング,ファミリー,シリーズ,シェイプはそれぞれ,
U,pzd,m,n)の場合には,ファイル upzd.fd の中の
 \DeclareFontShape{U}{pzd}{m}{n}{<->pzdr}{}
という記述によってサイズによらずフォント pzdr を適当に拡大・縮小して用いる,
ということがわかります.
なお,ZapfDingbats は数式用ではない記号ばかり収めたフォントですから,
そのようなフォントのエンコーディングは U(不規則あるいは未知のもの)になります.
fd ファイルの記述内容あるいは fd ファイルのファイル名のつけ方については,
NFSS に関する解説を含む書籍を参照してください.例えば,次のようなものがあります.

--『LaTeX コンパニオン』(M. Goossens,F. Mittelbach,A. Samarin 共著)
//今手元にないのでどのあたりに記述してあるかは確認できませんが,載っていたはずです.
--『pLaTeX2e Another Manual vol.2』(乙部厳己,江口庄英 共著)7.3 節
// --『LaTeX2e マクロ&クラス プログラミング実践解説』(吉永徹美 著)1.2 節

- たとえば YaTeX の色付けでは,16 進の識別子としての " を解釈しないので,本文中に " が 1 つだけあるとそれよりうしろの文字列がすべてピンク色になってしまって不便.&color(#033){そもそも " を *TeX-mode 中で打つには,C-q " としなければならないが.};よって,8 進の表記が出てくる testfont は便利!

----
** コメント [#kf8441a8]
#comment