# [Guess]の仕様

-TEXPK: -TEXROOT: などの設定のためのフォントの所在の推定は、以下のようになされます。
1.探すべきディスクドライブまたはディレクトリ（ルートディレクトリからの適当なディレクトリまでのパス）、欧文フォント名、和文フォント名、解像度の４つの情報を元に推定します。これらのデフォルトは、順に以下のようになっています（変更については、最後を部分をご覧ください）。
・リムーバブルでない全てのルートドライブ（例 C: D: など）
・cmr10, lcircle10, dcr10, ecr10, msam10, eufm10
・min10, tmin10
・設定されている -dpi: の値
なお、MikTeXがインストールされていると判断されるときは、以下の推定を行わないMikTeX用の設定にするかどうか選択するダイアログが表示されます。
2.欧文フォントは、探すべきディレクトリ、およびそれ以下の全てのサブディレクトリで、与えた解像度、およびその1.2倍の解像度のものを検索します。
たとえば、cmr10 で解像度が300dpiのときは、cmr10.pk, cmr10.300pk, cmr10.360pk を探します。ただし、cmr10.pk の場合は、パス名に 300 あるいは 360 という文字列（その前後の文字は、数字であってはなりません）が含まれていなければなりません。
ただし、lcircle10, lcirclew10 のときは、フォント名をそれぞれ lcircle1, lcirle10 あるいは、lcirclew, lcirew10 に変えたものも探します。
3.和文フォントも同様にして、対応するJXL4フォント、および、jfmファイルを探します。
min10で300dpiのときは、min10.pxl（このときは、パス名に1500または1800が含まれている必要があります）, min10.1500pxl, min10.1800pxl, min10.tfmを探します。
注意：同じ解像度のフォントが２ヶ所で見つかったときは、どちらを使うか、ダイアログが表示されてユーザの判断が求められます。ただし、和文のフォントファイルで、JXL4フォントとjfmファイルの両方が見つかったときは、前者が優先されます。
4.拡張子gthをもつファイルで、ファイル名に解像度の数字が含まれるものは見つかったGTHフォントライブラリファイルとして記録しておきます。
5.見つかったフォントのパスのフォント名の部分を全て ^sで置き換えます。
6.与えられた解像度とその1.2倍の解像度のものが共に見つかったフォント（GTH、jfmファイルは除く）に対しては、探されたパスを先頭から比較して、異なっている部分が解像度を表す文字列に対応していて、それより前の部分が一致していれば、その文字列を ^d（jxl4フォントのときは、^l）に置き換えます。
これは、可能な限り繰り返して行われます。たとえば、
C:\tex\pk300\cmr10.300pk -> C:\tex\pk300\^s,^dpk
C:\tex\pk300\cmr10.360pk -> C:\tex\pk300\^s.^dpk
あるいは
C:\tex\pk300\cmr10.300pk -> C:\tex\pk^d\^s.^dpk
C:\tex\pk360\cmr10.360pk -> C:\tex\pk^d\^s.^dpk
7.上記6で一度も変換が行われなかった欧文フォントのパス、あるいは、和文のJXL4フォントのパスに対し、解像度の文字列を ^d（または、^l）で置き換えます。
ただし、パス名中に２ヶ所以上に解像度の文字列が含まれていれば、最後に合致する部分のみを置き換えます。
たとえば、C:\tex\pk300\cmr10.300pk が探され、360dpiのcmr10のフォントが見つからなかった場合は、C:\tex\pk300\^s.^dpkとなります。
なお、この段階では、フォント名は既に ^sで置き換えられているので、フォント名中に解像度の文字列と合致するものが含まれていても、正常に処理されます。
8.以上の処理を行って同一のパス名が生じれば、重複したものを消去します。
9.最初の欧文フォントが与えられた解像度で見つからなかった場合、それがTrueTypeフォントとしてシステムに登録されていて、しかも環境変数TEXMFMAINまたはTEXMFが存在すれば、パス名を %TEXMFMAIN%\fonts\^s.tfm または%TEXMF%\fonts\^s.tfmとする。
10.最初の欧文フォントの与えられた解像度に対して検索されたパス名に注目し、その先頭部分を他の求まったパス名の全ての先頭部分と比較し、どこまでを共通部分にすれば、-TEXROOT: と -TEXPK: に定義する文字列の長さの和が最小になるかを調べて、共通部分の設定を決めます。
その共通部分を -TEXROOT: に設定し、それを先頭に含むパス名は、その部分を ^rで置き換えます。
環境変数TEXMFMAINまたはTEXMFが存在していて、-TEXROOT:の先頭部分がそれと合致すれば、-TEXROOT:のその部分を ^Tで置き換えます。
11.次に再び、*.^dpkに合致するファイル（^dを、解像度にあたる文字列に置き換えたファイル）が、探すべきディレクトリ以下のディレクトリに存在するかどうか調べます。
存在するディレクトリがあれば、そのディレクトリ名に^s.^dpkを付加し、可能なら先頭部分の ^rによる置き換えを行います。
この結果、10で得られているもの以外のものが見つかれば、探されたフォントファイルのパス名を表示して、上のように置き換えたものもサーチパスに含めるかどうか、ダイアログでユーザの判断を求めます。含めない場合は、次のディレクトリを探します。
ここでは、6において２ヶ所以上 ^d の置き換えを行って、同じパス名に到達したものがあれば、それとの比較も正しく行って、重複を避けます。
12.^dという文字列を含む欧文フォントのパス名で、最後が .tfm でないものが \public\cm\, \public\latex\, \ams\symbols\, \ams\extracm\ のいずれかを含んでいれば、その部分を \ に置き変えます。但し、一つのパス名につき置き換えは高々一回です。
-TEXPK: において kpathsearch の \ と同様の意味でこの置き換えられたフォントのパス名に合致するパス名は重複するので削除します。
13.以上のようにして得られたパス名を、順に -TEXPK: に設定します。さらに、GTHファイルに対応するパス名があれば、それも設定します。
14.最初の欧文フォントに対応するパス名が ^r\...\texmf\fonts\pk\... となっていたら、Virtual font用に ^r\...\texmf\vf\^s.vf というパスを加えます。
15.lcircle1（あるいは、lcirclew）が見つかれば -F: に
lcircle1.=lcircle10.;lcirclew.=lcirclew10.
が、lcirle10（あるいは、lcirew10）が見つかれば、-F: に
lcirle10.=lcircle10.;lcirew10.=lcirclew10.
が設定されます。両方見つかれば、合わせたものが設定されます。
GTHファイルが -TEXPK: に設定された場合は、両者が見つかった、とみなします。
16.-TEXPK: でjfmファイルが設定された場合（ファイル名は ^s.tfm）、それに欧文のtfmファイルが該当しないかどうか、チェックを行います。また、-L: は、長いフォント名をそのまま用いるように設定されます。
注意: 推測に使われるデフォルトの、解像度以外の部分は、dviout.exe の存在するディレクトリの dviout.gss というファイルで以下のように指定できます（それが存在しなければデフォルト）。
３つの設定を順に書きます。複数の指定は、;で区切ります。
各項目は省略可能ですが、欧文フォントの指定を省略する場合は、その後の和文フォントの指定も省略しなければなりません（省略すると、デフォルトになる）。
# で始まる行は無視されます。
たとえば、
#drive
C:\ptex;D:
#pk fonts
cmr10;lcircle10;ecr10
#jxl4/jfm fonts
min10;goth10
あるいは、
cmr10;msam10;eufm10
あるいは、
C:\tex;C:\ptex
なお、最初の欧文フォントは特別の意味をもつことに注意してください（cf. 9）
注意：MS-DOSでは８文字以上の名前のフォントは、切り詰めて８文字にしたファイルにしていました。Windows95/NT では、長いファイル名が使えますので、それを用いることが望まれます。
よって、推測機能では、-F:を用いて、よく使われるLaTeXのlcircle10, lcirclew10 のみのサポートとしています。-L:の設定はデフォルトとします。