Introduction
Before reading further, read the following articles.
- Overview of Scalable Vector Graphics (SVG)
- Scalable Vector Graphics - Rectangle
- Scalable Vector Graphics - Circle
- Scalable Vector Graphics - Ellipse
- Scalable Vector Graphics - Line
- Scalable Vector Graphics - Polyline
- Scalable Vector Graphics - Polygon
- Scalable Vector Graphics - Path 1
- Scalable Vector Graphics - Path 2
- Scalable Vector Graphics - Path 3
Now let's proceed to learn about SVG text.
The tag <text> is used to draw various types of text. The attributes used here are as in the following.
SVG Text
- x & y are the x-axis & y-axis coordinates of glyphs.
- dx & dy are the shifts along x-axis & y-axis.
- rotate is applied to all glyphs for the transformation of text.
- textLength used for rendering length of text.
- lengthAdjust is used for the type of adjustment with the rendered length of text.
Glyphs are the visual representations of letters or symbols. For example, the letter “a” can be drawn using various glyphs since for the letter “a”, there are various types of visual representations available.
Let's see a few examples to understand SVG text.
Example 1
- <html>
- <body>
- <svg height="80" width="500">
- <text x="10" y="40" fill="green" font-size="30px">I like</text>
- <text x="100" y="40" fill="orange" font-size="40px">C# Corner</text>
- <text x="290" y="40" fill="blue" font-size="30px">Community :)</text>
- </svg>
- </body>
- </html>

Text Positioning
In the context of SVG text, the position of the text is determined by x & y attributes in the <text> tag. The x attribute determines the position of the left edge (starting point) of the text whereas they attribute determines the position of the bottom edge of the text instead of the top edge. Here, the position of the text is different from those used in the triangle, circle, rectangle and so on.
- <html>
- <body>
- <svg height="80" width="500">
- <text x="10" y="40" fill="tomato" font-size="30px">How are you ?</text>
- <line x1="0" y1="40" x2="200" y2="40" stroke="blue" stroke-dasharray="10 3"/>
- <text x="220" y="60" fill="cyan" font-size="30px">Fine, Thank you !</text>
- <line x1="200" y1="60" x2="450" y2="60" stroke="green"/>
- </svg>
- </body>
- </html>

Text anchoring
The Text anchor determines what part of the text is positioned at the x-axis. The default value is the left edge of the text, but we can modify it using the three values “start”, “middle” and “end” of the “text-anchor” CSS property.
- <html>
- <body>
- <svg height="100" width="500">
- <text x="110" y="30" fill="lime" font-size="30px" text-anchor="start">Initial</text>
- <text x="110" y="50" fill="red" font-size="30px" text-anchor="middle">Moderate</text>
- <text x="110" y="70" fill="purple" font-size="30px" text-anchor="end">Finished</text>
- <line x1="110" y1="0" x2="110" y2="90" stroke="grey" stroke-dasharray="10 3"/>
- <text x="300" y="30" fill="cyan" font-size="30px" text-anchor="end">Finish</text>
- <text x="300" y="50" fill="black" font-size="30px" text-anchor="middle">Moderate</text>
- <text x="300" y="70" fill="pink" font-size="30px" text-anchor="start">Initial</text>
- <line x1="300" y1="0" x2="300" y2="90" stroke="lightgrey""/>
- </svg>
- </body>
- </html>

Multiline text
The tag <text> can be arranged in any number of subgroups with <tspan> tags that can contain different formatting and position for multiline text.
- <html>
- <body>
- <svg height="200" width="500">
- <text x="10" y="23" fill="black" font-size="30px">Multiline Text:
- <tspan x="10" y="45" fill="tomato" font-size="20px">1st line of text.</tspan>
- <tspan x="10" y="70" fill="grey" font-size="20px">2nd line of text.</tspan>
- <tspan x="20" y="95" fill="lightblue" font-size="20px">3rd line of text.</tspan>
- <tspan x="40" y="120" fill="orange" font-size="20px">4th line of text.</tspan>
- <tspan x="80" y="145" fill="lightgreen" font-size="20px">5th line of text.</tspan>
- </text>
- </svg>
- </body>
- </html>

Example 5
- <html>
- <body>
- <svg height="250" width="500">
- <text x="10" y="20" fill="lime" font-size="20px" transform="rotate(30 20,40)">North-West</text>
- <text x="120" y="20" fill="orange" font-size="30px" transform="rotate(-20 300,40)">North-East</text>
- <text x="220" y="20" fill="cyan" font-size="30px" transform="rotate(130 150,30)">South-West</text>
- <text x="200" y="20" fill="tomato" font-size="20px" transform="rotate(-120 250,100)">South-East</text>
- </svg>
- </body>
- </html>

Text as link
- <html>
- <body>
- <svg height="250" width="500">
- <a xlink:href="http://www.c-sharpcorner.com/UploadFile/9a9e6f/overview-of-scalable-vector-graphics-svg/" target="_blank">
- <text x="10" y="20" fill="blue" font-size="20px">SVG Overview</text>
- </a>
- </svg>
- </body>
- </html>

