sketch可以用于书籍排版吗

Text就像是表面上看起来很简单的┅个主题,但一旦你挖掘出来它变得显而易见了。多年来我们了解到,设计人员期望从类型系统中Apple和其他厂商如何构建其文本布局系统并不总是如此。

Sketch处理文本的方式是我们想要改进的一段时间但是随着您继续阅读,您很快就会发现进行这些更改和改进需要我们罙入苹果的文本渲染系统并进行一些低级别的更改。我们认为我们最终出现了胜利我们希望你会喜欢这个结果。

要了解我们需要解决的┅些问题我们首先来看一下Sketch中文本图层的垂直度量:

单行文本图层的高度由字体的文字大小的行高值确定。这个值与文字大小不符不哃的字体差异很大; 有时它与文字大小几乎相同,在其他时候它的大小是两倍字体在该空间内绘制的位置由基线(红色)确定,也由字体指定

既然两者在字体之间变化如此之大,当您在字体之间切换时Sketch中的文本图层可能会发生很大变化,特别是在同一段落中混合多种字體和大小时另一个不良影响是,当您在字体之间切换时画布上的文字经常会向上或向下移动。

常常出现在我们的支持收件箱中的问题 - 詢问为什么Sketch渲染看似空白的区域(以蓝色突出显示)并且不会将边框修剪到图层中的上升沿和下降沿。这些也由字体的指标决定但简單地说,这个空间是一些字符特别是那些含有变音符号的人所需要的。可以出现在大写字母S(?,以捷克语和其他斯拉夫语言发现)的卡罗恩和一个带有雪松子的小写字母c(?,最常见于土耳其语和法语)是许多例子中的两个。

在草图3.6中我们对排版文本图层的方式进行叻一些更改,特别是对于具有固定行高的段落要了解它的工作原理以及改变的内容,我们需要看看苹果的文本系统它如何显示文本,鉯及如何应用于Sketch

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

我们可以在一行上适合多少个字形由文本容器嘚宽度决定。在草图中文本容器的大小由文本图层的宽度决定。要用字形填充文本容器我们需要将其拆分成行。包含适合单行的所有芓形的矩形称为“线条矩形”只要你在一个段落中使用一个单一的字体或大小,一切看起来都可以预期:

在正常排版中行片段的高度甴该行上最高的字体确定(确切地说,字体的上升和下降到基线以下)混合字体可以产生不同高度的线条片段,这是开始变得有趣的地方:

段落还可以指定最小和/或最大行高这限制了片段矩形的高度。如果我们对最小和最大值使用相同的值我们得到一个固定的行高。曆史上这是Sketch中的设置线高度。它适用于相同字体的段落

具有混合字体的段落在Sketch中通常看起来不正确。我们设定了一个固定的线路高度那么出了什么问题?答案是找出排版选择器将线条放置在行片段矩形中的位置

事实证明,对于每一行片段Cocoa的排版工具都会在该行上找到最高的后缀,并将其用作从片段矩形底部的基线偏移量使用混合字体,这给我们一个固定的线高度但是基线间隔不一致。

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

在草图3.6中,我们引入了一种新的排版机为固定行高的段落产生一致嘚基线偏移。为了做这个工作我们正在查看段落中的所有行片段,并选择适合它们的基线偏移量

即使使用不同的字体,只要它们具有凅定的行高段落之间也保持一致的基线偏移。当没有固定线高度设置时我们使用指示的字体,我们看到可以留下不同的结果当您将其设置为固定时,您将获得一个美丽可预测的垂直节奏:

这与现有文件如何配合默认情况下,新文本图层使用一致的基准排版列表而茬早期版本的Sketch中创建的文本图层可以通过更改行高度来采用新的排版行为。

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

最后,当更改文本图层的字体时我们已经做了一些长度保留第一个基准的位置,所以当在字体之间切换时文本图层将不再垂直跳转。

您可能已经注意到数字排版是一个非常复杂的问題。我们生活在一个激动人心的时代在这个令人兴奋的时代,我们已经意识到在每个设备和平台上,使设计看起来完全一样几乎是鈈可能的。

对于我们来说也不可能创建一个系统,将类型类似于iOSAndroid或Chrome在Windows中,或Safari中的Safari它们之间的渲染差异非常复杂和多样。

我们听取了您的反馈并尝试创建一个非常一致和可靠的渲染系统。我们非常重视这一更新的行距但我们刚刚开始。这是我们今年计划发布的一系列类型改进的第一部分

}

对于大部分UI设计师来说每天的笁作都充实且富有挑战性。比如:界面设计、工具运用、动效制作、代码切图、前后端协作等等但是偶尔也要面对一些非常费时间的设計需求。

尤其是大批量文字排版看起来简单,但是总会让很多设计师头疼一般情况下,对于大批量的文字我们都会用测试文本临时玳替,等技术开发的时候再直接文本录入定义好样式,后期的文案变动和设计师基本无关

不过,也有很多设计师为了界面展示目的戓在需求方的奇葩要求下,把文本严格按照需求提供的填充到界面中来比如我们做一个简单的活动规则手机页面,总共有5个段落

很简單,直接复制粘贴做一个文本图层,调整好样式即可同时不要忘了右侧的 Paragraph 属性,让每个段落产生间距

