我正在尝试将作为命令行工具(abcm2ps)输出的SVG文件转换为Android矢量可绘制图形,但是遇到了问题。
我的处理过程如下:
- 使用上述工具创建原始SVG文件
- 通过Inkscape运行SVG文件以修复页面大小
- 再次通过Inkscape运行结果以保存为纯SVG格式(在某个地方读到说这可能会修复问题,但并没有帮助)
- 尝试导入SVG文件到Android Studio,但无法成功
我得到的错误是一些无法找到引用ID的错误。我查看了XML文件,并注意到此错误仅对包含引用的引用产生。例如:
<defs
id="defs6633">
<path
id="usharp"
class="fill"
d="m 136,-702 v 890 h 32 v -890 m 128,840 h 32 V -750 H 296 M 64,-464 v 116 l 338,-96 V -560 M 64,-118 V -2 l 338,-98 v -114"
inkscape:connector-curvature="0"
style="fill:currentColor" />
<use
id="sh0"
transform="matrix(0.018,0,0,0.018,-4,5)"
xlink:href="#usharp"
x="0"
y="0"
width="100%"
height="100%" />
</defs>
<use
x="44.5"
y="20"
xlink:href="#sh0"
id="use6635"
width="100%"
height="100%" />
如您所见,对象
use6635
引用了sh0
,而后者又引用了usharp
。然而,其他一些引用对象不引用其他对象的地方是有效的。
这是转换器已知的限制吗?有没有一种方式(最好是命令行工具)可以扁平化引用层次结构,以便只引用不引用其他对象的对象?
编辑:好吧,将其转换为EPS,然后再转换为SVG会创建可处理无上述警告的SVG文件 - 我现在得到的警告是说不支持缩放描边宽度...