 -//  advancePen: if true, advance the pen to the next line
 -//
  static void
- text_buffer_finish_line( text_buffer_t * self, vec2 * pen, bool advancePen )
+-text_buffer_finish_line( text_buffer_t * self, vec2 * pen, bool advancePen )
++text_buffer_finish_line( text_buffer_t * self, vec2 * pen, bool advancePen, float linegap )
  {
-@@ -166,7 +106,7 @@ text_buffer_finish_line( text_buffer_t *
+     float line_left = self->line_left;
+     float line_right = pen->x;
+     float line_width  = line_right - line_left;
+     float line_top = pen->y + self->line_ascender;
+-    float line_height = self->line_ascender - self->line_descender;
++    float line_height = self->line_ascender - self->line_descender + linegap;
+     float line_bottom = line_top - line_height;
+ 
+     line_info_t line_info;
+@@ -166,7 +106,8 @@ text_buffer_finish_line( text_buffer_t *
      if ( advancePen )
      {
          pen->x = self->origin.x;
 -        pen->y += (int)(self->line_descender);
 +        pen->y += (self->line_descender);
++        pen->y -= linegap;
      }
  
      self->line_descender = 0;
-@@ -177,9 +117,10 @@ text_buffer_finish_line( text_buffer_t *
+@@ -177,9 +118,10 @@ text_buffer_finish_line( text_buffer_t *
  
  // ----------------------------------------------------------------------------
  void

 {
     size_t i;
     const char * prev_character = NULL;
@@ -220,7 +161,7 @@ text_buffer_add_text( text_buffer_t * se
 
     for( i = 0; length; i += utf8_surrogate_len( text + i ) )
     {

-    if ( self->line_start != total_items )
-    {
-        text_buffer_finish_line( self, pen, false );
-    }
-
-    return self->bounds;
 }
