[Sie-announce] SIEコード [1391] advanceに関する属性値の取得

Back to archive index

svnno****@sourc***** svnno****@sourc*****
2009年 11月 4日 (水) 22:58:43 JST


Revision: 1391
          http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=1391
Author:   dhrname
Date:     2009-11-04 22:58:43 +0900 (Wed, 04 Nov 2009)

Log Message:
-----------
advanceに関する属性値の取得

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

Modified: branches/05x/053/sie.js
===================================================================
--- branches/05x/053/sie.js	2009-11-02 14:35:10 UTC (rev 1390)
+++ branches/05x/053/sie.js	2009-11-04 13:58:43 UTC (rev 1391)
@@ -1875,6 +1875,7 @@
 NAIBU._ie_createFont = function(/*Element*/ ti, /*Element*/ font) {
   var node = ti.firstChild, data, glyphs = font.getElementsByTagName("glyph"), em = font.getElementsByTagName("font-face").item(0).getAttribute("units-per-em");
   var dx = parseFloat(ti.style.left), dy = parseFloat(ti.style.top), fontSize = parseFloat(ti.style.fontSize);
+  var advanceX = [], advX = font.getAttribute("horiz-adv-x"), originX = font.getAttribute("horiz-origin-x") || 0, originY = font.getAttribute("horiz-origin-y") || 0; //字幅とフォントの原点の設定
   while(node) {
     data = node.data;
     if (data !== void 0) { //dataがある場合
@@ -1882,7 +1883,7 @@
         var index = data.indexOf(glyphs[i].getAttribute("unicode")), path = document.createElement("v:shape");
         if (index > -1) {
           //fontSizeと文字数をかけた長さ分、ずらしていく
-          var x = dx + fontSize * index, y = dy;
+          var x = dx + fontSize * index, y = dy, advanceX[index] = parseFloat(glyphs[i].getAttribute("horiz-adv-x") || advX);
           ti.parentNode.insertBefore(path, ti);
           NAIBU.pathData(glyphs[i].getAttribute("d"), path, true, x, y, ti.w, ti.h, fontSize, parseFloat(em || 1000));
         }
@@ -1936,13 +1937,14 @@
 NAIBU._noie_createFont = function(/*Element*/ ti, /*Element*/ font) {
   var node = ti.firstChild, data, glyphs = font.getElementsByTagNameNS(NAIBU.svgNameSpace, "glyph");
   var dx = parseFloat((ti.getAttributeNS(null, "x") || 0)), dy = parseFloat((ti.getAttributeNS(null, "y") || 0)), fontSize = parseFloat((ti.getProperty("font-size") || 12));
+  var advanceX = [], advX = font.getAttribute("horiz-adv-x"), originX = font.getAttribute("horiz-origin-x") || 0, originY = font.getAttribute("horiz-origin-y") || 0; //字幅とフォントの原点の設定
   while(node) {
     data = node.data;
     if (data !== void 0) { //dataがある場合
       for (var i=0,gli=glyphs.length;i<gli;++i) {
         var index = data.indexOf(glyphs[i].getAttributeNS(null, "unicode")), path = document.createElementNS(NAIBU.svgNameSpace, "path");
         //fontSizeと文字数をかけた長さ分、ずらしていく
-        var x = dx + fontSize * index, y = dy;
+        var x = dx + fontSize * index, y = dy, advanceX[index] = parseFloat(glyphs[i].getAttribute("horiz-adv-x") || advX);
         ti.insertBefore(path);
         NAIBU.pathData(glyphs[i].getAttributeNS(null, "d"), path, false, x, y);
       }




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