[Sie-announce] SIEコード [1432] orientation属性を実装

アーカイブの一覧に戻る

svnno****@sourc***** svnno****@sourc*****
2009年 11月 23日 (月) 22:11:44 JST


Revision: 1432
          http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=1432
Author:   dhrname
Date:     2009-11-23 22:11:44 +0900 (Mon, 23 Nov 2009)

Log Message:
-----------
orientation属性を実装

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

Modified: branches/05x/055/sie.js
===================================================================
--- branches/05x/055/sie.js	2009-11-23 10:18:19 UTC (rev 1431)
+++ branches/05x/055/sie.js	2009-11-23 13:11:44 UTC (rev 1432)
@@ -1983,13 +1983,23 @@
       var advanceX = [], glyphData = [];
       for (var i=0,gli=glyphs.length;i<gli;++i) {
         var glyph = glyphs[i], unicode = glyph.getAttribute("unicode") || "なし"; //unicode属性に指定がない場合、処理させないようにする
-        //indexは該当する文字が何番目にあるかの数字
-        var index = data.indexOf(unicode);
-        while (index > -1) {
-          advanceX[index] = parseFloat(glyph.getAttribute(horizOrVert) || advX); //字幅を収納
-          glyphData[index] = glyph.getAttribute("d");
-          index = data.indexOf(unicode, index+1);
+        var orientation = glyph.getAttribute("orientation"), isVert = true, isOrientationAttribute = true;
+        if (orientation) {
+          if (orientation === "h") {
+            isVert = false;
+          }
+        } else {
+          isOrientationAttribute = false;
         }
+        if ( (isTategaki && isVert) || !(isTategaki || isVert) || !isOrientationAttribute){
+          //indexは該当する文字が何番目にあるかの数字
+          var index = data.indexOf(unicode);
+          while (index > -1) {
+            advanceX[index] = parseFloat(glyph.getAttribute(horizOrVert) || advX); //字幅を収納
+            glyphData[index] = glyph.getAttribute("d");
+            index = data.indexOf(unicode, index+1);
+          }
+        }
       }
       for (var i=0,adv=0;i<data.length;++i) {
         if (advanceX[i] !== void 0) { //配列に含まれていれば
@@ -2083,14 +2093,24 @@
       if (data !== void 0) { //dataがある場合
         var advanceX = [], glyphData = [];
         for (var i=0,gli=glyphs.length;i<gli;++i) {
-        var glyph = glyphs[i], unicode = glyph.getAttributeNS(null, "unicode") || "なし"; //unicode属性に指定がない場合、処理させないようにする
-          //indexは該当する文字が何番目にあるかの数字
-          var index = data.indexOf(unicode);
-          while (index > -1) {
-            advanceX[index] = parseFloat(glyph.getAttributeNS(null, horizOrVert) || advX); //字幅を収納
-            glyphData[index] = glyph.getAttributeNS(null, "d");
-            index = data.indexOf(unicode, index+1);
+          var glyph = glyphs[i], unicode = glyph.getAttributeNS(null, "unicode") || "なし"; //unicode属性に指定がない場合、処理させないようにする
+          var orientation = glyph.getAttributeNS(null, "orientation"), isVert = true, isOrientationAttribute = true;
+          if (orientation) {
+            if (orientation === "h") {
+              isVert = false;
+            }
+          } else {
+            isOrientationAttribute = false;
           }
+          if ( (isTategaki && isVert) || !(isTategaki || isVert) || !isOrientationAttribute){
+            //indexは該当する文字が何番目にあるかの数字
+            var index = data.indexOf(unicode);
+            while (index > -1) {
+              advanceX[index] = parseFloat(glyph.getAttributeNS(null, horizOrVert) || advX); //字幅を収納
+              glyphData[index] = glyph.getAttributeNS(null, "d");
+              index = data.indexOf(unicode, index+1);
+            }
+          }
         }
         for (var i=0,adv=0;i<data.length;++i) {
           if (advanceX[i] !== void 0) { //配列に含まれていれば




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