学院观点:Web 与排版学上的字体问题

web|问题

关于字体的讨论,其实无论是国外还是国内,都已经有不少,可是我发现绝大部分的内容或者有失偏颇,或者不够全面,下面我试图将自己一段时间内的观点总结一下,以求提出一个比较容易接受的 CSS 字体选择的建议。

事关大小

字体的大小总是一个困扰人的问题,用绝对单位还是用相对单位?或者具体来说,用什么单位?ex? em? pt? px? 百分比? 让我们看看 CSS 2.1 Spec 中的说明:

相对大小包括:em, ex, px

绝对大小包括:in, cm, mm, pt, pc

em 就是相对 font-size 制定的大小而言的,例如 margin: 1.2em 就是指设置 1.2 个字符宽度的 margin,当 em 本身用于 font-size 时,指的是它所继承元素的相对大小。

百分比也是相对 font-size 而言的。

因此我认为,em 和百分比都不适合设置字体的大小,因为相互变动的因素太多了,修改一个地方就有可能影响很多其他的地方。ex 是根据拉丁字母的 x 的高度而言的,这不适合汉字的大小,所以也否决了。px 是根据当前显示设备的解析度而言的,同一个 px 对应不同的设备——比如屏幕或纸张——实际的大小会有一定差异。

所以我认为,如果网页中应该存在作为绝对参照系的长度,那么 pt 和 px 应该是首选,其他的长度根据这个绝对参照系,按照百分比或者 em 来变动。

下面谈谈网页和印刷中大小造成的差异。99% 的网页是用来在屏幕上阅读的,而问题在于,屏幕的解析度要比纸张低得多,所以如果直接把字体按照纸张上印刷的那个大小显示,肯定是看不清的,仅就英文字体而言,许多细微的点划、衬线都没法在那么低的解析度下表现出来,所以我们只能用专门设计给屏幕显示的字体。

这些字体的优劣是很难评述的,有一种看法认为,尽管纸张印刷中都倾向于有衬线 (serif) 的字体比无衬线 (sans-serif) 的要易读,但屏幕上无衬线的字体反而要好一些。所以微软把 Verdana 吹捧为了最适合网页使用的字体。我通常也偏向于使用 Verdana、Arial 多于 Times、Georgia。

对于中文字体的情况有所不同,中文字体在屏幕上的清晰显示依赖的是点阵字体,或者简单的说,就是微软随 Windows 提供的宋体和新宋体 (simsun & nsimsun),这套字体是华康公司 (Dynalab) 设计的,对 9pt 到 12pt 左右的字体都设计了对应的点阵字体。其中使用得最广泛的是 9pt, 10.5pt 和 12pt 的字体:

那么比这个大小要大的汉字呢?就要依赖操作系统的字体圆整 (anti-alias,以下简称 aa) 技术了,一般大家认为,Mac OS X 和 Linux 下的 AA 要比 Windows 的 ClearType 好很多。然而不管怎么说,用太大的汉字是比较危险的。

事关风格

谈到英文字体,可以扯出许多掌故,不过这里且说说 Web 开发有关的。

关于 Times New Roman,首先,与大家一般保留的印象不同,Times 不应该是一个适合长时间阅读的字体,尤其不适合书籍的阅读,因为众所周知的,Times 一开始是给报纸设计的一种字体,而为了适应报纸这种在劣质纸张的快速印刷的环境,字体的衬线不得不夸张一些,否则细节很容易被油墨破坏,所以把 Times 用在书籍上其实是一种很不负责任的方式。

比这个更不负责任的是用 Times New Roman,Times New Roman 其实是一种压缩 (Condensed) 了的 Times,比原来的 Times 更细长,更不易读了。下面的一个比较应该比较容易分辨出优劣来:

Times 与 Times New Roman 的比较

是不是没有好的字体呢?不是,Sabon、Minion、Jansen-Text, Adobe Caslon, Adobe Garamond 等等都是非常适合阅读的字体,只不过这些字体都是商业的,也就是说,不是可以免费得到的。Microsoft 提供的字体中也有质量比较好的,比如 Hermann Zapf 亲自监制的 Palatino Linotype。事实上,Adobe 选择的 35 种标准的 PostScript 字体 (Times Roman, Helvetica, Courier, Palatino 等等) 中,Zapf 设计的 Palatino 就是使用最广泛的,也最容易阅读的字体。这些字体由 URW 免费提供了,是质量很好的字体,可惜的是并非应用得特别广泛 (不过大部分的 Linux Distribution 中都包括 urw-fonts 这个 package,大部分的 TeX distribution 也都包括 urw 这个 package)。

说到 Palatino, 我们也可以看看 Web 上 Palatino 和 Palatino Linotype 的区别:

Palatino 的比较

相信可以看出,高质量的 Type1 字体,本身就带有字体圆整效果,这是比 Truetype 优越的地方。

我的建议

我的建议是什么呢?恐怕还是老生常谈:

用 pt 作为绝对参照系。

中文字体尽量使用 9pt, 10.5 和 12pt 中的一种。

选择字体的时候,先考虑 Type1,再考虑 Truetype,最后考虑都没有的情况,比如我想用 Palatino, 那么应该:font-family: Palatino, "Palatino Linotype", serif;。

