XSL-FO Tutorials - Herong's Tutorial Examples - v2.25, by Herong Yang
Font Attributes and Generic Fonts
This section describes font attributes to specify font family, size, style and weight. XSL-FO supports 5 generic font families: serif, sans-serif, cursive, fantasy, and monospace.
According to the XSL-FO specification, a common set of font attributes can be specified in many formatting objects like flow, static-content, block, inline, character, etc. But if they are not specified, a default font will be decided by the XSL processor.
Here some commonly used font attributes:
XSL-FO also supports 5 generic font families: "serif", "sans-serif", "cursive", "fantasy", and "monospace", which will be mapped to specific font families by the XSL processor.
Here is my tutorial example, XSL-FO-Generic-Font-Families.fo, that uses font attributes to select a font from XSL-FO generic font families:
<?xml version="1.0" encoding="utf-8"?> <!-- XSL-FO-Generic-Font-Families.fo - Copyright (c) 2006 HerongYang.com. All Rights Reserved. --> <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> <fo:layout-master-set> <fo:simple-page-master master-name="page" margin="0.1in" page-height="4.4in" page-width="3.4in"> <fo:region-body region-name="body"/> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference="page"> <fo:flow flow-name="body"> <fo:block margin-top="6pt">Default font: <fo:inline background-color="#ffddff"> The tangram is a dissection puzzle. </fo:inline> </fo:block> <fo:block margin-top="6pt">Generic font "sans-serif": <fo:inline background-color="#ffddff" font-family="sans-serif" font-size="12pt"> The tangram is a dissection puzzle. </fo:inline> </fo:block> <fo:block margin-top="6pt">Generic font "serif": <fo:inline background-color="#ffddff" font-family="serif" font-size="12pt" font-style="italic"> The tangram is a dissection puzzle. </fo:inline> </fo:block> <fo:block margin-top="6pt">Generic font "cursive": <fo:inline background-color="#ffddff" font-family="cursive" font-size="12pt" font-weight="bold"> The tangram is a dissection puzzle. </fo:inline> </fo:block> <fo:block margin-top="6pt">Generic font "fantasy": <fo:inline background-color="#ffddff" font-family="fantasy" font-size="12pt"> The tangram is a dissection puzzle. </fo:inline> </fo:block> <fo:block margin-top="6pt">Generic font "monospace": <fo:inline background-color="#ffddff" font-family="monospace" font-size="12pt"> The tangram is a dissection puzzle. </fo:inline> </fo:block> </fo:flow> </fo:page-sequence> </fo:root>
If you process this example XSL-FO document with Apache FOP tool on the AWT window, you will get some warnings:
herong> fop -fo XSL-FO-Generic-Font-Families.fo -awt ... org.apache.fop.events.LoggingEventListener processEvent WARNING: Font "cursive,normal,700" not found. Substituting with "any,normal,700" ... org.apache.fop.events.LoggingEventListener processEvent WARNING: Font "fantasy,normal,400" not found. Substituting with "any,normal,400" ... org.apache.fop.render.java2d.Java2DRenderer getPageImage INFO: Rendering Page 1 (pageWidth 245, pageHeight 317)
Those warnings tell us that Apache FOP does not have built-in font to support "cursive,normal,700" and "fantasy,normal,400". Note that font-weight "normal" is "400" and "bold" is "700".
The picture below shows you how the Apache FOP AWT output looks like:
As can see from the first block, Apache FOP uses "sans-serif" as the default font family.
Table of Contents
Apache™ FOP (Formatting Objects Processor)
XSL-FO Document Basics and Examples
Block-Level Formatting Objects
Inline-Level Formatting Objects
Including Graphics in XSL-FO document
Floating Blocks - "float" and "footnote"
Hyperlinks, Table of Contents and Indexes
Headers and Footers using "static-content"
►Font Attributes and Font Families
►Font Attributes and Generic Fonts
Generic Font for Chinese Characters
Apache FOP Font Configurations