1

Inkscape で作成した SVG 要素があります。次に、その SVG を取得し、XML データの変換に使用される XSL-FO スタイルシートの一部として配置し、IBEX レンダラーを通過して PDF を作成します (通常は印刷されます)。例として、svg/stylesheet に次のような要素があります (Inkscape エクスポートによる余分なノイズ)。

<text x="114" x="278.36218" id="id1" xml:space="preserve" style="big-long-style-string-from-inkscape">
    <tspan x="114" y="278.36218" id="id2" style="style-string">
        <xsl:value-of select="Alias1"/>
    </tspan>
</text>

私の問題は、このテキスト領域がどのくらいの大きさになるかわからないという事実にあります。この特定のものについては、SVG のテキストの右側に画像があります。ただし、この文字列が W の最大許容数である場合、長すぎて画像を超えてしまいます。私が(完璧な世界で)望むのは、テキストブロックの幅を何ピクセルにするかを指定し、その領域に収まるまでテキストを自動的に小さくする方法です。それができない場合は、テキストを切り捨てることもできます。最後の手段として、固定幅フォントを使用し、XML 生成時に自分で文字列の切り捨てを行います。

私はSVGのドキュメントを調べてflowRegions、パスと同様に少し調べましたが、どちらも私が望むものではないようです(おそらくそうです)。それが役立つ場合は、Inkscape が生成するスタイル文字列を次に示します。

"font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"

助けてくれてありがとう。

4

1 に答える 1

2

任意の行の長さ (文字単位) のテキストがあり、一定量のスペースに収まるように拡大縮小したいですか? テキストを固定サイズに再スケーリングする唯一の方法は、テキストをsvg要素内に配置してから、SVG をそのサイズにスケーリングすることです。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
  <title>Resizing Text</title>
  <defs>
    <svg id="text-1" viewBox="0 0 350 20">
      <text id="text-2" x="0" y="0" fill="#000" alignment-baseline="before-edge">It's the end of the world as we know it, and I feel fine!</text>
    </svg>
  </defs>
  <rect x="500" y="100" width="200" height="40" fill="#eee" />
  <use  x="510" y="110" width="180" height="20" xlink:href="#text-1" />
</svg>

ただし、上記のようにviewBox、カプセル化svg要素の をテキストの幅に設定する必要がありますが、これはおそらく不明です。

スクリプトを使用できるユーザー エージェント (Web ブラウザーなど) 内でこの SVG を参照している場合、text ortspan要素の幅をキャプチャし、それに応じて を設定するスクリプトを簡単に作成できますviewBox

于 2011-03-28T19:02:33.757 に答える