# File lib/dragonfly/image_magick/generator.rb, line 59
      def text(string, opts={})
        opts = HashWithCssStyleKeys[opts]
        args = []
        format = (opts[:format] || :png)
        background = opts[:background_color] || 'none'
        font_size = (opts[:font_size] || 12).to_i
        escaped_string = "\"#{string.gsub(/"/, '\"')}\""

        # Settings
        args.push("-gravity NorthWest")
        args.push("-antialias")
        args.push("-pointsize #{font_size}")
        args.push("-font \"#{opts[:font]}\"") if opts[:font]
        args.push("-family '#{opts[:font_family]}'") if opts[:font_family]
        args.push("-fill #{opts[:color]}") if opts[:color]
        args.push("-stroke #{opts[:stroke_color]}") if opts[:stroke_color]
        args.push("-style #{FONT_STYLES[opts[:font_style]]}") if opts[:font_style]
        args.push("-stretch #{FONT_STRETCHES[opts[:font_stretch]]}") if opts[:font_stretch]
        args.push("-weight #{FONT_WEIGHTS[opts[:font_weight]]}") if opts[:font_weight]
        args.push("-background #{background}")
        args.push("label:#{escaped_string}")

        # Padding
        pt, pr, pb, pl = parse_padding_string(opts[:padding]) if opts[:padding]
        padding_top    = (opts[:padding_top]    || pt || 0)
        padding_right  = (opts[:padding_right]  || pr || 0)
        padding_bottom = (opts[:padding_bottom] || pb || 0)
        padding_left   = (opts[:padding_left]   || pl || 0)

        tempfile = convert(nil, args.join(' '), format)

        if (padding_top || padding_right || padding_bottom || padding_left)
          attrs  = identify(tempfile)
          text_width  = attrs[:width].to_i
          text_height = attrs[:height].to_i
          width  = padding_left + text_width  + padding_right
          height = padding_top  + text_height + padding_bottom

          args = args.slice(0, args.length - 2)
          args.push("-size #{width}x#{height}")
          args.push("xc:#{background}")
          args.push("-annotate 0x0+#{padding_left}+#{padding_top} #{escaped_string}")
          run convert_command,  "#{args.join(' ')} #{quote tempfile.path}"
        end

        [
          tempfile,
          {:format => format, :name => "text.#{format}"}
        ]
      end