diff --git a/wand/mogrify.c b/wand/mogrify.c
index bb68205..4ed4921 100644
--- a/wand/mogrify.c
+++ b/wand/mogrify.c
@@ -161,7 +161,7 @@
 }
 
 static MagickBooleanType MonitorProgress(const char *text,
-  const MagickOffsetType quantum,const MagickSizeType span,
+  const MagickOffsetType offset,const MagickSizeType extent,
   void *wand_unused(client_data))
 {
   char
@@ -174,7 +174,7 @@
   register char
     *p;
 
-  if (span < 2)
+  if (extent < 2)
     return(MagickTrue);
   (void) CopyMagickMemory(tag,text,MaxTextExtent);
   p=strrchr(tag,'/');
@@ -185,12 +185,13 @@
   if (locale_message == message)
     locale_message=tag;
   if (p == (char *) NULL)
-    (void) fprintf(stderr,"%s: %02ld%%\r",locale_message,(long)
-      (100L*quantum/(span-1)));
+    (void) fprintf(stderr,"%s: %ld of %lu, %02ld%% complete\r",locale_message,
+      (long) offset,(unsigned long) extent,(long) (100L*offset/(extent-1)));
   else
-    (void) fprintf(stderr,"%s: %02ld%%  [%s]\r",locale_message,(long)
-      (100L*quantum/(span-1)),p+1);
-  if ((MagickSizeType) quantum == (span-1))
+    (void) fprintf(stderr,"%s[%s]: %ld of %lu, %02ld%% complete\r",
+      locale_message,p+1,(long) offset,(unsigned long) extent,(long)
+      (100L*offset/(extent-1)));
+  if (offset == (MagickOffsetType) (extent-1))
     (void) fprintf(stderr,"\n");
   (void) fflush(stderr);
   return(MagickTrue);
@@ -1748,6 +1749,15 @@
             *image=implode_image;
             break;
           }
+        if (LocaleCompare("interline-spacing",option+1) == 0)
+          {
+            if (*option == '+')
+              (void) ParseGeometry("0",&geometry_info);
+            else
+              (void) ParseGeometry(argv[i+1],&geometry_info);
+            draw_info->interline_spacing=geometry_info.rho;
+            break;
+          }
         if (LocaleCompare("interword-spacing",option+1) == 0)
           {
             if (*option == '+')
@@ -3625,6 +3635,8 @@
       "-green-primary point chromaticity green primary point",
       "-intent type         type of rendering intent when managing the image color",
       "-interlace type      type of image interlacing scheme",
+      "-interline-spacing value",
+      "                     set the space between two text lines",
       "-interpolate method  pixel color interpolation method",
       "-interword-spacing value",
       "                     set the space between two words",
@@ -4832,6 +4844,17 @@
                 argv[i]);
             break;
           }
+        if (LocaleCompare("interline-spacing",option+1) == 0)
+          {
+            if (*option == '+')
+              break;
+            i++;
+            if (i == (long) (argc-1))
+              ThrowMogrifyException(OptionError,"MissingArgument",option);
+            if (IsGeometry(argv[i]) == MagickFalse)
+              ThrowMogrifyInvalidArgumentException(option,argv[i]);
+            break;
+          }
         if (LocaleCompare("interpolate",option+1) == 0)
           {
             long
@@ -6508,6 +6531,16 @@
             (void) SetImageOption(image_info,option+1,argv[i+1]);
             break;
           }
+        if (LocaleCompare("interline-spacing",option+1) == 0)
+          {
+            if (*option == '+')
+              {
+                (void) SetImageOption(image_info,option+1,"undefined");
+                break;
+              }
+            (void) SetImageOption(image_info,option+1,argv[i+1]);
+            break;
+          }
         if (LocaleCompare("interpolate",option+1) == 0)
           {
             if (*option == '+')