+ var leading = 1.2;
+ var tuneText = function (element, params) {
+ if (element.type != "text" || !("text" in params || "font" in params || "font-size" in params || "x" in params)) {
+ return;
+ }
+ var fontSize = element.node.firstChild ? parseInt(doc.defaultView.getComputedStyle(element.node.firstChild, "").getPropertyValue("font-size"), 10) : 10;
+ var height = 0;
+
+ if ("text" in params) {
+ while (element.node.firstChild) {
+ element.node.removeChild(element.node.firstChild);
+ }
+ var texts = (params.text + "").split("\n");
+ for (var i = 0, ii = texts.length; i < ii; i++) {
+ var tspan = doc.createElementNS(element.svg.svgns, "tspan");
+ i && tspan.setAttribute("dy", fontSize * leading);
+ i && tspan.setAttribute("x", element.attrs.x);
+ tspan.appendChild(doc.createTextNode(texts[i]));
+ element.node.appendChild(tspan);
+ height += fontSize * leading;
+ }
+ } else {
+ var texts = element.node.getElementsByTagName("tspan");
+ for (var i = 0, ii = texts.length; i < ii; i++) {
+ i && texts[i].setAttribute("dy", fontSize * leading);
+ i && texts[i].setAttribute("x", element.attrs.x);
+ height += fontSize * leading;
+ }
+ }
+ height -= fontSize * (leading - 1);
+ var dif = height / 2 - fontSize;
+ if (dif) {
+ element.node.setAttribute("y", element.attrs.y - dif);
+ }
+ setTimeout(function () {
+ });
+ };