Defoma::Common(3pm) Defoma::Common(3pm)
NAME
Defoma::Common - Defoma module providing miscellaneous functions.
SYNOPSIS
use Defoma::Common;
$h = parse_hints_start( hints... );
$hsub = parse_hints_subhints( hints_hash, face );
$hsub = parse_hints_subhints_inherit( hints_hash, face );
parse_hints_cut( hints_hash, hinttypes... );
parse_hints_cut_except( hints_hash, hinttypes... );
@hints = parse_hints_build( hints_hash );
$charset = get_charset( xencoding );
$xencoding = get_xencoding( charset, encoding );
@XLFDs = get_xlfd_of_font( font, level => level, face => face );
my $num = weight_ascii2integer( weightstring );
my $num = weight_a2i( weightstring );
DESCRIPTION
parse_hints_start is a function to convert hints in an array to a hash.
Hints consist of a list of hinttype and its value(s). Following is the
example of hints in an array form.
--FontName Helvetica-BoldItalic --Family Helvetica --GeneralFamily
SansSerif --Weight Bold --Shape NoSerif Italic --Charset ISO8859-1
In this example, FontName, Family, GeneralFamily, Weight, Shape and
Charset are hinttypes. Items starting with double minus characters '--'
are taken as hinttype. The others are taken as values. The function
converts this array to a hash described in the following style.
FontName => 'Helvetica-BoldItalic',
Family => 'Helvetica',
GeneralFamily => 'SansSerif',
Weight => 'Bold',
Shape => 'NoSerif Italic',
Charset => 'ISO8859-1'
You see that hinttypes are used as keys of a hash, and that Shape has
two values, NoSerif and Italic. If a certain hinttype has more than one
values, they are combined into a single string separated by space.
parse_hints_subhints is a function to get a sub hint hash pointed by
face from the hint hash specified by hints_hash. Please look at fol-
lowing example of a hint hash.
$h = {Inherit => 'Charset Weight',
FontName => 'Helvetica',
Charset => 'ISO8859-1',
Weight => 'Medium',
Shape => 'Upright',
FontName1 => 'Helvetica-Bold',
Weight1 => 'Bold',
FontName2 => 'Helvetica-Unicode',
Charset2 => 'ISO10646-1'};
You see there're some numbered hinttypes. parse_hints_subhints ex-
tracts the hints of the specific number from it. For example, you can
extract the non-numbered hints FontName and Charset by:
$hsub = parse_hints_subhints($h, 0);
and the content of $hsub will be:
FontName => 'Helvetica',
Charset => 'ISO8859-1',
Weight => 'Medium',
Shape => 'Upright'
If you set 1 to the second argument of parse_hints_subhints, the con-
tent of $hsub will be:
FontName => 'Helvetica-Bold',
Weight => 'Bold'
Note that the number of each hinttype is removed.
parse_hints_subhints_inherit is almost the same as parse_hints_sub-
hints, only differs it inherits non-numbered hints specified by Inherit
hinttype. Following is the result of parse_hints_subhints_inherit with
1 and 2 set to the second argument in the example of parse_hints_sub-
hints.
FontName => 'Helvetica-Bold',
Weight => 'Bold',
Charset => 'ISO8859-1'
FontName => 'Helvetica-Unicode',
Weight => 'Medium',
Charset => 'ISO10646-1'
parse_hints_cut is a function to remove hinttypes specified by hint-
types and their values from the hint hash. It is supposed to be used
together with parse_hints_build function.
parse_hints_cut_except is a function to remove all hinttypes except
those specified by hinttypes and their values from the hint hash. It
is supposed to be used together with parse_hints_build function.
parse_hints_build is a function to convert hints in a hash to an array.
get_charset is a function to convert X-RegistryEncoding specified by
xencoding into Charset. X-RegistryEncoding is the last two elements of
XLFD, like iso8859-1 and jisx0208.1983-0. The returned values of these
two are ISO8859-1 and JISX0208 respectively.
get_xencoding is a function to convert Charset and Encoding specified
by charset and encoding into X-RegistryEncoding. encoding is often
omitted.
weight_ascii2integer is a function to convert Weight in string (like
Bold and Medium) into a numeric value (integer). Medium is always zero,
and the bolder, the larger, the lighter, the smaller. For example, Bold
is +2, and Light is -2. weight_a2i is abbreviation for
weight_ascii2integer.
get_xlfd_of_font is a function to get an array of XLFDs of a font spec-
ified by font. You can control the amount of gained XLFDs by level and
face options. level must be either of 'min', 'normal', or 'max'. When
min is specified, not-slanted not-boldized XLFDs registered in xfont
category will be returned. When normal is specified, XLFDs including
boldized and/or slanted (but not reverse slanted) ones registered in
xfont category will be returned. When max is specified, all generated
XLFDs will be returned.
EXAMPLES
$h = parse_hints_start(@_);
@shape = split(/ /, $h->{Shape});
@alias = split(/ /, $h->{Alias});
$priority = $h->{Priority};
$realname = $h->{FontName};
$realname =~ s/ .*//;
parse_hints_cut($h, 'Priority', 'FontName', 'Charset');
@hints = parse_hints_build($h);
SEE ALSO
defoma(1).
March 4, 2001 Defoma::Common(3pm)