SVG 1.2 Tiny hat Textumbruch hinzugefügt, aber die meisten Implementierungen von SVG, die Sie im Browser finden (mit Ausnahme von Opera), haben diese Funktion nicht implementiert. In der Regel liegt es an Ihnen, dem Entwickler, den Text manuell zu positionieren.
Die SVG 1.1-Spezifikation bietet einen guten Überblick über diese Einschränkung und die möglichen Lösungen, um sie zu überwinden:
Jedes 'Text'-Element bewirkt, dass eine einzelne Textzeichenfolge gerendert wird. SVG führt keinen automatischen Zeilenumbruch oder Zeilenumbruch durch. Verwenden Sie eine der folgenden Methoden, um die Wirkung mehrerer Textzeilen zu erzielen:
- Der Autor oder das Authoring-Paket muss die Zeilenumbrüche vorberechnen und mehrere Textelemente verwenden (eines für jede Textzeile).
- Der Autor oder das Authoring-Paket muss die Zeilenumbrüche vorberechnen und ein einzelnes 'Text'-Element mit einem oder mehreren untergeordneten' tspan'-Elementen mit geeigneten Werten für die Attribute 'x', 'y', 'dx' und 'dy' verwenden. um neue Startpositionen für die Zeichen festzulegen, die neue Zeilen beginnen. (Dieser Ansatz ermöglicht die Auswahl von Benutzertext über mehrere Textzeilen hinweg - siehe Textauswahl und Operationen in der Zwischenablage.)
- Drücken Sie den Text aus, der in einem anderen XML-Namespace wie XHTML [XHTML] gerendert werden soll, der inline in ein 'alienObject'-Element eingebettet ist. (Hinweis: Die genaue Semantik dieses Ansatzes ist derzeit noch nicht vollständig definiert.)
http://www.w3.org/TR/SVG11/text.html#Introduction
Als Grundelement kann der Textumbruch mithilfe des dy
Attributs und der tspan
Elemente simuliert werden. Wie in der Spezifikation erwähnt, können einige Tools dies automatisieren. Wählen Sie in Inkscape beispielsweise die gewünschte Form und den gewünschten Text aus und verwenden Sie Text -> In Frame fließen. Auf diese Weise können Sie Ihren Text mit Umbruch schreiben, der basierend auf den Grenzen der Form umbrochen wird. Befolgen Sie außerdem diese Anweisungen, um Inkscape anzuweisen, die Kompatibilität mit SVG 1.1 aufrechtzuerhalten:
http://wiki.inkscape.org/wiki/index.php/FAQ#What_about_flowed_text.3F
Darüber hinaus gibt es einige JavaScript-Bibliotheken, mit denen das Umbrechen von Text dynamisch automatisiert werden kann:
http://www.carto.net/papers/svg/textFlow/
Es ist interessant, die Lösung von CSVG zum Umschließen einer Form mit einem Textelement zu beachten (siehe z. B. das Beispiel "Schaltfläche"), obwohl zu erwähnen ist, dass die Implementierung in einem Browser nicht verwendet werden kann:
http://www.csse.monash.edu .au / ~ clm / csvg / about.html
Ich erwähne dies, weil ich eine CSVG-inspirierte Bibliothek entwickelt habe, mit der Sie ähnliche Dinge tun können und die in Webbrowsern funktioniert, obwohl ich sie noch nicht veröffentlicht habe.