在产品的设计过程当中,设计师老是指望最后产品展现的效果能与本身设计稿如出一辙,但最后屏幕呈现出的效果多少会与设计稿有所出入。css
这时设计会向前端抱怨屏幕显示的效果与本身的设计不符,前端也表示很无辜,这是按照设计要求实现的,怎么能怪我?前端
可能对大多数用户来讲,无法一眼识别哪里存在差距,但细微差距的集合,对用户的总体感官差距彻底是不一样的。这些细微差距体如今不少方面,其中,字体就是一个纠结的地方,很难说清,但影响又无处不在。算法
首先,先来介绍一下字体的分类和历史,在西方国家的字母体系,分红两大字族:浏览器
衬线字(如图中的 Times New Roman)是指在字的笔画开始及结束的地方有额外的装饰,并且笔画的粗细会因直横的不一样而有所不一样。起始和结束装饰的不一样,能设计出不一样风格的字体。bash
无衬线体(如图中的 Helvetica),没有这些额外的装饰,并且笔画粗细差很少。字形更加趋于理性,用户很难从字体的外形看出字体要表达的性格,感情。markdown
在中文字体中,宋体是比较标准的 serif 字体,衬线的特征比较明显。oop
无衬线字(如图中的思源黑体)就没有这些额外装饰,并且笔画粗细大体上是差很少。字体
介绍了字体的分类和历史,接下来就是考虑具体使用的场景,如何选择合适的字体呢?优化
在平面印刷,杂志,企业 Logo 中,须要考虑:网站
所以,每每会使用 特殊的衬线体或者特殊设计字体。
在电子屏幕的场景下,更多的考虑:
在这些因素的考虑下,无衬线体没有边角的修饰,结构简单清晰,在同等字号下,无衬线的字体看上去比有衬线更大,结构更清晰的特性,更加适合屏幕。也不会由于字体自己结构笔划,影响文字内容的情感态度表达。无衬线体带来的性格,立场就是中性的,在须要大量排版阅读的文字网站中,就像空气同样,咱们不会在乎文字自己设计的影响。所以,更应该使用 无衬线体。
字体的选择,这是设计阶段须要考虑的事情,但如何作到屏幕显示和设计同样呢?咱们须要了解不一样浏览器实现显示的一些原理技术。
先介绍一下点阵字体与矢量字体:
点阵字体也叫位图字体,其中每一个字形都以一组二维像素信息表示。
因为位图的原故,点阵字体很难进行缩放,特定的点阵字体只能清晰地显示在相应的字号下。但对于 12-16px 这样小的汉字,点阵字体经常比其它类型的字体在屏幕上更好的显示效果。
常见的点阵字体有 bdf,pcf,fnt,hbf 等格式。
对于常见的计算机操做系统,字体的显示算法须要一些字体的信息来优化屏幕显示效果,英文称为 hinting。汉字因为笔画复杂,因此 hinting 的方式与西文大相径庭。使用在汉字字体中嵌入预先制做的点阵位图既能够有效地避免 hinting 算法带来的计算开销,同时屏幕上显示的汉字边缘清晰,易于阅读。
矢量字体中每个字形是经过数学曲线来描述的,它包含了字形边界上的关键点,连线的导数信息等,字体的渲染引擎经过读取这些数学矢量,而后进行必定的数学运算来进行渲染。
这类字体的好处是字体能够无限放大而不产生变形。
矢量字体主要包括 Type1 和 TrueType 等几类。
Windows
Mac OS X
考虑到 css 的“优雅降级”原则,默认咱们先把 Mac OS 的字体放在最前面,中文 "PingFang SC-light",英文 "Helvetica Neue",降级备用字体 "Hiragino Sans GB" 和 "Helvetica",最后考虑基础 Windows 系统自带的字体 "Microsoft YaHei" 和 "Arial"。
font-family:"PingFangSC-light","Helvetica Neue",“Hiragino Sans GB”,“Helvetica”,“Microsoft YaHei”,“Arial” 复制代码
字体设计是整个界面设计的一部分,咱们很难意识到它的重要性,就像咱们不会在乎空气和水,但它的做用不容忽视。