Expand description
Fonts, font families and a font cache.
Before you can use a font in a PDF document, you have to load the FontData for it, either
from a file (FontData::load) or from bytes (FontData::new). See the rusttype
crate for the supported data formats. Use the from_files function to load a font family
from a set of files following the default naming conventions.
The FontCache caches all loaded fonts. A Font is a reference to a cached font in
the FontCache. A FontFamily is a collection of a regular, a bold, an italic and a
bold italic font (raw data or cached).
Add fonts to a document’s font cache by calling Document::add_font_family. This method
returns a reference to the cached data that you then can use with the Style struct to
change the font family of an element.
There are two methods for using fonts in a PDF font: You can either embed the font data into
the PDF file. Or you can use one of the three built-in font families (Builtin) that PDF
viewers are expected to support. You can choose between the two methods when loading the font
(from_files, FontData::load, FontData::new).
If you choose a built-in font family, you still have to provide the font data so that genpdfi
has access to its glyph metrics. Note that it is sufficient to use a font that is metrically
identical to the built-in font. For example, you can use the Liberation fonts instad of the
proprietary Helvetica, Times and Courier fonts.
Built-in fonts can only be used with characters that are supported by the Windows-1252 encoding.
Note: The Font and FontFamily<Font> structs are only valid for the
FontCache they have been created with. If you dont use the low-level render module
directly, only use the Document::add_font_family method to add fonts!
§Internals
There are two types of font data: A FontData instance stores information about the glyph
metrics that is used to calculate the text size. It can be loaded at any time using the
FontData::load and FontData::new methods. Once the PDF document is rendered, a
printpdf::IndirectFontRef is used to draw text in the PDF document. Before a font can be
used in a PDF document, it has to be embedded using the FontCache::load_pdf_fonts method.
If you use the high-level interface provided by Document to generate a PDF document, these
steps are done automatically. You only have to manually populate the font cache if you use the
low-level interface in the render module.
Structs§
- Font
- A reference to a font cached by a
FontCache. - Font
Cache - Stores font data that can be referenced by a
FontorFontFamily. - Font
Data - The data for a font that is cached by a
FontCache. - Font
Fallback Chain - A font fallback chain for handling mixed-script documents.
- Font
Family - A collection of fonts with different styles.
- Glyph
Coverage - Statistics about glyph coverage for a given text.
- Metrics
- The metrics of a font at a given scale.
Enums§
- Builtin
- A built-in font family.
- Font
Style 🔒 - RawFont
Data 🔒
Functions§
- from_
file 🔒 - from_
files - Loads the font family at the given path with the given name.