‘endash’ 和 ‘emdash’ 元字体字符上有伪线?

‘endash’ 和 ‘emdash’ 元字体字符上有伪线?

运行以下命令:

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 页)。

v 和 w

问题出在哪里?

垂直线是由 引入的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 页找到答案(已回答)。

相关内容