Blame tools/test/MES-Conformance/CheckConformance.pl

Packit f0e7df
#!/usr/bin/perl
Packit f0e7df
# $Id: CheckConformance.pl,v 1.1 2009-12-27 16:25:15 Stevan_White Exp $
Packit f0e7df
#
Packit f0e7df
# Check conformance of font file with given character sets.
Packit f0e7df
Packit f0e7df
# Get the characters in the font file
Packit f0e7df
# Regexp for ENCODING line matches BDF and PfaEdit's SFD formats
Packit f0e7df
if ($#ARGV >= 0) {
Packit f0e7df
    open(FONTFILE, $ARGV[0]);
Packit f0e7df
} else {
Packit f0e7df
    open(FONTFILE, "
Packit f0e7df
}
Packit f0e7df
while (<FONTFILE>) {
Packit f0e7df
    if (/^E[Nn][Cc][Oo][Dd][Ii][Nn][Gg]:? ([\d]+)/) {
Packit f0e7df
	$char{$1} = 1;
Packit f0e7df
    }
Packit f0e7df
}
Packit f0e7df
close (FONTFILE);
Packit f0e7df
Packit f0e7df
$tbldir = "./";
Packit f0e7df
@tables = ("MES-1.lst", "MES-2.lst", "MES-3B.lst");
Packit f0e7df
Packit f0e7df
foreach $table (0 .. $#tables) {
Packit f0e7df
Packit f0e7df
    $tblfile = $tbldir.$tables[$table];
Packit f0e7df
Packit f0e7df
    # Read in the table with the named entities
Packit f0e7df
    open(TABLE, "<$tblfile") || die "Cannot find $tblfile\n";
Packit f0e7df
    delete @table{keys %table};
Packit f0e7df
    while () {
Packit f0e7df
	if (/^\#.*/) {
Packit f0e7df
	    next;
Packit f0e7df
	} else {
Packit f0e7df
	    chomp;
Packit f0e7df
	    ($code,$name) = split(/:/, $_, 9999);
Packit f0e7df
	    $table{hex($code)} = $name;
Packit f0e7df
	}
Packit f0e7df
    }
Packit f0e7df
    close(TABLE);
Packit f0e7df
    
Packit f0e7df
    # Get the list of missing chars, sorted numerically by their code
Packit f0e7df
    foreach $key (sort {$a <=> $b} keys %table) {
Packit f0e7df
	if ($char{$key} != 1) {
Packit f0e7df
	    push @missing, $key;
Packit f0e7df
	}
Packit f0e7df
    }
Packit f0e7df
    
Packit f0e7df
    # Print the list of missing chars, code and ISO 10646 name
Packit f0e7df
    if ($#missing >= 0) {
Packit f0e7df
	print "\n$#missing characters are found missing for conformance with ";
Packit f0e7df
	print "$tblfile:\n";
Packit f0e7df
	for ($i = 0; $i <= $#missing; $i++) {
Packit f0e7df
	    printf("%04X  %s\n", $missing[$i], $table{$missing[$i]});
Packit f0e7df
	}
Packit f0e7df
    } else {
Packit f0e7df
	print "\nCongratulations!\n";
Packit f0e7df
	print "No characters are found missing for conformance with ";
Packit f0e7df
	print "$tblfile.\n";
Packit f0e7df
    }
Packit f0e7df
}