读取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)但是读取您更改的度量dvips并对dvipdfmx字符进行更正:它们重叠。

相关内容