2 min read

Ubuntu 字体设置与 infinality

说明 2013.11.28:本文写于2012年,内容与最新的 infinality 可能不一样,如有出入,请以官网说明为准。

我眼神不大好。见着别人说操作系统的字体可以渲染得怎样清晰和好看,但身边没有样例,就只好发挥自己的想象力。可惜实在想不出来,就找相关图片看了下,确实要比 Ubuntu 默认下的清晰、好看。

于是想尝试一下,就找来 infinality – 这是因为在推上见玛丽苏提过。结果先是不小心把 /etc/fonts/conf.d 文件夹给删了,当时还没想着处理,只一味担心重启系统后会出问题,结果发现,Ubuntu 竟然还能启动,还能打出中文,只是字体变了样子,与原来见的不一样,如下:

删除 /etc/fonts/conf.d 后的字体

接着找了些资料,心里约摸觉得把 fontconfig-config 包重装一下就好:

$ sudo apt-get --reinstall install fontconfig-config

切换到 etc/fonts/ 目录下,果然出来 conf.d 文件夹,重启系统,字体如下图:

ubuntu字体设置

你可能要问:有区别吗?抱歉,这真是难到我了。

在我来看,这两张 GVIM 截图并没什么区别,大概是 GVIM 渲染方法不同,又或者我选择的字型的问题。不过在网页里,前后的区别倒一眼就能看出。不过不曾截图。

以下进入正题,Ubuntu 下如何使用 infinality 美化字体。

安装 fontconfig-infinality 配置文件

首先,到 infinality 网站下载两个压缩包:

  1. freetype-infinality-2.4.10-20120616_01-x86_64.tar.bz2
  2. fontconfig-infinality-1-20120615_1.tar.bz2

譬如都下载到 ~/Downloads 目录下,将 fontconfig-infinality 压缩包解压到 /etc/fonts/ 目录下:

$ cd ~/Downloads
$ tar -jfxv fontconfig-infinality-1-20120615_1.tar.bz2 -C /etc/fonts/

这样,/etc/fonts/ 目录下会出现一个子目录 infinality。

根据 infinality 目录下 README 的说明,需要为 /etc/fonts/conf.d/ 下的 52-infinality-conf 创建一个软链接(symlink)指向 /etc/fonts/infinality/ 下的 infinality.conf:

$ cd /etc/fonts/conf.d/
$ sudo ln -sf ../infinality/infinality.conf 52-infinality-conf

接着是调整 /etc/fonts/infinality/infinality.conf 文件配置,这是一个 XML 文件,可以手动修改,也可以通过运行 infinality 目录下的 infctl.sh 来设置:

$ cd /etc/fonts/infinality
$ sudo ./infctl.sh setstyle

这时会弹出 8 个预设值供你选择: 1) debug 2) infinality 3) linux 4) osx 5) osx2 6) win7 7) win98 8) winxp

比如我选择 2,然后按 Enter 确认,会出现一个结果信息:

conf.d -> styles.conf.avail/infinality

这是修改了一个软链接指向。

给 freetype 源文件打补丁

freetype 网站 下载 freetype 2.4.10 最新版,假设压缩包名称为 freetype-2.4.10.tar.gz,下载到 ~/Downloads 目录下。将其解压到 ~ 目录下:

$ cd 
$ tar -xvzf ~/Downloads/freetype-2.4.10.tar.gz -C .

解压出来的新目录名为 freetype-2.4.10。

接着解压 freetype-infinality-2.4.10-20120616_01-x86_64.tar.bz2 压缩包到 ~/bin/ 目录下,当然,要解压到其他地方也无所谓,如果目录不存在,请先建立一个:

$ cd ~
$ mkdir bin
$ cd bin
$ tar -xvjf ~/Downloads/freetype-infinality-2.4.10-20120616_01-x86_64.tar.bz2 -C .

现在文件都已经备齐,接下来就是开始打补丁:

$ cd ~/freetype-2.4.10
$ patch -p1 < ~/bin/freetype-add-subpixel-hinting-infinality-20120616-01.patch 
$ patch -p1 < ~/bin/freetype-enable-subpixel-hinting-infinality-20120615-01.patch 
$ patch -p1 < ~/bin/freetype-entire-infinality-patchset-20120615-01.patch 

这样,就给 freetype 源文件打好 finality 的补丁。

其他设置内容

接下来,还要进行一些设置,仍是在 freetype-2.4.10 目录下操作:

$ ./configure
$ make
$ sudo mkdir /usr/lib/freetype-infinality/        # 如果跑 64 位系统就把 lib 改成 lib64
$ sudo find . -name libfreetype.so.6.9.0 -exec mv {} /usr/lib/freetype-infinality/ \;
$ cd /usr/lib/freetype-infinality
$ sudo ln -s libfreetype.so.6.9.0 libfreetype.so.6

在 ~/bin/ 目录下有两个文件,根据建议需要拷贝到 /etc/profile.d/ 目录下:

$ cd ~/bin
$ sudo cp infinality-settings.sh freetype-infinality.sh /etc/profile.d/

/etc/profile.d/infinality-settings.sh 这个文件里可以做很多设置,具体根据个人需要进行修改。

接着,登出系统再登入,最好是重启系统。

不过根据我的经历,将这两个文件拷入 /etc/profilde.d/ 目录后重启系统,差一点都登录不进来,输入密码后迅速地闪了一下屏幕,就又回到登录界面 。后来切换到 tty 下移除这两个文件,这才算进来了,目测没这两个文件 infinality 也起作用,另外,如果只拷贝 infinality-settings.sh 到 /etc/profile.d/ 目录下是没问题的。

效果图

ubuntu 字体设置 infinality

在其他不曾设置过的屏幕上,将上图与图片上下的文字显示效果对比一下就知道,这字体设置是否成功。最明显的,是字的锯齿不那么了然,每个字像是一笔一划写出来的,而不是点点点组成。这也就是 infinality 的目的之一:freely provide the nicest font rendering of any operating system.

这样,我们就完成 Ubuntu 系统下的字体设置,即字体渲染的方法的调整,接下来可以针对不同程序进行字型(font)的选择,这就根据个人喜好,没什么规则可言。

鸣谢

  1. infinality.net 上的安装说明
  2. openSUSE 论坛的相关内容
报告问题 修订

如果你有自建 https 代理的需求,欢迎尝试 Phantom,一键搭建,方便快捷。查看 demo