考虑以下 MWE,其中第一节标题包含带上升部的字母,而第二节标题不包含:
\documentclass{article}
\usepackage{fontspec}
% https://github.com/adobe-fonts/source-serif-pro or
% https://ctan.org/pkg/sourceserifpro
\setmainfont{Source Serif Pro}
\begin{document}
\section*{\rlap{\rule{8.5in}{0.04pt}}bbbbb}
\leavevmode\rlap{\rule{8.5in}{0.04pt}}bbbbb
\newpage
\section*{nnnnn\llap{\rule{8.5in}{0.04pt}}}
nnnnn\llap{\rule{8.5in}{0.04pt}}
\end{document}
为什么两个部分标题的基线不对齐?我尝试了以下测试:
- 基线进行对齐:当在 Computer Modern(没有
fontspec
pdfLaTeX 且在 pdfLaTeX 下)、Latin Modern、TeX Gyre Termes 等中设置时。 - 基线不对齐:当我设置一些我拥有的商业字体时。
- 基线进行对齐:仅包含正文
bbbbb
和nnnnn
(即注释掉两个\section*
),适用于所有上述字体,包括 Source Serif Pro 和其他商业字体。
第三个观察结果确实让我大吃一惊……
答案1
Source Serif Pro 中的 b 比 latin modern 中的 b 大。更重要的是,在章节标题中,它的高度大于 \topskip。这意味着它的基线将在页面开头向下移动 0.45pt。如果您想避免这种效果,请使用此类字体放大 \topskip。
\documentclass{article}
\usepackage{fontspec}
\begin{document}
\section*{\the\fontcharht\font`\b bbbb}
\setmainfont{Source Serif Pro}
\section*{\the\fontcharht\font`\b bbbb}
\the\topskip
\end{document}