[Sie-announce] SIEコード [1375] _ie_svgfont() を実装

アーカイブの一覧に戻る

svnno****@sourc***** svnno****@sourc*****
2009年 10月 28日 (水) 20:53:27 JST


Revision: 1375
          http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=1375
Author:   dhrname
Date:     2009-10-28 20:53:27 +0900 (Wed, 28 Oct 2009)

Log Message:
-----------
_ie_svgfont()を実装
_ie_font()を実装

Modified Paths:
--------------
    branches/05x/053/sie.js

Modified: branches/05x/053/sie.js
===================================================================
--- branches/05x/053/sie.js	2009-10-26 14:31:00 UTC (rev 1374)
+++ branches/05x/053/sie.js	2009-10-28 11:53:27 UTC (rev 1375)
@@ -1737,7 +1737,7 @@
   d = wort = f = v = tani = ut = null; //解放
   }  catch(e) {stlog.add(e,1133); this.value = 1000;}
   return this;
-}
+};
 STLength.prototype._dR = /\D+$/; //RegExpオブジェクトをあらかじめ生成
 STLength.prototype._n = [1, 0.01, 1, 1, 1, 35.43307, 3.543307, 90, 1.25, 15]; //利用単位への変換値
 STLength.prototype._tani = { //単位に番号を振る
@@ -1832,6 +1832,30 @@
   }
   } catch(e) {stlog.add(e,17155);}
 };
+function _ie_svgfont() {
+  var tsrc = document.getEelmentsByTagName("font-face-uri");
+  for (var i=0;i<tsrc.length;++i) {
+    var src = fsrc[i].getAttribute("xlink:href");
+    getURL(src, _ie_font, [ {id : src.substring(src.indexOf("#"), src.length-1)} ], 1);
+  }
+};
+function _ie_font(data) {
+  if (data.sucesse) {
+    var s = new DOMParser();
+    var doc = s.pareseFromString(data.content);
+    font = doc.getElementById(data.obj[0].id);
+    familyName = font.getElementsByTagNameNS("http://www.w3.org/2000/svg", "font-face").item(0).getAttribute("font-family");
+    if (familyName) {
+      var textElements = document.getElementByTagName("div");
+      for (var i=0,tli=textElements.length;i<tli;++i) {
+        var ti = textElements[i];
+        if (ti.style.fontFamily.indexOf(familyName) > -1) {
+          NAIBU._ie_createFont(ti, font);
+        }
+      }
+    }
+  }
+};
 NAIBU._ie_createFont = function(/*Element*/ ti, /*Element*/ font) {
   var node = ti.firstChild, data, glyphs = font.getElementsByTagName("GLYPH");
   var dx = parseFloat(ti.style.left), dy = parseFloat(ti.style.top), fontSize = parseFloat(ti.style.fontSize);
@@ -1843,8 +1867,8 @@
         /*カーニング処理について(To DO)
          *カーニングに該当する文字を検索して、ずらしたい長さだけ、以降のxとyから引く必要がある
          */
-        var x = dx * fontSize * index, y = dy * fontSize * index;
-        ti.inserBefore(path);
+        var x = dx * fontSize * index, y = dy * fontSize * index;
+        ti.insertBefore(path);
         NAIBU.pathData(glyphs[i].getAttribute("d"), path, true, x, y);
       }
     } else {
@@ -1852,7 +1876,7 @@
     }
     node = node.nextSibling;
   }
-}
+};
 NAIBU.pathData = function(/*string*/ data, /*Element*/ p, /*boolean*/ t, /*float*/x, y, w, h, fontSize, em) {
   //CTMでフォントを移動させておく
   var fe = fontSize / em, matrix = new STMatrix(fe, 0, 0, -fe, x*fe, -y*fe);




Sie-announce メーリングリストの案内
アーカイブの一覧に戻る