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);
}