[Sie-announce] SIEコード [1804]

Back to archive index

svnno****@sourc***** svnno****@sourc*****
2010年 4月 26日 (月) 23:47:16 JST


Revision: 1804
          http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=1804
Author:   dhrname
Date:     2010-04-26 23:47:16 +0900 (Mon, 26 Apr 2010)

Log Message:
-----------


Modified Paths:
--------------
    branches/ufltima/dom/svg.js

Modified: branches/ufltima/dom/svg.js
===================================================================
--- branches/ufltima/dom/svg.js	2010-04-26 14:46:44 UTC (rev 1803)
+++ branches/ufltima/dom/svg.js	2010-04-26 14:47:16 UTC (rev 1804)
@@ -2720,66 +2720,6 @@
  *charnum番目の文字からnchars+charnum-1番目までの文字列の長さを求めて返す
  */
 /*float*/    SVGTextContentElement.prototype.getSubStringLength = function(/*unsigned long*/ charnum, /*unsigned long*/ nchars ) {
-  var style = this.ownerDocument.defaultView.getComputedStyle(this, null);
-  var isYokogaki = ((style.getPropertyValue("writing-mode")) === "lr-tb") ? true : false;
-  /*変数fontSizeはCTM処理後の、fontの実際の大きさを算出するための変数。
-   *つまり、CTMの行列式の2乗を掛け合わせることにより、fontの大きさにCTMを組み入れる
-   */
-  var fontSize = parseFloat(style.getPropertyValue("font-size"));
-  /*変数startとendはそのノードの始まりと終わりの文字におけるポジション番号。
-   *たとえば、<text>ab<tspan>cd</tspan>e</text>のtspan要素ノードにおいて、文字cのポジション番号は
-   *2であり、startに2という数値が格納される。endは3。
-   *
-   *また、isStartは開始されたかどうかのBooleanで、fはカーニング用文字に一致させるための正規表現オブジェクト
-   */
-  var s = 0, start = end = 0, t = this.firstChild, isStart = false, f = /[fijlt.,:;1]/g;
-  while (t) {
-    if (t.nodeName === "#text") {
-      var n = t.length, echar = charnum + nchars - 1, data;
-      end = start + n - 1;
-      if (((charnum<start) && (echar<start)) || ((charnum>end) && (echar>end))) {
-        isStart = false;
-      } else { //もし、ノードの中に該当する文字番号があれば
-        isStart = true;
-        s += n * fontSize;
-        var ec = echar >= end ? end : echar, cha = charnum <= start ? start : charnum;
-        s -= (cha-start) * fontSize;
-        s -= (end-ec) * fontSize;
-        data = t.substringData(cha, ec);
-        /*j,iなどは通常のアルファベットの半分(半角)に相当するため、
-         *カーニングとしてその差分を文字の長さsから引いておく
-         */
-        if (isYokogaki) {
-          var kerning = data.match(f).length;
-        } else {
-          var kerinig = 0;
-        }
-        s -= kerning;
-      }
-      start = end + 1;
-      n = data = kerning = null;
-    } else if (t.localName === "tspan") {
-      var n = t.getNumberOfChars(), echar = charnum + nchars - 1, data;
-      end = start + n - 1;
-      if (((charnum<start) && (echar<start)) || ((charnum>end) && (echar>end))) {
-        isStart = false;
-      } else {
-        var ec = echar > end ? end : echar, cha = charnum < start ? start : charnum;
-        s += t.getSubStringLength(cha, ec-cha);
-      }
-      if (isStart) {
-        if (isYokogaki) {
-          var td = t.dx;
-        } else {
-          var td = t.dy;
-        }
-        s += td.baseVal.getItem(0).value; //dx(dy)属性の分だけ増やす
-      }
-      start = end + 1;
-    }
-    t = t.nextSibling;
-  }
-  return s;
 }
 /*SVGPoint*/ SVGTextContentElement.prototype.getStartPositionOfChar = function (/*unsigned long*/ charnum ) {
   if (charnum > this.getNumberOfChars() || charnum < 0) {




Sie-announce メーリングリストの案内
Back to archive index