TFM ファイルを読み取る際の正確なルールは何ですか?

TFM ファイルを読み取る際の正確なルールは何ですか?

この質問は、次の質問の回答と関連しています。TeX は TFM ファイルを読み込まずに DVI をどのように作成するのでしょうか?

cmr10 の TFM ファイルのみを変更し (もちろんフォント名も変更します)、残りのフォント関連ファイルはすべて変更しません。

tftopl cmr10.tfm > mycmr10.vpl
patch <<EOF
--- mycmr10.vpl
+++ mycmr10.vpl
@@ -1,3 +1,4 @@
+(MAPFONT D 0 (FONTNAME cmr10))
 (FAMILY CMR)
 (FACE O 352)
 (CODINGSCHEME TEX TEXT)
@@ -466,7 +467,7 @@
    (CHARHT R 0.694445)
    )
 (CHARACTER C A
-   (CHARWD R 0.750002)
+   (CHARWD R 0.4)
    (CHARHT R 0.683332)
    (COMMENT
       (KRN C t R -0.027779)
EOF
vptovf mycmr10.vpl

新しいメトリックをテストします:

\setbox0=\hbox{A}
\showbox0
\font\myfont=mycmr10\myfont
\setbox0=\hbox{A}
\showbox0

出力は、新しいメトリックが機能していることを確認します。

\hbox(6.83331+0.0)x7.50002
\hbox(6.83331+0.0)x3.99998

このtest.texをコンパイルします

\font\myfont=mycmr10\myfont
Ab
\bye

xdvi の出力では、dvips と dvipdfmx の文字が重なっています。それでは、これらすべてが TFM ファイルを読み込んでいるのでしょうか? dvips の出力ではこれが示されていませんが、xdvi ではこれが行われるべきではありません。

答え1

ファイルmycmr10.vfには新しい文字幅が含まれています。したがって、xdviこのソースからこれを認識しており、文字が重なっています。ただし、ファイルxdviは読み込まれませんcmr10.tfm(前のスレッドで述べたように)。

作業ディレクトリでこれを試すことができます:

tftopl cmr10.tfm > cmr10.pl

文字 A の幅が異なるように cmr10.pl を編集します。

pltotf cmr10.pl

cmr10.tfmこれで、作業ディレクトリに「bad metric」ができました。生成形式:

tex -ini plain
\dump

使用形式:

tex -fmt plain \\relax Ab\\end

次に、xdvi texput重複していない文字を表示します ( から読み取った文字幅で文字を配置するためcmr10.pfb)。ただしdvips、 はdvipdfmx変更されたメトリックを読み取り、文字の修正を行います。つまり、文字が重複していることになります。

関連情報