今天,大多数浏览器已经默认支持Web字体,日趋增多的字体特性被嵌入最新版HTML和CSS标准中,Web字体即将迎来一个趋于复杂的崭新时代。下面是一些基本的关于字体的规则,特别适用于Web字体。

原文地址:creativebloq  译者:特赞Tezign

顺便附上一个神器:《前端工程师的菜!姗姗来迟的中文WEBFONT(附神器推荐)》

印刷字体是静态的,而网页字体却是圆滑可塑的。设计师必须预测跨浏览器及终端用户的最终结果,而不仅限于学习如何实现某种特定的视觉外观。除了掌握简单的规则以外,他们一样要理解背后的原因。

01 了解字体的用途

第一要务是检查将使用的字体究竟能做什么。基本上所有字体的用途都是相似的,但有些字体比其它更加合适。Unicode编码的字体提供了成千上万种字形的可能性,而OpenType字体格式则支持更多的功能,例如小号大写字母,旧式风格数字,自由连字以及上下文交替等。

然而,字体的质量取决于字体设计师的创造水准。如果设计者忽视了绘制所有必须的字符,或者忘记了创建相关的功能,那么排版的细节问题也就变得意义不大了。创造专业字体需要大量的时间和精力,而有些设计师并未做好充足的准备。

因此,在将字体纳入页面设计前,检查其字符集和功能的工作就变得举足轻重。字体就像工具箱,有些时候工具箱几乎是空的,用途有限,就像字体只有大写、小写、数字和一些基本拼写一样;有些时候缺少的却是某些关键工具,如果有一把螺丝刀,一把锯但却没有锤子的话,一些钉东西的活就难以完成。

02 巧妙的字集

FF Sero by Jörg Hemker

“字体回滚”(Font Fallbacks)是以单个字符为基准发生的。一旦字符在指定的字体中丢失,回滚系统就会自动从列表中的下一个字体调用这个字符,然后切换回原来的字体。灵活利用这项特性可以达到惊人的效果。举例来说,字体的字符集不具有旧式风格的数字,那么可以找到具有对应数字的字体;删减该字体,只留下所需数字,将其放入回滚列表。文本中的所有数字就会以旧式风格的方式呈现,而其余部分将会以正常字体显示。这可以使你不必对数字进行分别格式化,也摆脱了页面中多余的HTML标签。

03 弄懂数字

很多专业级的字体都具有几个不同的数字字符集。每个字符集都有它特殊的用途。表格式数字占据相同的空间,让它们垂直排列,而宽度比例数字与其设计相符– 举例来说,数字4要比1宽得多。一方面,旧式风格数字的设计模仿了带X高度属性,上行和下行字母的的小写字符,使其与大小写混合的文本完美融合。另一方面,内衬的数字用于数值,或与大写文本一起使用。

04 切勿伪造字体

FF Ernestine by Nina Stoessinger

CSS使你可以伪造一些事情。如果字体本身没有粗体的变体,<b>标签可以通过双重渲染+略微侧移的方式将文本人为地加粗。为没有斜体样式的字体加上<i>标签可以实现斜体效果。由此产生的扭曲字符令人惨不忍睹。

更重要的是避免使用<b>和<i>标签,而用<strong>和<em>取而代之。前者只涉及字体的外观,也就是所谓的Bold和Italic. 但或许你只想通过改变颜色和大小的方式强调文本。所以明确你的目的就变得重要了– 加粗字符,抑或强调内容?使用后者赋予你通过CSS文件轻松改变文本外观的自由。一般来说,在CSS文件里定义所有的文本样式,尽可能避免局部样式定义。

05 但如果你必须伪造的话,逼真些

当字符集当中缺少小号大写字母时,伪造它们总会使其相较周围字体过于单薄。倘若字体样式有一个半粗体的变体,或普通和粗体的粗细程度相差无几,那么可以使用更粗的那个来调节文本的明暗程度。别忘了给小号大写字母一点额外的字符空间。

06 谨慎使用复制粘贴

有时候你会在页面中本应是重音或其它特殊字符的地方发现难以辨认的字符。当从文本编辑软件中复制非UTF-8编码的文本时会产生这种情况。字符编码系统将所有的字形映射至给定的字符集,以方便通过网络或存储介质传输数据(主要是文本或数字)。

尽管HTML可以兼容UTF-8,但它会曲解从其它任意编码系统中直接复制的文本,将特殊字符变为随机字母和符号的奇怪组合。此外某些内容管理系统在复制文本的同时也会一并复制格式,造成不可预知的后果。要避免这种问题,最好的办法是使用简易文本编辑器将复制的内容转换为纯文字的格式,而后从那里复制并粘贴到CMS当中。

07 学习HTML实体

FF Spinoza by Max Phillips

看看你的键盘– 你可能没有意识到可用的字符是多么丰富。它们当中的很多是被HTML实体定义的,所以熟记常用的实体是必要的– 便于页面全局排版。你不能直接使用小写的x代替乘法符号,商标符号不仅仅是一个简单的大写T和大写M,浮动的重音符也不能代替引号。

