svnno****@sourc*****
svnno****@sourc*****
2010年 9月 28日 (火) 23:31:36 JST
Revision: 2026 http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=2026 Author: dhrname Date: 2010-09-28 23:31:36 +0900 (Tue, 28 Sep 2010) Log Message: ----------- 1, tspan要素の処理を追加 2, 文字列の微妙な位置設定をカーニングとして設定 Modified Paths: -------------- branches/06x/061/org/w3c/dom/svg.js Modified: branches/06x/061/org/w3c/dom/svg.js =================================================================== --- branches/06x/061/org/w3c/dom/svg.js 2010-09-27 13:35:57 UTC (rev 2025) +++ branches/06x/061/org/w3c/dom/svg.js 2010-09-28 14:31:36 UTC (rev 2026) @@ -3292,7 +3292,26 @@ } else { var ptx = pty = ptdx = ptdy = {numberOfItems : 0}; } - var kern = "fijltI.,:;'-", akern = "1a bcdeghknopqsuvxyz"; + if (tar.localName === "tspan") { + /*現在のテキスト位置を、前のノードによって、 + *変更する(tspan要素のみ) + */ + var tpt = tar, d = 0; + while (tpt.previousSibling) { + if (tpt.previousSibling.nodeType === Node.TEXT_NODE) { + d += tpt.length; + } else if (tpt.previousSibling.localName === "tspan") { + d += tpt.getNumberOfChars(); + } + tpt = tpt.previousSibling; + } + if (isYokogaki) { + x = tp.getSubStringLength(0, d); + } else { + y = tp.getSubStringLength(0, d); + } + } + var kern = "f ijltIr.,:;'-\"()", akern = "1234567890abcdeghknopquvxyz"; if (isYokogaki) { y += fontSize * 0.2; } else { @@ -3348,15 +3367,15 @@ //カーニングを求めて、字の幅を文字ごとに調整する var tdc = ti.data.charAt(i); if (kern.indexOf(tdc) > -1) { - alm = fontSize * 0.7; - } else if ((tdc === "r") || (tdc === "s")){ - alm = fontSize * 0.6; - } else if ((tdc === "C") || (tdc === "D") || (tdc === "M") || (tdc === "W") || (tdc === "G")){ + alm = fontSize * 0.68; + } else if (tdc === "s"){ + alm = fontSize * 0.52; + } else if ((tdc === "C") || (tdc === "D") || (tdc === "M") || (tdc === "W") || (tdc === "G") || (tdc === "m")){ alm = fontSize * 0.2; } else if (akern.indexOf(tdc) > -1){ - alm = fontSize * 0.55; + alm = fontSize * 0.45; } else { - alm = fontSize * 0.35; + alm = fontSize * 0.3; } var tcca = tdc.charCodeAt(0); if ((12288 <= tcca) && (tcca <= 65533)) { @@ -3379,7 +3398,7 @@ ++n; } } else if ((ti.localName === "tspan") && (ti.namespaceURI === "http://www.w3.org/2000/svg") && ti.firtChild) { - this._list.concat(ti._list); + tar._list.concat(ti._list); n += ti.getNumberOfChars(); } ti = ti.nextSibling; @@ -3620,7 +3639,9 @@ tar._tar.style.cursor = cursor; } var vis = style.getPropertyValue("visibility"); - tar._tar.style.visibility = vis; + if (!!!vis._n) { + tar._tar.style.visibility = vis; + } var isRect = true; if (ttp.lastChild) { if (ttp.lastChild.nodeName !== "rect") {