Vertical Text
It can also be done by the transformation of text.
- <html>
- <body>
- <svg height="300" width="550">
- <text x="10" y="20" fill="green" font-size="20px"style="writing-mode: tb;">
- CSharp
- </text>
- <text x="40" y="10" fill="cyan" font-size="20px"style="writing-mode: tb; glyph-orientation-vertical: 0;">
- Corner
- </text>
- <text x="80" y="10" fill="lightgreen" font-size="30px"style="writing-mode: tb; glyph-orientation-vertical: 90;">
- Csharpcorner
- </text>
- <text x="120" y="10" fill="blue" font-size="20px"style="writing-mode: tb; glyph-orientation-vertical: 180;">
- Csharp corner
- </text>
- <text x="150" y="10" fill="grey" font-size="30px"style="writing-mode: tb; glyph-orientation-vertical: 270;">
- Csharp corner
- </text>
- <text x="180" y="10" fill="lime" font-size="20px"style="writing-mode: tb; glyph-orientation-vertical: 360;">
- Csharp corner
- </text>
- </svg>
- </body>
- </html>

Text with the letter and word spacing
It can be done using the CSS properties “letter-spacing” and “word-spacing”.
- <html>
- <body>
- <svg height="300" width="500">
- <text x="20" y="20" font-size="30px" >Normal Text</text>
- <text x="20" y="50" fill="orange" font-size="20px" style="letter-spacing:2;">Text with letter spacing(2)</text>
- <text x="20" y="75" fill="lightgreen" font-size="20px" style="letter-spacing:4;">Text with letter spacing(4)</text>
- <text x="20" y="100" fill="blue" font-size="20px" style="letter-spacing:6;">Text with letter spacing(6)</text>
- <text x="20" y="150" font-size="30px" >Normal Text</text>
- <text x="20" y="175" fill="red" font-size="20px" style="word-spacing:2;">Text with word spacing(2)</text>
- <text x="20" y="200" fill="cyan" font-size="20px" style="word-spacing:4;">Text with word spacing(4)</text>
- <text x="20" y="225" fill="grey" font-size="20px" style="word-spacing:6;">Text with word spacing(6)</text>
- </svg>
- </body>
- </html>

Text direction
The direction of the text can be set using the “direction” CSS property that includes the two values “ltr” (left to right) and “rtl” (right to left). There is also the need to set the Unicode-bidi CSS property to bidi-override in case of “rtl”.
- <html>
- <body>
- <svg height="300" width="500">
- <text x="10" y="40" fill="blue" font-size="30px" style="direction: ltr; unicode-bidi: bidi-override;">
- Left to right
- </text>
- <text x="160" y="80" fill="red" font-size="30px" style="direction: rtl; unicode-bidi: bidi-override;">
- Right to left
- </text>
- </svg>
- </body>
- </html>

Text length and length adjust
The “textLength” something sets the length of the text and then fits it to the specified length by adjusting the space between the characters and the size of the glyphs. The “lengthAdjust” something specifies when both letter spacing and glyphs size need to be adjusted.
- <html>
- <body>
- <svg height="300" width="550">
- <text x="5" y="30" fill="lime" font-size="30px" textLength="150">This is the length of text</text>
- <text x="5" y="60" fill="orange" font-size="30px" textLength="200">This is the length of text</text>
- <text x="5" y="90" fill="blue" font-size="30px" textLength="250">This is the length of text</text>
- <text x="5" y="120" fill="grey" font-size="30px" textLength="200" lengthAdjust="spacingAndGlyphs">This is the length of text</text>
- <text x="5" y="160" fill="red" font-size="40px" textLength="250" lengthAdjust="spacingAndGlyphs">This is the length of text</text>
- </svg>
- </body>
- </html>

I want to read more.
Summary
In this article, we learned about Scalable Vector Graphics - Text 1.
Thank you, keep learning and sharing.

Prasanna MuraliPosted May 20, 2016, 11:22 AM
Nice one....
Gopi ChandPosted Aug 19, 2015, 7:03 AM
Very glad to see all valuable comments from you all...Thanks :)
Santhakumar MunuswamyPosted Aug 12, 2015, 3:06 PM
Good Article. Thanks for sharing
RakeshPosted Aug 11, 2015, 2:29 PM
Very nice sir
Mohammed IbrahimPosted Aug 11, 2015, 7:54 AM
nice article
Sandeep KumarPosted Aug 11, 2015, 7:25 AM
Nice Article sir :)
Sibeesh VenuPosted Aug 11, 2015, 2:21 AM
Nice Share
Debasis SahaPosted Aug 11, 2015, 1:01 AM
Good One..
Rajeesh MenothPosted Aug 11, 2015, 12:53 AM
Good one..
Ankit BansalPosted Aug 11, 2015, 12:33 AM
great article...keep it up..
Pankaj Kumar ChoudharyPosted Aug 10, 2015, 9:46 PM
Again Nice Explanation........