9 our ($w,$h,$xo,$yo,$y,$bitmap,$glyph);
13 my $key= sprintf "%d,%d,%d,%d", $w,$h,$xo,$yo;
16 foreach my $path (@rulespath) {
17 my $script="$path/$key.rules";
18 $!=0; $@
=''; my $f = do $script;
23 die "$! $? $script" unless $! == &ENOENT
;
25 return $cache{$key}=undef;
29 my ($inbdf,$outbdf) = @_;
31 if ($state eq 'bitmap' && $y==$h) {
32 local ($_) = lc $glyph;
33 my $rules= loadrules
();
37 print $outbdf $_,"\n" or die $!
38 foreach split /\;/ $_; # /;
41 if ($state eq 'bitmap') {
42 m/^([0-9a-fA-F]+)\s+$/ or die $y;
43 length($1) == (($w+7 >> 3) << 1) or die "$1 $w";
46 if ($state eq 'begin' && m/^FOUNDRY\s+/) {
47 return 0 unless m/^FOUNDRY\s+\"[Mm]isc\"\s+/) {
51 if ($state eq 'idle' && m/^STARTCHAR\s/) {
55 if ($state eq 'startchar') {
56 if (m/^BBX\s+(\+?\d+)\s+(\+?\d+)\s+([-+]?\d+)\s+([-+]?\d+)\s+$/) {
57 ($w,$h,$xo,$yo) = ($1,$2,$3,$4);
60 die unless defined $w;
67 die $! if $inbdf->error;
68 die $! if $outbdf->error or $outbdf->flush;
69 die unless $state eq 'idle';
72 processbdf
('STDIN','STDOUT');