08 正确的引用

说到撇号,正确的形式应该是闭合单引号。一个凸显出不成熟的例子是直引号的使用,它同时也被注重形式的设计师称为‘哑巴引号’。然而,使用合适的卷曲单引号或双引号是不够的。不同的语言有不同的引号使用形式。举例来说,法语使用的引号是指向外侧的三角标识符,而在德语中引号的方向则指向外侧。

09 了解破折号

连字符用来连接邻接的词语,或用于长单词跨行,以及其它用途。有两种其它的水平破折号:en破折号一般为em破折号的一半长度。通常情况下我们用它来指示数值的闭合范围,表示负数,或者阐述两件事情之间的联系。em破折号一般和字体等宽,并且一般用于划定某种想法的停顿,形成嵌入句子中的独立实体。但其具体用法常常引发争论。有些人用em破折号代替en,尽管两者都应该在没有邻接空白的情况下使用,很多字体设计者宁愿加入纤细的空白来避免它们触碰邻接的字符。

10 定义关系,而非绝对尺寸

Web文本的最大优势之一就是它可以被用户调整。如果字体是基于像素定义的,缩放一个页面可能会引起不同文本样式间的相对大小差异,举例来说,正文字号可能会大过标题字号。用相对于标准正文字号的em来定义所有文本是非常关键的。这确保了网页中的所有文本均可产生对应的调整,尊重不同文本字号间的关系。

11 控制换行

FF Spinoza by Max Phillips

缩放浏览器窗口会使文本框变得宽敞或拥挤,而终端用户也可以改变字体大小。这可能令你觉得换行是难以掌控的。但当你对希望达到的最终效果有一个彻底的理解以后,某些特定方面是可以操控的。

换行出现在被p或div标签环绕段落的结尾。在其它情况下,很少有希望下个单词能从新一行开始而插入换行的做法,因此请谨慎使用<br>标签。最常见的原因是要将2个或多个单词放在一起。不间断式空格可以确保邻接单词永远处在同一行。可惜的是不间断式连字符尚未被定义为HTML字符实体。另外,软连字符或自由裁量连字符只应在必要时出现,当文本列过于拥挤,希望分割开超长单词时,它们就可派上用场。

12 注意空格

非间断空格(nbsp)并非HTML中可用的唯一一种空格字符。全角空格(em space)和字体等宽,能够形成一个完美的方形分隔符。半角空格(en space)的宽度是它的1/2。表格式文本当中最有用的是数字式空格(figure space),和字体中的数字占据相同大小的空间;而标点式空格(punctuation space)与点、逗号的宽度相等;薄空格(thin space)可以在人名缩写中的点和下一个字母之间使用,而发丝式空格(hair space)可以将长破折号与相邻的字符分开。还有3倍、4倍、6倍于每全角宽度的空格…

对于阅读体验而言,字符之间与内部的间距与字符本身同样重要。正确的层次结构是字距<词距<行距。应避免在字母之间添加空格,这会令单词隔开并影响可读性。增加字距只能保证对字号很小的文本产生影响。与之相对的是显示尺寸常常受益于紧密的排列,但同样要适度。

分散对齐会对文本的外观产生不利的影响。在对齐文本使之适应行宽的时,词距被扩大,长短不一的空白分散在文本行当中。这令文本的外观变得不均衡,某些文本行中甚至会产生难看的间隔。左对齐/右未对是更易于阅读的排列方式。

除了字距和词距以外,行距一样会影响可读性。过于拥挤的文本行会令文本变得不易分辨。反面来看,如果行距过宽,对于读者而言,准确找到每个换行之后的下一行将会感到困难。

13 再进一步

这些小贴士已经可以帮你创造出更加精细的网页字体效果,但需要学习的东西仍然很多。当你对字体原则了解更加深入,更有自信地使用它们时,你就会明白如何去尝试并拓宽自己的眼界。这方面的一本权威教程是刚刚发行不久的Inside Paragraphs: Typographic Fundamentals,作者为Cyrus Highsmith. 这本宝典和Robert Bringhurst的基础教程The Elements of Typographic Style,或 Erik Spiekermann 和 E.M. Ginger’s所著的Stop Stealing Sheep & Find Out How Type Works是绝配。

原文:http://www.rankingex.com/nd.jsp?id=884&_np=541_891

