Blob Blame History Raw
#!/usr/local/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";
}