code: function computePathBoundingBox(path) {
  
              var points = [];
              var iterator = function (c, p0, p1, p2) {
                  if (c === 'L') {
                      points.push(p0);
                      points.push(p1);
                  }
                  else if (c === 'Q') {
                      var bound = computeQuadraticBezierBoundingBox(p0, p1, p2);
  
                      points.push(bound);
                      points.push({
                          x: bound.x + bound.width,
                          y: bound.y + bound.height
                      });
                  }
              };
  
              if (arguments.length === 1) {
                  pathIterator(path, function (c, p0, p1, p2) {
                      if (c === 'L') {
                          points.push(p0);
                          points.push(p1);
                      }
                      else if (c === 'Q') {
                          var bound = computeQuadraticBezierBoundingBox(p0, p1, p2);
  
                          points.push(bound);
                          points.push({
                              x: bound.x + bound.width,
                              y: bound.y + bound.height
                          });
                      }
                  });
              }
              else {
                  for (var i = 0, l = arguments.length; i < l; i++) {
                      pathIterator(arguments[i], iterator);
                  }
              }
  
              return computeBoundingBox(points);
          }
docs: 计算曲线包围盒
  
  @private
  @param {Array} path 坐标点集, 支持多个path
  @return {Object} {x, y, width, height}