暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

移动文字与排版

yBmZlQzJ 2024-01-31
81

原文出

处:http://www.ui.cn/detail/72212.h

tml

在印刷与桌面端Web的传统领域我们

有很成熟的文字排版经验,在移动时

代,这些经验很多依然有效,但因显

示设备与使用环境发生了变化,也给

带来了不少变化……

在印刷与桌面端Web这些传统领域,

我们已经有了很成熟的文字排版经

验。随着移动时代的到来,APP的界

面设计,加上网站越来越多地转身为

响应式设计以适应多种显示设备,这

些经验很多依然有效,但因为显示设

备与使用环境发生了变化,也给文字

排版带来了变化。

ꢀ在桌面端我们可能会采用字号差

异较大的文字组合,移动端屏幕较

小,容纳的文字也较少,同等的字号

差异在小屏幕上的感受会被放大。

ꢀ原因是我们在使用这两种设备时

的观看距离不同,桌面端我们的眼睛

离屏幕较远,而在移动端则相反,因

此我们应该在移动端使用较小的字号

反差。

不要使用PS中的文本加粗,它不仅破

坏字体本身的美感,还改变了文字原

本的字宽而影响段落内文字的对齐。

合理的方式是使用字体本身的字重来

控制,比如苹方、STHeiti、Helvetica

Neue等字体本身提供Light、Regular、

Medi um等两三种甚至更多的字重选

择。

不要轻易改变字体默认的字间距,字

体设计师已经充分考虑了这款字体所

适合的字间距,如果不满意可以更换

字体。

移动设备使用环境复杂多变而不局

限在室内,可能在室外,甚至暴露在

强烈的阳光下,应确保文字在背景中

不会识别困难,即使是色弱者也可以

正常阅读。WCAG 2.0中建议的两者

颜色反差比应该高于4.5:1(AA

级),才能确保更多人及环境都可以

轻松阅读。Sketch中有一个插件Color

Contrast Analyser可以方便的检测这个

比值,你可以使用在线检测工

Colour Contrast Check

小屏幕上,一些桌面端无关大雅的间

距不等问题会变得突出。

ꢀLofter是网易一款精品优雅的

App,但其文章正文界面却略有瑕

疵:

ꢀ可以看到段落右侧与卡片的间距

明显大于左侧。造成这个问题的原因

是设计时对文本框的宽度与文字大小

之间在关系考虑不周全,导致文字并

不能完美地填充满文本框。

ꢀ上图为iPhone5中此界面的放大

效果并加上了辅助线,仔细观察,去

除黄色部分各20px的间距后,文本框

宽度是558px,而正文使用的字号是

30px,所以行末留下18px的空余空

间。如果字号定为31px,则刚好可以

放下18个字后填满558px像素的文本

框。

ꢀꢀ当然31px的字号在实际环境中可

能并不是一个最合理的字号设定,因

为它并不能被整除使用到@1x的iOS

开发环境。在实际设计中,可以先设

定一个栅格系统,以iPhone5为例,

定义最小栅格为8x8px的话,得到如

下一个栅格图:

ꢀꢀ以8为基本单位,把所有字号、

文本框宽度设定为8的倍数,这样我

们就可以确保汉字始终保持对齐。

“...所有的元素都是正方體。但是

從二十世紀開始使用標點後,到了現

代桌上出版時代,許多排版工具軟體

都直接套用來自日本的「禁則處理」

即避頭尾點;加上與西方文字混排

的狀況越來越多,以至於無法做到縱

橫對齊的基礎。但是至少段落的頭尾

還是需要對齊。這就是為什麼對齊對

電子書與長文章來說十分重要的原

因。 ”

—董福興《簡單做好中文排版》

ꢀ在英文的段落排版中,通常是左

侧对齐,而让右侧自然形成起伏边

(rag)。对中文排版与阅读习惯而

言则相反,段落的头尾对齐尤其重

要。

ꢀꢀ先来看一个反例:

ꢀꢀ这是Zaker的新闻正文的表现,

在夹杂了数字或英文字母字符的情况

下,原本中文的整齐排列被打乱了,

右侧严重参差不齐,非常难看。

ꢀꢀ看看同一篇文章其它App是怎么

处理的:

ꢀꢀ左边是网易云阅读,右边是网易

新闻。两者的处理方式类似,都是通

过程序的设置,微调文字的间距以补

足右边存大的空白,区别是当标点出

现在行末时,网易云阅读将标点外

置,而网易新闻将标点放在了内部。

ꢀꢀ文字的对齐方式,可以用简单的

代码实现:

ꢀꢀWeb App中,使用CSS类中指定

justify属性值控制即可,以下为兼容

性较佳的方案

.

space-betw { -webkit-box-pack: ju

stify; -moz-box-pack: justify; -ms-

flex-pack: justify; -webkit-justify-

content: space-between; justify-cont

ent: space-between;}

ꢀꢀ原生iOS中,需为字符串对象设

置NSTextAl i gnmentJusti fi ed值

-

(NSDictionary *)demoTextAttributes

NSMutableParagraphStyle *ps =

{

[

.

d;

NSMutableParagraphStyle new];

alignment = NSTextAlignmentJustifie

// here, NSBaselineOffsetAttri

ps

buteName must be set though the defa

ult value is 0 to make the justified

work.

return @{NSParagraphStyleA

ttributeName :ps, NSBaselineOffsetAt

tributeName : @0.0f};}

ꢀꢀ这个方法,结合之前我们通过栅

格系统对字号和文本容器宽度的规范

定义,终于可以避免App中常见的段

落文字对不齐,对不准的老问题。

以上是实际工作中的经验总结,移动

平台、硬件设备、字体本身都在不断

变化,相应的设计方法也不会永远一

成不变,但总的原则是不变的,那就

是让内容更易读。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论