web设计经验<七>13步打造优雅的WEB字体的更多相关文章

  1. web设计经验<一> 提升移动设备响应式设计的8个建议

    今天看到一些关于web设计的一些建议和设计经验,拿出来分享分享. 第一篇: 提升移动设备响应式设计的8个建议 一.直观性和易用性 在使用移动设备时,对于杂乱.复杂或者不直观的设计造成的混乱不佳的用户体 ...

  2. web设计经验<五>国外设计师总结的7个找灵感实用方法

    每个设计师不时会有创意灵感缺失.大脑一片空白的状态.盯着一个空白的屏幕,发愁着“好吧,我现在该做什么呢?该怎么做呢?”有些人喜欢静待,但这不是唯一的一个方法.焦虑的客户或者是你自己的不耐烦,都会让你无 ...

  3. web设计经验<三>值得你深入了解的交互设计5大支柱

    随着单页式设计和移动端的兴起,网页中的交互设计越来越重要了.为了打造流畅而可靠的用户体验,你需要对交互设计有更加深入的了解. 正如同我们在<交互设计最佳实践(卷1)>中所述,要做好交互设计 ...

  4. web设计经验<二>设计华丽的用户体验的6个热门技巧

    你是否曾经下载了一个应用,却发现它“很难使用”?对于大多数智能手机用户来说,答案是肯定的. 有趣的是,每四个手机应用中就有一个应用在下载后被“打入冷宫”. 如果一个应用能够吸引一个人下载并且打开它,但 ...

  5. web设计经验<六>令网站看起来不专业的10个设计误区

    不管你是不是一个羽翼未丰企业的领导,专业的网站能为你带来的东西比你想象的多很多.退一万步来说,“考虑到我们是一个小厂”,粗糙的网站也许能被用户理解,但是不一定能接受.每天大家所浏览的大量的网站,已经从 ...

  6. web设计经验<九>教你测试手机网页的5大方法

    我们知道手机浏览器的使用量每天都在增长,根据StatCounter的统计数据,手机和平板的使用量约占30%的网络流量,这意味着消费者耗费在移动版网页上的时间比以往任何时候都高.可即使具备诸如移动端优先 ...

  7. web设计经验<八>20个设计新手常犯的排版设计误区

    很多同学问设哥,为什么别人字体就那么随意放一下就辣么好看,其实排版可有大学问,不是随意放就好看.这就如同配色一样,也有千变万化的学问.相信大家看完Designschool这篇头条热文,一定倍有收获. ...

  8. web设计经验<四>设计师必备的20条设计黄金法则

    编者按:以下内容摘自<美国视觉设计学院之完形设计>,新手可以多看这些法则,并运用到你的设计过程中,防止自己做出甲方式审美的作品. 一.必须有一个概念 设计从创意开始.这可能是非常不确定的— ...

  9. HTML5移动Web开发(七)——通过界面图标启动Web应用

    现在我们要使用手机上某个应用时,通过点击屏幕上的图标就可以运行.但是对基于HTML的Web应用来说,运行起来就比较麻烦了,用户必须先打开浏览器,然后访问想使用的应用程序站点.现在我们想把一个指定的We ...

随机推荐

  1. js实现通用的微信分享组件示例

    一.可定义的信息 1.分享时显示的LOGO:2.分享LOGO的宽度:3.分享LOGO的高度:4.分享出去显示的标题(默认调用网页标题):5.分享出去显示的描述(默认调用网页标题):6.分享链接(默认为 ...

  2. postgresql之ctid的浅谈

       ctid: 表示数据记录的物理行当信息,指的是 一条记录位于哪个数据块的哪个位移上面. 跟oracle中伪列 rowid 的意义一样的:只是形式不一样.    例如这有个一表test:查看每行记 ...

  3. C++11 std::function用法

    转自 http://www.hankcs.com/program/cpp/c11-std-function-usage.html function可以将普通函数,lambda表达式和函数对象类统一起来 ...

  4. 三种用于select 的选择器

    <html lang="en"> <head> <meta charset="utf-8"> <title>选项 ...

  5. csdn在线编程里面的一个排列组合题

    是csdn在线编程里面的一个问题 回文字符串是指从左到右和从右到左相同的字符串,现给定一个仅由小写字母组成的字符串,你可以把它的字母重新排列,以形成不同的回文字符串. 输入:非空仅由小写字母组成的字符 ...

  6. Inviting Friends(二分+背包)

    Inviting Friends Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) To ...

  7. EditorWindow窗口大小锁死后没有边框的解决方法

    var window = GetWindow(typeof(MyWindow), true); window.minSize = , ); window.maxSize = window.minSiz ...

  8. GUI_Delay函数

    GUI_Delay()函数 使用GUI_Delay()函数时,对于其延时时间不确定,明明设置为最小值1,延时时间 仍旧太长,不能达到需求.遂决定研究明白其实现机理. uC/OS-II使用OSTimeD ...

  9. C#之猴子吃桃儿问题的解法——猴子吐桃儿

    猴子第一天摘了许多个桃子,先吃了所有桃子的一半,后又吃了一个:第二天又吃了剩下桃子的一半,后又吃了一个……第十天,剩1个桃子.问:猴子第一天摘了多少个桃子? 首先对“猴子吃桃”的过程进行正向推导,设: ...

  10. reactjs入门到实战(三)---- 组件详解

    owner  >>> 传递 props this >>>是默认指向组件本身 key>>>不能没有,在复用的情况下 组件:例子 <!-- 输入 ...