在 XeLaTeX 和 LuaLaTeX 中使用 \fontsize

在 XeLaTeX 和 LuaLaTeX 中使用 \fontsize

Wikibooks/TeX 中有关字体的文章,其中规定

\tiny对于大多数内容来说, ...命令通常已经足够了。但是这些\Huge是固定大小。在大多数文档处理器中,您通常可以为任何字体选择任何大小。这是因为字符实际上会被放大。如果它通常在中等大小下看起来正确,那么由于厚度不平衡,它在极端尺寸下会看起来很奇怪。在 TeX 中,可以更改任何内容的放大倍数,但由于上述原因,强烈建议不要这样做。更改字体大小是通过更改字体文件来完成的。是的,每个尺寸都有一个文件:cmr10Computer Modern Roman 10pt、cmr12Computer Modern Roman 12pt 等。这可确保字符正确平衡并在所有定义的大小下保持可读性。

我不知道他们所说的“厚度不平衡”到底是什么意思(附带一个问题:这是什么意思?)。但是,如果我fontspec在 XeLaTeX 或 LuaLaTeX 中使用系统字体,那么据我所知,没有适合每种字体大小的文件。因此,fontspec大字体是否会因此产生更糟糕的结果?最后,我的主要问题是:在使用时,是否仍然不鼓励使用\fontsize任意字体大小fontspec

答案1

一个例子胜过千言万语;我使用了 Plain TeX 来更好地展示正在发生的事情,并显示了明确的大小。

\font\testhuge=cmr17 \font\testhugescaled=cmr17 at 10pt
\font\testbig=cmr12  \font\testbigscaled=cmr12 at 10pt
\font\testsmall=cmr7 \font\testsmallscaled=cmr7 at 10pt
\font\testtiny=cmr5  \font\testtinyscaled=cmr5 at 10pt

\offinterlineskip

{\testhuge ABCDE}
\vskip1pt
{\testbig ABCDE}
\vskip1pt
ABCDE
\vskip1pt
{\testsmall ABCDE}
\vskip1pt
{\testtiny ABCDE}

\bigskip

{\testhugescaled ABCDE}
\vskip1pt
{\testbigscaled ABCDE}
\vskip1pt
ABCDE
\vskip1pt
{\testsmallscaled ABCDE}
\vskip1pt
{\testtinyscaled ABCDE}

\bye

请注意,中间是正常大小的字体cmr10

在此处输入图片描述

在上半部分,字体都是标称大小;除了最后一行cmr5使用 外,黑色和白色的比例非常相似。

在下半部分,字体被标准化为 10pt;如您所见,字体越大,字体越淡,字体越小,字体越粗。此外,缩放小字体会导致字符变宽,大字体则相反。

将单个字体缩放至 17pt 会导致字干和曲线变粗;将其缩放至 7pt 会导致字干和曲线变细。当大写字母被缩小以模仿小写字母时,这一点很容易看出。

一个简单的例子是首先使用该选项编译以下文件[sc],然后不使用(因此在后一种情况下将使用假小型大写字母)。

在此处输入图片描述 在此处输入图片描述

差异很明显:比较两种情况下F和的词干。K

一些 OpenType 字体有不同的光学尺寸,但它们是商业性的且价格昂贵。绝大多数字体只有一个尺寸可以缩放。良好的提示有助于缩小尺寸,但在扩大尺寸时,缩放非常明显。

使用 XeTeX 编译以下内容:

\font\testhuge="EB Garamond" at 17pt
\font\testbig="EB Garamond" at 12pt
\font\testnormal="EB Garamond" at 10pt
\font\testsmall="EB Garamond" at 7pt
\font\testtiny="EB Garamond" at 5pt

\offinterlineskip\testnormal

{\testhuge ABCDE}
\vskip1pt
{\testbig ABCDE}
\vskip1pt
ABCDE
\vskip1pt
{\testsmall ABCDE}
\vskip1pt
{\testtiny ABCDE}

\bye

在此处输入图片描述

您可能需要使用[EBGaramond12-Regular.otf]“EB Garamond”来代替。很明显,大尺寸字体看起来更粗,小尺寸字体则相反。

在这种情况下,使用不同的字体(例如无衬线字体)来显示大尺寸字体是有意义的;当然,Garamond 字体不是,解决办法是不使用大尺寸。

答案2

这段引文(以及问题:-)似乎混淆了不同的概念。

使用设计大小的字体和简单放大字体之间存在差异。 (因此,如其他答案所示,cmr10 缩放到 12pt 和 cmr12 之间存在差异)。请注意,这实际上是关于计算机现代字体的区别,而不是关于 TeX 或 pdftex 与 xetex 或 luatex 之间的区别。即使在 10pt 文档大小下使用经典 TeX,latex 也会混合使用设计大小和缩放字体\LARGE\huge例如\Huge和 都是 的缩放版本cmr17,如果使用[11pt]文档类选项,则默认的“11pt”字体是 的缩放版本cmr10。相反,如果将 pdftex 与大多数可缩放字体系列(例如 Times)一起使用,则字体仅在一个名义上的 10pt 大小下可用,因此所有大小都使用缩放字体。

使用fontspec并没有真正改变这一点,它可以访问更多的字体,而且更多的字体仅在一种设计尺寸下可用,但它可以允许指定不同的设计尺寸,例如拉丁现代字体取代计算机现代字体作为默认值。

LaTeX 使用相同的逻辑来选择是否对特定大小使用缩放字体,而不管该字体是由\huge还是\fontsize{}{]实际上\huge只是一个扩展为 的宏选择的\fontsize。因此,是使用命名大小还是明确长度的选择与设计大小字体的问题无关。在文档中使用大量不同大小的字体会分散注意力,通常被认为是一个坏主意,因此使用\scalebox缩放文本是一种可疑的做法,就像\fontsize{3cm}{2in}在每个段落中使用不同的大小一样。使用类指定的命名字体大小有助于保持一致的外观,并且适用于无论这些大小是通过缩放相同字体还是使用单独的设计大小字体或两者混合来实现的。

答案3

在我截取屏幕截图之前,使用 Computer Modern 并在 PDF 上使用较大缩放系数的“正确平衡厚度”的示例:

\documentclass{article}
\begin{document}
{\Huge ABCDEF}

ABCDEF
\end{document}

在此处输入图片描述

将 A 的高度与其右衬线的宽度进行比较。大号字体大约高 281 像素,衬线大约宽 85 像素(30% 比例)。常规字体大约高 113 像素,衬线大约宽 38 像素(33% 比例)。每种字体大小在许多属性中都有略微不同的尺寸,以使所有尺寸的字体都更具可读性。

相比之下,一个简单的 XeLaTeX 示例:

\documentclass{article}
\usepackage{fontspec}
\setmainfont{Calibri}
\begin{document}
{\Huge ABCDEF}

ABCDEF
\end{document}

在此处输入图片描述

显示两种尺寸下任意给定长度对的恒定比率。字体大小在这里只是按比例放大或缩小。

答案4

厚度不平衡可能指的是缩放字体会产生更粗的大字符和更细的小字符,总是与给定字体的“正常”或预期大小相比。

如果你有一个具有不同光学尺寸的系列字体(例如 Minion Pro),你可以平衡字符粗细,这样标题、说明文字等看起来就与常规/普通字体差不多,即既不更细也不更粗。当然,您可以根据自己的喜好修改这些选项。

如果您没有不同的光学尺寸,fontspec 将只会缩放字体。

相关内容