虽然这么做很快,但毕竟是一種讨巧的方案会出现下面几个问题。

  • 如果需求方后期要在中间加入图片我们只能通过原始的换行来给图片腾出空间;
  • 由于是一个文本圖层,如果出现标题等样式无法进行 text-style样式控制;
  • 数字序号和文本没有区分,可读性不强影响用户体验。

对于第三个问题数字序号出现嘚影响阅读可以看下图对比。PS和AI有对应的小技巧就是段落的首行缩进,改成负值即可技术上也有解决方案,比如前端 CSS 中的 text-indent属性也鈳以改成负值来实现。具体可以看这篇文章

但是在 Sketch 中却没有对应的样式,我们只能单独把序号分离出来进行排列总之上面的传统方法無法满足快速、方便、可修改的要求。如果是更多的条目无疑会加大我们的设计成本。

所以该拿出我们的杀手锏了——Kitchen插件

关于这个插件,之前写过一篇文章详细介绍了Kitchen自动排版的用法。我们其实可以把这个功能扩展利用在文本段落中来解决上文出现的问题。还是拿这个活动规则为例我们一起试试把它的样式完全掌握在自己手中。

一般的标号都是从数字1开始的一直到N。这里我们做个简单的样式同时转化为 symbol,方便后期统一修改养成良好的设计习惯。

这里我们就不能用一大段文字加段落间距来处理了需要把每段规则单独建文夲层。这里宽度我们先随便拉伸固定到一个差不多的值高度需要它的弹性特点,所以不要进行拉伸

现在我们有了第一条暂时还没有内嫆的规则,序号 symbol 和右侧文本进行编组接下来复制四个,然后利用 Kitchen 设置好每行的间距这里我设置了20。

同时我们现在再看下目前的图层状況

接下来我们要在 Kitchen 的数据填充功能中,添加活动规则的全部5条文本内容需要注意两点:一是不要带序号,二是每段之间换行即可不偠空行。实际操作中我们可以让需求方提供遵守上述规则的文本txt文件,直接复制粘贴同时要勾选保持顺序,否则每段会随机排列

最後一步,选中五个段落层点击刚才在 Kitchen 创建的规则文本,即可实现快速文案填充而且每段的高度虽不固定,但是间距却能在 Kitchen 自动排版功能下一直保持在我们设置的20

基本搞定,剩下的就是数字序号当然了,我们可以一个个修改但是如果有很多项,改起来就特别费劲所以可以利用刚才的文案填充来实现。

同样的方法建立数字序号填充文本1、2、3、4、5……每个数字换行。这里需要注意的是对于顺序数芓来说,我们在设计的时候经常会用到频率非常高。所以设计师很有必要建立一个顺序数字文本源这里给大家提供1-200的数字源,实际工莋中已足够使用点击下载。

对于选择目前有5个序号,如果是几十个选择操作会很麻烦,需要一个个点选这里再提供一个插件,叫莋 Select Similar Layers可以根据名称、样式、描边等属性进行同时选择。由于数字序号开始就被我们做成了 symbol因此它们具有相同的 name属性,而且 symbol 中的 text 由于被嵌套了一层所以同一层级上是无法被 Kitchen 文本填充识别的,不会被影响

先选中第一个序号,然后按 Select Similar Layers 的快捷键 control+alt+7(其他常用属性都有对应快捷键)就可以选择相同名称的图层。接下来用 Kitchen 填充顺序数字编号

当然了,我们也可以利用 Sketch 的 Filter 图层过滤功能来进行同类筛选选择 symbol,会筛选當前页所有 symbol 元素接下来还可以利用文字名称再次进行二次筛选,之后按 shift键进行全选即可

Sketch 的 Filter 功能还是挺实用的,一共内置了形状、文本、图片、组、切片、原型和symbol七种类型好好利用会带来很多效率提升。

到此为止我们已经建立好能全局控制的活动规则页面。

如果后面需求方说规则1下面需要加一张图片很简单,直接放入图片每条之间的间距会自动排列。

如果第1条的文案变化了高度也相继改变,那麼下面的元素也会自动补充始终保持固定的间距。

如果我们是先加好图片再进行文案填充也是可以的Kitchen 的数据填充会忽略掉图片和同一層级的 symbol。

还有一点如果图层是6个,只有5段文案那么全部填充后,第6条会填充第一段的文案多余的我们最后删掉即可,不用担心发生混乱

最后我们再看下利用 Sketch 强大的 Resizing 功能,实现弹性宽度的图文段落自动排列序号symbol 宽高固定,位置左固定;图片宽高固定位置左固定;段落只需要位置左固定即可。

我一直认为一名合格的UI设计师应该成为公司(或项目)中设计问题解决方案提供者。面对各种问题除了洎身的能力和经验外,还应该充分了解和利用众多工具的特点来解决相应问题提高设计效率,避免无用的工作量

比如本文的活动规则排版解决方案,如果面对的是十几条甚至几十条就会凸显出巨大优势其实 Sketch 本身也有数据源文本填充功能,但是只能随机填充无法按照順序,所以 Kitchen 插件还是给我们提供了一个比较不错的解决方案的

希望这篇文章能给各位设计师带来一些其他方面的启发和实际应用。

欢迎關注作者的微信公众号:「UI黑客」

文章为作者独立观点不代表优设网立场未经允许不得转载。

}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信