NAME

Font::TFM -- read and work with TeX font metric files

SYNOPSIS

use Font::TFM;  
### $Font::TFM::TEXFONTSDIR = 'your directories';
### to change the default

my $cmr = new Font::TFM 'cmr10'
	or die "Error reading font: $Font::TFM::errstr\n";
print 'Designsize: ', $cmr->designsize(), "\n";
print $cmr->width('A'), ', ', $cmr->kern('Wo'), "\n";

should print

Designsize: 10
491521.25, -54613.75

DESCRIPTION

Method Font::TFM::new creates a new TFM object in memory, loading all the necessary information from the .tfm file. Second (optional) parameter means scale. You can also use Font::TFM::new_at and as the second parameter put requested size in pt:

my $cmr10_12 = new_at Font::TFM 'cmr10', 12;

The methods new and new_at search for the .tfm files in the directories listed colon separated in a variable $Font::TFM::TEXFONTSDIR, and also in all of their subdirectories. By default, they use files ls-R (this name can be changed in the $Font::TFM::LSFILENAME variable) to speed up the search. This feature can be disabled by setting variable $Font::TFM::TEXFONTSUSELS to 0. Suffix .tfm is appended if necessary.

If the file is not found (or there is some other method), new returns undef and sets error message to $Font::TFM::errstr.

After was the file loaded, you can use following methods of the object to query information about the font's properties and about the characters, etc.

designsize, fontsize

Returns the design size and the actual size of the font in pt.

$cmr->designsize;	returns 10
$cmr->fontsize;			10
$cmr10_12->fontsize;		12
width, height, depth, italic

Returns the requested dimension for a specified character of the font.

$cmr->height("A")		447828.75
$cmr10_12->height("A")		537394.5
$cmr->italic("I")		0
$cmr10_12->italic("f")		61167.75
kern, lig, ligpassover

For a two-letter string returns kern between them, ligature formed and number of characters to pass over after the ligature, respectivelly.

$cmr->lig("fi")			\014
$cmr->lig("ff")			\013
$cmr->lig("\013i")		\016
$cmr10_12->kern("AV")		-87381.75
expand

One string parameter undergoes ligature expansion and then kernings are inserted. Returns array containing of string, kern, string, ...

$cmr->expand("AV--fix")		"A", -72818.125, "V{\014x"
word_dimensions

Returns the width, height and depth of a word. Does the lig/kern expansion, so the result is the real space it will take on output.

$cmr->word_dimensions("AV--fix")
				1947881.875, 455111.25, 0
$cmr->word_dimensions("pm")	910225, 282168.75, 127431.25
word_width, word_height, word_depth

Calls word_dimensions and returns appropriate element. No caching is done, so it is better to call word_dimensions yourself if you will need more than one dimension of one word.

param

Returns parameter of the font, indexed from 1.

slant, x_height, em_width, quad
space, space_stretch, space_shrink, extra_space

Returns the parameter of the font, by name.

$cmr->slant()			0
$cmsl10->slant()		0.166671752929688
$cmr->x_height()		282168.75
$cmr->height("x")		282168.75
$cmr->em_width()		655361.875
$cmr->quad()			655361.875

$cmr->space()			218453.75
$cmr->space_stretch()		109226.875
$cmtt10->space()		344061.25
$cmtt10->space_stretch()	0
name

Returns the name of the font.

Dimensions are multiplied by $Font::TFM::MULTIPLY * actual size of the font. Value of $Font::TFM::MULTIPLY defaults to 65536, so the dimensions can be used directly when writing the .dvi file.

Variable $Font::TFM::DEBUG may be set to 1 to get the processing messages on the standard error output.

VERSION

0.074

SEE ALSO

TeX::DVI(3), TeX::DVI::Parse(3), perl(1).

AUTHOR

(c) 1996--1998 Jan Pazdziora, adelton@fi.muni.cz, http://www.fi.muni.cz/~adelton/ at Faculty of Informatics, Masaryk University, Brno, Czech Republic