这个问题与这个问题的答案相关: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
字符进行更正:它们重叠。