NAME
Text::Layout::FontConfig - Pango style font description for Text::Layout
SYNOPSIS
Font descriptors are strings that identify the characteristics of the desired font. For example, Sans Italic 20.
The PDF context deals with physical fonts, e.g. built-in fonts like Times-Bold and fonts loaded from font files like /usr/share/fonts/dejavu/DejaVuSans.ttf.
To map font descriptions to physical fonts, these fonts must be registered. This defines a font family, style, and weight for the font.
Note that Text::Layout::FontConfig is a singleton. Creating objects with new() will always return the same object.
METHODS
- new( [ atts... ] )
-
For convenience only. Text::Layout::FontConfig is a singleton. Creating objects with new() will always return the same object.
Attributes:
- corefonts
-
If true, a predefined set of font names (the PDF corefonts) is registered.
- register_fonts( $font, $family, $style [ , $weight ] [ , $props ] )
-
Registers a font fmaily, style and weight for the given font.
$font can be the name of a built-in font, or the name of a TrueType or OpenType font file.
$family is a font family name such as
normal,sans,serif, ormonospace. It is possible to specify multiple family names, e.g.,times, serif.$style is the slant style, one of
normal,oblique, oritalic.$weight is the font weight, like
normal, orbold.For convenience, style combinations like "bolditalic" are allowed.
A final hash reference can be passed to specify additional properties for this font. Recognized properties are:
shaping- If set to a true value, this font will require text shaping. This is required for fonts that deal with complex glyph rendering and ligature handling like Devanagari.Text shaping requires module HarfBuzz::Shaper.
ascender- If set overrides the font ascender. This may be necessary to improve results for some fonts. The value is expressed in 1/1000th of an em.descender- If set overrides the font descender. This may be necessary to improve results for some fonts. The value is expressed in 1/1000th of an em.underline_thickness,underline_position- Overrides the font specified or calculated values for underline thickness and/or position. This may improve results for some fonts.strikeline_thickness,strikeline_position- Overrides the font specified or calculated values for strikeline thickness and/or position. This may improve results for some fonts.Note that strikeline thickness will default to underline thickness, if set.
overline_thickness,overline_position- Overrides the font specified or calculated values for overline thickness and/or position.This may improve results for some fonts.
Note that overline thickness will default to underline thickness, if set.
- register_aliases( $family, $aliases, ... )
-
Adds aliases for existing font families.
Multiple aliases can be specified, e.g.
$layout->register_aliases( "times", "serif, default" );or
$layout->register_aliases( "times", "serif", "default" );
- register_corefonts( %options )
-
This is a convenience method that registers all built-in corefonts.
Aliases for families
serif,sans, andmonospaceare added unless $noaliases is specified.You do not need to call this method if you provide your own font registrations.
Options:
- aliases
-
If true, register Serif, Sans and Mono as aliases for Times, Helvetica and Courier.
This is enabled by default and can be cancelled with
noaliases. - noaliases
-
If true, do not register Serif, Sans and Mono as aliases for Times, Helvetica and Courier.
- remap
-
Remap the core fonts to real TrueType or OpenType font files.
Supported values are
GNU_Free_Fontsorfreeto use the GNU Free Fonts (http://ftp.gnu.org/gnu/freefont/) andtexortex-gyrefor the TeX Gyre fonts (https://www.gust.org.pl/projects/e-foundry/tex-gyre/).
- remap($font)
- remap( $src => $dst, ... )
-
Handles font remapping. The main purpose is to remap corefonts to real fonts.
With a single argument, returns the remapped value, or undef if none.
With a hash argument, maps each of the targets (keys) to a font file (value). This file must be present in one of the font directories.
Alternatively, the key may be one of
Times,HelveticaandCourierand the value an already registered family.
- find_font( $family, $style, $weight )
-
Returns a font descriptor based on the given family, style and weight.
On Linux, fallback using fontconfig.
- from_string( $description )
-
Returns a font descriptor using a Pango-style font description, e.g.
Sans Italic 14.On Linux, fallback using fontconfig.
- parse( $description )
-
Parses a Pango-style font description and returns a hash ref with keys
family,style,weight, andsize.Unspecified items are returned as empty strings or, in the case of
size, zero.
- from_filename( $filename )
-
Returns a font descriptor from a filename. Tries to infer Pango data from the name.
SEE ALSO
Text::Layout, Text::Layout::FontDescriptor.
AUTHOR
Johan Vromans, <JV at CPAN dot org>
SUPPORT
This module is part of <Text::Layout>.
Development takes place on GitHub: https://github.com/sciurius/perl-Text-Layout.
You can find documentation for this module with the perldoc command.
perldoc Text::Layout::FontConfig
Please report any bugs or feature requests using the issue tracker for Text::Layout on GitHub.
LICENSE
See Text::Layout, Text::Layout::FontDescriptor, HarfBuzz::Shaper.