当我设置字体大小和基线跳跃时,我必须注意,基线跳跃对于我的字体来说足够大。有没有一种自动方法可以在 LaTeX 中检查这一点?
给出以下示例:
\documentclass[tikz]{standalone}
\newcommand{\mine}{\sffamily\fontsize{14.7}{15.2}\selectfont}
\begin{document}
\begin{tikzpicture}
\node[anchor=north west,text=green,font=\mine](first) at (0,0){\strut Test/};
\node[anchor=north west,font=\mine](first) at (0,0){\strut Test};
\end{tikzpicture}
\end{document}
生产
如您所见,文本并没有完美地叠放在一起,可能是因为斜线的高度较大。
现在如果我们采用另一种字体:
\documentclass[tikz]{standalone}
\usepackage{libertine}
\newcommand{\mine}{\sffamily\fontsize{14.7}{15.2}\selectfont}
\begin{document}
\begin{tikzpicture}
\node[anchor=north west,text=green,font=\mine](first) at (0,0){\strut Test/};
\node[anchor=north west,font=\mine](first) at (0,0){\strut Test};
\end{tikzpicture}
\end{document}
再次运行,没有出血:
如果我在第一个示例中增加\baselineskip
,文本也会适合。那么有没有一种自动的方法来检查 baselineskip 是否足够大?
该问题与 TikZ 中的位置无关,我知道我可以通过使用锚点.* base
进行正确对齐来完全避免该问题,它更多的是关于正确的定义\baselineskip
。
答案1
正如注释中指出的那样,图像中的错位实际上并不是由于基线造成的。(除非您指定宽度,否则 tikz 节点\mbox
不会使用基线计算,只有当您指定宽度时,它们才会使用minipage
,因此在换行时会使用文本指定的基线。
但是对于主要问题,TFM 字体没有任何给出字体边界的全局参数,因此您需要计算它。
基本上
\sbox0{ABC..xyz}
是\dimexpr\ht0+\dp0
垂直范围。
在框中放入要测量的内容时,您可以灵活地进行选择。您可以使用\char0
...\char255
等所有字符,但您可能还需要考虑构造重音符号,例如\'{E}
字体中可能没有的重音符号,以及脚注标记,例如X\textsuperscript{\dagger}
或其他任何您合理地期望适合段落而不会干扰行距的符号。