home *** CD-ROM | disk | FTP | other *** search
/ PC World 2001 April / PCWorld_2001-04_cd.bin / Software / Vyzkuste / gs / gs650w32.exe / gs6.50 / lib / afmdiff.awk < prev    next >
Text File  |  2000-12-05  |  6KB  |  151 lines

  1. ###=====================================================================
  2. ### Read two Adobe Font Metric files, and compute tables of the
  3. ### differences in character repertoire, declared widths (WX), and
  4. ### bounding boxes.
  5. ###
  6. ### Usage:
  7. ###    awk -f afmdiff.awk file1.afm file2.afm
  8. ###
  9. ### Author:
  10. ###     Nelson H. F. Beebe
  11. ###     Center for Scientific Computing
  12. ###     University of Utah
  13. ###     Department of Mathematics, 322 INSCC
  14. ###     155 S 1400 E RM 233
  15. ###     Salt Lake City, UT 84112-0090
  16. ###     USA
  17. ###     Email: beebe@math.utah.edu, beebe@acm.org, beebe@computer.org,
  18. ###           beebe@ieee.org (Internet)
  19. ###     WWW URL: http://www.math.utah.edu/~beebe
  20. ###     Telephone: +1 801 581 5254
  21. ###     FAX: +1 801 585 1640, +1 801 581 4148
  22. ###
  23. ########################################################################
  24. ########################################################################
  25. ########################################################################
  26. ###                                                                  ###
  27. ###        awkdiff.awk: compare two Adobe Font Metric files          ###
  28. ###                                                                  ###
  29. ###              Copyright (C) 2000 Nelson H. F. Beebe               ###
  30. ###                                                                  ###
  31. ### This program is covered by the GNU General Public License (GPL), ###
  32. ### version 2 or later, available as the file COPYING in the program ###
  33. ### source distribution, and on the Internet at                      ###
  34. ###                                                                  ###
  35. ###               ftp://ftp.gnu.org/gnu/GPL                          ###
  36. ###                                                                  ###
  37. ###               http://www.gnu.org/copyleft/gpl.html               ###
  38. ###                                                                  ###
  39. ### This program is free software; you can redistribute it and/or    ###
  40. ### modify it under the terms of the GNU General Public License as   ###
  41. ### published by the Free Software Foundation; either version 2 of   ###
  42. ### the License, or (at your option) any later version.              ###
  43. ###                                                                  ###
  44. ### This program is distributed in the hope that it will be useful,  ###
  45. ### but WITHOUT ANY WARRANTY; without even the implied warranty of   ###
  46. ### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the    ###
  47. ### GNU General Public License for more details.                     ###
  48. ###                                                                  ###
  49. ### You should have received a copy of the GNU General Public        ###
  50. ### License along with this program; if not, write to the Free       ###
  51. ### Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,   ###
  52. ### MA 02111-1307 USA                                                ###
  53. ###                                                                  ###
  54. ### This program may also be distributed as part of AFPL             ###
  55. ### Ghostscript, under the terms of the Aladdin Free Public License  ###
  56. ### (the "License").                                                 ###
  57. ###                                                                  ###
  58. ### Every copy of AFPL Ghostscript must include a copy of the        ###
  59. ### License, normally in a plain ASCII text file named PUBLIC.  The  ###
  60. ### License grants you the right to copy, modify and redistribute    ###
  61. ### AFPL Ghostscript, but only under certain conditions              ###
  62. ### described in the License.  Among other things, the License       ###
  63. ### requires that the copyright notice and this notice be preserved  ###
  64. ### on all copies.                                                   ###
  65. ###                                                                  ###
  66. ########################################################################
  67. ########################################################################
  68. ########################################################################
  69. #
  70. # [29-Apr-2000]
  71. #=======================================================================
  72.  
  73. /^FontName/    { FontName[++NFontName] = $2 }
  74.  
  75.  
  76. /^C /        {
  77.             if (NFontName == 1)
  78.             CharName1[$8]++
  79.             if (NFontName == 2)
  80.             CharName2[$8]++
  81.         }
  82.  
  83.  
  84. /^C /        {
  85.             name = $8
  86.             if (name in WX)
  87.             {
  88.             if (WX[name] != $5)
  89.                 WXDIFF[name] = WX[name] - $5
  90.             }
  91.             else
  92.             WX[name] = $5
  93.         }
  94.  
  95.  
  96. /^C /        {
  97.             name = $8
  98.             bx = $13 - $11
  99.             if (name in BX)
  100.             {
  101.             if (BX[name] != bx)
  102.                 BXDIFF[name] = BX[name] - bx
  103.             }
  104.             else
  105.             BX[name] = bx
  106.         }
  107.  
  108.  
  109. /^C /        {
  110.             name = $8
  111.             by = $14 - $12
  112.             if (name in BY)
  113.             {
  114.             if (BY[name] != by)
  115.                 BYDIFF[name] = BY[name] - by
  116.             }
  117.             else
  118.             BY[name] = by
  119.         }
  120.  
  121.  
  122. END        {
  123.             Sortpipe = "sort -f | pr -c3 -w80 -l1 -t"
  124.             print "Comparison of AFM metrics in files:", ARGV[1], ARGV[2]
  125.             print "Font names:", FontName[1], FontName[2]
  126.             show_name_diffs(FontName[2],CharName2, FontName[1],CharName1)
  127.             show_name_diffs(FontName[1],CharName1, FontName[2],CharName2)
  128.             show_num_diffs("WX width differences", WXDIFF)
  129.             show_num_diffs("Bounding box width differences", BXDIFF)
  130.             show_num_diffs("Bounding box height differences",BYDIFF)
  131.         }
  132.  
  133. function show_name_diffs(font1,array1,font2,array2, name)
  134. {
  135.     print "\nChars from", font2, "missing from", font1 ":"
  136.     for (name in array2)
  137.     {
  138.     if (!(name in array1))
  139.         printf("%s\n", name) | Sortpipe
  140.     }
  141.     close(Sortpipe)
  142. }
  143.  
  144. function show_num_diffs(title,array, name)
  145. {
  146.     printf("\n%s:\n", title)
  147.     for (name in array)
  148.     printf("%-15s\t%4d\n", name, array[name]) | Sortpipe
  149.     close(Sortpipe)
  150. }
  151.