我正在使用带有 的系统字体,并且在使用 声明它时fontspec
使用了选项。Scale
\setmainfont
我发现,每当我使用该Scale
选项时,行距就不再一致。如果两行连续的行没有上升部或下降部,则它们之间的间距非常紧密。如果两行之间甚至有一个上升部/下降部,则间距会调整到足够的程度,从而不会重叠。
有没有什么方法可以恢复一致的行距而不必牺牲选项Scale
?
这是一个直观的示例,以及我用来生成它的代码:
\documentclass{article}
\usepackage{lipsum}
\usepackage{fontspec}
\setlength{\parindent}{1cm}
\setmainfont[Scale=1.7]{HoeflerText-Roman}
\begin{document}
This is a test aaaa aaaa aaaa aa a aa aa aa a a aa a aajaa a aaaaa a aaajaa aaa aaaa a aaaa aa a aa a aaaAAAaaa a aa a aa a
\end{document}
答案1
缩放字体时,您需要确保行间距足够大以容纳字符。在字体加载中使用缩放旨在进行细微调整以调整不同的字体,以便以某种方式匹配,也许使两种不同的字体在以相同的标称尺寸加载时具有相同的 x 高度。
因为每次你要求一个 10pt 字体(在默认的 12pt 基线上)时,你都会用一个不适合的 17pt 字体替换,所以 tex 无法在指定的 12pt 处保持均匀的间距\baselineskip
,所以它会尽可能紧密地打包线条,并用\lineskip
(1pt)将它们分开
因此,您可以增加基线间距,\linespread{1.6}
但指定 17pt 字体会更自然。
默认类别中,\LARGE
基线为 22pt,为 17pt,因此您可以使用它,但这只会选择较大的正文字体。
如果需要为所有文档元素提供大尺寸,最好使用具有此类设计选项的类(例如memoir
或extarticle
具有17pt
选项),或者将12pt
选项与a5paper
选项一起使用,然后在打印/布局阶段按 a5/a4 缩放。
答案2
TeX 会自动将包含过高内容的行隔开;考虑包含如下数学内容的行
$\frac{\int_0^1 x dx}{\int_0^1 y dy}$
这就是您在这里看到的情况,因为您的大字体缩放甚至导致普通字母也变得“高”。David 已经给出了许多解决方案来避免此问题。
TeX 还允许您使用寄存器调整插入额外填充的限制\lineskiplimit
。TeX 按主题分类描述,它是“垂直列表上相邻框的底部和顶部之间要保持的距离。”(默认0pt
)。
如果将其设为大且为负数,则不会插入额外的空间(但连续行中的材料可能会发生冲突):
\documentclass{article}
\usepackage{fontspec}
\setmainfont[Scale=1.7]{Times}
\lineskiplimit=-999pt\relax
\begin{document}
This is a test aaaa aaaa aaaa aa a aa aa aa a a aa a aajaa a aAAAaa a aaajaa aaa aaaa a aaaa $\frac{\int_0^1 x dx}{\int_0^1 y dy}$ aa a aa a aaaAAAaaa a aa a aa a
\end{document}