File: make_metrics

package info (click to toggle)
libfont-afm-perl 1.20-4
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 184 kB
  • sloc: perl: 238; makefile: 5
file content (77 lines) | stat: -rwxr-xr-x 1,638 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#!/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";
}