svnno****@sourc*****
svnno****@sourc*****
2009年 11月 19日 (木) 22:49:08 JST
Revision: 1421 http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=1421 Author: dhrname Date: 2009-11-19 22:49:08 +0900 (Thu, 19 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 10:59:21 UTC (rev 1420) +++ branches/05x/054/sie.js 2009-11-19 13:49:08 UTC (rev 1421) @@ -2002,7 +2002,19 @@ } ti.parentNode.insertBefore(path, ti); path.style.cssText = ti.style.cssText; - NAIBU.pathData(glyphData[i], path, true, ti.w, ti.h, (new Matrix(fe, 0, 0, -fe, x, y))); + 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, true, ti.w, ti.h, matrix); adv += advanceX[i]; } } @@ -2099,7 +2111,19 @@ } ti.parentNode.insertBefore(path, ti); path.style.cssText = style.cssText; - NAIBU.pathData(glyphData[i], path, false, 0, 0, (new Matrix(fe, 0, 0, -fe, x, y))); + 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]; } }