[Sie-announce] SIEコード [1386] _ie_createFontの実装

Back to archive index

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




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