一尘不染

将SVG路径变成线段

node.js

我正在尝试将SVG路径转换为Node中的点列表。我正在使用elementtree来解析SVG文件。

d是路径的定义,getPos只是将“ x,y”变成带有x和ay的对象,doLine只是将坐标添加到列表中。

  d = path.get('d')

  words = d.split(' ')

  oldPos = undefined
  startPos = undefined

  for i in [0..words.length]
    word = words[i]

    if word == 'm' or word == 'M'
      oldPos = getPos(words[i + 1])
      startPos = getPos(words[i + 1])
      i += 1

    else if word == 'l' or word == 'L'
      console.log('done nothing...')

    else if word == 'z' or word == 'Z'
      doLine(oldPos, startPos)

    else if word
      pos = getPos(word)
      doLine(oldPos, pos)
      oldPos = pos

目前,这似乎无法正常工作。

我知道我的路径永远不会有曲线,因此我不必为此担心。

我不确定SVG标准,所以如果有人可以帮助我,将非常感谢。


阅读 257

收藏
2020-07-07

共1个答案

一尘不染

SVG包含自己的路径段解析器,所以为什么要重新发明轮子。尝试在此基础上构建:http
//jsfiddle.net/longsonr/skWH5/

在壁虎中,路径是通过从头开始,读取一个非空白字符,然后使用一张表,该表列出了预期的自变量数目,这些自变量随后知道要读取这么多的数目(最多可以用一个逗号分隔它们)来解析。这将持续到字符串结尾。

2020-07-07