讀取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

編輯 cmr10.pl 以使字元 A 具有不同的寬度。

pltotf cmr10.pl

cmr10.tfm現在你的工作目錄中有「壞指標」 。生成格式:

tex -ini plain
\dump

使用格式:

tex -fmt plain \\relax Ab\\end

然後xdvi texput顯示不重疊的字元(因為它按照從 讀取的字元寬度放置字元cmr10.pfb),但讀取變更的度量dvipsdvipdfmx修正字元:它們重疊。

相關內容