[FZH] 求Linux下的字体知识详解

Jiahua Huang jhuangjiahua在gmail.com
星期一 一月 31 14:37:13 UTC 2011


你想问的是 Gnome 字体吧,控制台终端字体估计不是你要问的。

X-Window 下的字体跟内核无关,
早期的 X 程序也跟现在 Gnome、KDE 程序不一样。

现在的 Gtk/Gnome,KDE/Qt 程序都是程序自己绘制字体为图片,然后将绘制好的图片显示到 X-Window。
大体上是:
1. 程序自己先提出想要某个字体(比如想要“sans-serif“字体名)
2. 程序使用 fontconfig 库读取 fontconfig 配置(比如 /etc/fonts/ 下那堆 .conf xml 文件)
    得知 "sans-serif" 是一个合成的虚拟字体,是依次尝试使用 DejaVu、文泉驿微米黑等实际字体合成,
    并且知道需要开启 AA 反锯齿、开启微调来渲染绘制字体,屏幕 RGB 次序是 XXX
3. 程序从 fontconfig 得知字体配置后,查找出字体实际文件(比如某个路径的 .TTF)
    用 FreeType 库打开字体文件,并依照字体文件信息渲染绘制出字符的图片
    (多数情况下应用程序并不直接用 FreeType 库,而是通过 Gtk 库调用 Pango 2D 绘图库,再让 Pango
库自己去处理 FreeType、Fontconfig 之类“细节”问题,以及适当排版)
4. 绘制好字符图片后,将它发送到 X-Window 屏幕(比如通过 Xinerama 扩展,或干脆 OpenGL)
5. 于是屏幕上就显示出了你所看到的画面

KDE/Qt 程序跟 Gnome/Gtk 程序字体处理大体上差不多,
只是中间用的并非 Pango,而且对 Fontconfig 的解析过程稍有差异,

但都同样是程序自己绘制出字符图片,再发送到屏幕显示,
X-Window 服务和 Linux 内核都不参与字体处理。

2011/1/31 杜宏羽 <dongfengweixiao在gmail.com>:
> 求linux下的字体的知识的详解。
> 包括但不限于此:
> 内核中是不是存在字体?
> 字体是如何配置的。
> 刷新字体缓存有价值么?(貌似只要丢在字体目录下就加载了)
> 假如有A.ttf字体,那么Abd.ttf是不是需要(A字体的粗体)
>


关于邮件列表 Chinese 的更多信息