Get pixel length of String in Svg

image, javascript, svg

Solution

I've been wondering this too, and I was pleasantly surprised to find that, according to the SVG spec, there is a specific function to return this info: getComputedTextLength()

// access the text element you want to measure
var el = document.getElementsByTagName('text')[3];
el.getComputedTextLength(); // returns a pixel integer

Working fiddle (only tested in Chrome): http://jsfiddle.net/jyams/

Problem

I'm currently working with SVG. I need to know the string length in pixels in order to do some alignment. How can I do to get the length of a string in pixel ? Update: Thanks to nrabinowitz. Based on his help, I can now get the length of dynamic-added text. Here is an example: ``` <svg id="main" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1020" height="620" viewBox="0 0 1020 620" onload="startup(evt)"> <script> <![CDATA[ var startup = function (evt) { var width; var svgNS = "http://www.w3.org/2000/svg"; var txtNode = document.createTextNode("Hello"); text = document.createElementNS(svgNS,"text"); text.setAttributeNS(null,"x",100); text.setAttributeNS(null,"y",100); text.setAttributeNS(null,"fill","black"); text.appendChild(txtNode); width = text.getComputedTextLength(); alert(" Width before appendChild: "+ width); document.getElementById("main").appendChild(text); width = text.getComputedTextLength(); alert(" Width after appendChild: "+ width) document.getElementById("main").removeChild(text); } //]]> </script> </svg> ```

Original source

Related problems