[自译]理解Sketch文字渲染细节

最近也是在工作中遇到很多文字渲染的坑...因为在Sketch中的渲染方式与IDE中的不同,会采用默认的线高,这样会比Sketch里面调整过的精确高度来的松散...想要找到一个很好的解决方法,这篇文章算是解读了Sketch的文本渲染方式吧,还是有一定的探索价值,嗯,可以去原文看看

原文链接:Get Down to the Nitty-Gritty of Text Rendering in Sketch

原文作者:Yakim


你是否曾经在Sketch中使用过文本层,但是不知道具体是怎么回事呢?这种困惑让我决定做一些研究,去弄清楚Sketch是如何渲染文本层的。

文本渲染是一个复杂的事情,特别是与很多其他的图层在一起的时候。这篇文章,我会和你分享我理解的Sketch文本渲染。

边界框代表什么?

你在Sketch中见过,灰色的线框盒子在画布中包围了文本层。它也可以被手柄调整大小。但这个尺寸是是如何确定的呢?为什么不会吸附到文字的具体像素边界上呢?字母周围的空白区域是什么?

线框的实际大小是基于你所使用的字体,每种字体都会有内置的全局字体度量,Sketch会使用字体的这些指标来确定画布上文本层的线框:

Cap Height:大写字母的高度

x-Height:小写字母的高度(特别是小写的x)

Ascender:字母的顶部会溢出多少(例如b k,l,ß)

Descender:字母底部会溢出多少(例如p, j, y, q)

这些标准都是在Adobe Font Metrics文件格式规范中定义的,大多数现代字体都遵循这套规范。

这些度量加起来,就是我们常说的em,你可能会知道这些盒子,它们就像是活字印刷,一种排版技术,在金属块上雕刻字符,然后把字符拼在一起,就形成了一个句子,在纸上拓印出来。

Sketch会根据图层的线高来输出文本的高度,线高就是基于上面的指标。

Sketch如何处理文本的副像素?

现在你可以理解文本层是如何被Sketch渲染的了,但是如果文本层有副像素出现呢?为了不让文字看起来模糊,Sketch会将文字的基线贴近到最近的y位置。看起来会整洁。

而且线高出现了小数的时候也是这样处理。

间距

文本层的y值是Sketch中可以调整的元素之一。字体爱好者也可以根据文本框中的内容进行更多的调整。

字符间距

通过字符间距,你可以调整单个字母之间的水平间距。字符间距也是以像素为单位衡量的,默认情况下,Sketch使用0.1px作为增量,你也可以按住shift,调整增加1px的增量。

但是在使用字符间距的时候会有一个警告:它禁用了字距。字距是嵌入在字体文件中的信息,用于指定特定字母子和的字符间距信息。这基本上是字体设计师才会做的调整,创建字符之间的理想距离,使字符之间看起来有相同的视觉空间。

即使你将字符间距设置为0,也仍然会禁用字距。

启用字距调整,需要删除移除输入的数字并提交空的的输入内容。这会将输入的值设置为auto,确保使用的是字体设计的字距。避免出现一些糟糕的排版。

另外需要注意的是,当你使用0而不是auto的时候,从Sketch中复制CSS时会变得混乱,因为它增加了一行字距为0。在CSS中的问题会和Sketch中不一样,因为它可能会和已经设置了的字母间距冲突。

另一个需要注意的是,当你使用大的字符间距时ligature不会遵守。ligature是一个字符,当两个字符在之后输入,替换的字符会修复间距问题。常见的ligature方式是fi,因为f与i相接近,如果你改变了默认字符间距,最好禁用ligature。

你可以在Sketch中禁用ligatures:

1.前往View -> Show Fonts

2.在Fonts窗口点击Typography

3.进入Ligatures然后取消选项

行间距

你不仅可以设置每个字符的间距,行距也可以设置。在Sketch中,你可以使用字体默认的行间距,或者自定义像素值。新创建的文本层是字体设置的默认行高。修改后会使用这新的行高,需要删除行间距并输入数值。这可以自定义任何的行间距,并且会用浅灰色显示默认的行高值。

如果调整行高,第一行的基线还会保持在默认的y上。

段落间距

Sketch中断行有两种形式:段落断行和换行断行。alt + return会是新建一个段落。shift + return会是会是创建一个换行断行。

段落间距中增加的像素会添加在新的段落之间。

如果你正在制作一个列表项,这一点会很有用。

结语

与版式上的其他因素一样:小的改变不会有很大的影响,但是当你把所有的小改变积累在一起,就会产生很大的影响,虽然大多数人不太能意识到版式的存在,但是它会带来一种感觉。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明先生_x阅读 15,967评论 3 119
  • 七个月11天 腹泻终于好了。 一颗心定了。 充实自己, 为孩子做最好的榜样
    hs双儿阅读 105评论 0 0
  • 早读即兴〈一〉 握笔耕读二十载,白驹匆匆惧流年。 一帘细雨添春恨,又是东风杏花残!
    相忘于江湖的刘老师阅读 222评论 0 0
  • 拿到这幅画的时候,第一眼瞧见的是这个人物的特色小辫子,真的很有童趣很有意思。我想不论年纪大小,你的那份“纯...
    蓝月菁芸阅读 242评论 0 0