跳过导航
学习设计

Sketch 中的排版

Sketch 中的排版

文本,就像 颜色 一样,是一个表面上看起来很简单的主题,但一旦深入研究,就会发现它绝非如此。多年来,我们了解到设计师对文本系统的期望并不总是与 Apple 和其他供应商构建的文本布局系统相符。

我们一直想改进 Sketch 处理文本的方式,但正如您继续阅读时将很快发现的那样,进行这些更改和改进需要我们深入研究 Apple 的文本渲染系统并进行一些底层更改。我们认为最终我们取得了胜利,我们希望您会喜欢这个结果。

要理解我们需要解决的一些问题,让我们首先看看 Sketch 中文本图层的垂直指标

单行文本图层的高度由文本大小的字体行高值决定。此值与文本大小不对应,并且在不同的字体之间差异很大;有时它几乎与文本大小相同,有时是两倍大小。字体在该空间内绘制的位置由基线(红色)决定,基线也由字体指定。

由于两者在字体之间差异很大,因此当您在字体之间切换时,尤其是在同一段落中混合多种字体和大小的情况下,Sketch 中的文本图层可能会发生显着变化。另一个不良影响是,当您在字体之间切换时,画布上的文本经常向上或向下移动。

经常出现在我们支持收件箱中的一个问题是 — 询问为什么 Sketch 会渲染看似空白的区域(蓝色突出显示),并且不将边界框修剪到图层中上升和下降笔画的边缘。这些也由字体的指标决定,但简单来说,某些字符需要此空间,尤其是那些包含变音符号的字符。大写 *S* 上的抑扬符(Š,在捷克语和其他斯拉夫语言中发现)和带有软音符的小写 *c*(ç,在土耳其语和法语中最常见)是许多例子中的两个。

在 Sketch 3.6 中,我们对排版文本图层的方式进行了一些更改,特别是对于具有固定行高的段落。要理解它的工作原理以及发生了哪些变化,我们需要了解 Apple 的文本系统、它如何布局文本行以及所有这些如何应用于 Sketch。

字符和字形

布局文本段落的第一步是将文本的字符和字体属性转换为字形。字形是给定字体的一个或多个字符的可视化表示。字符和字形之间的映射不是 1:1。例如,单个字形可以表示多个字符 — 这些被称为连字。以不同顺序排列的相同字符可能会产生不同的连字,因此产生不同数量的字形。我们遇到的最极端的连字是 Zapfino 字体中的“Zapfino”。这七个字符由单个字形表示

文本容器和行片段

一行可以容纳多少个字形由文本容器的宽度决定。在 Sketch 中,文本容器的大小由文本图层的宽度决定。要用字形填充文本容器,我们需要将其拆分为行。包含适合单行上的所有字形的矩形称为“行片段矩形”。只要您在段落中使用单一字体或大小,一切都会如您所愿

在正常的排版中,行片段的高度由该行上最高的字体决定(准确地说,是字体基线上方和下方的上升和下降笔画之和)。混合字体可能会产生不同高度的行片段,这才是开始变得有趣的地方

固定行高

段落还可以指定最小和/或最大行高。这限制了行片段矩形的高度。如果我们对最小值和最大值使用相同的值,我们将获得固定的行高。从历史上看,这就是在 Sketch 中设置行高的方式。它对于相同字体的段落效果很好。

具有混合字体的段落在 Sketch 中通常看起来不太正确。我们设置了固定的行高,但哪里出错了?答案是找出排版者选择将基线放置在行片段矩形内的何处。

事实证明,对于每个行片段,Cocoa 的排版者都会找到该行上最高的降部笔画,并将其用作基线从行片段矩形底部的偏移量。使用混合字体,这给了我们一个固定的行高,但不一致的基线分离。

当设计师谈论将行高设置为例如 20pt 时,他们的意思是他们希望基线之间有 20pt,而不是 20pt 高的行片段矩形。这是有道理的,因为决定文本视觉垂直节奏的是基线,它比这些抽象的矩形更“可见”。那么我们是如何解决这个问题的呢?

一致的基线

在 Sketch 3.6 中,我们引入了一种新的排版器,它可以为具有固定行高的段落生成一致的基线偏移量。为了实现这一点,我们正在查看段落中的所有行片段,并选择适合它们的基线偏移量。

即使在具有不同字体的段落之间,只要它们具有固定的行高,也可以保持一致的基线偏移量。当未设置固定的行高时,我们使用字体指示的行高,正如我们所看到的,这可能会导致不同的结果。当您将其设置为固定时,您将获得一个漂亮且可预测的垂直节奏

这如何与现有文档一起使用?默认情况下,新的文本图层使用一致的基线排版器,并且在早期版本的 Sketch 中创建的文本图层可以通过更改行高来采用新的排版行为。

其他改进

我们对行高的改进也对编辑行高低于其字体大小的段落产生了积极影响,因为基线始终位于行片段矩形内。它还改善了文本图层的边界矩形。

最后,在更改文本图层的字体时,我们尽了最大努力来保持第一个基线的位置,因此您的文本图层在更改字体时将不再在垂直方向上跳动。

最后一点

您可能已经注意到,数字排版是一个极其复杂的问题。我们生活在一个激动人心的时代,我们已经意识到几乎不可能使设计在每个设备和平台上看起来完全相同。

对我们来说,也无法创建一个完全像 iOS、Android、Windows 中的 Chrome 或 Mac 中的 Safari 那样渲染类型的系统。它们之间的渲染差异非常复杂和多样。

我们听取了您的反馈,并尝试创建一个非常一致且可靠的渲染系统。我们在此更新中着重强调行间距,但这仅仅是开始。这是我们计划今年发布的一系列类型改进的第一部分。

您可能还喜欢

免费试用 Sketch

无论您是 Sketch 的新手,还是想回来看看有什么新功能,我们都能让您在几分钟内完成设置,并准备好做到最好。

免费开始使用
免费开始使用