通过一天的摸索,终于知道了字体在Linux下的运行机制。通过一定的技巧,可以打造和几乎和windows下一模一样的显示效果。如图(点击打开大图)

图一为windows下的显示效果,默认字体为宋体。 图二为ubuntu下的显示效果,默认字体为微软雅黑。

还看的过去吧。

Linux下Chromium(chrome)的显示一直是个饱受诟病的问题,大家各种方法工具一起上,现在网上提供的主要方法为: 1.删楷体+改系统字体 2.设置里改字体。 3.启动器的命令里加上”-disable-tabbed-options”,在任意输入框右键拼写检查选项-。。。。。。。。。。。(真的很佩服能找到这种方法的人)。

以上方法均能使chromium(chrome)显示用户指定的字体,但问题来了。用户只能指定一个字体作为网页显示的字体,这样有悖设计师初衷,比如有的设计师需要使用大于17px的中文作标题,宋体显然不能满足需求,设计师将其指定为楷体或其他矢量字体,以便提高显示效果。在这种情况下,以上方法均会使网页变形。

反观firefox,firefox可以使用系统默认字体作为渲染网页的字体,这是为什么呢,我们来看看firefox的配置吧。

在语言编码栏选中简体中文后,firefox的默认配置: 比例字体默认为无衬线字体,继承第三个选项 衬线字体为serif 无衬线字体为sans-serif 等宽字体为monospace

这里普及一个知识,以上三种字体中的选项并非是一种特定的字体,而是通用字体。何为通用字体,这个解释起来就很麻烦了,要回归W3C标准才能知道,简短的介绍在这里:http://www.w3school.com.cn/css/css_font-family.asp

再简单点说,以上三种字体,均代表系统默认字体。即

衬线字体选择serif,使用系统默认的衬线字体。 无衬线字体选择sans-serif,使用系统默认的无衬线字体。 等宽字体选择monospace, 使用系统默认的等宽字体。

又有童鞋问了,衬线、无衬线和等宽,这三个有什么区别,这个要到印刷学去查明原因了。

serif,衬线字:字体末端带着小小勾,主要应用于印刷物,如报纸。其特点是字号小(印刷省钱),远处看还是为一条直线,因为带勾,阅读时不会因为字体过小而串行。 sans-serif,无衬线字:字体末端不带勾,比衬衫字大,适合屏幕显示。 monospace,等宽字体:字体宽度相等,主要用于显示代码和对齐排版。

言归正传,回到firefox的配置文件上来。

通过察看配置,一切真相大白。原来firefox并没有设置字体,而是老老实实的继承了系统字体设置。

 

chromium(chrome)就不一样了,Linux下的chromium(chrome)默认字体并不继承系统字体。

又有童鞋说了,和firefox一样,在配置文件中改成继承系统字体呗,于是乎大家开始找,好不容易在字体的下拉菜单中找到了一个Sans,找到了个Monospace,选之。。。

悲剧就是从这里开始的,你应该记得,Linux是区分大小写的吧,事实上,Sans和Monospace是两中特定的字体,并非通用字体选项。

有的读者这时候会叫,搞毛线啊,转了一圈还是不能设置? 等我说完嘛。

配置项里虽然无法选择通用字体,但是,他的配置总会保存在某一处吧。找到他,暴力改之。这个文件位于~/.config/chromium/Default/Preferences(这个是chromium的目录,chrome理论上把chromium改为chrome即可,没条件验证,有的朋友帮忙看下是不是这个文件)

首先,关闭所有正在运行的chromium(chrome)。之后用你最喜欢的编辑器打开配置文件,编辑之。我这里用vim

bash vim ~/.config/chromium/Default/Preferences 按shift+g转到文件末尾处 你会看到这些东西 "webkit": { "webprefs": { "global": { "fixed_font_family": "monospace", "sansserif_font_family": "scans", "serif_font_family": "scans-serif", "standard_font_family": "scans" }, "uses_universal_detector": true } } font_family,常写css的童鞋是不是感觉很亲切呢。这里就是字体设置了,把他改的和我上边内容一样就行了。如图

好了,现在启动chromium(chrome),随便打开一个网页,难看的楷体消失了。

 

好了,搞定了,就这么简单。说了这么多,完全是为了抛砖引玉,单纯的贴代码没啥意思,代码是思想的体现。有思想的程序猿才能进化嘛。就这样啦。。通过一天的摸索,终于知道了字体在Linux下的运行机制。通过一定的技巧,可以打造和几乎和windows下一模一样的显示效果。如图(点击打开大图)

