|
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 |
}
|