[Sie-announce] SIEコード [1422] 縦書きの句読点対応

Back to archive index

svnno****@sourc***** svnno****@sourc*****
2009年 11月 20日 (金) 21:57:49 JST


Revision: 1422
          http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=1422
Author:   dhrname
Date:     2009-11-20 21:57:49 +0900 (Fri, 20 Nov 2009)

Log Message:
-----------
縦書きの句読点対応

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

Modified: branches/05x/054/sie.js
===================================================================
--- branches/05x/054/sie.js	2009-11-19 13:49:08 UTC (rev 1421)
+++ branches/05x/054/sie.js	2009-11-20 12:57:49 UTC (rev 1422)
@@ -2006,15 +2006,7 @@
             x += fontSize / Math.SQRT2;
             y -= fontSize / Math.SQRT2;
           }
-          var matrix = new Matrix(fe, 0, 0, -fe, x, y);
-          if ("「」--==<><>~[]{}{}()()".indexOf(data.charAt(i)) > -1) { //カッコの場合
-            /*以下では、フォント平方の真ん中を中心として、
-             *90度回転させることにより、縦書きでのカッコをうまく表示させる(要日本語の知識)
-             */
-            var a = Math.cos(Math.PI/2), b = Math.sin(Math.PI/2), c = -b, d = a, e = (1-a-c) * fontSize / 2, f = (1-b-d) * fontSize / 2;
-              matrix = (new Matrix(a, b, c, d, e, f)).multiply(matrix);
-          }
-          NAIBU.pathData(glyphData[i], path, true, ti.w, ti.h, matrix);
+          NAIBU.pathData(glyphData[i], path, true, ti.w, ti.h, (new Matrix(fe, 0, 0, -fe, x, y)) );
           adv += advanceX[i];
         }
       }
@@ -2104,27 +2096,24 @@
           if (advanceX[i] !== void 0) { //配列に含まれていれば
             var path = ti.ownerDocument.createElementNS(NAIBU.svgNameSpace, "path");
             //advance、すなわち字幅の長さ分、ずらしていく
+            ti.parentNode.insertBefore(path, ti);
+            path.style.cssText = style.cssText;
+            var matrix = new Matrix(fe, 0, 0, -fe, 0, 0);
             if (isTategaki) {
               var y= dy + adv*fe, x = dx;
+              if ("、。".indexOf(data.charAt(i)) > -1) { //句読点の場合
+                x += fontSize / Math.SQRT2;
+                y -= fontSize / Math.SQRT2;
+              }
+              matrix.e = x;
+              matrix.f = y;
             } else {
-              var x = dx + adv*fe, y= dy;
+              matrix.e = dx + adv*fe;
+              matrix.f = dy;
             }
-            ti.parentNode.insertBefore(path, ti);
-            path.style.cssText = style.cssText;
-            if ("、。".indexOf(data.charAt(i)) > -1) { //句読点の場合
-              x += fontSize / Math.SQRT2;
-              y -= fontSize / Math.SQRT2;
-            }
-            var matrix = new Matrix(fe, 0, 0, -fe, x, y);
-            if ("「」--==<><>~[]{}{}()()".indexOf(data.charAt(i)) > -1) { //カッコなど記号の場合
-              /*以下では、フォント平方の真ん中を中心として、
-               *90度回転させることにより、縦書きでの記号をうまく表示させる(要日本語の知識)
-               */
-              var a = Math.cos(Math.PI/2), b = Math.sin(Math.PI/2), c = -b, d = a, e = (1-a-c) * fontSize / 2, f = (1-b-d) * fontSize / 2;
-              matrix = (new Matrix(a, b, c, d, e, f)).multiply(matrix);
-            }
             NAIBU.pathData(glyphData[i], path, false, 0, 0, matrix);
             adv += advanceX[i];
+            matrix = null;
           }
         }
         advanceX = glyphData = null;




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