# File lib/prawn/text/box.rb, line 349
      def wrap_line(line, options)
        @document = options[:document]
        @size = options[:size]
        @kerning = options[:kerning]
        @width = options[:width]
        @accumulated_width = 0
        @output = ""

        scan_pattern = @document.font.unicode? ? /\S+|\s+/ : /\S+|\s+/n
        space_scan_pattern = @document.font.unicode? ? /\s/ : /\s/n

        line.scan(scan_pattern).each do |segment|
          # yes, this block could be split out into another method, but it is
          # called on every word printed, so I'm keeping it here for speed

          segment_width = @document.width_of(segment,
                                             :size => @size,
                                             :kerning => @kerning)

          if @accumulated_width + segment_width <= @width
            @accumulated_width += segment_width
            @output << segment
          else
            # if the line contains white space, don't split the
            # final word that doesn't fit, just return what fits nicely
            break if @output =~ space_scan_pattern
            wrap_by_char(segment)
            break
          end
        end
        @output
      end