本栏目将对 Gnome 开发平台-软件构架 做一个概要性的介绍, 即对 GNOME 所依赖的库一一做介绍.
GNOME 构架
Libxml2
Libxml2 是为 Gnome 工程开发的 XML C 语言解析器和工具集(但在 Gnome 之外的平台上同样可以使用), 它是一个使用 MIT 许可的自由软件. XML (Extensible Markup Language) 本身是一个用来设计标记语言的元语言. 例如, 使用由尖角括号(<>)包括起来的额外的"标记"信息来为文本内容增加特定的语法和语义. HTML 便是广为人知的标记语言. 虽然这个库是 C 语言写的, 但在其它环境中还有多种绑定的语言可用.
Libxml2 具有很强的通用性, 这个库可以在很多系统和编译和工作,而不会有严重的问题.(Linux, Unix, Windows, CygWin?, MacOS?, MacOS? X, RISC Os, OS/2, VMS, QNX, MVS, ...)
Libxslt
Libxslt 是为 Gnome 工程开发的 XSLT C 库. is the XSLT C library developed for the Gnome project. XSLT itself is a an XML language to define transformation for XML. Libxslt is based on libxml2 the XML C library developed for the Gnome project. It also implements most of the EXSLT set of processor-portable extensions functions and some of Saxon's evaluate and expressions extensions.
人们可以把这个库嵌入到他们的程序中, 或者使用 xsltproc 命令行处理工具. 这个库是自由软件并且可以用到商业化应用程序中(查看说明).
更多文档:
- John Fleck 写的 libxslt 教程
- xsltproc 用户手册
- libxml 文档
GTK-Doc
GTK+ DocBook? 文档生成器
GTK-Doc 被用来组织 C 语言的文档. 典型的例子就是库的公共 API 的文档化. 比如 GTK+ 和 GNOME 库. 但是它也可以用来组织应用程序的文档.
函数, 宏, 控件信号, 控件属性的文档可以以两种方式书写:
a) 以特殊的格式嵌入到源码的注释中.
b) 添加到模板文件中, 然后由 gtk-doc 扫描所有头文件并分析其语法, 最后生成相应的文档.
其它一些组件的文档, 如: 联合(enum), 结构(struct), 回调(callback), 必须按(b) 中的方式加入到模板中.
GLib?
GLib? 是 GTK+和 GNOME 工程的基础底层核心程序库,是一个综合用途的实用的轻量级的 C 程序库,它提供C语言的常用的数据结构的定义、相关的处理函数,有趣而实用的宏,可移植的封装和一些运行时机能,如事件循环、线程、动态调用、对象系统等的API。它能够在类UNIX的操作系统平台(如 LINUX, HP-UNIX等),WINDOWS,OS2和BeOS等操作系统台上运行。
GLib? 需要一个支持线程的操作系统和一个字符集间转换函数iconv的支持,事实上大多现代的操作系统都有以上两项功能。
GLib? 由基础类型、对核心应用的支持、实用功能、数据类型和对象系统五个部分组成的。
官方ftp: ftp://ftp.gtk.org/pub/gtk
官方网站: http://www.gtk.org/
邮件列表: http://www.gtk.org/mailinglists.html
Atk
现在,GTK+ 2 充分利用 ATK(可访问性工具箱(Accessibility Toolkit))。ATK 使残障人士(如视力低下或行动不便)与 GTK+ 2 应用程序交互成为可能。 更多信息参见 Gnome 可访问性性 .
Pango
Pango 是新的用于国际化文本的布局和显示的全功能框架。 感谢 Pango,GTK+ 2 现在对于那些不居住在美国或欧洲的用户更为有用了。Pango 可以处理以非从左到右方向排列的文本,并且可以容易地管理复杂语言,甚至还可以处理根据使用环境而采用不同形式的信函。
Pango 支持双向文本,所以您可以将从左到右的文本和从右到左的文本混合编排;还有用于确定各种复杂文本(如阿拉伯语和泰米尔语)形状的插件。Pango 不仅仅是国际化;Pango 库在 Xft 和 XRender? 扩展的帮助下处理抗锯齿字体文本的显示。有关更多的详细信息,请阅读两篇有关 Pango 的 developerWorks 文章(请参阅参考资料)。
Pango 被设计成模块化的结构, 核心的 Pango 层可以使用四种不同的后端来实现其功能:
- 核心的 X window 系统字体
- 在 X 中使用 Xft 库的客户端字体
- 使用 FreeType? 库直接渲染的字体
- 使用 Microsoft 提供的字体
动态的装载相应的模块, 并完成组合的印刷和字体渲染.
以我们所知道的底层渲染过程相对, Pango 包括了 PangoLayout?, 一个高层的用于整块文本布局渲染的驱动和方法, 并用于辅助编辑国际化文本.
GTK+
GTK (GIMP Toolkit) 是一套用于创建图形用户界面的工具包。它遵循 LGPL 许可证,所以你可以用它来开发开源软件、自由软件,甚至是封闭源代码的商业软件,而不用花费任何钱来购买许可证和使用权。
GTK 被称为 GIMP 工具包是因为最初写它是用来开发 GIMP (GNU 图像处理程序) 的,但是它现在已经被用于很多软件项目了,包括 GNOME (GNU 网络对象模型环境)。GTK 是在 GDK (GIMP Drawing Kit) 和 gdk-pixbuf 的基础上建立起来的,GDK 基本上是对访问窗口的底层函数 (在 X 窗口系统中是 Xlib) 的一层封装,gdk-pixbuf 是一个用于客户端图像处理的库。
Librsvg
是一个 GNOME 用来处理 svg 格式图形的库. svg 是一个 w3c 的标准, 是一种使用 xml 来描述 2 维图像及相关应用的语言. 它所描述的是图像是矢量图. Gnome 中的组件中的图形正逐渐转向使用 svg, 即以 矢量图形替代传统的点阵图形.
主页: http://librsvg.sourceforge.net/
svg: http://www.w3.org/Graphics/SVG/
SVG 走向 Linux 桌面之路: http://www.gnome-cn.org/documents/gnome_culture/svg_and_its_path_to_linux_desktop
末完待续(这是一个wiki, 你可以登录后编辑这里的内容, 谢谢你的参与)
Cairo -- Thu, 02 Sep 2004 19:31:51 -0500 reply
有空要把《开罗》也放进来。gtk很快就要以开罗为主渲染后端了。

