DVI DOM要素をカプセル化するforeignObject SVG要素を使用して、SVGでテキストフローを実現しようとしています。私の問題は、どの CSS パラメータが設定されているかということなので、カスタムの fon-maily スタイルを使用できます。
次の手順を使用します。
0. For defined 'maximal-width' value :
1. Make a foreignObject at least max-width wide
2. Put a DIV element inside with some text and max-width : 'maximal-width' style.
3. Get it's size (width x height) and update the size of the foreignObject element in the end.
4. Make some SVG rectangle in the background with the same size as the text/foreignObject element.
期待される結果は、同じサイズのforeignObject要素にカプセル化されたラップされたテキストであり、背景には同じサイズのSVG長方形があります。
しかし
display : inline/inline ブロックを異なる font-family 設定と一緒に使用すると問題が発生します。
http://jsfiddle.net/zm7Xb/3/でいくつかの小さな例を作成し、Chrome を使用して適切な結果を得ました。 display : inline-block CSS とデフォルトのフォント。Helvetica を使用すると、DIV 要素が内部のテキストよりも幅が広くなります。google-font を使用すると、さらに悪い結果になります。
display の使用: inline は幅を修正しますが、誤った垂直サイズ (高さ) になります。デフォルトのフォントを使用している場合でも。
同じ結果でFirefoxでテストされました。
どこに問題があるのかわかりません。おそらく、この1つのsvg追加テキスト要素に関連しています-幅が間違っていますか? そしてもっと重要なこと:それを修正するにはどうすればよいですか?