和荣笔记 - XSL-FO 与 XHTML
杨和荣, 版本 2.03, 2007年

XSL-FO 基础慨念

XSL-FO 语言有几个重要的基础慨念:

  • 区域模式:将文字和图像按照打印规则编排成打印媒体上的一个个长方形区域,然后将 这些长方形区域组合起来形成媒体的页面。
  • 区域树:一个有序树形结构,其结点由区域组成,而每个区域则有自己的行状,文字, 图像,以及其它排版信息。
  • 页面布局:关于页面划分的规定,以及各种限制。
  • 排版个体:排版语言中的程序运行基本单元。

区域模式

区域: 打印媒体上的一个长方形区域,以及排版参数。

每个区域有三个层次:

-------------------
|     Border      |
| --------------- |
| |   Padding   | |
| | ----------- | |
| | | Content | | |
| | ----------- | |
| |             | |
| --------------- |
|                 |
-------------------

区域的排版参数用于确定文字或者图像的打印方式,以及相关位置。例如:

  • "background-color": 确定区域的背景颜色。
  • "font-size": 确定字体尺寸。
  • "text-align": 确定每行文字起点和终点的相对位置。

在排版过程中,原始文字所形成的区域将按两个方向排例到打印媒体上:

  • "inline-progression-direction": 单个文字走向:读者将沿着这个方向阅读下一个文字。
  • "block-progression-direction": 文字行例走向:读者将沿着这个方向阅读下一行文字。

文字排版走向是根据所排文字的习惯确定的。中国现代文字的排版走向应该是:单个文字走向, 从左到右;文字行例走向,从上到下。

按照排例走向划分,原始文字所形成的区域有两种:

  • Inline Area: 行内区域:按单个文字走向排例的区域。例如,一个单个文字所形成的区域。
  • Block Area: 段落区域:按文字行例走向排例的区域。例如,一段文字所形成的区域。

区域树

区域树:由区域组成的一个有序树形结构。在这个树形结构中,根接点代表着排版 所形成的最后总区域,末端结点代表着一个单个文字所形成的区域,中层结点则代表着由多 个小区域排例起来的大区域。例如,与一段文字相应的大区域是由这段文字中每个文字所形 成小区域排例而形成的。

下面这个区域树示意图代表着排版过程中的一页文字:

Root: The entire page, a block area
|
|- Node: Paragraph 1, a block area
|  |- Node: Line 1, a block area
|  |  |- Leaf: Letter 1, a inline area
|  |  |- Leaf: Letter 2, a inline area
|  |  |- ...
|  |- Node: Line 2, a block area
|  |- ...
|
|- Node: Paragraph 2, a block area
|
|- ...

区域树不仅有效地组织了文字排版形成的区域几何关系,而且为排版参数提供了从广到窄传递途径。 如果没有直接表明,小区域自动继承了它所属的大区域的全部排版参数。比如说,一行文字区域的 背景颜色继承了它所属的段落区域的背景颜色。

页面布局

页面布局:关于页面划分的规定,以及各种限制。

页面布局的定义由两个语句完成:

  • "simple-page-master": 单个页面布局:确定正文部份和边缘部份的位置,以及其它布局参数。
  • "page-sequence-master": 多页面串联次序:确定每一页所使用的页面布局。

页面布局不直接影响排版区域的形成,仅有一定的限制作用。

排版个体

排版个体:排版语言中的程序运行基本单元。

XSL-FO 有三种程序运行基本单元:

  • 第一种生成排版区域。例如,由“fo:block”语句产生的结果。
  • 第二种返回排版区域。
  • 第三种提供区域生成过程中所用参数。例如,由“fo:simple-page-master”语句产生的结果。
杨和荣,修改于2007年
和荣笔记 - XSL-FO 与 XHTML - XSL-FO 基础慨念