基本块格式化 | 第 1 页(共4 页) |
既然您已经接触到了 <fo:block>
和 <fo:inline>
元素的一些基本知识,您可以研究它们的更多特性以及用文本块可以做的其它一些事情。让我们首先看看上一章中介绍的 <fo:block>
:
<fo:block font-size="14pt" line-height="17pt">
This is a paragraph of text. Notice that as
<fo:inline font-style="italic">this meaningless
prose</fo:inline> drones on and on, the FOP
software automatically calculates line breaks for us.
Isn't that fascinating?
</fo:block>
该示例使用 line-height
特性来更改行间距。如果不使用该特性,line-height
会和 font-size
相同。使 line-height
比 font-size
大 3 到 6 个点通常是好的做法;如果行与行之间没有小的空间,文本可能会难以辨认和阅读。所需的空间大小取决于字体的特征和文本列宽;如果您正与团队中的图形设计师一起工作,那么请遵循您的这位专家对该值的建议。
用 <fo:inline> 元素进行文本格式化 | 第 2 页(共4 页) |
下面介绍如何用 XSL-FO <fo:inline>
元素来格式化文本:
- 粗体字:使用带
font-weight="bold"
属性的<fo:inline>
元素。 - 斜体字:使用带
font-style="italic"
属性的<fo:inline>
元素。 - 等宽字:使用带
font-family="monospace"
属性的<fo:inline>
元素。 - 更改字体:要采用 serif 字体(通常类似于 Times-Roman),可使用带
font-family="serif"
属性的<fo:inline>
元素。要采用 sans serif 字体(通常类似于 Arial),可使用属性font-family="sans-serif"
(请参阅 FOP 文档以了解如何将机器上安装的字体转换为 FOP 可以使用的字体)。
关于特性的一句话 | 第 3 页(共4 页) |
即使简单的 XSL-FO 文件也会用到几个特性,如 font-size
、line-height
和 font-style
。许多 XSL-FO 特性与您可能知道的 CSS 特性相同。XSL-FO 和 CSS 还有共同之处:即元素常常从其祖先元素继承特性。下面还是那个示例段:
<fo:flow flow-name="xsl-region-body">
<fo:block font-size="14pt" line-height="17pt">
This is a paragraph of text. Notice that as
<fo:inline font-style="italic">this meaningless
prose</fo:inline> drones on and on, the FOP
software automatically calculates line breaks for us.
Isn't that fascinating?
</fo:block>
</fo:flow>
请注意,在定义 <fo:inline>
元素时,示例没有指定 font-size
和 line-height
特性。那是因为那些特性是从包含 <fo:inline>
元素的 <fo:block>
元素继承而来。
关于特性要记住的另一件事:XSL-FO 特性只是 XML 属性。
您会注意到我在本教程中将特性(property)和属性(attribute)互换使用。XSL-FO 规范也是这样做的。
字符实体 | 第 4 页(共4 页) |
以下是对于文本格式化要记住的另一方面:字符实体。不象 HTML,XSL-FO 没有定义字符实体。这意味着每次您想使用字符实体时,必须自己定义它。下面是定义字符实体的语法:
<!DOCTYPE fo:root [
<!ENTITY frac14 "¼">
]>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:fox="http://xml.apache.org/fop/extensions">
该代码定义了一个实体,并将它与一个特定字符相结合(DOCTYPE
关键字后的第一个单词必须是文档根元素的名称)。一旦您已经定义了字符实体,就可以在 XSL-FO 文档中使用它,就象您在 HTML 文档中所做的那样。当您在本教程的后续部分“XSL 格式化对象(XSL Formatting Object,XSL-FO)高级技术”阅读到无序列表时,您将看到另一个在 XSL-FO 中使用字符实体的示例。