code: function svgnode2contours(xmlNodes) {
  
      var i;
      var length;
      var j;
      var jlength;
      var segment; // 当前指令
      var parsedSegments = []; // 解析后的指令
  
      if (xmlNodes.length) {
          for (i = 0, length = xmlNodes.length; i < length; i++) {
              var node = xmlNodes[i];
              var name = node.tagName;
              if (support[name]) {
                  var supportParams = support[name].params;
                  var params = [];
                  for (j = 0, jlength = supportParams.length; j < jlength; j++) {
                      params.push(node.getAttribute(supportParams[j]));
                  }
  
                  segment = {
                      name: name,
                      params: params,
                      transform: parseTransform(node.getAttribute('transform'))
                  };
                  parsedSegments.push(segment);
              }
          }
      }
  
      if (parsedSegments.length) {
          var result = [];
          for (i = 0, length = parsedSegments.length; i < length; i++) {
              segment = parsedSegments[i];
              var parser = support[segment.name];
              var contour = parser.parse.apply(null, segment.params);
              if (contour && contour.length) {
                  var contours = parser.contours ? contour : [contour];
  
                  // 如果有变换则应用变换规则
                  if (segment.transform) {
                      contours = contoursTransform(contours, segment.transform);
                  }
  
                  for (j = 0, jlength = contours.length; j < jlength; j++) {
                      result.push(contours[j]);
                  }
              }
          }
          return result;
      }
  
      return false;
  }
docs: svg节点转字形轮廓
  
  @param {Array} xmlNodes xml节点集合
  @return {Array|false} 轮廓数组