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);