![TeX 中的黄金比例排版](https://linux22.com/image/268750/TeX%20%E4%B8%AD%E7%9A%84%E9%BB%84%E9%87%91%E6%AF%94%E4%BE%8B%E6%8E%92%E7%89%88.png)
Chris Pearson 在他的文章中提出了一些主张秘密交响曲:可读网页排版的终极指南,我发现这很有趣,我想知道:他提出的公式在使用 TeX 时是否适用且有用?
具体来说,皮尔逊断言,字体高度(或 x 高度),行高和行宽从而利用黄金比例我们可以通过上述两个变量来计算在网络上显示文本的优选变量,以改善外观和阅读效果。
我认为这篇文章非常有趣而且写得很好,虽然我没有资格评论其优点,但我也发现批评和评论支持了对假设的深思熟虑的方法(利用黄金比例来布局文本)。
培生甚至建立了一个网站计算相关的层叠样式表变量。
皮尔逊提出了以下方程:
(1)计算行高:
(IE
h = \varphi - \frac{1}{2\varphi}\left( 1 - \frac{w}{w_\varphi} \right)
)
和
(2)计算线宽:
(IE
w = {l_\varphi}^2[1 + 2\varphi(h - \varphi)]
)
在哪里h
是字体高度,w
是线宽,l
是行高,φ
是黄金比例。
皮尔逊接着说道:
黄金比例排版可用于微调任何媒介的排版!
使用 TeX 时,上述公式是否适用且有用?如果这是一种确定线宽、线高和字体高度之间关系的有用方法,它可以应用于 TeX 吗?如果可以,如何应用?
文章中有一些明显的考虑,因为它迎合了网络上的演示,而这些考虑与使用 TeX 排版无关,特别是关于需要对网络上的行高和其他变量进行舍入,以及需要使用字体高度,因为 x-height 不可用。还有其他的吗?
答案1
(我犯了一个错误,阅读了这篇文章......)
我从未阅读过任何有关排版的官方资料。显然,作为一名 TeX 从业者(以及曾经的业余书法家),我对排版很感兴趣,但我的知识是零,因此我的排版智慧完全基于“当我看到它时,我知道我喜欢什么”。然而,我是一名专业数学家。
让我们一步步来看一下这篇文章:
第一部分阐述了这一主张:
字体的数学比例对于读者如何看待您的网站和内容至关重要。
即使作为一名数学家,我也认为“至关重要”的用法本质上是夸张的。不过,我们暂时不考虑这一点。
第二部分介绍字体大小,行高, 和行宽经过一番讨论后,作者说道:
由此可以得出一个重要的结论:随着字体大小的增加,行高也必须增加,以保持段落的几何比例。换句话说:
字体大小和行高是成比例相关的。
现在说的x
是y
成比例相关意思x
是 是 的倍数。这比说“上升 上升”y
要强得多。后者只是意味着每个都是另一个的增函数,但增函数远不止线性的。任何优秀的 TikZer 都知道,你不希望事物总是线性缩放 - 请参阅箭头部分(PGF v2.10 中的 74.1.2)。x
y
(我在这里期望的关系是,它是需要关注的线条之间的分离,我预计会存在某种对数关系。)
线宽得到类似的处理,但结论较弱:
对于任何字体大小,行高必须随着行宽的增加而增加。
现在我们来谈谈问题的关键,即断言:
当自然界需要一个比例来关联事物并在任何尺度上提供秩序时,它倾向于使用黄金比例。
现在,黄金比例确实在“自然界”大量出现。我不会深入探讨为什么会这样(尽管有很多有趣的读物基本上说它出现在因为我们寻找它:如果常数出现在 1.6 和 1.7 之间,则错误可能足够大,以至于将其声明为黄金比例与其他任何答案一样好)。但这不是关于自然,这是关于美学的,至于美学,那么“大多数人更喜欢它”实际上是一个合理的起点。事实上,我更希望作者说“我做了一些测试,人们非常喜欢黄金比例”,而不是试图根据“自然”来证明它。(有关黄金比例美学的另一篇文章,请查看https://photo.stackexchange.com/q/8965/1422在摄影姊妹网站上。)
因此没有理由除了“[作者] 非常喜欢它”之外,其他人对使用黄金比例持不同看法。但这已经足够公平了。让我们把它当作一个公理而不是主张。
有了这个公理和比例公理,行高应为字体大小的 1.618 倍这一断言是一个合理的结论。然后我们得到关于行宽的断言:
借助基本的数学建模,您可以有根据地猜测最佳线高和线宽之间的关系是指数关系。以下是表达该关系的最简单的方程式:
w = l^2
(这里w
是线宽,l
是线高。回想一下,字体大小是l = 1.618 f
哪里。)f
这里有趣的是“基本数学建模”这句话。什么数学建模?好吧,我们得在这里做一点猜测。在询问平方规则的评论中,作者链接到http://dropshado.ws/post/12971305087/webkit-zoomed-out-font-size-threshold. 在后续文章中(http://www.pearsonified.com/2012/01/characters-per-line.php) 有一个类似的图形。
现在,您在数学学位中学到的第一件事就是问:“轴是什么?”。它们在这里很迷人。x 轴是线性的,但 y 轴不是!粗略地说,y 轴将值放在n
高度n + (n-1) + (n-2) + ... + 1
(模数它不是从 0 开始的事实)。这是因为对应于字体大小 n 的线堆叠在对应于字体大小 n-1 的线的顶部,并且如果您想象一堆盒子,其中第 n 个盒子的高度为 n,那么第 n 个盒子位于位置n + (n-1) + (n-2) + ...
(取决于您在盒子上放置标记的确切位置,第一个项可能会有所不同)。有一个公式可以解决这个问题。这个总和是n(n+1)/2
。这大致是n^2
。因此,图形最终n
以n^2
(模数某个比例常数)为基准进行绘制,并且所观察到的只是如果您拿同一个盒子并按比例缩放所有东西,则所有东西都会按比例缩放。。
因此“数学模型”被误解了。
现在,人们很容易认为线宽和字体大小之间的实际关系是成比例的。但问题是,“模型”如下:
“采用可缩放字体,用该字体以不同的字体大小排版一个句子(无换行符)。测量最终的线宽。”
这里的关键是,由于字体是可缩放的,所以所有内容都会线性缩放。因此,发现线性关系也就不足为奇了。
到目前为止得出的公式可用于确定第三个量中的任意两个量。最后一节涉及的情况是,您知道两个量,并希望优化第三个量。公式没有推导,但它们看起来有点像第一项泰勒近似。但无论如何推导,关键是(在作者看来)这些不是最佳的使用的方程。只有存在其他限制(例如,页面宽度)时才使用这些方程。因此,这些实际上只是一种转移注意力的借口。
让我们总结一下。我们有以下公理:
- 字体大小和行高是成比例相关的。
- 对于任何字体大小,行高必须随着行宽的增加而增加。
- 当自然界需要一个比例来关联事物并在任何尺度上提供秩序时,它倾向于使用黄金比例。
从中扣除的是l = 1.618 f
和w = l^2
。
我希望已经说清楚了,第二个推论w = l^2
是可疑的。而且,第一个公理实际上是从以下陈述中推导出来的:
随着字体大小的增加,行高也必须增加,以保持段落的几何比例。
这同样是一个可疑的推论。
因此,回答您的实际问题:
当使用 TeX 时,上述公式是否适用且有用?
我会回答一个平不。作者正确地指出,我们控制着各种各样的数量,我们应该意识到它们。但 TeX 已经为我们提供了通过字体大小、\baselineskip
(和\lineskip
)和来控制这些变量的方法\textwidth
。事实上,LaTeX 命令\fontsize
需要二参数,因为字体大小和行高(又名baselineskip)之间的关系是不是假定为线性的。
更好的方法是亲自试验这些值并在人们身上进行测试,看看哪些值可以提供合理的阅读体验。
受到 morbusg 的回答的启发,这里有一些代码可以让你了解这个黄金比例是什么样子。除了比较不同的字体大小外,还值得比较相同字体大小但不同字体的情况。之所以使用这个geometry
包,是因为在 20pt 时,线宽相当大。
\documentclass{article}
%\url{http://tex.stackexchange.com/q/115076/86}
\usepackage[paperwidth=100cm]{geometry}
\usepackage{fontspec}
\setmainfont{TeX Gyre Pagella}
\ExplSyntaxOn
\DeclareDocumentCommand\golden { m }
{
\begin{minipage}{\fp_to_dim:n {#1*#1*1.618*1.618}}
\fontsize{#1}{\fp_to_dim:n {#1 * 1.618}}\selectfont
\hissmile
\end{minipage}
\bigskip
}
\ExplSyntaxOff
\newcommand\hissmile{%
Laura stood across the street waiting for the people to come out from the picture-show. She couldn't have said just why she was waiting, unless it was that she was waiting because she could not go away. She was not wearing her black; she had a reason for not wearing it when she came on these trips, and the simple lines of her dark-blue suit and the smart little hat Howie had always liked on her, somehow suggested young and happy things. Two soldiers came by; one of them said, ``Hello, there, kiddo,'' and the other, noting the anxiety with which she waited, assured her, ``You should worry.'' She looked at them, and when he saw her face the one who had said, ``You should worry,'' said, in sheepish fashion, ``Well, I should worry,'' as if to get out of the apology he didn't know how to make. She was glad they had gone by. It hurt so to be near the soldiers.
}
\begin{document}
\golden{10pt}
\golden{12pt}
\golden{20pt}
\end{document}
答案2
需要特别注意的是,问题中的公式之所以如此,是因为:
不过,这里有一个小问题:网络并不像这些方程式那么精确。
您会发现,网页设计师只能使用整数值来表示字体大小、行高和行宽(在亚像素渲染成为现实之前,情况一直如此)。
有了 TeX,我们就不需要那些“校正”方程了。
这是我的尝试(纯 XeTeX),但请注意,我无法让 TeX 执行某些计算(希望我理解正确):
% Our test subject font:
\font\tenrm="Minion Pro:mapping=tex-text" at 11bp \tenrm
\font\tenit="Minion Pro/I:mapping=tex-text" at 11bp
\baselineskip=1.618\fontdimen6\font
%
% \hsize=\dimexpr\baselineskip*\baselineskip
% Doesn't work, but it is:
\hsize=319.148446488500742pt
\vsize=1.618\hsize
% Repeat for typeblock width in relation to paper width, etc.
\input TeX/his_smile
\bye
(文字来自古特堡计划)