7 our $package='xfonts-traditional';
8 our $sharedir="/usr/share/$package";
17 foreach my $path (@rulespath) {
18 my $script="$path/$key.rules";
19 $!=0; $@=''; my $f = do $script;
24 die "$! $? $script" unless $! == &ENOENT;
26 return $cache{$key}=undef;
30 my ($inbdf,$outbdf) = @_;
32 my ($donefoundry,$donefont);
33 my ($w,$h,$xo,$yo,$y,$bitmap,$glyph);
35 if ($state eq 'bitmap' && $y==$h) {
36 local ($_) = uc $glyph;
37 my $key= sprintf "%d,%d,%d,%d", $w,$h,$xo,$yo;
38 my $rules= loadrules($key);
42 print $outbdf $_,"\n" or die $!
43 foreach split /\;/, $_; # /;
46 if ($state eq 'bitmap') {
47 m/^([0-9a-fA-F]+)\s+$/ or die $y;
48 length($1) == (($w+7 >> 3) << 1) or die "$1 $w";
53 if ($state eq 'idle' && m/^FOUNDRY\s+/) {
54 return 0 unless m/^FOUNDRY\s+\"[Mm]isc\"\s+/;
58 if ($state eq 'idle' && m/^FONT\s+/) {
59 return 0 unless s/^(FONT\s+)\-[Mm]isc\-/$1-Trad-/;
62 if ($state eq 'idle' && m/^STARTCHAR\s/) {
63 die unless $donefoundry;
68 if ($state eq 'startchar') {
69 if (m/^BBX\s+(\+?\d+)\s+(\+?\d+)\s+([-+]?\d+)\s+([-+]?\d+)\s+$/) {
70 ($w,$h,$xo,$yo) = ($1,$2,$3,$4);
73 die unless defined $w;
79 print $outbdf $_ or die $!;
81 die $! if $inbdf->error;
82 die $! if $outbdf->error or !$outbdf->flush;
83 die unless $state eq 'idle';
87 'R|rules-include=s@' => \@rulespath,
88 'share-dir=s' => \$sharedir,
91 sub define_mode ($$) {
92 my ($optname,$f) = @_;
93 push @options, $optname, sub {
94 die "only one mode may be specified\n" if defined $mode;
99 define_mode('bdf-filter', sub {
102 processbdf((new IO::File '<&STDIN'),
103 (new IO::File '>&STDOUT'));
106 Getopt::Long::Configure(qw(bundling));
107 GetOptions(@options) or exit 127;
109 push @rulespath, "$sharedir/rules";
111 die "need a mode\n" unless $mode;
115 # 70 zcat /usr/share/fonts/X11/misc/6x13.pcf.gz |pcf2bdf >in.bdf
116 # 71 ./utility <in.bdf >out.bdf
117 # 83 bdftopcf out.bdf >out.pcf
119 # 85 cp out.pcf.gz /usr/share/fonts/X11/misc/
120 # really mkfontdir /usr/share/fonts/X11/misc/