时间: 2024-11-05 12:15:09

学院观点:Web 与排版学上的字体问题的相关文章

Web与排版学上的字体问题

web|问题 关于字体的讨论,其实无论是国外还是国内,都已经有不少,可是我发现绝大部分的内容或者有失偏颇,或者不够全面,下面我试图将自己一段时间内的观点总结一下,以求提出一个比较容易接受的 CSS 字体选择的建议. 事关大小 字体的大小总是一个困扰人的问题,用绝对单位还是用相对单位?或者具体来说,用什么单位?ex? em? pt? px? 百分比? 让我们看看 CSS 2.1 Spec 中的说明: 1.相对大小包括:em, ex, px 2.绝对大小包括:in, cm, mm, pt, pc 3

Web 与排版学上的字体问题

关于字体的讨论,其实无论是国外还是国内,都已经有不少,可是我发现绝大部分的内容或者有失偏颇,或者不够全面,下面我试图将自己一段时间内的观点总结一下,以求提出一个比较容易接受的 CSS 字体选择的建议. 事关大小 字体的大小总是一个困扰人的问题,用绝对单位还是用相对单位?或者具体来说,用什么单位?ex? em? pt? px? 百分比? 让我们看看 CSS 2.1 Spec 中的说明: 相对大小包括:em, ex, px 绝对大小包括:in, cm, mm, pt, pc em 就是相对 font

超全超实用的Javascript类库和jQuery插件大全之一:Web印刷排版

日期:2012-10-9  来源:GBin1.com 如果你需要解决一些开发中遇到的技术问题的话,很可能会找到一些相关的javascript类库或者是jQuery插件来实现.这样实用的类库或者jQuery插件往往是你应该时常收集并且保存的,特别是如果你不希望自己去处理不同浏览器的兼容性问题的话,使用现成的javascript类库或者是jQuery插件往往能够帮助你提高开发效率. 使用javascript类库可能并不一定是最好的选择,很多情况1下可能你会发现类库加载并不正确,或者有性能上的问题,例

Web端的设计:让我们的web端产品跟上时代的脚步

文章描述:如今,随着智能手机.平板电脑等移动手持设备的普及,越来越多的Web网站都在向这些平台做兼容.同时,这些移动设备上的视觉设计与交互设计也在影响着Web端的设计. 如今,随着智能手机.平板电脑等移动手持设备的普及,越来越多的Web网站都在向这些平台做兼容.同时,这些移动设备上的视觉设计与交互设计也在影响着Web端的设计. 所以,现在我们的设计是不是要变得更加的popular一点呢?是不是可以总结出一些方法让我们的web端产品跟上时代的脚步呢?

Silverlight结合Web Service进行文件上传

Silverlight跨浏览器支持已经有了长足的进步,而且与.NET开发语言的完美结合,这些都使得在 Windows平台下开发富客户端应用Silverlight应该比Flash更有优势,当然Silverlight代替Flash应该为 时尚早,而且现有的功能与Flash仍有不小差距,但是对于开发者而言早一点接触.使用的话,对于改进 网站用户的体验,提高网站的交互能力和界面很有帮助. 本文就如何使用Silverlight调用Web Service进行文件上传,Silverlight用于界面显示.用户

java web问题,用户上传头像,我应该存在哪里?

问题描述 java web问题,用户上传头像,我应该存在哪里? 一般存在哪里?,存在服务器上,我重新发布就没啦.一般存在哪里?,存在服务器上,我重新发布就没啦 解决方案 开一个叫upload的文件夹,存在里面.部署的时候不要删除原先的应用. 解决方案二: 上传到一个目录可以就放在当前工程下面.

web方向-我是大二学生,求前辈提点一下WEB方向应该学什么

问题描述 我是大二学生,求前辈提点一下WEB方向应该学什么 都是大三才分方向的,但是我决定提前一年自己先着手学习,或许我连WEB是什么都不是很清楚,语言也只学了C,正准备学C++,基础很差,但是我需要一个学习的方向,我想制作个人网页的全套流程,听说要学java,还有什么?不胜感激 解决方案 先学习基础吧,然后课程设计的时候你就知道了,看看jsp,servlet ,tomcat这些 在试试js css 然后自己做点小的web工程 试试,自己不动手说啥都白说

页面获取上传文件-web前端关于文件上传监控问题

问题描述 web前端关于文件上传监控问题 页面中怎样判断有新文件上传,例如点击上传文件,选择文件,然后确定,页面会自动转到正在上传页面,但是正在上传页面如何加载正在上传的文件呢 解决方案 如果是asp.net,可以用filesystemwatcher

Web直传解决并发上传出错,导致任务停止

Web直传解决并发上传出错,导致任务停止 OSS提供了Web直传示例的示例 但是上述事例有一个现象 就是当一个文件在上传过程中,这个时候再选择一个不符合条件的文件,会导致正在上传的文件终止. 如此图 h3. 首先我们来分析一下为什么会出现这种现象 出现这种现象的原因是:plupload这个控件导致的. plupload提示了filter var uploader = new plupload.Uploader({ runtimes : 'html5,flash,silverlight,html4