#!/usr/bin/perl -w
# $Id: make_metrics,v 1.3 1998/03/25 12:59:53 aas Exp $
#
# This program creates metrics modules for some fonts and place them
# under the "Metrics" directory.
#
# Author: Gisle Aas
@FONTS = qw(Courier
Courier-Bold
Courier-Oblique
Courier-BoldOblique
Helvetica
Helvetica-Bold
Helvetica-Oblique
Helvetica-BoldOblique
Times-Roman
Times-Bold
Times-Italic
Times-BoldItalic
);
@FONTS = @ARGV if @ARGV;
require Font::AFM;
$0 =~ s,.*/,,;
use File::Path qw(mkpath);
mkpath("lib/Font/Metrics", 1, 0755);
for $font (@FONTS) {
eval {
$afm = new Font::AFM $font;
};
if ($@) {
print $@;
next;
}
@wx = $afm->latin1_wx_table;
($fontmod = $font) =~ s/-//g;
open(FONTDEF, ">lib/Font/Metrics/$fontmod.pm") or die "Can't open $fontmod.pm: $!";
select FONTDEF;
print "# Font metrics for $font\n#\n";
print "# DO NOT EDIT!!!\n";
print "#\n";
print "# This file was auto-generated by $0 based on the AFM file for the font.\n";
print "#\n# ", $afm->Notice, "\n";
print "\n";
print "package Font::Metrics::$fontmod;\n";
print "\n# Character width table (iso-8859-1)\n";
print "\@wx = (\n";
$i = 0;
for (@wx) {
printf " %-6s", sprintf "%.3g,", $_ / 1000;
unless (++$i % 8) {
print "\n";
}
}
print ");\n";
$upos = $afm->UnderlinePosition;
$uthick = $afm->UnderlineThickness;
if ($upos && $uthick) {
print "\n";
printf "\$UnderlinePosition = %.3g;\n", $upos/1000;
printf "\$UnderlineThickness = %.3g;\n", $uthick/1000;
}
print "\n1;\n";
}