角色框的尺寸与 .afm 和 .tfm 文件中的尺寸

角色框的尺寸与 .afm 和 .tfm 文件中的尺寸

为了明确起见,我们假设用来pdfLaTeX编译这个:

\documentclass[10pt]{article}
\usepackage{lmodern}
\begin{document}
\thispagestyle{empty}
\setlength{\fboxsep}{0pt}
\setlength{\fboxrule}{0.0001pt}
\fbox{a}
\end{document}

输出为

在此处输入图片描述

我确实理解显示的框不是真正的边界框是有充分理由的(特别是字形的顶部和底部突出,而字形和框的左右两侧之间存在间隙)。

另一方面,这是一个字形lmr10.pfb(我知道这是因为pdffonts告诉我字体是LMRoman10-Regular,而lm.map包含行

cs-lmr10 LMRoman10-Regular "enclmcs ReEncodeFont" <lm-cs.enc <lmr10.pfb

当我检查时lmr10.afm,我看到了

C 97 ; WX 500 ; N a ; B 32 -11 483 448 ;

当我检查cs-lmr10.vpl(由 生成cs-lmr10.tfm)时tftopl,出现了以下内容:

(CHARACTER C a
   (CHARWD R 0.5)
   (CHARHT R 0.445274)
   (CHARIC R 0.010777)

最后,我可以lmr10.pfb在 中进行检查FontForge,结果发现 中列出的值lmr10.afm是字形“a”的真实边界框的尺寸:在 中FontForge,字形的最左边的点具有X-坐标 32,最低点有-坐标-11,最右边的点有X坐标 483,最高点有-坐标 448。

据我所知,列出的值cs-lmr10.vpl给出了由 生成的框的宽度\fbox{a},而不是高度。这可以通过目视检查;但同时,使用 \heightoffromcalc包,我们得到高度为 4.3056 pt。

如果有人质疑这一切是否都是 的产物\fbox,我们也可以进行以下测量:\heightof{\mbox{a}}\heightof{\hbox{a}}\heightof{a}, 和\widthof{\mbox{a}}\widthof{\hbox{a}}\widthof{a}。所有高度均为 4.3055 pt,所有宽度均为 5.0 pt。

我的问题:

  1. LaTeX 如何确定 生成的框的几何形状\fbox?例如,这个 4.3056 pt 的高度来自哪里?如果(看起来是这样)它既不是来自 .afm 文件也不是来自 .tfm 文件,那么它来自哪里?

  2. 在 LaTeX 中,是否可以将“a”放在与字形的真实边界框重合的框中(不一定是带框的框)?我们可以使用它来执行以下操作:当我们使用命令将该\put(10,10)框(包含可见字形“a”)放置在页面上时,最终在坐标 (10,10) 处出现的是字形的真实边界框的左下角?应该发生的另一件事是,当我们将\heghtof\widthof应用于该框时,我们会得到字形的真实边界框的高度和宽度。

(当然,我的意思是,无论我们使用什么字体,我们能否仅使用 LaTeX 的内部资源来完成上述操作?我们不应该每次都弄清楚每个我们感兴趣的字形来自哪种字体,然后自己去查看相应的 .afm 文件并手动设置 LaTeX 文档中的坐标。)

答案1

您想查看 rm-lmr10 而不是 cs-lmr10,

测试文件的修改版本

\documentclass[10pt]{article}
\usepackage{lmodern}
\begin{document}
\thispagestyle{empty}
\setlength{\fboxsep}{0pt}
\setlength{\fboxrule}{0.0001pt}
\fbox{a}

\sbox0{a}
\typeout{box:
\the\ht0,
\the\dp0,
\the\wd0}
\typeout{tfm:
\the\fontcharht\font`a,
\the\fontchardp\font`a,
\the\fontcharwd\font`a}
\typeout{font:\the\font}
\typeout{meaning:\expandafter\meaning\the\font}

产生终端输出

box: 4.3055pt, 0.0pt, 5.0pt
tfm: 4.3055pt, 0.0pt, 5.0pt
font:\OT1/lmr/m/n/10 
meaning:select font rm-lmr10

注意最后的rm-lmr10

然后tfopl rm-lmr10.tfm产生

(CHARACTER C a
   (CHARWD R 0.5)
   (CHARHT R 0.43055)
   (CHARIC R 0.010777)

宽度和高度与您从 TeX 看到的尺寸完全匹配。

相关内容