svnno****@sourc*****
svnno****@sourc*****
2009年 11月 1日 (日) 23:06:57 JST
Revision: 1386
http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=1386
Author: dhrname
Date: 2009-11-01 23:06:57 +0900 (Sun, 01 Nov 2009)
Log Message:
-----------
_ie_createFontの実装
Modified Paths:
--------------
branches/05x/053/sie.js
Modified: branches/05x/053/sie.js
===================================================================
--- branches/05x/053/sie.js 2009-11-01 11:50:37 UTC (rev 1385)
+++ branches/05x/053/sie.js 2009-11-01 14:06:57 UTC (rev 1386)
@@ -410,6 +410,8 @@
var ttm = this.transformable;
var p = new Point(this.x.value,this.y.value);
var ptm = p.matrixTransform(ttm);
+ this.tar.w = w;
+ this.tar.h = h;
var tts = this.tar.style;
tts.position = "absolute";
var ttp = this.tar.parentNode;
@@ -1853,10 +1855,11 @@
var doc = new ActiveXObject("MSXML2.DomDocument");
str = data.content.replace(/!DOCTYPE/,"!--").replace(/(dtd">|\]>)/,"-->");
doc.loadXML(str);
- var font = doc.getElementsByTagNameNS(NAIBU.svgNameSpace, "font").item(0);
- var familyName = font.getElementsByTagNameNS(NAIBU.svgNameSpace, "font-face").item(0).getAttribute("font-family");
+ //getElementByIdは使えないので注意(DTDでの指定が必要)
+ var font = doc.getElementsByTagName("font").item(0);
+ var familyName = font.getElementsByTagName("font-face").item(0).getAttribute("font-family");
if (familyName && font.getAttribute("id") === data.obj[0].id) {
- var textElements = document.getElementByTagName("div");
+ var textElements = document.getElementsByTagName("div");
for (var i=0,tli=textElements.length;i<tli;++i) {
var ti = textElements[i], ts = ti.style, tsff = (!!ts.fontFamily) ? ts.fontFamily : "serif";
if (tsff.indexOf(familyName) > -1) {
@@ -1867,7 +1870,7 @@
}
};
NAIBU._ie_createFont = function(/*Element*/ ti, /*Element*/ font) {
- var node = ti.firstChild, data, glyphs = font.getElementsByTagName("GLYPH");
+ 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);
while(node) {
data = node.data;
@@ -1878,7 +1881,7 @@
//fontSizeと文字数をかけた長さ分、ずらしていく
var x = dx + fontSize * index, y = dy + fontSize * index;
ti.insertBefore(path);
- NAIBU.pathData(glyphs[i].getAttribute("d"), path, true, x, y);
+ NAIBU.pathData(glyphs[i].getAttribute("d"), path, true, x, y, ti.w, ti.h, fontSize, 1000);
}
}
} else {
@@ -1906,13 +1909,14 @@
NAIBU._fontSearchURI = function(doc){
var tsrc = doc.getElementsByTagNameNS(NAIBU.svgNameSpace, "font-face-uri");
for (var i=0;i<tsrc.length;++i) {
- var src = tsrc[i].getAttribute("xlink:href"), ids = src.substring(src.indexOf("#")+1, src.length);
+ var src = tsrc[i].getAttributeNS("http://www.w3.org/1999/xlink", "xlink:href"), ids = src.substring(src.indexOf("#")+1, src.length);
getURL(src.replace(/#.+$/, ""), _ie_font, [ {id : ids, style:{}} ], 1);
}
};
function _noie_font(data) {
if (data.success) {
var doc = (new DOMParser()).parseFromString(data.content);
+ //getElementByIdは使えないので注意(DTDでの指定が必要)
var font = doc.getElementsByTagNameNS(NAIBU.svgNameSpace, "font").item(0);
var familyName = font.getElementsByTagNameNS(NAIBU.svgNameSpace, "font-face").item(0).getAttributeNS(null, "font-family");
if (familyName && font.getAttributeNS(null, "id") === data.obj[0].id) {