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;