图一为windows下的显示效果,默认字体为宋体。 图二为ubuntu下的显示效果,默认字体为微软雅黑。

还看的过去吧。

Linux下Chromium(chrome)的显示一直是个饱受诟病的问题,大家各种方法工具一起上,现在网上提供的主要方法为: 1.删楷体+改系统字体 2.设置里改字体。 3.启动器的命令里加上”-disable-tabbed-options”,在任意输入框右键拼写检查选项-。。。。。。。。。。。(真的很佩服能找到这种方法的人)。

以上方法均能使chromium(chrome)显示用户指定的字体,但问题来了。用户只能指定一个字体作为网页显示的字体,这样有悖设计师初衷,比如有的设计师需要使用大于17px的中文作标题,宋体显然不能满足需求,设计师将其指定为楷体或其他矢量字体,以便提高显示效果。在这种情况下,以上方法均会使网页变形。

反观firefox,firefox可以使用系统默认字体作为渲染网页的字体,这是为什么呢,我们来看看firefox的配置吧。

在语言编码栏选中简体中文后,firefox的默认配置: 比例字体默认为无衬线字体,继承第三个选项 衬线字体为serif 无衬线字体为sans-serif 等宽字体为monospace

这里普及一个知识,以上三种字体中的选项并非是一种特定的字体,而是通用字体。何为通用字体,这个解释起来就很麻烦了,要回归W3C标准才能知道,简短的介绍在这里:http://www.w3school.com.cn/css/css_font-family.asp

再简单点说,以上三种字体,均代表系统默认字体。即

衬线字体选择serif,使用系统默认的衬线字体。 无衬线字体选择sans-serif,使用系统默认的无衬线字体。 等宽字体选择monospace, 使用系统默认的等宽字体。

又有童鞋问了,衬线、无衬线和等宽,这三个有什么区别,这个要到印刷学去查明原因了。

serif,衬线字:字体末端带着小小勾,主要应用于印刷物,如报纸。其特点是字号小(印刷省钱),远处看还是为一条直线,因为带勾,阅读时不会因为字体过小而串行。 sans-serif,无衬线字:字体末端不带勾,比衬衫字大,适合屏幕显示。 monospace,等宽字体:字体宽度相等,主要用于显示代码和对齐排版。

言归正传,回到firefox的配置文件上来。

通过察看配置,一切真相大白。原来firefox并没有设置字体,而是老老实实的继承了系统字体设置。

 

chromium(chrome)就不一样了,Linux下的chromium(chrome)默认字体并不继承系统字体。

又有童鞋说了,和firefox一样,在配置文件中改成继承系统字体呗,于是乎大家开始找,好不容易在字体的下拉菜单中找到了一个Sans,找到了个Monospace,选之。。。

悲剧就是从这里开始的,你应该记得,Linux是区分大小写的吧,事实上,Sans和Monospace是两中特定的字体,并非通用字体选项。

有的读者这时候会叫,搞毛线啊,转了一圈还是不能设置? 等我说完嘛。

配置项里虽然无法选择通用字体,但是,他的配置总会保存在某一处吧。找到他,暴力改之。这个文件位于~/.config/chromium/Default/Preferences(这个是chromium的目录,chrome理论上把chromium改为chrome即可,没条件验证,有的朋友帮忙看下是不是这个文件)

首先,关闭所有正在运行的chromium(chrome)。之后用你最喜欢的编辑器打开配置文件,编辑之。我这里用vim

bash vim ~/.config/chromium/Default/Preferences 按shift+g转到文件末尾处 你会看到这些东西 "webkit": { "webprefs": { "global": { "fixed_font_family": "monospace", "sansserif_font_family": "scans", "serif_font_family": "scans-serif", "standard_font_family": "scans" }, "uses_universal_detector": true } } font_family,常写css的童鞋是不是感觉很亲切呢。这里就是字体设置了,把他改的和我上边内容一样就行了。如图

好了,现在启动chromium(chrome),随便打开一个网页,难看的楷体消失了。

 

好了,搞定了,就这么简单。说了这么多,完全是为了抛砖引玉,单纯的贴代码没啥意思,代码是思想的体现。有思想的程序猿才能进化嘛。就这样啦。。