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, or monospace. It is possible to specify multiple family names, e.g., times, serif.

$style is the slant style, one of normal, oblique, or italic.

$weight is the font weight, like normal, or bold.

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.

add_fontdirs( @dirs )

Adds one or more file paths to be searched for font files.

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( $noaliases )

This is a convenience method that registers all built-in corefonts.

Aliases for families serif, sans, and monospace are added unless $noaliases is specified.

You do not need to call this method if you provide your own font registrations.

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, and size.

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.