Blame make_metrics

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