禁用没有上升部/下降部的行上的较短行距(setmainfont)

禁用没有上升部/下降部的行上的较短行距(setmainfont)

我正在使用带有 的系统字体,并且在使用 声明它时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,因此您可以使用它,但这只会选择较大的正文字体。

如果需要为所有文档元素提供大尺寸,最好使用具有此类设计选项的类(例如memoirextarticle具有17pt选项),或者将12pt选项与a5paper选项一起使用,然后在打印/布局阶段按 a5/a4 缩放。

答案2

TeX 会自动将包含过高内容的行隔开;考虑包含如下数学内容的行

$\frac{\int_0^1 x dx}{\int_0^1 y dy}$

这就是您在这里看到的情况,因为您的大字体缩放甚至导致普通字母也变得“高”。David 已经给出了许多解决方案来避免此问题。

TeX 还允许您使用寄存器调整插入额外填充的限制\lineskiplimitTeX 按主题分类描述,它是“垂直列表上相邻框的底部和顶部之间要保持的距离。”(默认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}

相关内容