私が抱えている問題が現在のSVG標準を使用して解決できるかどうかはわかりませんが、誰かが答えを知っているなら、とにかくここで尋ねると思いました
私は絶えず変化するSVGパスを持っています(d3で作成されたノードの周りに船体を形成することによって定義された頂点、ノードが常に移動し、境界船体がノードに対応するように移動するように強制的に駆動されます)
頂点を予測することも、テキストがどうなるかもわからないため (状況が変化するノードのグループ化に依存するため)、テキストパス上のテキストをやみくもにパスに適用することしかできません。問題は、テキストがうまく表示されないことがあります。
問題 1: 上下逆さまのテキスト - パス上のどこにテキストが移動するかは気にしませんが、しばしば上下逆さまになってしまうのは面倒です
例(画像):
[ SVG テキストパス レンダリングに分岐した NB 問題 2は、回答で示唆されているように、鋭い角を持つテキストパスで単語をひどく分割します]
問題 2: テキストの分割 - コーナーが形成されると、テキストが分割される傾向があります。上。dy を使用してテキストを境界の外に押し出すことは役に立たないと思います (パスは実際にはノードにタイトであり、パディングを与えるために 40 ストローク幅を適用します: dy はテキストをそのストロークの外に押し出しました)
例(画像):
これを修正するために何ができるかについてのアイデアはありますか?
――クリス
参照用のsvgコード:
問題 1:
<g id="hull_elements">
<path class="boundary" id="Secure" d="M219.31353652066463,309.7274362305448L199.3259715998452,277.60331505353355L54.5215284230899,92.9756148805194L29.418010605669316,64.72387260525474Z" style="fill: #b0c4de; stroke: #b0c4de; stroke-width: 40px; stroke-linejoin: round;"></path>
<path class="boundary" id="DMZ" d="M234.7675515627913,79.25604751762172L122.76947855325542,190.1418483839412L271.90702281166267,76.40758102069142Z" style="fill: #b0c4de; stroke: #b0c4de; stroke-width: 40px; stroke-linejoin: round;"></path>
</g>
<g id="hull_text">
<text dy="30"><textPath startOffset="0" text-anchor="start" method="align" spacing="auto" xlink:href="#Secure">Secure</textPath></text>
<text dy="30"><textPath startOffset="0" text-anchor="start" method="align" spacing="auto" xlink:href="#DMZ">DMZ</textPath></text>
</g>
問題 2:
<g id="hull_elements"><path class="boundary" id="Secure" d="M30.716331539726912,88.02778447495649L66.8405337274694,100.01086904278971L251.78816229874747,53.214214251587265L277.8704519199028,25.642491075146587Z" style="fill: #b0c4de; stroke: #b0c4de; stroke-width: 40px; stroke-linejoin: round;"></path>
<path class="boundary" id="DMZ" d="M177.8575710153683,149.56053657599713L251.04637461899244,245.55658992744486L277.76418020025847,271.7261370009561L159.53295211932644,118.0340968521715Z" style="fill: #b0c4de; stroke: #b0c4de; stroke-width: 40px; stroke-linejoin: round;"></path>
</g>
<g id="hull_text">
<text dy="30"><textPath startOffset="0" text-anchor="start" method="align" spacing="auto" xlink:href="#Secure">Secure</textPath></text>
<text dy="30"><textPath startOffset="0" text-anchor="start" method="align" spacing="auto" xlink:href="#DMZ">DMZ</textPath></text>
</g>
これを示すjsfiddleで遊ぶ(ノードを移動して問題を確認する) http://jsfiddle.net/zuzzy/GC2C2/
[問題 2 のブランチの NB を追加するために編集 - zuzzy]