59 lines
1.1 KiB
Perl
59 lines
1.1 KiB
Perl
#!/usr/bin/perl
|
|
|
|
if (@ARGV != 3) {
|
|
print STDERR "Use:\n";
|
|
print STDERR " showdf <showg-script> <old-file> <new-file>\n";
|
|
print STDERR "to create a showg diagram of glyphs differing in two files\n";
|
|
exit 1;
|
|
}
|
|
|
|
$cmd = shift @ARGV;
|
|
$oldf = shift @ARGV;
|
|
$newf = shift @ARGV;
|
|
|
|
open(O, "<$oldf") or die "Unable to open '$oldf'\n";
|
|
open(N, "<$newf") or die "Unable to open '$newf'\n";
|
|
|
|
while(<O>) {
|
|
last if(/CharStrings/);
|
|
}
|
|
while(<N>) {
|
|
last if(/CharStrings/);
|
|
}
|
|
|
|
undef @symlist;
|
|
$sym = '';
|
|
$inlist = 0;
|
|
$nstop = 0;
|
|
|
|
while($so = <O>) {
|
|
if($so =~ m|^(/\S+)\s+\{|) {
|
|
$sym = $1;
|
|
$inlist = 0;
|
|
#printf STDERR "found sym $sym\n";
|
|
if (!$nstop || $sn !~ m|^$sym\s+\{|) {
|
|
while($sn = <N>) {
|
|
#print STDERR "+$sn";
|
|
last if($sn =~ m|^${sym}\s+\{|);
|
|
}
|
|
}
|
|
$nstop = 0;
|
|
} elsif(!$nstop) {
|
|
$sn = <N>;
|
|
#print STDERR "<$so>$sn\n";
|
|
if($so ne $sn) {
|
|
if(!$inlist) {
|
|
$inlist = 1;
|
|
push(@symlist, $sym);
|
|
}
|
|
if($sn =~ m|^(/\S+)\s+\{|) {
|
|
$nstop = 1;
|
|
#printf STDERR "stop at $1\n";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
unshift(@symlist, $cmd, '-c', $oldf, $newf);
|
|
#printf("%s\n", join(' ', @symlist));
|
|
exec @symlist;
|