2 min read

openSUSE 上的 infinality

简快版,仅需要三步:

  1. 安装 freetype2
  2. 安装 fontconfig infinality
  3. cd /etc/fonts/infinality,执行 ./infctl.sh setstyle

以前用 Ubuntu 时,在系统上折腾过 infinality,字体渲染的效果要比系统默认的好很多。最近升级 openSUSE 到13.1,感觉字体太细,看得不很舒服,就想起 infinality。

opensuse_zh 中文源上有提供 freetype2,不过我看它13.1版本下的 build 状态是 failed,所以没有尝试。所以最后仍是根据官网上的说明配置的。

下载 FreeType

从 FreeType 官网下载 freetype 2.4.12。FreeType 现在已经出到2.5版本,但出于安全考虑,还是照作者说的做,下载2.4.12版本。

我在 /home/sam/ 目录下建了个 fonts 目录,将 freetype 压缩包解压到 fonts 目录里。

现在的 fonts 目录结构如下:

- fonts

++ freetype-2.4.12

下载 freetype-infinality

从 infinality 页面 下载 freetype-infinality-2.4.12-20130514_01-x86_64.tar.bz2 文件,同样解压到 fonts 目录下,fonts 目录结构现在如下:

- fonts

++ freetype-2.4.12

++ freetype-infinality-2.4.12-20130514_01-x86_64

给 freetype 文件打补丁

$ cd /home/sam/fonts/freetype-2.4.12

$ patch -p1 < ../freetype-infinality-2.4.12-20130514_01-x86_64/freetype-entire-infinality-patchset-20130514-01.patch

接下来是 make(以下命令全部来自 infinality 说明):

$ ./configure

$ make

$ sudo mkdir /usr/lib/freetype-infinality/ #64位系统上把 lib 改成 lib64

$ sudo find . -name libfreetype.so.6.10.1 -exec mv {} /usr/lib/freetype-infinality/  \;       

$ cd /usr/lib/freetype-infinality

$ sudo ln -s libfreetype.so.6.10.1 libfreetype.so.10

我的系统下,在 ./configure 一步就报错:

configure: error: no acceptable C compiler found in $PATH

See ‘config.log’ for more details

不过很可惜,我在该目录下并没找到 config.log 文件。照错误的字面意思,大概是说通过 $PATH 没能找到可用的 C compiler。

看了些资料,说要安装下 GCC

安装完 GCC 后再跑一趟 ./configure,这回正常,之后 make

find 一句的意思是,在当前目录,查找名称为 libfreetype.so.6.10.1 的文件,然后将它们移动到 /usr/lib/freetype-infinality/ 目录。{} 类似占位符,find 命令会将找到的文件代入其中,; 指示命令结束,之所以加转义符号 \ 是防止 Bash 把它理解成命令分隔符。

在完成以上操作后,我们可以切换到 /usr/lib/freetype-infinality 目录查看,现在有一个 libfreetype.so.6.10.1 文件 – 是的,以上所有的操作是仅为了这个文件的。

下载 fontconfig-infinality

仍是从 infinality 网站 下载 fontconfig-infinality-1-20130104_1.tar.bz2,这回是解压到 /etc/fonts/ 目录下:

$ sudo tar jfxv fontconfig-infinality-1-20130104_1.tar.bz2 -C /etc/fonts/

/etc/fonts/ 目录下共多出三个文件夹:

  1. conf.avail
  2. conf.d
  3. infinality

根据 /etc/fonts/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

infinality 的配置说明提到 /home/用户名 目录下的 .fonts.conf 文件,不过我的系统上又没有。于是我就创建一个:

$ cd /home/sam/
$ su #以 root 身份
$ vim .fonts.conf

在 .fonts.conf 文件中添加如下内容:

<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
</fontconfig>

保存后执行 chattr +i .fonts.conf 命令,使得 .fonts.conf 不受更改或破坏。

然后添加以下内容到 /etc/X11/Xresources 及 ~/.Xresources(不存在的话创建一个) 文件里:

Xft.autohint: 0
Xft.lcdfilter:  lcddefault
Xft.hintstyle:  hintfull
Xft.hinting: 1
Xft.antialias: 1
Xft.dpi: 96
Xft.rgba: rgb

注:infinality 上提到 /etc/profile.d/infinality-settings.sh 文件可以自动配置 /etc/X11/Xresources 及 ~/.Xresources 文件,但我的情况,/etc/ 目录下是没有 profile.d 文件夹的。

接着重启系统。

如果需要修改字体渲染的配置文件,可以进入 /etc/fonts/infinality 目录:

$ ./infctl.sh setstyle

运行后会提示几个可用的字体渲染配置方法,选择数字然后按确定即可。

至此,openSUSE 上的配置 infinality 算是完成。

至于效果,上图看看:

opensuse 字体美化 渲染 infinality

另外,在我的系统里,Firefox在某些页面里,中文渲染的情况非常糟糕,有发虚的现象。后来安装了文泉驿微米黑,才算正常。

问题汇

  1. 在我从命令窗口开启 Kaffeine 时,错误提示:

Fontconfig warning: “/etc/fonts/conf.d/56-user.conf”, line 14: reading configurations from ~/.fonts.conf is deprecated. please move it to /home/sam/config/fontconfig/fonts.conf manually

查看 /etc/fonts/conf.d/56-user.conf 文件,是一个指向 /usr/share/fontconf/conf.avail/50-user.conf 的软链接,里面的内容表示以上错误提示在将来会被移除。

报告问题 修订