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行にわたってるとまずいかもなぁ。。。
追記:
すべての環境でうまくいくようではないぽい。