运行以下命令:
mf cmr10
mktextfm gray
gftodvi cmr10.2602gf
最后两个字符右侧有一条竖线。那是什么?
答案1
Metafont 书第105页:
斜体左括号右侧的垂直线显示了该字符的斜体校正,即前面提到的第四个框维度。
答案2
垂直线表示斜体更正,如已回答。因此,这个“答案”可能完全是多余的和无用的,但只是分享我在看到@Henri Menke 的答案之前如何得出这个结论:
问题是什么?
mf cmr10
生成cmr10.2602gf
,并gftodvi cmr10.2602gf
生成cmr10.dvi
文件。您问的是cmr10.dvi
查看 时出现的这些垂直线:
这是一个问题吗?
如果您查看 dvi 文件的其余部分,除了您提到的 – (第 127 页)和 — (第 128 页)之外,您还可以看到类似的垂直线,分别为 V(第 22 页)、W(第 23 页)、Y(第 25 页)、f(第 32 页)、g(第 33 页)、v(第 48 页)、w(第 49 页)、y(第 51 页)、ffi(第 119 页)。
问题出在哪里?
垂直线是由 引入的gftodvi
还是已经在 的输出中了mf
?我们可以使用gftype -mnemonics cmr10.2602gf
并看到(绘制指令)垂直规则已经存在于cmr10.2602gf
生成的中mf cmr10
。
缩小问题范围
调用的日志mf cmr10
显示它正在打开,/usr/local/texlive/2017/texmf-dist/fonts/source/public/cm/cmr10.mf
因此我们可以将该文件复制到stupid.mf
当前目录中,并查看是否可以重现mf stupid && gftodvi stupid.2602gf
。接下来在日志中查看它包含的文件,将其复制并重命名(并包含重命名的文件),依此类推……直到您发现字符来自comlig.mf
。将其复制stupidcomlig.mf
并删除所有其他字符并仅保留短划线后,我们可以开始删除字符定义中的指令
cmchar "En dash";
beginchar(oct"173",9u#,x_height#,0);
italcorr .61803x_height#*slant+.5u#;
adjust_fit(0,0);
pickup crisp.nib; pos1(vair,90); pos2(vair,90);
top y1r=top y2r=vround(.61803h+.5vair); lft x1=-eps; rt x2=w+eps;
filldraw stroke z1e--z2e; % bar
penlabels(1,2); endchar;
逐一:大多数会出现错误或不正确的输出,但删除该italcorr
线会使“虚假”垂直线消失。
此时,你可以在索引中查找“斜体修正”METAFONTbook并在第 102 和 105 页找到答案(已回答)。