###=====================================================================
### Read two Adobe Font Metric files, and compute tables of the
### differences in character repertoire, declared widths (WX), and
### bounding boxes.
###
### Usage:
### awk -f afmdiff.awk file1.afm file2.afm
###
### Author:
### Nelson H. F. Beebe
### Center for Scientific Computing
### University of Utah
### Department of Mathematics, 322 INSCC
### 155 S 1400 E RM 233
### Salt Lake City, UT 84112-0090
### USA
### Email: [email protected], [email protected], [email protected],
### [email protected] (Internet)
### WWW URL: http://www.math.utah.edu/~beebe
### Telephone: +1 801 581 5254
### FAX: +1 801 585 1640, +1 801 581 4148
###
########################################################################
########################################################################
########################################################################
### ###
### awkdiff.awk: compare two Adobe Font Metric files ###
### ###
### Copyright (C) 2000 Nelson H. F. Beebe ###
### ###
### This program is covered by the GNU General Public License (GPL), ###
### version 2 or later, available as the file COPYING in the program ###
### source distribution, and on the Internet at ###
### ###
### ftp://ftp.gnu.org/gnu/GPL ###
### ###
### http://www.gnu.org/copyleft/gpl.html ###
### ###
### This program is free software; you can redistribute it and/or ###
### modify it under the terms of the GNU General Public License as ###
### published by the Free Software Foundation; either version 2 of ###
### the License, or (at your option) any later version. ###
### ###
### This program is distributed in the hope that it will be useful, ###
### but WITHOUT ANY WARRANTY; without even the implied warranty of ###
### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ###
### GNU General Public License for more details. ###
### ###
### You should have received a copy of the GNU General Public ###
### License along with this program; if not, write to the Free ###
### Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, ###
### MA 02111-1307 USA ###
### ###
### This program may also be distributed as part of AFPL ###
### Ghostscript, under the terms of the Aladdin Free Public License ###
### (the "License"). ###
### ###
### Every copy of AFPL Ghostscript must include a copy of the ###
### License, normally in a plain ASCII text file named PUBLIC. The ###
### License grants you the right to copy, modify and redistribute ###
### AFPL Ghostscript, but only under certain conditions ###
### described in the License. Among other things, the License ###
### requires that the copyright notice and this notice be preserved ###
### on all copies. ###
### ###
########################################################################
########################################################################
########################################################################
#
# [29-Apr-2000]
#=======================================================================
/^FontName/ { FontName[++NFontName] = $2 }
/^C / {
if (NFontName == 1)
CharName1[$8]++
if (NFontName == 2)
CharName2[$8]++
}
/^C / {
name = $8
if (name in WX)
{
if (WX[name] != $5)
WXDIFF[name] = WX[name] - $5
}
else
WX[name] = $5
}
/^C / {
name = $8
bx = $13 - $11
if (name in BX)
{
if (BX[name] != bx)
BXDIFF[name] = BX[name] - bx
}
else
BX[name] = bx
}
/^C / {
name = $8
by = $14 - $12
if (name in BY)
{
if (BY[name] != by)
BYDIFF[name] = BY[name] - by
}
else
BY[name] = by
}
END {
Sortpipe = "sort -f | pr -c3 -w80 -l1 -t"
print "Comparison of AFM metrics in files:", ARGV[1], ARGV[2]
print "Font names:", FontName[1], FontName[2]
show_name_diffs(FontName[2],CharName2, FontName[1],CharName1)
show_name_diffs(FontName[1],CharName1, FontName[2],CharName2)
show_num_diffs("WX width differences", WXDIFF)
show_num_diffs("Bounding box width differences", BXDIFF)
show_num_diffs("Bounding box height differences",BYDIFF)
}
function show_name_diffs(font1,array1,font2,array2, name)
{
print "\nChars from", font2, "missing from", font1 ":"
for (name in array2)
{
if (!(name in array1))
printf("%s\n", name) | Sortpipe
}
close(Sortpipe)
}
function show_num_diffs(title,array, name)
{
printf("\n%s:\n", title)
for (name in array)
printf("%-15s\t%4d\n", name, array[name]) | Sortpipe
close(Sortpipe)
}
|