code: function (str, x, y, useHTML) {
  
              // declare variables
              var renderer = this,
                fakeSVG = useCanVG || (!hasSVG && renderer.forExport),
                wrapper,
                attr = {};
  
              if (useHTML && !renderer.forExport) {
                  return renderer.html(str, x, y);
              }
  
              attr.x = Math.round(x || 0); // X is always needed for line-wrap logic
              if (y) {
                  attr.y = Math.round(y);
              }
              if (str || str === 0) {
                  attr.text = str;
              }
  
              wrapper = renderer.createElement('text')
                .attr(attr);
  
              // Prevent wrapping from creating false offsetWidths in export in legacy IE (#1079, #1063)
              if (fakeSVG) {
                  wrapper.css({
                      position: ABSOLUTE
                  });
              }
  
              if (!useHTML) {
                  wrapper.xSetter = function (value, key, element) {
                      var tspans = element.getElementsByTagName('tspan'),
                        tspan,
                        parentVal = element.getAttribute(key),
                        i;
                      for (i = 0; i < tspans.length; i++) {
                          tspan = tspans[i];
                          // If the x values are equal, the tspan represents a linebreak
                          if (tspan.getAttribute(key) === parentVal) {
                              tspan.setAttribute(key, value);
                          }
                      }
                      element.setAttribute(key, value);
                  };
              }
  
              return wrapper;
          }
docs: Add text to the SVG object
  @param {String} str
  @param {Number} x Left position
  @param {Number} y Top position
  @param {Boolean} useHTML Use HTML to render the text