#!/usr/bin/fontforge -lang=ff

if ( Strtol($version)<20060330 )
  Error( "Please upgrade to a more recent version of fontforge" )
endif

flags=0x789
outfile=""

while ( $argc > 1 && Strsub($1,0,1)=="-" )
  temp = $1
  if ( Strsub(temp,1,2)=='-' )
    temp = Strsub(temp,1)
  endif

  if ( temp=="-ignorehints" )
    flags = flags & ~0x8
  elseif ( temp=="-ignorenames" )
    flags = flags & ~0x100
  elseif ( temp=="-ignoregpos" )
    flags = flags & ~0x200
  elseif ( temp=="-ignoregsub" )
    flags = flags & ~0x400
  elseif ( temp=="-ignorebitmaps" )
    flags = flags & ~0x80
  elseif ( temp=="-exact" )
    flags = flags | 0x2
  elseif ( temp=="-warn" )
    flags = flags | 0x44
  elseif ( temp=="-merge" )
    flags = flags | 0x1800
    shift
    outfile = $1
  elseif ( temp=="-help" )
    Print( "sfddiff: [--version] [--help] [--usage] [--ignorehints] [--ignorenames] [--ignoregpos] [--ignoregsup] [--ignorebitmaps] [--warn] [--exact] fontfile1 fontfile2" )
    Print( " Compares two fontfiles" )
    Print( " --ignorehints: Do not compare postscript hints or truetype instructions" )
    Print( " --ignorenames: Do not compare font names" )
    Print( " --ignoregpos:  Do not compare kerning, etc." )
    Print( " --ignoregsub:  Do not compare ligatures, etc." )
    Print( " --ignorebitmaps: Do not compare bitmap strikes" )
    Print( " --exact:       Normally sfddiff will match contours which are not exact" )
    Print( "                but where the differences are slight (so you could compare" )
    Print( "                truetype and postscript and get reasonable answers). Also" )
    Print( "                normally sfddiff will unlink references before it compares" )
    Print( "                (so you can compare a postscript font (with no references)" )
    Print( "                to the original source (which does have references)). Setting")
    Print( "                this flag means glyphs must match exactly.")
    Print( " --warn:        Provides a warning when an exact match is not found" )
    Print( " --merge outfile: Put any outline differences in the backgrounds of" )
    Print( "                appropriate glyphs" )
return(0)
  elseif ( temp=="-version" )
    Print( "Version 1.0" )
return(0)
  else
break
  endif
  shift
endloop

if ( $argc!=3 || $1=="--usage" || $1=="-usage" )
  Print( "sfddiff: [--version] [--help] [--usage] [--ignorehints] [--ignorenames] [--ignoregpos] [--ignoregsup] [--ignorebitmaps] [--warn] [--exact] [--merge outfile] fontfile1 fontfile2" )
return(0)
endif

Open($2,1)
Open($1,1)
CompareFonts($2,"-",flags)
if ( outfile!="" )
  Save(outfile)
endif
