通过将font-variant CSS属性与prince-opentype()函数一起使用,可以启用其他OpenType 功能(请参阅 CSS Functional Expressions)。
Prince将CSS通用字体系列映射到Microsoft Core Fonts。Microsoft Core Fonts预安装在Windows和MacOS X系统上,但不安装在Linux系统上。要在Linux上使用它们,您必须安装msttcorefonts 包,该包可用于大多数Linux发行版。
通过fonts.css在Prince安装中编辑文件,可以重新定义CSS通用字体系列以使用不同的字体(请参阅安装布局)。每个字体系列都使用@font-face规则定义 ,该规则通过名称或文件名将字体系列映射到实际字体。(请参阅 通用字体系列)。
下面是将通用“sans-serif”字体系列映射到称为“Trebuchet MS”的本地系统字体的示例。
fonts.css
@font-face {
font-family: sans-serif;
src: local("Trebuchet MS")
}
还可以将通用字体系列映射到由TrueType字体文件的文件名指定的本地字体。这通常需要使用多个 @font-face规则,一个用于字体系列中的每个TrueType字体文件,通常包括四个文件(普通,粗体,斜体和粗体斜体)。下面是使用文件名将通用“sans-serif”字体系列映射到“Trebuchet MS”字体的示例,假设该字体安装在Linux上的常用系统目录中。
fonts.css
@font-face {
font-family: sans-serif;
font-style: normal;
font-weight: normal;
src: url("/usr/share/fonts/truetype/msttcorefonts/trebuc.ttf")
}
@font-face {
font-family: sans-serif;
font-style: normal;
font-weight: bold;
src: url("/usr/share/fonts/truetype/msttcorefonts/trebucbd.ttf")
}
@font-face {
font-family: sans-serif;
font-style: italic;
font-weight: normal;
src: url("/usr/share/fonts/truetype/msttcorefonts/trebucit.ttf")
}
@font-face {
font-family: sans-serif;
font-style: italic;
font-weight: bold;
src: url("/usr/share/fonts/truetype/msttcorefonts/trebucbi.ttf")
}
可以指示Prince不要在--no-system-fonts 命令行选项中使用系统字体 。只有@font-face CSS中使用规则定义的字体 才可用。
二、布局
布局是在页面上设置文本和图片的方式。它定义了文档的最终外观。Prince通过CSS,层叠样式表了解布局。
在接下来的章节中,我们将在准备页面布局时介绍要点。它主要遵循网页布局的一般步骤:从文本格式和段落格式,从Box模型开始,直到表格,列表, 列,浮点数,弹性布局和脚注。
另一章章节媒体将深入分析网页格式与PDF /打印之间的主要区别,即PDF是分页的,内容放在离散的页面上。
1、文字格式
通过定义字体样式或文本布局样式,可以使用CSS设置文本样式。
使用font-family 属性为文本选择合适的字体(请参阅字体)后,可以使用font-size属性为其指定不同的大小 。
接下来你应该决定是否给它一些color。页面的默认文本颜色在body选择器中定义,但每个选择器可以有自己的颜色。
body {
font-family: Helvetica, Arial, sans-serif;
color: blue;
}
特殊格式可以通过实现font-style, font-weight,text-transform 或text-decoration性质。所有这些属性也可以使用速记属性进行设置font。
也可以使用vertical-align属性在内联框中设置文本的垂直对齐样式。该值baseline是默认值,sub并将super元素的基线分别与其父级的下标 - 基线或上标 - 基线对齐。的 text-top和text-bottom值对准父字体的顶部或底部元件的顶部,而middle对准与基线加上父的x高度的一半的元件的中间。
为了确定文本应该显示的紧凑程度,letter-spacing 可以使用。或者,font-stretch可以使用该属性,但请注意,它不会通过拉伸或缩小任何字体来更改任何字体的几何形状 - 相反,它只是指示Prince选择最合适的字体,如果所选字体提供了几个字体。另请注意,Windows上的系统字体不支持此属性。
以类似的方式,该属性word-spacing可用于确定单词之间的距离。
通过写入模式控制文本的方向性。
2、段落格式
现在您已经确定了文本的基本属性,您可以将注意力转移到段落样式上。该text-align属性用于控制文本在其包含框中的对齐方式,而 text-indent属性确定元素中第一行文本的缩进。
如果text-align属性的值为left, right或者center,文本将分别与左,右或中心对齐。该justify值指示Prince证明文本的合理性。在印刷文本中,基于文本是出现在左页还是右页来对齐文本并不罕见。为了支持这一点,在text-align属性中添加了两个新关键字 :inside与右页的“左”和左页的outside “右”相同,与左页的“右”和右页的“左”相同。
Prince添加了属性prince-text-justify来定义如何处理CJK语言的合理文本。prince-cjk 即使没有任何空格字符,该值也允许在校对时在CJK字符之间插入空格。
元素的最后一行可以使用text-align-last属性接收自己的对齐样式 。它采用相同的值text-align。
p {
text-align: justify;
text-indent: 5em;
}
也可以以不同的方式设置段落的第一行样式 - 为此,使用选择器::first-line。
p::first-line {
text-indent: 8em;
}
给段落的第一个字母提供比段落其余部分更大的字体大小并不罕见。选择器::first-letter可用于此目的。
p::first-letter {
font-size: 2em;
}
最常见的用例之一是所谓的首字母大写字母 - 章节开头的大写字母,具有几行文本的深度。
在下面的例子中,我们选择第一个段落的第一个字母,它的样式比普通文本大得多,然后浮动到左边。正常的文字围绕着这第一个大字母。
p:first-child::first-letter {
font-size: 5em;
line-height: 3rem;
float: left;
}
格式化段落时的另一个重要方面是文本行在打印页面上应显示的紧凑程度。该属性 line-height可用于确定文本行的高度。
该属性line-stacking-strategy允许选择单个行是否应根据其内容确定其高度,或者段落中的所有行是否应具有相同的高度,或者在其高度由其内容确定并且然后向上舍入为段落行高。
为了以均衡的方式布置文本,有时可能需要用连字符连字 - 为了启用连字符,使用hyphens 属性。有关详细信息,请参阅关于连字符的部分 。
即使在没有空格的情况下,Prince也允许在某些情况下进行换行 - 例如,在长URL中的斜杠之后。prince-linebreak-magic对于首选更精确控制换行的情况,可以使用该属性禁用此行为。
该属性overflow-wrap控制最后手段的包装行为:一个单词是否更好地溢出其容器,或者是否在任意点处被破坏(受制于 white-space,而不是在字形簇中分裂),而不添加连字符。
普林斯不支持break-word物业 的价值word-break来达到类似的效果。使用值break-all的word-break,或者属性overflow-wrap与价值 break-word来代替。
3、写作模式
写入模式描述了脚本的方向性,即它描述了脚本的读取方向。在(X)HTML中,文档的语言由lang或xml:lang 属性定义。要控制文本的呈现,可以使用几个CSS属性:direction属性定义脚本的内联方向,从左到右(例如拉丁文或印度文脚本)或从右到左(如例如阿拉伯语和希伯来语脚本)。
writing-mode另一方面,该属性描述了脚本的块方向,即文本是应该水平布局,从上到下(如拉丁文或阿拉伯文脚本),还是垂直,从右到左(如例如中文剧本)。默认值为horizontal-tb,表示水平,从上到下。
Prince根据文档根元素的方向和书写模式设置PDF方向,以支持从右到左的书籍。
更改文档的写入模式(即内联或块方向)不仅会更改脚本的方向,还会影响打印文档的其他几个方面。
页面选择器伪类:recto和:verso (请参阅选择页面)与脚本的方向相关。在从左到右的脚本中,:recto是展开的右侧,:verso是左侧,而在从右到左的脚本中,这些值是反转的::recto定义展开的左侧,并:verso定义右侧。另请参阅选择页面。
更改书写模式时,列会更改其方向 writing-mode vertical-rl- 从上到下水平排列列。
这可用于旋转内容 - 请参阅横向打印宽内容和在表格单元格中旋转内容。