
この質問は、次の質問の回答と関連しています。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
変更されたメトリックを読み取り、文字の修正を行います。つまり、文字が重複していることになります。