pythonのsvg2swf.pyで、日本語とか扱えたりちょとパッチ

L 30 30

とかが、たまに

L 30,30

なかんじでかいてあったりするようなので、適当に置き換えて、
日本語も一応でるようにした。
ただしShift JISなのかな

--- svg2swf.py.org	2005-07-24 17:28:35.000000000 +0900
+++ svg2swf.py	2006-09-29 03:39:39.000000000 +0900
@@ -1,4 +1,5 @@
 #!/usr/bin/python
+# -*- coding: utf-8 -*-
 # $Id: svg2swf,v 1.12 2001/07/30 04:07:32 robla Exp $
 #
 #    svg2swf - Convert an SVG file into a SWF file
@@ -120,7 +121,8 @@
 
         # set font size
         if(self.stylemap.has_key('font-size')):
-            lineheight=int(self.stylemap['font-size'])-1
+            fs = re.sub("[a-zA-Z]","",self.stylemap['font-size'])
+            lineheight=int(fs)-1
         else:
             lineheight=10
            
@@ -551,8 +553,14 @@
         printout ("text", self.contenthandler.data)
         txt=self.contenthandler
         
-        txt.swftext.addString(self.contenthandler.data)
-
+        #txt.swftext.addString(self.contenthandler.data)
+        #txt.swftext.addString(str(self.contenthandler.data))
+        #txt.swftext.addString(str(self.contenthandler.data.encode('utf-8')))
+        s1 = self.contenthandler.data
+        s2 = s1.encode('Shift_JIS')
+        s2 = str(s2)
+        txt.swftext.addString(s2)
+        
         i = self.add(txt.swftext)
         i.moveTo(txt.x,txt.y-10)
         if(self.href==None):
@@ -635,8 +643,14 @@
         printout("rect", "Starting handle_rect")
 
         # parse the easy attributes
-        x = float(attrs['x'])
-        y = float(attrs['y'])
+        if attrs.has_key('x'):
+            x = float(attrs['x'])
+        else:
+            x = 0
+        if attrs.has_key('y'):        
+            y = float(attrs['y'])
+        else:
+            y = 0
         height = float(attrs['height'])
         width = float(attrs['width'])
 
@@ -747,24 +761,24 @@
         if(attrs.has_key('d')):
             path = attrs['d']
             printout("path", "Starting to handle path: %s" % (path))
-            Mre = re.compile(r'\s*M\s*(-?\d+(\.\d+)?)\s*(-?\d+(\.\d+)?)\s*')
-            mre = re.compile(r'\s*m\s*(-?\d+(\.\d+)?)\s*(-?\d+(\.\d+)?)\s*')
-            Lre = re.compile(r'\s*L\s*(-?\d+(\.\d+)?)\s*(-?\d+(\.\d+)?)\s*')
-            lre = re.compile(r'\s*l\s*(-?\d+(\.\d+)?)\s*(-?\d+(\.\d+)?)\s*')
+            Mre = re.compile(r'\s*M\s*(-?\d+(\.\d+)?)[\s,]*(-?\d+(\.\d+)?)\s*')
+            mre = re.compile(r'\s*m\s*(-?\d+(\.\d+)?)[\s,]*(-?\d+(\.\d+)?)\s*')
+            Lre = re.compile(r'\s*L\s*(-?\d+(\.\d+)?)[\s,]*(-?\d+(\.\d+)?)\s*')
+            lre = re.compile(r'\s*l\s*(-?\d+(\.\d+)?)[\s,]*(-?\d+(\.\d+)?)\s*')
             Vre = re.compile(r'\s*V\s*(-?\d+(\.\d+)?)\s*')
             vre = re.compile(r'\s*v\s*(-?\d+(\.\d+)?)\s*')
             Hre = re.compile(r'\s*H\s*(-?\d+(\.\d+)?)\s*')
             hre = re.compile(r'\s*h\s*(-?\d+(\.\d+)?)\s*')
