|
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 |
|