使用Inkscape创建矩形内的文本

7

我使用Inkscape将一些文本放在矩形中,使树看起来像:

<svg:rect><svg:text><svg:tspan>text.... 

问题是,我看不到文本。我已经尝试调整矩形的不透明度,但无济于事。应该有一种从UI界面上完成这个操作的方法吧?

编辑

如请求的示例

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:cc="http://creativecommons.org/ns#"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
   width="184.25197"
   height="262.20471"
   id="svg2"
   sodipodi:version="0.32"
   inkscape:version="0.46"
   version="1.0"
   sodipodi:docname="ex1.svg"
   inkscape:output_extension="org.inkscape.output.svg.inkscape">
  <defs
     id="defs4">
    <inkscape:perspective
       sodipodi:type="inkscape:persp3d"
       inkscape:vp_x="0 : 526.18109 : 1"
       inkscape:vp_y="0 : 1000 : 0"
       inkscape:vp_z="744.09448 : 526.18109 : 1"
       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
       id="perspective10" />
  </defs>
  <sodipodi:namedview
     id="base"
     pagecolor="#ffffff"
     bordercolor="#666666"
     borderopacity="1.0"
     gridtolerance="10000"
     guidetolerance="10"
     objecttolerance="10"
     inkscape:pageopacity="0.0"
     inkscape:pageshadow="2"
     inkscape:zoom="0.64"
     inkscape:cx="195.9221"
     inkscape:cy="335.3072"
     inkscape:document-units="px"
     inkscape:current-layer="layer1"
     showgrid="false"
     inkscape:window-width="640"
     inkscape:window-height="675"
     inkscape:window-x="44"
     inkscape:window-y="44" />
  <metadata
     id="metadata7">
    <rdf:RDF>
      <cc:Work
         rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
      </cc:Work>
    </rdf:RDF>
  </metadata>
  <g
     inkscape:label="Layer 1"
     inkscape:groupmode="layer"
     id="layer1">
    <rect
       style="opacity:0.25480766;fill:#ff0000;fill-opacity:1;stroke:#000000;stroke-width:12.94795799;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
       id="rect2383"
       width="150.87796"
       height="84.226181"
       x="18.221733"
       y="39.557121">
      <text
         xml:space="preserve"
         style="font-size:56.0331955px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
         x="44.815186"
         y="114.0088"
         id="text2385"
         transform="scale(1.0054479,0.9945816)"><tspan
           sodipodi:role="line"
           id="tspan2387"
           x="44.815186"
           y="114.0088">text</tspan></text>
    </rect>
  </g>
</svg>

我期望在Inkscape中能够看到这个。

解决方法是把文本放在盒子上面的一个图层上(目的是让盒子遮挡下面的图层),不要尝试使用嵌套标签。可惜这个方法不起作用。


你是在尝试在Inkscape或其他查看器中查看它吗?你能发布完整的SVG文档吗? - Ken
1个回答

15

一个rect元素不能包含文本元素,这在SVG规范中是无效的,合规用户代理程序将简单地忽略它。

只需将文本放置在rect元素后面即可使其呈现在上方。


1
咦,我甚至没有想到要验证xml。在没有NetBeans或其他验证器的情况下,http://validator.w3.org/check非常方便。我发现SVG DTD无疑是模块化的,但阅读起来相当困难。 - mr calendar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接