###=====================================================================### 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: beebe@math.utah.edu, beebe@acm.org, beebe@computer.org,### beebe@ieee.org (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)}
###=====================================================================
### 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: beebe@math.utah.edu, beebe@acm.org, beebe@computer.org,
### beebe@ieee.org (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)
}