2011-09-22 4 views
2

첫째, 요점에서 gist here도움말 이해 분석 SVG 파일 형식

Map.svg는 위키 미디어 공용 떨어져 그것을 가지고, 내가 함께 일하고 있어요 원래의지도입니다.

이제 원래의 svg에는 텍사스 동부 지역의 토지가 있습니다. 나는 그것을 Inkscape를 사용하여 제거했고, 그것은 이상한 새로운 방식으로 경로를 다시 썼다. diff는 요지에 포함됩니다.

이제 경로를 작성하는이 새로운 방법으로 내 파서 논리가 불타고 어떤 일이 일어 났는지 이해하려고합니다. 여기서 누군가 SVG 파일 형식에 대해 더 많이 알고 있기를 바랍니다. 나는 전체 SVG 표준 스펙을 읽지 않았지만 내가 읽은 부분에는 명령이나 상대 좌표가 누락되었다는 것에 대해서는 언급하지 않았 음을 인정할 것이다. 그런 다음 다시 잘못된 스펙을 보았을 수도 있습니다. 확실하지 않습니다.

내가 그것을 이해하는 방법은 SVG 경로 데이터는 매우 정직하고 있었다

, 이런 일이 :

(M,L,C)[point{n}] .... [Z]는 광고 nauseum

지금 내가 이해하려고 노력 중이 야 부분이 새로운 잉크 스케이프가 가지고있다 반복 L이나 L과 같은 명령어없이 상대 좌표처럼 보이는 것을 썼다. 내 뱃속에서 무슨 일이 일어 났는지는 나에게 분명하다. 가치가있는 부분에 대해서는 C로 파싱을하고 있습니다.

+2

대문자 경로 명령은 소문자가 상대적 글로벌 있습니다. – robertc

답변

6

SVG를 파싱하는 경우 SVG 사양을 살펴 보시기 바랍니다.

주어진 (x, y) 좌표에서 새 하위 경로를 시작하십시오. M (대문자)는 절대 좌표가 뒤따라 있음을 나타냅니다. m (소문자)은 상대 좌표가 뒤따라 나타냅니다. moveto 다음에 여러 쌍의 좌표가 오면 후속 쌍은 암시 적 lineto 명령으로 처리됩니다.

은 보낸 사람 : '(M,L,C)[point{n}] .... [Z]

내가 돈 : 당신이 말한 http://www.w3.org/TR/2011/REC-SVG11-20110816/paths.html#PathDataMovetoCommands

,

내가 그것을 이해하는 방법, SVG 경로 데이터는 매우 똑 바른 앞으로 이런 일이었다 그 정보를 어디에서 얻었는지 안다. 해당 출처에서 귀하의 정보를 얻지 마십시오.

아무도 내가 전체 SVG 표준 스펙을 읽지 않은 인정할 것이다

는 ... 전체 사양을 읽습니다. 현재 구현중인 부분에만 집중하십시오. SVG Tiny로 시작하여 지금은 그 서브셋으로 작업 할 수도 있습니다.

경로 문법은 파서 작성시 시작해야합니다. 읽을 수 없으면 컴파일러에서 책을 구입하십시오.

경로 문법 : http://www.w3.org/TR/2011/REC-SVG11-20110816/paths.html#PathDataBNF

+0

감사합니다. 이제 올바른 소스 자료를보고 있습니다. 내 생각에 암시적인 라인 - 토스는 무슨 일이 일어나고 있는지에 대한 열쇠입니다. 감사! – slf

+0

나는 스펙을 전혀 보지 않았다는 것을 의미하지는 않았지만 암시 적 라인 - 토우에 관한 부분을 놓쳤다는 것을 알고 있기 때문에 무언가를 놓쳤음이 틀림 없다고 말하려고했다. – slf

+0

@slf : W3C 스펙 (및 기타 specs, 그 문제에 관해서는) 꽤 짐작하고있는 짐승이다. 네비게이션을 탐색하기 전에 익숙해 져야합니다. –