![Computer Modern TFM 文件的长度](https://linux22.com/image/441175/Computer%20Modern%20TFM%20%E6%96%87%E4%BB%B6%E7%9A%84%E9%95%BF%E5%BA%A6.png)
除和之外cmfi10.tfm
,cmmi5.tfm
所有 TFM 文件计算机现代分布末尾有一个额外的 0x00 字节,这使得它们比前两个字节(lf
整数)所声称的长一个字节。顺便说一句(?),这两个例外是较新的文件(它们的日期是 1996-07-08,而不是 1992-08-10)。
这是为什么?较新的文件是由不同版本的 Metafont 生成的吗?tex.web
和mf.web
源代码中的 TFM 规范没有提到额外的 0x00。
当我用 ISO Pascal 编译 TeX 版本时,我不得不从原始 WEB 程序中省略一些文件结束检查,因为它们只有在存在额外的 0x00 字节时才有效。因此我的更改文件包含以下内容
@x
if eof(tfm_file) then abort;
for k:=np+1 to 7 do font_info[param_base[f]+k-1].sc:=0;
@y
{|eof(tfm_file)| is true after the last byte has been read}
for k:=np+1 to 7 do font_info[param_base[f]+k-1].sc:=0;
@z
是否有任何版本的 TeX 存在多余的 0x00 或缺失的问题?我假设每个版本在文件系统接口中都有系统相关的更改。
答案1
TFM 文件已更新CTAN 档案现在,它们的长度等于整数所要求的长度lf
。换句话说:多余的最后 0x00 已被删除。感谢所有参与的人!
对于我的 ISO Pascal 更改文件,这意味着像这样的语句
if eof(tfm_file) then abort;
必须继续被注释掉,因为我使用 ISO Pascal 读取文件的方式。