public static boolean transferFont( File inDir, File inFile, File outDir, FontTester tester ) {
        if( inDir == null ) {
            inDir = inFile.getParentFile();
        }

        String relPath = getRelativePath( inDir, inFile.getParentFile(), true );
        outDir = new File( outDir, relPath );

        FileGarbage kill = new FileGarbage();
        kill.addFile( outDir, false );

        try {
            for( File file : FontUnpacker.unpack( inFile, kill ) ) {
                FontFormat format = FontFormat.forFile( file );
                if( format == FontFormat.NONE ) {
                    continue;
                }

                File newFile = new File( outDir, file.getName() );
                if( newFile.exists() ) {
                    continue;
                }

                try {
                    System.out.println( file.getPath() );
                    Font font = Font.createFont( format.awtType(), file );

                    if( tester != null ) {
                        tester.testFont( font );
                    }

                    if( !outDir.exists() ) {
                        outDir.mkdirs();
                    }

                    NativeFiles.copy( file, newFile );
                    kill.remove( outDir );
                } catch( Exception ex ) {
                }
            }

        } catch( Exception exc ) {
            kill.empty();
        }

        return true;
    }