-            Tre = re.compile(r'\s*T\s*(-?\d+(\.\d+)?)\s*(-?\d+(\.\d+)?)\s*')
-            tre = re.compile(r'\s*t\s*(-?\d+(\.\d+)?)\s*(-?\d+(\.\d+)?)\s*')
-            Qre = re.compile(r'\s*Q\s*(-?\d+(\.\d+)?)\s*(-?\d+(\.\d+)?)\s*(-?\d+(\.\d+)?)\s*(-?\d+(\.\d+)?)\s*')
-            qre = re.compile(r'\s*q\s*(-?\d+(\.\d+)?)\s*(-?\d+(\.\d+)?)\s*(-?\d+(\.\d+)?)\s*(-?\d+(\.\d+)?)\s*')
-            Cre = re.compile(r'\s*C\s*(-?\d+(\.\d+)?)\s*(-?\d+(\.\d+)?)\s*(-?\d+(\.\d+)?)\s*(-?\d+(\.\d+)?)\s*(-?\d+(\.\d+)?)\s*(-?\d+(\.\d+)?)\s*')
-            cre = re.compile(r'\s*c\s*(-?\d+(\.\d+)?)\s*(-?\d+(\.\d+)?)\s*(-?\d+(\.\d+)?)\s*(-?\d+(\.\d+)?)\s*(-?\d+(\.\d+)?)\s*(-?\d+(\.\d+)?)\s*')
-            Sre = re.compile(r'\s*S\s*(-?\d+(\.\d+)?)\s*(-?\d+(\.\d+)?)\s*(-?\d+(\.\d+)?)\s*(-?\d+(\.\d+)?)\s*')
-            sre = re.compile(r'\s*s\s*(-?\d+(\.\d+)?)\s*(-?\d+(\.\d+)?)\s*(-?\d+(\.\d+)?)\s*(-?\d+(\.\d+)?)\s*')
-            Are = re.compile(r'\s*A\s*(-?\d+(\.\d+)?)\s*(-?\d+(\.\d+)?)\s*(-?\d+(\.\d+)?)\s*(-?\d+(\.\d+)?)\s*(-?\d+(\.\d+)?)\s*(-?\d+(\.\d+)?)\s*(-?\d+(\.\d+)?)\s*')
-            are = re.compile(r'\s*a\s*(-?\d+(\.\d+)?)\s*(-?\d+(\.\d+)?)\s*(-?\d+(\.\d+)?)\s*(-?\d+(\.\d+)?)\s*(-?\d+(\.\d+)?)\s*(-?\d+(\.\d+)?)\s*(-?\d+(\.\d+)?)\s*')
+            Tre = re.compile(r'\s*T\s*(-?\d+(\.\d+)?)[\s,]*(-?\d+(\.\d+)?)\s*')
+            tre = re.compile(r'\s*t\s*(-?\d+(\.\d+)?)[\s,]*(-?\d+(\.\d+)?)\s*')
+            Qre = re.compile(r'\s*Q\s*(-?\d+(\.\d+)?)[\s,]*(-?\d+(\.\d+)?)[\s,]*(-?\d+(\.\d+)?)[\s,]*(-?\d+(\.\d+)?)\s*')
+            qre = re.compile(r'\s*q\s*(-?\d+(\.\d+)?)[\s,]*(-?\d+(\.\d+)?)[\s,]*(-?\d+(\.\d+)?)[\s,]*(-?\d+(\.\d+)?)\s*')
+            Cre = re.compile(r'\s*C\s*(-?\d+(\.\d+)?)[\s,]*(-?\d+(\.\d+)?)[\s,]*(-?\d+(\.\d+)?)[\s,]*(-?\d+(\.\d+)?)[\s,]*(-?\d+(\.\d+)?)[\s,]*(-?\d+(\.\d+)?)\s*')
+            cre = re.compile(r'\s*c\s*(-?\d+(\.\d+)?)[\s,]*(-?\d+(\.\d+)?)[\s,]*(-?\d+(\.\d+)?)[\s,]*(-?\d+(\.\d+)?)[\s,]*(-?\d+(\.\d+)?)[\s,]*(-?\d+(\.\d+)?)\s*')
+            Sre = re.compile(r'\s*S\s*(-?\d+(\.\d+)?)[\s,]*(-?\d+(\.\d+)?)[\s,]*(-?\d+(\.\d+)?)[\s,]*(-?\d+(\.\d+)?)\s*')
+            sre = re.compile(r'\s*s\s*(-?\d+(\.\d+)?)[\s,]*(-?\d+(\.\d+)?)[\s,]*(-?\d+(\.\d+)?)[\s,]*(-?\d+(\.\d+)?)\s*')
+            Are = re.compile(r'\s*A\s*(-?\d+(\.\d+)?)[\s,]*(-?\d+(\.\d+)?)[\s,]*(-?\d+(\.\d+)?)[\s,]*(-?\d+(\.\d+)?)[\s,]*(-?\d+(\.\d+)?)[\s,]*(-?\d+(\.\d+)?)[\s,]*(-?\d+(\.\d+)?)\s*')
+            are = re.compile(r'\s*a\s*(-?\d+(\.\d+)?)[\s,]*(-?\d+(\.\d+)?)[\s,]*(-?\d+(\.\d+)?)[\s,]*(-?\d+(\.\d+)?)[\s,]*(-?\d+(\.\d+)?)[\s,]*(-?\d+(\.\d+)?)[\s,]*(-?\d+(\.\d+)?)\s*')
             zre = re.compile(r'\s*[Zz]\s*')
             
             while 1:

下のほうの正規表現

)\s*(

)[\s,]*(

で置き換えただけです。
場所とかみてないので、やりすぎてるかも。。。

addStringしてる、あたりをみると -10 とかかいてあるので、2行にわたってるとまずいかもなぁ。。。

追記:
すべての環境でうまくいくようではないぽい。