Load metrics for postscript fonts using font::afm
This document describes version 2.20 of PostScript::File::Metrics::Loader, released February 11, 2012 as part of PostScript-File version 2.20.
PostScript::File::Metrics::Loader is used by PostScript::File::Metrics when no pre-compiled metrics are available for the requested font or encoding. It uses Font::AFM to read the \s-1AFM\s0 file and extract metrics from it.
You should not normally need to use this module, since pre-compiled metrics for the standard PostScript fonts are included with this distribution. If you request metrics for a non-standard font, PostScript::File::Metrics will load this module automatically.
If you need metrics for additional fonts, you may want to modify and run examples/generate_metrics.pl to create pre-compiled modules for them.
PostScript::File::Metrics::Loader::get_encoding_vector($encoding)
This returns the encoding vector for $encoding, an arrayref of 256 glyph names.
PostScript::File::Metrics::Loader::load($font, \@encodings)
This uses Font::AFM to read the metrics for $font, and creates width tables for each of the @encodings. The metrics are stored into the hashes used internally by PostScript::File::Metrics.
If this happens, it indicates you found a bug in PostScript::File::Metrics::Loader. Please report it as described under \*(L"\s-1AUTHOR\s0\*(R". Font::AFM could not find %s.afm in any of the directories it searched. See \*(L"\s-1CONFIGURATION\s0 \s-1AND\s0 \s-1ENVIRONMENT\s0\*(R". This also indicates a bug in PostScript::File. Please report it. You asked for an encoding that PostScript::File::Metrics doesn't know about.
PostScript::File::Metrics::Loader requires no configuration files or environment variables.
However, it uses Font::AFM, and unfortunately that's difficult to configure properly (which is why I created PostScript::File::Metrics in the first place). Font::AFM expects to find a file named FontName.afm in one of the directories it searches.
I wound up creating symlinks in /usr/local/lib/afm/ (which is one of the default paths that Font::AFM searches if you don't have a \*(C`METRICS\*(C' environment variable):
Courier.afm -> /usr/share/texmf-dist/fonts/afm/adobe/courier/pcrr8a.afm Courier-Bold.afm -> /usr/share/texmf-dist/fonts/afm/adobe/courier/pcrb8a.afm Courier-BoldOblique.afm -> /usr/share/texmf-dist/fonts/afm/adobe/courier/pcrbo8a.afm Courier-Oblique.afm -> /usr/share/texmf-dist/fonts/afm/adobe/courier/pcrro8a.afm Helvetica.afm -> /usr/share/texmf-dist/fonts/afm/adobe/helvetic/phvr8a.afm Helvetica-Bold.afm -> /usr/share/texmf-dist/fonts/afm/adobe/helvetic/phvb8a.afm Helvetica-BoldOblique.afm -> /usr/share/texmf-dist/fonts/afm/adobe/helvetic/phvbo8a.afm Helvetica-Oblique.afm -> /usr/share/texmf-dist/fonts/afm/adobe/helvetic/phvro8a.afm Symbol.afm -> /usr/share/texmf-dist/fonts/afm/adobe/symbol/psyr.afm Times-Bold.afm -> /usr/share/texmf-dist/fonts/afm/adobe/times/ptmb8a.afm Times-BoldItalic.afm -> /usr/share/texmf-dist/fonts/afm/adobe/times/ptmbi8a.afm Times-Italic.afm -> /usr/share/texmf-dist/fonts/afm/adobe/times/ptmri8a.afm Times-Roman.afm -> /usr/share/texmf-dist/fonts/afm/adobe/times/ptmr8a.afm
Paths on your system may vary. I suggest searching for \*(C`.afm\*(C' files, and then grepping them for \*(L"FontName X\*(R", where X is the font you need metrics for.
None reported.
No bugs have been reported.
Christopher J. Madsen \*(C`<perl AT cjmweb.net>\*(C'
Please report any bugs or feature requests to \*(C`<bug-PostScript-File AT rt.cpan.org>\*(C' or through the web interface at http://rt.cpan.org/Public/Bug/Report.html?Queue=PostScript-File <http://rt.cpan.org/Public/Bug/Report.html?Queue=PostScript-File>.
You can follow or contribute to PostScript-File's development at http://github.com/madsen/postscript-file <http://github.com/madsen/postscript-file>.
This software is copyright (c) 2012 by Christopher J. Madsen.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
\s-1BECAUSE\s0 \s-1THIS\s0 \s-1SOFTWARE\s0 \s-1IS\s0 \s-1LICENSED\s0 \s-1FREE\s0 \s-1OF\s0 \s-1CHARGE\s0, \s-1THERE\s0 \s-1IS\s0 \s-1NO\s0 \s-1WARRANTY\s0 \s-1FOR\s0 \s-1THE\s0 \s-1SOFTWARE\s0, \s-1TO\s0 \s-1THE\s0 \s-1EXTENT\s0 \s-1PERMITTED\s0 \s-1BY\s0 \s-1APPLICABLE\s0 \s-1LAW\s0. \s-1EXCEPT\s0 \s-1WHEN\s0 \s-1OTHERWISE\s0 \s-1STATED\s0 \s-1IN\s0 \s-1WRITING\s0 \s-1THE\s0 \s-1COPYRIGHT\s0 \s-1HOLDERS\s0 \s-1AND/OR\s0 \s-1OTHER\s0 \s-1PARTIES\s0 \s-1PROVIDE\s0 \s-1THE\s0 \s-1SOFTWARE\s0 \*(L"\s-1AS\s0 \s-1IS\s0\*(R" \s-1WITHOUT\s0 \s-1WARRANTY\s0 \s-1OF\s0 \s-1ANY\s0 \s-1KIND\s0, \s-1EITHER\s0 \s-1EXPRESSED\s0 \s-1OR\s0 \s-1IMPLIED\s0, \s-1INCLUDING\s0, \s-1BUT\s0 \s-1NOT\s0 \s-1LIMITED\s0 \s-1TO\s0, \s-1THE\s0 \s-1IMPLIED\s0 \s-1WARRANTIES\s0 \s-1OF\s0 \s-1MERCHANTABILITY\s0 \s-1AND\s0 \s-1FITNESS\s0 \s-1FOR\s0 A \s-1PARTICULAR\s0 \s-1PURPOSE\s0. \s-1THE\s0 \s-1ENTIRE\s0 \s-1RISK\s0 \s-1AS\s0 \s-1TO\s0 \s-1THE\s0 \s-1QUALITY\s0 \s-1AND\s0 \s-1PERFORMANCE\s0 \s-1OF\s0 \s-1THE\s0 \s-1SOFTWARE\s0 \s-1IS\s0 \s-1WITH\s0 \s-1YOU\s0. \s-1SHOULD\s0 \s-1THE\s0 \s-1SOFTWARE\s0 \s-1PROVE\s0 \s-1DEFECTIVE\s0, \s-1YOU\s0 \s-1ASSUME\s0 \s-1THE\s0 \s-1COST\s0 \s-1OF\s0 \s-1ALL\s0 \s-1NECESSARY\s0 \s-1SERVICING\s0, \s-1REPAIR\s0, \s-1OR\s0 \s-1CORRECTION\s0.
\s-1IN\s0 \s-1NO\s0 \s-1EVENT\s0 \s-1UNLESS\s0 \s-1REQUIRED\s0 \s-1BY\s0 \s-1APPLICABLE\s0 \s-1LAW\s0 \s-1OR\s0 \s-1AGREED\s0 \s-1TO\s0 \s-1IN\s0 \s-1WRITING\s0 \s-1WILL\s0 \s-1ANY\s0 \s-1COPYRIGHT\s0 \s-1HOLDER\s0, \s-1OR\s0 \s-1ANY\s0 \s-1OTHER\s0 \s-1PARTY\s0 \s-1WHO\s0 \s-1MAY\s0 \s-1MODIFY\s0 \s-1AND/OR\s0 \s-1REDISTRIBUTE\s0 \s-1THE\s0 \s-1SOFTWARE\s0 \s-1AS\s0 \s-1PERMITTED\s0 \s-1BY\s0 \s-1THE\s0 \s-1ABOVE\s0 \s-1LICENSE\s0, \s-1BE\s0 \s-1LIABLE\s0 \s-1TO\s0 \s-1YOU\s0 \s-1FOR\s0 \s-1DAMAGES\s0, \s-1INCLUDING\s0 \s-1ANY\s0 \s-1GENERAL\s0, \s-1SPECIAL\s0, \s-1INCIDENTAL\s0, \s-1OR\s0 \s-1CONSEQUENTIAL\s0 \s-1DAMAGES\s0 \s-1ARISING\s0 \s-1OUT\s0 \s-1OF\s0 \s-1THE\s0 \s-1USE\s0 \s-1OR\s0 \s-1INABILITY\s0 \s-1TO\s0 \s-1USE\s0 \s-1THE\s0 \s-1SOFTWARE\s0 (\s-1INCLUDING\s0 \s-1BUT\s0 \s-1NOT\s0 \s-1LIMITED\s0 \s-1TO\s0 \s-1LOSS\s0 \s-1OF\s0 \s-1DATA\s0 \s-1OR\s0 \s-1DATA\s0 \s-1BEING\s0 \s-1RENDERED\s0 \s-1INACCURATE\s0 \s-1OR\s0 \s-1LOSSES\s0 \s-1SUSTAINED\s0 \s-1BY\s0 \s-1YOU\s0 \s-1OR\s0 \s-1THIRD\s0 \s-1PARTIES\s0 \s-1OR\s0 A \s-1FAILURE\s0 \s-1OF\s0 \s-1THE\s0 \s-1SOFTWARE\s0 \s-1TO\s0 \s-1OPERATE\s0 \s-1WITH\s0 \s-1ANY\s0 \s-1OTHER\s0 \s-1SOFTWARE\s0), \s-1EVEN\s0 \s-1IF\s0 \s-1SUCH\s0 \s-1HOLDER\s0 \s-1OR\s0 \s-1OTHER\s0 \s-1PARTY\s0 \s-1HAS\s0 \s-1BEEN\s0 \s-1ADVISED\s0 \s-1OF\s0 \s-1THE\s0 \s-1POSSIBILITY\s0 \s-1OF\s0 \s-1SUCH\s0 \s-1DAMAGES\s0.