在您的工作目录中:
$ tftopl cmr10.tfm > cmr10.pl
改变cmr10.pl
n 顺序,字符 A 具有不同的宽度,B 具有不同的高度:
--- cmr10.pl.orig
+++ cmr10.pl
@@ -466,7 +466,7 @@
(CHARHT R 0.694445)
)
(CHARACTER C A
- (CHARWD R 0.750002)
+ (CHARWD R 0.1)
(CHARHT R 0.683332)
(COMMENT
(KRN C t R -0.027779)
@@ -483,7 +483,7 @@
)
(CHARACTER C B
(CHARWD R 0.708336)
- (CHARHT R 0.683332)
+ (CHARHT R 0.1)
)
(CHARACTER C C
(CHARWD R 0.722224)
在您的工作目录中创建“坏指标”cmr10.tfm:
$ pltotf cmr10.pl
生成格式:
$ pdftex -ini '\input plain \dump'
创建测试文档:
$ pdftex -fmt plain -jobname wd \\pdfoutput=1 Ab\\end
$ pdftex -fmt plain -jobname wd \\pdfoutput=0 Ab\\end
$ pdftex -fmt plain -jobname ht \\pdfoutput=1 x\\par\\nointerlineskip B\\end
$ pdftex -fmt plain -jobname ht \\pdfoutput=0 x\\par\\nointerlineskip B\\end
wd.dvi
与进行比较wd.pdf
然后ht.dvi
与ht.pdf
- 为什么宽度被 xdvi 校正,而高度没有?
答案1
我想你的问题是:为什么没有wd.dvi
经过校正就显示出来,而其他所有实验都显示了校正。xdvi
tfm
所有字符的宽度都复制到pfb
字体文件中,即该命令hsbw
使用左侧边距和宽度值。您可以尝试这样做
t1disasm cmr10.pfb > cmr10.pps
并查看cmr10.pps
字符/A
。 是32 750 hsbw
在这里。 因此, 的宽度为 750/1000 em,使用A
不同的度量标准无关紧要。 Xdvi 使用这些数据。排版命令是“打印 A,然后打印 b”,中间没有任何校正。tfm
dvi
另一方面,wd.pdf
尊重更正的tfm
。为什么?您可以使用\pdfcompresslevel=0
来查看 pdf 文件中的更多信息(使用普通文本编辑器)。我们在这里看到了什么?首先。命令[(Ab)] TJ
在这里,所以打印命令是相同的:“打印 A,然后打印 b”。字体 CMR10 已下载。您可以剪切字体数据(从 到stream
没有endstream
它们)并应用t1disasm
。然后您可以看到字体已部分加载,只有字母/A
和/b
数字/one
。而 是32 750 hsbw
字母的/A
。为什么 PDF 查看器知道使用了更正的度量?因为有一个包含数据的下一个对象。从第一个字符到 的[500 500 500 ... 555.6]
宽度在这里。您可以看到第 17 个数字是 100。这是从更正的度量得到的 的宽度。PdfTeX 将数据从使用的度量复制到此对象进入 PDF 输出,PDF 查看器使用它们。/one=49
/b=98
/A
tfm
为什么高度实验会给出正确的结果(使用修正的度量)?因为pfb
字体不包含高度度量数据,并且所有垂直移位都由打印命令(在dvi
或 在PDF
)精确执行。