remove engine and glyphwiki from repogitry. master
authorKoichi Kamichi <kamichi@ic.daito.ac.jp>
Tue, 26 Jan 2016 13:31:27 +0000 (22:31 +0900)
committerKoichi Kamichi <kamichi@ic.daito.ac.jp>
Tue, 26 Jan 2016 13:31:27 +0000 (22:31 +0900)
33 files changed:
2d.js [deleted file]
buhin.js [deleted file]
curve.js [deleted file]
engine/2d.js [deleted file]
engine/COPYING [deleted file]
engine/buhin.js [deleted file]
engine/curve.js [deleted file]
engine/kage.js [deleted file]
engine/kagecd.js [deleted file]
engine/kagedf.js [deleted file]
engine/polygon.js [deleted file]
engine/polygons.js [deleted file]
engine/sample.as [deleted file]
engine/sample.html [deleted file]
engine/sample.js [deleted file]
glyphwiki/convert.pl [deleted file]
glyphwiki/detect.pl [deleted file]
glyphwiki/detect_ko.pl [deleted file]
glyphwiki/en.done.txt [deleted file]
glyphwiki/en.notyet.txt [deleted file]
glyphwiki/en.txt [deleted file]
glyphwiki/en.unused.txt [deleted file]
glyphwiki/ko.txt [deleted file]
glyphwiki/zh.txt [deleted file]
glyphwiki/注意.txt [deleted file]
kage.js [deleted file]
kagecd.js [deleted file]
kagedf.js [deleted file]
polygon.js [deleted file]
polygons.js [deleted file]
sample.as [deleted file]
sample.html [deleted file]
sample.js [deleted file]

diff --git a/2d.js b/2d.js
deleted file mode 100644 (file)
index 864f22f..0000000
--- a/2d.js
+++ /dev/null
@@ -1,129 +0,0 @@
-// Reference : http://www.cam.hi-ho.ne.jp/strong_warriors/teacher/chapter0{4,5}.html\r
-\r
-function point(x, y){\r
-  this.x = x;\r
-  this.y = y;\r
-}\r
-\r
-function getCrossPoint(x11, y11, x12, y12, x21, y21, x22, y22){ // point\r
-  var a1 = y12 - y11;\r
-  var b1 = x11 - x12;\r
-  var c1 = -1 * a1 * x11 - b1 * y11;\r
-  var a2 = y22 - y21;\r
-  var b2 = x21 - x22;\r
-  var c2 = -1 * a2 * x21 - b2 * y21;\r
-  \r
-  var temp = b1 * a2 - b2 * a1;\r
-  if(temp == 0){ // parallel\r
-    return false;\r
-  }\r
-  return new point((c1 * b2 - c2 * b1) / temp, (a1 * c2 - a2 * c1) / temp);\r
-}\r
-\r
-function isCross(x11, y11, x12, y12, x21, y21, x22, y22){ // boolean\r
-  var temp = getCrossPoint(x11, y11, x12, y12, x21, y21, x22, y22);\r
-  if(!temp){ return false; }\r
-  if(x11 < x12 && (temp.x < x11 || x12 < temp.x) ||\r
-     x11 > x12 && (temp.x < x12 || x11 < temp.x) ||\r
-     y11 < y12 && (temp.y < y11 || y12 < temp.y) ||\r
-     y11 > y12 && (temp.y < y12 || y11 < temp.y)\r
-     ){\r
-    return false;\r
-  }\r
-  if(x21 < x22 && (temp.x < x21 || x22 < temp.x) ||\r
-     x21 > x22 && (temp.x < x22 || x21 < temp.x) ||\r
-     y21 < y22 && (temp.y < y21 || y22 < temp.y) ||\r
-     y21 > y22 && (temp.y < y22 || y21 < temp.y)\r
-     ){\r
-    return false;\r
-  }\r
-  return true;\r
-}\r
-\r
-function isCrossBox(x1, y1, x2, y2, bx1, by1, bx2, by2){ // boolean\r
-  if(isCross(x1, y1, x2, y2, bx1, by1, bx2, by1)){ return true; }\r
-  if(isCross(x1, y1, x2, y2, bx2, by1, bx2, by2)){ return true; }\r
-  if(isCross(x1, y1, x2, y2, bx1, by2, bx2, by2)){ return true; }\r
-  if(isCross(x1, y1, x2, y2, bx1, by1, bx1, by2)){ return true; }\r
-  return false;\r
-}\r
-\r
-function isCrossBoxWithOthers(strokesArray, i, bx1, by1, bx2, by2){ // boolean\r
-  for(var j = 0; j < strokesArray.length; j++){\r
-    if(i == j){ continue; }\r
-    switch(strokesArray[j][0]){\r
-    case 0:\r
-    case 8:\r
-    case 9:\r
-      break;\r
-    case 6:\r
-    case 7:\r
-      if(isCrossBox(strokesArray[j][7],\r
-                    strokesArray[j][8],\r
-                    strokesArray[j][9],\r
-                    strokesArray[j][10],\r
-                    bx1, by1, bx2, by2)){\r
-        return true;\r
-      }\r
-    case 2:\r
-    case 12:\r
-    case 3:\r
-      if(isCrossBox(strokesArray[j][5],\r
-                    strokesArray[j][6],\r
-                    strokesArray[j][7],\r
-                    strokesArray[j][8],\r
-                    bx1, by1, bx2, by2)){\r
-        return true;\r
-      }\r
-    default:\r
-      if(isCrossBox(strokesArray[j][3],\r
-                    strokesArray[j][4],\r
-                    strokesArray[j][5],\r
-                    strokesArray[j][6],\r
-                    bx1, by1, bx2, by2)){\r
-        return true;\r
-      }\r
-    }\r
-  }\r
-  return false;\r
-}\r
-\r
-function isCrossWithOthers(strokesArray, i, bx1, by1, bx2, by2){ // boolean\r
-  for(var j = 0; j < strokesArray.length; j++){\r
-    if(i == j){ continue; }\r
-    switch(strokesArray[j][0]){\r
-    case 0:\r
-    case 8:\r
-    case 9:\r
-      break;\r
-    case 6:\r
-    case 7:\r
-      if(isCross(strokesArray[j][7],\r
-                 strokesArray[j][8],\r
-                 strokesArray[j][9],\r
-                 strokesArray[j][10],\r
-                 bx1, by1, bx2, by2)){\r
-        return true;\r
-      }\r
-    case 2:\r
-    case 12:\r
-    case 3:\r
-      if(isCross(strokesArray[j][5],\r
-                 strokesArray[j][6],\r
-                 strokesArray[j][7],\r
-                 strokesArray[j][8],\r
-                 bx1, by1, bx2, by2)){\r
-        return true;\r
-      }\r
-    default:\r
-      if(isCross(strokesArray[j][3],\r
-                 strokesArray[j][4],\r
-                 strokesArray[j][5],\r
-                 strokesArray[j][6],\r
-                 bx1, by1, bx2, by2)){\r
-        return true;\r
-      }\r
-    }\r
-  }\r
-  return false;\r
-}\r
diff --git a/buhin.js b/buhin.js
deleted file mode 100644 (file)
index 3fa0442..0000000
--- a/buhin.js
+++ /dev/null
@@ -1,24 +0,0 @@
-function Buhin(number){\r
-  // method\r
-  function set(name, data){ // void\r
-    this.hash[name] = data;\r
-  }\r
-  Buhin.prototype.push = set;\r
-  Buhin.prototype.set = set;\r
-  \r
-  function search(name){ // string\r
-    if(this.hash[name]){\r
-      return this.hash[name];\r
-    }\r
-    return ""; // no data\r
-  }\r
-  Buhin.prototype.search = search;\r
-  \r
-  // property\r
-  this.hash = {};\r
-  \r
-  // initialize\r
-  // no operation\r
-  \r
-  return this;\r
-}\r
diff --git a/curve.js b/curve.js
deleted file mode 100644 (file)
index 7acb013..0000000
--- a/curve.js
+++ /dev/null
@@ -1,195 +0,0 @@
-function divide_curve(kage, x1, y1, sx1, sy1, x2, y2, curve, div_curve, off_curve){\r
-  var rate = 0.5;\r
-  var cut = Math.floor(curve.length * rate);\r
-  var cut_rate = cut / curve.length;\r
-  var tx1 = x1 + (sx1 - x1) * cut_rate;\r
-  var ty1 = y1 + (sy1 - y1) * cut_rate;\r
-  var tx2 = sx1 + (x2 - sx1) * cut_rate;\r
-  var ty2 = sy1 + (y2 - sy1) * cut_rate;\r
-  var tx3 = tx1 + (tx2 - tx1) * cut_rate;\r
-  var ty3 = ty1 + (ty2 - ty1) * cut_rate;\r
-  \r
-  div_curve[0] = new Array();\r
-  div_curve[1] = new Array();\r
-  off_curve[0] = new Array(6);\r
-  off_curve[1] = new Array(6);\r
-  \r
-  // must think about 0 : <0\r
-  var i;\r
-  for(i = 0; i <= cut; i++){\r
-    div_curve[0].push(curve[i]);\r
-  }\r
-  off_curve[0][0] = x1;\r
-  off_curve[0][1] = y1;\r
-  off_curve[0][2] = tx1;\r
-  off_curve[0][3] = ty1;\r
-  off_curve[0][4] = tx3;\r
-  off_curve[0][5] = ty3;\r
-  \r
-  for(i = cut; i < curve.length; i++){\r
-    div_curve[1].push(curve[i]);\r
-  }\r
-  off_curve[1][0] = tx3;\r
-  off_curve[1][1] = ty3;\r
-  off_curve[1][2] = tx2;\r
-  off_curve[1][3] = ty2;\r
-  off_curve[1][4] = x2;\r
-  off_curve[1][5] = y2;\r
-}\r
-\r
-// ------------------------------------------------------------------\r
-function find_offcurve(kage, curve, sx, sy, result){\r
-  var nx1, ny1, nx2, ny2, tx, ty;\r
-  var minx, miny, count, diff;\r
-  var tt, t, x, y, ix, iy;\r
-  var mindiff = 100000;\r
-  var area = 8;\r
-  var mesh = 2;\r
-  // area = 10   mesh = 5 -> 281 calcs\r
-  // area = 10   mesh = 4 -> 180 calcs\r
-  // area =  8   mesh = 4 -> 169 calcs\r
-  // area =  7.5 mesh = 3 -> 100 calcs\r
-  // area =  8   mesh = 2 ->  97 calcs\r
-  // area =  7   mesh = 2 ->  80 calcs\r
-  \r
-  nx1 = curve[0][0];\r
-  ny1 = curve[0][1];\r
-  nx2 = curve[curve.length - 1][0];\r
-  ny2 = curve[curve.length - 1][1];\r
-  \r
-  for(tx = sx - area; tx < sx + area; tx += mesh){\r
-    for(ty = sy - area; ty < sy + area; ty += mesh){\r
-      count = 0;\r
-      diff = 0;\r
-      for(tt = 0; tt < curve.length; tt++){\r
-        t = tt / curve.length;\r
-        \r
-        //calculate a dot\r
-        x = ((1.0 - t) * (1.0 - t) * nx1 + 2.0 * t * (1.0 - t) * tx + t * t * nx2);\r
-        y = ((1.0 - t) * (1.0 - t) * ny1 + 2.0 * t * (1.0 - t) * ty + t * t * ny2);\r
-        \r
-        //KATAMUKI of vector by BIBUN\r
-        ix = (nx1 - 2.0 * tx + nx2) * 2.0 * t + (-2.0 * nx1 + 2.0 * tx);\r
-        iy = (ny1 - 2.0 * ty + ny2) * 2.0 * t + (-2.0 * ny1 + 2.0 * ty);\r
-        \r
-        diff += (curve[count][0] - x) * (curve[count][0] - x) + (curve[count][1] - y) * (curve[count][1] - y);\r
-        if(diff > mindiff){\r
-          tt = curve.length;\r
-        }\r
-        count++;\r
-      }\r
-      if(diff < mindiff){\r
-        minx = tx;\r
-        miny = ty;\r
-        mindiff = diff;\r
-      }\r
-    }\r
-  }\r
-  \r
-  for(tx = minx - mesh + 1; tx <= minx + mesh - 1; tx += 0.5){\r
-    for(ty = miny - mesh + 1; ty <= miny + mesh - 1; ty += 0.5){\r
-      count = 0;\r
-      diff = 0;\r
-      for(tt = 0; tt < curve.length; tt++){\r
-        t = tt / curve.length;\r
-        \r
-        //calculate a dot\r
-        x = ((1.0 - t) * (1.0 - t) * nx1 + 2.0 * t * (1.0 - t) * tx + t * t * nx2);\r
-        y = ((1.0 - t) * (1.0 - t) * ny1 + 2.0 * t * (1.0 - t) * ty + t * t * ny2);\r
-        \r
-        //KATAMUKI of vector by BIBUN\r
-        ix = (nx1 - 2.0 * tx + nx2) * 2.0 * t + (-2.0 * nx1 + 2.0 * tx);\r
-        iy = (ny1 - 2.0 * ty + ny2) * 2.0 * t + (-2.0 * ny1 + 2.0 * ty);\r
-        \r
-        diff += (curve[count][0] - x) * (curve[count][0] - x) + (curve[count][1] - y) * (curve[count][1] - y);\r
-        if(diff > mindiff){\r
-          tt = curve.length;\r
-        }\r
-        count++;\r
-      }\r
-      if(diff < mindiff){\r
-        minx = tx;\r
-        miny = ty;\r
-        mindiff = diff;\r
-      }\r
-    }\r
-  }\r
-  \r
-  result[0] = nx1;\r
-  result[1] = ny1;\r
-  result[2] = minx;\r
-  result[3] = miny;\r
-  result[4] = nx2;\r
-  result[5] = ny2;\r
-  result[6] = mindiff;\r
-}\r
-\r
-// ------------------------------------------------------------------\r
-function get_candidate(kage, curve, a1, a2, x1, y1, sx1, sy1, x2, y2, opt3, opt4){\r
-  var x, y, ix, iy, ir, ia, ib, tt, t, deltad;\r
-  var hosomi = 0.5;\r
-  \r
-  curve[0] = new Array();\r
-  curve[1] = new Array();\r
-  \r
-  for(tt = 0; tt <= 1000; tt = tt + kage.kRate){\r
-    t = tt / 1000;\r
-    \r
-    //calculate a dot\r
-    x = ((1.0 - t) * (1.0 - t) * x1 + 2.0 * t * (1.0 - t) * sx1 + t * t * x2);\r
-    y = ((1.0 - t) * (1.0 - t) * y1 + 2.0 * t * (1.0 - t) * sy1 + t * t * y2);\r
-    \r
-    //KATAMUKI of vector by BIBUN\r
-    ix = (x1 - 2.0 * sx1 + x2) * 2.0 * t + (-2.0 * x1 + 2.0 * sx1);\r
-    iy = (y1 - 2.0 * sy1 + y2) * 2.0 * t + (-2.0 * y1 + 2.0 * sy1);\r
-    //line SUICHOKU by vector\r
-    if(ix != 0 && iy != 0){\r
-      ir = Math.atan(iy / ix * -1);\r
-      ia = Math.sin(ir) * (kage.kMinWidthT);\r
-      ib = Math.cos(ir) * (kage.kMinWidthT);\r
-    }\r
-    else if(ix == 0){\r
-      ia = kage.kMinWidthT;\r
-      ib = 0;\r
-    }\r
-    else{\r
-      ia = 0;\r
-      ib = kage.kMinWidthT;\r
-    }\r
-    \r
-    if(a1 == 7 && a2 == 0){ // L2RD: fatten\r
-      deltad = Math.pow(t, hosomi) * kage.kL2RDfatten;\r
-    }\r
-    else if(a1 == 7){\r
-      deltad = Math.pow(t, hosomi);\r
-    }\r
-    else if(a2 == 7){\r
-      deltad = Math.pow(1.0 - t, hosomi);\r
-    }\r
-    else if(opt3 > 0){\r
-      deltad = (((kage.kMinWidthT - opt4 / 2) - opt3 / 2) / (kage.kMinWidthT - opt4 / 2)) + opt3 / 2 / (kage.kMinWidthT - opt4) * t;\r
-    }\r
-    else{ deltad = 1; }\r
-    \r
-    if(deltad < 0.15){\r
-      deltad = 0.15;\r
-    }\r
-    ia = ia * deltad;\r
-    ib = ib * deltad;\r
-    \r
-    //reverse if vector is going 2nd/3rd quadrants\r
-    if(ix <= 0){\r
-      ia = ia * -1;\r
-      ib = ib * -1;\r
-    }\r
-    \r
-    temp = new Array(2);\r
-    temp[0] = x - ia;\r
-    temp[1] = y - ib;\r
-    curve[0].push(temp);\r
-    temp = new Array(2);\r
-    temp[0] = x + ia;\r
-    temp[1] = y + ib;\r
-    curve[1].push(temp);\r
-  }\r
-}\r
diff --git a/engine/2d.js b/engine/2d.js
deleted file mode 100644 (file)
index 864f22f..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-// Reference : http://www.cam.hi-ho.ne.jp/strong_warriors/teacher/chapter0{4,5}.html\r
-\r
-function point(x, y){\r
-  this.x = x;\r
-  this.y = y;\r
-}\r
-\r
-function getCrossPoint(x11, y11, x12, y12, x21, y21, x22, y22){ // point\r
-  var a1 = y12 - y11;\r
-  var b1 = x11 - x12;\r
-  var c1 = -1 * a1 * x11 - b1 * y11;\r
-  var a2 = y22 - y21;\r
-  var b2 = x21 - x22;\r
-  var c2 = -1 * a2 * x21 - b2 * y21;\r
-  \r
-  var temp = b1 * a2 - b2 * a1;\r
-  if(temp == 0){ // parallel\r
-    return false;\r
-  }\r
-  return new point((c1 * b2 - c2 * b1) / temp, (a1 * c2 - a2 * c1) / temp);\r
-}\r
-\r
-function isCross(x11, y11, x12, y12, x21, y21, x22, y22){ // boolean\r
-  var temp = getCrossPoint(x11, y11, x12, y12, x21, y21, x22, y22);\r
-  if(!temp){ return false; }\r
-  if(x11 < x12 && (temp.x < x11 || x12 < temp.x) ||\r
-     x11 > x12 && (temp.x < x12 || x11 < temp.x) ||\r
-     y11 < y12 && (temp.y < y11 || y12 < temp.y) ||\r
-     y11 > y12 && (temp.y < y12 || y11 < temp.y)\r
-     ){\r
-    return false;\r
-  }\r
-  if(x21 < x22 && (temp.x < x21 || x22 < temp.x) ||\r
-     x21 > x22 && (temp.x < x22 || x21 < temp.x) ||\r
-     y21 < y22 && (temp.y < y21 || y22 < temp.y) ||\r
-     y21 > y22 && (temp.y < y22 || y21 < temp.y)\r
-     ){\r
-    return false;\r
-  }\r
-  return true;\r
-}\r
-\r
-function isCrossBox(x1, y1, x2, y2, bx1, by1, bx2, by2){ // boolean\r
-  if(isCross(x1, y1, x2, y2, bx1, by1, bx2, by1)){ return true; }\r
-  if(isCross(x1, y1, x2, y2, bx2, by1, bx2, by2)){ return true; }\r
-  if(isCross(x1, y1, x2, y2, bx1, by2, bx2, by2)){ return true; }\r
-  if(isCross(x1, y1, x2, y2, bx1, by1, bx1, by2)){ return true; }\r
-  return false;\r
-}\r
-\r
-function isCrossBoxWithOthers(strokesArray, i, bx1, by1, bx2, by2){ // boolean\r
-  for(var j = 0; j < strokesArray.length; j++){\r
-    if(i == j){ continue; }\r
-    switch(strokesArray[j][0]){\r
-    case 0:\r
-    case 8:\r
-    case 9:\r
-      break;\r
-    case 6:\r
-    case 7:\r
-      if(isCrossBox(strokesArray[j][7],\r
-                    strokesArray[j][8],\r
-                    strokesArray[j][9],\r
-                    strokesArray[j][10],\r
-                    bx1, by1, bx2, by2)){\r
-        return true;\r
-      }\r
-    case 2:\r
-    case 12:\r
-    case 3:\r
-      if(isCrossBox(strokesArray[j][5],\r
-                    strokesArray[j][6],\r
-                    strokesArray[j][7],\r
-                    strokesArray[j][8],\r
-                    bx1, by1, bx2, by2)){\r
-        return true;\r
-      }\r
-    default:\r
-      if(isCrossBox(strokesArray[j][3],\r
-                    strokesArray[j][4],\r
-                    strokesArray[j][5],\r
-                    strokesArray[j][6],\r
-                    bx1, by1, bx2, by2)){\r
-        return true;\r
-      }\r
-    }\r
-  }\r
-  return false;\r
-}\r
-\r
-function isCrossWithOthers(strokesArray, i, bx1, by1, bx2, by2){ // boolean\r
-  for(var j = 0; j < strokesArray.length; j++){\r
-    if(i == j){ continue; }\r
-    switch(strokesArray[j][0]){\r
-    case 0:\r
-    case 8:\r
-    case 9:\r
-      break;\r
-    case 6:\r
-    case 7:\r
-      if(isCross(strokesArray[j][7],\r
-                 strokesArray[j][8],\r
-                 strokesArray[j][9],\r
-                 strokesArray[j][10],\r
-                 bx1, by1, bx2, by2)){\r
-        return true;\r
-      }\r
-    case 2:\r
-    case 12:\r
-    case 3:\r
-      if(isCross(strokesArray[j][5],\r
-                 strokesArray[j][6],\r
-                 strokesArray[j][7],\r
-                 strokesArray[j][8],\r
-                 bx1, by1, bx2, by2)){\r
-        return true;\r
-      }\r
-    default:\r
-      if(isCross(strokesArray[j][3],\r
-                 strokesArray[j][4],\r
-                 strokesArray[j][5],\r
-                 strokesArray[j][6],\r
-                 bx1, by1, bx2, by2)){\r
-        return true;\r
-      }\r
-    }\r
-  }\r
-  return false;\r
-}\r
diff --git a/engine/COPYING b/engine/COPYING
deleted file mode 100644 (file)
index 94a9ed0..0000000
+++ /dev/null
@@ -1,674 +0,0 @@
-                    GNU GENERAL PUBLIC LICENSE
-                       Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-                            Preamble
-
-  The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
-
-  The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works.  By contrast,
-the GNU General Public License is intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users.  We, the Free Software Foundation, use the
-GNU General Public License for most of our software; it applies also to
-any other work released this way by its authors.  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
-  To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights.  Therefore, you have
-certain responsibilities if you distribute copies of the software, or if
-you modify it: responsibilities to respect the freedom of others.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received.  You must make sure that they, too, receive
-or can get the source code.  And you must show them these terms so they
-know their rights.
-
-  Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
-  For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software.  For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
-  Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the manufacturer
-can do so.  This is fundamentally incompatible with the aim of
-protecting users' freedom to change the software.  The systematic
-pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable.  Therefore, we
-have designed this version of the GPL to prohibit the practice for those
-products.  If such problems arise substantially in other domains, we
-stand ready to extend this provision to those domains in future versions
-of the GPL, as needed to protect the freedom of users.
-
-  Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary.  To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-                       TERMS AND CONDITIONS
-
-  0. Definitions.
-
-  "This License" refers to version 3 of the GNU General Public License.
-
-  "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
-  "The Program" refers to any copyrightable work licensed under this
-License.  Each licensee is addressed as "you".  "Licensees" and
-"recipients" may be individuals or organizations.
-
-  To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy.  The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
-  A "covered work" means either the unmodified Program or a work based
-on the Program.
-
-  To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy.  Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
-  To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies.  Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
-  An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License.  If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
-  1. Source Code.
-
-  The "source code" for a work means the preferred form of the work
-for making modifications to it.  "Object code" means any non-source
-form of a work.
-
-  A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
-  The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form.  A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
-  The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities.  However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work.  For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
-  The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
-  The Corresponding Source for a work in source code form is that
-same work.
-
-  2. Basic Permissions.
-
-  All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met.  This License explicitly affirms your unlimited
-permission to run the unmodified Program.  The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work.  This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
-  You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force.  You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright.  Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
-  Conveying under any other circumstances is permitted solely under
-the conditions stated below.  Sublicensing is not allowed; section 10
-makes it unnecessary.
-
-  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
-  No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
-  When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
-  4. Conveying Verbatim Copies.
-
-  You may convey verbatim copies of the Program's source code as you
-receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
-  You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
-  5. Conveying Modified Source Versions.
-
-  You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
-    a) The work must carry prominent notices stating that you modified
-    it, and giving a relevant date.
-
-    b) The work must carry prominent notices stating that it is
-    released under this License and any conditions added under section
-    7.  This requirement modifies the requirement in section 4 to
-    "keep intact all notices".
-
-    c) You must license the entire work, as a whole, under this
-    License to anyone who comes into possession of a copy.  This
-    License will therefore apply, along with any applicable section 7
-    additional terms, to the whole of the work, and all its parts,
-    regardless of how they are packaged.  This License gives no
-    permission to license the work in any other way, but it does not
-    invalidate such permission if you have separately received it.
-
-    d) If the work has interactive user interfaces, each must display
-    Appropriate Legal Notices; however, if the Program has interactive
-    interfaces that do not display Appropriate Legal Notices, your
-    work need not make them do so.
-
-  A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit.  Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
-  6. Conveying Non-Source Forms.
-
-  You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
-    a) Convey the object code in, or embodied in, a physical product
-    (including a physical distribution medium), accompanied by the
-    Corresponding Source fixed on a durable physical medium
-    customarily used for software interchange.
-
-    b) Convey the object code in, or embodied in, a physical product
-    (including a physical distribution medium), accompanied by a
-    written offer, valid for at least three years and valid for as
-    long as you offer spare parts or customer support for that product
-    model, to give anyone who possesses the object code either (1) a
-    copy of the Corresponding Source for all the software in the
-    product that is covered by this License, on a durable physical
-    medium customarily used for software interchange, for a price no
-    more than your reasonable cost of physically performing this
-    conveying of source, or (2) access to copy the
-    Corresponding Source from a network server at no charge.
-
-    c) Convey individual copies of the object code with a copy of the
-    written offer to provide the Corresponding Source.  This
-    alternative is allowed only occasionally and noncommercially, and
-    only if you received the object code with such an offer, in accord
-    with subsection 6b.
-
-    d) Convey the object code by offering access from a designated
-    place (gratis or for a charge), and offer equivalent access to the
-    Corresponding Source in the same way through the same place at no
-    further charge.  You need not require recipients to copy the
-    Corresponding Source along with the object code.  If the place to
-    copy the object code is a network server, the Corresponding Source
-    may be on a different server (operated by you or a third party)
-    that supports equivalent copying facilities, provided you maintain
-    clear directions next to the object code saying where to find the
-    Corresponding Source.  Regardless of what server hosts the
-    Corresponding Source, you remain obligated to ensure that it is
-    available for as long as needed to satisfy these requirements.
-
-    e) Convey the object code using peer-to-peer transmission, provided
-    you inform other peers where the object code and Corresponding
-    Source of the work are being offered to the general public at no
-    charge under subsection 6d.
-
-  A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
-  A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling.  In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage.  For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product.  A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
-  "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source.  The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
-  If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information.  But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
-  The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed.  Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
-  Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
-  7. Additional Terms.
-
-  "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law.  If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
-  When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it.  (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.)  You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
-  Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
-    a) Disclaiming warranty or limiting liability differently from the
-    terms of sections 15 and 16 of this License; or
-
-    b) Requiring preservation of specified reasonable legal notices or
-    author attributions in that material or in the Appropriate Legal
-    Notices displayed by works containing it; or
-
-    c) Prohibiting misrepresentation of the origin of that material, or
-    requiring that modified versions of such material be marked in
-    reasonable ways as different from the original version; or
-
-    d) Limiting the use for publicity purposes of names of licensors or
-    authors of the material; or
-
-    e) Declining to grant rights under trademark law for use of some
-    trade names, trademarks, or service marks; or
-
-    f) Requiring indemnification of licensors and authors of that
-    material by anyone who conveys the material (or modified versions of
-    it) with contractual assumptions of liability to the recipient, for
-    any liability that these contractual assumptions directly impose on
-    those licensors and authors.
-
-  All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10.  If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term.  If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
-  If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
-  Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
-  8. Termination.
-
-  You may not propagate or modify a covered work except as expressly
-provided under this License.  Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
-  However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
-  Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
-  Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License.  If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
-  9. Acceptance Not Required for Having Copies.
-
-  You are not required to accept this License in order to receive or
-run a copy of the Program.  Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance.  However,
-nothing other than this License grants you permission to propagate or
-modify any covered work.  These actions infringe copyright if you do
-not accept this License.  Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
-  10. Automatic Licensing of Downstream Recipients.
-
-  Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License.  You are not responsible
-for enforcing compliance by third parties with this License.
-
-  An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations.  If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
-  You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License.  For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
-  11. Patents.
-
-  A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based.  The
-work thus licensed is called the contributor's "contributor version".
-
-  A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version.  For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
-  Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
-  In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement).  To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
-  If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients.  "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
-  If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
-  A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License.  You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
-  Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
-  12. No Surrender of Others' Freedom.
-
-  If conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all.  For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
-  13. Use with the GNU Affero General Public License.
-
-  Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
-combined work, and to convey the resulting work.  The terms of this
-License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
-
-  14. Revised Versions of this License.
-
-  The Free Software Foundation may publish revised and/or new versions of
-the GNU General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-  Each version is given a distinguishing version number.  If the
-Program specifies that a certain numbered version of the GNU General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation.  If the Program does not specify a version number of the
-GNU General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
-  If the Program specifies that a proxy can decide which future
-versions of the GNU General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
-  Later license versions may give you additional or different
-permissions.  However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
-  15. Disclaimer of Warranty.
-
-  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
-OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
-IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. Limitation of Liability.
-
-  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
-DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGES.
-
-  17. Interpretation of Sections 15 and 16.
-
-  If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
-                     END OF TERMS AND CONDITIONS
-
-            How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-state the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This program is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-Also add information on how to contact you by electronic and paper mail.
-
-  If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
-    <program>  Copyright (C) <year>  <name of author>
-    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, your program's commands
-might be different; for a GUI interface, you would use an "about box".
-
-  You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU GPL, see
-<http://www.gnu.org/licenses/>.
-
-  The GNU General Public License does not permit incorporating your program
-into proprietary programs.  If your program is a subroutine library, you
-may consider it more useful to permit linking proprietary applications with
-the library.  If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.  But first, please read
-<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/engine/buhin.js b/engine/buhin.js
deleted file mode 100644 (file)
index 3fa0442..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-function Buhin(number){\r
-  // method\r
-  function set(name, data){ // void\r
-    this.hash[name] = data;\r
-  }\r
-  Buhin.prototype.push = set;\r
-  Buhin.prototype.set = set;\r
-  \r
-  function search(name){ // string\r
-    if(this.hash[name]){\r
-      return this.hash[name];\r
-    }\r
-    return ""; // no data\r
-  }\r
-  Buhin.prototype.search = search;\r
-  \r
-  // property\r
-  this.hash = {};\r
-  \r
-  // initialize\r
-  // no operation\r
-  \r
-  return this;\r
-}\r
diff --git a/engine/curve.js b/engine/curve.js
deleted file mode 100644 (file)
index 7acb013..0000000
+++ /dev/null
@@ -1,195 +0,0 @@
-function divide_curve(kage, x1, y1, sx1, sy1, x2, y2, curve, div_curve, off_curve){\r
-  var rate = 0.5;\r
-  var cut = Math.floor(curve.length * rate);\r
-  var cut_rate = cut / curve.length;\r
-  var tx1 = x1 + (sx1 - x1) * cut_rate;\r
-  var ty1 = y1 + (sy1 - y1) * cut_rate;\r
-  var tx2 = sx1 + (x2 - sx1) * cut_rate;\r
-  var ty2 = sy1 + (y2 - sy1) * cut_rate;\r
-  var tx3 = tx1 + (tx2 - tx1) * cut_rate;\r
-  var ty3 = ty1 + (ty2 - ty1) * cut_rate;\r
-  \r
-  div_curve[0] = new Array();\r
-  div_curve[1] = new Array();\r
-  off_curve[0] = new Array(6);\r
-  off_curve[1] = new Array(6);\r
-  \r
-  // must think about 0 : <0\r
-  var i;\r
-  for(i = 0; i <= cut; i++){\r
-    div_curve[0].push(curve[i]);\r
-  }\r
-  off_curve[0][0] = x1;\r
-  off_curve[0][1] = y1;\r
-  off_curve[0][2] = tx1;\r
-  off_curve[0][3] = ty1;\r
-  off_curve[0][4] = tx3;\r
-  off_curve[0][5] = ty3;\r
-  \r
-  for(i = cut; i < curve.length; i++){\r
-    div_curve[1].push(curve[i]);\r
-  }\r
-  off_curve[1][0] = tx3;\r
-  off_curve[1][1] = ty3;\r
-  off_curve[1][2] = tx2;\r
-  off_curve[1][3] = ty2;\r
-  off_curve[1][4] = x2;\r
-  off_curve[1][5] = y2;\r
-}\r
-\r
-// ------------------------------------------------------------------\r
-function find_offcurve(kage, curve, sx, sy, result){\r
-  var nx1, ny1, nx2, ny2, tx, ty;\r
-  var minx, miny, count, diff;\r
-  var tt, t, x, y, ix, iy;\r
-  var mindiff = 100000;\r
-  var area = 8;\r
-  var mesh = 2;\r
-  // area = 10   mesh = 5 -> 281 calcs\r
-  // area = 10   mesh = 4 -> 180 calcs\r
-  // area =  8   mesh = 4 -> 169 calcs\r
-  // area =  7.5 mesh = 3 -> 100 calcs\r
-  // area =  8   mesh = 2 ->  97 calcs\r
-  // area =  7   mesh = 2 ->  80 calcs\r
-  \r
-  nx1 = curve[0][0];\r
-  ny1 = curve[0][1];\r
-  nx2 = curve[curve.length - 1][0];\r
-  ny2 = curve[curve.length - 1][1];\r
-  \r
-  for(tx = sx - area; tx < sx + area; tx += mesh){\r
-    for(ty = sy - area; ty < sy + area; ty += mesh){\r
-      count = 0;\r
-      diff = 0;\r
-      for(tt = 0; tt < curve.length; tt++){\r
-        t = tt / curve.length;\r
-        \r
-        //calculate a dot\r
-        x = ((1.0 - t) * (1.0 - t) * nx1 + 2.0 * t * (1.0 - t) * tx + t * t * nx2);\r
-        y = ((1.0 - t) * (1.0 - t) * ny1 + 2.0 * t * (1.0 - t) * ty + t * t * ny2);\r
-        \r
-        //KATAMUKI of vector by BIBUN\r
-        ix = (nx1 - 2.0 * tx + nx2) * 2.0 * t + (-2.0 * nx1 + 2.0 * tx);\r
-        iy = (ny1 - 2.0 * ty + ny2) * 2.0 * t + (-2.0 * ny1 + 2.0 * ty);\r
-        \r
-        diff += (curve[count][0] - x) * (curve[count][0] - x) + (curve[count][1] - y) * (curve[count][1] - y);\r
-        if(diff > mindiff){\r
-          tt = curve.length;\r
-        }\r
-        count++;\r
-      }\r
-      if(diff < mindiff){\r
-        minx = tx;\r
-        miny = ty;\r
-        mindiff = diff;\r
-      }\r
-    }\r
-  }\r
-  \r
-  for(tx = minx - mesh + 1; tx <= minx + mesh - 1; tx += 0.5){\r
-    for(ty = miny - mesh + 1; ty <= miny + mesh - 1; ty += 0.5){\r
-      count = 0;\r
-      diff = 0;\r
-      for(tt = 0; tt < curve.length; tt++){\r
-        t = tt / curve.length;\r
-        \r
-        //calculate a dot\r
-        x = ((1.0 - t) * (1.0 - t) * nx1 + 2.0 * t * (1.0 - t) * tx + t * t * nx2);\r
-        y = ((1.0 - t) * (1.0 - t) * ny1 + 2.0 * t * (1.0 - t) * ty + t * t * ny2);\r
-        \r
-        //KATAMUKI of vector by BIBUN\r
-        ix = (nx1 - 2.0 * tx + nx2) * 2.0 * t + (-2.0 * nx1 + 2.0 * tx);\r
-        iy = (ny1 - 2.0 * ty + ny2) * 2.0 * t + (-2.0 * ny1 + 2.0 * ty);\r
-        \r
-        diff += (curve[count][0] - x) * (curve[count][0] - x) + (curve[count][1] - y) * (curve[count][1] - y);\r
-        if(diff > mindiff){\r
-          tt = curve.length;\r
-        }\r
-        count++;\r
-      }\r
-      if(diff < mindiff){\r
-        minx = tx;\r
-        miny = ty;\r
-        mindiff = diff;\r
-      }\r
-    }\r
-  }\r
-  \r
-  result[0] = nx1;\r
-  result[1] = ny1;\r
-  result[2] = minx;\r
-  result[3] = miny;\r
-  result[4] = nx2;\r
-  result[5] = ny2;\r
-  result[6] = mindiff;\r
-}\r
-\r
-// ------------------------------------------------------------------\r
-function get_candidate(kage, curve, a1, a2, x1, y1, sx1, sy1, x2, y2, opt3, opt4){\r
-  var x, y, ix, iy, ir, ia, ib, tt, t, deltad;\r
-  var hosomi = 0.5;\r
-  \r
-  curve[0] = new Array();\r
-  curve[1] = new Array();\r
-  \r
-  for(tt = 0; tt <= 1000; tt = tt + kage.kRate){\r
-    t = tt / 1000;\r
-    \r
-    //calculate a dot\r
-    x = ((1.0 - t) * (1.0 - t) * x1 + 2.0 * t * (1.0 - t) * sx1 + t * t * x2);\r
-    y = ((1.0 - t) * (1.0 - t) * y1 + 2.0 * t * (1.0 - t) * sy1 + t * t * y2);\r
-    \r
-    //KATAMUKI of vector by BIBUN\r
-    ix = (x1 - 2.0 * sx1 + x2) * 2.0 * t + (-2.0 * x1 + 2.0 * sx1);\r
-    iy = (y1 - 2.0 * sy1 + y2) * 2.0 * t + (-2.0 * y1 + 2.0 * sy1);\r
-    //line SUICHOKU by vector\r
-    if(ix != 0 && iy != 0){\r
-      ir = Math.atan(iy / ix * -1);\r
-      ia = Math.sin(ir) * (kage.kMinWidthT);\r
-      ib = Math.cos(ir) * (kage.kMinWidthT);\r
-    }\r
-    else if(ix == 0){\r
-      ia = kage.kMinWidthT;\r
-      ib = 0;\r
-    }\r
-    else{\r
-      ia = 0;\r
-      ib = kage.kMinWidthT;\r
-    }\r
-    \r
-    if(a1 == 7 && a2 == 0){ // L2RD: fatten\r
-      deltad = Math.pow(t, hosomi) * kage.kL2RDfatten;\r
-    }\r
-    else if(a1 == 7){\r
-      deltad = Math.pow(t, hosomi);\r
-    }\r
-    else if(a2 == 7){\r
-      deltad = Math.pow(1.0 - t, hosomi);\r
-    }\r
-    else if(opt3 > 0){\r
-      deltad = (((kage.kMinWidthT - opt4 / 2) - opt3 / 2) / (kage.kMinWidthT - opt4 / 2)) + opt3 / 2 / (kage.kMinWidthT - opt4) * t;\r
-    }\r
-    else{ deltad = 1; }\r
-    \r
-    if(deltad < 0.15){\r
-      deltad = 0.15;\r
-    }\r
-    ia = ia * deltad;\r
-    ib = ib * deltad;\r
-    \r
-    //reverse if vector is going 2nd/3rd quadrants\r
-    if(ix <= 0){\r
-      ia = ia * -1;\r
-      ib = ib * -1;\r
-    }\r
-    \r
-    temp = new Array(2);\r
-    temp[0] = x - ia;\r
-    temp[1] = y - ib;\r
-    curve[0].push(temp);\r
-    temp = new Array(2);\r
-    temp[0] = x + ia;\r
-    temp[1] = y + ib;\r
-    curve[1].push(temp);\r
-  }\r
-}\r
diff --git a/engine/kage.js b/engine/kage.js
deleted file mode 100644 (file)
index c58fda5..0000000
+++ /dev/null
@@ -1,423 +0,0 @@
-function Kage(size){\r
-  // method\r
-  function makeGlyph(polygons, buhin){ // void\r
-    var glyphData = this.kBuhin.search(buhin);\r
-    this.makeGlyph2(polygons, glyphData);\r
-  }\r
-  Kage.prototype.makeGlyph = makeGlyph;\r
-  \r
-  function makeGlyph2(polygons, data){ // void\r
-      if(data != ""){\r
-         var strokesArray = this.adjustKirikuchi(this.adjustUroko2(this.adjustUroko(this.adjustKakato(this.adjustTate(this.adjustMage(this.adjustHane(this.getEachStrokes(data))))))));\r
-         for(var i = 0; i < strokesArray.length; i++){\r
-             dfDrawFont(this, polygons,\r
-                        strokesArray[i][0],\r
-                        strokesArray[i][1],\r
-                        strokesArray[i][2],\r
-                        strokesArray[i][3],\r
-                        strokesArray[i][4],\r
-                        strokesArray[i][5],\r
-                        strokesArray[i][6],\r
-                        strokesArray[i][7],\r
-                        strokesArray[i][8],\r
-                        strokesArray[i][9],\r
-                        strokesArray[i][10]);\r
-         }\r
-      }\r
-  }\r
-  Kage.prototype.makeGlyph2 = makeGlyph2;\r
-  \r
-  function makeGlyph3(data){ // void\r
-      var result = new Array();\r
-      if(data != ""){\r
-         var strokesArray = this.adjustKirikuchi(this.adjustUroko2(this.adjustUroko(this.adjustKakato(this.adjustTate(this.adjustMage(this.adjustHane(this.getEachStrokes(data))))))));\r
-         for(var i = 0; i < strokesArray.length; i++){\r
-             var polygons = new Polygons();\r
-             dfDrawFont(this, polygons,\r
-                        strokesArray[i][0],\r
-                        strokesArray[i][1],\r
-                        strokesArray[i][2],\r
-                        strokesArray[i][3],\r
-                        strokesArray[i][4],\r
-                        strokesArray[i][5],\r
-                        strokesArray[i][6],\r
-                        strokesArray[i][7],\r
-                        strokesArray[i][8],\r
-                        strokesArray[i][9],\r
-                        strokesArray[i][10]);\r
-             result.push(polygons);\r
-         }\r
-      }\r
-      return result;\r
-  }\r
-  Kage.prototype.makeGlyph3 = makeGlyph3;\r
-  \r
-  function getEachStrokes(glyphData){ // strokes array\r
-    var strokesArray = new Array();\r
-    var strokes = glyphData.split("$");\r
-    for(var i = 0; i < strokes.length; i++){\r
-      var columns = strokes[i].split(":");\r
-      if(Math.floor(columns[0]) != 99){\r
-        strokesArray.push([\r
-          Math.floor(columns[0]),\r
-          Math.floor(columns[1]),\r
-          Math.floor(columns[2]),\r
-          Math.floor(columns[3]),\r
-          Math.floor(columns[4]),\r
-          Math.floor(columns[5]),\r
-          Math.floor(columns[6]),\r
-          Math.floor(columns[7]),\r
-          Math.floor(columns[8]),\r
-          Math.floor(columns[9]),\r
-          Math.floor(columns[10])\r
-          ]);\r
-      } else {\r
-        var buhin = this.kBuhin.search(columns[7]);\r
-        if(buhin != ""){\r
-          strokesArray = strokesArray.concat(this.getEachStrokesOfBuhin(buhin,\r
-                                                  Math.floor(columns[3]),\r
-                                                  Math.floor(columns[4]),\r
-                                                  Math.floor(columns[5]),\r
-                                                  Math.floor(columns[6]),\r
-                                                  Math.floor(columns[1]),\r
-                                                  Math.floor(columns[2]),\r
-                                                  Math.floor(columns[9]),\r
-                                                  Math.floor(columns[10]))\r
-                            );\r
-        }\r
-      }\r
-    }\r
-    return strokesArray;\r
-  }\r
-  Kage.prototype.getEachStrokes = getEachStrokes;\r
-  \r
-  function getEachStrokesOfBuhin(buhin, x1, y1, x2, y2, sx, sy, sx2, sy2){\r
-    var temp = this.getEachStrokes(buhin);\r
-    var result = new Array();\r
-    var box = this.getBox(buhin);\r
-      if(sx != 0 || sy != 0){\r
-         if(sx > 100){\r
-             sx -= 200; // Ç¤°ÕÅÀ¥â¡¼¥É\r
-         } else {\r
-             sx2 = 0; // Ãæ¿´ÅÀ¥â¡¼¥É\r
-             sy2 = 0;\r
-         }\r
-      }\r
-    for(var i = 0; i < temp.length; i++){\r
-       if(sx != 0 || sy != 0){\r
-           temp[i][3] = stretch(sx, sx2, temp[i][3], box.minX, box.maxX);\r
-           temp[i][4] = stretch(sy, sy2, temp[i][4], box.minY, box.maxY);\r
-           temp[i][5] = stretch(sx, sx2, temp[i][5], box.minX, box.maxX);\r
-           temp[i][6] = stretch(sy, sy2,temp[i][6], box.minY, box.maxY);\r
-           if(temp[i][0] != 99){\r
-               temp[i][7] = stretch(sx, sx2, temp[i][7], box.minX, box.maxX);  \r
-               temp[i][8] = stretch(sy, sy2, temp[i][8], box.minY, box.maxY);\r
-               temp[i][9] = stretch(sx, sx2, temp[i][9], box.minX, box.maxX);\r
-               temp[i][10] = stretch(sy, sy2, temp[i][10], box.minY, box.maxY);\r
-           }\r
-       }\r
-      result.push([temp[i][0],\r
-                   temp[i][1],\r
-                   temp[i][2],\r
-                   x1 + temp[i][3] * (x2 - x1) / 200,\r
-                   y1 + temp[i][4] * (y2 - y1) / 200,\r
-                   x1 + temp[i][5] * (x2 - x1) / 200,\r
-                   y1 + temp[i][6] * (y2 - y1) / 200,\r
-                   x1 + temp[i][7] * (x2 - x1) / 200,\r
-                   y1 + temp[i][8] * (y2 - y1) / 200,\r
-                   x1 + temp[i][9] * (x2 - x1) / 200,\r
-                   y1 + temp[i][10] * (y2 - y1) / 200]);\r
-    }\r
-    return result;\r
-  }\r
-  Kage.prototype.getEachStrokesOfBuhin = getEachStrokesOfBuhin;\r
-  \r
-  function adjustHane(sa){ // strokesArray\r
-      for(var i = 0; i < sa.length; i++){\r
-         if((sa[i][0] == 1 || sa[i][0] == 2 || sa[i][0] == 6) && sa[i][2] == 4){\r
-             var lpx; // lastPointX\r
-             var lpy; // lastPointY\r
-             if(sa[i][0] == 1){\r
-                 lpx = sa[i][5];\r
-                 lpy = sa[i][6];\r
-             } else if(sa[i][0] == 2){\r
-                 lpx = sa[i][7];\r
-                 lpy = sa[i][8];\r
-             } else {\r
-                 lpx = sa[i][9];\r
-                 lpy = sa[i][10];\r
-             }\r
-             var mn = Infinity; // mostNear\r
-             if(lpx + 18 < 100){\r
-                 mn = lpx + 18;\r
-             }\r
-             for(var j = 0; j < sa.length; j++){\r
-                 if(i != j && sa[j][0] == 1 && sa[j][3] == sa[j][5] && sa[j][3] < lpx && sa[j][4] <= lpy && sa[j][6] >= lpy){\r
-                     if(lpx - sa[j][3] < 100){\r
-                         mn = Math.min(mn, lpx - sa[j][3]);\r
-                     }\r
-                 }\r
-             }\r
-             if(mn != Infinity){\r
-                 sa[i][2] += 700 - Math.floor(mn / 15) * 100; // 0-99 -> 0-700\r
-             }\r
-         }\r
-      }\r
-      return sa;\r
-  }\r
-  Kage.prototype.adjustHane = adjustHane;\r
-\r
-  function adjustUroko(strokesArray){ // strokesArray\r
-    for(var i = 0; i < strokesArray.length; i++){\r
-      if(strokesArray[i][0] == 1 && strokesArray[i][2] == 0){ // no operation for TATE\r
-        for(var k = 0; k < this.kAdjustUrokoLengthStep; k++){\r
-          var tx, ty, tlen;\r
-          if(strokesArray[i][4] == strokesArray[i][6]){ // YOKO\r
-            tx = strokesArray[i][5] - this.kAdjustUrokoLine[k];\r
-            ty = strokesArray[i][6] - 0.5;\r
-            tlen = strokesArray[i][5] - strokesArray[i][3];\r
-          } else {\r
-            var rad = Math.atan((strokesArray[i][6] - strokesArray[i][4]) / (strokesArray[i][5] - strokesArray[i][3]));\r
-            tx = strokesArray[i][5] - this.kAdjustUrokoLine[k] * Math.cos(rad) - 0.5 * Math.sin(rad);\r
-            ty = strokesArray[i][6] - this.kAdjustUrokoLine[k] * Math.sin(rad) - 0.5 * Math.cos(rad);\r
-            tlen = Math.sqrt((strokesArray[i][6] - strokesArray[i][4]) * (strokesArray[i][6] - strokesArray[i][4]) +\r
-                             (strokesArray[i][5] - strokesArray[i][3]) * (strokesArray[i][5] - strokesArray[i][3]));\r
-          }\r
-          if(tlen < this.kAdjustUrokoLength[k] ||\r
-             isCrossWithOthers(strokesArray, i, tx, ty, strokesArray[i][5], strokesArray[i][6])\r
-             ){\r
-            strokesArray[i][2] += (this.kAdjustUrokoLengthStep - k) * 100;\r
-            k = Infinity;\r
-          }\r
-        }\r
-      }\r
-    }\r
-    return strokesArray;\r
-  }\r
-  Kage.prototype.adjustUroko = adjustUroko;\r
-  \r
-  function adjustUroko2(strokesArray){ // strokesArray\r
-    for(var i = 0; i < strokesArray.length; i++){\r
-      if(strokesArray[i][0] == 1 && strokesArray[i][2] == 0 && strokesArray[i][4] == strokesArray[i][6]){\r
-        var pressure = 0;\r
-        for(var j = 0; j < strokesArray.length; j++){\r
-          if(i != j && (\r
-             (strokesArray[j][0] == 1 && strokesArray[j][4] == strokesArray[j][6] &&\r
-              !(strokesArray[i][3] + 1 > strokesArray[j][5] || strokesArray[i][5] - 1 < strokesArray[j][3]) &&\r
-              Math.abs(strokesArray[i][4] - strokesArray[j][4]) < this.kAdjustUroko2Length) ||\r
-             (strokesArray[j][0] == 3 && strokesArray[j][6] == strokesArray[j][8] &&\r
-              !(strokesArray[i][3] + 1 > strokesArray[j][7] || strokesArray[i][5] - 1 < strokesArray[j][5]) &&\r
-              Math.abs(strokesArray[i][4] - strokesArray[j][6]) < this.kAdjustUroko2Length)\r
-             )){\r
-            pressure += Math.pow(this.kAdjustUroko2Length - Math.abs(strokesArray[i][4] - strokesArray[j][6]), 1.1);\r
-          }\r
-        }\r
-        var result = Math.min(Math.floor(pressure / this.kAdjustUroko2Length), this.kAdjustUroko2Step) * 100;\r
-        if(strokesArray[i][2] < result){\r
-          strokesArray[i][2] = strokesArray[i][2] % 100 + Math.min(Math.floor(pressure / this.kAdjustUroko2Length), this.kAdjustUroko2Step) * 100;\r
-        }\r
-      }\r
-    }\r
-    return strokesArray;\r
-  }\r
-  Kage.prototype.adjustUroko2 = adjustUroko2;\r
-  \r
-  function adjustTate(strokesArray){ // strokesArray\r
-    for(var i = 0; i < strokesArray.length; i++){\r
-      if((strokesArray[i][0] == 1 || strokesArray[i][0] == 3 || strokesArray[i][0] == 7) && strokesArray[i][3] == strokesArray[i][5]){\r
-        for(var j = 0; j < strokesArray.length; j++){\r
-          if(i != j && (strokesArray[j][0] == 1 || strokesArray[j][0] == 3 || strokesArray[j][0] == 7) && strokesArray[j][3] == strokesArray[j][5] &&\r
-             !(strokesArray[i][4] + 1 > strokesArray[j][6] || strokesArray[i][6] - 1 < strokesArray[j][4]) &&\r
-             Math.abs(strokesArray[i][3] - strokesArray[j][3]) < this.kMinWidthT * this.kAdjustTateStep){\r
-            strokesArray[i][1] += (this.kAdjustTateStep - Math.floor(Math.abs(strokesArray[i][3] - strokesArray[j][3]) / this.kMinWidthT)) * 1000;\r
-            if(strokesArray[i][1] > this.kAdjustTateStep * 1000){\r
-              strokesArray[i][1] = strokesArray[i][1] % 1000 + this.kAdjustTateStep * 1000;\r
-            }\r
-          }\r
-        }\r
-      }\r
-    }\r
-    return strokesArray;\r
-  }\r
-  Kage.prototype.adjustTate = adjustTate;\r
-  \r
-  function adjustMage(strokesArray){ // strokesArray\r
-    for(var i = 0; i < strokesArray.length; i++){\r
-      if((strokesArray[i][0] == 3) && strokesArray[i][6] == strokesArray[i][8]){\r
-        for(var j = 0; j < strokesArray.length; j++){\r
-          if(i != j && (\r
-             (strokesArray[j][0] == 1 && strokesArray[j][4] == strokesArray[j][6] &&\r
-              !(strokesArray[i][5] + 1 > strokesArray[j][5] || strokesArray[i][7] - 1 < strokesArray[j][3]) &&\r
-              Math.abs(strokesArray[i][6] - strokesArray[j][4]) < this.kMinWidthT * this.kAdjustMageStep) ||\r
-             (strokesArray[j][0] == 3 && strokesArray[j][6] == strokesArray[j][8] &&\r
-              !(strokesArray[i][5] + 1 > strokesArray[j][7] || strokesArray[i][7] - 1 < strokesArray[j][5]) &&\r
-              Math.abs(strokesArray[i][6] - strokesArray[j][6]) < this.kMinWidthT * this.kAdjustMageStep)\r
-             )){\r
-            strokesArray[i][2] += (this.kAdjustMageStep - Math.floor(Math.abs(strokesArray[i][6] - strokesArray[j][6]) / this.kMinWidthT)) * 1000;\r
-            if(strokesArray[i][2] > this.kAdjustMageStep * 1000){\r
-              strokesArray[i][2] = strokesArray[i][2] % 1000 + this.kAdjustMageStep * 1000;\r
-            }\r
-          }\r
-        }\r
-      }\r
-    }\r
-    return strokesArray;\r
-  }\r
-  Kage.prototype.adjustMage = adjustMage;\r
-  \r
-  function adjustKirikuchi(strokesArray){ // strokesArray\r
-    for(var i = 0; i < strokesArray.length; i++){\r
-      if(strokesArray[i][0] == 2 && strokesArray[i][1] == 32 &&\r
-         strokesArray[i][3] > strokesArray[i][5] &&\r
-         strokesArray[i][4] < strokesArray[i][6]){\r
-        for(var j = 0; j < strokesArray.length; j++){ // no need to skip when i == j\r
-          if(strokesArray[j][0] == 1 &&\r
-             strokesArray[j][3] < strokesArray[i][3] && strokesArray[j][5] > strokesArray[i][3] &&\r
-             strokesArray[j][4] == strokesArray[i][4] && strokesArray[j][4] == strokesArray[j][6]){\r
-            strokesArray[i][1] = 132;\r
-            j = strokesArray.length;\r
-          }\r
-        }\r
-      }\r
-    }\r
-    return strokesArray;\r
-  }\r
-  Kage.prototype.adjustKirikuchi = adjustKirikuchi;\r
-  \r
-  function adjustKakato(strokesArray){ // strokesArray\r
-    for(var i = 0; i < strokesArray.length; i++){\r
-      if(strokesArray[i][0] == 1 &&\r
-         (strokesArray[i][2] == 13 || strokesArray[i][2] == 23)){\r
-        for(var k = 0; k < this.kAdjustKakatoStep; k++){\r
-          if(isCrossBoxWithOthers(strokesArray, i,\r
-                               strokesArray[i][5] - this.kAdjustKakatoRangeX / 2,\r
-                               strokesArray[i][6] + this.kAdjustKakatoRangeY[k],\r
-                               strokesArray[i][5] + this.kAdjustKakatoRangeX / 2,\r
-                               strokesArray[i][6] + this.kAdjustKakatoRangeY[k + 1])\r
-             | strokesArray[i][6] + this.kAdjustKakatoRangeY[k + 1] > 200 // adjust for baseline\r
-             | strokesArray[i][6] - strokesArray[i][4] < this.kAdjustKakatoRangeY[k + 1] // for thin box\r
-             ){\r
-            strokesArray[i][2] += (3 - k) * 100;\r
-            k = Infinity;\r
-          }\r
-        }\r
-      }\r
-    }\r
-    return strokesArray;\r
-  }\r
-  Kage.prototype.adjustKakato = adjustKakato;\r
-  \r
-  function getBox(glyph){ // minX, minY, maxX, maxY\r
-      var a = new Object();\r
-      a.minX = 200;\r
-      a.minY = 200;\r
-      a.maxX = 0;\r
-      a.maxY = 0;\r
-      \r
-      var strokes = this.getEachStrokes(glyph);\r
-      for(var i = 0; i < strokes.length; i++){\r
-         if(strokes[i][0] == 0){ continue; }\r
-         a.minX = Math.min(a.minX, strokes[i][3]);\r
-         a.maxX = Math.max(a.maxX, strokes[i][3]);\r
-         a.minY = Math.min(a.minY, strokes[i][4]);\r
-         a.maxY = Math.max(a.maxY, strokes[i][4]);\r
-         a.minX = Math.min(a.minX, strokes[i][5]);\r
-         a.maxX = Math.max(a.maxX, strokes[i][5]);\r
-         a.minY = Math.min(a.minY, strokes[i][6]);\r
-         a.maxY = Math.max(a.maxY, strokes[i][6]);\r
-         if(strokes[i][0] == 1){ continue; }\r
-         if(strokes[i][0] == 99){ continue; }\r
-         a.minX = Math.min(a.minX, strokes[i][7]);\r
-         a.maxX = Math.max(a.maxX, strokes[i][7]);\r
-         a.minY = Math.min(a.minY, strokes[i][8]);\r
-         a.maxY = Math.max(a.maxY, strokes[i][8]);\r
-         if(strokes[i][0] == 2){ continue; }\r
-         if(strokes[i][0] == 3){ continue; }\r
-         if(strokes[i][0] == 4){ continue; }\r
-         a.minX = Math.min(a.minX, strokes[i][9]);\r
-         a.maxX = Math.max(a.maxX, strokes[i][9]);\r
-         a.minY = Math.min(a.minY, strokes[i][10]);\r
-         a.maxY = Math.max(a.maxY, strokes[i][10]);\r
-      }\r
-      return a;\r
-  }\r
-  Kage.prototype.getBox = getBox;\r
-\r
-  function stretch(dp, sp, p, min, max){ // interger\r
-      var p1, p2, p3, p4;\r
-      if(p < sp + 100){\r
-         p1 = min;\r
-         p3 = min;\r
-         p2 = sp + 100;\r
-         p4 = dp + 100;\r
-      } else {\r
-         p1 = sp + 100;\r
-         p3 = dp + 100;\r
-         p2 = max;\r
-         p4 = max;\r
-      }\r
-      return Math.floor(((p - p1) / (p2 - p1)) * (p4 - p3) + p3);\r
-  }\r
-  Kage.prototype.stretch = stretch;\r
-\r
-  //properties\r
-  Kage.prototype.kMincho = 0;\r
-  Kage.prototype.kGothic = 1;\r
-  this.kShotai = this.kMincho;\r
-  \r
-  this.kRate = 100;\r
-  \r
-  if(size == 1){\r
-    this.kMinWidthY = 1.2;\r
-    this.kMinWidthT = 3.6;\r
-    this.kWidth = 3;\r
-    this.kKakato = 1.8;\r
-    this.kL2RDfatten = 1.1;\r
-    this.kMage = 6;\r
-    this.kUseCurve = 0;\r
-    \r
-    this.kAdjustKakatoL = ([8, 5, 3, 1]); // for KAKATO adjustment 000,100,200,300\r
-    this.kAdjustKakatoR = ([4, 3, 2, 1]); // for KAKATO adjustment 000,100,200,300\r
-    this.kAdjustKakatoRangeX = 12; // check area width\r
-    this.kAdjustKakatoRangeY = ([1, 11, 14, 18]); // 3 steps of checking\r
-    this.kAdjustKakatoStep = 3; // number of steps\r
-    \r
-    this.kAdjustUrokoX = ([14, 12, 9, 7]); // for UROKO adjustment 000,100,200,300\r
-    this.kAdjustUrokoY = ([7, 6, 5, 4]); // for UROKO adjustment 000,100,200,300\r
-    this.kAdjustUrokoLength = ([13, 21, 30]); // length for checking\r
-    this.kAdjustUrokoLengthStep = 3; // number of steps\r
-    this.kAdjustUrokoLine = ([13, 15, 18]); // check for crossing. corresponds to length\r
-  } else {\r
-    this.kMinWidthY = 2;\r
-    this.kMinWidthT = 6;\r
-    this.kWidth = 5;\r
-    this.kKakato = 3;\r
-    this.kL2RDfatten = 1.1;\r
-    this.kMage = 10;\r
-    this.kUseCurve = 0;\r
-    \r
-    this.kAdjustKakatoL = ([14, 9, 5, 2]); // for KAKATO adjustment 000,100,200,300\r
-    this.kAdjustKakatoR = ([8, 6, 4, 2]); // for KAKATO adjustment 000,100,200,300\r
-    this.kAdjustKakatoRangeX = 20; // check area width\r
-    this.kAdjustKakatoRangeY = ([1, 19, 24, 30]); // 3 steps of checking\r
-    this.kAdjustKakatoStep = 3; // number of steps\r
-    \r
-    this.kAdjustUrokoX = ([24, 20, 16, 12]); // for UROKO adjustment 000,100,200,300\r
-    this.kAdjustUrokoY = ([12, 11, 9, 8]); // for UROKO adjustment 000,100,200,300\r
-    this.kAdjustUrokoLength = ([22, 36, 50]); // length for checking\r
-    this.kAdjustUrokoLengthStep = 3; // number of steps\r
-    this.kAdjustUrokoLine = ([22, 26, 30]); // check for crossing. corresponds to length\r
-    \r
-    this.kAdjustUroko2Step = 3;\r
-    this.kAdjustUroko2Length = 40;\r
-    \r
-    this.kAdjustTateStep = 4;\r
-    \r
-    this.kAdjustMageStep = 5;\r
-  }\r
-  \r
-  this.kBuhin = new Buhin();\r
-  \r
-  return this;\r
-}\r
-\r
diff --git a/engine/kagecd.js b/engine/kagecd.js
deleted file mode 100644 (file)
index 914cdbb..0000000
+++ /dev/null
@@ -1,1244 +0,0 @@
-function cdDrawCurveU(kage, polygons, x1, y1, sx1, sy1, sx2, sy2, x2, y2, ta1, ta2){\r
-  var rad, t;\r
-  var x, y, v;\r
-  var ix, iy, ia, ib, ir;\r
-  var tt;\r
-  var delta;\r
-  var deltad;\r
-  var XX, XY, YX, YY;\r
-  var poly, poly2;\r
-  var hosomi;\r
-  var kMinWidthT, kMinWidthT2;\r
-  var a1, a2, opt1, opt2, opt3, opt4;\r
-  \r
-  if(kage.kShotai == kage.kMincho){ // mincho\r
-    a1 = ta1 % 1000;\r
-    a2 = ta2 % 100;\r
-    opt1 = Math.floor((ta1 % 10000) / 1000);\r
-    opt2 = Math.floor((ta2 % 1000) / 100);\r
-    opt3 = Math.floor(ta1 / 10000);\r
-    opt4 = Math.floor(ta2 / 1000);\r
-    \r
-    kMinWidthT = kage.kMinWidthT - opt1 / 2;\r
-    kMinWidthT2 = kage.kMinWidthT - opt4 / 2;\r
-    \r
-    switch(a1 % 100){\r
-    case 0:\r
-    case 7:\r
-      delta = -1 * kage.kMinWidthY * 0.5;\r
-      break;\r
-    case 1:\r
-    case 2: // ... must be 32\r
-    case 6:\r
-    case 22:\r
-    case 32: // changed\r
-      delta = 0;\r
-      break;\r
-    case 12:\r
-    //case 32:\r
-      delta = kage.kMinWidthY;\r
-      break;\r
-    default:\r
-      break;\r
-    }\r
-    \r
-    if(x1 == sx1){\r
-      if(y1 < sy1){ y1 = y1 - delta; }\r
-      else{ y1 = y1 + delta; }\r
-    }\r
-    else if(y1 == sy1){\r
-      if(x1 < sx1){ x1 = x1 - delta; }\r
-      else{ x1 = x1 + delta; }\r
-    }\r
-    else{\r
-      rad = Math.atan((sy1 - y1) / (sx1 - x1));\r
-      if(x1 < sx1){ v = 1; } else{ v = -1; }\r
-      x1 = x1 - delta * Math.cos(rad) * v;\r
-      y1 = y1 - delta * Math.sin(rad) * v;\r
-    }\r
-    \r
-    switch(a2 % 100){\r
-    case 0:\r
-    case 1:\r
-    case 7:\r
-    case 9:\r
-    case 15: // it can change to 15->5\r
-    case 14: // it can change to 14->4\r
-    case 17: // no need\r
-    case 5:\r
-      delta = 0;\r
-      break;\r
-    case 8: // get shorten for tail's circle\r
-      delta = -1 * kMinWidthT * 0.5;\r
-      break;\r
-    default:\r
-      break;\r
-    }\r
-    \r
-    if(sx2 == x2){\r
-      if(sy2 < y2){ y2 = y2 + delta; }\r
-      else{ y2 = y2 - delta; }\r
-    }\r
-    else if(sy2 == y2){\r
-      if(sx2 < x2){ x2 = x2 + delta; }\r
-      else{ x2 = x2 - delta; }\r
-    }\r
-    else{\r
-      rad = Math.atan((y2 - sy2) / (x2 - sx2));\r
-      if(sx2 < x2){ v = 1; } else{ v = -1; }\r
-      x2 = x2 + delta * Math.cos(rad) * v;\r
-      y2 = y2 + delta * Math.sin(rad) * v;\r
-    }\r
-    \r
-    hosomi = 0.5;\r
-    if(Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)) < 50){\r
-      hosomi += 0.4 * (1 - Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)) / 50);\r
-    }\r
-    \r
-    //---------------------------------------------------------------\r
-    \r
-    poly = new Polygon();\r
-    poly2 = new Polygon();\r
-    \r
-    if(sx1 == sx2 && sy1 == sy2){ // Spline\r
-      if(kage.kUseCurve){\r
-        // generating fatten curve -- begin\r
-        var kage2 = new Kage();\r
-        kage2.kMinWidthY = kage.kMinWidthY;\r
-        kage2.kMinWidthT = kMinWidthT;\r
-        kage2.kWidth = kage.kWidth;\r
-        kage2.kKakato = kage.kKakato;\r
-        kage2.kRate = 10;\r
-        \r
-        var curve = new Array(2); // L and R\r
-        get_candidate(kage2, curve, a1, a2, x1, y1, sx1, sy1, x2, y2, opt3, opt4);\r
-        \r
-        var dcl12_34 = new Array(2);\r
-        var dcr12_34 = new Array(2);\r
-        var dpl12_34 = new Array(2);\r
-        var dpr12_34 = new Array(2);\r
-        divide_curve(kage2, x1, y1, sx1, sy1, x2, y2, curve[0], dcl12_34, dpl12_34);\r
-        divide_curve(kage2, x1, y1, sx1, sy1, x2, y2, curve[1], dcr12_34, dpr12_34);\r
-        \r
-        var ncl1 = new Array(7);\r
-        var ncl2 = new Array(7);\r
-        find_offcurve(kage2, dcl12_34[0], dpl12_34[0][2], dpl12_34[0][3], ncl1);\r
-        find_offcurve(kage2, dcl12_34[1], dpl12_34[1][2], dpl12_34[1][3], ncl2);\r
-        \r
-        poly.push(ncl1[0], ncl1[1]);\r
-        poly.push(ncl1[2], ncl1[3], 1);\r
-        poly.push(ncl1[4], ncl1[5]);\r
-        poly.push(ncl2[2], ncl2[3], 1);\r
-        poly.push(ncl2[4], ncl2[5]);\r
-        \r
-        poly2.push(dcr12_34[0][0][0], dcr12_34[0][0][1]);\r
-        poly2.push(dpr12_34[0][2] - (ncl1[2] - dpl12_34[0][2]), dpl12_34[0][3] - (ncl1[3] - dpl12_34[0][3]), 1);\r
-        poly2.push(dcr12_34[0][dcr12_34[0].length - 1][0], dcr12_34[0][dcr12_34[0].length - 1][1]);\r
-        poly2.push(dpr12_34[1][2] - (ncl2[2] - dpl12_34[1][2]), dpl12_34[1][3] - (ncl2[3] - dpl12_34[1][3]), 1);\r
-        poly2.push(dcr12_34[1][dcr12_34[1].length - 1][0], dcr12_34[1][dcr12_34[1].length - 1][1]);\r
-        \r
-        poly2.reverse();\r
-        poly.concat(poly2);\r
-        polygons.push(poly);\r
-        // generating fatten curve -- end\r
-      } else {\r
-        for(tt = 0; tt <= 1000; tt = tt + kage.kRate){\r
-          t = tt / 1000;\r
-          \r
-          // calculate a dot\r
-          x = ((1.0 - t) * (1.0 - t) * x1 + 2.0 * t * (1.0 - t) * sx1 + t * t * x2);\r
-          y = ((1.0 - t) * (1.0 - t) * y1 + 2.0 * t * (1.0 - t) * sy1 + t * t * y2);\r
-          \r
-          // KATAMUKI of vector by BIBUN\r
-          ix = (x1 - 2.0 * sx1 + x2) * 2.0 * t + (-2.0 * x1 + 2.0 * sx1);\r
-          iy = (y1 - 2.0 * sy1 + y2) * 2.0 * t + (-2.0 * y1 + 2.0 * sy1);\r
-          \r
-          // line SUICHOKU by vector\r
-          if(ix != 0 && iy != 0){\r
-            ir = Math.atan(iy / ix * -1);\r
-            ia = Math.sin(ir) * (kMinWidthT);\r
-            ib = Math.cos(ir) * (kMinWidthT);\r
-          }\r
-          else if(ix == 0){\r
-            ia = kMinWidthT;\r
-            ib = 0;\r
-          }\r
-          else{\r
-            ia = 0;\r
-            ib = kMinWidthT;\r
-          }\r
-          \r
-          if(a1 == 7 && a2 == 0){ // L2RD: fatten\r
-            deltad = Math.pow(t, hosomi) * kage.kL2RDfatten;\r
-          }\r
-          else if(a1 == 7){\r
-            deltad = Math.pow(t, hosomi);\r
-          }\r
-          else if(a2 == 7){\r
-            deltad = Math.pow(1.0 - t, hosomi);\r
-          }\r
-          else if(opt3 > 0 || opt4 > 0){\r
-              deltad = ((kage.kMinWidthT - opt3 / 2) - (opt4 - opt3) / 2 * t) / kage.kMinWidthT;\r
-          }\r
-          else{ deltad = 1; }\r
-          \r
-          if(deltad < 0.15){\r
-            deltad = 0.15;\r
-          }\r
-          ia = ia * deltad;\r
-          ib = ib * deltad;\r
-          \r
-          //reverse if vector is going 2nd/3rd quadrants\r
-          if(ix <= 0){\r
-            ia = ia * -1;\r
-            ib = ib * -1;\r
-          }\r
-          \r
-          //copy to polygon structure\r
-          poly.push(x - ia, y - ib);\r
-          poly2.push(x + ia, y + ib);\r
-        }\r
-        \r
-        // suiheisen ni setsuzoku\r
-        if(a1 == 132){\r
-          var index = 0;\r
-          while(true){\r
-            if(poly2.array[index].y <= y1 && y1 <= poly2.array[index + 1].y){\r
-              break;\r
-            }\r
-            index++;\r
-          }\r
-          newx1 = poly2.array[index + 1].x + (poly2.array[index].x - poly2.array[index + 1].x) *\r
-            (poly2.array[index + 1].y - y1) / (poly2.array[index + 1].y - poly2.array[index].y);\r
-          newy1 = y1;\r
-          newx2 = poly.array[0].x + (poly.array[0].x - poly.array[1].x) * (poly.array[0].y - y1) /\r
-            (poly.array[1].y - poly.array[0].y);\r
-          newy2 = y1;\r
-          \r
-          for(var i = 0; i < index; i++){\r
-            poly2.shift();\r
-          }\r
-          poly2.set(0, newx1, newy1);\r
-          poly.unshift(newx2, newy2);\r
-        }\r
-        \r
-        // suiheisen ni setsuzoku 2\r
-        if(a1 == 22 && y1 > y2){\r
-          var index = 0;\r
-          while(true){\r
-            if(poly2.array[index].y <= y1 && y1 <= poly2.array[index + 1].y){\r
-              break;\r
-            }\r
-            index++;\r
-          }\r
-          newx1 = poly2.array[index + 1].x + (poly2.array[index].x - poly2.array[index + 1].x) *\r
-            (poly2.array[index + 1].y - y1) / (poly2.array[index + 1].y - poly2.array[index].y);\r
-          newy1 = y1;\r
-          newx2 = poly.array[0].x + (poly.array[0].x - poly.array[1].x - 1) * (poly.array[0].y - y1) /\r
-            (poly.array[1].y - poly.array[0].y);\r
-          newy2 = y1 + 1;\r
-          \r
-          for(var i = 0; i < index; i++){\r
-            poly2.shift();\r
-          }\r
-          poly2.set(0, newx1, newy1);\r
-          poly.unshift(newx2, newy2);\r
-        }\r
-        \r
-        poly2.reverse();\r
-        poly.concat(poly2);\r
-        polygons.push(poly);\r
-      }\r
-    } else { // Bezier\r
-      for(tt = 0; tt <= 1000; tt = tt + kage.kRate){\r
-        t = tt / 1000;\r
-        \r
-        // calculate a dot\r
-        x = (1.0 - t) * (1.0 - t) * (1.0 - t) * x1 + 3.0 * t * (1.0 - t) * (1.0 - t) * sx1 + 3 * t * t * (1.0 - t) * sx2 + t * t * t * x2;\r
-        y = (1.0 - t) * (1.0 - t) * (1.0 - t) * y1 + 3.0 * t * (1.0 - t) * (1.0 - t) * sy1 + 3 * t * t * (1.0 - t) * sy2 + t * t * t * y2;\r
-        // KATAMUKI of vector by BIBUN\r
-        ix = t * t * (-3 * x1 + 9 * sx1 + -9 * sx2 + 3 * x2) + t * (6 * x1 + -12 * sx1 + 6 * sx2) + -3 * x1 + 3 * sx1;\r
-        iy = t * t * (-3 * y1 + 9 * sy1 + -9 * sy2 + 3 * y2) + t * (6 * y1 + -12 * sy1 + 6 * sy2) + -3 * y1 + 3 * sy1;\r
-        \r
-        // line SUICHOKU by vector\r
-        if(ix != 0 && iy != 0){\r
-          ir = Math.atan(iy / ix * -1);\r
-          ia = Math.sin(ir) * (kMinWidthT);\r
-          ib = Math.cos(ir) * (kMinWidthT);\r
-        }\r
-        else if(ix == 0){\r
-          ia = kMinWidthT;\r
-          ib = 0;\r
-        }\r
-        else{\r
-          ia = 0;\r
-          ib = kMinWidthT;\r
-        }\r
-        \r
-        if(a1 == 7 && a2 == 0){ // L2RD: fatten\r
-          deltad = Math.pow(t, hosomi) * kage.kL2RDfatten;\r
-        }\r
-        else if(a1 == 7){\r
-          deltad = Math.pow(t, hosomi);\r
-          deltad = Math.pow(deltad, 0.7); // make fatten\r
-        }\r
-        else if(a2 == 7){\r
-          deltad = Math.pow(1.0 - t, hosomi);\r
-        }\r
-        else{ deltad = 1; }\r
-        \r
-        if(deltad < 0.15){\r
-          deltad = 0.15;\r
-        }\r
-        ia = ia * deltad;\r
-        ib = ib * deltad;\r
-        \r
-        //reverse if vector is going 2nd/3rd quadrants\r
-        if(ix <= 0){\r
-          ia = ia * -1;\r
-          ib = ib * -1;\r
-        }\r
-        \r
-        //copy to polygon structure\r
-        poly.push(x - ia, y - ib);\r
-        poly2.push(x + ia, y + ib);\r
-      }\r
-      \r
-      // suiheisen ni setsuzoku\r
-      if(a1 == 132){\r
-        var index = 0;\r
-        while(true){\r
-          if(poly2.array[index].y <= y1 && y1 <= poly2.array[index + 1].y){\r
-            break;\r
-          }\r
-          index++;\r
-        }\r
-        newx1 = poly2.array[index + 1].x + (poly2.array[index].x - poly2.array[index + 1].x) *\r
-          (poly2.array[index + 1].y - y1) / (poly2.array[index + 1].y - poly2.array[index].y);\r
-        newy1 = y1;\r
-        newx2 = poly.array[0].x + (poly.array[0].x - poly.array[1].x) * (poly.array[0].y - y1) /\r
-          (poly.array[1].y - poly.array[0].y);\r
-        newy2 = y1;\r
-        \r
-        for(var i = 0; i < index; i++){\r
-          poly2.shift();\r
-        }\r
-        poly2.set(0, newx1, newy1);\r
-        poly.unshift(newx2, newy2);\r
-      }\r
-      \r
-      // suiheisen ni setsuzoku 2\r
-      if(a1 == 22){\r
-        var index = 0;\r
-        while(true){\r
-          if(poly2.array[index].y <= y1 && y1 <= poly2.array[index + 1].y){\r
-            break;\r
-          }\r
-          index++;\r
-        }\r
-        newx1 = poly2.array[index + 1].x + (poly2.array[index].x - poly2.array[index + 1].x) *\r
-          (poly2.array[index + 1].y - y1) / (poly2.array[index + 1].y - poly2.array[index].y);\r
-        newy1 = y1;\r
-        newx2 = poly.array[0].x + (poly.array[0].x - poly.array[1].x - 1) * (poly.array[0].y - y1) /\r
-          (poly.array[1].y - poly.array[0].y);\r
-        newy2 = y1 + 1;\r
-        \r
-        for(var i = 0; i < index; i++){\r
-          poly2.shift();\r
-        }\r
-        poly2.set(0, newx1, newy1);\r
-        poly.unshift(newx2, newy2);\r
-      }\r
-      \r
-      poly2.reverse();\r
-      poly.concat(poly2);\r
-      polygons.push(poly);\r
-    }\r
-    \r
-    //process for head of stroke\r
-    rad = Math.atan((sy1 - y1) / (sx1 - x1));\r
-    if(x1 < sx1){ v = 1; } else{ v = -1; }\r
-    XX = Math.sin(rad) * v;\r
-    XY = Math.cos(rad) * v * -1;\r
-    YX = Math.cos(rad) * v;\r
-    YY = Math.sin(rad) * v;\r
-    \r
-    if(a1 == 12){\r
-      if(x1 == x2){\r
-        poly= new Polygon();\r
-        poly.push(x1 - kMinWidthT, y1);\r
-        poly.push(x1 + kMinWidthT, y1);\r
-        poly.push(x1 - kMinWidthT, y1 - kMinWidthT);\r
-        polygons.push(poly);\r
-      }\r
-      else{\r
-        poly = new Polygon();\r
-        poly.push(x1 - kMinWidthT * XX, y1 - kMinWidthT * XY);\r
-        poly.push(x1 + kMinWidthT * XX, y1 + kMinWidthT * XY);\r
-        poly.push(x1 - kMinWidthT * XX - kMinWidthT * YX, y1 - kMinWidthT * XY - kMinWidthT * YY);\r
-        polygons.push(poly);\r
-      }\r
-    }\r
-    \r
-    var type;\r
-    var pm = 0;\r
-    if(a1 == 0){\r
-      if(y1 <= y2){ //from up to bottom\r
-        type = (Math.atan2(Math.abs(y1 - sy1), Math.abs(x1 - sx1)) / Math.PI * 2 - 0.4);\r
-        if(type > 0){\r
-          type = type * 2;\r
-        } else {\r
-          type = type * 16;\r
-        }\r
-        if(type < 0){\r
-          pm = -1;\r
-        } else {\r
-          pm = 1;\r
-        }\r
-        if(x1 == sx1){\r
-          poly = new Polygon();\r
-          poly.push(x1 - kMinWidthT, y1 + 1);\r
-          poly.push(x1 + kMinWidthT, y1);\r
-          poly.push(x1 - kMinWidthT * pm, y1 - kage.kMinWidthY * type * pm);\r
-          //if(x1 > x2){\r
-          //  poly.reverse();\r
-          //}\r
-          polygons.push(poly);\r
-        }\r
-        else{\r
-          poly = new Polygon();\r
-          poly.push(x1 - kMinWidthT * XX + 1 * YX, y1 - kMinWidthT * XY + 1 * YY);\r
-          poly.push(x1 + kMinWidthT * XX, y1 + kMinWidthT * XY);\r
-          poly.push(x1 - kMinWidthT * pm * XX - kage.kMinWidthY * type * pm * YX, y1 - kMinWidthT * pm * XY - kage.kMinWidthY * type * pm * YY);\r
-          //if(x1 > x2){\r
-          //  poly.reverse();\r
-          //}\r
-          polygons.push(poly);\r
-        }\r
-      }\r
-      else{ //bottom to up\r
-        if(x1 == sx1){\r
-          poly = new Polygon();\r
-          poly.push(x1 - kMinWidthT, y1);\r
-          poly.push(x1 + kMinWidthT, y1);\r
-          poly.push(x1 + kMinWidthT, y1 - kage.kMinWidthY);\r
-          polygons.push(poly);\r
-        }\r
-        else{\r
-          poly = new Polygon();\r
-          poly.push(x1 - kMinWidthT * XX, y1 - kMinWidthT * XY);\r
-          poly.push(x1 + kMinWidthT * XX, y1 + kMinWidthT * XY);\r
-          poly.push(x1 + kMinWidthT * XX - kage.kMinWidthY * YX, y1 + kMinWidthT * XY - kage.kMinWidthY * YY);\r
-          //if(x1 < x2){\r
-          //  poly.reverse();\r
-          //}\r
-          polygons.push(poly);\r
-        }\r
-      }\r
-    }\r
-    \r
-    if(a1 == 22){ //box's up-right corner, any time same degree\r
-      poly = new Polygon();\r
-      poly.push(x1 - kMinWidthT, y1 - kage.kMinWidthY);\r
-      poly.push(x1, y1 - kage.kMinWidthY - kage.kWidth);\r
-      poly.push(x1 + kMinWidthT + kage.kWidth, y1 + kage.kMinWidthY);\r
-      poly.push(x1 + kMinWidthT, y1 + kMinWidthT - 1);\r
-      poly.push(x1 - kMinWidthT, y1 + kMinWidthT + 4);\r
-      polygons.push(poly);\r
-    }\r
-    \r
-    if(a1 == 0){ //beginning of the stroke\r
-      if(y1 <= y2){ //from up to bottom\r
-        if(pm > 0){\r
-          type = 0;\r
-        }\r
-        var move = kage.kMinWidthY * type * pm;\r
-        if(x1 == sx1){\r
-          poly = new Polygon();\r
-          poly.push(x1 + kMinWidthT, y1 - move);\r
-          poly.push(x1 + kMinWidthT * 1.5, y1 + kage.kMinWidthY - move);\r
-          poly.push(x1 + kMinWidthT - 2, y1 + kage.kMinWidthY * 2 + 1);\r
-          polygons.push(poly);\r
-        }\r
-        else{\r
-          poly = new Polygon();\r
-          poly.push(x1 + kMinWidthT * XX - move * YX,\r
-                    y1 + kMinWidthT * XY - move * YY);\r
-          poly.push(x1 + kMinWidthT * 1.5 * XX + (kage.kMinWidthY - move * 1.2) * YX,\r
-                    y1 + kMinWidthT * 1.5 * XY + (kage.kMinWidthY - move * 1.2) * YY);\r
-          poly.push(x1 + (kMinWidthT - 2) * XX + (kage.kMinWidthY * 2 - move * 0.8 + 1) * YX,\r
-                    y1 + (kMinWidthT - 2) * XY + (kage.kMinWidthY * 2 - move * 0.8 + 1) * YY);\r
-          //if(x1 < x2){\r
-          //  poly.reverse();\r
-          //}\r
-          polygons.push(poly);\r
-        }\r
-      }\r
-      else{ //from bottom to up\r
-        if(x1 == sx1){\r
-          poly = new Polygon();\r
-          poly.push(x1 - kMinWidthT, y1);\r
-          poly.push(x1 - kMinWidthT * 1.5, y1 + kage.kMinWidthY);\r
-          poly.push(x1 - kMinWidthT * 0.5, y1 + kage.kMinWidthY * 3);\r
-          polygons.push(poly);\r
-        }\r
-        else{\r
-          poly = new Polygon();\r
-          poly.push(x1 - kMinWidthT * XX, y1 - kMinWidthT * XY);\r
-          poly.push(x1 - kMinWidthT * 1.5 * XX + kage.kMinWidthY * YX, y1 + kage.kMinWidthY * YY - kMinWidthT * 1.5 * XY);\r
-          poly.push(x1 - kMinWidthT * 0.5 * XX + kage.kMinWidthY * 3 * YX, y1 + kage.kMinWidthY * 3 * YY - kMinWidthT * 0.5 * XY);\r
-          //if(x1 < x2){\r
-          //  poly.reverse();\r
-          //}\r
-          polygons.push(poly);\r
-        }\r
-      }\r
-    }\r
-    \r
-    //process for tail\r
-    rad = Math.atan((y2 - sy2) / (x2 - sx2));\r
-    if(sx2 < x2){ v = 1; } else{ v = -1; }\r
-    YX = Math.sin(rad) * v * -1;\r
-    YY = Math.cos(rad) * v;\r
-    XX = Math.cos(rad) * v;\r
-    XY = Math.sin(rad) * v;\r
-    \r
-    if(a2 == 1 || a2 == 8 || a2 == 15){ //the last filled circle ... it can change 15->5\r
-      if(sx2 == x2){\r
-        poly = new Polygon();\r
-        if(kage.kUseCurve){\r
-          // by curve path\r
-          poly.push(x2 - kMinWidthT2, y2);\r
-          poly.push(x2 - kMinWidthT2 * 0.9, y2 + kMinWidthT2 * 0.9, 1);\r
-          poly.push(x2, y2 + kMinWidthT2);\r
-          poly.push(x2 + kMinWidthT2 * 0.9, y2 + kMinWidthT2 * 0.9, 1);\r
-          poly.push(x2 + kMinWidthT2, y2);\r
-        } else {\r
-          // by polygon\r
-          poly.push(x2 - kMinWidthT2, y2);\r
-          poly.push(x2 - kMinWidthT2 * 0.7, y2 + kMinWidthT2 * 0.7);\r
-          poly.push(x2, y2 + kMinWidthT2);\r
-          poly.push(x2 + kMinWidthT2 * 0.7, y2 + kMinWidthT2 * 0.7);\r
-          poly.push(x2 + kMinWidthT2, y2);\r
-        }\r
-        polygons.push(poly);\r
-      }\r
-      else if(sy2 == y2){\r
-        poly = new Polygon();\r
-        if(kage.kUseCurve){\r
-          // by curve path\r
-          poly.push(x2, y2 - kMinWidthT2);\r
-          poly.push(x2 + kMinWidthT2 * 0.9, y2 - kMinWidthT2 * 0.9, 1);\r
-          poly.push(x2 + kMinWidthT2, y2);\r
-          poly.push(x2 + kMinWidthT2 * 0.9, y2 + kMinWidthT2 * 0.9, 1);\r
-          poly.push(x2, y2 + kMinWidthT2);\r
-        } else {\r
-          // by polygon\r
-          poly.push(x2, y2 - kMinWidthT2);\r
-          poly.push(x2 + kMinWidthT2 * 0.7, y2 - kMinWidthT2 * 0.7);\r
-          poly.push(x2 + kMinWidthT2, y2);\r
-          poly.push(x2 + kMinWidthT2 * 0.7, y2 + kMinWidthT2 * 0.7);\r
-          poly.push(x2, y2 + kMinWidthT2);\r
-        }\r
-        polygons.push(poly);\r
-      }\r
-      else{\r
-        poly = new Polygon();\r
-        if(kage.kUseCurve){\r
-          poly.push(x2 + Math.sin(rad) * kMinWidthT2 * v, y2 - Math.cos(rad) * kMinWidthT2 * v);\r
-          poly.push(x2 + Math.cos(rad) * kMinWidthT2 * 0.9 * v + Math.sin(rad) * kMinWidthT2 * 0.9 * v,\r
-                    y2 + Math.sin(rad) * kMinWidthT2 * 0.9 * v - Math.cos(rad) * kMinWidthT2 * 0.9 * v, 1);\r
-          poly.push(x2 + Math.cos(rad) * kMinWidthT2 * v, y2 + Math.sin(rad) * kMinWidthT2 * v);\r
-          poly.push(x2 + Math.cos(rad) * kMinWidthT2 * 0.9 * v - Math.sin(rad) * kMinWidthT2 * 0.9 * v,\r
-                    y2 + Math.sin(rad) * kMinWidthT2 * 0.9 * v + Math.cos(rad) * kMinWidthT2 * 0.9 * v, 1);\r
-          poly.push(x2 - Math.sin(rad) * kMinWidthT2 * v, y2 + Math.cos(rad) * kMinWidthT2 * v);\r
-        } else {\r
-          poly.push(x2 + Math.sin(rad) * kMinWidthT2 * v, y2 - Math.cos(rad) * kMinWidthT2 * v);\r
-          poly.push(x2 + Math.cos(rad) * kMinWidthT2 * 0.7 * v + Math.sin(rad) * kMinWidthT2 * 0.7 * v,\r
-                    y2 + Math.sin(rad) * kMinWidthT2 * 0.7 * v - Math.cos(rad) * kMinWidthT2 * 0.7 * v);\r
-          poly.push(x2 + Math.cos(rad) * kMinWidthT2 * v, y2 + Math.sin(rad) * kMinWidthT2 * v);\r
-          poly.push(x2 + Math.cos(rad) * kMinWidthT2 * 0.7 * v - Math.sin(rad) * kMinWidthT2 * 0.7 * v,\r
-                    y2 + Math.sin(rad) * kMinWidthT2 * 0.7 * v + Math.cos(rad) * kMinWidthT2 * 0.7 * v);\r
-          poly.push(x2 - Math.sin(rad) * kMinWidthT2 * v, y2 + Math.cos(rad) * kMinWidthT2 * v);\r
-        }\r
-        polygons.push(poly);\r
-      }\r
-    }\r
-    \r
-    if(a2 == 9 || (a1 == 7 && a2 == 0)){ // Math.sinnyu & L2RD Harai ... no need for a2=9\r
-      var type = (Math.atan2(Math.abs(y2 - sy2), Math.abs(x2 - sx2)) / Math.PI * 2 - 0.6);\r
-      if(type > 0){\r
-        type = type * 8;\r
-      } else {\r
-        type = type * 3;\r
-      }\r
-      var pm = 0;\r
-      if(type < 0){\r
-        pm = -1;\r
-      } else {\r
-        pm = 1;\r
-      }\r
-      if(sy2 == y2){\r
-        poly = new Polygon();\r
-        poly.push(x2, y2 + kMinWidthT * kage.kL2RDfatten);\r
-        poly.push(x2, y2 - kMinWidthT * kage.kL2RDfatten);\r
-        poly.push(x2 + kMinWidthT * kage.kL2RDfatten * Math.abs(type), y2 + kMinWidthT * kage.kL2RDfatten * pm);\r
-        polygons.push(poly);\r
-      }\r
-      else{\r
-        poly = new Polygon();\r
-        poly.push(x2 + kMinWidthT * kage.kL2RDfatten * YX, y2 + kMinWidthT * kage.kL2RDfatten * YY);\r
-        poly.push(x2 - kMinWidthT * kage.kL2RDfatten * YX, y2 - kMinWidthT * kage.kL2RDfatten * YY);\r
-        poly.push(x2 + kMinWidthT * kage.kL2RDfatten * Math.abs(type) * XX + kMinWidthT * kage.kL2RDfatten * pm * YX,\r
-                  y2 + kMinWidthT * kage.kL2RDfatten * Math.abs(type) * XY + kMinWidthT * kage.kL2RDfatten * pm * YY);\r
-        polygons.push(poly);\r
-      }\r
-    }\r
-    \r
-    if(a2 == 15){ //jump up ... it can change 15->5\r
-      // anytime same degree\r
-      poly = new Polygon();\r
-      if(y1 < y2){\r
-        poly.push(x2, y2 - kMinWidthT + 1);\r
-        poly.push(x2 + 2, y2 - kMinWidthT - kage.kWidth * 5);\r
-        poly.push(x2, y2 - kMinWidthT - kage.kWidth * 5);\r
-        poly.push(x2 - kMinWidthT, y2 - kMinWidthT + 1);\r
-      } else {\r
-        poly.push(x2, y2 + kMinWidthT - 1);\r
-        poly.push(x2 - 2, y2 + kMinWidthT + kage.kWidth * 5);\r
-        poly.push(x2, y2 + kMinWidthT + kage.kWidth * 5);\r
-        poly.push(x2 + kMinWidthT, y2 + kMinWidthT - 1);\r
-      }\r
-      polygons.push(poly);\r
-    }\r
-    \r
-    if(a2 == 14){ //jump to left, allways go left\r
-      poly = new Polygon();\r
-      poly.push(x2, y2);\r
-      poly.push(x2, y2 - kMinWidthT);\r
-      poly.push(x2 - kage.kWidth * 4 * Math.min(1 - opt2 / 10, Math.pow(kMinWidthT / kage.kMinWidthT, 3)), y2 - kMinWidthT);\r
-      poly.push(x2 - kage.kWidth * 4 * Math.min(1 - opt2 / 10, Math.pow(kMinWidthT / kage.kMinWidthT, 3)), y2 - kMinWidthT * 0.5);\r
-      //poly.reverse();\r
-      polygons.push(poly);\r
-    }\r
-  }\r
-  else{ //gothic\r
-    if(a1 % 10 == 2){\r
-      if(x1 == sx1){\r
-        if(y1 < sy1){ y1 = y1 - kage.kWidth; } else{ y1 = y1 + kage.kWidth; }\r
-      }\r
-      else if(y1 == sy1){\r
-        if(x1 < sx1){ x1 = x1 - kage.kWidth; } else{ x1 = x1 + kage.kWidth; }\r
-      }\r
-      else{\r
-        rad = Math.atan((sy1 - y1) / (sx1 - x1));\r
-        if(x1 < sx1){ v = 1; } else{ v = -1; }\r
-        x1 = x1 - kage.kWidth * Math.cos(rad) * v;\r
-        y1 = y1 - kage.kWidth * Math.sin(rad) * v;\r
-      }\r
-    }\r
-    \r
-    if(a1 % 10 == 3){\r
-      if(x1 == sx1){\r
-        if(y1 < sy1){\r
-          y1 = y1 - kage.kWidth * kage.kKakato;\r
-        }\r
-        else{\r
-          y1 = y1 + kage.kWidth * kage.kKakato;\r
-        }\r
-      }\r
-      else if(y1 == sy1){\r
-        if(x1 < sx1){\r
-          x1 = x1 - kage.kWidth * kage.kKakato;\r
-        }\r
-        else{\r
-          x1 = x1 + kage.kWidth * kage.kKakato;\r
-        }\r
-      }\r
-      else{\r
-        rad = Math.atan((sy1 - y1) / (sx1 - x1));\r
-        if(x1 < sx1){ v = 1; } else{ v = -1; }\r
-        x1 = x1 - kage.kWidth * Math.cos(rad) * v * kage.kKakato;\r
-        y1 = y1 - kage.kWidth * Math.sin(rad) * v * kage.kKakato;\r
-      }\r
-    }\r
-    if(a2 % 10 == 2){\r
-      if(sx2 == x2){\r
-        if(sy2 < y2){ y2 = y2 + kage.kWidth; } else{ y2 = y2 - kage.kWidth; }\r
-      }\r
-      else if(sy2 == y2){\r
-        if(sx2 < x2){ x2 = x2 + kage.kWidth; } else{ x2 = x2 - kage.kWidth; }\r
-      }\r
-      else{\r
-        rad = Math.atan((y2 - sy2) / (x2 - sx2));\r
-        if(sx2 < x2){ v = 1; } else{ v = -1; }\r
-        x2 = x2 + kage.kWidth * Math.cos(rad) * v;\r
-        y2 = y2 + kage.kWidth * Math.sin(rad) * v;\r
-      }\r
-    }\r
-    \r
-    if(a2 % 10 == 3){\r
-      if(sx2 == x2){\r
-        if(sy2 < y2){\r
-          y2 = y2 + kage.kWidth * kage.kKakato;\r
-        }\r
-        else{\r
-          y2 = y2 - kage.kWidth * kage.kKakato;\r
-        }\r
-      }\r
-      else if(sy2 == y2){\r
-        if(sx2 < x2){\r
-          x2 = x2 + kage.kWidth * kage.kKakato;\r
-        }\r
-        else{\r
-          x2 = x2 - kage.kWidth * kage.kKakato;\r
-        }\r
-      }\r
-      else{\r
-        rad = Math.atan((y2 - sy2) / (x2 - sx2));\r
-        if(sx2 < x2){ v = 1; } else{ v = -1; }\r
-        x2 = x2 + kage.kWidth * Math.cos(rad) * v * kage.kKakato;\r
-        y2 = y2 + kage.kWidth * Math.sin(rad) * v * kage.kKakato;\r
-      }\r
-    }\r
-    \r
-    poly = new Polygon();\r
-    poly2 = new Polygon();\r
-    \r
-    for(tt = 0; tt <= 1000; tt = tt + kage.kRate){\r
-      t = tt / 1000;\r
-      \r
-      if(sx1 == sx2 && sy1 == sy2){\r
-        //calculating each point\r
-        x = ((1.0 - t) * (1.0 - t) * x1 + 2.0 * t * (1.0 - t) * sx1 + t * t * x2);\r
-        y = ((1.0 - t) * (1.0 - t) * y1 + 2.0 * t * (1.0 - t) * sy1 + t * t * y2);\r
-        \r
-        //SESSEN NO KATAMUKI NO KEISAN(BIBUN)\r
-        ix = (x1 - 2.0 * sx1 + x2) * 2.0 * t + (-2.0 * x1 + 2.0 * sx1);\r
-        iy = (y1 - 2.0 * sy1 + y2) * 2.0 * t + (-2.0 * y1 + 2.0 * sy1);\r
-      } else {\r
-      }\r
-      //SESSEN NI SUICHOKU NA CHOKUSEN NO KEISAN\r
-      if(kage.kShotai == kage.kMincho){ //always false ?\r
-        if(ix != 0 && iy != 0){\r
-          ir = Math.atan(iy / ix * -1.0);\r
-          ia = Math.sin(ir) * kage.kMinWidthT;\r
-          ib = Math.cos(ir) * kage.kMinWidthT;\r
-        }\r
-        else if(ix == 0){\r
-          ia = kage.kMinWidthT;\r
-          ib = 0;\r
-        }\r
-        else{\r
-          ia = 0;\r
-          ib = kage.kMinWidthT;\r
-        }\r
-        ia = ia * Math.sqrt(1.0 - t);\r
-        ib = ib * Math.sqrt(1.0 - t);\r
-      }\r
-      else{\r
-        if(ix != 0 && iy != 0){\r
-          ir = Math.atan(iy / ix * -1.0);\r
-          ia = Math.sin(ir) * kage.kWidth;\r
-          ib = Math.cos(ir) * kage.kWidth;\r
-        }\r
-        else if(ix == 0){\r
-          ia = kage.kWidth;\r
-          ib = 0;\r
-        }\r
-        else{\r
-          ia = 0;\r
-          ib = kage.kWidth;\r
-        }\r
-      }\r
-      \r
-      //reverse if vector is going 2nd/3rd quadrants\r
-      if(ix <= 0){\r
-        ia = ia * -1;\r
-        ib = ib * -1;\r
-      }\r
-      \r
-      //save to polygon\r
-      poly.push(x - ia, y - ib);\r
-      poly2.push(x + ia, y + ib);\r
-    }\r
-    \r
-    poly2.reverse();\r
-    poly.concat(poly2);\r
-    polygons.push(poly);\r
-  }\r
-}\r
-\r
-function cdDrawBezier(kage, polygons, x1, y1, x2, y2, x3, y3, x4, y4, a1, a2){\r
-  cdDrawCurveU(kage, polygons, x1, y1, x2, y2, x3, y3, x4, y4, a1, a2);\r
-}\r
-\r
-function cdDrawCurve(kage, polygons, x1, y1, x2, y2, x3, y3, a1, a2){\r
-  cdDrawCurveU(kage, polygons, x1, y1, x2, y2, x2, y2, x3, y3, a1, a2);\r
-}\r
-\r
-function cdDrawLine(kage, polygons, tx1, ty1, tx2, ty2, ta1, ta2){\r
-  var rad;\r
-  var v, x1, y1, x2, y2;\r
-  var a1, a2, opt1, opt2;\r
-  var XX, XY, YX, YY;\r
-  var poly;\r
-  var kMinWidthT;\r
-  \r
-  if(kage.kShotai == kage.kMincho){ //mincho\r
-    x1 = tx1;\r
-    y1 = ty1;\r
-    x2 = tx2;\r
-    y2 = ty2;\r
-    a1 = ta1 % 1000;\r
-    a2 = ta2 % 100;\r
-    opt1 = Math.floor(ta1 / 1000);\r
-    opt2 = Math.floor(ta2 / 100);\r
-    \r
-    kMinWidthT = kage.kMinWidthT - opt1 / 2;\r
-    \r
-    if(x1 == x2){ //if TATE stroke, use y-axis\r
-      poly = new Polygon(4);\r
-      switch(a1){\r
-      case 0:\r
-        poly.set(3, x1 - kMinWidthT, y1 - kage.kMinWidthY / 2);\r
-        poly.set(0, x1 + kMinWidthT, y1 + kage.kMinWidthY / 2);\r
-        break;\r
-      case 1:\r
-      case 6: //... no need\r
-      case 22:\r
-        poly.set(3, x1 - kMinWidthT, y1);\r
-        poly.set(0, x1 + kMinWidthT, y1);\r
-        break;\r
-      case 12:\r
-        poly.set(3, x1 - kMinWidthT, y1 - kage.kMinWidthY - kMinWidthT);\r
-        poly.set(0, x1 + kMinWidthT, y1 - kage.kMinWidthY);\r
-        break;\r
-      case 32:\r
-        poly.set(3, x1 - kMinWidthT, y1 - kage.kMinWidthY);\r
-        poly.set(0, x1 + kMinWidthT, y1 - kage.kMinWidthY);\r
-        break;\r
-      }\r
-      \r
-      switch(a2){\r
-      case 0:\r
-        if(a1 == 6){ //KAGI's tail ... no need\r
-          poly.set(2, x2 - kMinWidthT, y2);\r
-          poly.set(1, x2 + kMinWidthT, y2);\r
-        }\r
-        else{\r
-          poly.set(2, x2 - kMinWidthT, y2 + kMinWidthT / 2);\r
-          poly.set(1, x2 + kMinWidthT, y2 - kMinWidthT / 2);\r
-        }\r
-        break;\r
-      case 1:\r
-        poly.set(2, x2 - kMinWidthT, y2);\r
-        poly.set(1, x2 + kMinWidthT, y2);\r
-        break;\r
-      case 13:\r
-        poly.set(2, x2 - kMinWidthT, y2 + kage.kAdjustKakatoL[opt2] + kMinWidthT);\r
-        poly.set(1, x2 + kMinWidthT, y2 + kage.kAdjustKakatoL[opt2]);\r
-        break;\r
-      case 23:\r
-        poly.set(2, x2 - kMinWidthT, y2 + kage.kAdjustKakatoR[opt2] + kMinWidthT);\r
-        poly.set(1, x2 + kMinWidthT, y2 + kage.kAdjustKakatoR[opt2]);\r
-        break;\r
-      case 32:\r
-        poly.set(2, x2 - kMinWidthT, y2 + kage.kMinWidthY);\r
-        poly.set(1, x2 + kMinWidthT, y2 + kage.kMinWidthY);\r
-        break;\r
-      }\r
-      \r
-      polygons.push(poly);\r
-      \r
-      if(a1 == 22){ //box's right top corner\r
-        poly = new Polygon();\r
-        poly.push(x1 - kMinWidthT, y1 - kage.kMinWidthY);\r
-        poly.push(x1, y1 - kage.kMinWidthY - kage.kWidth);\r
-        poly.push(x1 + kMinWidthT + kage.kWidth, y1 + kage.kMinWidthY);\r
-        poly.push(x1 + kMinWidthT, y1 + kMinWidthT);\r
-        poly.push(x1 - kMinWidthT, y1);\r
-        polygons.push(poly);\r
-      }\r
-      \r
-      if(a1 == 0){ //beginning of the stroke\r
-        poly = new Polygon();\r
-        poly.push(x1 + kMinWidthT, y1 + kage.kMinWidthY * 0.5);\r
-        poly.push(x1 + kMinWidthT + kMinWidthT * 0.5, y1 + kage.kMinWidthY * 0.5 + kage.kMinWidthY);\r
-        poly.push(x1 + kMinWidthT - 2, y1 + kage.kMinWidthY * 0.5 + kage.kMinWidthY * 2 + 1);\r
-        polygons.push(poly);\r
-      }\r
-      \r
-      if((a1 == 6 && a2 == 0) || a2 == 1){ //KAGI NO YOKO BOU NO SAIGO NO MARU ... no need only used at 1st=yoko\r
-        poly = new Polygon();\r
-       if(kage.kUseCurve){\r
-          poly.push(x2 - kMinWidthT, y2);\r
-          poly.push(x2 - kMinWidthT * 0.9, y2 + kMinWidthT * 0.9, 1);\r
-          poly.push(x2, y2 + kMinWidthT);\r
-          poly.push(x2 + kMinWidthT * 0.9, y2 + kMinWidthT * 0.9, 1);\r
-          poly.push(x2 + kMinWidthT, y2);\r
-        } else {\r
-          poly.push(x2 - kMinWidthT, y2);\r
-          poly.push(x2 - kMinWidthT * 0.6, y2 + kMinWidthT * 0.6);\r
-          poly.push(x2, y2 + kMinWidthT);\r
-          poly.push(x2 + kMinWidthT * 0.6, y2 + kMinWidthT * 0.6);\r
-          poly.push(x2 + kMinWidthT, y2);\r
-        }\r
-        //poly.reverse(); // for fill-rule\r
-        polygons.push(poly);\r
-      }\r
-    }\r
-    else if(y1 == y2){ //if it is YOKO stroke, use x-axis\r
-      if(a1 == 6){ //if it is KAGI's YOKO stroke, get bold\r
-        poly = new Polygon();\r
-        poly.push(x1, y1 - kMinWidthT);\r
-        poly.push(x2, y2 - kMinWidthT);\r
-        poly.push(x2, y2 + kMinWidthT);\r
-        poly.push(x1, y1 + kMinWidthT);\r
-        polygons.push(poly);\r
-        \r
-        if(a2 == 1 || a2 == 0 || a2 == 5){ // no need a2=1\r
-          //KAGI NO YOKO BOU NO SAIGO NO MARU\r
-          poly = new Polygon();\r
-          if(kage.kUseCurve){\r
-            if(x1 < x2){\r
-              poly.push(x2, y2 - kMinWidthT);\r
-              poly.push(x2 + kMinWidthT * 0.9, y2 - kMinWidthT * 0.9, 1);\r
-              poly.push(x2 + kMinWidthT, y2);\r
-              poly.push(x2 + kMinWidthT * 0.9, y2 + kMinWidthT * 0.9, 1);\r
-              poly.push(x2, y2 + kMinWidthT);\r
-            } else {\r
-              poly.push(x2, y2 - kMinWidthT);\r
-              poly.push(x2 - kMinWidthT * 0.9, y2 - kMinWidthT * 0.9, 1);\r
-              poly.push(x2 - kMinWidthT, y2);\r
-              poly.push(x2 - kMinWidthT * 0.9, y2 + kMinWidthT * 0.9, 1);\r
-              poly.push(x2, y2 + kMinWidthT);\r
-            }\r
-          } else {\r
-            if(x1 < x2){\r
-              poly.push(x2, y2 - kMinWidthT);\r
-              poly.push(x2 + kMinWidthT * 0.6, y2 - kMinWidthT * 0.6);\r
-              poly.push(x2 + kMinWidthT, y2);\r
-              poly.push(x2 + kMinWidthT * 0.6, y2 + kMinWidthT * 0.6);\r
-              poly.push(x2, y2 + kMinWidthT);\r
-            } else {\r
-              poly.push(x2, y2 - kMinWidthT);\r
-              poly.push(x2 - kMinWidthT * 0.6, y2 - kMinWidthT * 0.6);\r
-              poly.push(x2 - kMinWidthT, y2);\r
-              poly.push(x2 - kMinWidthT * 0.6, y2 + kMinWidthT * 0.6);\r
-              poly.push(x2, y2 + kMinWidthT);\r
-            }\r
-          }\r
-          polygons.push(poly);\r
-        }\r
-        \r
-        if(a2 == 5){\r
-          //KAGI NO YOKO BOU NO HANE\r
-          poly = new Polygon();\r
-          if(x1 < x2){\r
-            poly.push(x2, y2 - kMinWidthT + 1);\r
-            poly.push(x2 + 2, y2 - kMinWidthT - kage.kWidth * (4 * (1 - opt1 / kage.kAdjustMageStep) + 1));\r
-            poly.push(x2, y2 - kMinWidthT - kage.kWidth * (4 * (1 - opt1 / kage.kAdjustMageStep) + 1));\r
-            poly.push(x2 - kMinWidthT, y2 - kMinWidthT + 1);\r
-          } else {\r
-            poly.push(x2, y2 - kMinWidthT + 1);\r
-            poly.push(x2 - 2, y2 - kMinWidthT - kage.kWidth * (4 * (1 - opt1 / kage.kAdjustMageStep) + 1));\r
-            poly.push(x2, y2 - kMinWidthT - kage.kWidth * (4 * (1 - opt1 / kage.kAdjustMageStep) + 1));\r
-            poly.push(x2 + kMinWidthT, y2 - kMinWidthT + 1);\r
-          }\r
-          //poly.reverse(); // for fill-rule\r
-          polygons.push(poly);\r
-        }\r
-      }\r
-      else{\r
-        //always same\r
-        poly = new Polygon(4);\r
-        poly.set(0, x1, y1 - kage.kMinWidthY);\r
-        poly.set(1, x2, y2 - kage.kMinWidthY);\r
-        poly.set(2, x2, y2 + kage.kMinWidthY);\r
-        poly.set(3, x1, y1 + kage.kMinWidthY);\r
-        polygons.push(poly);\r
-        \r
-        //UROKO\r
-        if(a2 == 0){\r
-          poly = new Polygon();\r
-          poly.push(x2, y2 - kage.kMinWidthY);\r
-          poly.push(x2 - kage.kAdjustUrokoX[opt2], y2);\r
-          poly.push(x2 - kage.kAdjustUrokoX[opt2] / 2, y2 - kage.kAdjustUrokoY[opt2]);\r
-          polygons.push(poly);\r
-        }\r
-      }\r
-    }\r
-    else{ //for others, use x-axis\r
-      rad = Math.atan((y2 - y1) / (x2 - x1));\r
-      if((Math.abs(y2 - y1) < Math.abs(x2 - x1)) && (a1 != 6) && (a2 != 6) && !(x1 > x2)){ //ASAI KAUDO\r
-        //always same\r
-        poly = new Polygon(4);\r
-        poly.set(0, x1 + Math.sin(rad) * kage.kMinWidthY, y1 - Math.cos(rad) * kage.kMinWidthY);\r
-        poly.set(1, x2 + Math.sin(rad) * kage.kMinWidthY, y2 - Math.cos(rad) * kage.kMinWidthY);\r
-        poly.set(2, x2 - Math.sin(rad) * kage.kMinWidthY, y2 + Math.cos(rad) * kage.kMinWidthY);\r
-        poly.set(3, x1 - Math.sin(rad) * kage.kMinWidthY, y1 + Math.cos(rad) * kage.kMinWidthY);\r
-        polygons.push(poly);\r
-        \r
-        //UROKO\r
-        if(a2 == 0){\r
-          poly = new Polygon();\r
-          poly.push(x2 + Math.sin(rad) * kage.kMinWidthY, y2 - Math.cos(rad) * kage.kMinWidthY);\r
-          poly.push(x2 - Math.cos(rad) * kage.kAdjustUrokoX[opt2], y2 - Math.sin(rad) * kage.kAdjustUrokoX[opt2]);\r
-          poly.push(x2 - Math.cos(rad) * kage.kAdjustUrokoX[opt2] / 2 + Math.sin(rad) * kage.kAdjustUrokoX[opt2] / 2, y2 - Math.sin(rad) * kage.kAdjustUrokoY[opt2] - Math.cos(rad) * kage.kAdjustUrokoY[opt2]);\r
-          polygons.push(poly);\r
-        }\r
-      }\r
-      \r
-      else{ //KAKUDO GA FUKAI or KAGI NO YOKO BOU\r
-        if(x1 > x2){ v = -1; } else{ v = 1; }\r
-        poly = new Polygon(4);\r
-        switch(a1){\r
-        case 0:\r
-          poly.set(0, x1 + Math.sin(rad) * kMinWidthT * v + kage.kMinWidthY * Math.cos(rad) * 0.5 * v,\r
-                   y1 - Math.cos(rad) * kMinWidthT * v + kage.kMinWidthY * Math.sin(rad) * 0.5 * v);\r
-          poly.set(3, x1 - Math.sin(rad) * kMinWidthT * v - kage.kMinWidthY * Math.cos(rad) * 0.5 * v,\r
-                   y1 + Math.cos(rad) * kMinWidthT * v - kage.kMinWidthY * Math.sin(rad) * 0.5 * v);\r
-          break;\r
-        case 1:\r
-        case 6:\r
-          poly.set(0, x1 + Math.sin(rad) * kMinWidthT * v, y1 - Math.cos(rad) * kMinWidthT * v);\r
-          poly.set(3, x1 - Math.sin(rad) * kMinWidthT * v, y1 + Math.cos(rad) * kMinWidthT * v);\r
-          break;\r
-        case 12:\r
-          poly.set(0, x1 + Math.sin(rad) * kMinWidthT * v - kage.kMinWidthY * Math.cos(rad) * v,\r
-                   y1 - Math.cos(rad) * kMinWidthT * v - kage.kMinWidthY * Math.sin(rad) * v);\r
-          poly.set(3, x1 - Math.sin(rad) * kMinWidthT * v - (kMinWidthT + kage.kMinWidthY) * Math.cos(rad) * v,\r
-                   y1 + Math.cos(rad) * kMinWidthT * v - (kMinWidthT + kage.kMinWidthY) * Math.sin(rad) * v);\r
-          break;\r
-        case 22:\r
-          poly.set(0, x1 + (kMinWidthT * v + 1) / Math.sin(rad), y1 + 1);\r
-          poly.set(3, x1 - (kMinWidthT * v) / Math.sin(rad), y1);\r
-          break;\r
-        case 32:\r
-          poly.set(0, x1 + (kMinWidthT * v) / Math.sin(rad), y1);\r
-          poly.set(3, x1 - (kMinWidthT * v) / Math.sin(rad), y1);\r
-          break;\r
-        }\r
-        \r
-        switch(a2){\r
-        case 0:\r
-          if(a1 == 6){\r
-            poly.set(1, x2 + Math.sin(rad) * kMinWidthT * v, y2 - Math.cos(rad) * kMinWidthT * v);\r
-            poly.set(2, x2 - Math.sin(rad) * kMinWidthT * v, y2 + Math.cos(rad) * kMinWidthT * v);\r
-          }\r
-          else{\r
-            poly.set(1, x2 + Math.sin(rad) * kMinWidthT * v - kMinWidthT * 0.5 * Math.cos(rad) * v,\r
-                     y2 - Math.cos(rad) * kMinWidthT * v - kMinWidthT * 0.5 * Math.sin(rad) * v);\r
-            poly.set(2, x2 - Math.sin(rad) * kMinWidthT * v + kMinWidthT * 0.5 * Math.cos(rad) * v,\r
-                     y2 + Math.cos(rad) * kMinWidthT * v + kMinWidthT * 0.5 * Math.sin(rad) * v);\r
-          }\r
-          break;\r
-        case 1: // is needed?\r
-        case 5:\r
-          poly.set(1, x2 + Math.sin(rad) * kMinWidthT * v, y2 - Math.cos(rad) * kMinWidthT * v);\r
-          poly.set(2, x2 - Math.sin(rad) * kMinWidthT * v, y2 + Math.cos(rad) * kMinWidthT * v);\r
-          break;\r
-        case 13:\r
-          poly.set(1, x2 + Math.sin(rad) * kMinWidthT * v + kage.kAdjustKakatoL[opt2] * Math.cos(rad) * v,\r
-                   y2 - Math.cos(rad) * kMinWidthT * v + kage.kAdjustKakatoL[opt2] * Math.sin(rad) * v);\r
-          poly.set(2, x2 - Math.sin(rad) * kMinWidthT * v + (kage.kAdjustKakatoL[opt2] + kMinWidthT) * Math.cos(rad) * v,\r
-                   y2 + Math.cos(rad) * kMinWidthT * v + (kage.kAdjustKakatoL[opt2] + kMinWidthT) * Math.sin(rad) * v);\r
-          break;\r
-        case 23:\r
-          poly.set(1, x2 + Math.sin(rad) * kMinWidthT * v + kage.kAdjustKakatoR[opt2] * Math.cos(rad) * v,\r
-                   y2 - Math.cos(rad) * kMinWidthT * v + kage.kAdjustKakatoR[opt2] * Math.sin(rad) * v);\r
-          poly.set(2,\r
-                   x2 - Math.sin(rad) * kMinWidthT * v + (kage.kAdjustKakatoR[opt2] + kMinWidthT) * Math.cos(rad) * v,\r
-                   y2 + Math.cos(rad) * kMinWidthT * v + (kage.kAdjustKakatoR[opt2] + kMinWidthT) * Math.sin(rad) * v);\r
-          break;\r
-        case 32:\r
-          poly.set(1, x2 + (kMinWidthT * v) / Math.sin(rad), y2);\r
-          poly.set(2, x2 - (kMinWidthT * v) / Math.sin(rad), y2);\r
-          break;\r
-        }\r
-        \r
-        polygons.push(poly);\r
-        \r
-        if((a1 == 6) && (a2 == 0 || a2 == 5)){ //KAGI NO YOKO BOU NO SAIGO NO MARU\r
-          poly = new Polygon();\r
-          if(kage.kUseCurve){\r
-            poly.push(x2 + Math.sin(rad) * kMinWidthT * v, y2 - Math.cos(rad) * kMinWidthT * v);\r
-            poly.push(x2 - Math.cos(rad) * kMinWidthT * 0.9 * v + Math.sin(rad) * kMinWidthT * 0.9 * v,\r
-                      y2 + Math.sin(rad) * kMinWidthT * 0.9 * v - Math.cos(rad) * kMinWidthT * 0.9 * v, 1);\r
-            poly.push(x2 + Math.cos(rad) * kMinWidthT * v, y2 + Math.sin(rad) * kMinWidthT * v);\r
-            poly.push(x2 + Math.cos(rad) * kMinWidthT * 0.9 * v - Math.sin(rad) * kMinWidthT * 0.9 * v,\r
-                      y2 + Math.sin(rad) * kMinWidthT * 0.9 * v + Math.cos(rad) * kMinWidthT * 0.9 * v, 1);\r
-            poly.push(x2 - Math.sin(rad) * kMinWidthT * v, y2 + Math.cos(rad) * kMinWidthT * v);\r
-          } else {\r
-            poly.push(x2 + Math.sin(rad) * kMinWidthT * v, y2 - Math.cos(rad) * kMinWidthT * v);\r
-            poly.push(x2 + Math.cos(rad) * kMinWidthT * 0.8 * v + Math.sin(rad) * kMinWidthT * 0.6 * v,\r
-                      y2 + Math.sin(rad) * kMinWidthT * 0.8 * v - Math.cos(rad) * kMinWidthT * 0.6 * v);\r
-            poly.push(x2 + Math.cos(rad) * kMinWidthT * v, y2 + Math.sin(rad) * kMinWidthT * v);\r
-            poly.push(x2 + Math.cos(rad) * kMinWidthT * 0.8 * v - Math.sin(rad) * kMinWidthT * 0.6 * v,\r
-                      y2 + Math.sin(rad) * kMinWidthT * 0.8 * v + Math.cos(rad) * kMinWidthT * 0.6 * v);\r
-            poly.push(x2 - Math.sin(rad) * kMinWidthT * v, y2 + Math.cos(rad) * kMinWidthT * v);\r
-          }\r
-          polygons.push(poly);\r
-        }\r
-        \r
-        if(a1 == 6 && a2 == 5){\r
-          //KAGI NO YOKO BOU NO HANE\r
-          poly = new Polygon();\r
-          if(x1 < x2){\r
-            poly.push(x2 + (kMinWidthT - 1) * Math.sin(rad) * v, y2 - (kMinWidthT - 1) * Math.cos(rad) * v);\r
-            poly.push(x2 + 2 * Math.cos(rad) * v + (kMinWidthT + kage.kWidth * 5) * Math.sin(rad) * v,\r
-                      y2 + 2 * Math.sin(rad) * v - (kMinWidthT + kage.kWidth * 5) * Math.cos(rad) * v);\r
-            poly.push(x2 + (kMinWidthT + kage.kWidth * 5) * Math.sin(rad) * v,\r
-                      y2 - (kMinWidthT + kage.kWidth * 5) * Math.cos(rad) * v);\r
-            poly.push(x2 + (kMinWidthT - 1) * Math.sin(rad) * v - kMinWidthT * Math.cos(rad) * v,\r
-                      y2 - (kMinWidthT - 1) * Math.cos(rad) * v - kMinWidthT * Math.sin(rad) * v);\r
-          } else {\r
-            poly.push(x2 - (kMinWidthT - 1) * Math.sin(rad) * v, y2 + (kMinWidthT - 1) * Math.cos(rad) * v);\r
-            poly.push(x2 + 2 * Math.cos(rad) * v - (kMinWidthT + kage.kWidth * 5) * Math.sin(rad) * v,\r
-                      y2 + 2 * Math.sin(rad) * v + (kMinWidthT + kage.kWidth * 5) * Math.cos(rad) * v);\r
-            poly.push(x2 - (kMinWidthT + kage.kWidth * 5) * Math.sin(rad) * v,\r
-                      y2 + (kMinWidthT + kage.kWidth * 5) * Math.cos(rad) * v);\r
-            poly.push(x2 + (kMinWidthT - 1) * Math.sin(rad) * v - kMinWidthT * Math.cos(rad) * v,\r
-                      y2 - (kMinWidthT - 1) * Math.cos(rad) * v - kMinWidthT * Math.sin(rad) * v);\r
-          }\r
-          polygons.push(poly);\r
-        }\r
-        \r
-        if(a1 == 22){ //SHIKAKU MIGIUE UROKO NANAME DEMO MASSUGU MUKI\r
-          poly = new Polygon();\r
-          poly.push(x1 - kMinWidthT, y1 - kage.kMinWidthY);\r
-          poly.push(x1, y1 - kage.kMinWidthY - kage.kWidth);\r
-          poly.push(x1 + kMinWidthT + kage.kWidth, y1 + kage.kMinWidthY);\r
-          poly.push(x1 + kMinWidthT, y1 + kMinWidthT - 1);\r
-          poly.push(x1 - kMinWidthT, y1 + kMinWidthT + 4);\r
-          polygons.push(poly);\r
-        }\r
-        \r
-        XX = Math.sin(rad) * v;\r
-        XY = Math.cos(rad) * v * -1;\r
-        YX = Math.cos(rad) * v;\r
-        YY = Math.sin(rad) * v;\r
-        \r
-        if(a1 == 0){ //beginning of the storke\r
-          poly = new Polygon();\r
-          poly.push(x1 + kMinWidthT * XX + (kage.kMinWidthY * 0.5) * YX,\r
-                    y1 + kMinWidthT * XY + (kage.kMinWidthY * 0.5) * YY);\r
-          poly.push(x1 + (kMinWidthT + kMinWidthT * 0.5) * XX + (kage.kMinWidthY * 0.5 + kage.kMinWidthY) * YX,\r
-                    y1 + (kMinWidthT + kMinWidthT * 0.5) * XY + (kage.kMinWidthY * 0.5 + kage.kMinWidthY) * YY);\r
-          poly.push(x1 + kMinWidthT * XX + (kage.kMinWidthY * 0.5 + kage.kMinWidthY * 2) * YX - 2 * XX,\r
-                    y1 + kMinWidthT * XY + (kage.kMinWidthY * 0.5 + kage.kMinWidthY * 2) * YY + 1 * XY);\r
-          polygons.push(poly);\r
-        }\r
-      }\r
-    }\r
-  }\r
-  else{ //gothic\r
-    if(tx1 == tx2){ //if TATE stroke, use y-axis\r
-      if(ty1 > ty2){\r
-        x1 = tx2;\r
-        y1 = ty2;\r
-        x2 = tx1;\r
-        y2 = ty1;\r
-        a1 = ta2;\r
-        a2 = ta1;\r
-      }\r
-      else{\r
-        x1 = tx1;\r
-        y1 = ty1;\r
-        x2 = tx2;\r
-        y2 = ty2;\r
-        a1 = ta1;\r
-        a2 = ta2;\r
-      }\r
-      \r
-      if(a1 % 10 == 2){ y1 = y1 - kage.kWidth; }\r
-      if(a2 % 10 == 2){ y2 = y2 + kage.kWidth; }\r
-      if(a1 % 10 == 3){ y1 = y1 - kage.kWidth * kage.kKakato; }\r
-      if(a2 % 10 == 3){ y2 = y2 + kage.kWidth * kage.kKakato; }\r
-      \r
-      poly = new Polygon();\r
-      poly.push(x1 - kage.kWidth, y1);\r
-      poly.push(x2 - kage.kWidth, y2);\r
-      poly.push(x2 + kage.kWidth, y2);\r
-      poly.push(x1 + kage.kWidth, y1);\r
-      //poly.reverse(); // for fill-rule\r
-      \r
-      polygons.push(poly);\r
-    }\r
-    else if(ty1 == ty2){ //if YOKO stroke, use x-axis\r
-      if(tx1 > tx2){\r
-        x1 = tx2;\r
-        y1 = ty2;\r
-        x2 = tx1;\r
-        y2 = ty1;\r
-        a1 = ta2;\r
-        a2 = ta1;\r
-      }\r
-      else{\r
-        x1 = tx1;\r
-        y1 = ty1;\r
-        x2 = tx2;\r
-        y2 = ty2;\r
-        a1 = ta1;\r
-        a2 = ta2;\r
-      }\r
-      if(a1 % 10 == 2){ x1 = x1 - kage.kWidth; }\r
-      if(a2 % 10 == 2){ x2 = x2 + kage.kWidth; }\r
-      if(a1 % 10 == 3){ x1 = x1 - kage.kWidth * kage.kKakato; }\r
-      if(a2 % 10 == 3){ x2 = x2 + kage.kWidth * kage.kKakato; }\r
-      \r
-      poly = new Polygon();\r
-      poly.push(x1, y1 - kage.kWidth);\r
-      poly.push(x2, y2 - kage.kWidth);\r
-      poly.push(x2, y2 + kage.kWidth);\r
-      poly.push(x1, y1 + kage.kWidth);\r
-      \r
-      polygons.push(poly);\r
-    }\r
-    else{ //for others, use x-axis\r
-      if(tx1 > tx2){\r
-        x1 = tx2;\r
-        y1 = ty2;\r
-        x2 = tx1;\r
-        y2 = ty1;\r
-        a1 = ta2;\r
-        a2 = ta1;\r
-      }\r
-      else{\r
-        x1 = tx1;\r
-        y1 = ty1;\r
-        x2 = tx2;\r
-        y2 = ty2;\r
-        a1 = ta1;\r
-        a2 = ta2;\r
-      }\r
-      rad = Math.atan((y2 - y1) / (x2 - x1));\r
-      if(a1 % 10 == 2){\r
-        x1 = x1 - kage.kWidth * Math.cos(rad);\r
-        y1 = y1 - kage.kWidth * Math.sin(rad);\r
-      }\r
-      if(a2 % 10 == 2){\r
-        x2 = x2 + kage.kWidth * Math.cos(rad);\r
-        y2 = y2 + kage.kWidth * Math.sin(rad);\r
-      }\r
-      if(a1 % 10 == 3){\r
-        x1 = x1 - kage.kWidth * Math.cos(rad) * kage.kKakato;\r
-        y1 = y1 - kage.kWidth * Math.sin(rad) * kage.kKakato;\r
-      }\r
-      if(a2 % 10 == 3){\r
-        x2 = x2 + kage.kWidth * Math.cos(rad) * kage.kKakato;\r
-        y2 = y2 + kage.kWidth * Math.sin(rad) * kage.kKakato;\r
-      }\r
-      \r
-      //SUICHOKU NO ICHI ZURASHI HA Math.sin TO Math.cos NO IREKAE + x-axis MAINASU KA\r
-      poly = new Polygon();\r
-      poly.push(x1 + Math.sin(rad) * kage.kWidth, y1 - Math.cos(rad) * kage.kWidth);\r
-      poly.push(x2 + Math.sin(rad) * kage.kWidth, y2 - Math.cos(rad) * kage.kWidth);\r
-      poly.push(x2 - Math.sin(rad) * kage.kWidth, y2 + Math.cos(rad) * kage.kWidth);\r
-      poly.push(x1 - Math.sin(rad) * kage.kWidth, y1 + Math.cos(rad) * kage.kWidth);\r
-      \r
-      polygons.push(poly);\r
-    }\r
-  }\r
-}\r
diff --git a/engine/kagedf.js b/engine/kagedf.js
deleted file mode 100644 (file)
index 92e42bf..0000000
+++ /dev/null
@@ -1,447 +0,0 @@
-function dfDrawFont(kage, polygons, a1, a2, a3, x1, y1, x2, y2, x3, y3, x4, y4){\r
-  var tx1, tx2, tx3, tx4, ty1, ty2, ty3, ty4, v;\r
-  var rad;\r
-       \r
-  if(kage.kShotai == kage.kMincho){\r
-    switch(a1 % 100){ // ... no need to divide\r
-    case 0:\r
-      break;\r
-    case 1:\r
-      if(a3 % 100 == 4){\r
-        if(x1 == x2){\r
-          if(y1 < y2){ v = 1; } else{ v = -1; }\r
-          tx1 = x2;\r
-          ty1 = y2 - kage.kMage * v;\r
-        }\r
-        else if(y1 == y2){ // ... no need\r
-          if(x1 < x2){ v = 1; } else{ v = -1; }\r
-          tx1 = x2 - kage.kMage * v;\r
-          ty1 = y2;\r
-        }\r
-        else{\r
-          rad = Math.atan((y2 - y1) / (x2 - x1));\r
-          if(x1 < x2){ v = 1; } else{v = -1; }\r
-          tx1 = x2 - kage.kMage * Math.cos(rad) * v;\r
-          ty1 = y2 - kage.kMage * Math.sin(rad) * v;\r
-        }\r
-        cdDrawLine(kage, polygons, x1, y1, tx1, ty1, a2, 1);\r
-        cdDrawCurve(kage, polygons, tx1, ty1, x2, y2, x2 - kage.kMage * (((kage.kAdjustTateStep + 4) - Math.floor(a2 / 1000)) / (kage.kAdjustTateStep + 4)), y2, 1 + (a2 - a2 % 1000), a3 + 10);\r
-      }\r
-      else{\r
-        cdDrawLine(kage, polygons, x1, y1, x2, y2, a2, a3);\r
-      }\r
-      break;\r
-    case 2:\r
-    //case 12: // ... no need\r
-      if(a3 % 100 == 4){\r
-        if(x2 == x3){\r
-          tx1 = x3;\r
-          ty1 = y3 - kage.kMage;\r
-        }\r
-        else if(y2 == y3){\r
-          tx1 = x3 - kage.kMage;\r
-          ty1 = y3;\r
-        }\r
-        else{\r
-          rad = Math.atan((y3 - y2) / (x3 - x2));\r
-          if(x2 < x3){ v = 1; } else{ v = -1; }\r
-          tx1 = x3 - kage.kMage * Math.cos(rad) * v;\r
-          ty1 = y3 - kage.kMage * Math.sin(rad) * v;\r
-        }\r
-        cdDrawCurve(kage, polygons, x1, y1, x2, y2, tx1, ty1, a2, 1);\r
-        cdDrawCurve(kage, polygons, tx1, ty1, x3, y3, x3 - kage.kMage, y3, 1, a3 + 10);\r
-      }\r
-      else if(a3 == 5){\r
-        cdDrawCurve(kage, polygons, x1, y1, x2, y2, x3, y3, a2, 15);\r
-      }\r
-      else{\r
-        cdDrawCurve(kage, polygons, x1, y1, x2, y2, x3, y3, a2, a3);\r
-      }\r
-      break;\r
-    case 3:\r
-      if(a3 % 1000 == 5){\r
-        if(x1 == x2){\r
-          if(y1 < y2){ v = 1; } else{ v = -1; }\r
-          tx1 = x2;\r
-          ty1 = y2 - kage.kMage * v;\r
-        }\r
-        else if(y1 == y2){\r
-          if(x1 < x2){ v = 1; } else{ v = -1; }\r
-          tx1 = x2 - kage.kMage * v;\r
-          ty1 = y2;\r
-        }\r
-        else{\r
-          rad = Math.atan((y2 - y1) / (x2 - x1));\r
-          if(x1 < x2){ v = 1; } else{ v = -1; }\r
-          tx1 = x2 - kage.kMage * Math.cos(rad) * v;\r
-          ty1 = y2 - kage.kMage * Math.sin(rad) * v;\r
-        }\r
-        if(x2 == x3){\r
-          if(y2 < y3){ v = 1; } else{ v = -1; }\r
-          tx2 = x2;\r
-          ty2 = y2 + kage.kMage * v;\r
-        }\r
-        else if(y2 == y3){\r
-          if(x2 < x3){ v = 1; } else { v = -1; }\r
-          tx2 = x2 + kage.kMage * v;\r
-          ty2 = y2;\r
-        }\r
-        else{\r
-          rad = Math.atan((y3 - y2) / (x3 - x2));\r
-          if(x2 < x3){ v = 1; } else{ v = -1; }\r
-          tx2 = x2 + kage.kMage * Math.cos(rad) * v;\r
-          ty2 = y2 + kage.kMage * Math.sin(rad) * v;\r
-        }\r
-        tx3 = x3;\r
-        ty3 = y3;\r
-        \r
-        cdDrawLine(kage, polygons, x1, y1, tx1, ty1, a2, 1);\r
-        cdDrawCurve(kage, polygons, tx1, ty1, x2, y2, tx2, ty2, 1 + (a2 - a2 % 1000) * 10, 1 + (a3 - a3 % 1000));\r
-        if((x2 < x3 && tx3 - tx2 > 0) || (x2 > x3 && tx2 - tx3 > 0)){ // for closer position\r
-          cdDrawLine(kage, polygons, tx2, ty2, tx3, ty3, 6 + (a3 - a3 % 1000), 5); // bolder by force\r
-        }\r
-      }\r
-      else{\r
-        if(x1 == x2){\r
-          if(y1 < y2){ v = 1; } else { v = -1; }\r
-          tx1 = x2;\r
-          ty1 = y2 - kage.kMage * v;\r
-        }\r
-        else if(y1 == y2){\r
-          if(x1 < x2){ v = 1; } else{ v = -1; }\r
-          tx1 = x2 - kage.kMage * v;\r
-          ty1 = y2;\r
-        }\r
-        else{\r
-          rad = Math.atan((y2 - y1) / (x2 - x1));\r
-          if(x1 < x2){ v = 1; } else{ v = -1; }\r
-          tx1 = x2 - kage.kMage * Math.cos(rad) * v;\r
-          ty1 = y2 - kage.kMage * Math.sin(rad) * v;\r
-        }\r
-        if(x2 == x3){\r
-          if(y2 < y3){ v = 1; } else{ v = -1; }\r
-          tx2 = x2;\r
-          ty2 = y2 + kage.kMage * v;\r
-        }\r
-        else if(y2 == y3){\r
-          if(x2 < x3){ v = 1; } else{ v = -1; }\r
-          tx2 = x2 + kage.kMage * v;\r
-          ty2 = y2;\r
-        }\r
-        else{\r
-          rad = Math.atan((y3 - y2) / (x3 - x2));\r
-          if(x2 < x3){ v = 1; } else{ v = -1; }\r
-          tx2 = x2 + kage.kMage * Math.cos(rad) * v;\r
-          ty2 = y2 + kage.kMage * Math.sin(rad) * v;\r
-        }\r
-        cdDrawLine(kage, polygons, x1, y1, tx1, ty1, a2, 1);\r
-        cdDrawCurve(kage, polygons, tx1, ty1, x2, y2, tx2, ty2, 1 + (a2 - a2 % 1000) * 10, 1 + (a3 - a3 % 1000));\r
-        cdDrawLine(kage, polygons, tx2, ty2, x3, y3, 6 + (a3 - a3 % 1000), a3); // bolder by force\r
-      }\r
-      break;\r
-    case 12:\r
-      cdDrawCurve(kage, polygons, x1, y1, x2, y2, x3, y3, a2, 1);\r
-      cdDrawLine(kage, polygons, x3, y3, x4, y4, 6, a3);\r
-      break;\r
-    case 4:\r
-      rate = 6;\r
-      if((x3 - x2) * (x3 - x2) + (y3 - y2) * (y3 - y2) < 14400){ // smaller than 120 x 120\r
-        rate = Math.sqrt((x3 - x2) * (x3 - x2) + (y3 - y2) * (y3 - y2)) / 120 * 6;\r
-      }\r
-      if(a3 == 5){\r
-        if(x1 == x2){\r
-          if(y1 < y2){ v = 1; } else{ v = -1; }\r
-          tx1 = x2;\r
-          ty1 = y2 - kage.kMage * v * rate;\r
-        }\r
-        else if(y1 == y2){\r
-          if(x1 < x2){ v = 1; } else{ v = -1; }\r
-          tx1 = x2 - kage.kMage * v * rate;\r
-          ty1 = y2;\r
-        }\r
-        else{\r
-          rad = Math.atan((y2 - y1) / (x2 - x1));\r
-          if(x1 < x2){ v = 1; } else{ v = -1; }\r
-          tx1 = x2 - kage.kMage * Math.cos(rad) * v * rate;\r
-          ty1 = y2 - kage.kMage * Math.sin(rad) * v * rate;\r
-        }\r
-        if(x2 == x3){\r
-          if(y2 < y3){ v = 1; } else{ v = -1; }\r
-          tx2 = x2;\r
-          ty2 = y2 + kage.kMage * v * rate;\r
-        }\r
-        else if(y2 == y3){\r
-          if(x2 < x3){ v = 1; } else { v = -1; }\r
-          tx2 = x2 + kage.kMage * v * rate;\r
-          ty2 = y2;\r
-        }\r
-        else{\r
-          rad = Math.atan((y3 - y2) / (x3 - x2));\r
-          if(x2 < x3){ v = 1; } else{ v = -1; }\r
-          tx2 = x2 + kage.kMage * Math.cos(rad) * v * rate;\r
-          ty2 = y2 + kage.kMage * Math.sin(rad) * v * rate;\r
-        }\r
-        tx3 = x3;\r
-        ty3 = y3;\r
-        \r
-        cdDrawLine(kage, polygons, x1, y1, tx1, ty1, a2, 1);\r
-        cdDrawCurve(kage, polygons, tx1, ty1, x2, y2, tx2, ty2, 1, 1);\r
-        if(tx3 - tx2 > 0){ // for closer position\r
-          cdDrawLine(kage, polygons, tx2, ty2, tx3, ty3, 6, 5); // bolder by force\r
-        }\r
-      }\r
-      else{\r
-        if(x1 == x2){\r
-          if(y1 < y2){ v = 1; } else { v = -1; }\r
-          tx1 = x2;\r
-          ty1 = y2 - kage.kMage * v * rate;\r
-        }\r
-        else if(y1 == y2){\r
-          if(x1 < x2){ v = 1; } else{ v = -1; }\r
-          tx1 = x2 - kage.kMage * v * rate;\r
-          ty1 = y2;\r
-        }\r
-        else{\r
-          rad = Math.atan((y2 - y1) / (x2 - x1));\r
-          if(x1 < x2){ v = 1; } else{ v = -1; }\r
-          tx1 = x2 - kage.kMage * Math.cos(rad) * v * rate;\r
-          ty1 = y2 - kage.kMage * Math.sin(rad) * v * rate;\r
-        }\r
-        if(x2 == x3){\r
-          if(y2 < y3){ v = 1; } else{ v = -1; }\r
-          tx2 = x2;\r
-          ty2 = y2 + kage.kMage * v * rate;\r
-        }\r
-        else if(y2 == y3){\r
-          if(x2 < x3){ v = 1; } else{ v = -1; }\r
-          tx2 = x2 + kage.kMage * v * rate;\r
-          ty2 = y2;\r
-        }\r
-        else{\r
-          rad = Math.atan((y3 - y2) / (x3 - x2));\r
-          if(x2 < x3){ v = 1; } else{ v = -1; }\r
-          tx2 = x2 + kage.kMage * Math.cos(rad) * v * rate;\r
-          ty2 = y2 + kage.kMage * Math.sin(rad) * v * rate;\r
-        }\r
-        cdDrawLine(kage, polygons, x1, y1, tx1, ty1, a2, 1);\r
-        cdDrawCurve(kage, polygons, tx1, ty1, x2, y2, tx2, ty2, 1, 1);\r
-        cdDrawLine(kage, polygons, tx2, ty2, x3, y3, 6, a3); // bolder by force\r
-      }\r
-      break;\r
-    case 6:\r
-      if(a3 % 100 == 4){\r
-        if(x3 == x4){\r
-          tx1 = x4;\r
-          ty1 = y4 - kage.kMage;\r
-        }\r
-        else if(y3 == y4){\r
-          tx1 = x4 - kage.kMage;\r
-          ty1 = y4;\r
-        }\r
-        else{\r
-          rad = Math.atan((y4 - y3) / (x4 - x3));\r
-          if(x3 < x4){ v = 1; } else{ v = -1; }\r
-          tx1 = x4 - kage.kMage * Math.cos(rad) * v;\r
-          ty1 = y4 - kage.kMage * Math.sin(rad) * v;\r
-        }\r
-        cdDrawBezier(kage, polygons, x1, y1, x2, y2, x3, y3, tx1, ty1, a2, 1);\r
-        cdDrawCurve(kage, polygons, tx1, ty1, x4, y4, x4 - kage.kMage, y4, 1, a3 + 10);\r
-      }\r
-      else if(a3 == 5){\r
-        cdDrawBezier(kage, polygons, x1, y1, x2, y2, x3, y3, x4, y4, a2, 15);\r
-      }\r
-      else{\r
-        cdDrawBezier(kage, polygons, x1, y1, x2, y2, x3, y3, x4, y4, a2, a3);\r
-      }\r
-      break;\r
-    case 7:\r
-      cdDrawLine(kage, polygons, x1, y1, x2, y2, a2, 1);\r
-      cdDrawCurve(kage, polygons, x2, y2, x3, y3, x4, y4, 1 + (a2 - a2 % 1000), a3);\r
-      break;\r
-    case 9: // may not be exist ... no need\r
-      //kageCanvas[y1][x1] = 0;\r
-      //kageCanvas[y2][x2] = 0;\r
-      break;\r
-    default:\r
-      break;\r
-    }\r
-  }\r
-    \r
-  else{ // gothic\r
-    switch(a1 % 100){\r
-    case 0:\r
-      break;\r
-    case 1:\r
-      if(a3 == 4){\r
-        if(x1 == x2){\r
-          if(y1 < y2){ v = 1; } else{ v = -1; }\r
-          tx1 = x2;\r
-          ty1 = y2 - kage.kMage * v;\r
-        }\r
-        else if(y1 == y2){\r
-          if(x1 < x2){ v = 1; } else{ v = -1; }\r
-          tx1 = x2 - kage.kMage * v;\r
-          ty1 = y2;\r
-        }\r
-        else{\r
-          rad = Math.atan((y2 - y1) / (x2 - x1));\r
-          if(x1 < x2){ v = 1; } else{ v = -1; }\r
-          tx1 = x2 - kage.kMage * Math.cos(rad) * v;\r
-          ty1 = y2 - kage.kMage * Math.sin(rad) * v;\r
-        }\r
-        cdDrawLine(kage, polygons, x1, y1, tx1, ty1, a2, 1);\r
-        cdDrawCurve(kage, polygons, tx1, ty1, x2, y2, x2 - kage.kMage * 2, y2 - kage.kMage * 0.5, 1, 0);\r
-      }\r
-      else{\r
-        cdDrawLine(kage, polygons, x1, y1, x2, y2, a2, a3);\r
-      }\r
-      break;\r
-    case 2:\r
-    case 12:\r
-      if(a3 == 4){\r
-        if(x2 == x3){\r
-          tx1 = x3;\r
-          ty1 = y3 - kage.kMage;\r
-        }\r
-        else if(y2 == y3){\r
-          tx1 = x3 - kage.kMage;\r
-          ty1 = y3;\r
-        }\r
-        else{\r
-          rad = Math.atan((y3 - y2) / (x3 - x2));\r
-          if(x2 < x3){ v = 1; } else{ v = -1; }\r
-          tx1 = x3 - kage.kMage * Math.cos(rad) * v;\r
-          ty1 = y3 - kage.kMage * Math.sin(rad) * v;\r
-        }\r
-        cdDrawCurve(kage, polygons, x1, y1, x2, y2, tx1, ty1, a2, 1);\r
-        cdDrawCurve(kage, polygons, tx1, ty1, x3, y3, x3 - kage.kMage * 2, y3 - kage.kMage * 0.5, 1, 0);\r
-      }\r
-      else if(a3 == 5){\r
-        tx1 = x3 + kage.kMage;\r
-        ty1 = y3;\r
-        tx2 = tx1 + kage.kMage * 0.5;\r
-        ty2 = y3 - kage.kMage * 2;\r
-        cdDrawCurve(kage, polygons, x1, y1, x2, y2, x3, y3, a2, 1);\r
-        cdDrawCurve(kage, polygons, x3, y3, tx1, ty1, tx2, ty2, 1, 0);\r
-      }\r
-      else{\r
-        cdDrawCurve(kage, polygons, x1, y1, x2, y2, x3, y3, a2, a3);\r
-      }\r
-      break;\r
-    case 3:\r
-      if(a3 == 5){\r
-        if(x1 == x2){\r
-          if(y1 < y2){ v = 1; } else{ v = -1; }\r
-          tx1 = x2;\r
-          ty1 = y2 - kage.kMage * v;\r
-        }\r
-        else if(y1 == y2){\r
-          if(x1 < x2){ v = 1; } else{ v = -1; }\r
-          tx1 = x2 - kage.kMage * v;\r
-          ty1 = y2;\r
-        }\r
-        else{\r
-          rad = Math.atan((y2 - y1) / (x2 - x1));\r
-          if(x1 < x2){ v = 1; } else{ v = -1; }\r
-          tx1 = x2 - kage.kMage * Math.cos(rad) * v;\r
-          ty1 = y2 - kage.kMage * Math.sin(rad) * v;\r
-        }\r
-        if(x2 == x3){\r
-          if(y2 < y3){ v = 1; } else{ v = -1; }\r
-          tx2 = x2;\r
-          ty2 = y2 + kage.kMage * v;\r
-        }\r
-        else if(y2 == y3){\r
-          if(x2 < x3){ v = 1; } else{ v = -1; }\r
-          tx2 = x2 + kage.kMage * v;\r
-          ty2 = y2;\r
-        }\r
-        else{\r
-          rad = Math.atan((y3 - y2) / (x3 - x2));\r
-          if(x2 < x3){ v = 1; } else{ v = -1; }\r
-          tx2 = x2 + kage.kMage * Math.cos(rad) * v;\r
-          ty2 = y2 + kage.kMage * Math.sin(rad) * v;\r
-        }\r
-        tx3 = x3 - kage.kMage;\r
-        ty3 = y3;\r
-        tx4 = x3 + kage.kMage * 0.5;\r
-        ty4 = y3 - kage.kMage * 2;\r
-        \r
-        cdDrawLine(kage, polygons, x1, y1, tx1, ty1, a2, 1);\r
-        cdDrawCurve(kage, polygons, tx1, ty1, x2, y2, tx2, ty2, 1, 1);\r
-        cdDrawLine(kage, polygons, tx2, ty2, tx3, ty3, 1, 1);\r
-        cdDrawCurve(kage, polygons, tx3, ty3, x3, y3, tx4, ty4, 1, 0);\r
-      }\r
-      else{\r
-        if(x1 == x2){\r
-          if(y1 < y2){ v = 1; } else{ v = -1; }\r
-          tx1 = x2;\r
-          ty1 = y2 - kage.kMage * v;\r
-        }\r
-        else if(y1 == y2){\r
-          if(x1 < x2){ v = 1; } else{ v = -1; }\r
-          tx1 = x2 - kage.kMage * v;\r
-          ty1 = y2;\r
-        }\r
-        else{\r
-          rad = Math.atan((y2 - y1) / (x2 - x1));\r
-          if(x1 < x2){ v = 1; } else{ v = -1; }\r
-          tx1 = x2 - kage.kMage * Math.cos(rad) * v;\r
-          ty1 = y2 - kage.kMage * Math.sin(rad) * v;\r
-        }\r
-        if(x2 == x3){\r
-          if(y2 < y3){ v = 1; } else{ v = -1; }\r
-          tx2 = x2;\r
-          ty2 = y2 + kage.kMage * v;\r
-        }\r
-        else if(y2 == y3){\r
-          if(x2 < x3){ v = 1; } else{ v = -1; }\r
-          tx2 = x2 + kage.kMage * v;\r
-          ty2 = y2;\r
-        }\r
-        else{\r
-          rad = Math.atan((y3 - y2) / (x3 - x2));\r
-          if(x2 < x3){ v = 1; } else{ v = -1; }\r
-          tx2 = x2 + kage.kMage * Math.cos(rad) * v;\r
-          ty2 = y2 + kage.kMage * Math.sin(rad) * v;\r
-        }\r
-        \r
-        cdDrawLine(kage, polygons, x1, y1, tx1, ty1, a2, 1);\r
-        cdDrawCurve(kage, polygons, tx1, ty1, x2, y2, tx2, ty2, 1, 1);\r
-        cdDrawLine(kage, polygons, tx2, ty2, x3, y3, 1, a3);\r
-      }\r
-      break;\r
-    case 6:\r
-      if(a3 == 5){\r
-        tx1 = x4 - kage.kMage;\r
-        ty1 = y4;\r
-        tx2 = x4 + kage.kMage * 0.5;\r
-        ty2 = y4 - kage.kMage * 2;\r
-        /*\r
-                               cdDrawCurve(x1, y1, x2, y2, (x2 + x3) / 2, (y2 + y3) / 2, a2, 1);\r
-                               cdDrawCurve((x2 + x3) / 2, (y2 + y3) / 2, x3, y3, tx1, ty1, 1, 1);\r
-         */\r
-        cdDrawBezier(kage, polygons, x1, y1, x2, y2, x3, y3, tx1, ty1, a2, 1);\r
-        cdDrawCurve(kage, polygons, tx1, ty1, x4, y4, tx2, ty2, 1, 0);\r
-      }\r
-      else{\r
-        /*\r
-                               cdDrawCurve(x1, y1, x2, y2, (x2 + x3) / 2, (y2 + y3) / 2, a2, 1);\r
-                               cdDrawCurve((x2 + x3) / 2, (y2 + y3) / 2, x3, y3, x4, y4, 1, a3);\r
-         */\r
-        cdDrawBezier(kage, polygons, x1, y1, x2, y2, x3, y3, x4, y4, a2, a3);\r
-      }\r
-      break;\r
-    case 7:\r
-      cdDrawLine(kage, polygons, x1, y1, x2, y2, a2, 1);\r
-      cdDrawCurve(kage, polygons, x2, y2, x3, y3, x4, y4, 1, a3);\r
-      break;\r
-    case 9: // may not be exist\r
-      //kageCanvas[y1][x1] = 0;\r
-      //kageCanvas[y2][x2] = 0;\r
-      break;\r
-    default:\r
-      break;\r
-    }\r
-  }\r
-}\r
diff --git a/engine/polygon.js b/engine/polygon.js
deleted file mode 100644 (file)
index 4d26b38..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-function Polygon(number){\r
-  // resolution : 0.1\r
-  \r
-  // method\r
-  function push(x, y, off){ // void\r
-    var temp = new Object();\r
-    temp.x = Math.floor(x*10)/10;\r
-    temp.y = Math.floor(y*10)/10;\r
-    if(off != 1){\r
-      off = 0;\r
-    }\r
-    temp.off = off;\r
-    this.array.push(temp);\r
-  }\r
-  Polygon.prototype.push = push;\r
-  \r
-  function set(index, x, y, off){ // void\r
-    this.array[index].x = Math.floor(x*10)/10;\r
-    this.array[index].y = Math.floor(y*10)/10;\r
-    if(off != 1){\r
-      off = 0;\r
-    }\r
-    this.array[index].off = off;\r
-  }\r
-  Polygon.prototype.set = set;\r
-  \r
-  function reverse(){ // void\r
-    this.array.reverse();\r
-  }\r
-  Polygon.prototype.reverse = reverse;\r
-  \r
-  function concat(poly){ // void\r
-    this.array = this.array.concat(poly.array);\r
-  }\r
-  Polygon.prototype.concat = concat;\r
-       \r
-  function shift(){ // void\r
-    this.array.shift();\r
-  }\r
-  Polygon.prototype.shift = shift;\r
-       \r
-  function unshift(x, y, off){ // void\r
-    var temp = new Object();\r
-    temp.x = Math.floor(x*10)/10;\r
-    temp.y = Math.floor(y*10)/10;\r
-    if(off != 1){\r
-      off = 0;\r
-    }\r
-    temp.off = off;\r
-    this.array.unshift(temp);\r
-  }\r
-  Polygon.prototype.unshift = unshift;\r
-       \r
-  // property\r
-  this.array = new Array();\r
-  \r
-  // initialize\r
-  if(number){\r
-    for(var i = 0; i < number; i++){\r
-      this.push(0, 0, 0);\r
-    }\r
-  }\r
-  \r
-  return this;\r
-}\r
diff --git a/engine/polygons.js b/engine/polygons.js
deleted file mode 100644 (file)
index 75ebdc1..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-function Polygons(){\r
-  // method\r
-       function clear(){ // void\r
-    this.array = new Array();\r
-  }\r
-  Polygons.prototype.clear = clear;\r
-       \r
-  function push(polygon){ // void\r
-    // only a simple check\r
-    var minx = 200;\r
-    var maxx = 0;\r
-    var miny = 200;\r
-    var maxy = 0;\r
-    var error = 0;\r
-    for(var i = 0; i < polygon.array.length; i++){\r
-      if(polygon.array[i].x < minx){\r
-        minx = polygon.array[i].x;\r
-      }\r
-      if(polygon.array[i].x > maxx){\r
-        maxx = polygon.array[i].x;\r
-      }\r
-      if(polygon.array[i].y < miny){\r
-        miny = polygon.array[i].y;\r
-      }\r
-      if(polygon.array[i].y > maxy){\r
-        maxy = polygon.array[i].y;\r
-      }\r
-      if(isNaN(polygon.array[i].x) || isNaN(polygon.array[i].y)){\r
-        error++;\r
-      }\r
-    }\r
-    if(error == 0 && minx != maxx && miny != maxy && polygon.array.length >= 3){\r
-      var newArray = new Array();\r
-      newArray.push(polygon.array.shift());\r
-      while(polygon.array.length != 0){\r
-        var temp = polygon.array.shift();\r
-        //if(newArray[newArray.length - 1].x != temp.x ||\r
-        //   newArray[newArray.length - 1].y != temp.y){\r
-          newArray.push(temp);\r
-        //}\r
-      }\r
-      if(newArray.length >= 3){\r
-        polygon.array = newArray;\r
-        this.array.push(polygon);\r
-      }\r
-    }\r
-  }\r
-  Polygons.prototype.push = push;\r
-  \r
-  function generateSVG(curve){ // string\r
-    var buffer = "";\r
-    buffer += "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" baseProfile=\"full\" viewBox=\"0 0 200 200\" width=\"200\" height=\"200\">\n";\r
-    if(curve){\r
-      for(var i = 0; i < this.array.length; i++){\r
-        var mode = "L";\r
-        buffer += "<path d=\"M ";\r
-        buffer += this.array[i].array[0].x + "," + this.array[i].array[0].y + " ";\r
-        for(var j = 1; j < this.array[i].array.length; j++){\r
-          if(this.array[i].array[j].off == 1){\r
-            buffer += "Q ";\r
-            mode = "Q";\r
-          } else if(mode == "Q" && this.array[i].array[j - 1].off != 1){\r
-            buffer += "L ";\r
-          } else if(mode == "L" && j == 1){\r
-            buffer += "L ";\r
-          }\r
-          buffer += this.array[i].array[j].x + "," + this.array[i].array[j].y + " ";\r
-        }\r
-        buffer += "Z\" fill=\"black\" />\n";\r
-      }\r
-      buffer += "</svg>\n";\r
-    } else {\r
-      buffer += "<g fill=\"black\">\n";\r
-      for(var i = 0; i < this.array.length; i++){\r
-        buffer += "<polygon points=\"";\r
-        for(var j = 0; j < this.array[i].array.length; j++){\r
-          buffer += this.array[i].array[j].x + "," + this.array[i].array[j].y + " ";\r
-        }\r
-        buffer += "\" />\n";\r
-      }\r
-      buffer += "</g>\n";\r
-      buffer += "</svg>\n";\r
-    }\r
-    return buffer;\r
-  }\r
-  Polygons.prototype.generateSVG = generateSVG;\r
-  \r
-  function generateEPS(){ // string\r
-    var buffer = "";\r
-    buffer += "%!PS-Adobe-3.0 EPSF-3.0\n";\r
-    buffer += "%%BoundingBox: 0 -208 1024 816\n";\r
-    buffer += "%%Pages: 0\n";\r
-    buffer += "%%Title: Kanji glyph\n";\r
-    buffer += "%%Creator: GlyphWiki powered by KAGE system\n";\r
-    buffer += "%%CreationDate: " + new Date() + "\n";\r
-    buffer += "%%EndComments\n";\r
-    buffer += "%%EndProlog\n";\r
-    \r
-    for(var i = 0; i < this.array.length; i++){\r
-      for(var j = 0; j < this.array[i].array.length; j++){\r
-        buffer += (this.array[i].array[j].x * 5) + " " + (1000 - this.array[i].array[j].y * 5 - 200) + " ";\r
-        if(j == 0){\r
-          buffer += "newpath\nmoveto\n";\r
-        } else {\r
-          buffer += "lineto\n";\r
-        }\r
-      }\r
-      buffer += "closepath\nfill\n";\r
-    }\r
-    buffer += "%%EOF\n";\r
-    return buffer;\r
-  }\r
-  Polygons.prototype.generateEPS = generateEPS;\r
-  \r
-  // property\r
-  this.array = new Array();\r
-  \r
-  return this;\r
-}\r
diff --git a/engine/sample.as b/engine/sample.as
deleted file mode 100644 (file)
index d67ee06..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-#include "2d.js"\r
-#include "buhin.js"\r
-#include "curve.js"\r
-#include "kage.js"\r
-#include "kagecd.js"\r
-#include "kagedf.js"\r
-#include "polygon.js"\r
-#include "polygons.js"\r
-\r
-var kage = new Kage();\r
-kage.kUseCurve = false;\r
-var polygons = new Polygons();\r
-\r
-kage.kBuhin.push("u6f22", "99:0:0:9:12:73:200:u6c35-07$99:0:0:54:10:190:199:u26c29-07");\r
-kage.kBuhin.push("u6c35-07", "2:7:8:42:12:99:23:124:35$2:7:8:20:62:75:71:97:85$2:7:8:12:123:90:151:81:188$2:2:7:63:144:109:118:188:51");\r
-kage.kBuhin.push("u26c29-07", "1:0:0:18:29:187:29$1:0:0:73:10:73:48$1:0:0:132:10:132:48$1:12:13:44:59:44:87$1:2:2:44:59:163:59$1:22:23:163:59:163:87$1:2:2:44:87:163:87$1:0:0:32:116:176:116$1:0:0:21:137:190:137$7:32:7:102:59:102:123:102:176:10:190$2:7:0:105:137:126:169:181:182");\r
-\r
-kage.makeGlyph(polygons, "u6f22");\r
-\r
-_root.lineStyle(0, 0, 100);\r
-for (var i = 0; i < polygons.array.length; i++) {\r
-       _root.beginFill(0, 100);\r
-       _root.moveTo(polygons.array[i].array[0].x, polygons.array[i].array[0].y);\r
-       for (var j = 1; j < polygons.array[i].array.length; j++) {\r
-               _root.lineTo(polygons.array[i].array[j].x, polygons.array[i].array[j].y);\r
-       }\r
-       _root.endFill();\r
-}\r
-\r
diff --git a/engine/sample.html b/engine/sample.html
deleted file mode 100644 (file)
index 9ff8299..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-<html>\r
- <head>\r
-  <script type="text/javascript" src="2d.js"></script>\r
-  <script type="text/javascript" src="buhin.js"></script>\r
-  <script type="text/javascript" src="curve.js"></script>\r
-  <script type="text/javascript" src="kage.js"></script>\r
-  <script type="text/javascript" src="kagecd.js"></script>\r
-  <script type="text/javascript" src="kagedf.js"></script>\r
-  <script type="text/javascript" src="polygon.js"></script>\r
-  <script type="text/javascript" src="polygons.js"></script>\r
-  <script type="text/javascript">\r
-function draw() {\r
- var canvas = document.getElementById("canvas");\r
- var ctx = canvas.getContext("2d");\r
\r
- var kage = new Kage();\r
- kage.kUseCurve = false;\r
- var polygons = new Polygons();\r
\r
- kage.kBuhin.push("u9ebb", "1:0:2:40:37:143:37$4:22:5:143:37:12:169:170:169:175:171");\r
- kage.kBuhin.push("u9ebb-2", "99:0:0:0:0:200:200:u9ebb:0:0:0");\r
\r
- kage.makeGlyph(polygons, "u9ebb-2");\r
\r
- ctx.fillStyle = "rgb(0, 0, 0)";\r
\r
- for(var i = 0; i < polygons.array.length; i++){\r
-  ctx.beginPath();\r
-  ctx.moveTo(polygons.array[i].array[0].x, polygons.array[i].array[0].y);\r
-  for(var j = 1; j < polygons.array[i].array.length; j++){\r
-   ctx.lineTo(polygons.array[i].array[j].x, polygons.array[i].array[j].y);\r
-  }\r
-  ctx.closePath();\r
-  ctx.fill();\r
- }\r
-}\r
-  </script>\r
- </head>\r
- <body onload="draw()">\r
-   <canvas style="border: 1px #ccc solid;" id="canvas" width="200" height="200"></canvas>\r
- </body>\r
-</html>\r
diff --git a/engine/sample.js b/engine/sample.js
deleted file mode 100644 (file)
index 0b1375e..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-// KAGE engine sample script for JavaScript engine
-//
-// % js sample.js > result.svg (SpiderMonkey)
-// % java -jar js.jar sample.js > result.svg (Rhino)
-
-load("2d.js");
-load("buhin.js");
-load("curve.js");
-load("kage.js");
-load("kagecd.js");
-load("kagedf.js");
-load("polygon.js");
-load("polygons.js");
-
-var kage = new Kage();
-kage.kUseCurve = true;
-var polygons = new Polygons();
-
-kage.kBuhin.push("u6f22", "99:150:0:9:12:73:200:u6c35-07:0:-10:50$99:0:0:54:10:190:199:u26c29-07");
-kage.kBuhin.push("u6c35-07", "2:7:8:42:12:99:23:124:35$2:7:8:20:62:75:71:97:85$2:7:8:12:123:90:151:81:188$2:2:7:63:144:109:118:188:51");
-kage.kBuhin.push("u26c29-07", "1:0:0:18:29:187:29$1:0:0:73:10:73:48$1:0:0:132:10:132:48$1:12:13:44:59:44:87$1:2:2:44:59:163:59$1:22:23:163:59:163:87$1:2:2:44:87:163:87$1:0:0:32:116:176:116$1:0:0:21:137:190:137$7:32:7:102:59:102:123:102:176:10:190$2:7:0:105:137:126:169:181:182");
-
-kage.makeGlyph(polygons, "u6f22");
-
-print(polygons.generateSVG(true));
-
diff --git a/glyphwiki/convert.pl b/glyphwiki/convert.pl
deleted file mode 100644 (file)
index 83dff24..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-use utf8;
-$lang = "en";
-open $fh, "<:utf8", "$lang.txt";
-$buffer = "";
-while(<$fh>){
-       if($_ =~ m/^\!(.+)\/(.+?)\n$/){
-               if($buffer ne ""){
-                       print $fh3 $buffer;
-                       close $fh3;
-                       $buffer = "";
-               }
-               open $fh2, "<:utf8", "$1/$2";
-               while(<$fh2>){
-                       $buffer .= $_;
-               }
-               close $fh2;
-               open $fh3, ">:utf8", "$1/$lang.$2";
-       } elsif($_ =~ m/^:.*\n$/){
-               $from = <$fh>;
-               $to = <$fh>;
-               $from =~ s/\n$//;
-               $to =~ s/\n$//;
-               $from = quotemeta($from);
-               $buffer =~ s/$from/$to/g;
-       }
-}
-close $fh;
-
-if($buffer ne ""){
-       print $fh3 $buffer;
-       close $fh3;
-       $buffer = "";
-}
diff --git a/glyphwiki/detect.pl b/glyphwiki/detect.pl
deleted file mode 100644 (file)
index 30dccd3..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-use utf8;
-binmode STDOUT, ":utf8";
-
-$target_lang = "en";
-$target_cur = "$target_lang.txt";
-$target_unused = "$target_lang.unused.txt";
-$target_done = "$target_lang.done.txt";
-$target_notyet = "$target_lang.notyet.txt";
-$target_done_new = "$target_lang.done.new.txt";
-$target_notyet_new = "$target_lang.notyet.new.txt";
-
-$done = "";
-$notyet = "";
-$result = "";
-
-if(-e $target_cur || -e $target_unused || -e $target_done_new || -e $target_notyet_new){
-  print "Error. Clean files first.\n";
-  exit;
-}
-
-%current = ();
-open(my $fh, "<:utf8", $target_notyet);
-while(<$fh>){
-  if($_ =~ m/^[:!]/){
-    next;
-  }
-  if($_ =~ m/^(\r\n|\r|\n)$/){
-    next;
-  }
-  $ja = $_;
-  $ja =~ s/(\r\n|\r|\n)$//;
-  $local = <$fh>;
-  $local =~ s/(\r\n|\r|\n)$//;
-  if($ja ne $local){
-    $current{$ja} = $local;
-  }
-}
-close $fh;
-open(my $fh, "<:utf8", $target_done);
-while(<$fh>){
-  if($_ =~ m/^[:!]/){
-    next;
-  }
-  if($_ =~ m/^(\r\n|\r|\n)$/){
-    next;
-  }
-  $ja = $_;
-  $ja =~ s/(\r\n|\r|\n)$//;
-  $local = <$fh>;
-  $local =~ s/(\r\n|\r|\n)$//;
-  if($ja ne $local){
-    $current{$ja} = $local;
-  }
-}
-close $fh;
-%current2 = %current;
-
-@files = ();
-push(@files, "/Users/kamichi/Dropbox/kamichi/home/www/glyphwiki.org/index.cgi");
-opendir($dh, "/Users/kamichi/Dropbox/kamichi/home/glyphwiki/") or die $!;
-foreach(grep(/\.pl$/, readdir($dh))){
-  if($_ !~ m/^en./){
-    push(@files, "/Users/kamichi/Dropbox/kamichi/home/glyphwiki/$_");
-  }
-}
-closedir($dh);
-
-foreach(@files){
-       $fn = $_;
-       %cand = ();
-       open(my $fh, "<:utf8", $_);
-  $line = 1;
-  while(<$fh>){
-    if($_ =~ m/^[ \t]*([^\#]*[^ -~\r\n\t]+[^\#]*)(\#.*)?[\r\n]+$/){
-      if($_ !~ m/\#.*ja_mama/){
-        $cand{$1} .= $line.",";
-      }
-    }
-               $line++;
-  }
-  close($fh);
-  $buffer1 = "";
-  $buffer2 = "";
-  $buffer3 = "";
-  foreach(sort({$cand{$a} <=> $cand{$b}} keys(%cand))){
-    if(exists($current{$_})){
-      $buffer1 .= ":".substr($cand{$_}, 0, length($cand{$_}) - 1)."\n$_\n$current{$_}\n";
-      $buffer3 .= ":".substr($cand{$_}, 0, length($cand{$_}) - 1)."\n$_\n$current{$_}\n";
-      delete($current2{$_});
-    } else {
-      $buffer2 .= ":".substr($cand{$_}, 0, length($cand{$_}) - 1)."\n$_\n$_\n";
-      $buffer3 .= ":".substr($cand{$_}, 0, length($cand{$_}) - 1)."\n$_\n$_\n";
-    }
-  }
-  $done .= "!".$fn."\n".$buffer1."\n";
-  $notyet .= "!".$fn."\n".$buffer2."\n";
-  $result .= "!".$fn."\n".$buffer3."\n";
-}
-
-$unused = "";
-foreach(sort({$current2{$a} <=> $current2{$b}} keys(%current2))){
-  $unused .= ":\n$_\n$current2{$_}\n";
-}
-
-open(my $fh, ">:utf8", $target_cur);
-print $fh $result;
-close $fh;
-open(my $fh, ">:utf8", $target_done_new);
-print $fh $done;
-close $fh;
-open(my $fh, ">:utf8", $target_notyet_new);
-print $fh $notyet;
-close $fh;
-open(my $fh, ">:utf8", $target_unused);
-print $fh $unused;
-close $fh;
diff --git a/glyphwiki/detect_ko.pl b/glyphwiki/detect_ko.pl
deleted file mode 100644 (file)
index 662be4e..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-use utf8;
-binmode STDOUT, ":utf8";
-
-$target_lang = "ko";
-$target_cur = "$target_lang.txt";
-$target_unused = "$target_lang.unused.txt";
-$target_done = "$target_lang.done.txt";
-$target_notyet = "$target_lang.notyet.txt";
-$target_done_new = "$target_lang.done.new.txt";
-$target_notyet_new = "$target_lang.notyet.new.txt";
-
-$done = "";
-$notyet = "";
-$result = "";
-
-if(-e $target_cur || -e $target_unused || -e $target_done_new || -e $target_notyet_new){
-  print "Error. Clean files first.\n";
-  exit;
-}
-
-%current = ();
-open(my $fh, "<:utf8", $target_notyet);
-while(<$fh>){
-  if($_ =~ m/^[:!]/){
-    next;
-  }
-  if($_ =~ m/^(\r\n|\r|\n)$/){
-    next;
-  }
-  $ja = $_;
-  $ja =~ s/(\r\n|\r|\n)$//;
-  $local = <$fh>;
-  $local =~ s/(\r\n|\r|\n)$//;
-  if($ja ne $local){
-    $current{$ja} = $local;
-  }
-}
-close $fh;
-open(my $fh, "<:utf8", $target_done);
-while(<$fh>){
-  if($_ =~ m/^[:!]/){
-    next;
-  }
-  if($_ =~ m/^(\r\n|\r|\n)$/){
-    next;
-  }
-  $ja = $_;
-  $ja =~ s/(\r\n|\r|\n)$//;
-  $local = <$fh>;
-  $local =~ s/(\r\n|\r|\n)$//;
-  if($ja ne $local){
-    $current{$ja} = $local;
-  }
-}
-close $fh;
-%current2 = %current;
-
-@files = ();
-push(@files, "/var/www/glyphwiki.org/index.cgi");
-opendir($dh, "/home/kamichi/glyphwiki/") or die $!;
-foreach(grep(/\.pl$/, readdir($dh))){
-  if($_ !~ m/^en./){
-    push(@files, "/home/kamichi/glyphwiki/$_");
-  }
-}
-closedir($dh);
-
-foreach(@files){
-       $fn = $_;
-       %cand = ();
-       open(my $fh, "<:utf8", $_);
-  $line = 1;
-  while(<$fh>){
-    if($_ =~ m/^[ \t]*([^\#]*[^ -~\r\n\t]+[^\#]*)(\#.*)?[\r\n]+$/){
-      if($_ !~ m/\#.*ja_mama/){
-        $cand{$1} .= $line.",";
-      }
-    }
-               $line++;
-  }
-  close($fh);
-  $buffer1 = "";
-  $buffer2 = "";
-  $buffer3 = "";
-  foreach(sort({$cand{$a} <=> $cand{$b}} keys(%cand))){
-    if(exists($current{$_})){
-      $buffer1 .= ":".substr($cand{$_}, 0, length($cand{$_}) - 1)."\n$_\n$current{$_}\n";
-      $buffer3 .= ":".substr($cand{$_}, 0, length($cand{$_}) - 1)."\n$_\n$current{$_}\n";
-      delete($current2{$_});
-    } else {
-      $buffer2 .= ":".substr($cand{$_}, 0, length($cand{$_}) - 1)."\n$_\n$_\n";
-      $buffer3 .= ":".substr($cand{$_}, 0, length($cand{$_}) - 1)."\n$_\n$_\n";
-    }
-  }
-  $done .= "!".$fn."\n".$buffer1."\n";
-  $notyet .= "!".$fn."\n".$buffer2."\n";
-  $result .= "!".$fn."\n".$buffer3."\n";
-}
-
-$unused = "";
-foreach(sort({$current2{$a} <=> $current2{$b}} keys(%current2))){
-  $unused .= ":\n$_\n$current2{$_}\n";
-}
-
-open(my $fh, ">:utf8", $target_cur);
-print $fh $result;
-close $fh;
-open(my $fh, ">:utf8", $target_done_new);
-print $fh $done;
-close $fh;
-open(my $fh, ">:utf8", $target_notyet_new);
-print $fh $notyet;
-close $fh;
-open(my $fh, ">:utf8", $target_unused);
-print $fh $unused;
-close $fh;
diff --git a/glyphwiki/en.done.txt b/glyphwiki/en.done.txt
deleted file mode 100644 (file)
index 089c7a9..0000000
+++ /dev/null
@@ -1,1082 +0,0 @@
-!/Users/kamichi/Dropbox/kamichi/home/www/glyphwiki.org/index.cgi
-:878
-$temp = sprintf("<div class=\"texts\"><p>グリフ実装率:%d\% (実装済:%dグリフ、未実装:%dグリフ)</p></div>", int($implemented / ($unimplemented + $implemented) * 100), $implemented, $unimplemented);
-$temp = sprintf("<div class=\"texts\"><p>implimented ratio of glyphs :%d\% (implimented : %d glyphs, not yet : %d glyphs)</p></div>", int($implemented / ($unimplemented + $implemented) * 100), $implemented, $unimplemented);
-:879
-$temp2 = sprintf("グリフ実装率:%d\% [済%d、未%d]", int($implemented / ($unimplemented + $implemented) * 100), $implemented, $unimplemented);
-$temp2 = sprintf("Implimented rate of glyphs : %d\% [done %d glyphs, notyet %d glyphs]", int($implemented / ($unimplemented + $implemented) * 100), $implemented, $unimplemented);
-
-!/Users/kamichi/Dropbox/kamichi/home/glyphwiki/common.pl
-:713
-$dbh->do("INSERT INTO wiki VALUES (DEFAULT, '$wikiname', COALESCE((SELECT max(version) FROM wiki WHERE name = '$wikiname'), 0) + 1, $time, '$user', 'エイリアス実体変更による自動更新', 0, '$old_buffer', '$ip', $current_related, 1)"); 
-$dbh->do("INSERT INTO wiki VALUES (DEFAULT, '$wikiname', COALESCE((SELECT max(version) FROM wiki WHERE name = '$wikiname'), 0) + 1, $time, '$user', 'Automatic update by changes of substance of aliases', 0, '$old_buffer', '$ip', $current_related, 1)"); 
-:714
-$DEBUG .= "INSERT INTO wiki VALUES (DEFAULT, '$wikiname', COALESCE((SELECT max(version) FROM wiki WHERE name = '$wikiname'), 0) + 1, $time, '$user', 'エイリアス実体変更による自動更新', 0, '$old_buffer', '$ip', $current_related, 1)\n";
-$DEBUG .= "INSERT INTO wiki VALUES (DEFAULT, '$wikiname', COALESCE((SELECT max(version) FROM wiki WHERE name = '$wikiname'), 0) + 1, $time, '$user', 'Automatic update by changes of substance of aliases', 0, '$old_buffer', '$ip', $current_related, 1)\n";
-:760
-$URL_LICENSE = &url_encode("データ・記事のライセンス");
-$URL_LICENSE = "License";
-:761
-$URL_ABOUT = &url_encode("グリフウィキについて");
-$URL_ABOUT = "About";
-:762
-$URL_PRIVACY = &url_encode("プライバシー・ポリシー");
-$URL_PRIVACY = "PrivacyPolicy";
-:763
-$URL_MENSEKI = &url_encode("免責事項");
-$URL_MENSEKI = "Disclaimers";
-:767
-$URL_JOIN = &url_encode("あなたにできること");
-$URL_JOIN = "JoinUs";
-:768
-$URL_FAQ = &url_encode("よくある質問");
-$URL_FAQ = "FAQ";
-:769
-$URL_HOWTO = &url_encode("どうやって使うのか");
-$URL_HOWTO = "Tutorial";
-:773
-$URL_NEWS = &url_encode("お知らせ");
-$URL_NEWS = "News";
-:774
-$URL_IDOBATA = &url_encode("井戸端");
-$URL_IDOBATA = &url_encode("VillagePump");
-:777
-$WORD_QUERY = "問い合わせ";
-$WORD_QUERY = "You searched for";
-:779
-$WORD_EDITOR = "専用エディタで編集する";
-$WORD_EDITOR = "Edit by glyph editor";
-:781
-$WORD_DESCRIPTION = "説明";
-$WORD_DESCRIPTION = "Description";
-:783
-$WORD_DEFAULT = "メインページ";
-$WORD_DEFAULT = "MainPage";
-:786
-$WORD_CONFIRM_EMAIL = "確認用コードを送信する";
-$WORD_CONFIRM_EMAIL = "Send confirmation code by email.";
-:792
-$WORD_NEW_PASSWORD = "新しいパスワードをメールで送る";
-$WORD_NEW_PASSWORD = "E-mail new password";
-:795
-$WORD_LOGIN = "ログイン";
-$WORD_LOGIN = "Log in";
-:799
-$WORD_FROM = "出典: フリーグリフデータベース『グリフウィキ(GlyphWiki)』";
-$WORD_FROM = "From GlyphWiki: the free glyph database";
-:801
-$TAB_KAISETSU = "解説";
-$TAB_KAISETSU = "article";
-:802
-$TAB_SPECIAL = "特別ページ";
-$TAB_SPECIAL = "special page";
-:803
-$TAB_EDIT = "編集";
-$TAB_EDIT = "edit this page";
-:804
-$TAB_VIEW_SOURCE = "ソースを表示";
-$TAB_VIEW_SOURCE = "view source";
-:805
-$TAB_GLYPH = "グリフ";
-$TAB_GLYPH = "glyph";
-:806
-$TAB_RECENT = "履歴";
-$TAB_RECENT = "history";
-:807
-$TAB_GROUP = "グループ";
-$TAB_GROUP = "group";
-:808
-$TAB_NOTE = "ノート";
-$TAB_NOTE = "discussion";
-:809
-$TAB_USER = "利用者ページ";
-$TAB_USER = "user page";
-:810
-$LABEL_RECENT = "履歴";
-$LABEL_RECENT = "hist";
-:811
-$LABEL_KAIWA = "会話";
-$LABEL_KAIWA = "Talk";
-:812
-$LABEL_USER = "利用者";
-$LABEL_USER = "User";
-:813
-$LABEL_ANONYMOUS = "匿名利用者";
-$LABEL_ANONYMOUS = "anonymous user";
-:819
-$WORD_HOGOKIROKU = "保護記録";
-$WORD_HOGOKIROKU = "Protection log";
-:823
-$WORD_HOGO = "保護されたページ";
-$WORD_HOGO = "Protected page";
-:827
-$WORD_SAKUJO = "削除の方針";
-$WORD_SAKUJO = "Deletion policy";
-:831
-$WORD_DELETE_LOG = "削除記録";
-$WORD_DELETE_LOG = "Deletion log";
-:835
-$WORD_ACCEPT_AND_SUBMIT = "以上の記述を完全に理解し同意したうえで投稿する";
-$WORD_ACCEPT_AND_SUBMIT = "Save page";
-:838
-$WORD_PREVIEW = "プレビューを実行";
-$WORD_PREVIEW = "Show preview";
-:842
-$WORD_KENSAKU = "検索";
-$WORD_KENSAKU = "Search";
-:846
-$WORD_HYOUJI = "表示";
-$WORD_HYOUJI = "Go";
-:858
-$label =~ s/Talk:/ノート:/;
-# no operation
-:859
-$label =~ s/GlyphWiki-talk:/GlyphWiki-ノート:/;
-# no operation
-:860
-$label =~ s/User:/利用者:/;
-# no operation
-:861
-$label =~ s/User-talk:/利用者-会話:/;
-# no operation
-:862
-$label =~ s/Group:/グループ:/;
-# no operation
-:863
-$label =~ s/Group-talk:/グループ-ノート:/;
-# no operation
-:870
-$label =~ s/利用者:/User:/;
-# no operation
-:871
-$label =~ s/利用者-会話:/User-talk:/;
-# no operation
-:872
-$label =~ s/グループ:/Group:/;
-# no operation
-:873
-$label =~ s/グループ-ノート:/Group-talk:/; 
-# no operation
-:874
-$label =~ s/GlyphWiki-ノート:/GlyphWiki-talk:/; 
-# no operation
-:875
-$label =~ s/ノート:/Talk:/;
-# no operation
-:972
-return sprintf("%04d年%d月%d日(%s) %02d:%02d", $year + 1900, $mon + 1, $mday, qw(日 月 火 水 木 金 土)[$wday], $hour, $min);
-return sprintf("%02d:%02d, %d %s %d", $hour, $min, $mday, qw(January February March April May June July August September October November December)[$mon], $year + 1900);
-:1070
-my $subject = 'Password reminder from GlyphWiki (グリフウィキからのパスワードのお知らせ)';
-my $subject = 'Password reminder from GlyphWiki';
-:1072
-どなたか($ip のIPアドレスの使用者)がグリフウィキ(http://glyphwiki.org/)
-Someone (probably you, from IP address $1)
-:1073
-のログイン用パスワードの再発行を依頼しました。
-requested that we send you a new GlyphWiki login password.
-:1075
-利用者 "$name" のパスワードを "$temp_password" に変更しました。
-The password for user "$name" is now "$temp_password".
-:1076
-ログインして別のパスワードに変更してください。
-You should log in and change your password now.
-:1422
-my $subject = 'GlyphWiki メールアドレスの確認';
-my $subject = 'GlyphWiki e-mail address confirmation';
-:1430
-どなたか(IPアドレス $ip の使用者)がこのメールアドレスを
-Someone, probably you from IP address $ip,
-:1431
-GlyphWiki のアカウント "$name" に登録しました。
-has registered an account "$name" with this e-mail address
-:1433
-このアカウントがあなたのものであるか確認してください。
-on GlyphWiki.
-:1434
-あなたの登録したアカウントであるならば、GlyphWiki
-To confirm that this account really does belong to you and activate
-:1435
-のメール通知機能を有効にするために、以下のURLにアクセスしてください:
-e-mail features on GlyphWiki, open this link in your browser:
-:1439
-もし GlyphWiki について身に覚えがない場合は、リンクを開かないでください。
-If this is *not* you, don't follow the link. This confirmation code
-:1440
-確認用コードは $expire に期限切れになります。
-will expire at $expire.
-:1743
-unshift(@tocresult, qq(<div class="toc"><h1>目次</h1>));
-unshift(@tocresult, qq(<div class="toc"><h1>Contents</h1>));
-
-!/Users/kamichi/Dropbox/kamichi/home/glyphwiki/config.pl
-
-!/Users/kamichi/Dropbox/kamichi/home/glyphwiki/get_dir.pl
-
-!/Users/kamichi/Dropbox/kamichi/home/glyphwiki/makefont.pl
-
-!/Users/kamichi/Dropbox/kamichi/home/glyphwiki/makeglyphfont.pl
-
-!/Users/kamichi/Dropbox/kamichi/home/glyphwiki/page_left.pl
-:21
-$buffer .= qq|ナビゲーション|;
-$buffer .= qq|navigation|;
-:25
-$buffer .= qq|<li><a href="/wiki/Special:Recentchanges">最近更新したページ</a>|;
-$buffer .= qq|<li><a href="/wiki/Special:Recentchanges">Recent changes</a>|;
-:26
-$buffer .= qq|<li><a href="/wiki/Special:Random">おまかせ表示</a>|;
-$buffer .= qq|<li><a href="/wiki/Special:Random">Random glyph</a>|;
-:32
-$buffer .= qq|ヘルプ|;
-$buffer .= qq|help|;
-:35
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_HOWTO">どうやって使うのか</a>|;
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_HOWTO">Tutorial</a>|;
-:36
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_FAQ">よくある質問</a>|;
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_FAQ">FAQ</a>|;
-:37
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_JOIN">あなたにできること</a>|;
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_JOIN">Join us</a>|;
-:38
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_BUG">バグ報告</a>|;
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_BUG">Bug reports</a>|;
-:39
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_NEWS">お知らせ</a>|;
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:News">News</a>|;
-:40
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_IDOBATA">井戸端</a>|;
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_IDOBATA">Village pump</a>|;
-:46
-$buffer .= qq|検索|;
-$buffer .= qq|search|;
-:54
-$buffer .= qq|<ul><li><a href="/search/kensaku.cgi">筆画検索(試行)</a></ul>|;
-$buffer .= qq|<ul><li><a href="/search/kensaku.cgi">glyph search by strokes</a></ul>|;
-:55
-$buffer .= qq|<ul><li><a href="/search/hwr.html">手書き検索</a></ul>|;
-$buffer .= qq|<ul><li><a href="/search/hwr.html">glyph search by hand writing</a></ul>|;
-:60
-$buffer .= qq|ツールボックス|;
-$buffer .= qq|toolbox|;
-:65
-$buffer .= qq|<li><a href="/wiki/Special:Mustrenew">旧部品引用グリフ</a>|;
-$buffer .= qq|<li><a href="/wiki/Special:Mustrenew">Glyphs which using old components</a>|;
-:69
-$buffer .= qq|<li><a href="/wiki/$fullwikiname">この版への固定リンク</a>|;
-$buffer .= qq|<li><a href="/wiki/$fullwikiname">Permanent link</a>|;
-:78
-$buffer .= qq|他の言語|;
-$buffer .= qq|languages|;
-
-!/Users/kamichi/Dropbox/kamichi/home/glyphwiki/page_others.pl
-:48
-$buffer = "最終更新 ".&local_localtime($lastupdate)."。";
-$buffer = "This page was last modified on ".&local_localtime($lastupdate).".";
-:56
-<a href="/wiki/GlyphWiki:$URL_LICENSE">データ・記事のライセンス</a>
-<a href="/wiki/GlyphWiki:License">License</a>
-:57
-<a href="/wiki/GlyphWiki:$URL_PRIVACY">プライバシー・ポリシー</a>
-<a href="/wiki/GlyphWiki:PrivacyPolicy">Privacy policy</a>
-:58
-<a href="/wiki/GlyphWiki:$URL_ABOUT">グリフウィキについて</a>
-<a href="/wiki/GlyphWiki:About">About GlyphWiki</a>
-:59
-<a href="/wiki/GlyphWiki:$URL_MENSEKI">免責事項</a>
-<a href="/wiki/GlyphWiki:Disclaimers">Disclaimers</a>
-:75
-$buffer .= qq|<div class="loginned"><div><img src="/images/user.gif"> <a href="/wiki/User:$loginname">$loginname</a></div> <div><a href="/wiki/User-talk:$loginname">マイ・トーク</a></div> <div><a href="/wiki/Special:Confirmemail">メールアドレスの登録・確認</a></div> <div><a href="/wiki/Special:Userlogout?returnto=$url_query">ログアウト</a></div></div>|;
-$buffer .= qq|<div class="loginned"><div><img src="/images/user.gif"> <a href="/wiki/User:$loginname">$loginname</a></div> <div><a href="/wiki/User-talk:$loginname">My talk</a></div> <div><a href="/wiki/Special:Confirmemail">Register and Confirmation of email address</a></div> <div><a href="/wiki/Special:Userlogout?returnto=$url_query">Logout</a></div></div>|;
-:77
-$buffer .= qq|<div class="login"><img src="/images/user.gif"> <a href="/wiki/Special:Userlogin?returnto=$url_query">ログインまたはアカウント作成</a></div>|;
-$buffer .= qq|<div class="login"><img src="/images/user.gif"> <a href="/wiki/Special:Userlogin?returnto=$url_query">Log in / create account</a></div>|;
-
-!/Users/kamichi/Dropbox/kamichi/home/glyphwiki/page_right_general.pl
-:60
-$r_data =~ s/\[\[([^ \]]+ )?Talk:([^\]]+)\]\]/[[$1ノート:$2]]/g;
-# no operation
-:61
-$r_data =~ s/\[\[([^ \]]+ )?GlyphWiki-talk:([^\]]+)\]\]/[[$1GlyphWiki-ノート:$2]]/g;
-# no operation
-:62
-$r_data =~ s/\[\[([^ \]]+ )?Group:([^\]]+)\]\]/[[$1グループ:$2]]/g;
-# no operation
-:63
-$r_data =~ s/\[\[([^ \]]+ )?Group-talk:([^\]]+)\]\]/[[$1グループ-ノート:$2]]/g;
-# no operation
-:64
-$r_data =~ s/\[\[([^ \]]+ )?User:([^\]]+)\]\]/[[$1利用者:$2]]/g;
-# no operation
-:65
-$r_data =~ s/\[\[([^ \]]+ )?User-talk:([^\]]+)\]\]/[[$1利用者-会話:$2]]/g;
-# no operation
-:68
-$cgi_textbox =~ s/\[\[([^ \]]+ )?Talk:([^\]]+)\]\]/[[$1ノート:$2]]/g;
-# no operation
-:69
-$cgi_textbox =~ s/\[\[([^ \]]+ )?GlyphWiki-talk:([^\]]+)\]\]/[[$1GlyphWiki-ノート:$2]]/g;
-# no operation
-:70
-$cgi_textbox =~ s/\[\[([^ \]]+ )?Group:([^\]]+)\]\]/[[$1グループ:$2]]/g;
-# no operation
-:71
-$cgi_textbox =~ s/\[\[([^ \]]+ )?Group-talk:([^\]]+)\]\]/[[$1グループ-ノート:$2]]/g;
-# no operation
-:72
-$cgi_textbox =~ s/\[\[([^ \]]+ )?User:([^\]]+)\]\]/[[$1利用者:$2]]/g;
-# no operation
-:73
-$cgi_textbox =~ s/\[\[([^ \]]+ )?User-talk:([^\]]+)\]\]/[[$1利用者-会話:$2]]/g;
-# no operation
-:111
-$title = qq|$db_wiki_name を編集中|;
-$title = qq|Editing $db_wiki_name|;
-:113
-$title = qq|編集競合: $db_wiki_name|;
-$title = qq|Edit conflict: $db_wiki_name|;
-:115
-$title = qq|データベースエラー: $db_wiki_name|;
-$title = qq|Database error: $db_wiki_name|;
-:117
-$title = qq|データエラー: $db_wiki_name|;
-$title = qq|Data error: $db_wiki_name|;
-:119
-$title = qq|ソースを表示|;
-$title = qq|View source|;
-:183
-$buffer .= "<div class=\"query\"><span class=\"normal\">$db_wiki_name</span> のソース</div>";
-$buffer .= "<div class=\"query\">Source of <span class=\"normal\">$db_wiki_name</span></div>";
-:188
-$buffer .= "<div class=\"version\">版間での差分(日時はJST)</div>";
-$buffer .= "<div class=\"version\">difference among each versions (with JST time)</div>";
-:224
-$newversion = "最新";
-$newversion = "newest";
-:226
-$history_list .= "<li class=\"history\"><a class=\"notice\" href=\"/wiki/$url_db_wiki_name\@$data[1]\">".&local_localtime($data[3])."時点における${newversion}版</a> $temp $summary";
-$history_list .= "<li class=\"history\"><a class=\"notice\" href=\"/wiki/$url_db_wiki_name\@$data[1]\">Revision as of ".&local_localtime($data[3])." (version ${newversion})</a> $temp $summary";
-:227
-$history_list .= "<ul><li>追加された行を<span class=\"newdata\">このように</span>表示します。</ul>";
-$history_list .= "<ul><li>shows added line(s) <span class=\"newdata\">like this</span></ul>";
-:233
-$subtitle = "<h2>".&local_localtime($data[3])."時点における${newversion}版</h2>\n";
-$subtitle = "<h2>Revision as of ".&local_localtime($data[3])." (version ${newversion})</h2>\n";
-:255
-$history_list .= "<li class=\"history\"><a class=\"notice\" href=\"/wiki/$url_db_wiki_name\@$data[1]\">".&local_localtime($data[3])."時点における\@$data[1]版</a> $temp $summary";
-$history_list .= "<li class=\"history\"><a class=\"notice\" href=\"/wiki/$url_db_wiki_name\@$data[1]\">Revision as of ".&local_localtime($data[3])." (version \@$data[1])</a> $temp $summary";
-:256
-$history_list .= "<ul><li>削除された行を<span class=\"olddata\">このように</span>表示します。</ul>";
-$history_list .= "<ul><li>shows deleted line(s) <span class=\"olddata\">like this</span></ul>";
-:286
-$buffer .= "<div class=\"version\">".&local_localtime($r_timestamp)."; ".$temp." による \@${query_version}版<br>";
-$buffer .= "<div class=\"version\">".&local_localtime($r_timestamp)."; version \@${query_version} by ".$temp."<br>";
-:289
-$buffer .= "<a href=\"/wiki/".&url_encode($db_wiki_name)."\@".($query_version - 1)."\">← 前の版</a>";
-$buffer .= "<a href=\"/wiki/".&url_encode($db_wiki_name)."\@".($query_version - 1)."\">← previous version</a>";
-:291
-$buffer .= qq|<span class="disable">← 前の版</span>|;
-$buffer .= qq|<span class="disable">← previous version</span>|;
-:295
-$buffer .= " | <a href=\"/wiki/".&url_encode($db_wiki_name)."\">最新版を表示</a>";
-$buffer .= " | <a href=\"/wiki/".&url_encode($db_wiki_name)."\">latest version</a>";
-:297
-$buffer .= " | <span class=\"disable\">最新版を表示</span>";
-$buffer .= " | <span class=\"disable\">latest version</span>";
-:301
-$buffer .= " | <a href=\"/wiki/".&url_encode($db_wiki_name)."\@".($query_version + 1)."\">次の版 →</a>";
-$buffer .= " | <a href=\"/wiki/".&url_encode($db_wiki_name)."\@".($query_version + 1)."\">next version →</a>";
-:303
-$buffer .= " | <span class=\"disable\">次の版 →</span>";
-$buffer .= " | <span class=\"disable\">next version →</span>";
-:320
-$buffer .= qq|<div class="warning">警告: あなたはこのページの古い版を編集しています。もしこのグリフを保存すると、この版以降に追加された全ての変更が無効になってしまいます。</div>|;
-$buffer .= qq|<div class="warning">Notice: You are editing an old revision of this page. If you save it, any changes made since then will be removed.</div>|;
-:322
-$buffer .= qq|<div class="warning">警告: あなたはこのページの古い版を編集しています。もしこの文章を保存すると、この版以降に追加された全ての変更が無効になってしまいます。</div>|;
-$buffer .= qq|<div class="warning">Notice: You are editing an old revision of this page. If you save it, any changes made since then will be removed.</div>|;
-:329
-$buffer .= qq|<div class="panel"><span class="warning">グリフウィキには現在この名前の項目はありません。</span><ul><li>グリフを新しく描くには、まず下のテキストボックスに内容を書き込んでください。その際、著作権に注意してください。その後、ページ下部の<span class="notice">■投稿する前に以下を確認して下さい■</span>以下の注意事項をよく確認した上で “$BUTTON_ACCEPT_AND_SUBMIT” ボタンを押してください。そうすればすぐに見えるようになります。<li>もしあなたがグリフウィキに初めて投稿するならば、先に<a href="/wiki/GlyphWiki:$URL_HOWTO">どうやって使うのか</a>を読んでください。<li><span class="notice">投稿のテストをしたい場合、<a href="/wiki/GlyphWiki:$URL_SANDBOX">サンドボックス</a>を利用してください。</span>一度作成した項目はあなたが削除することはできません。<li>他の項目から<a href="/wiki/Special:Search?action=fulltext&search=$url_db_wiki_name">&quot;$db_wiki_name&quot;を検索する</a>。</ul><hr><ul><li><span class="notice">この項目を作成したばかりなのにこのメッセージがでる場合、データベースの更新が遅れているために表示できないのかもしれません。</span>項目を書き直す前にしばらく待ってから、再読込してみてください。<li>以前この項目を作成したことがあるならば、この項目は<a href="/wiki/$URL_DELETE_LOG">既に削除されています</a>。<a href="/wiki/$URL_SAKUJO">$WORD_SAKUJO</a>に削除された理由が記載されているかもしれません。</ul></div>|;
-$buffer .= qq|<div class="panel"><span class="warning">GlyphWiki does not have an article with this exact name.</span><ul><li>グリフを新しく描くには、まず下のテキストボックスに内容を書き込んでください。その際、著作権に注意してください。その後、ページ下部の<span class="notice">*** please confirm the following matters before contributing it ***</span>以下の注意事項をよく確認した上で “$BUTTON_ACCEPT_AND_SUBMIT” ボタンを押してください。そうすればすぐに見えるようになります。<li>もしあなたがグリフウィキに初めて投稿するならば、先に<a href="/wiki/GlyphWiki:$URL_HOWTO">どうやって使うのか</a>を読んでください。<li><span class="notice">投稿のテストをしたい場合、<a href="/wiki/GlyphWiki:$URL_SANDBOX">サンドボックス</a>を利用してください。</span>一度作成した項目はあなたが削除することはできません。<li>他の項目から<a href="/wiki/Special:Search?action=fulltext&search=$url_db_wiki_name">&quot;$db_wiki_name&quot;を検索する</a>。</ul><hr><ul><li><span class="notice">この項目を作成したばかりなのにこのメッセージがでる場合、データベースの更新が遅れているために表示できないのかもしれません。</span>項目を書き直す前にしばらく待ってから、再読込してみてください。<li>以前この項目を作成したことがあるならば、この項目は<a href="/wiki/$URL_DELETE_LOG">既に削除されています</a>。<a href="/wiki/$URL_SAKUJO">$WORD_SAKUJO</a>に削除された理由が記載されているかもしれません。</ul></div>|;
-:331
-$buffer .= qq|<div class="panel"><span class="warning">グリフウィキには現在この名前の項目はありません。</span><ul><li>文章を新しく作成するには、まず下のテキストボックスに内容を書き込んでください。その際、著作権に注意してください。その後、ページ下部の<span class="notice">■投稿する前に以下を確認して下さい■</span>以下の注意事項をよく確認した上で “$BUTTON_ACCEPT_AND_SUBMIT” ボタンを押してください。そうすればすぐに見えるようになります。<li>もしあなたがグリフウィキに初めて投稿するならば、先に<a href="/wiki/GlyphWiki:$URL_HOWTO">どうやって使うのか</a>を読んでください。<li><span class="notice">投稿のテストをしたい場合、<a href="/wiki/GlyphWiki:$URL_SANDBOX">サンドボックス</a>を利用してください。</span>一度作成した項目はあなたが削除することはできません。<li>他の項目から<a href="/wiki/Special:Search?action=fulltext&search=$url_db_wiki_name">&quot;$db_wiki_name&quot;を検索する</a>。</ul><hr><ul><li><span class="notice">この項目を作成したばかりなのにこのメッセージがでる場合、データベースの更新が遅れているために表示できないのかもしれません。</span>項目を書き直す前にしばらく待ってから、再読込してみてください。<li>以前この項目を作成したことがあるならば、この項目は<a href="/wiki/$URL_DELETE_LOG">既に削除されています</a>。<a href="/wiki/$URL_SAKUJO">$WORD_SAKUJO</a>に削除された理由が記載されているかもしれません。</ul></div>|;
-$buffer .= qq|<div class="panel"><span class="warning">GlyphWiki does not have an article with this exact name.</span><ul><li>文章を新しく作成するには、まず下のテキストボックスに内容を書き込んでください。その際、著作権に注意してください。その後、ページ下部の<span class="notice">*** please confirm the following matters before contributing it ***</span>以下の注意事項をよく確認した上で “$BUTTON_ACCEPT_AND_SUBMIT” ボタンを押してください。そうすればすぐに見えるようになります。<li>もしあなたがグリフウィキに初めて投稿するならば、先に<a href="/wiki/GlyphWiki:$URL_HOWTO">どうやって使うのか</a>を読んでください。<li><span class="notice">投稿のテストをしたい場合、<a href="/wiki/GlyphWiki:$URL_SANDBOX">サンドボックス</a>を利用してください。</span>一度作成した項目はあなたが削除することはできません。<li>他の項目から<a href="/wiki/Special:Search?action=fulltext&search=$url_db_wiki_name">&quot;$db_wiki_name&quot;を検索する</a>。</ul><hr><ul><li><span class="notice">この項目を作成したばかりなのにこのメッセージがでる場合、データベースの更新が遅れているために表示できないのかもしれません。</span>項目を書き直す前にしばらく待ってから、再読込してみてください。<li>以前この項目を作成したことがあるならば、この項目は<a href="/wiki/$URL_DELETE_LOG">既に削除されています</a>。<a href="/wiki/$URL_SAKUJO">$WORD_SAKUJO</a>に削除された理由が記載されているかもしれません。</ul></div>|;
-:338
-$buffer .= qq|<div class="message">あなたがこのページを編集し始めた後に、他の誰かがこのページ(またはこのページの別の版)を変更しました。左のグリフが現在の最新の状態です。あなたの編集していたグリフは右側に示されていますので再度編集して下さい。あなたの編集した内容は、"投稿する"をクリックした時に実際に保存されます。</div>|;
-$buffer .= qq|<div class="message">Someone else has changed this page since you started editing it. The left image contains the glyph as it currently exists. Your changes are shown in the right image. You will have to edit again. The glyph you edit will be saved when you press "Save page".</div>|;
-:340
-$buffer .= qq|<div class="message">あなたがこのページを編集し始めた後に、他の誰かがこのページ(またはこのページの別の版)を変更しました。上側のテキストエリアは現在の最新の状態です。あなたの編集していた文章は下側のテキストエリアに示されています。編集していた文章を、上側のテキストエリアの文章に組み込んで下さい。 <span class="notice">上側のテキストエリアの内容だけ</span>が、"保存する"をクリックした時に実際に保存されます。</div>|;
-$buffer .= qq|<div class="message">Someone else has changed this page since you started editing it. The upper text area contains the page text as it currently exists. Your changes are shown in the lower text area. You will have to merge your changes into the existing text. <span class="notice">Only</span> the text in the upper text area will be saved when you press "Save page".</div>|;
-:346
-$buffer .= qq|<div class="message">データベースの書き込みに失敗しました。多数のユーザが同時にアクセスしているか、サーバの負荷が高まっている可能性があります。まだ保存されていませんので、再度投稿してください。あなたの編集した内容は、"投稿する"をクリックした時に実際に保存されます。</div>|;
-$buffer .= qq|<div class="message">Failed to write to the database. 多数のユーザが同時にアクセスしているか、サーバの負荷が高まっている可能性があります。まだ保存されていませんので、再度投稿してください。あなたの編集した内容は、"投稿する"をクリックした時に実際に保存されます。</div>|;
-:351
-$buffer .= qq|<div class="message">グリフデータ、または関連字にエラーがあります。まだ保存されていませんので、内容を確認して再度投稿してください。あなたの編集した内容は、"投稿する"をクリックした時に実際に保存されます。</div>|;
-$buffer .= qq|<div class="message">There is an error at glyph data or at related char and it wasn't registered yet. Please check the content and contribute again. あなたの編集した内容は、"投稿する"をクリックした時に実際に保存されます。</div>|;
-:358
-$buffer .= qq|<div class="message">あなたは<span class="notice">ログインしていません</span>。匿名利用者による投稿としてこの項目の履歴に記録されます。また、投稿の前には<span class="notice">プレビュー</span>が必要です。|;
-$buffer .= qq|<div class="message">You are NOT currently logged in. Editing this way will cause as anonymous user to be recorded publicly in this page's history. Also you are needed to check PREVIEW. |;
-:360
-$buffer .= "匿名利用者は外部リンクを含むページを投稿することはできません。</div>";
-$buffer .= "Anonymous users can't contribute the page which includes external links.</div>";
-:369
-$buffer .= qq|<br><h2>プレビュー</h2><div class="warning2 notice">これはプレビューです。まだ保存されていません!</div><hr>|;
-$buffer .= qq|<br><h2>Preview</h2><div class="warning2 notice">Remember that this is only a preview; any changes have not yet been saved!</div><hr>|;
-:374
-$buffer .= qq|<div class="message">このページは編集できないように保護されているか、編集が禁止されています。これにはいくつか理由があります。詳しくは<a href="/wiki/$URL_HOGO">$PAGE_HOGO</a>または<a href="/wiki/$URL_HOGOKIROKU">$PAGE_HOGOKIROKU</a>をご覧ください。</div><hr>|;
-$buffer .= qq|<div class="message">This page is currently protected from editing. これにはいくつか理由があります。詳しくは<a href="/wiki/$URL_HOGO">$PAGE_HOGO</a>または<a href="/wiki/$URL_HOGOKIROKU">$PAGE_HOGOKIROKU</a>をご覧ください。</div><hr>|;
-:432
-$buffer .= "<div class=\"warning2\">存在しないグリフをエイリアスとして参照しています。実際には登録できません!</div><hr>";
-$buffer .= "<div class=\"warning2\">It refers unexisting glyph as alias. Actually it can't register!</div><hr>";
-:443
-$buffer .= qq|<h2>フォント</h2>|;
-$buffer .= qq|<h2>Font file</h2>|;
-:445
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_FONT">フォント生成のヘルプ</a>|;
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_FONT">help document for generating font file</a>|;
-:458
-$buffer .= qq|<li>TrueTypeフォント <a href="/font/$fontname.ttf">ダウンロード</a> (内部バージョン $fontname、$fontsize バイト)|;
-$buffer .= qq|<li>TrueType font file <a href="/font/$fontname.ttf">download</a> (inner version: $fontname、$fontsize bytes)|;
-:459,471,475
-$buffer .= qq|<ul><li>フォント生成ログ <a href="/font/$fontname.log">閲覧</a></ul>|;
-$buffer .= qq|<ul><li>log for font generation <a href="/font/$fontname.log">view</a></ul>|;
-:460
-$buffer .= qq|<li>フォント生成ソース<ul>|;
-$buffer .= qq|<li>sources to generate the font<ul>|;
-:461
-$buffer .= qq|<li><a href="/font/$fontname.source">ソースファイル</a>|;
-$buffer .= qq|<li><a href="/font/$fontname.source">source file</a>|;
-:462
-$buffer .= qq|<li><a href="/font/$fontname.meta">フォント定義ファイル</a>|;
-$buffer .= qq|<li><a href="/font/$fontname.meta">font definition file</a>|;
-:464
-$buffer .= qq|<li><a href="/font/$fontname.ivs">IVS定義ファイル</a>|;
-$buffer .= qq|<li><a href="/font/$fontname.ivs">IVS definition file</a>|;
-:470
-$buffer .= qq|<li>現在フォント生成中です。|;
-$buffer .= qq|<li>It is in generating process of font file now.|;
-:472
-$buffer .= qq|<ul><li><a href="/wiki/$wiki_name">最新の状況に更新</a></ul>|;
-$buffer .= qq|<ul><li><a href="/wiki/$wiki_name">Update latest status</a></ul>|;
-:474
-$buffer .= qq|<li>フォント生成に失敗しました(念のためページを再読み込みしてください)。|;
-$buffer .= qq|<li>Failed in generating font file. (You can try to reload this page.)|;
-:478
-$buffer .= qq|<li><a href="/wiki/$wiki_name?action=makettf">フォント生成の実行</a>|;
-$buffer .= qq|<li><a href="/wiki/$wiki_name?action=makettf">Execute to generate font</a>|;
-:479
-$buffer .= qq|<ul><li>クリックするとフォント生成が始まります。生成に必要な時間は、概ね1,000グリフで4分程度です。</ul>|;
-$buffer .= qq|<ul><li>When you click this link, font generation begins. It costs about 4 minutes per 1,000 glyphs.</ul>|;
-:482
-$buffer .= qq|<h2>グリフ集合</h2>|;
-$buffer .= qq|<h2>Set of glyphs</h2>|;
-:524
-$buffer .= qq|<div class="texts" style="margin: 1em 0 0 1em;"><a class="wiki" href=\"/wiki/$alias_to\">$alias_to</a> の<a href="/wiki/GlyphWiki:$URL_ALIAS">エイリアス</a>(別名)</div>|;
-$buffer .= qq|<div class="texts" style="margin: 1em 0 0 1em;"><a class="wiki" href=\"/wiki/$alias_to\">$alias_to</a> の<a href="/wiki/GlyphWiki:$URL_ALIAS">Aliase(s)</a></div>|;
-:532
-$buffer .= qq|<span class="text glyph_link">(SVG画像 <a href="/glyph/$db_wiki_name.svg">ポリゴン</a> <a href="/glyph/$db_wiki_name.path.svg">パス</a>)</span>|;
-$buffer .= qq|<span class="text glyph_link">(SVG image <a href="/glyph/$db_wiki_name.svg">by polygon</a> <a href="/glyph/$db_wiki_name.path.svg">by path</a>)</span>|;
-:533
-$buffer .= qq|<span class="text glyph_link"><a href="/glyph/$db_wiki_name.eps">(EPS画像)</a></span>|;
-$buffer .= qq|<span class="text glyph_link"><a href="/glyph/$db_wiki_name.eps">(EPS image)</a></span>|;
-:539
-$buffer .= qq|<span class="text glyph_link"><a href="/glyph/$db_wiki_name\@$query_version.svg">(SVG画像)</a></span>|;
-$buffer .= qq|<span class="text glyph_link"><a href="/glyph/$db_wiki_name\@$query_version.svg">(SVG image)</a></span>|;
-:540
-$buffer .= qq|<span class="text glyph_link"><a href="/glyph/$db_wiki_name\@$query_version.eps">(EPS画像)</a></span><br>|;
-$buffer .= qq|<span class="text glyph_link"><a href="/glyph/$db_wiki_name\@$query_version.eps">(EPS image)</a></span><br>|;
-:545
-$buffer .= qq|<div class="message">このページ(この版)は<span class="notice">管理者によって削除されました</span>。詳細は<a href="/wiki/$URL_DELETE_LOG">$WORD_DELETE_LOG</a>を参照してください。</div>|;
-$buffer .= qq|<div class="message">This page (this revision) was <span class="notice">deleted by administrator</span>. Please see <a href="/wiki/$URL_DELETE_LOG">$WORD_DELETE_LOG</a> for details.</div>|;
-:602
-$parent_info .= "<li>あなたのブラウザでの表示:<span class=\"related\">$parent_char</span>";
-$parent_info .= "<li>browser view: <span class=\"related\">$parent_char</span>";
-:626
-$parent_info .= "前の符号位置:<a href=\"/wiki/u$code\"><span class=\"related\">$char</span> (u$code)</a> ";
-$parent_info .= "previous code point: <a href=\"/wiki/u$code\"><span class=\"related\">$char</span> (u$code)</a> ";
-:651
-$parent_info .= "次の符号位置:<a href=\"/wiki/u$code\"><span class=\"related\">$char</span> (u$code)</a> ";
-$parent_info .= "next code point: <a href=\"/wiki/u$code\"><span class=\"related\">$char</span> (u$code)</a> ";
-:656,679,700,723,750,777
-$buffer .= qq|<h2>文字コード関連情報</h2>|;
-$buffer .= qq|<h2>Information about CCS</h2>|;
-:668,739,766
-$parent_info .= "前の番号:<a href=\"/wiki/$codechar\"><img class=\"thumb related\" src=\"/glyph/$codechar.50px.png\"> ($codechar)</a><br>";
-$parent_info .= "Prev. number : <a href=\"/wiki/$codechar\"><img class=\"thumb related\" src=\"/glyph/$codechar.50px.png\"> ($codechar)</a><br>";
-:674,745,772
-$parent_info .= "次の番号:<a href=\"/wiki/$codechar\"><img class=\"thumb related\" src=\"/glyph/$codechar.50px.png\"> ($codechar)</a><br>";
-$parent_info .= "Next number : <a href=\"/wiki/$codechar\"><img class=\"thumb related\" src=\"/glyph/$codechar.50px.png\"> ($codechar)</a><br>";
-:752,779
-$buffer .= qq|諸橋轍次『大漢和辞典』<br>|;
-$buffer .= qq|<i>Daikanwa-Jiten</i> by Tetsuji Morohashi<br>|;
-:796
-$buffer_related .= qq|<table border="0"><tr><td align="right" valign="top"><nobr><a href="/wiki/GlyphWiki:$URL_RELATED">関連字</a>:</nobr>|;
-$buffer_related .= qq|<table border="0"><tr><td align="right" valign="top"><nobr><a href="/wiki/GlyphWiki:$URL_RELATED">Related character(s)</a>:</nobr>|;
-:828
-$buffer_related .= qq|<tr><td align="right" valign="top"><nobr><a href="/wiki/GlyphWiki:$URL_VARIANT">異体字</a>:</nobr><td valign="top">$related_char$related_code<br>$label<td valign="top">$temp|;
-$buffer_related .= qq|<tr><td align="right" valign="top"><nobr><a href="/wiki/GlyphWiki:$URL_VARIANT">Variant(s)</a>:</nobr><td valign="top">$related_char$related_code<br>$label<td valign="top">$temp|;
-:836
-$buffer_related .= qq|<tr><td align="right" valign="top"><nobr><a href="/wiki/GlyphWiki:$URL_VARIANT">異体字</a>:</nobr><td valign="top"><a href="/wiki/$related_code2">$related_char$related_code</a><br>$label<td valign="top">|;
-$buffer_related .= qq|<tr><td align="right" valign="top"><nobr><a href="/wiki/GlyphWiki:$URL_VARIANT">Variant(s)</a>:</nobr><td valign="top"><a href="/wiki/$related_code2">$related_char$related_code</a><br>$label<td valign="top">|;
-:859
-$buffer_related .= "<p>(未設定)</p>";
-$buffer_related .= "<p>(undefined)</p>";
-:863
-$buffer .= qq|<h2>関連グリフ</h2>|;
-$buffer .= qq|<h2>Related glyphs</h2>|;
-:903
-$buffer_quoting .= "<br><p>(残りは省略されています ... <a href=\"?view=all\">すべて表示する</a>)</p>";
-$buffer_quoting .= "<br><p>(snipped ... <a href=\"?view=all\">view all</a>)</p>";
-:921
-$buffer .= qq|<h2>このグリフの<a href="/wiki/GlyphWiki:$URL_ALIAS">エイリアス</a>(別名)一覧</h2>|;
-$buffer .= qq|<h2>List of <a href="/wiki/GlyphWiki:Aliases">aliases</a> for this glyph</h2>|;
-:925
-$buffer .= qq|<h2>このグリフを内部で引用している他のグリフ一覧</h2>|;
-$buffer .= qq|<h2>This glyph is quoted by:</h2>|;
-:945
-$buffer .= qq|<h2>このグリフで引用している他のグリフ一覧</h2>|;
-$buffer .= qq|<h2>This glyph consists of:</h2>|;
-:966
-$local_using =~ s/^Talk:/ノート:/;
-# no operation
-:967
-$local_using =~ s/^Glyphwiki-talk:/GlyphWiki-ノート:/;
-# no operation
-:968
-$local_using =~ s/^User:/利用者:/;
-# no operation
-:969
-$local_using =~ s/^User-talk:/利用者-会話:/;
-# no operation
-:970
-$local_using =~ s/^Group:/グループ:/;
-# no operation
-:971
-$local_using =~ s/^Group-talk:/グループ-ノート:/;
-# no operation
-:977
-$buffer .= qq|<h2>このグリフを収録するグループ一覧</h2>|;
-$buffer .= qq|<h2>This glyph is a member of the below group(s):</h2>|;
-:1011
-my $temp2 = &url_encode("旧部品の更新");
-my $temp2 = &url_encode("update quoted old part(s)");
-:1012
-$buffer .= qq|<h2>引用する旧部品の更新</h2>|;
-$buffer .= qq|<h2>update quoted old part(s)</h2>|;
-:1013
-$buffer .= qq|<div class="texts">現在:<img class="glyph compare" src="/glyph/$db_wiki_name\@$newest_version.png" border="0"> |;
-$buffer .= qq|<div class="texts">current design:<img class="glyph compare" src="/glyph/$db_wiki_name\@$newest_version.png" border="0"> |;
-:1014
-$buffer .= qq|最新部品を利用:<img class="glyph compare" src="/get_preview_glyph.cgi?data=$temp" border="0"> |;
-$buffer .= qq|use the newest part(s):<img class="glyph compare" src="/get_preview_glyph.cgi?data=$temp" border="0"> |;
-:1015
-$buffer .= qq|<a href="?action=edit&buttons=$URL_PREVIEW&textbox=$temp&related=$url_related&summary=$temp2">更新する</a></div>|;
-$buffer .= qq|<a href="?action=edit&buttons=$URL_PREVIEW&textbox=$temp&related=$url_related&summary=$temp2">Update</a></div>|;
-:1041
-$buffer .= qq|<h2>このグループを引用するグループ一覧</h2>|;
-$buffer .= qq|<h2>List of groups which quotes this group</h2>|;
-:1060
-$buffer .= qq|<div class="panel"><span class="warning">グリフウィキには現在この名前の項目はありません。</span><ul><li><a href="/wiki/$url_db_wiki_name?action=edit" class="recommend">&quot;$db_wiki_name&quot;という項目を新規作成する</a>。または<a href="/wiki/GlyphWiki:$URL_SEISAKUIRAI">制作依頼</a>する。<li>既存の項目から<a href="/wiki/Special:Search?action=fulltext&search=$url_db_wiki_name">&quot;$db_wiki_name&quot;を検索する</a>。</ul><hr><ul><li>もしこの項目を作成したことがあるのにこのメッセージがでる場合、データベースの更新が遅れているために表示できないか、既に削除されています(<a href="/wiki/$URL_SAKUJO">$WORD_SAKUJO</a>に削除された理由が記載されているかもしれません)。<a href="/wiki/$URL_DELETE_LOG">$WORD_DELETE_LOG</a>も確認してください。</ul></div>|;
-$buffer .= qq|<div class="panel"><span class="warning">GlyphWiki does not have an article with this exact name.</span><ul><li><a href="/wiki/$url_db_wiki_name?action=edit" class="recommend">&quot;$db_wiki_name&quot;という項目を新規作成する</a>。または<a href="/wiki/GlyphWiki:$URL_SEISAKUIRAI">制作依頼</a>する。<li>既存の項目から<a href="/wiki/Special:Search?action=fulltext&search=$url_db_wiki_name">&quot;$db_wiki_name&quot;を検索する</a>。</ul><hr><ul><li>もしこの項目を作成したことがあるのにこのメッセージがでる場合、データベースの更新が遅れているために表示できないか、既に削除されています(<a href="/wiki/$URL_SAKUJO">$WORD_SAKUJO</a>に削除された理由が記載されているかもしれません)。<a href="/wiki/$URL_DELETE_LOG">$WORD_DELETE_LOG</a>も確認してください。</ul></div>|;
-:1093
-$buffer .= qq|<h2>あなたのグリフ</h2>|;
-$buffer .= qq|<h2>Your desgined glyph</h2>|;
-:1106
-$buffer .= qq|<a href="/wiki/GlyphWiki:$URL_RELATED">関連字</a> (入力必須): <input type="text" name="related" value="$temp2" size="6"><br>|; 
-$buffer .= qq|<a href="/wiki/GlyphWiki:$URL_RELATED">related character</a> (must input): <input type="text" name="related" value="$temp2" size="6"><br>|; 
-:1114
-$buffer .= qq|<div class="message"><div class="title">■投稿する前に以下の事柄を確認してください■</div><ol><li>GlyphWikiに投稿したデータは著作権の譲渡を行ったことになり、その<span class="notice">データがいかなる形態で改変・使用されることもあなたは許諾し、以後著作者人格権を主張・使用しないことを了承するものとみなします</span>。<li><span class="notice">他のフォントや印刷物などからグリフを無断で転載・コピー・トレースしないでください</span>。それ以外にも投稿内容に問題がある場合、<a href="/wiki/$URL_SAKUJO">削除の方針</a>に基づき削除されます。また、グリフウィキの運営方針についてはこれから決定していきますが、<span class="notice">最終的な決定権は管理者にあるものとします</span>。これらのことにあなたはあらかじめ同意したものとみなします。 <li>GlyphWikiのデータ・記事のライセンスはWikipediaの記事のライセンス(GFDL)とは異なります。詳しくは <a href="/wiki/GlyphWiki:$URL_LICENSE">データ・記事のライセンス</a> を参照してください。</ol></div>|;
-$buffer .= qq|<div class="message"><div class="title">*** please confirm the following matters before contributing it ***</div><ol><li>GlyphWikiに投稿したデータは著作権の譲渡を行ったことになり、その<span class="notice">データがいかなる形態で改変・使用されることもあなたは許諾し、以後著作者人格権を主張・使用しないことを了承するものとみなします</span>。<li><span class="notice">他のフォントや印刷物などからグリフを無断で転載・コピー・トレースしないでください</span>。それ以外にも投稿内容に問題がある場合、<a href="/wiki/$URL_SAKUJO">削除の方針</a>に基づき削除されます。また、グリフウィキの運営方針についてはこれから決定していきますが、<span class="notice">最終的な決定権は管理者にあるものとします</span>。これらのことにあなたはあらかじめ同意したものとみなします。 <li>GlyphWikiのデータ・記事のライセンスはWikipediaの記事のライセンス(GFDL)とは異なります。詳しくは <a href="/wiki/GlyphWiki:$URL_LICENSE">データ・記事のライセンス</a> を参照してください。</ol></div>|;
-:1116,1157
-$buffer .= qq|<div class="toolbox"><a href="/wiki/GlyphWiki:$URL_YOUYAKU">編集内容の要約</a>: <input type="text" name="summary" value="$html_summary" size="100"><br>|;
-$buffer .= qq|<div class="toolbox"><a href="/wiki/GlyphWiki:$URL_YOUYAKU">Edit summary</a>: <input type="text" name="summary" value="$html_summary" size="100"><br>|;
-:1118,1159
-$buffer .= "要約のプレビュー: <span class=\"summary\">($html_summary)</span><br>";
-$buffer .= "Summary preview: <span class=\"summary\">($html_summary)</span><br>";
-:1127,1168
-$buffer .= qq*<a href="/wiki/$url_wiki_name">中止</a> | <a href="/wiki/GlyphWiki:$URL_HENSHU" target="_blank">編集の仕方</a> (新しいウィンドウが開きます)</div>*;
-$buffer .= qq*<a href="/wiki/$url_wiki_name">Cancel</a> | <a href="/wiki/GlyphWiki:$URL_HENSHU" target="_blank">Editing help</a> (opens in new window)</div>*;
-:1132
-$buffer .= qq|<div class="message2">以下にソースを表示しています:</div>|;
-$buffer .= qq|<div class="message2">Showing source in the following:</div>|;
-:1136
-$buffer .= qq|<a href="/wiki/GlyphWiki:$URL_RELATED">関連字</a>: <input type="text" name="related" value="$temp2" size="6"><br>|; 
-$buffer .= qq|<a href="/wiki/GlyphWiki:$URL_RELATED">related character</a>: <input type="text" name="related" value="$temp2" size="6"><br>|; 
-:1143
-$buffer .= qq|<div class="message"><a href="/wiki/$url_db_wiki_name">$db_wiki_name</a> に戻る。</div>|;
-$buffer .= qq|<div class="message">Return tp <a href="/wiki/$url_db_wiki_name">$db_wiki_name</a>.</div>|;
-:1155
-$buffer .= qq|<div class="message"><div class="title">■投稿する前に以下の事柄を確認してください■</div><ol><li>GlyphWikiに投稿した記事は著作権の譲渡を行ったことになり、その<span class="notice">記事がいかなる形態で改変・使用されることもあなたは許諾し、以後著作者人格権を主張・使用しないことを了承するものとみなします</span>。<li><span class="notice">他のWebページや出版物などから文章を無断で転載・コピー・トレースしないでください</span>。それ以外にも投稿内容に問題がある場合、<a href="/wiki/$URL_SAKUJO">削除の方針</a>に基づき削除されます。また、グリフウィキの運営方針についてはこれから決定していきますが、<span class="notice">最終的な決定権は管理者にあるものとします</span>。これらのことにあなたはあらかじめ同意したものとみなします。 <li>GlyphWikiのデータ・記事のライセンスはWikipediaの記事のライセンス(GFDL)とは異なります。詳しくは<a href="/wiki/GlyphWiki:$URL_LICENSE">データ・記事のライセンス</a>を参照してください。</ol></div>|;
-$buffer .= qq|<div class="message"><div class="title">*** please confirm the following matters before contributing it ***</div><ol><li>GlyphWikiに投稿した記事は著作権の譲渡を行ったことになり、その<span class="notice">記事がいかなる形態で改変・使用されることもあなたは許諾し、以後著作者人格権を主張・使用しないことを了承するものとみなします</span>。<li><span class="notice">他のWebページや出版物などから文章を無断で転載・コピー・トレースしないでください</span>。それ以外にも投稿内容に問題がある場合、<a href="/wiki/$URL_SAKUJO">削除の方針</a>に基づき削除されます。また、グリフウィキの運営方針についてはこれから決定していきますが、<span class="notice">最終的な決定権は管理者にあるものとします</span>。これらのことにあなたはあらかじめ同意したものとみなします。 <li>GlyphWikiのデータ・記事のライセンスはWikipediaの記事のライセンス(GFDL)とは異なります。詳しくは<a href="/wiki/GlyphWiki:$URL_LICENSE">データ・記事のライセンス</a>を参照してください。</ol></div>|;
-:1171
-$buffer .= qq|<h2>あなたの更新内容</h2>|;
-$buffer .= qq|<h2>your changes</h2>|;
-:1197
-my $summary = &url_encode("簡易調整");
-my $summary = "simple adjustment";
-:1199
-$buffer .= qq|<h2>簡易調整</h2>\n<div class="texts">適切と思われるグリフをクリックしてください。続けてプレビュー状態になります。赤枠は現在プレビュー中のグリフです。</div>|;
-$buffer .= qq|<h2>Simple adjustment</h2>\n<div class="texts">Click most proper designed glyph, and become preview mode. The red frame is currently previewed glyph.</div>|;
-:1201
-$buffer .= qq|<h2>簡易調整</h2>\n<div class="texts">適切と思われるグリフをクリックしてください。プレビュー状態になります。赤枠は現在の登録グリフです。</div>|;
-$buffer .= qq|<h2>Simple adjustment</h2>\n<div class="texts">Click most proper designed glyph, and become preview mode. The red frame is currently registered glyph.</div>|;
-:1210
-$buffer .= qq|<h3>間隔<span style="font-size: 80%; font-weight: normal;">(広く ←→ 狭く)</span></h3>|;
-$buffer .= qq|<h3>Space between two components<span style="font-size: 80%; font-weight: normal;">( get wider ←→ get narrower )</span></h3>|;
-:1286
-$buffer .= qq|<h3>比率<span style="font-size: 80%; font-weight: normal;">(左を小さく ←→ 右を小さく)</span></h3>|;
-$buffer .= qq|<h3>Ratio of two components<span style="font-size: 80%; font-weight: normal;">( get smaller the left ←→ get smaller the right )</span></h3>|;
-
-!/Users/kamichi/Dropbox/kamichi/home/glyphwiki/page_right_others.pl
-:26
-$title = qq|古い部品を引用しているグリフ|;
-$title = qq|Glyphs which quoting old part(s)|;
-:29
-$buffer .= qq!<div class="texts"><a href="?view=parts">部品名別に表示する</a> | <a href="?view=glyphs">グリフ名順で一覧する</a></div>!;
-$buffer .= qq!<div class="texts"><a href="?view=parts">order by components</a> | <a href="?view=glyphs">order by the name of glyphs</a></div>!;
-:64
-$temp_list .= qq|<hr><br>(残りは省略されています)|;
-$temp_list .= qq|<hr><br>(snipped left)|;
-:81
-$mustrenew_list .= "<br><br><a href=\"/wiki/Special:Mustrenew?view=listup&target=$pname\">この部品について一覧形式で更新する</a>";
-$mustrenew_list .= "<br><br><a href=\"/wiki/Special:Mustrenew?view=listup&target=$pname\">Update by listed view of this component</a>";
-:89
-$mustrenew_list .= "<br>(残りは省略されています)";
-$mustrenew_list .= "<br>(snipped left)";
-:100
-$buffer .= qq|<span class="text">該当するグリフはありません。</span>|;
-$buffer .= qq|<span class="text">There are no glyphs that you search for</span>|;
-:117
-$title = qq|古い部品を引用しているグリフの一括更新|;
-$title = qq|Collective update of glyph(s) using old elements|;
-:121
-$buffer .= qq|<div class="texts">更新対象:<a href="/wiki/$cgi_target"><img class="thumb related" src="/glyph/$cgi_target.50px.png" border="0"></a> <a href="/wiki/$cgi_target">$cgi_target</a></div>|;
-$buffer .= qq|<div class="texts">The target of update:<a href="/wiki/$cgi_target"><img class="thumb related" src="/glyph/$cgi_target.50px.png" border="0"></a> <a href="/wiki/$cgi_target">$cgi_target</a></div>|;
-:125,267,272
-$cgi_value = "(指定した値が不正です)";
-$cgi_value = "(the specified value is invalid)";
-:129,274
-if($cgi_value eq "" || $cgi_value eq "(指定した値が不正です)"){
-if($cgi_value eq "" || $cgi_value eq "(the specified value is invalid)"){
-:188
-$mustrenew_list .= "<li class=\"history\"><a href=\"/wiki/$name\">$name</a> 現在 : <a href=\"/wiki/$name\"><img class=\"thumb100\" src=\"/glyph/$name\@$version.100px.png\" border=\"0\"></a> vs 最新部品 : ";
-$mustrenew_list .= "<li class=\"history\"><a href=\"/wiki/$name\">$name</a> current : <a href=\"/wiki/$name\"><img class=\"thumb100\" src=\"/glyph/$name\@$version.100px.png\" border=\"0\"></a> vs. use the newest component : ";
-:190
-$mustrenew_list .= "<input type=\"checkbox\" name=\"target:$name\@$version\" value=\"update\" id=\"$name\"><label for=\"$name\">最新部品に更新する</label>";
-$mustrenew_list .= "<input type=\"checkbox\" name=\"target:$name\@$version\" value=\"update\" id=\"$name\"><label for=\"$name\">Update to use the newest component</label>";
-:238
-$buffer .= "<div class=\"texts\">(残りは省略されています)</div>";
-$buffer .= "<div class=\"texts\">(snipped left)</div>";
-:241,407
-$buffer .= "<input type=\"button\" value=\"全グリフにチェックを入れる\" onClick=\"for(i=0;i<document.list.elements.length;i++){document.list.elements[i].checked=true;}\">";
-$buffer .= "<input type=\"button\" value=\"set checked mark at all glyphs\" onClick=\"for(i=0;i<document.list.elements.length;i++){document.list.elements[i].checked=true;}\">";
-:244
-$buffer .= qq|<div class="texts">該当するグリフはありません。<br><br><a href=\"/wiki/Special:Mustrenew?view=parts\">他の旧部品引用グリフ一覧へ戻る</a></div>|;
-$buffer .= qq|<div class="texts">There are no glyphs that you selected<br><br><a href=\"/wiki/Special:Mustrenew?view=parts\">back to the list of another glyphs which are using old components</a></div>|;
-:282
-$buffer .= qq|<div class="texts">更新対象:<a href="/wiki/$cgi_target"><img class="thumb related" src="/glyph/$cgi_target.50px.png" border="0"></a> <a href="/wiki/$cgi_target">$cgi_target</a> → <a href="/wiki/$vg"><img class="thumb related" src="/glyph/$vg.50px.png" border="0"></a> <a href="/wiki/$vg">$vg</a></div>|;
-$buffer .= qq|<div class="texts">The target of update:<a href="/wiki/$cgi_target"><img class="thumb related" src="/glyph/$cgi_target.50px.png" border="0"></a> <a href="/wiki/$cgi_target">$cgi_target</a> → <a href="/wiki/$vg"><img class="thumb related" src="/glyph/$vg.50px.png" border="0"></a> <a href="/wiki/$vg">$vg</a></div>|;
-:284
-$buffer .= qq|<div class="texts">更新対象:<a href="/wiki/$cgi_target"><img class="thumb related" src="/glyph/$cgi_target.50px.png" border="0"></a> <a href="/wiki/$cgi_target">$cgi_target</a> → (まだ指定されていません)</div>|;
-$buffer .= qq|<div class="texts">The target of update:<a href="/wiki/$cgi_target"><img class="thumb related" src="/glyph/$cgi_target.50px.png" border="0"></a> <a href="/wiki/$cgi_target">$cgi_target</a> → (unselected yet)</div>|;
-:344
-$mustrenew_list .= "<li class=\"history\"><a href=\"/wiki/$name\">$name</a> 現在 : <a href=\"/wiki/$name\"><img class=\"thumb100\" src=\"/glyph/$name\@$version.100px.png\" border=\"0\"></a> vs 更新後 : ";
-$mustrenew_list .= "<li class=\"history\"><a href=\"/wiki/$name\">$name</a> Current : <a href=\"/wiki/$name\"><img class=\"thumb100\" src=\"/glyph/$name\@$version.100px.png\" border=\"0\"></a> vs After updated : ";
-:346
-$mustrenew_list .= "<input type=\"checkbox\" name=\"target:$name\@$version\" value=\"update\" id=\"$name\"><label for=\"$name\">部品を更新する</label>";
-$mustrenew_list .= "<input type=\"checkbox\" name=\"target:$name\@$version\" value=\"update\" id=\"$name\"><label for=\"$name\">Update element</label>";
-:440
-$title = qq|旧部品一括更新の完了|;
-$title = qq|Completion of lump update of old components|;
-:512
-($new_version, $time) = &put_page($dbh, $name, $loginname, $temp, '旧部品の一括更新', $env_remoteaddress, $related);
-($new_version, $time) = &put_page($dbh, $name, $loginname, $temp, 'lump update of old components', $env_remoteaddress, $related);
-:524
-$buffer .= "<div class=\"texts\">${done}個のグリフを更新しました。<br><br><a href=\"/wiki/Special:Mustrenew?view=listup&target=$cgi_target\">一覧へ戻る</a></div>";
-$buffer .= "<div class=\"texts\">Updated ${done} glyphs.<br><br><a href=\"/wiki/Special:Mustrenew?view=listup&target=$cgi_target\">back to the list</a></div>";
-:526
-$buffer .= "<div class=\"texts\">${done}個のグリフを更新しました。<br><br><a href=\"/wiki/Special:Mustrenew?view=parts\">他の旧部品引用グリフ一覧へ戻る</a></div>";
-$buffer .= "<div class=\"texts\">Updated ${done} glyphs<br><br><a href=\"/wiki/Special:Mustrenew?view=parts\">back to the list of another glyphs using old components</a></div>";
-:528,650
-$buffer .= "<h2>更新したグリフ</h2>$donelist";
-$buffer .= "<h2>Updated glyphs</h2>$donelist";
-:530
-$buffer .= "<div class=\"texts\">更新したグリフはありません。<br><br><a href=\"/wiki/Special:Mustrenew?view=listup&target=$cgi_target\">一覧へ戻る</a></div>";
-$buffer .= "<div class=\"texts\">There are no glyphs being updated.<br><br><a href=\"/wiki/Special:Mustrenew?view=listup&target=$cgi_target\">back to the list</a></div>";
-:737
-$title = qq|最近更新したページ|;
-$title = qq|Recent Changes|;
-:809
-$byuser = " $cgi_user に";
-$byuser = " by $cgi_user";
-:811
-$buffer .= qq|<div class="texts">以下は${now}までに${byuser}編集された <span class="notice">$pages</span> ページです。(<span class="notice">N</span>=新規項目、日時は日本時間)<br>|;
-$buffer .= qq|<div class="texts">Below are the last <span class="notice">$pages</span> changes${byuser}, as of ${now}. (<span class="notice">N</span>=new page, notations of time are at JST[GMT+09:00])<br>|;
-:812
-$buffer .= qq(最近の <a href="/wiki/Special:Recentchanges?view=50$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype$setuser">50</a> | <a href="/wiki/Special:Recentchanges?view=100$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype$setuser">100</a> | <a href="/wiki/Special:Recentchanges?view=250$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype$setuser">250</a> | <a href="/wiki/Special:Recentchanges?view=500$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype$setuser">500</a> 件分を表示する<br>);
-$buffer .= qq(Show last <a href="/wiki/Special:Recentchanges?view=50$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype$setuser">50</a> | <a href="/wiki/Special:Recentchanges?view=100$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype$setuser">100</a> | <a href="/wiki/Special:Recentchanges?view=250$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype$setuser">250</a> | <a href="/wiki/Special:Recentchanges?view=500$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype$setuser">500</a> changes<br>);
-:813
-$buffer .= qq(表示の対象: <a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto&listtype=glyph$offset$offsetdir$setuser">グリフのみ</a> | <a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto&listtype=document$offset$offsetdir$setuser">文章のみ</a> | <a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto&listtype=both$offset$offsetdir$setuser">いずれも</a><br>);
-$buffer .= qq(List up for changes of: <a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto&listtype=glyph$offset$offsetdir$setuser">glyphs</a> | <a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto&listtype=document$offset$offsetdir$setuser">documents</a> | <a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto&listtype=both$offset$offsetdir$setuser">both glyphs and documents</a><br>);
-:815
-$buffer .= qq(ボットの編集を<a href="/wiki/Special:Recentchanges?view=$limit&hidebots=0$hideanons$hideliu$hidemyself$hideauto$listtype$offset$offsetdir">表示</a>);
-$buffer .= qq(<a href="/wiki/Special:Recentchanges?view=$limit&hidebots=0$hideanons$hideliu$hidemyself$hideauto$listtype$offset$offsetdir">Show</a> bots);
-:817
-$buffer .= qq(ボットの編集を<a href="/wiki/Special:Recentchanges?view=$limit&hidebots=1$hideanons$hideliu$hidemyself$hideauto$listtype$offset$offsetdir">隠す</a>);
-$buffer .= qq(<a href="/wiki/Special:Recentchanges?view=$limit&hidebots=1$hideanons$hideliu$hidemyself$hideauto$listtype$offset$offsetdir">Hide</a> bots);
-:821
-$buffer .= qq(匿名利用者の編集を<a href="/wiki/Special:Recentchanges?view=$limit$hidebots&hideanons=0$hideliu$hidemyself$hideauto$listtype$offset$offsetdir">表示</a>);
-$buffer .= qq(<a href="/wiki/Special:Recentchanges?view=$limit$hidebots&hideanons=0$hideliu$hidemyself$hideauto$listtype$offset$offsetdir">Show</a> anonymous users);
-:823
-$buffer .= qq(匿名利用者の編集を<a href="/wiki/Special:Recentchanges?view=$limit$hidebots&hideanons=1$hideliu$hidemyself$hideauto$listtype$offset$offsetdir">隠す</a>);
-$buffer .= qq(<a href="/wiki/Special:Recentchanges?view=$limit$hidebots&hideanons=1$hideliu$hidemyself$hideauto$listtype$offset$offsetdir">Hide</a> anonymous users);
-:827
-$buffer .= qq(登録利用者の編集を<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons&hideliu=0$hidemyself$hideauto$listtype$offset$offsetdir">表示</a>);
-$buffer .= qq(<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons&hideliu=0$hidemyself$hideauto$listtype$offset$offsetdir">Show</a> logged-in users);
-:829
-$buffer .= qq(登録利用者の編集を<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons&hideliu=1$hidemyself$hideauto$listtype$offset$offsetdir">隠す</a>);
-$buffer .= qq(<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons&hideliu=1$hidemyself$hideauto$listtype$offset$offsetdir">Hide</a> logged-in users);
-:833
-$buffer .= qq(自分の編集を<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu&hidemyself=0$hideauto$listtype$offset$offsetdir">表示</a>);
-$buffer .= qq(<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu&hidemyself=0$hideauto$listtype$offset$offsetdir">Show</a> my edits);
-:835
-$buffer .= qq(自分の編集を<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu&hidemyself=1$hideauto$listtype$offset$offsetdir">隠す</a>);
-$buffer .= qq(<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu&hidemyself=1$hideauto$listtype$offset$offsetdir">Hide</a> my edits);
-:839
-$buffer .= qq(自動編集を<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself&hideauto=0$listtype$offset$offsetdir$setuser">表示</a>);
-$buffer .= qq(<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself&hideauto=0$listtype$offset$offsetdir$setuser">Show</a> automatic posting);
-:841
-$buffer .= qq(自動編集を<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself&hideauto=1$listtype$offset$offsetdir$setuser">隠す</a>);
-$buffer .= qq(<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself&hideauto=1$listtype$offset$offsetdir$setuser">Hide</a> automatic posting);
-:844
-$buffer .= "<br><form>利用者<input type=\"text\" name=\"user\" size=\"12\" value=\"$cgi_user\">の履歴を<input type=\"submit\" value=\"見る\">";
-$buffer .= "<br><form><input type=\"submit\" value=\"See\"> recent logs of user <input type=\"text\" name=\"user\" size=\"12\" value=\"$cgi_user\">";
-:846
-$buffer .= " | <a href=\"?user=\">利用者指定の解除</a>";
-$buffer .= " | <a href=\"?user=\">clear limitation of user</a>";
-:855
-$buffer2 .= "<div class=\"texts\">(";
-$buffer2 .= "<div class=\"texts\">(";
-:857
-$buffer2 .= "最新";
-$buffer2 .= "latest";
-:859
-$buffer2 .= "<a href=\"/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype$setuser\">最新</a>";
-$buffer2 .= "<a href=\"/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype$setuser\">latest</a>";
-:863
-$buffer2 .= "最古";
-$buffer2 .= "earliest";
-:865
-$buffer2 .= "<a href=\"/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype&dir=prev$setuser\">最古</a>";
-$buffer2 .= "<a href=\"/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype&dir=prev$setuser\">earliest</a>";
-:867,873,879
-$buffer2 .= ")(";
-$buffer2 .= ") (";
-:869
-$buffer2 .= "新しい${limit}件";
-$buffer2 .= "newer ${limit}";
-:871
-$buffer2 .= "<a href=\"/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype&offset=$ts_newest&dir=prev$setuser\">新しい${limit}件</a>";
-$buffer2 .= "<a href=\"/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype&offset=$ts_newest&dir=prev$setuser\">newer ${limit}</a>";
-:875
-$buffer2 .= "古い${limit}件";
-$buffer2 .= "older ${limit}";
-:877
-$buffer2 .= "<a href=\"/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype&offset=$ts_oldest$setuser\">古い${limit}件</a>";
-$buffer2 .= "<a href=\"/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype&offset=$ts_oldest$setuser\">older ${limit}</a>";
-:881
-$buffer2 .= ") を見る</div>";
-$buffer2 .= ")</div>";
-:884
-$buffer .= qq|<span class="text">更新されたページはありません。</span>|;
-$buffer .= qq|<span class="text">There are no pages being updated.</span>|;
-:902
-<title>GlyphWiki - 最近更新したページ</title>
-<title>GlyphWiki - Recent changes</title>
-:1040
-if($temp eq "GlyphWiki:メインページ"){
-if($temp eq "GlyphWiki:MainPage"){
-:1041
-$temp = "メインページ";
-$temp = "MainPage";
-:1043
-$buffer .= qq|<h1>$temp の変更履歴</h1>|;
-$buffer .= qq|<h1>Revision history of $temp</h1>|;
-:1044
-$title = qq|$temp の変更履歴|;
-$title = qq|Revision history of $temp|;
-:1047
-$buffer .= "<div class=\"texts\">凡例:日時はJST</div>";
-$buffer .= "<div class=\"texts\">usage : in JST time</div>";
-:1049
-$buffer .= "<div class=\"texts\">凡例:(最新版) = 最新版との比較、(前の版) = 直前の版との比較、日時はJST</div>";
-$buffer .= "<div class=\"texts\">(cur) = difference from current version, (prev) = difference from preceding version, 日時はJST</div>";
-:1088
-$history_list .= "(最新版) ";
-$history_list .= "(cur) ";
-:1091
-$history_list .= "(<a href=\"/wiki/$db_wiki_name?diff=$data[1]\">最新版</a>) ";
-$history_list .= "(<a href=\"/wiki/$db_wiki_name?diff=$data[1]\">cur</a>) ";
-:1094
-$history_list .= "(<a href=\"/wiki/$db_wiki_name\@$data[1]?diff=".($data[1] - 1)."\">前の版</a>) ";
-$history_list .= "(<a href=\"/wiki/$db_wiki_name\@$data[1]?diff=".($data[1] - 1)."\">prev</a>) ";
-:1096
-$history_list .= "(前の版) ";
-$history_list .= "(prev) ";
-:1110
-$buffer .= qq|<div class="texts">(残りは省略されています ... <a href="?action=history&view=all">すべて表示する</a>)</div>|;
-$buffer .= qq|<div class="texts">(snipped ... <a href="?action=history&view=all">view all</a>)</div>|;
-:1113
-$buffer .= qq|<span class="text">このページには変更履歴がありません。</span>|;
-$buffer .= qq|<span class="text">There is no edit history for this page.</span>|;
-:1134
-$title = qq|検索|;
-$title = qq|Search results|;
-:1149
-$buffer .= qq|<span class="text">グリフウィキの検索についての詳しい情報は、<a href="/wiki/GlyphWiki:$URL_KENSAKU">GlyphWiki:$WORD_KENSAKU</a>をご覧下さい。</span><br><br>|;
-$buffer .= qq|<span class="text">See more details for searching function. <a href="/wiki/GlyphWiki:$URL_KENSAKU">GlyphWiki:$WORD_KENSAKU</a></span><br><br>|;
-:1153
-$buffer .= qq|<br><span class="query">(アルファベットの大文字と小文字は区別しません)</span></form>|;
-$buffer .= qq|<br><span class="query">(small and capital letter of the alphabet are not distinguished)</span></form>|;
-:1163
-$buffer .= qq|<div class="texts">$temp 件目以降の検索結果です。<a href="?search=$query&fulltext=検索&offset=$prev">これより前の検索結果を見る</a></div>|;
-$buffer .= qq|<div class="texts">results of No.$temp <a href="?search=$query&fulltext=検索&offset=$prev">see previous results</a></div>|;
-:1179
-$buffer .= qq|<div class="texts"><a href="?search=$query&fulltext=検索&offset=$prev">これより前の検索結果を見る</a></div>|;
-$buffer .= qq|<div class="texts"><a href="?search=$query&fulltext=検索&offset=$prev">see previous results</a></div>|;
-:1183
-$buffer .= qq|<div class="texts">さらに検索結果がある可能性があります。<a href="?search=$query&fulltext=検索&offset=$next">これ以降の検索結果を見る</a></div>|;
-$buffer .= qq|<div class="texts">There are more results. <a href="?search=$query&fulltext=検索&offset=$next">see next results</a></div>|;
-:1187
-$buffer .= qq|<br><span class="text">該当するページが見つかりませんでした。|;
-$buffer .= qq|<br><span class="text">No page text matches.|;
-:1189
-$buffer .= "検索キーワードは2文字以上である必要があります。";
-$buffer .= "Keyword must be at least 2 characters.";
-:1266
-$message .= "<div class=\"texts\"><p>あなたのメールアドレスは確認されました。ログインしてウィキを使用できます。</p><p><a href=\"/wiki/Special:Userlogin\">ログイン</a></p></div>";
-$message .= "<div class=\"texts\"><p>Your e-mail address has been confirmed. You may now log in and enjoy the wiki.</p><p><a href=\"/wiki/Special:Userlogin\">log in</a></p></div>";
-:1268
-$message .= "<div class=\"texts\"><p>確認用コードが正しくありません。このコードは期限切れです。</p><p><a href=\"/wiki/\">$LINK_DEFAULT</a> に戻る。</p></div>";
-$message .= "<div class=\"texts\"><p>Invalid confirmation code. The code may have expired.</p><p>Back to <a href=\"/wiki/\">$LINK_DEFAULT</a></p></div>";
-:1270
-$message .= "<div class=\"texts\"><p>このページを表示するにはログインが必要です。</p><p><a href=\"/wiki/Special:Userlogin?returnto=Special:Confirmemail\">ログイン</a></p></div>";
-$message .= "<div class=\"texts\"><p>You need to log in to see this page.</p><p><a href=\"/wiki/Special:Userlogin?returnto=Special:Confirmemail\">log in</a></p></div>";
-:1272
-$message .= "<div class=\"messagegreen\">メールアドレス確認メールを送信しました</div>";
-$message .= "<div class=\"messagegreen\">Confirmation email has been sent to you.</div>";
-:1273,1287
-$message .= "<div class=\"texts\"><p>現在のメールアドレス登録状況:メールアドレス確認メール送信済(メールを確認してください。まだメールアドレス正当性の確認は完了していません)</p>";
-$message .= "<div class=\"texts\"><p>Current status: Confirmation email has been sent. (Please check your email. The confirmation has not been done yet.)</p>";
-:1274,1288,1307
-$message .= "<p><form method=\"post\">もう一度確認メールを送りなおす:<input type=\"hidden\" name=\"page\" value=\"Special:Confirmemail\"><input type=\"submit\" name=\"buttons\" value=\"$BUTTON_CONFIRM_EMAIL\"></form></p>";
-$message .= "<p><form method=\"post\">send confirmatoin email again:<input type=\"hidden\" name=\"page\" value=\"Special:Confirmemail\"><input type=\"submit\" name=\"buttons\" value=\"$BUTTON_CONFIRM_EMAIL\"></form></p>";
-:1276,1290,1302,1309,1316
-$message .= "<p><form method=\"post\">新たにメールアドレスを登録する:";
-$message .= "<p><form method=\"post\">register a new email address:";
-:1278,1284,1292,1311
-$message .= "(現在登録されているメールアドレスを上書きします。再度確認メールの送信が必要となります)</p></div>";
-$message .= "(overwritten by new email address and you need to confirm new email address again)</p></div>";
-:1280
-$message .= "<p class=\"rednotice\">有効なメールアドレスが登録されていません</p>";
-$message .= "<p class=\"rednotice\">no valid email address has registered</p>";
-:1281,1295,1320
-$message .= "<div class=\"texts\"><p>現在のメールアドレス登録状況:メールアドレス未登録</p>";
-$message .= "<div class=\"texts\"><p>Current status: no email address has registered</p>";
-:1282,1296
-$message .= "<p><form method=\"post\">メールアドレスを再登録する:";
-$message .= "<p><form method=\"post\">register email address again:";
-:1286
-$message .= "<div class=\"messagegreen\">メールアドレスを登録しました。メールアドレス確認メールを送信しました</div>";
-$message .= "<div class=\"messagegreen\">Registered email address. Email for confirmation has been sent to you.</div>";
-:1294
-$message .= "<p class=\"rednotice\">メールアドレスの登録に失敗しました。有効ではないメールアドレスが入力されたようです</p>";
-$message .= "<p class=\"rednotice\">Failed to register email address. There was an invalid email address sent.</p>";
-:1301
-$message .= "<div class=\"texts\"><p>現在のメールアドレス登録状況:メールアドレス確認済($temp)</p>";
-$message .= "<div class=\"texts\"><p>Current status: email address has been confirmed ($temp)</p>";
-:1304
-$message .= "(現在登録されているメールアドレスを上書きします。再度メールの確認が必要となります)</p></div>";
-$message .= "(overwritten by new email address and you need to confirm new email address again)</p></div>";
-:1306
-$message .= "<div class=\"texts\"><p>現在のメールアドレス登録状況:メールアドレス確認メール送信済(メールが届いていないか確認してください。まだメールアドレス正当性の確認は完了していません)</p>";
-$message .= "<div class=\"texts\"><p>Current status: Confirmation email has been sent. (Please check your email. The confirmation has not been done yet.)</p>";
-:1313
-$message .= "<div class=\"texts\"><p>現在のメールアドレス登録状況:メールアドレス未確認</p>";
-$message .= "<div class=\"texts\"><p>Current status: email address has not been confirmed</p>";
-:1314
-$message .= "<p>このウィキではメールアドレスの正当性の確認が必要です。以下のボタンを押すと「GlyphWikiメールアドレスの確認」という件名の確認メールがあなたのメールアドレスに送られます。メールには確認用コードを含むリンクが書かれています。そのリンクを開くことによってメールアドレスの正当性が確認されます。</p><p><form method=\"post\"><input type=\"hidden\" name=\"page\" value=\"Special:Confirmemail\"><input type=\"submit\" name=\"buttons\" value=\"$BUTTON_CONFIRM_EMAIL\"></form></p>";
-$message .= "<p>GlyphWiki requires that confirmation of your e-mail address before using e-mail features. Activate the button below to send a confirmation mail to your address. The mail will include a link containing a code; load the link in your browser to confirm that your e-mail address is valid.</p><p><form method=\"post\"><input type=\"hidden\" name=\"page\" value=\"Special:Confirmemail\"><input type=\"submit\" name=\"buttons\" value=\"$BUTTON_CONFIRM_EMAIL\"></form></p>";
-:1318
-$message .= "(現在登録されているメールアドレスを上書きします)</p></div>";
-$message .= "(overwritten by new email address)</p></div>";
-:1321
-$message .= "<p><form method=\"post\">メールアドレスを登録する:";
-$message .= "<p><form method=\"post\">register your email address:";
-:1323
-$message .= "(メールアドレスを登録するとパスワードを忘れたときに再発行することができます)</p></div>";
-$message .= "(you would be able to reissue the log in password if you register your email address)</p></div>";
-:1327
-my $title = "メールアドレスの登録・確認";
-my $title = "Register and Confirm your email address";
-:1485,1505,1524
-$message_login .= "<div class=\"messagered\"><span class=\"notice\">ログイン失敗:</span> ";
-$message_login .= "<div class=\"messagered\"><span class=\"notice\">Login error:</span> ";
-:1487,1526
-$message_login .= "利用者名を正しく指定していません。<span class=\"small\">利用者名は 英小文字、数字、“-”からなります。</span>";
-$message_login .= "You have not specified a valid user name. <span class=\"small\">User name consist from small letters, numbers and hyphen("-").</span>";
-:1490
-$message_login .= "\"$cgi_name\" という利用者は見当たりません。綴りが正しいことを再度確認するか、下記のフォームを使ってアカウントを作成してください。";
-$message_login .= "There is no user by the name \"$cgi_name\". Check your spelling, or create a new account.";
-:1492
-$message_login .= "パスワードを空にすることはできません。再度入力してください。";
-$message_login .= "Password entered was blank. Please try again.";
-:1494
-$message_login .= "パスワードが間違っています。再度入力してください。";
-$message_login .= "Incorrect password entered. Please try again.";
-:1496
-$message_login .= "グリフウィキではログインにクッキーを使います。しかし、ご使用のブラウザ等がクッキーを無効にしているようです。クッキーを有効にして、もう一度試してみてください。";
-$message_login .= "GlyphWiki uses cookies to log in users. You have cookies disabled. Please enable them and try again.";
-:1498
-$message_login .= "利用者のアカウントは作成されましたが、ログインしていません。グリフウィキではログインにクッキーを使います。あなたはクッキーを無効な設定にしているようです。クッキーを有効にしてから作成した利用者名とパスワードでログインしてください。";
-$message_login .= "The user account was created, but you are not logged in. GlyphWiki uses cookies to log in users. You have cookies disabled. Please enable them, then log in with your new username and password.";
-:1508
-$message_login .= "メールの送信中にエラーが発生しました: 利用者 \"$cgi_name\" のメールアドレスは登録されていません。";
-$message_login .= "Error sending mail: There is no e-mail address recorded for user \"$cgi_name\".";
-:1511
-$message_login .= "メールの送信中にエラーが発生しました: 利用者 \"$cgi_name\" のメールアドレスはまだ確認されていません。";
-$message_login .= "Error sending mail: 利用者 \"$cgi_name\" のメールアドレスはまだ確認されていません。";
-:1513
-$message_login .= "新しいパスワードは24時間以内に送信済みです。悪用防止のため、パスワードは24時間間隔で再発行可能となります。";
-$message_login .= "A password reminder has already been sent, within the last 24 hours. To prevent abuse, only one password reminder will be sent per 24 hours.";
-:1518
-$message_login .= "新しいパスワードを \"$cgi_name\" さんの登録済みメールアドレスにお送りしました。メールを受け取ったら、再度ログインしてください。";
-$message_login .= "A new password has been sent to the e-mail address registered for \"$cgi_name\". Please log in again after you receive it.";
-:1528
-$message_login .= "その利用者名はすでに使われています。ほかの名前をお選びください。";
-$message_login .= "Username entered already in use. Please choose a different name.";
-:1530,1562
-$message_login .= "パスワードが短すぎます。1文字以上の文字列にしてください。";
-$message_login .= "Your password is invalid or too short. It must have at least 2 characters.";
-:1532,1564
-$message_login .= "両方のパスワードが一致しません。";
-$message_login .= "The passwords you entered do not match.";
-:1534
-$message_login .= "確認コードが間違っているか入力されていません";
-$message_login .= "The confirmation code is invalid or empty.";
-:1537
-$message_login .= "指定した名前 \"$cgi_name\" は既に存在しているアカウント \"$misleading_name\" と類似しているため使用できません。別の名前を使用してください。";
-$message_login .= "Username you entered: \"$cgi_name\" is invalid for similar to an existing account: \"$misleading_name\". Please enter another one.";
-:1545
-$message_login2 = "<p>グリフウィキに \"$cgi_name\" としてログインしました。</p>";
-$message_login2 = "<p>You are now logged in to GlyphWiki as \"$cgi_name\".</p>";
-:1548
-$message_login = "<div class=\"messagegreen\">メールアドレスの正当性を確認するためのコードを含んだメールを送信しました。この確認を行わなくてもログインはできますが、確認するまでメール通知の機能は無効化されます。</div>";
-$message_login = "<div class=\"messagegreen\">A confirmation e-mail has been sent to the nominated e-mail address. Before any other mail is sent to the account, you will have to follow the instructions in the e-mail, to confirm that the account is actually yours.</div>";
-:1551
-$message_login2 = "<p>あなたのアカウントができました。</p>";
-$message_login2 = "<p>Your account has created.</p>";
-:1558
-$message_login .= "メールで送信した臨時パスワードでログインしています。ログインを完了するには、新しいパスワードを設定しなおす必要があります。";
-$message_login .= "You logged in with a temporary e-mailed code. To finish logging in, you must set a new password here:";
-:1560
-$message_login .= "データがセットされていません。";
-$message_login .= "There are no data to be set.";
-:1587
-$base = "ログイン成功";
-$base = "Login successful";
-:1589
-$base = "パスワードの再設定";
-$base = "Reset password";
-:1591
-$base = "ログインまたはアカウント作成";
-$base = "Log in / create account";
-:1607
-<p>自動化スクリプトによるパスワードクラック攻撃を防止するため、下の画像に表示されている文字を入力してください:(<a href="/wiki/GlyphWiki:$URL_CAPTCHA">詳細</a>)<br>
-<p>To refuse attacks by automated script, please input the characters inside the following image: (<a href="/wiki/GlyphWiki:$URL_CAPTCHA">more information</a>)<br>
-:1620
-<h2>ログイン</h2>
-<h2>Log in</h2>
-:1623
-<p>アカウントはお持ちですか?<a href="/wiki/Special:Userlogin?type=createaccount&returnto=$cgi_returnto" class="notice">アカウントを作成</a></p>
-<p>Don't have an account? <a href="/wiki/Special:Userlogin?type=createaccount&returnto=$cgi_returnto" class="notice">Create one</a>.</p>
-:1625
-<p>グリフウィキにログインするにはクッキーを有効にする必要があります。</p>
-<p>You must have cookies enabled to log in to GlyphWiki.</p>
-:1631,1669
-<tr><td align="right">利用者名<td><input type="text" name="name" value="$temp_name">
-<tr><td align="right">Username:<td><input type="text" name="name" value="$temp_name">
-:1632,1670
-<tr><td align="right">パスワード<td><input type="password" name="password">
-<tr><td align="right">Password:<td><input type="password" name="password">
-:1633,1673,1720
-<tr><td>&nbsp;<td><input id="remember" type="checkbox" name="savepassword" value="savepassword"> <label for="remember">セッションを越えてパスワードを記憶する</label>
-<tr><td>&nbsp;<td><input id="remember" type="checkbox" name="savepassword" value="savepassword"> <label for="remember">Remember me (up to 7 days)</label>
-:1641
-<li>利用者名とパスワードを入力して、<span class="notice">ログイン</span>をクリックしてください。
-<li>input 'Username' and 'Password' then click <span class="notice">login</span> button
-:1642
-<li>パスワードを忘れてしまった場合は、利用者名を入力して<span class="notice">$BUTTON_NEW_PASSWORD</span>をクリックすることによりパスワードの再発行を受けられます(ただし、メールアドレスを登録していた場合に限られます)。
-<li>input 'Username' and click <span class="notice">$BUTTON_NEW_PASSWORD</span> if you forget your 'Password', then you can reset your 'Password' (only when you registered an E-mail address)
-:1654
-<h2>アカウント作成</h2>
-<h2>Create account</h2>
-:1656
-<p>すでにアカウントをお持ちの場合: <a href="/wiki/Special:Userlogin?type=loginfirst&returnto=$cgi_returnto" class="notice">ログイン</a></p>
-<p>Already have an account? <a href="/wiki/Special:Userlogin?type=loginfirst&returnto=$cgi_returnto" class="notice">Log in</a></p>
-:1658
-<p>自動で実行されるスパム防止のため、利用者名を登録する際には下の画像に表示される単語を入力する必要があります:<br>
-<p>To help protect against automated account creation, please enter the words that appear below in the box<br>
-:1659
-(<a href="/wiki/GlyphWiki:$URL_CAPTCHA">これは何ですか?</a>)</p>
-(<a href="/wiki/GlyphWiki:Captcha">more info</a>)</p>
-:1671
-<tr><td align="right"><nobr>パスワード再入力</nobr><td><input type="password" name="password2">
-<tr><td align="right"><nobr>Retype password:</nobr><td><input type="password" name="password2">
-:1672
-<tr><td align="right">メールアドレス:<td><input type="text" name="email">
-<tr><td align="right">E-mail (optional)<td><input type="text" name="email">
-:1674
-<tr><td>&nbsp;<td><input type="submit" name="buttons" value="アカウント作成" class="notice">
-<tr><td>&nbsp;<td><input type="submit" name="buttons" value="Create account" class="notice">
-:1681
-<li>使用したい利用者名とパスワードを決めて入力し、<span class="notice">アカウント作成</span>をクリックしてください。
-<li>Simply choose a username (not the same as your email) and a unique password and click <span class="notice">"create account"</span>.
-:1682
-<li>作成したアカウントの削除はできません。
-<li>You can't close the created account.
-:1683
-<li>利用者名には英小文字、数字と“-”が使えます。利用者名を決める際の注意点や詳細な解説は、<a href="/wiki/GlyphWiki:$URL_USERNAME">ユーザー名</a>を参照してください。
-<li>You can use the alphabet(small letters), numbers and hyphen for ID. See <a href="/wiki/GlyphWiki:$URL_USERNAME">more information</a> for details.
-:1692
-<h1>$cgi_name さん、ようこそ!</h1>
-<h1>Welcome, $cgi_name!</h1>
-:1695,1753
-<p><a href="/wiki/$cgi_returnto">$html_returnto</a> に戻る。
-<p>Return to <a href="/wiki/$cgi_returnto">$html_returnto</a>.
-:1709
-<h2>パスワードを設定しなおす</h2>
-<h2>Reset account password</h2>
-:1717
-<tr><td align="right">利用者名:<td>$temp_name<input type="hidden" name="name" value="$temp_name"><input type="hidden" name="password" value="$temp_password">
-<tr><td align="right">Username:<td>$temp_name<input type="hidden" name="name" value="$temp_name"><input type="hidden" name="password" value="$temp_password">
-:1718
-<tr><td align="right">新しいパスワード:<td><input type="password" name="newpassword">
-<tr><td align="right">New password:<td><input type="password" name="newpassword">
-:1719
-<tr><td align="right">パスワード再入力<td><input type="password" name="newpassword2">
-<tr><td align="right">Retype new password<td><input type="password" name="newpassword2">
-:1721
-<tr><td>&nbsp;<td><input type="submit" name="buttons" value="再設定してログイン">
-<tr><td>&nbsp;<td><input type="submit" name="buttons" value="Set password and log in">
-:1745
-my $title = "ログアウト";
-my $title = "User logout";
-:1751
-<p><span class="notice">ログアウトしました。</span>このままグリフウィキを匿名で使い続けることができます。もう一度ログインして元の、あるいは別の利用者として使うこともできます。</p>
-<p><span class="notice">You are now logged out.</span> You can continue to use GlyphWiki anonymously, or you can log in again as the same or as a different user.</p>
-:1752
-<p>※いくつかのページはブラウザのキャッシュをクリアするまでログインしているかのように表示されることがあります。</p>
-<p>Note that some pages may continue to be displayed as if you were still logged in, until you clear your browser cache.</p>
-
diff --git a/glyphwiki/en.notyet.txt b/glyphwiki/en.notyet.txt
deleted file mode 100644 (file)
index 57ea6a4..0000000
+++ /dev/null
@@ -1,245 +0,0 @@
-!/Users/kamichi/Dropbox/kamichi/home/www/glyphwiki.org/index.cgi
-:720
-($new_version, $registered_time) = &put_page($DBH, $db_wiki_name, $user, $nadata, "エイリアス入れ替え", $env_remoteaddress, $narelated, -1, 0);
-($new_version, $registered_time) = &put_page($DBH, $db_wiki_name, $user, $nadata, "エイリアス入れ替え", $env_remoteaddress, $narelated, -1, 0);
-:727
-($new_version, $registered_time) = &put_page($DBH, $oname, $user, $ntdata, "エイリアス入れ替え(自動更新)", $env_remoteaddress, $orelated, -1, 0);
-($new_version, $registered_time) = &put_page($DBH, $oname, $user, $ntdata, "エイリアス入れ替え(自動更新)", $env_remoteaddress, $orelated, -1, 0);
-:732
-($new_version, $registered_time) = &put_page($DBH, $target, $user, $ntdata, "エイリアス入れ替え(自動更新)", $env_remoteaddress, $ntrelated, -1, 0);
-($new_version, $registered_time) = &put_page($DBH, $target, $user, $ntdata, "エイリアス入れ替え(自動更新)", $env_remoteaddress, $ntrelated, -1, 0);
-
-!/Users/kamichi/Dropbox/kamichi/home/glyphwiki/common.pl
-:755
-$URL_USERNAME = &url_encode("ユーザー名");
-$URL_USERNAME = &url_encode("ユーザー名");
-:756
-$URL_SANDBOX = &url_encode("サンドボックス");
-$URL_SANDBOX = &url_encode("サンドボックス");
-:757
-$URL_SEISAKUIRAI = &url_encode("制作依頼");
-$URL_SEISAKUIRAI = &url_encode("制作依頼");
-:758
-$URL_HENSHU = &url_encode("編集の仕方");
-$URL_HENSHU = &url_encode("編集の仕方");
-:759
-$URL_YOUYAKU = &url_encode("常に要約欄に記入する");
-$URL_YOUYAKU = &url_encode("常に要約欄に記入する");
-:764
-$URL_RELATED = &url_encode("関連字");
-$URL_RELATED = &url_encode("関連字");
-:765
-$URL_VARIANT = &url_encode("異体字");
-$URL_VARIANT = &url_encode("異体字");
-:766
-$URL_BUG = &url_encode("バグ報告");
-$URL_BUG = &url_encode("バグ報告");
-:770
-$URL_FONT = &url_encode("フォント生成");
-$URL_FONT = &url_encode("フォント生成");
-:771
-$URL_ALIAS = &url_encode("エイリアス");
-$URL_ALIAS = &url_encode("エイリアス");
-:772
-$URL_CAPTCHA = &url_encode("キャプチャ");
-$URL_CAPTCHA = &url_encode("キャプチャ");
-:775
-$URL_GUIDE = &url_encode("命名ガイドライン");
-$URL_GUIDE = &url_encode("命名ガイドライン");
-:789
-$WORD_REGISTER_EMAIL = "メールアドレスを登録する";
-$WORD_REGISTER_EMAIL = "メールアドレスを登録する";
-:815
-$WORD_MUSTRELATE = "関連付けるべきグリフ";
-$WORD_MUSTRELATE = "関連付けるべきグリフ";
-
-!/Users/kamichi/Dropbox/kamichi/home/glyphwiki/config.pl
-
-!/Users/kamichi/Dropbox/kamichi/home/glyphwiki/get_dir.pl
-
-!/Users/kamichi/Dropbox/kamichi/home/glyphwiki/makefont.pl
-
-!/Users/kamichi/Dropbox/kamichi/home/glyphwiki/makeglyphfont.pl
-
-!/Users/kamichi/Dropbox/kamichi/home/glyphwiki/page_left.pl
-
-!/Users/kamichi/Dropbox/kamichi/home/glyphwiki/page_others.pl
-
-!/Users/kamichi/Dropbox/kamichi/home/glyphwiki/page_right_general.pl
-:146
-$post_temp = " 異体字";
-$post_temp = " 異体字";
-:149
-$post_temp = " 別字形";
-$post_temp = " 別字形";
-:152
-$sqlh = sql_prepare($dbh, "SELECT data FROM wiki WHERE name = 'GlyphWiki:グリフの説明' AND username = 'kamichi' ORDER BY timestamp DESC LIMIT 1");
-$sqlh = sql_prepare($dbh, "SELECT data FROM wiki WHERE name = 'GlyphWiki:グリフの説明' AND username = 'kamichi' ORDER BY timestamp DESC LIMIT 1");
-:311
-$buffer .= qq|<div class="warning">存在しない版が指定されました。代替として最新版が表示されています。</div>|;
-$buffer .= qq|<div class="warning">存在しない版が指定されました。代替として最新版が表示されています。</div>|;
-:313
-$buffer .= qq|<div class="warning">存在しない版が指定されました。最新版に対する編集となります。</div>|;
-$buffer .= qq|<div class="warning">存在しない版が指定されました。最新版に対する編集となります。</div>|;
-:404
-$buffer .= qq|<div class=\"warning2\">UCS関連グリフの関連字に別の文字の割り当てや未定義(〓)とすることはできません。別の文字を関連付けたい場合は<a class=\"notice\" href=\"/wiki/GlyphWiki:$URL_MUSTRELATE\">$WORD_MUSTRELATE</a>に記述して異体字としての関連付けを申請してください。</div><hr>|;
-$buffer .= qq|<div class=\"warning2\">UCS関連グリフの関連字に別の文字の割り当てや未定義(〓)とすることはできません。別の文字を関連付けたい場合は<a class=\"notice\" href=\"/wiki/GlyphWiki:$URL_MUSTRELATE\">$WORD_MUSTRELATE</a>に記述して異体字としての関連付けを申請してください。</div><hr>|;
-:417
-$buffer .= qq|<div class=\"warning2\">他のグリフがこのグリフ(あるいはこのグリフの古い版)を引用しているので実際には削除できません。</div><hr>|;
-$buffer .= qq|<div class=\"warning2\">他のグリフがこのグリフ(あるいはこのグリフの古い版)を引用しているので実際には削除できません。</div><hr>|;
-:424
-$buffer .= qq|<div class=\"warning2\">エイリアスの対象グリフはバージョンを指定できません。このままでは登録はできません。バージョン指定を外すか、エイリアスではなく実体化する必要があります(専用エディタで部品を分解してください)。</div><hr>|;
-$buffer .= qq|<div class=\"warning2\">エイリアスの対象グリフはバージョンを指定できません。このままでは登録はできません。バージョン指定を外すか、エイリアスではなく実体化する必要があります(専用エディタで部品を分解してください)。</div><hr>|;
-:493
-$buffer .= qq|<div class="message">このグリフは<a href="/wiki/GlyphWiki:$URL_ALIAS">エイリアス</a>(他のグリフの別名)に指定されています。このまま編集を行うと独立したグリフ(あるいは別のグリフに対するエイリアス)となり、<span class="notice">現在指しているグリフとの関係は解消されます</span>。現在指しているグリフとの関係を継続する場合は、<a class="notice" href="$alias_to?action=edit">実体となるグリフを編集</a>してください。</div>|;
-$buffer .= qq|<div class="message">このグリフは<a href="/wiki/GlyphWiki:$URL_ALIAS">エイリアス</a>(他のグリフの別名)に指定されています。このまま編集を行うと独立したグリフ(あるいは別のグリフに対するエイリアス)となり、<span class="notice">現在指しているグリフとの関係は解消されます</span>。現在指しているグリフとの関係を継続する場合は、<a class="notice" href="$alias_to?action=edit">実体となるグリフを編集</a>してください。</div>|;
-:511
-$buffer .= qq|<div class="compare"><table><tr><td>保存された版<td>あなたのグリフ<tr><td><img src="/glyph/$temp_name.png"><td><img src="/get_preview_glyph.cgi?data=$cgi_textbox"></table></div>|;
-$buffer .= qq|<div class="compare"><table><tr><td>保存された版<td>あなたのグリフ<tr><td><img src="/glyph/$temp_name.png"><td><img src="/get_preview_glyph.cgi?data=$cgi_textbox"></table></div>|;
-:521
-$buffer .= qq|<div class="texts" style="margin: 1em 0 0 1em;"><a class="wiki" href=\"/wiki/$alias_to\">$alias_to</a> の<a href="/wiki/GlyphWiki:$URL_ALIAS">エイリアス</a>(別名)|;
-$buffer .= qq|<div class="texts" style="margin: 1em 0 0 1em;"><a class="wiki" href=\"/wiki/$alias_to\">$alias_to</a> の<a href="/wiki/GlyphWiki:$URL_ALIAS">エイリアス</a>(別名)|;
-:522
-$buffer .= qq| <a href="?action=swap">(このグリフが実体となるようにエイリアスを入れ替え)</a></div>|;
-$buffer .= qq| <a href="?action=swap">(このグリフが実体となるようにエイリアスを入れ替え)</a></div>|;
-:534
-$buffer .= qq|<span class="text glyph_link"><a href="/glyph/$db_wiki_name.ttf">(1字フォント)</a></span><br>|;
-$buffer .= qq|<span class="text glyph_link"><a href="/glyph/$db_wiki_name.ttf">(1字フォント)</a></span><br>|;
-:558
-if($action eq "page" && $wiki_name eq "GlyphWiki:メインページ"){
-if($action eq "page" && $wiki_name eq "GlyphWiki:メインページ"){
-:559
-$buffer .= "<div class=\"document_text\"><a href=\"http://glyphwiki.org/wiki/GlyphWiki:ロゴについて\"><img align=\"right\" src=\"/images/logo400.jpg\" border=\"0\"></a>$temp</div>";
-$buffer .= "<div class=\"document_text\"><a href=\"http://glyphwiki.org/wiki/GlyphWiki:ロゴについて\"><img align=\"right\" src=\"/images/logo400.jpg\" border=\"0\"></a>$temp</div>";
-:681
-$buffer .= qq|法務省 戸籍統一文字情報 <a href="http://kosekimoji.moj.go.jp/kosekimojidb/mjko/PeopleTop/">検索サイト</a><br>|;
-$buffer .= qq|法務省 戸籍統一文字情報 <a href="http://kosekimoji.moj.go.jp/kosekimojidb/mjko/PeopleTop/">検索サイト</a><br>|;
-:855
-$buffer_related .= "<p><a href=\"/springGraph.swf?code=$related_code_springgraph\">ばねグラフで異体字を表示する</a> | <span class=\"disable\">異体字の異体字をすべてたどって表示する</span></p>"
-$buffer_related .= "<p><a href=\"/springGraph.swf?code=$related_code_springgraph\">ばねグラフで異体字を表示する</a> | <span class=\"disable\">異体字の異体字をすべてたどって表示する</span></p>"
-:928
-$buffer .= qq|<div class="texts"><a href="/wiki/Special:Renewall?view=listup&target=$wiki_name">部品グリフを別のグリフに置き換える</a></div>|;
-$buffer .= qq|<div class="texts"><a href="/wiki/Special:Renewall?view=listup&target=$wiki_name">部品グリフを別のグリフに置き換える</a></div>|;
-:1050
-$buffer .= qq|<div class="panel"><span class="warning">この名前は<a href="/wiki/GlyphWiki:$URL_GUIDE">命名ガイドライン</a>に沿っていない可能性があります。確認のうえ正しくなければ修正してください。</span><ul><li>諸橋轍次『大漢和辞典』番号は <a href="/wiki/dkw-$num0$num1">dkw-$num0$num1</a> のように数字5桁を指定してください</ul></div>|;
-$buffer .= qq|<div class="panel"><span class="warning">この名前は<a href="/wiki/GlyphWiki:$URL_GUIDE">命名ガイドライン</a>に沿っていない可能性があります。確認のうえ正しくなければ修正してください。</span><ul><li>諸橋轍次『大漢和辞典』番号は <a href="/wiki/dkw-$num0$num1">dkw-$num0$num1</a> のように数字5桁を指定してください</ul></div>|;
-:1055
-$buffer .= qq|<div class="panel"><span class="warning">この名前は<a href="/wiki/GlyphWiki:$URL_GUIDE">命名ガイドライン</a>に沿っていない可能性があります。確認のうえ正しくなければ修正してください。</span><ul><li>法務省戸籍統一文字番号は <a href="/wiki/koseki-$num0$num1">koseki-$num0$num1</a> のように数字6桁を指定してください</ul></div>|;
-$buffer .= qq|<div class="panel"><span class="warning">この名前は<a href="/wiki/GlyphWiki:$URL_GUIDE">命名ガイドライン</a>に沿っていない可能性があります。確認のうえ正しくなければ修正してください。</span><ul><li>法務省戸籍統一文字番号は <a href="/wiki/koseki-$num0$num1">koseki-$num0$num1</a> のように数字6桁を指定してください</ul></div>|;
-:1058
-$buffer .= qq|<div class="panel"><span class="warning">この名前は<a href="/wiki/GlyphWiki:$URL_GUIDE">命名ガイドライン</a>に沿っていない可能性があります。確認のうえ正しくなければ修正してください。</span><ul><li>baseparts- は廃止されました</ul></div>|;
-$buffer .= qq|<div class="panel"><span class="warning">この名前は<a href="/wiki/GlyphWiki:$URL_GUIDE">命名ガイドライン</a>に沿っていない可能性があります。確認のうえ正しくなければ修正してください。</span><ul><li>baseparts- は廃止されました</ul></div>|;
-:1183
-$sqlh = $dbh->prepare("SELECT count(*) FROM wiki WHERE name = '$db_wiki_name' AND username != 'autoglyph-bot' AND summary != '旧部品の一括更新' AND summary != '部品の一括更新'");
-$sqlh = $dbh->prepare("SELECT count(*) FROM wiki WHERE name = '$db_wiki_name' AND username != 'autoglyph-bot' AND summary != '旧部品の一括更新' AND summary != '部品の一括更新'");
-:1184
-$DEBUG .= "SELECT count(*) FROM wiki WHERE name = '$db_wiki_name' AND username != 'autoglyph-bot' AND summary != '旧部品の一括更新' AND summary != '部品の一括更新'\n";
-$DEBUG .= "SELECT count(*) FROM wiki WHERE name = '$db_wiki_name' AND username != 'autoglyph-bot' AND summary != '旧部品の一括更新' AND summary != '部品の一括更新'\n";
-:1364
-if($wiki_name !~ m/^$EXPR_DOCUMENT_PREFIX/ && $r_related ne "〓"){
-if($wiki_name !~ m/^$EXPR_DOCUMENT_PREFIX/ && $r_related ne "〓"){
-
-!/Users/kamichi/Dropbox/kamichi/home/glyphwiki/page_right_others.pl
-:202,358
-<div class="notice">部品の配置について</div>
-<div class="notice">部品の配置について</div>
-:203,359
-標準では、古い部品の大きさと位置に合わせて新しい部品を配置しますが、変形させたり、固定させることができます。
-標準では、古い部品の大きさと位置に合わせて新しい部品を配置しますが、変形させたり、固定させることができます。
-:206,362
-<li>部品の大きさを新旧で合わせる
-<li>部品の大きさを新旧で合わせる
-:207
-<br>これが標準です。古い部品の大きさと位置に合わせて新しい部品を配置します。テキストボックスには何も入力しないでください
-<br>これが標準です。古い部品の大きさと位置に合わせて新しい部品を配置します。テキストボックスには何も入力しないでください
-:208,364
-<li>縦横ともに部品の大きさを基準に変形
-<li>縦横ともに部品の大きさを基準に変形
-:209
-<br>標準配置後の部品の領域を調節できます。「type1,左上X座標への増分値,Y座標への増分値,右下X座標への増分値,Y座標への増分値」と入力してください 例: type1,5,-4,10,-20 (配置領域の左上座標について左に5ドット、上に4ドット移動、右下座標について10ドット右に、20ドット上に移動する)
-<br>標準配置後の部品の領域を調節できます。「type1,左上X座標への増分値,Y座標への増分値,右下X座標への増分値,Y座標への増分値」と入力してください 例: type1,5,-4,10,-20 (配置領域の左上座標について左に5ドット、上に4ドット移動、右下座標について10ドット右に、20ドット上に移動する)
-:210,366
-<li>縦横ともに新たな配置領域座標を記述
-<li>縦横ともに新たな配置領域座標を記述
-:211
-<br>部品を指定した領域に配置します。「type2,左上X座標,Y座標,右下X座標,Y座標」と入力してください。
-<br>部品を指定した領域に配置します。「type2,左上X座標,Y座標,右下X座標,Y座標」と入力してください。
-:212,368
-<li>横は部品の大きさを基準に変形、縦は新たな配置領域座標を記述
-<li>横は部品の大きさを基準に変形、縦は新たな配置領域座標を記述
-:213
-<br>「type3,左上X座標への増分値,右下X座標への増分値,左上Y座標,右下Y座標」と入力してください(順番に注意)。
-<br>「type3,左上X座標への増分値,右下X座標への増分値,左上Y座標,右下Y座標」と入力してください(順番に注意)。
-:214,370
-<li>横は新たな配置領域座標を記述、縦は部品の大きさを基準に変形
-<li>横は新たな配置領域座標を記述、縦は部品の大きさを基準に変形
-:215
-<br>「type4,左上X座標,右下X座標,左上Y座標への増分値,右下Y座標への増分値,」と入力してください(順番に注意)。
-<br>「type4,左上X座標,右下X座標,左上Y座標への増分値,右下Y座標への増分値,」と入力してください(順番に注意)。
-:223
-$buffer .= " 配置調整指定:<input type=\"text\" name=\"value\" size=\"60\" value=\"$cgi_value\">";
-$buffer .= " 配置調整指定:<input type=\"text\" name=\"value\" size=\"60\" value=\"$cgi_value\">";
-:224,381
-$buffer .= " <input type=\"submit\" value=\"リストのプレビューを更新する\"></form>";
-$buffer .= " <input type=\"submit\" value=\"リストのプレビューを更新する\"></form>";
-:240
-$buffer .= "<hr><div class=\"texts\">ボタンをクリックすると「最新部品に更新する」にチェックをしたグリフをプレビューせずに一度に更新します。更新グリフの量が多いとブラウザが時間切れでエラーとなる場合がありますが、更新処理は問題なく実行できます。</div>";
-$buffer .= "<hr><div class=\"texts\">ボタンをクリックすると「最新部品に更新する」にチェックをしたグリフをプレビューせずに一度に更新します。更新グリフの量が多いとブラウザが時間切れでエラーとなる場合がありますが、更新処理は問題なく実行できます。</div>";
-:242,408
-$buffer .= "<br><br><input type=\"submit\" value=\"チェックをつけたグリフを一括で新しい部品に更新する\"></form>";
-$buffer .= "<br><br><input type=\"submit\" value=\"チェックをつけたグリフを一括で新しい部品に更新する\"></form>";
-:261
-$title = qq|部品の一括更新|;
-$title = qq|部品の一括更新|;
-:363
-<br>これが標準です。古い部品の大きさと位置に合わせて新しい部品を配置します。テキストボックスには置き換え部品グリフ名を入力してください
-<br>これが標準です。古い部品の大きさと位置に合わせて新しい部品を配置します。テキストボックスには置き換え部品グリフ名を入力してください
-:365
-<br>標準配置後の部品の領域を調節できます。「置き換え部品グリフ名,type1,左上X座標への増分値,Y座標への増分値,右下X座標への増分値,Y座標への増分値」と入力してください 例: u6c38,type1,5,-4,10,-20 (配置領域の左上座標について左に5ドット、上に4ドット移動、右下座標について10ドット右に、20ドット上に移動する)
-<br>標準配置後の部品の領域を調節できます。「置き換え部品グリフ名,type1,左上X座標への増分値,Y座標への増分値,右下X座標への増分値,Y座標への増分値」と入力してください 例: u6c38,type1,5,-4,10,-20 (配置領域の左上座標について左に5ドット、上に4ドット移動、右下座標について10ドット右に、20ドット上に移動する)
-:367
-<br>部品を指定した領域に配置します。「置き換え部品グリフ名,type2,左上X座標,Y座標,右下X座標,Y座標」と入力してください。
-<br>部品を指定した領域に配置します。「置き換え部品グリフ名,type2,左上X座標,Y座標,右下X座標,Y座標」と入力してください。
-:369
-<br>「置き換え部品グリフ名,type3,左上X座標への増分値,右下X座標への増分値,左上Y座標,右下Y座標」と入力してください(順番に注意)。
-<br>「置き換え部品グリフ名,type3,左上X座標への増分値,右下X座標への増分値,左上Y座標,右下Y座標」と入力してください(順番に注意)。
-:371
-<br>「置き換え部品グリフ名,type4,左上X座標,右下X座標,左上Y座標への増分値,右下Y座標への増分値,」と入力してください(順番に注意)。
-<br>「置き換え部品グリフ名,type4,左上X座標,右下X座標,左上Y座標への増分値,右下Y座標への増分値,」と入力してください(順番に注意)。
-:380
-$buffer .= " 置き換え部品グリフ、配置調整指定:<input type=\"text\" name=\"value\" size=\"60\" value=\"$cgi_value\">";
-$buffer .= " 置き換え部品グリフ、配置調整指定:<input type=\"text\" name=\"value\" size=\"60\" value=\"$cgi_value\">";
-:396,400
-$buffer .= qq|<div class="texts"><a href="?view=listup&target=$cgi_target&value=$cgi_value&offset=$prev">これより前の検索結果を見る</a></div>|;
-$buffer .= qq|<div class="texts"><a href="?view=listup&target=$cgi_target&value=$cgi_value&offset=$prev">これより前の検索結果を見る</a></div>|;
-:404
-$buffer .= "<div class=\"texts\">さらに対象グリフが存在する可能性があります。<a href=\"?view=listup&target=$cgi_target&value=$cgi_value&offset=$next\">これ以降の対象グリフを見る</a></div>";
-$buffer .= "<div class=\"texts\">さらに対象グリフが存在する可能性があります。<a href=\"?view=listup&target=$cgi_target&value=$cgi_value&offset=$next\">これ以降の対象グリフを見る</a></div>";
-:406
-$buffer .= "<hr><div class=\"texts\">ボタンをクリックすると「部品を更新する」にチェックをしたグリフをプレビューせずに一度に更新します。更新グリフの量が多いとブラウザが時間切れでエラーとなる場合がありますが、更新処理は問題なく実行できます。</div>";
-$buffer .= "<hr><div class=\"texts\">ボタンをクリックすると「部品を更新する」にチェックをしたグリフをプレビューせずに一度に更新します。更新グリフの量が多いとブラウザが時間切れでエラーとなる場合がありますが、更新処理は問題なく実行できます。</div>";
-:410
-$buffer .= qq|<div class="texts">該当するグリフはありません。<br><br><a href=\"/wiki/$cgi_target\">グリフページに戻る</a></div>|;
-$buffer .= qq|<div class="texts">該当するグリフはありません。<br><br><a href=\"/wiki/$cgi_target\">グリフページに戻る</a></div>|;
-:562
-$title = qq|部品一括更新の完了|;
-$title = qq|部品一括更新の完了|;
-:634
-($new_version, $time) = &put_page($dbh, $name, $loginname, $temp, '部品の一括更新', $env_remoteaddress, $related);
-($new_version, $time) = &put_page($dbh, $name, $loginname, $temp, '部品の一括更新', $env_remoteaddress, $related);
-:646
-$buffer .= "<div class=\"texts\">${done}個のグリフを更新しました。<br><br><a href=\"/wiki/Special:Renewall?view=listup&target=$cgi_target\">部品引用グリフ一覧へ戻る</a></div>";
-$buffer .= "<div class=\"texts\">${done}個のグリフを更新しました。<br><br><a href=\"/wiki/Special:Renewall?view=listup&target=$cgi_target\">部品引用グリフ一覧へ戻る</a></div>";
-:648
-$buffer .= "<div class=\"texts\">${done}個のグリフを更新しました。<br><br><a href=\"/wiki/$cgi_target\">グリフページへ戻る</a></div>";
-$buffer .= "<div class=\"texts\">${done}個のグリフを更新しました。<br><br><a href=\"/wiki/$cgi_target\">グリフページへ戻る</a></div>";
-:652
-$buffer .= "<div class=\"texts\">更新したグリフはありません。<br><br><a href=\"/wiki/Special:Renewall?view=listup&target=$cgi_target\">部品引用グリフ一覧へ戻る</a></div>";
-$buffer .= "<div class=\"texts\">更新したグリフはありません。<br><br><a href=\"/wiki/Special:Renewall?view=listup&target=$cgi_target\">部品引用グリフ一覧へ戻る</a></div>";
-:904
-<description>最近付け加えられた変更はこのフィードで確認できます。</description>
-<description>最近付け加えられた変更はこのフィードで確認できます。</description>
-:1643,1684
-<li>その他、ログインに関する情報は<a href="/wiki/GlyphWiki:$URL_LOGIN">GlyphWiki:$WORD_LOGIN</a>を参照してください。 
-<li>その他、ログインに関する情報は<a href="/wiki/GlyphWiki:$URL_LOGIN">GlyphWiki:$WORD_LOGIN</a>を参照してください。 
-
diff --git a/glyphwiki/en.txt b/glyphwiki/en.txt
deleted file mode 100644 (file)
index 99372a3..0000000
+++ /dev/null
@@ -1,1307 +0,0 @@
-!/Users/kamichi/Dropbox/kamichi/home/www/glyphwiki.org/index.cgi
-:720
-($new_version, $registered_time) = &put_page($DBH, $db_wiki_name, $user, $nadata, "エイリアス入れ替え", $env_remoteaddress, $narelated, -1, 0);
-($new_version, $registered_time) = &put_page($DBH, $db_wiki_name, $user, $nadata, "エイリアス入れ替え", $env_remoteaddress, $narelated, -1, 0);
-:727
-($new_version, $registered_time) = &put_page($DBH, $oname, $user, $ntdata, "エイリアス入れ替え(自動更新)", $env_remoteaddress, $orelated, -1, 0);
-($new_version, $registered_time) = &put_page($DBH, $oname, $user, $ntdata, "エイリアス入れ替え(自動更新)", $env_remoteaddress, $orelated, -1, 0);
-:732
-($new_version, $registered_time) = &put_page($DBH, $target, $user, $ntdata, "エイリアス入れ替え(自動更新)", $env_remoteaddress, $ntrelated, -1, 0);
-($new_version, $registered_time) = &put_page($DBH, $target, $user, $ntdata, "エイリアス入れ替え(自動更新)", $env_remoteaddress, $ntrelated, -1, 0);
-:878
-$temp = sprintf("<div class=\"texts\"><p>グリフ実装率:%d\% (実装済:%dグリフ、未実装:%dグリフ)</p></div>", int($implemented / ($unimplemented + $implemented) * 100), $implemented, $unimplemented);
-$temp = sprintf("<div class=\"texts\"><p>implimented ratio of glyphs :%d\% (implimented : %d glyphs, not yet : %d glyphs)</p></div>", int($implemented / ($unimplemented + $implemented) * 100), $implemented, $unimplemented);
-:879
-$temp2 = sprintf("グリフ実装率:%d\% [済%d、未%d]", int($implemented / ($unimplemented + $implemented) * 100), $implemented, $unimplemented);
-$temp2 = sprintf("Implimented rate of glyphs : %d\% [done %d glyphs, notyet %d glyphs]", int($implemented / ($unimplemented + $implemented) * 100), $implemented, $unimplemented);
-
-!/Users/kamichi/Dropbox/kamichi/home/glyphwiki/common.pl
-:713
-$dbh->do("INSERT INTO wiki VALUES (DEFAULT, '$wikiname', COALESCE((SELECT max(version) FROM wiki WHERE name = '$wikiname'), 0) + 1, $time, '$user', 'エイリアス実体変更による自動更新', 0, '$old_buffer', '$ip', $current_related, 1)"); 
-$dbh->do("INSERT INTO wiki VALUES (DEFAULT, '$wikiname', COALESCE((SELECT max(version) FROM wiki WHERE name = '$wikiname'), 0) + 1, $time, '$user', 'Automatic update by changes of substance of aliases', 0, '$old_buffer', '$ip', $current_related, 1)"); 
-:714
-$DEBUG .= "INSERT INTO wiki VALUES (DEFAULT, '$wikiname', COALESCE((SELECT max(version) FROM wiki WHERE name = '$wikiname'), 0) + 1, $time, '$user', 'エイリアス実体変更による自動更新', 0, '$old_buffer', '$ip', $current_related, 1)\n";
-$DEBUG .= "INSERT INTO wiki VALUES (DEFAULT, '$wikiname', COALESCE((SELECT max(version) FROM wiki WHERE name = '$wikiname'), 0) + 1, $time, '$user', 'Automatic update by changes of substance of aliases', 0, '$old_buffer', '$ip', $current_related, 1)\n";
-:755
-$URL_USERNAME = &url_encode("ユーザー名");
-$URL_USERNAME = &url_encode("ユーザー名");
-:756
-$URL_SANDBOX = &url_encode("サンドボックス");
-$URL_SANDBOX = &url_encode("サンドボックス");
-:757
-$URL_SEISAKUIRAI = &url_encode("制作依頼");
-$URL_SEISAKUIRAI = &url_encode("制作依頼");
-:758
-$URL_HENSHU = &url_encode("編集の仕方");
-$URL_HENSHU = &url_encode("編集の仕方");
-:759
-$URL_YOUYAKU = &url_encode("常に要約欄に記入する");
-$URL_YOUYAKU = &url_encode("常に要約欄に記入する");
-:760
-$URL_LICENSE = &url_encode("データ・記事のライセンス");
-$URL_LICENSE = "License";
-:761
-$URL_ABOUT = &url_encode("グリフウィキについて");
-$URL_ABOUT = "About";
-:762
-$URL_PRIVACY = &url_encode("プライバシー・ポリシー");
-$URL_PRIVACY = "PrivacyPolicy";
-:763
-$URL_MENSEKI = &url_encode("免責事項");
-$URL_MENSEKI = "Disclaimers";
-:764
-$URL_RELATED = &url_encode("関連字");
-$URL_RELATED = &url_encode("関連字");
-:765
-$URL_VARIANT = &url_encode("異体字");
-$URL_VARIANT = &url_encode("異体字");
-:766
-$URL_BUG = &url_encode("バグ報告");
-$URL_BUG = &url_encode("バグ報告");
-:767
-$URL_JOIN = &url_encode("あなたにできること");
-$URL_JOIN = "JoinUs";
-:768
-$URL_FAQ = &url_encode("よくある質問");
-$URL_FAQ = "FAQ";
-:769
-$URL_HOWTO = &url_encode("どうやって使うのか");
-$URL_HOWTO = "Tutorial";
-:770
-$URL_FONT = &url_encode("フォント生成");
-$URL_FONT = &url_encode("フォント生成");
-:771
-$URL_ALIAS = &url_encode("エイリアス");
-$URL_ALIAS = &url_encode("エイリアス");
-:772
-$URL_CAPTCHA = &url_encode("キャプチャ");
-$URL_CAPTCHA = &url_encode("キャプチャ");
-:773
-$URL_NEWS = &url_encode("お知らせ");
-$URL_NEWS = "News";
-:774
-$URL_IDOBATA = &url_encode("井戸端");
-$URL_IDOBATA = &url_encode("VillagePump");
-:775
-$URL_GUIDE = &url_encode("命名ガイドライン");
-$URL_GUIDE = &url_encode("命名ガイドライン");
-:777
-$WORD_QUERY = "問い合わせ";
-$WORD_QUERY = "You searched for";
-:779
-$WORD_EDITOR = "専用エディタで編集する";
-$WORD_EDITOR = "Edit by glyph editor";
-:781
-$WORD_DESCRIPTION = "説明";
-$WORD_DESCRIPTION = "Description";
-:783
-$WORD_DEFAULT = "メインページ";
-$WORD_DEFAULT = "MainPage";
-:786
-$WORD_CONFIRM_EMAIL = "確認用コードを送信する";
-$WORD_CONFIRM_EMAIL = "Send confirmation code by email.";
-:789
-$WORD_REGISTER_EMAIL = "メールアドレスを登録する";
-$WORD_REGISTER_EMAIL = "メールアドレスを登録する";
-:792
-$WORD_NEW_PASSWORD = "新しいパスワードをメールで送る";
-$WORD_NEW_PASSWORD = "E-mail new password";
-:795
-$WORD_LOGIN = "ログイン";
-$WORD_LOGIN = "Log in";
-:799
-$WORD_FROM = "出典: フリーグリフデータベース『グリフウィキ(GlyphWiki)』";
-$WORD_FROM = "From GlyphWiki: the free glyph database";
-:801
-$TAB_KAISETSU = "解説";
-$TAB_KAISETSU = "article";
-:802
-$TAB_SPECIAL = "特別ページ";
-$TAB_SPECIAL = "special page";
-:803
-$TAB_EDIT = "編集";
-$TAB_EDIT = "edit this page";
-:804
-$TAB_VIEW_SOURCE = "ソースを表示";
-$TAB_VIEW_SOURCE = "view source";
-:805
-$TAB_GLYPH = "グリフ";
-$TAB_GLYPH = "glyph";
-:806
-$TAB_RECENT = "履歴";
-$TAB_RECENT = "history";
-:807
-$TAB_GROUP = "グループ";
-$TAB_GROUP = "group";
-:808
-$TAB_NOTE = "ノート";
-$TAB_NOTE = "discussion";
-:809
-$TAB_USER = "利用者ページ";
-$TAB_USER = "user page";
-:810
-$LABEL_RECENT = "履歴";
-$LABEL_RECENT = "hist";
-:811
-$LABEL_KAIWA = "会話";
-$LABEL_KAIWA = "Talk";
-:812
-$LABEL_USER = "利用者";
-$LABEL_USER = "User";
-:813
-$LABEL_ANONYMOUS = "匿名利用者";
-$LABEL_ANONYMOUS = "anonymous user";
-:815
-$WORD_MUSTRELATE = "関連付けるべきグリフ";
-$WORD_MUSTRELATE = "関連付けるべきグリフ";
-:819
-$WORD_HOGOKIROKU = "保護記録";
-$WORD_HOGOKIROKU = "Protection log";
-:823
-$WORD_HOGO = "保護されたページ";
-$WORD_HOGO = "Protected page";
-:827
-$WORD_SAKUJO = "削除の方針";
-$WORD_SAKUJO = "Deletion policy";
-:831
-$WORD_DELETE_LOG = "削除記録";
-$WORD_DELETE_LOG = "Deletion log";
-:835
-$WORD_ACCEPT_AND_SUBMIT = "以上の記述を完全に理解し同意したうえで投稿する";
-$WORD_ACCEPT_AND_SUBMIT = "Save page";
-:838
-$WORD_PREVIEW = "プレビューを実行";
-$WORD_PREVIEW = "Show preview";
-:842
-$WORD_KENSAKU = "検索";
-$WORD_KENSAKU = "Search";
-:846
-$WORD_HYOUJI = "表示";
-$WORD_HYOUJI = "Go";
-:858
-$label =~ s/Talk:/ノート:/;
-# no operation
-:859
-$label =~ s/GlyphWiki-talk:/GlyphWiki-ノート:/;
-# no operation
-:860
-$label =~ s/User:/利用者:/;
-# no operation
-:861
-$label =~ s/User-talk:/利用者-会話:/;
-# no operation
-:862
-$label =~ s/Group:/グループ:/;
-# no operation
-:863
-$label =~ s/Group-talk:/グループ-ノート:/;
-# no operation
-:870
-$label =~ s/利用者:/User:/;
-# no operation
-:871
-$label =~ s/利用者-会話:/User-talk:/;
-# no operation
-:872
-$label =~ s/グループ:/Group:/;
-# no operation
-:873
-$label =~ s/グループ-ノート:/Group-talk:/; 
-# no operation
-:874
-$label =~ s/GlyphWiki-ノート:/GlyphWiki-talk:/; 
-# no operation
-:875
-$label =~ s/ノート:/Talk:/;
-# no operation
-:972
-return sprintf("%04d年%d月%d日(%s) %02d:%02d", $year + 1900, $mon + 1, $mday, qw(日 月 火 水 木 金 土)[$wday], $hour, $min);
-return sprintf("%02d:%02d, %d %s %d", $hour, $min, $mday, qw(January February March April May June July August September October November December)[$mon], $year + 1900);
-:1070
-my $subject = 'Password reminder from GlyphWiki (グリフウィキからのパスワードのお知らせ)';
-my $subject = 'Password reminder from GlyphWiki';
-:1072
-どなたか($ip のIPアドレスの使用者)がグリフウィキ(http://glyphwiki.org/)
-Someone (probably you, from IP address $1)
-:1073
-のログイン用パスワードの再発行を依頼しました。
-requested that we send you a new GlyphWiki login password.
-:1075
-利用者 "$name" のパスワードを "$temp_password" に変更しました。
-The password for user "$name" is now "$temp_password".
-:1076
-ログインして別のパスワードに変更してください。
-You should log in and change your password now.
-:1422
-my $subject = 'GlyphWiki メールアドレスの確認';
-my $subject = 'GlyphWiki e-mail address confirmation';
-:1430
-どなたか(IPアドレス $ip の使用者)がこのメールアドレスを
-Someone, probably you from IP address $ip,
-:1431
-GlyphWiki のアカウント "$name" に登録しました。
-has registered an account "$name" with this e-mail address
-:1433
-このアカウントがあなたのものであるか確認してください。
-on GlyphWiki.
-:1434
-あなたの登録したアカウントであるならば、GlyphWiki
-To confirm that this account really does belong to you and activate
-:1435
-のメール通知機能を有効にするために、以下のURLにアクセスしてください:
-e-mail features on GlyphWiki, open this link in your browser:
-:1439
-もし GlyphWiki について身に覚えがない場合は、リンクを開かないでください。
-If this is *not* you, don't follow the link. This confirmation code
-:1440
-確認用コードは $expire に期限切れになります。
-will expire at $expire.
-:1743
-unshift(@tocresult, qq(<div class="toc"><h1>目次</h1>));
-unshift(@tocresult, qq(<div class="toc"><h1>Contents</h1>));
-
-!/Users/kamichi/Dropbox/kamichi/home/glyphwiki/config.pl
-
-!/Users/kamichi/Dropbox/kamichi/home/glyphwiki/get_dir.pl
-
-!/Users/kamichi/Dropbox/kamichi/home/glyphwiki/makefont.pl
-
-!/Users/kamichi/Dropbox/kamichi/home/glyphwiki/makeglyphfont.pl
-
-!/Users/kamichi/Dropbox/kamichi/home/glyphwiki/page_left.pl
-:21
-$buffer .= qq|ナビゲーション|;
-$buffer .= qq|navigation|;
-:25
-$buffer .= qq|<li><a href="/wiki/Special:Recentchanges">最近更新したページ</a>|;
-$buffer .= qq|<li><a href="/wiki/Special:Recentchanges">Recent changes</a>|;
-:26
-$buffer .= qq|<li><a href="/wiki/Special:Random">おまかせ表示</a>|;
-$buffer .= qq|<li><a href="/wiki/Special:Random">Random glyph</a>|;
-:32
-$buffer .= qq|ヘルプ|;
-$buffer .= qq|help|;
-:35
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_HOWTO">どうやって使うのか</a>|;
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_HOWTO">Tutorial</a>|;
-:36
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_FAQ">よくある質問</a>|;
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_FAQ">FAQ</a>|;
-:37
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_JOIN">あなたにできること</a>|;
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_JOIN">Join us</a>|;
-:38
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_BUG">バグ報告</a>|;
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_BUG">Bug reports</a>|;
-:39
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_NEWS">お知らせ</a>|;
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:News">News</a>|;
-:40
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_IDOBATA">井戸端</a>|;
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_IDOBATA">Village pump</a>|;
-:46
-$buffer .= qq|検索|;
-$buffer .= qq|search|;
-:54
-$buffer .= qq|<ul><li><a href="/search/kensaku.cgi">筆画検索(試行)</a></ul>|;
-$buffer .= qq|<ul><li><a href="/search/kensaku.cgi">glyph search by strokes</a></ul>|;
-:55
-$buffer .= qq|<ul><li><a href="/search/hwr.html">手書き検索</a></ul>|;
-$buffer .= qq|<ul><li><a href="/search/hwr.html">glyph search by hand writing</a></ul>|;
-:60
-$buffer .= qq|ツールボックス|;
-$buffer .= qq|toolbox|;
-:65
-$buffer .= qq|<li><a href="/wiki/Special:Mustrenew">旧部品引用グリフ</a>|;
-$buffer .= qq|<li><a href="/wiki/Special:Mustrenew">Glyphs which using old components</a>|;
-:69
-$buffer .= qq|<li><a href="/wiki/$fullwikiname">この版への固定リンク</a>|;
-$buffer .= qq|<li><a href="/wiki/$fullwikiname">Permanent link</a>|;
-:78
-$buffer .= qq|他の言語|;
-$buffer .= qq|languages|;
-
-!/Users/kamichi/Dropbox/kamichi/home/glyphwiki/page_others.pl
-:48
-$buffer = "最終更新 ".&local_localtime($lastupdate)."。";
-$buffer = "This page was last modified on ".&local_localtime($lastupdate).".";
-:56
-<a href="/wiki/GlyphWiki:$URL_LICENSE">データ・記事のライセンス</a>
-<a href="/wiki/GlyphWiki:License">License</a>
-:57
-<a href="/wiki/GlyphWiki:$URL_PRIVACY">プライバシー・ポリシー</a>
-<a href="/wiki/GlyphWiki:PrivacyPolicy">Privacy policy</a>
-:58
-<a href="/wiki/GlyphWiki:$URL_ABOUT">グリフウィキについて</a>
-<a href="/wiki/GlyphWiki:About">About GlyphWiki</a>
-:59
-<a href="/wiki/GlyphWiki:$URL_MENSEKI">免責事項</a>
-<a href="/wiki/GlyphWiki:Disclaimers">Disclaimers</a>
-:75
-$buffer .= qq|<div class="loginned"><div><img src="/images/user.gif"> <a href="/wiki/User:$loginname">$loginname</a></div> <div><a href="/wiki/User-talk:$loginname">マイ・トーク</a></div> <div><a href="/wiki/Special:Confirmemail">メールアドレスの登録・確認</a></div> <div><a href="/wiki/Special:Userlogout?returnto=$url_query">ログアウト</a></div></div>|;
-$buffer .= qq|<div class="loginned"><div><img src="/images/user.gif"> <a href="/wiki/User:$loginname">$loginname</a></div> <div><a href="/wiki/User-talk:$loginname">My talk</a></div> <div><a href="/wiki/Special:Confirmemail">Register and Confirmation of email address</a></div> <div><a href="/wiki/Special:Userlogout?returnto=$url_query">Logout</a></div></div>|;
-:77
-$buffer .= qq|<div class="login"><img src="/images/user.gif"> <a href="/wiki/Special:Userlogin?returnto=$url_query">ログインまたはアカウント作成</a></div>|;
-$buffer .= qq|<div class="login"><img src="/images/user.gif"> <a href="/wiki/Special:Userlogin?returnto=$url_query">Log in / create account</a></div>|;
-
-!/Users/kamichi/Dropbox/kamichi/home/glyphwiki/page_right_general.pl
-:60
-$r_data =~ s/\[\[([^ \]]+ )?Talk:([^\]]+)\]\]/[[$1ノート:$2]]/g;
-# no operation
-:61
-$r_data =~ s/\[\[([^ \]]+ )?GlyphWiki-talk:([^\]]+)\]\]/[[$1GlyphWiki-ノート:$2]]/g;
-# no operation
-:62
-$r_data =~ s/\[\[([^ \]]+ )?Group:([^\]]+)\]\]/[[$1グループ:$2]]/g;
-# no operation
-:63
-$r_data =~ s/\[\[([^ \]]+ )?Group-talk:([^\]]+)\]\]/[[$1グループ-ノート:$2]]/g;
-# no operation
-:64
-$r_data =~ s/\[\[([^ \]]+ )?User:([^\]]+)\]\]/[[$1利用者:$2]]/g;
-# no operation
-:65
-$r_data =~ s/\[\[([^ \]]+ )?User-talk:([^\]]+)\]\]/[[$1利用者-会話:$2]]/g;
-# no operation
-:68
-$cgi_textbox =~ s/\[\[([^ \]]+ )?Talk:([^\]]+)\]\]/[[$1ノート:$2]]/g;
-# no operation
-:69
-$cgi_textbox =~ s/\[\[([^ \]]+ )?GlyphWiki-talk:([^\]]+)\]\]/[[$1GlyphWiki-ノート:$2]]/g;
-# no operation
-:70
-$cgi_textbox =~ s/\[\[([^ \]]+ )?Group:([^\]]+)\]\]/[[$1グループ:$2]]/g;
-# no operation
-:71
-$cgi_textbox =~ s/\[\[([^ \]]+ )?Group-talk:([^\]]+)\]\]/[[$1グループ-ノート:$2]]/g;
-# no operation
-:72
-$cgi_textbox =~ s/\[\[([^ \]]+ )?User:([^\]]+)\]\]/[[$1利用者:$2]]/g;
-# no operation
-:73
-$cgi_textbox =~ s/\[\[([^ \]]+ )?User-talk:([^\]]+)\]\]/[[$1利用者-会話:$2]]/g;
-# no operation
-:111
-$title = qq|$db_wiki_name を編集中|;
-$title = qq|Editing $db_wiki_name|;
-:113
-$title = qq|編集競合: $db_wiki_name|;
-$title = qq|Edit conflict: $db_wiki_name|;
-:115
-$title = qq|データベースエラー: $db_wiki_name|;
-$title = qq|Database error: $db_wiki_name|;
-:117
-$title = qq|データエラー: $db_wiki_name|;
-$title = qq|Data error: $db_wiki_name|;
-:119
-$title = qq|ソースを表示|;
-$title = qq|View source|;
-:146
-$post_temp = " 異体字";
-$post_temp = " 異体字";
-:149
-$post_temp = " 別字形";
-$post_temp = " 別字形";
-:152
-$sqlh = sql_prepare($dbh, "SELECT data FROM wiki WHERE name = 'GlyphWiki:グリフの説明' AND username = 'kamichi' ORDER BY timestamp DESC LIMIT 1");
-$sqlh = sql_prepare($dbh, "SELECT data FROM wiki WHERE name = 'GlyphWiki:グリフの説明' AND username = 'kamichi' ORDER BY timestamp DESC LIMIT 1");
-:183
-$buffer .= "<div class=\"query\"><span class=\"normal\">$db_wiki_name</span> のソース</div>";
-$buffer .= "<div class=\"query\">Source of <span class=\"normal\">$db_wiki_name</span></div>";
-:188
-$buffer .= "<div class=\"version\">版間での差分(日時はJST)</div>";
-$buffer .= "<div class=\"version\">difference among each versions (with JST time)</div>";
-:224
-$newversion = "最新";
-$newversion = "newest";
-:226
-$history_list .= "<li class=\"history\"><a class=\"notice\" href=\"/wiki/$url_db_wiki_name\@$data[1]\">".&local_localtime($data[3])."時点における${newversion}版</a> $temp $summary";
-$history_list .= "<li class=\"history\"><a class=\"notice\" href=\"/wiki/$url_db_wiki_name\@$data[1]\">Revision as of ".&local_localtime($data[3])." (version ${newversion})</a> $temp $summary";
-:227
-$history_list .= "<ul><li>追加された行を<span class=\"newdata\">このように</span>表示します。</ul>";
-$history_list .= "<ul><li>shows added line(s) <span class=\"newdata\">like this</span></ul>";
-:233
-$subtitle = "<h2>".&local_localtime($data[3])."時点における${newversion}版</h2>\n";
-$subtitle = "<h2>Revision as of ".&local_localtime($data[3])." (version ${newversion})</h2>\n";
-:255
-$history_list .= "<li class=\"history\"><a class=\"notice\" href=\"/wiki/$url_db_wiki_name\@$data[1]\">".&local_localtime($data[3])."時点における\@$data[1]版</a> $temp $summary";
-$history_list .= "<li class=\"history\"><a class=\"notice\" href=\"/wiki/$url_db_wiki_name\@$data[1]\">Revision as of ".&local_localtime($data[3])." (version \@$data[1])</a> $temp $summary";
-:256
-$history_list .= "<ul><li>削除された行を<span class=\"olddata\">このように</span>表示します。</ul>";
-$history_list .= "<ul><li>shows deleted line(s) <span class=\"olddata\">like this</span></ul>";
-:286
-$buffer .= "<div class=\"version\">".&local_localtime($r_timestamp)."; ".$temp." による \@${query_version}版<br>";
-$buffer .= "<div class=\"version\">".&local_localtime($r_timestamp)."; version \@${query_version} by ".$temp."<br>";
-:289
-$buffer .= "<a href=\"/wiki/".&url_encode($db_wiki_name)."\@".($query_version - 1)."\">← 前の版</a>";
-$buffer .= "<a href=\"/wiki/".&url_encode($db_wiki_name)."\@".($query_version - 1)."\">← previous version</a>";
-:291
-$buffer .= qq|<span class="disable">← 前の版</span>|;
-$buffer .= qq|<span class="disable">← previous version</span>|;
-:295
-$buffer .= " | <a href=\"/wiki/".&url_encode($db_wiki_name)."\">最新版を表示</a>";
-$buffer .= " | <a href=\"/wiki/".&url_encode($db_wiki_name)."\">latest version</a>";
-:297
-$buffer .= " | <span class=\"disable\">最新版を表示</span>";
-$buffer .= " | <span class=\"disable\">latest version</span>";
-:301
-$buffer .= " | <a href=\"/wiki/".&url_encode($db_wiki_name)."\@".($query_version + 1)."\">次の版 →</a>";
-$buffer .= " | <a href=\"/wiki/".&url_encode($db_wiki_name)."\@".($query_version + 1)."\">next version →</a>";
-:303
-$buffer .= " | <span class=\"disable\">次の版 →</span>";
-$buffer .= " | <span class=\"disable\">next version →</span>";
-:311
-$buffer .= qq|<div class="warning">存在しない版が指定されました。代替として最新版が表示されています。</div>|;
-$buffer .= qq|<div class="warning">存在しない版が指定されました。代替として最新版が表示されています。</div>|;
-:313
-$buffer .= qq|<div class="warning">存在しない版が指定されました。最新版に対する編集となります。</div>|;
-$buffer .= qq|<div class="warning">存在しない版が指定されました。最新版に対する編集となります。</div>|;
-:320
-$buffer .= qq|<div class="warning">警告: あなたはこのページの古い版を編集しています。もしこのグリフを保存すると、この版以降に追加された全ての変更が無効になってしまいます。</div>|;
-$buffer .= qq|<div class="warning">Notice: You are editing an old revision of this page. If you save it, any changes made since then will be removed.</div>|;
-:322
-$buffer .= qq|<div class="warning">警告: あなたはこのページの古い版を編集しています。もしこの文章を保存すると、この版以降に追加された全ての変更が無効になってしまいます。</div>|;
-$buffer .= qq|<div class="warning">Notice: You are editing an old revision of this page. If you save it, any changes made since then will be removed.</div>|;
-:329
-$buffer .= qq|<div class="panel"><span class="warning">グリフウィキには現在この名前の項目はありません。</span><ul><li>グリフを新しく描くには、まず下のテキストボックスに内容を書き込んでください。その際、著作権に注意してください。その後、ページ下部の<span class="notice">■投稿する前に以下を確認して下さい■</span>以下の注意事項をよく確認した上で “$BUTTON_ACCEPT_AND_SUBMIT” ボタンを押してください。そうすればすぐに見えるようになります。<li>もしあなたがグリフウィキに初めて投稿するならば、先に<a href="/wiki/GlyphWiki:$URL_HOWTO">どうやって使うのか</a>を読んでください。<li><span class="notice">投稿のテストをしたい場合、<a href="/wiki/GlyphWiki:$URL_SANDBOX">サンドボックス</a>を利用してください。</span>一度作成した項目はあなたが削除することはできません。<li>他の項目から<a href="/wiki/Special:Search?action=fulltext&search=$url_db_wiki_name">&quot;$db_wiki_name&quot;を検索する</a>。</ul><hr><ul><li><span class="notice">この項目を作成したばかりなのにこのメッセージがでる場合、データベースの更新が遅れているために表示できないのかもしれません。</span>項目を書き直す前にしばらく待ってから、再読込してみてください。<li>以前この項目を作成したことがあるならば、この項目は<a href="/wiki/$URL_DELETE_LOG">既に削除されています</a>。<a href="/wiki/$URL_SAKUJO">$WORD_SAKUJO</a>に削除された理由が記載されているかもしれません。</ul></div>|;
-$buffer .= qq|<div class="panel"><span class="warning">GlyphWiki does not have an article with this exact name.</span><ul><li>グリフを新しく描くには、まず下のテキストボックスに内容を書き込んでください。その際、著作権に注意してください。その後、ページ下部の<span class="notice">*** please confirm the following matters before contributing it ***</span>以下の注意事項をよく確認した上で “$BUTTON_ACCEPT_AND_SUBMIT” ボタンを押してください。そうすればすぐに見えるようになります。<li>もしあなたがグリフウィキに初めて投稿するならば、先に<a href="/wiki/GlyphWiki:$URL_HOWTO">どうやって使うのか</a>を読んでください。<li><span class="notice">投稿のテストをしたい場合、<a href="/wiki/GlyphWiki:$URL_SANDBOX">サンドボックス</a>を利用してください。</span>一度作成した項目はあなたが削除することはできません。<li>他の項目から<a href="/wiki/Special:Search?action=fulltext&search=$url_db_wiki_name">&quot;$db_wiki_name&quot;を検索する</a>。</ul><hr><ul><li><span class="notice">この項目を作成したばかりなのにこのメッセージがでる場合、データベースの更新が遅れているために表示できないのかもしれません。</span>項目を書き直す前にしばらく待ってから、再読込してみてください。<li>以前この項目を作成したことがあるならば、この項目は<a href="/wiki/$URL_DELETE_LOG">既に削除されています</a>。<a href="/wiki/$URL_SAKUJO">$WORD_SAKUJO</a>に削除された理由が記載されているかもしれません。</ul></div>|;
-:331
-$buffer .= qq|<div class="panel"><span class="warning">グリフウィキには現在この名前の項目はありません。</span><ul><li>文章を新しく作成するには、まず下のテキストボックスに内容を書き込んでください。その際、著作権に注意してください。その後、ページ下部の<span class="notice">■投稿する前に以下を確認して下さい■</span>以下の注意事項をよく確認した上で “$BUTTON_ACCEPT_AND_SUBMIT” ボタンを押してください。そうすればすぐに見えるようになります。<li>もしあなたがグリフウィキに初めて投稿するならば、先に<a href="/wiki/GlyphWiki:$URL_HOWTO">どうやって使うのか</a>を読んでください。<li><span class="notice">投稿のテストをしたい場合、<a href="/wiki/GlyphWiki:$URL_SANDBOX">サンドボックス</a>を利用してください。</span>一度作成した項目はあなたが削除することはできません。<li>他の項目から<a href="/wiki/Special:Search?action=fulltext&search=$url_db_wiki_name">&quot;$db_wiki_name&quot;を検索する</a>。</ul><hr><ul><li><span class="notice">この項目を作成したばかりなのにこのメッセージがでる場合、データベースの更新が遅れているために表示できないのかもしれません。</span>項目を書き直す前にしばらく待ってから、再読込してみてください。<li>以前この項目を作成したことがあるならば、この項目は<a href="/wiki/$URL_DELETE_LOG">既に削除されています</a>。<a href="/wiki/$URL_SAKUJO">$WORD_SAKUJO</a>に削除された理由が記載されているかもしれません。</ul></div>|;
-$buffer .= qq|<div class="panel"><span class="warning">GlyphWiki does not have an article with this exact name.</span><ul><li>文章を新しく作成するには、まず下のテキストボックスに内容を書き込んでください。その際、著作権に注意してください。その後、ページ下部の<span class="notice">*** please confirm the following matters before contributing it ***</span>以下の注意事項をよく確認した上で “$BUTTON_ACCEPT_AND_SUBMIT” ボタンを押してください。そうすればすぐに見えるようになります。<li>もしあなたがグリフウィキに初めて投稿するならば、先に<a href="/wiki/GlyphWiki:$URL_HOWTO">どうやって使うのか</a>を読んでください。<li><span class="notice">投稿のテストをしたい場合、<a href="/wiki/GlyphWiki:$URL_SANDBOX">サンドボックス</a>を利用してください。</span>一度作成した項目はあなたが削除することはできません。<li>他の項目から<a href="/wiki/Special:Search?action=fulltext&search=$url_db_wiki_name">&quot;$db_wiki_name&quot;を検索する</a>。</ul><hr><ul><li><span class="notice">この項目を作成したばかりなのにこのメッセージがでる場合、データベースの更新が遅れているために表示できないのかもしれません。</span>項目を書き直す前にしばらく待ってから、再読込してみてください。<li>以前この項目を作成したことがあるならば、この項目は<a href="/wiki/$URL_DELETE_LOG">既に削除されています</a>。<a href="/wiki/$URL_SAKUJO">$WORD_SAKUJO</a>に削除された理由が記載されているかもしれません。</ul></div>|;
-:338
-$buffer .= qq|<div class="message">あなたがこのページを編集し始めた後に、他の誰かがこのページ(またはこのページの別の版)を変更しました。左のグリフが現在の最新の状態です。あなたの編集していたグリフは右側に示されていますので再度編集して下さい。あなたの編集した内容は、"投稿する"をクリックした時に実際に保存されます。</div>|;
-$buffer .= qq|<div class="message">Someone else has changed this page since you started editing it. The left image contains the glyph as it currently exists. Your changes are shown in the right image. You will have to edit again. The glyph you edit will be saved when you press "Save page".</div>|;
-:340
-$buffer .= qq|<div class="message">あなたがこのページを編集し始めた後に、他の誰かがこのページ(またはこのページの別の版)を変更しました。上側のテキストエリアは現在の最新の状態です。あなたの編集していた文章は下側のテキストエリアに示されています。編集していた文章を、上側のテキストエリアの文章に組み込んで下さい。 <span class="notice">上側のテキストエリアの内容だけ</span>が、"保存する"をクリックした時に実際に保存されます。</div>|;
-$buffer .= qq|<div class="message">Someone else has changed this page since you started editing it. The upper text area contains the page text as it currently exists. Your changes are shown in the lower text area. You will have to merge your changes into the existing text. <span class="notice">Only</span> the text in the upper text area will be saved when you press "Save page".</div>|;
-:346
-$buffer .= qq|<div class="message">データベースの書き込みに失敗しました。多数のユーザが同時にアクセスしているか、サーバの負荷が高まっている可能性があります。まだ保存されていませんので、再度投稿してください。あなたの編集した内容は、"投稿する"をクリックした時に実際に保存されます。</div>|;
-$buffer .= qq|<div class="message">Failed to write to the database. 多数のユーザが同時にアクセスしているか、サーバの負荷が高まっている可能性があります。まだ保存されていませんので、再度投稿してください。あなたの編集した内容は、"投稿する"をクリックした時に実際に保存されます。</div>|;
-:351
-$buffer .= qq|<div class="message">グリフデータ、または関連字にエラーがあります。まだ保存されていませんので、内容を確認して再度投稿してください。あなたの編集した内容は、"投稿する"をクリックした時に実際に保存されます。</div>|;
-$buffer .= qq|<div class="message">There is an error at glyph data or at related char and it wasn't registered yet. Please check the content and contribute again. あなたの編集した内容は、"投稿する"をクリックした時に実際に保存されます。</div>|;
-:358
-$buffer .= qq|<div class="message">あなたは<span class="notice">ログインしていません</span>。匿名利用者による投稿としてこの項目の履歴に記録されます。また、投稿の前には<span class="notice">プレビュー</span>が必要です。|;
-$buffer .= qq|<div class="message">You are NOT currently logged in. Editing this way will cause as anonymous user to be recorded publicly in this page's history. Also you are needed to check PREVIEW. |;
-:360
-$buffer .= "匿名利用者は外部リンクを含むページを投稿することはできません。</div>";
-$buffer .= "Anonymous users can't contribute the page which includes external links.</div>";
-:369
-$buffer .= qq|<br><h2>プレビュー</h2><div class="warning2 notice">これはプレビューです。まだ保存されていません!</div><hr>|;
-$buffer .= qq|<br><h2>Preview</h2><div class="warning2 notice">Remember that this is only a preview; any changes have not yet been saved!</div><hr>|;
-:374
-$buffer .= qq|<div class="message">このページは編集できないように保護されているか、編集が禁止されています。これにはいくつか理由があります。詳しくは<a href="/wiki/$URL_HOGO">$PAGE_HOGO</a>または<a href="/wiki/$URL_HOGOKIROKU">$PAGE_HOGOKIROKU</a>をご覧ください。</div><hr>|;
-$buffer .= qq|<div class="message">This page is currently protected from editing. これにはいくつか理由があります。詳しくは<a href="/wiki/$URL_HOGO">$PAGE_HOGO</a>または<a href="/wiki/$URL_HOGOKIROKU">$PAGE_HOGOKIROKU</a>をご覧ください。</div><hr>|;
-:404
-$buffer .= qq|<div class=\"warning2\">UCS関連グリフの関連字に別の文字の割り当てや未定義(〓)とすることはできません。別の文字を関連付けたい場合は<a class=\"notice\" href=\"/wiki/GlyphWiki:$URL_MUSTRELATE\">$WORD_MUSTRELATE</a>に記述して異体字としての関連付けを申請してください。</div><hr>|;
-$buffer .= qq|<div class=\"warning2\">UCS関連グリフの関連字に別の文字の割り当てや未定義(〓)とすることはできません。別の文字を関連付けたい場合は<a class=\"notice\" href=\"/wiki/GlyphWiki:$URL_MUSTRELATE\">$WORD_MUSTRELATE</a>に記述して異体字としての関連付けを申請してください。</div><hr>|;
-:417
-$buffer .= qq|<div class=\"warning2\">他のグリフがこのグリフ(あるいはこのグリフの古い版)を引用しているので実際には削除できません。</div><hr>|;
-$buffer .= qq|<div class=\"warning2\">他のグリフがこのグリフ(あるいはこのグリフの古い版)を引用しているので実際には削除できません。</div><hr>|;
-:424
-$buffer .= qq|<div class=\"warning2\">エイリアスの対象グリフはバージョンを指定できません。このままでは登録はできません。バージョン指定を外すか、エイリアスではなく実体化する必要があります(専用エディタで部品を分解してください)。</div><hr>|;
-$buffer .= qq|<div class=\"warning2\">エイリアスの対象グリフはバージョンを指定できません。このままでは登録はできません。バージョン指定を外すか、エイリアスではなく実体化する必要があります(専用エディタで部品を分解してください)。</div><hr>|;
-:432
-$buffer .= "<div class=\"warning2\">存在しないグリフをエイリアスとして参照しています。実際には登録できません!</div><hr>";
-$buffer .= "<div class=\"warning2\">It refers unexisting glyph as alias. Actually it can't register!</div><hr>";
-:443
-$buffer .= qq|<h2>フォント</h2>|;
-$buffer .= qq|<h2>Font file</h2>|;
-:445
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_FONT">フォント生成のヘルプ</a>|;
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_FONT">help document for generating font file</a>|;
-:458
-$buffer .= qq|<li>TrueTypeフォント <a href="/font/$fontname.ttf">ダウンロード</a> (内部バージョン $fontname、$fontsize バイト)|;
-$buffer .= qq|<li>TrueType font file <a href="/font/$fontname.ttf">download</a> (inner version: $fontname、$fontsize bytes)|;
-:459,471,475
-$buffer .= qq|<ul><li>フォント生成ログ <a href="/font/$fontname.log">閲覧</a></ul>|;
-$buffer .= qq|<ul><li>log for font generation <a href="/font/$fontname.log">view</a></ul>|;
-:460
-$buffer .= qq|<li>フォント生成ソース<ul>|;
-$buffer .= qq|<li>sources to generate the font<ul>|;
-:461
-$buffer .= qq|<li><a href="/font/$fontname.source">ソースファイル</a>|;
-$buffer .= qq|<li><a href="/font/$fontname.source">source file</a>|;
-:462
-$buffer .= qq|<li><a href="/font/$fontname.meta">フォント定義ファイル</a>|;
-$buffer .= qq|<li><a href="/font/$fontname.meta">font definition file</a>|;
-:464
-$buffer .= qq|<li><a href="/font/$fontname.ivs">IVS定義ファイル</a>|;
-$buffer .= qq|<li><a href="/font/$fontname.ivs">IVS definition file</a>|;
-:470
-$buffer .= qq|<li>現在フォント生成中です。|;
-$buffer .= qq|<li>It is in generating process of font file now.|;
-:472
-$buffer .= qq|<ul><li><a href="/wiki/$wiki_name">最新の状況に更新</a></ul>|;
-$buffer .= qq|<ul><li><a href="/wiki/$wiki_name">Update latest status</a></ul>|;
-:474
-$buffer .= qq|<li>フォント生成に失敗しました(念のためページを再読み込みしてください)。|;
-$buffer .= qq|<li>Failed in generating font file. (You can try to reload this page.)|;
-:478
-$buffer .= qq|<li><a href="/wiki/$wiki_name?action=makettf">フォント生成の実行</a>|;
-$buffer .= qq|<li><a href="/wiki/$wiki_name?action=makettf">Execute to generate font</a>|;
-:479
-$buffer .= qq|<ul><li>クリックするとフォント生成が始まります。生成に必要な時間は、概ね1,000グリフで4分程度です。</ul>|;
-$buffer .= qq|<ul><li>When you click this link, font generation begins. It costs about 4 minutes per 1,000 glyphs.</ul>|;
-:482
-$buffer .= qq|<h2>グリフ集合</h2>|;
-$buffer .= qq|<h2>Set of glyphs</h2>|;
-:493
-$buffer .= qq|<div class="message">このグリフは<a href="/wiki/GlyphWiki:$URL_ALIAS">エイリアス</a>(他のグリフの別名)に指定されています。このまま編集を行うと独立したグリフ(あるいは別のグリフに対するエイリアス)となり、<span class="notice">現在指しているグリフとの関係は解消されます</span>。現在指しているグリフとの関係を継続する場合は、<a class="notice" href="$alias_to?action=edit">実体となるグリフを編集</a>してください。</div>|;
-$buffer .= qq|<div class="message">このグリフは<a href="/wiki/GlyphWiki:$URL_ALIAS">エイリアス</a>(他のグリフの別名)に指定されています。このまま編集を行うと独立したグリフ(あるいは別のグリフに対するエイリアス)となり、<span class="notice">現在指しているグリフとの関係は解消されます</span>。現在指しているグリフとの関係を継続する場合は、<a class="notice" href="$alias_to?action=edit">実体となるグリフを編集</a>してください。</div>|;
-:511
-$buffer .= qq|<div class="compare"><table><tr><td>保存された版<td>あなたのグリフ<tr><td><img src="/glyph/$temp_name.png"><td><img src="/get_preview_glyph.cgi?data=$cgi_textbox"></table></div>|;
-$buffer .= qq|<div class="compare"><table><tr><td>保存された版<td>あなたのグリフ<tr><td><img src="/glyph/$temp_name.png"><td><img src="/get_preview_glyph.cgi?data=$cgi_textbox"></table></div>|;
-:521
-$buffer .= qq|<div class="texts" style="margin: 1em 0 0 1em;"><a class="wiki" href=\"/wiki/$alias_to\">$alias_to</a> の<a href="/wiki/GlyphWiki:$URL_ALIAS">エイリアス</a>(別名)|;
-$buffer .= qq|<div class="texts" style="margin: 1em 0 0 1em;"><a class="wiki" href=\"/wiki/$alias_to\">$alias_to</a> の<a href="/wiki/GlyphWiki:$URL_ALIAS">エイリアス</a>(別名)|;
-:522
-$buffer .= qq| <a href="?action=swap">(このグリフが実体となるようにエイリアスを入れ替え)</a></div>|;
-$buffer .= qq| <a href="?action=swap">(このグリフが実体となるようにエイリアスを入れ替え)</a></div>|;
-:524
-$buffer .= qq|<div class="texts" style="margin: 1em 0 0 1em;"><a class="wiki" href=\"/wiki/$alias_to\">$alias_to</a> の<a href="/wiki/GlyphWiki:$URL_ALIAS">エイリアス</a>(別名)</div>|;
-$buffer .= qq|<div class="texts" style="margin: 1em 0 0 1em;"><a class="wiki" href=\"/wiki/$alias_to\">$alias_to</a> の<a href="/wiki/GlyphWiki:$URL_ALIAS">Aliase(s)</a></div>|;
-:532
-$buffer .= qq|<span class="text glyph_link">(SVG画像 <a href="/glyph/$db_wiki_name.svg">ポリゴン</a> <a href="/glyph/$db_wiki_name.path.svg">パス</a>)</span>|;
-$buffer .= qq|<span class="text glyph_link">(SVG image <a href="/glyph/$db_wiki_name.svg">by polygon</a> <a href="/glyph/$db_wiki_name.path.svg">by path</a>)</span>|;
-:533
-$buffer .= qq|<span class="text glyph_link"><a href="/glyph/$db_wiki_name.eps">(EPS画像)</a></span>|;
-$buffer .= qq|<span class="text glyph_link"><a href="/glyph/$db_wiki_name.eps">(EPS image)</a></span>|;
-:534
-$buffer .= qq|<span class="text glyph_link"><a href="/glyph/$db_wiki_name.ttf">(1字フォント)</a></span><br>|;
-$buffer .= qq|<span class="text glyph_link"><a href="/glyph/$db_wiki_name.ttf">(1字フォント)</a></span><br>|;
-:539
-$buffer .= qq|<span class="text glyph_link"><a href="/glyph/$db_wiki_name\@$query_version.svg">(SVG画像)</a></span>|;
-$buffer .= qq|<span class="text glyph_link"><a href="/glyph/$db_wiki_name\@$query_version.svg">(SVG image)</a></span>|;
-:540
-$buffer .= qq|<span class="text glyph_link"><a href="/glyph/$db_wiki_name\@$query_version.eps">(EPS画像)</a></span><br>|;
-$buffer .= qq|<span class="text glyph_link"><a href="/glyph/$db_wiki_name\@$query_version.eps">(EPS image)</a></span><br>|;
-:545
-$buffer .= qq|<div class="message">このページ(この版)は<span class="notice">管理者によって削除されました</span>。詳細は<a href="/wiki/$URL_DELETE_LOG">$WORD_DELETE_LOG</a>を参照してください。</div>|;
-$buffer .= qq|<div class="message">This page (this revision) was <span class="notice">deleted by administrator</span>. Please see <a href="/wiki/$URL_DELETE_LOG">$WORD_DELETE_LOG</a> for details.</div>|;
-:558
-if($action eq "page" && $wiki_name eq "GlyphWiki:メインページ"){
-if($action eq "page" && $wiki_name eq "GlyphWiki:メインページ"){
-:559
-$buffer .= "<div class=\"document_text\"><a href=\"http://glyphwiki.org/wiki/GlyphWiki:ロゴについて\"><img align=\"right\" src=\"/images/logo400.jpg\" border=\"0\"></a>$temp</div>";
-$buffer .= "<div class=\"document_text\"><a href=\"http://glyphwiki.org/wiki/GlyphWiki:ロゴについて\"><img align=\"right\" src=\"/images/logo400.jpg\" border=\"0\"></a>$temp</div>";
-:602
-$parent_info .= "<li>あなたのブラウザでの表示:<span class=\"related\">$parent_char</span>";
-$parent_info .= "<li>browser view: <span class=\"related\">$parent_char</span>";
-:626
-$parent_info .= "前の符号位置:<a href=\"/wiki/u$code\"><span class=\"related\">$char</span> (u$code)</a> ";
-$parent_info .= "previous code point: <a href=\"/wiki/u$code\"><span class=\"related\">$char</span> (u$code)</a> ";
-:651
-$parent_info .= "次の符号位置:<a href=\"/wiki/u$code\"><span class=\"related\">$char</span> (u$code)</a> ";
-$parent_info .= "next code point: <a href=\"/wiki/u$code\"><span class=\"related\">$char</span> (u$code)</a> ";
-:656,679,700,723,750,777
-$buffer .= qq|<h2>文字コード関連情報</h2>|;
-$buffer .= qq|<h2>Information about CCS</h2>|;
-:668,739,766
-$parent_info .= "前の番号:<a href=\"/wiki/$codechar\"><img class=\"thumb related\" src=\"/glyph/$codechar.50px.png\"> ($codechar)</a><br>";
-$parent_info .= "Prev. number : <a href=\"/wiki/$codechar\"><img class=\"thumb related\" src=\"/glyph/$codechar.50px.png\"> ($codechar)</a><br>";
-:674,745,772
-$parent_info .= "次の番号:<a href=\"/wiki/$codechar\"><img class=\"thumb related\" src=\"/glyph/$codechar.50px.png\"> ($codechar)</a><br>";
-$parent_info .= "Next number : <a href=\"/wiki/$codechar\"><img class=\"thumb related\" src=\"/glyph/$codechar.50px.png\"> ($codechar)</a><br>";
-:681
-$buffer .= qq|法務省 戸籍統一文字情報 <a href="http://kosekimoji.moj.go.jp/kosekimojidb/mjko/PeopleTop/">検索サイト</a><br>|;
-$buffer .= qq|法務省 戸籍統一文字情報 <a href="http://kosekimoji.moj.go.jp/kosekimojidb/mjko/PeopleTop/">検索サイト</a><br>|;
-:752,779
-$buffer .= qq|諸橋轍次『大漢和辞典』<br>|;
-$buffer .= qq|<i>Daikanwa-Jiten</i> by Tetsuji Morohashi<br>|;
-:796
-$buffer_related .= qq|<table border="0"><tr><td align="right" valign="top"><nobr><a href="/wiki/GlyphWiki:$URL_RELATED">関連字</a>:</nobr>|;
-$buffer_related .= qq|<table border="0"><tr><td align="right" valign="top"><nobr><a href="/wiki/GlyphWiki:$URL_RELATED">Related character(s)</a>:</nobr>|;
-:828
-$buffer_related .= qq|<tr><td align="right" valign="top"><nobr><a href="/wiki/GlyphWiki:$URL_VARIANT">異体字</a>:</nobr><td valign="top">$related_char$related_code<br>$label<td valign="top">$temp|;
-$buffer_related .= qq|<tr><td align="right" valign="top"><nobr><a href="/wiki/GlyphWiki:$URL_VARIANT">Variant(s)</a>:</nobr><td valign="top">$related_char$related_code<br>$label<td valign="top">$temp|;
-:836
-$buffer_related .= qq|<tr><td align="right" valign="top"><nobr><a href="/wiki/GlyphWiki:$URL_VARIANT">異体字</a>:</nobr><td valign="top"><a href="/wiki/$related_code2">$related_char$related_code</a><br>$label<td valign="top">|;
-$buffer_related .= qq|<tr><td align="right" valign="top"><nobr><a href="/wiki/GlyphWiki:$URL_VARIANT">Variant(s)</a>:</nobr><td valign="top"><a href="/wiki/$related_code2">$related_char$related_code</a><br>$label<td valign="top">|;
-:855
-$buffer_related .= "<p><a href=\"/springGraph.swf?code=$related_code_springgraph\">ばねグラフで異体字を表示する</a> | <span class=\"disable\">異体字の異体字をすべてたどって表示する</span></p>"
-$buffer_related .= "<p><a href=\"/springGraph.swf?code=$related_code_springgraph\">ばねグラフで異体字を表示する</a> | <span class=\"disable\">異体字の異体字をすべてたどって表示する</span></p>"
-:859
-$buffer_related .= "<p>(未設定)</p>";
-$buffer_related .= "<p>(undefined)</p>";
-:863
-$buffer .= qq|<h2>関連グリフ</h2>|;
-$buffer .= qq|<h2>Related glyphs</h2>|;
-:903
-$buffer_quoting .= "<br><p>(残りは省略されています ... <a href=\"?view=all\">すべて表示する</a>)</p>";
-$buffer_quoting .= "<br><p>(snipped ... <a href=\"?view=all\">view all</a>)</p>";
-:921
-$buffer .= qq|<h2>このグリフの<a href="/wiki/GlyphWiki:$URL_ALIAS">エイリアス</a>(別名)一覧</h2>|;
-$buffer .= qq|<h2>List of <a href="/wiki/GlyphWiki:Aliases">aliases</a> for this glyph</h2>|;
-:925
-$buffer .= qq|<h2>このグリフを内部で引用している他のグリフ一覧</h2>|;
-$buffer .= qq|<h2>This glyph is quoted by:</h2>|;
-:928
-$buffer .= qq|<div class="texts"><a href="/wiki/Special:Renewall?view=listup&target=$wiki_name">部品グリフを別のグリフに置き換える</a></div>|;
-$buffer .= qq|<div class="texts"><a href="/wiki/Special:Renewall?view=listup&target=$wiki_name">部品グリフを別のグリフに置き換える</a></div>|;
-:945
-$buffer .= qq|<h2>このグリフで引用している他のグリフ一覧</h2>|;
-$buffer .= qq|<h2>This glyph consists of:</h2>|;
-:966
-$local_using =~ s/^Talk:/ノート:/;
-# no operation
-:967
-$local_using =~ s/^Glyphwiki-talk:/GlyphWiki-ノート:/;
-# no operation
-:968
-$local_using =~ s/^User:/利用者:/;
-# no operation
-:969
-$local_using =~ s/^User-talk:/利用者-会話:/;
-# no operation
-:970
-$local_using =~ s/^Group:/グループ:/;
-# no operation
-:971
-$local_using =~ s/^Group-talk:/グループ-ノート:/;
-# no operation
-:977
-$buffer .= qq|<h2>このグリフを収録するグループ一覧</h2>|;
-$buffer .= qq|<h2>This glyph is a member of the below group(s):</h2>|;
-:1011
-my $temp2 = &url_encode("旧部品の更新");
-my $temp2 = &url_encode("update quoted old part(s)");
-:1012
-$buffer .= qq|<h2>引用する旧部品の更新</h2>|;
-$buffer .= qq|<h2>update quoted old part(s)</h2>|;
-:1013
-$buffer .= qq|<div class="texts">現在:<img class="glyph compare" src="/glyph/$db_wiki_name\@$newest_version.png" border="0"> |;
-$buffer .= qq|<div class="texts">current design:<img class="glyph compare" src="/glyph/$db_wiki_name\@$newest_version.png" border="0"> |;
-:1014
-$buffer .= qq|最新部品を利用:<img class="glyph compare" src="/get_preview_glyph.cgi?data=$temp" border="0"> |;
-$buffer .= qq|use the newest part(s):<img class="glyph compare" src="/get_preview_glyph.cgi?data=$temp" border="0"> |;
-:1015
-$buffer .= qq|<a href="?action=edit&buttons=$URL_PREVIEW&textbox=$temp&related=$url_related&summary=$temp2">更新する</a></div>|;
-$buffer .= qq|<a href="?action=edit&buttons=$URL_PREVIEW&textbox=$temp&related=$url_related&summary=$temp2">Update</a></div>|;
-:1041
-$buffer .= qq|<h2>このグループを引用するグループ一覧</h2>|;
-$buffer .= qq|<h2>List of groups which quotes this group</h2>|;
-:1050
-$buffer .= qq|<div class="panel"><span class="warning">この名前は<a href="/wiki/GlyphWiki:$URL_GUIDE">命名ガイドライン</a>に沿っていない可能性があります。確認のうえ正しくなければ修正してください。</span><ul><li>諸橋轍次『大漢和辞典』番号は <a href="/wiki/dkw-$num0$num1">dkw-$num0$num1</a> のように数字5桁を指定してください</ul></div>|;
-$buffer .= qq|<div class="panel"><span class="warning">この名前は<a href="/wiki/GlyphWiki:$URL_GUIDE">命名ガイドライン</a>に沿っていない可能性があります。確認のうえ正しくなければ修正してください。</span><ul><li>諸橋轍次『大漢和辞典』番号は <a href="/wiki/dkw-$num0$num1">dkw-$num0$num1</a> のように数字5桁を指定してください</ul></div>|;
-:1055
-$buffer .= qq|<div class="panel"><span class="warning">この名前は<a href="/wiki/GlyphWiki:$URL_GUIDE">命名ガイドライン</a>に沿っていない可能性があります。確認のうえ正しくなければ修正してください。</span><ul><li>法務省戸籍統一文字番号は <a href="/wiki/koseki-$num0$num1">koseki-$num0$num1</a> のように数字6桁を指定してください</ul></div>|;
-$buffer .= qq|<div class="panel"><span class="warning">この名前は<a href="/wiki/GlyphWiki:$URL_GUIDE">命名ガイドライン</a>に沿っていない可能性があります。確認のうえ正しくなければ修正してください。</span><ul><li>法務省戸籍統一文字番号は <a href="/wiki/koseki-$num0$num1">koseki-$num0$num1</a> のように数字6桁を指定してください</ul></div>|;
-:1058
-$buffer .= qq|<div class="panel"><span class="warning">この名前は<a href="/wiki/GlyphWiki:$URL_GUIDE">命名ガイドライン</a>に沿っていない可能性があります。確認のうえ正しくなければ修正してください。</span><ul><li>baseparts- は廃止されました</ul></div>|;
-$buffer .= qq|<div class="panel"><span class="warning">この名前は<a href="/wiki/GlyphWiki:$URL_GUIDE">命名ガイドライン</a>に沿っていない可能性があります。確認のうえ正しくなければ修正してください。</span><ul><li>baseparts- は廃止されました</ul></div>|;
-:1060
-$buffer .= qq|<div class="panel"><span class="warning">グリフウィキには現在この名前の項目はありません。</span><ul><li><a href="/wiki/$url_db_wiki_name?action=edit" class="recommend">&quot;$db_wiki_name&quot;という項目を新規作成する</a>。または<a href="/wiki/GlyphWiki:$URL_SEISAKUIRAI">制作依頼</a>する。<li>既存の項目から<a href="/wiki/Special:Search?action=fulltext&search=$url_db_wiki_name">&quot;$db_wiki_name&quot;を検索する</a>。</ul><hr><ul><li>もしこの項目を作成したことがあるのにこのメッセージがでる場合、データベースの更新が遅れているために表示できないか、既に削除されています(<a href="/wiki/$URL_SAKUJO">$WORD_SAKUJO</a>に削除された理由が記載されているかもしれません)。<a href="/wiki/$URL_DELETE_LOG">$WORD_DELETE_LOG</a>も確認してください。</ul></div>|;
-$buffer .= qq|<div class="panel"><span class="warning">GlyphWiki does not have an article with this exact name.</span><ul><li><a href="/wiki/$url_db_wiki_name?action=edit" class="recommend">&quot;$db_wiki_name&quot;という項目を新規作成する</a>。または<a href="/wiki/GlyphWiki:$URL_SEISAKUIRAI">制作依頼</a>する。<li>既存の項目から<a href="/wiki/Special:Search?action=fulltext&search=$url_db_wiki_name">&quot;$db_wiki_name&quot;を検索する</a>。</ul><hr><ul><li>もしこの項目を作成したことがあるのにこのメッセージがでる場合、データベースの更新が遅れているために表示できないか、既に削除されています(<a href="/wiki/$URL_SAKUJO">$WORD_SAKUJO</a>に削除された理由が記載されているかもしれません)。<a href="/wiki/$URL_DELETE_LOG">$WORD_DELETE_LOG</a>も確認してください。</ul></div>|;
-:1093
-$buffer .= qq|<h2>あなたのグリフ</h2>|;
-$buffer .= qq|<h2>Your desgined glyph</h2>|;
-:1106
-$buffer .= qq|<a href="/wiki/GlyphWiki:$URL_RELATED">関連字</a> (入力必須): <input type="text" name="related" value="$temp2" size="6"><br>|; 
-$buffer .= qq|<a href="/wiki/GlyphWiki:$URL_RELATED">related character</a> (must input): <input type="text" name="related" value="$temp2" size="6"><br>|; 
-:1114
-$buffer .= qq|<div class="message"><div class="title">■投稿する前に以下の事柄を確認してください■</div><ol><li>GlyphWikiに投稿したデータは著作権の譲渡を行ったことになり、その<span class="notice">データがいかなる形態で改変・使用されることもあなたは許諾し、以後著作者人格権を主張・使用しないことを了承するものとみなします</span>。<li><span class="notice">他のフォントや印刷物などからグリフを無断で転載・コピー・トレースしないでください</span>。それ以外にも投稿内容に問題がある場合、<a href="/wiki/$URL_SAKUJO">削除の方針</a>に基づき削除されます。また、グリフウィキの運営方針についてはこれから決定していきますが、<span class="notice">最終的な決定権は管理者にあるものとします</span>。これらのことにあなたはあらかじめ同意したものとみなします。 <li>GlyphWikiのデータ・記事のライセンスはWikipediaの記事のライセンス(GFDL)とは異なります。詳しくは <a href="/wiki/GlyphWiki:$URL_LICENSE">データ・記事のライセンス</a> を参照してください。</ol></div>|;
-$buffer .= qq|<div class="message"><div class="title">*** please confirm the following matters before contributing it ***</div><ol><li>GlyphWikiに投稿したデータは著作権の譲渡を行ったことになり、その<span class="notice">データがいかなる形態で改変・使用されることもあなたは許諾し、以後著作者人格権を主張・使用しないことを了承するものとみなします</span>。<li><span class="notice">他のフォントや印刷物などからグリフを無断で転載・コピー・トレースしないでください</span>。それ以外にも投稿内容に問題がある場合、<a href="/wiki/$URL_SAKUJO">削除の方針</a>に基づき削除されます。また、グリフウィキの運営方針についてはこれから決定していきますが、<span class="notice">最終的な決定権は管理者にあるものとします</span>。これらのことにあなたはあらかじめ同意したものとみなします。 <li>GlyphWikiのデータ・記事のライセンスはWikipediaの記事のライセンス(GFDL)とは異なります。詳しくは <a href="/wiki/GlyphWiki:$URL_LICENSE">データ・記事のライセンス</a> を参照してください。</ol></div>|;
-:1116,1157
-$buffer .= qq|<div class="toolbox"><a href="/wiki/GlyphWiki:$URL_YOUYAKU">編集内容の要約</a>: <input type="text" name="summary" value="$html_summary" size="100"><br>|;
-$buffer .= qq|<div class="toolbox"><a href="/wiki/GlyphWiki:$URL_YOUYAKU">Edit summary</a>: <input type="text" name="summary" value="$html_summary" size="100"><br>|;
-:1118,1159
-$buffer .= "要約のプレビュー: <span class=\"summary\">($html_summary)</span><br>";
-$buffer .= "Summary preview: <span class=\"summary\">($html_summary)</span><br>";
-:1127,1168
-$buffer .= qq*<a href="/wiki/$url_wiki_name">中止</a> | <a href="/wiki/GlyphWiki:$URL_HENSHU" target="_blank">編集の仕方</a> (新しいウィンドウが開きます)</div>*;
-$buffer .= qq*<a href="/wiki/$url_wiki_name">Cancel</a> | <a href="/wiki/GlyphWiki:$URL_HENSHU" target="_blank">Editing help</a> (opens in new window)</div>*;
-:1132
-$buffer .= qq|<div class="message2">以下にソースを表示しています:</div>|;
-$buffer .= qq|<div class="message2">Showing source in the following:</div>|;
-:1136
-$buffer .= qq|<a href="/wiki/GlyphWiki:$URL_RELATED">関連字</a>: <input type="text" name="related" value="$temp2" size="6"><br>|; 
-$buffer .= qq|<a href="/wiki/GlyphWiki:$URL_RELATED">related character</a>: <input type="text" name="related" value="$temp2" size="6"><br>|; 
-:1143
-$buffer .= qq|<div class="message"><a href="/wiki/$url_db_wiki_name">$db_wiki_name</a> に戻る。</div>|;
-$buffer .= qq|<div class="message">Return tp <a href="/wiki/$url_db_wiki_name">$db_wiki_name</a>.</div>|;
-:1155
-$buffer .= qq|<div class="message"><div class="title">■投稿する前に以下の事柄を確認してください■</div><ol><li>GlyphWikiに投稿した記事は著作権の譲渡を行ったことになり、その<span class="notice">記事がいかなる形態で改変・使用されることもあなたは許諾し、以後著作者人格権を主張・使用しないことを了承するものとみなします</span>。<li><span class="notice">他のWebページや出版物などから文章を無断で転載・コピー・トレースしないでください</span>。それ以外にも投稿内容に問題がある場合、<a href="/wiki/$URL_SAKUJO">削除の方針</a>に基づき削除されます。また、グリフウィキの運営方針についてはこれから決定していきますが、<span class="notice">最終的な決定権は管理者にあるものとします</span>。これらのことにあなたはあらかじめ同意したものとみなします。 <li>GlyphWikiのデータ・記事のライセンスはWikipediaの記事のライセンス(GFDL)とは異なります。詳しくは<a href="/wiki/GlyphWiki:$URL_LICENSE">データ・記事のライセンス</a>を参照してください。</ol></div>|;
-$buffer .= qq|<div class="message"><div class="title">*** please confirm the following matters before contributing it ***</div><ol><li>GlyphWikiに投稿した記事は著作権の譲渡を行ったことになり、その<span class="notice">記事がいかなる形態で改変・使用されることもあなたは許諾し、以後著作者人格権を主張・使用しないことを了承するものとみなします</span>。<li><span class="notice">他のWebページや出版物などから文章を無断で転載・コピー・トレースしないでください</span>。それ以外にも投稿内容に問題がある場合、<a href="/wiki/$URL_SAKUJO">削除の方針</a>に基づき削除されます。また、グリフウィキの運営方針についてはこれから決定していきますが、<span class="notice">最終的な決定権は管理者にあるものとします</span>。これらのことにあなたはあらかじめ同意したものとみなします。 <li>GlyphWikiのデータ・記事のライセンスはWikipediaの記事のライセンス(GFDL)とは異なります。詳しくは<a href="/wiki/GlyphWiki:$URL_LICENSE">データ・記事のライセンス</a>を参照してください。</ol></div>|;
-:1171
-$buffer .= qq|<h2>あなたの更新内容</h2>|;
-$buffer .= qq|<h2>your changes</h2>|;
-:1183
-$sqlh = $dbh->prepare("SELECT count(*) FROM wiki WHERE name = '$db_wiki_name' AND username != 'autoglyph-bot' AND summary != '旧部品の一括更新' AND summary != '部品の一括更新'");
-$sqlh = $dbh->prepare("SELECT count(*) FROM wiki WHERE name = '$db_wiki_name' AND username != 'autoglyph-bot' AND summary != '旧部品の一括更新' AND summary != '部品の一括更新'");
-:1184
-$DEBUG .= "SELECT count(*) FROM wiki WHERE name = '$db_wiki_name' AND username != 'autoglyph-bot' AND summary != '旧部品の一括更新' AND summary != '部品の一括更新'\n";
-$DEBUG .= "SELECT count(*) FROM wiki WHERE name = '$db_wiki_name' AND username != 'autoglyph-bot' AND summary != '旧部品の一括更新' AND summary != '部品の一括更新'\n";
-:1197
-my $summary = &url_encode("簡易調整");
-my $summary = "simple adjustment";
-:1199
-$buffer .= qq|<h2>簡易調整</h2>\n<div class="texts">適切と思われるグリフをクリックしてください。続けてプレビュー状態になります。赤枠は現在プレビュー中のグリフです。</div>|;
-$buffer .= qq|<h2>Simple adjustment</h2>\n<div class="texts">Click most proper designed glyph, and become preview mode. The red frame is currently previewed glyph.</div>|;
-:1201
-$buffer .= qq|<h2>簡易調整</h2>\n<div class="texts">適切と思われるグリフをクリックしてください。プレビュー状態になります。赤枠は現在の登録グリフです。</div>|;
-$buffer .= qq|<h2>Simple adjustment</h2>\n<div class="texts">Click most proper designed glyph, and become preview mode. The red frame is currently registered glyph.</div>|;
-:1210
-$buffer .= qq|<h3>間隔<span style="font-size: 80%; font-weight: normal;">(広く ←→ 狭く)</span></h3>|;
-$buffer .= qq|<h3>Space between two components<span style="font-size: 80%; font-weight: normal;">( get wider ←→ get narrower )</span></h3>|;
-:1286
-$buffer .= qq|<h3>比率<span style="font-size: 80%; font-weight: normal;">(左を小さく ←→ 右を小さく)</span></h3>|;
-$buffer .= qq|<h3>Ratio of two components<span style="font-size: 80%; font-weight: normal;">( get smaller the left ←→ get smaller the right )</span></h3>|;
-:1364
-if($wiki_name !~ m/^$EXPR_DOCUMENT_PREFIX/ && $r_related ne "〓"){
-if($wiki_name !~ m/^$EXPR_DOCUMENT_PREFIX/ && $r_related ne "〓"){
-
-!/Users/kamichi/Dropbox/kamichi/home/glyphwiki/page_right_others.pl
-:26
-$title = qq|古い部品を引用しているグリフ|;
-$title = qq|Glyphs which quoting old part(s)|;
-:29
-$buffer .= qq!<div class="texts"><a href="?view=parts">部品名別に表示する</a> | <a href="?view=glyphs">グリフ名順で一覧する</a></div>!;
-$buffer .= qq!<div class="texts"><a href="?view=parts">order by components</a> | <a href="?view=glyphs">order by the name of glyphs</a></div>!;
-:64
-$temp_list .= qq|<hr><br>(残りは省略されています)|;
-$temp_list .= qq|<hr><br>(snipped left)|;
-:81
-$mustrenew_list .= "<br><br><a href=\"/wiki/Special:Mustrenew?view=listup&target=$pname\">この部品について一覧形式で更新する</a>";
-$mustrenew_list .= "<br><br><a href=\"/wiki/Special:Mustrenew?view=listup&target=$pname\">Update by listed view of this component</a>";
-:89
-$mustrenew_list .= "<br>(残りは省略されています)";
-$mustrenew_list .= "<br>(snipped left)";
-:100
-$buffer .= qq|<span class="text">該当するグリフはありません。</span>|;
-$buffer .= qq|<span class="text">There are no glyphs that you search for</span>|;
-:117
-$title = qq|古い部品を引用しているグリフの一括更新|;
-$title = qq|Collective update of glyph(s) using old elements|;
-:121
-$buffer .= qq|<div class="texts">更新対象:<a href="/wiki/$cgi_target"><img class="thumb related" src="/glyph/$cgi_target.50px.png" border="0"></a> <a href="/wiki/$cgi_target">$cgi_target</a></div>|;
-$buffer .= qq|<div class="texts">The target of update:<a href="/wiki/$cgi_target"><img class="thumb related" src="/glyph/$cgi_target.50px.png" border="0"></a> <a href="/wiki/$cgi_target">$cgi_target</a></div>|;
-:125,267,272
-$cgi_value = "(指定した値が不正です)";
-$cgi_value = "(the specified value is invalid)";
-:129,274
-if($cgi_value eq "" || $cgi_value eq "(指定した値が不正です)"){
-if($cgi_value eq "" || $cgi_value eq "(the specified value is invalid)"){
-:188
-$mustrenew_list .= "<li class=\"history\"><a href=\"/wiki/$name\">$name</a> 現在 : <a href=\"/wiki/$name\"><img class=\"thumb100\" src=\"/glyph/$name\@$version.100px.png\" border=\"0\"></a> vs 最新部品 : ";
-$mustrenew_list .= "<li class=\"history\"><a href=\"/wiki/$name\">$name</a> current : <a href=\"/wiki/$name\"><img class=\"thumb100\" src=\"/glyph/$name\@$version.100px.png\" border=\"0\"></a> vs. use the newest component : ";
-:190
-$mustrenew_list .= "<input type=\"checkbox\" name=\"target:$name\@$version\" value=\"update\" id=\"$name\"><label for=\"$name\">最新部品に更新する</label>";
-$mustrenew_list .= "<input type=\"checkbox\" name=\"target:$name\@$version\" value=\"update\" id=\"$name\"><label for=\"$name\">Update to use the newest component</label>";
-:202,358
-<div class="notice">部品の配置について</div>
-<div class="notice">部品の配置について</div>
-:203,359
-標準では、古い部品の大きさと位置に合わせて新しい部品を配置しますが、変形させたり、固定させることができます。
-標準では、古い部品の大きさと位置に合わせて新しい部品を配置しますが、変形させたり、固定させることができます。
-:206,362
-<li>部品の大きさを新旧で合わせる
-<li>部品の大きさを新旧で合わせる
-:207
-<br>これが標準です。古い部品の大きさと位置に合わせて新しい部品を配置します。テキストボックスには何も入力しないでください
-<br>これが標準です。古い部品の大きさと位置に合わせて新しい部品を配置します。テキストボックスには何も入力しないでください
-:208,364
-<li>縦横ともに部品の大きさを基準に変形
-<li>縦横ともに部品の大きさを基準に変形
-:209
-<br>標準配置後の部品の領域を調節できます。「type1,左上X座標への増分値,Y座標への増分値,右下X座標への増分値,Y座標への増分値」と入力してください 例: type1,5,-4,10,-20 (配置領域の左上座標について左に5ドット、上に4ドット移動、右下座標について10ドット右に、20ドット上に移動する)
-<br>標準配置後の部品の領域を調節できます。「type1,左上X座標への増分値,Y座標への増分値,右下X座標への増分値,Y座標への増分値」と入力してください 例: type1,5,-4,10,-20 (配置領域の左上座標について左に5ドット、上に4ドット移動、右下座標について10ドット右に、20ドット上に移動する)
-:210,366
-<li>縦横ともに新たな配置領域座標を記述
-<li>縦横ともに新たな配置領域座標を記述
-:211
-<br>部品を指定した領域に配置します。「type2,左上X座標,Y座標,右下X座標,Y座標」と入力してください。
-<br>部品を指定した領域に配置します。「type2,左上X座標,Y座標,右下X座標,Y座標」と入力してください。
-:212,368
-<li>横は部品の大きさを基準に変形、縦は新たな配置領域座標を記述
-<li>横は部品の大きさを基準に変形、縦は新たな配置領域座標を記述
-:213
-<br>「type3,左上X座標への増分値,右下X座標への増分値,左上Y座標,右下Y座標」と入力してください(順番に注意)。
-<br>「type3,左上X座標への増分値,右下X座標への増分値,左上Y座標,右下Y座標」と入力してください(順番に注意)。
-:214,370
-<li>横は新たな配置領域座標を記述、縦は部品の大きさを基準に変形
-<li>横は新たな配置領域座標を記述、縦は部品の大きさを基準に変形
-:215
-<br>「type4,左上X座標,右下X座標,左上Y座標への増分値,右下Y座標への増分値,」と入力してください(順番に注意)。
-<br>「type4,左上X座標,右下X座標,左上Y座標への増分値,右下Y座標への増分値,」と入力してください(順番に注意)。
-:223
-$buffer .= " 配置調整指定:<input type=\"text\" name=\"value\" size=\"60\" value=\"$cgi_value\">";
-$buffer .= " 配置調整指定:<input type=\"text\" name=\"value\" size=\"60\" value=\"$cgi_value\">";
-:224,381
-$buffer .= " <input type=\"submit\" value=\"リストのプレビューを更新する\"></form>";
-$buffer .= " <input type=\"submit\" value=\"リストのプレビューを更新する\"></form>";
-:238
-$buffer .= "<div class=\"texts\">(残りは省略されています)</div>";
-$buffer .= "<div class=\"texts\">(snipped left)</div>";
-:240
-$buffer .= "<hr><div class=\"texts\">ボタンをクリックすると「最新部品に更新する」にチェックをしたグリフをプレビューせずに一度に更新します。更新グリフの量が多いとブラウザが時間切れでエラーとなる場合がありますが、更新処理は問題なく実行できます。</div>";
-$buffer .= "<hr><div class=\"texts\">ボタンをクリックすると「最新部品に更新する」にチェックをしたグリフをプレビューせずに一度に更新します。更新グリフの量が多いとブラウザが時間切れでエラーとなる場合がありますが、更新処理は問題なく実行できます。</div>";
-:241,407
-$buffer .= "<input type=\"button\" value=\"全グリフにチェックを入れる\" onClick=\"for(i=0;i<document.list.elements.length;i++){document.list.elements[i].checked=true;}\">";
-$buffer .= "<input type=\"button\" value=\"set checked mark at all glyphs\" onClick=\"for(i=0;i<document.list.elements.length;i++){document.list.elements[i].checked=true;}\">";
-:242,408
-$buffer .= "<br><br><input type=\"submit\" value=\"チェックをつけたグリフを一括で新しい部品に更新する\"></form>";
-$buffer .= "<br><br><input type=\"submit\" value=\"チェックをつけたグリフを一括で新しい部品に更新する\"></form>";
-:244
-$buffer .= qq|<div class="texts">該当するグリフはありません。<br><br><a href=\"/wiki/Special:Mustrenew?view=parts\">他の旧部品引用グリフ一覧へ戻る</a></div>|;
-$buffer .= qq|<div class="texts">There are no glyphs that you selected<br><br><a href=\"/wiki/Special:Mustrenew?view=parts\">back to the list of another glyphs which are using old components</a></div>|;
-:261
-$title = qq|部品の一括更新|;
-$title = qq|部品の一括更新|;
-:282
-$buffer .= qq|<div class="texts">更新対象:<a href="/wiki/$cgi_target"><img class="thumb related" src="/glyph/$cgi_target.50px.png" border="0"></a> <a href="/wiki/$cgi_target">$cgi_target</a> → <a href="/wiki/$vg"><img class="thumb related" src="/glyph/$vg.50px.png" border="0"></a> <a href="/wiki/$vg">$vg</a></div>|;
-$buffer .= qq|<div class="texts">The target of update:<a href="/wiki/$cgi_target"><img class="thumb related" src="/glyph/$cgi_target.50px.png" border="0"></a> <a href="/wiki/$cgi_target">$cgi_target</a> → <a href="/wiki/$vg"><img class="thumb related" src="/glyph/$vg.50px.png" border="0"></a> <a href="/wiki/$vg">$vg</a></div>|;
-:284
-$buffer .= qq|<div class="texts">更新対象:<a href="/wiki/$cgi_target"><img class="thumb related" src="/glyph/$cgi_target.50px.png" border="0"></a> <a href="/wiki/$cgi_target">$cgi_target</a> → (まだ指定されていません)</div>|;
-$buffer .= qq|<div class="texts">The target of update:<a href="/wiki/$cgi_target"><img class="thumb related" src="/glyph/$cgi_target.50px.png" border="0"></a> <a href="/wiki/$cgi_target">$cgi_target</a> → (unselected yet)</div>|;
-:344
-$mustrenew_list .= "<li class=\"history\"><a href=\"/wiki/$name\">$name</a> 現在 : <a href=\"/wiki/$name\"><img class=\"thumb100\" src=\"/glyph/$name\@$version.100px.png\" border=\"0\"></a> vs 更新後 : ";
-$mustrenew_list .= "<li class=\"history\"><a href=\"/wiki/$name\">$name</a> Current : <a href=\"/wiki/$name\"><img class=\"thumb100\" src=\"/glyph/$name\@$version.100px.png\" border=\"0\"></a> vs After updated : ";
-:346
-$mustrenew_list .= "<input type=\"checkbox\" name=\"target:$name\@$version\" value=\"update\" id=\"$name\"><label for=\"$name\">部品を更新する</label>";
-$mustrenew_list .= "<input type=\"checkbox\" name=\"target:$name\@$version\" value=\"update\" id=\"$name\"><label for=\"$name\">Update element</label>";
-:363
-<br>これが標準です。古い部品の大きさと位置に合わせて新しい部品を配置します。テキストボックスには置き換え部品グリフ名を入力してください
-<br>これが標準です。古い部品の大きさと位置に合わせて新しい部品を配置します。テキストボックスには置き換え部品グリフ名を入力してください
-:365
-<br>標準配置後の部品の領域を調節できます。「置き換え部品グリフ名,type1,左上X座標への増分値,Y座標への増分値,右下X座標への増分値,Y座標への増分値」と入力してください 例: u6c38,type1,5,-4,10,-20 (配置領域の左上座標について左に5ドット、上に4ドット移動、右下座標について10ドット右に、20ドット上に移動する)
-<br>標準配置後の部品の領域を調節できます。「置き換え部品グリフ名,type1,左上X座標への増分値,Y座標への増分値,右下X座標への増分値,Y座標への増分値」と入力してください 例: u6c38,type1,5,-4,10,-20 (配置領域の左上座標について左に5ドット、上に4ドット移動、右下座標について10ドット右に、20ドット上に移動する)
-:367
-<br>部品を指定した領域に配置します。「置き換え部品グリフ名,type2,左上X座標,Y座標,右下X座標,Y座標」と入力してください。
-<br>部品を指定した領域に配置します。「置き換え部品グリフ名,type2,左上X座標,Y座標,右下X座標,Y座標」と入力してください。
-:369
-<br>「置き換え部品グリフ名,type3,左上X座標への増分値,右下X座標への増分値,左上Y座標,右下Y座標」と入力してください(順番に注意)。
-<br>「置き換え部品グリフ名,type3,左上X座標への増分値,右下X座標への増分値,左上Y座標,右下Y座標」と入力してください(順番に注意)。
-:371
-<br>「置き換え部品グリフ名,type4,左上X座標,右下X座標,左上Y座標への増分値,右下Y座標への増分値,」と入力してください(順番に注意)。
-<br>「置き換え部品グリフ名,type4,左上X座標,右下X座標,左上Y座標への増分値,右下Y座標への増分値,」と入力してください(順番に注意)。
-:380
-$buffer .= " 置き換え部品グリフ、配置調整指定:<input type=\"text\" name=\"value\" size=\"60\" value=\"$cgi_value\">";
-$buffer .= " 置き換え部品グリフ、配置調整指定:<input type=\"text\" name=\"value\" size=\"60\" value=\"$cgi_value\">";
-:396,400
-$buffer .= qq|<div class="texts"><a href="?view=listup&target=$cgi_target&value=$cgi_value&offset=$prev">これより前の検索結果を見る</a></div>|;
-$buffer .= qq|<div class="texts"><a href="?view=listup&target=$cgi_target&value=$cgi_value&offset=$prev">これより前の検索結果を見る</a></div>|;
-:404
-$buffer .= "<div class=\"texts\">さらに対象グリフが存在する可能性があります。<a href=\"?view=listup&target=$cgi_target&value=$cgi_value&offset=$next\">これ以降の対象グリフを見る</a></div>";
-$buffer .= "<div class=\"texts\">さらに対象グリフが存在する可能性があります。<a href=\"?view=listup&target=$cgi_target&value=$cgi_value&offset=$next\">これ以降の対象グリフを見る</a></div>";
-:406
-$buffer .= "<hr><div class=\"texts\">ボタンをクリックすると「部品を更新する」にチェックをしたグリフをプレビューせずに一度に更新します。更新グリフの量が多いとブラウザが時間切れでエラーとなる場合がありますが、更新処理は問題なく実行できます。</div>";
-$buffer .= "<hr><div class=\"texts\">ボタンをクリックすると「部品を更新する」にチェックをしたグリフをプレビューせずに一度に更新します。更新グリフの量が多いとブラウザが時間切れでエラーとなる場合がありますが、更新処理は問題なく実行できます。</div>";
-:410
-$buffer .= qq|<div class="texts">該当するグリフはありません。<br><br><a href=\"/wiki/$cgi_target\">グリフページに戻る</a></div>|;
-$buffer .= qq|<div class="texts">該当するグリフはありません。<br><br><a href=\"/wiki/$cgi_target\">グリフページに戻る</a></div>|;
-:440
-$title = qq|旧部品一括更新の完了|;
-$title = qq|Completion of lump update of old components|;
-:512
-($new_version, $time) = &put_page($dbh, $name, $loginname, $temp, '旧部品の一括更新', $env_remoteaddress, $related);
-($new_version, $time) = &put_page($dbh, $name, $loginname, $temp, 'lump update of old components', $env_remoteaddress, $related);
-:524
-$buffer .= "<div class=\"texts\">${done}個のグリフを更新しました。<br><br><a href=\"/wiki/Special:Mustrenew?view=listup&target=$cgi_target\">一覧へ戻る</a></div>";
-$buffer .= "<div class=\"texts\">Updated ${done} glyphs.<br><br><a href=\"/wiki/Special:Mustrenew?view=listup&target=$cgi_target\">back to the list</a></div>";
-:526
-$buffer .= "<div class=\"texts\">${done}個のグリフを更新しました。<br><br><a href=\"/wiki/Special:Mustrenew?view=parts\">他の旧部品引用グリフ一覧へ戻る</a></div>";
-$buffer .= "<div class=\"texts\">Updated ${done} glyphs<br><br><a href=\"/wiki/Special:Mustrenew?view=parts\">back to the list of another glyphs using old components</a></div>";
-:528,650
-$buffer .= "<h2>更新したグリフ</h2>$donelist";
-$buffer .= "<h2>Updated glyphs</h2>$donelist";
-:530
-$buffer .= "<div class=\"texts\">更新したグリフはありません。<br><br><a href=\"/wiki/Special:Mustrenew?view=listup&target=$cgi_target\">一覧へ戻る</a></div>";
-$buffer .= "<div class=\"texts\">There are no glyphs being updated.<br><br><a href=\"/wiki/Special:Mustrenew?view=listup&target=$cgi_target\">back to the list</a></div>";
-:562
-$title = qq|部品一括更新の完了|;
-$title = qq|部品一括更新の完了|;
-:634
-($new_version, $time) = &put_page($dbh, $name, $loginname, $temp, '部品の一括更新', $env_remoteaddress, $related);
-($new_version, $time) = &put_page($dbh, $name, $loginname, $temp, '部品の一括更新', $env_remoteaddress, $related);
-:646
-$buffer .= "<div class=\"texts\">${done}個のグリフを更新しました。<br><br><a href=\"/wiki/Special:Renewall?view=listup&target=$cgi_target\">部品引用グリフ一覧へ戻る</a></div>";
-$buffer .= "<div class=\"texts\">${done}個のグリフを更新しました。<br><br><a href=\"/wiki/Special:Renewall?view=listup&target=$cgi_target\">部品引用グリフ一覧へ戻る</a></div>";
-:648
-$buffer .= "<div class=\"texts\">${done}個のグリフを更新しました。<br><br><a href=\"/wiki/$cgi_target\">グリフページへ戻る</a></div>";
-$buffer .= "<div class=\"texts\">${done}個のグリフを更新しました。<br><br><a href=\"/wiki/$cgi_target\">グリフページへ戻る</a></div>";
-:652
-$buffer .= "<div class=\"texts\">更新したグリフはありません。<br><br><a href=\"/wiki/Special:Renewall?view=listup&target=$cgi_target\">部品引用グリフ一覧へ戻る</a></div>";
-$buffer .= "<div class=\"texts\">更新したグリフはありません。<br><br><a href=\"/wiki/Special:Renewall?view=listup&target=$cgi_target\">部品引用グリフ一覧へ戻る</a></div>";
-:737
-$title = qq|最近更新したページ|;
-$title = qq|Recent Changes|;
-:809
-$byuser = " $cgi_user に";
-$byuser = " by $cgi_user";
-:811
-$buffer .= qq|<div class="texts">以下は${now}までに${byuser}編集された <span class="notice">$pages</span> ページです。(<span class="notice">N</span>=新規項目、日時は日本時間)<br>|;
-$buffer .= qq|<div class="texts">Below are the last <span class="notice">$pages</span> changes${byuser}, as of ${now}. (<span class="notice">N</span>=new page, notations of time are at JST[GMT+09:00])<br>|;
-:812
-$buffer .= qq(最近の <a href="/wiki/Special:Recentchanges?view=50$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype$setuser">50</a> | <a href="/wiki/Special:Recentchanges?view=100$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype$setuser">100</a> | <a href="/wiki/Special:Recentchanges?view=250$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype$setuser">250</a> | <a href="/wiki/Special:Recentchanges?view=500$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype$setuser">500</a> 件分を表示する<br>);
-$buffer .= qq(Show last <a href="/wiki/Special:Recentchanges?view=50$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype$setuser">50</a> | <a href="/wiki/Special:Recentchanges?view=100$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype$setuser">100</a> | <a href="/wiki/Special:Recentchanges?view=250$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype$setuser">250</a> | <a href="/wiki/Special:Recentchanges?view=500$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype$setuser">500</a> changes<br>);
-:813
-$buffer .= qq(表示の対象: <a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto&listtype=glyph$offset$offsetdir$setuser">グリフのみ</a> | <a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto&listtype=document$offset$offsetdir$setuser">文章のみ</a> | <a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto&listtype=both$offset$offsetdir$setuser">いずれも</a><br>);
-$buffer .= qq(List up for changes of: <a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto&listtype=glyph$offset$offsetdir$setuser">glyphs</a> | <a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto&listtype=document$offset$offsetdir$setuser">documents</a> | <a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto&listtype=both$offset$offsetdir$setuser">both glyphs and documents</a><br>);
-:815
-$buffer .= qq(ボットの編集を<a href="/wiki/Special:Recentchanges?view=$limit&hidebots=0$hideanons$hideliu$hidemyself$hideauto$listtype$offset$offsetdir">表示</a>);
-$buffer .= qq(<a href="/wiki/Special:Recentchanges?view=$limit&hidebots=0$hideanons$hideliu$hidemyself$hideauto$listtype$offset$offsetdir">Show</a> bots);
-:817
-$buffer .= qq(ボットの編集を<a href="/wiki/Special:Recentchanges?view=$limit&hidebots=1$hideanons$hideliu$hidemyself$hideauto$listtype$offset$offsetdir">隠す</a>);
-$buffer .= qq(<a href="/wiki/Special:Recentchanges?view=$limit&hidebots=1$hideanons$hideliu$hidemyself$hideauto$listtype$offset$offsetdir">Hide</a> bots);
-:821
-$buffer .= qq(匿名利用者の編集を<a href="/wiki/Special:Recentchanges?view=$limit$hidebots&hideanons=0$hideliu$hidemyself$hideauto$listtype$offset$offsetdir">表示</a>);
-$buffer .= qq(<a href="/wiki/Special:Recentchanges?view=$limit$hidebots&hideanons=0$hideliu$hidemyself$hideauto$listtype$offset$offsetdir">Show</a> anonymous users);
-:823
-$buffer .= qq(匿名利用者の編集を<a href="/wiki/Special:Recentchanges?view=$limit$hidebots&hideanons=1$hideliu$hidemyself$hideauto$listtype$offset$offsetdir">隠す</a>);
-$buffer .= qq(<a href="/wiki/Special:Recentchanges?view=$limit$hidebots&hideanons=1$hideliu$hidemyself$hideauto$listtype$offset$offsetdir">Hide</a> anonymous users);
-:827
-$buffer .= qq(登録利用者の編集を<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons&hideliu=0$hidemyself$hideauto$listtype$offset$offsetdir">表示</a>);
-$buffer .= qq(<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons&hideliu=0$hidemyself$hideauto$listtype$offset$offsetdir">Show</a> logged-in users);
-:829
-$buffer .= qq(登録利用者の編集を<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons&hideliu=1$hidemyself$hideauto$listtype$offset$offsetdir">隠す</a>);
-$buffer .= qq(<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons&hideliu=1$hidemyself$hideauto$listtype$offset$offsetdir">Hide</a> logged-in users);
-:833
-$buffer .= qq(自分の編集を<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu&hidemyself=0$hideauto$listtype$offset$offsetdir">表示</a>);
-$buffer .= qq(<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu&hidemyself=0$hideauto$listtype$offset$offsetdir">Show</a> my edits);
-:835
-$buffer .= qq(自分の編集を<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu&hidemyself=1$hideauto$listtype$offset$offsetdir">隠す</a>);
-$buffer .= qq(<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu&hidemyself=1$hideauto$listtype$offset$offsetdir">Hide</a> my edits);
-:839
-$buffer .= qq(自動編集を<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself&hideauto=0$listtype$offset$offsetdir$setuser">表示</a>);
-$buffer .= qq(<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself&hideauto=0$listtype$offset$offsetdir$setuser">Show</a> automatic posting);
-:841
-$buffer .= qq(自動編集を<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself&hideauto=1$listtype$offset$offsetdir$setuser">隠す</a>);
-$buffer .= qq(<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself&hideauto=1$listtype$offset$offsetdir$setuser">Hide</a> automatic posting);
-:844
-$buffer .= "<br><form>利用者<input type=\"text\" name=\"user\" size=\"12\" value=\"$cgi_user\">の履歴を<input type=\"submit\" value=\"見る\">";
-$buffer .= "<br><form><input type=\"submit\" value=\"See\"> recent logs of user <input type=\"text\" name=\"user\" size=\"12\" value=\"$cgi_user\">";
-:846
-$buffer .= " | <a href=\"?user=\">利用者指定の解除</a>";
-$buffer .= " | <a href=\"?user=\">clear limitation of user</a>";
-:855
-$buffer2 .= "<div class=\"texts\">(";
-$buffer2 .= "<div class=\"texts\">(";
-:857
-$buffer2 .= "最新";
-$buffer2 .= "latest";
-:859
-$buffer2 .= "<a href=\"/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype$setuser\">最新</a>";
-$buffer2 .= "<a href=\"/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype$setuser\">latest</a>";
-:863
-$buffer2 .= "最古";
-$buffer2 .= "earliest";
-:865
-$buffer2 .= "<a href=\"/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype&dir=prev$setuser\">最古</a>";
-$buffer2 .= "<a href=\"/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype&dir=prev$setuser\">earliest</a>";
-:867,873,879
-$buffer2 .= ")(";
-$buffer2 .= ") (";
-:869
-$buffer2 .= "新しい${limit}件";
-$buffer2 .= "newer ${limit}";
-:871
-$buffer2 .= "<a href=\"/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype&offset=$ts_newest&dir=prev$setuser\">新しい${limit}件</a>";
-$buffer2 .= "<a href=\"/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype&offset=$ts_newest&dir=prev$setuser\">newer ${limit}</a>";
-:875
-$buffer2 .= "古い${limit}件";
-$buffer2 .= "older ${limit}";
-:877
-$buffer2 .= "<a href=\"/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype&offset=$ts_oldest$setuser\">古い${limit}件</a>";
-$buffer2 .= "<a href=\"/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype&offset=$ts_oldest$setuser\">older ${limit}</a>";
-:881
-$buffer2 .= ") を見る</div>";
-$buffer2 .= ")</div>";
-:884
-$buffer .= qq|<span class="text">更新されたページはありません。</span>|;
-$buffer .= qq|<span class="text">There are no pages being updated.</span>|;
-:902
-<title>GlyphWiki - 最近更新したページ</title>
-<title>GlyphWiki - Recent changes</title>
-:904
-<description>最近付け加えられた変更はこのフィードで確認できます。</description>
-<description>最近付け加えられた変更はこのフィードで確認できます。</description>
-:1040
-if($temp eq "GlyphWiki:メインページ"){
-if($temp eq "GlyphWiki:MainPage"){
-:1041
-$temp = "メインページ";
-$temp = "MainPage";
-:1043
-$buffer .= qq|<h1>$temp の変更履歴</h1>|;
-$buffer .= qq|<h1>Revision history of $temp</h1>|;
-:1044
-$title = qq|$temp の変更履歴|;
-$title = qq|Revision history of $temp|;
-:1047
-$buffer .= "<div class=\"texts\">凡例:日時はJST</div>";
-$buffer .= "<div class=\"texts\">usage : in JST time</div>";
-:1049
-$buffer .= "<div class=\"texts\">凡例:(最新版) = 最新版との比較、(前の版) = 直前の版との比較、日時はJST</div>";
-$buffer .= "<div class=\"texts\">(cur) = difference from current version, (prev) = difference from preceding version, 日時はJST</div>";
-:1088
-$history_list .= "(最新版) ";
-$history_list .= "(cur) ";
-:1091
-$history_list .= "(<a href=\"/wiki/$db_wiki_name?diff=$data[1]\">最新版</a>) ";
-$history_list .= "(<a href=\"/wiki/$db_wiki_name?diff=$data[1]\">cur</a>) ";
-:1094
-$history_list .= "(<a href=\"/wiki/$db_wiki_name\@$data[1]?diff=".($data[1] - 1)."\">前の版</a>) ";
-$history_list .= "(<a href=\"/wiki/$db_wiki_name\@$data[1]?diff=".($data[1] - 1)."\">prev</a>) ";
-:1096
-$history_list .= "(前の版) ";
-$history_list .= "(prev) ";
-:1110
-$buffer .= qq|<div class="texts">(残りは省略されています ... <a href="?action=history&view=all">すべて表示する</a>)</div>|;
-$buffer .= qq|<div class="texts">(snipped ... <a href="?action=history&view=all">view all</a>)</div>|;
-:1113
-$buffer .= qq|<span class="text">このページには変更履歴がありません。</span>|;
-$buffer .= qq|<span class="text">There is no edit history for this page.</span>|;
-:1134
-$title = qq|検索|;
-$title = qq|Search results|;
-:1149
-$buffer .= qq|<span class="text">グリフウィキの検索についての詳しい情報は、<a href="/wiki/GlyphWiki:$URL_KENSAKU">GlyphWiki:$WORD_KENSAKU</a>をご覧下さい。</span><br><br>|;
-$buffer .= qq|<span class="text">See more details for searching function. <a href="/wiki/GlyphWiki:$URL_KENSAKU">GlyphWiki:$WORD_KENSAKU</a></span><br><br>|;
-:1153
-$buffer .= qq|<br><span class="query">(アルファベットの大文字と小文字は区別しません)</span></form>|;
-$buffer .= qq|<br><span class="query">(small and capital letter of the alphabet are not distinguished)</span></form>|;
-:1163
-$buffer .= qq|<div class="texts">$temp 件目以降の検索結果です。<a href="?search=$query&fulltext=検索&offset=$prev">これより前の検索結果を見る</a></div>|;
-$buffer .= qq|<div class="texts">results of No.$temp <a href="?search=$query&fulltext=検索&offset=$prev">see previous results</a></div>|;
-:1179
-$buffer .= qq|<div class="texts"><a href="?search=$query&fulltext=検索&offset=$prev">これより前の検索結果を見る</a></div>|;
-$buffer .= qq|<div class="texts"><a href="?search=$query&fulltext=検索&offset=$prev">see previous results</a></div>|;
-:1183
-$buffer .= qq|<div class="texts">さらに検索結果がある可能性があります。<a href="?search=$query&fulltext=検索&offset=$next">これ以降の検索結果を見る</a></div>|;
-$buffer .= qq|<div class="texts">There are more results. <a href="?search=$query&fulltext=検索&offset=$next">see next results</a></div>|;
-:1187
-$buffer .= qq|<br><span class="text">該当するページが見つかりませんでした。|;
-$buffer .= qq|<br><span class="text">No page text matches.|;
-:1189
-$buffer .= "検索キーワードは2文字以上である必要があります。";
-$buffer .= "Keyword must be at least 2 characters.";
-:1266
-$message .= "<div class=\"texts\"><p>あなたのメールアドレスは確認されました。ログインしてウィキを使用できます。</p><p><a href=\"/wiki/Special:Userlogin\">ログイン</a></p></div>";
-$message .= "<div class=\"texts\"><p>Your e-mail address has been confirmed. You may now log in and enjoy the wiki.</p><p><a href=\"/wiki/Special:Userlogin\">log in</a></p></div>";
-:1268
-$message .= "<div class=\"texts\"><p>確認用コードが正しくありません。このコードは期限切れです。</p><p><a href=\"/wiki/\">$LINK_DEFAULT</a> に戻る。</p></div>";
-$message .= "<div class=\"texts\"><p>Invalid confirmation code. The code may have expired.</p><p>Back to <a href=\"/wiki/\">$LINK_DEFAULT</a></p></div>";
-:1270
-$message .= "<div class=\"texts\"><p>このページを表示するにはログインが必要です。</p><p><a href=\"/wiki/Special:Userlogin?returnto=Special:Confirmemail\">ログイン</a></p></div>";
-$message .= "<div class=\"texts\"><p>You need to log in to see this page.</p><p><a href=\"/wiki/Special:Userlogin?returnto=Special:Confirmemail\">log in</a></p></div>";
-:1272
-$message .= "<div class=\"messagegreen\">メールアドレス確認メールを送信しました</div>";
-$message .= "<div class=\"messagegreen\">Confirmation email has been sent to you.</div>";
-:1273,1287
-$message .= "<div class=\"texts\"><p>現在のメールアドレス登録状況:メールアドレス確認メール送信済(メールを確認してください。まだメールアドレス正当性の確認は完了していません)</p>";
-$message .= "<div class=\"texts\"><p>Current status: Confirmation email has been sent. (Please check your email. The confirmation has not been done yet.)</p>";
-:1274,1288,1307
-$message .= "<p><form method=\"post\">もう一度確認メールを送りなおす:<input type=\"hidden\" name=\"page\" value=\"Special:Confirmemail\"><input type=\"submit\" name=\"buttons\" value=\"$BUTTON_CONFIRM_EMAIL\"></form></p>";
-$message .= "<p><form method=\"post\">send confirmatoin email again:<input type=\"hidden\" name=\"page\" value=\"Special:Confirmemail\"><input type=\"submit\" name=\"buttons\" value=\"$BUTTON_CONFIRM_EMAIL\"></form></p>";
-:1276,1290,1302,1309,1316
-$message .= "<p><form method=\"post\">新たにメールアドレスを登録する:";
-$message .= "<p><form method=\"post\">register a new email address:";
-:1278,1284,1292,1311
-$message .= "(現在登録されているメールアドレスを上書きします。再度確認メールの送信が必要となります)</p></div>";
-$message .= "(overwritten by new email address and you need to confirm new email address again)</p></div>";
-:1280
-$message .= "<p class=\"rednotice\">有効なメールアドレスが登録されていません</p>";
-$message .= "<p class=\"rednotice\">no valid email address has registered</p>";
-:1281,1295,1320
-$message .= "<div class=\"texts\"><p>現在のメールアドレス登録状況:メールアドレス未登録</p>";
-$message .= "<div class=\"texts\"><p>Current status: no email address has registered</p>";
-:1282,1296
-$message .= "<p><form method=\"post\">メールアドレスを再登録する:";
-$message .= "<p><form method=\"post\">register email address again:";
-:1286
-$message .= "<div class=\"messagegreen\">メールアドレスを登録しました。メールアドレス確認メールを送信しました</div>";
-$message .= "<div class=\"messagegreen\">Registered email address. Email for confirmation has been sent to you.</div>";
-:1294
-$message .= "<p class=\"rednotice\">メールアドレスの登録に失敗しました。有効ではないメールアドレスが入力されたようです</p>";
-$message .= "<p class=\"rednotice\">Failed to register email address. There was an invalid email address sent.</p>";
-:1301
-$message .= "<div class=\"texts\"><p>現在のメールアドレス登録状況:メールアドレス確認済($temp)</p>";
-$message .= "<div class=\"texts\"><p>Current status: email address has been confirmed ($temp)</p>";
-:1304
-$message .= "(現在登録されているメールアドレスを上書きします。再度メールの確認が必要となります)</p></div>";
-$message .= "(overwritten by new email address and you need to confirm new email address again)</p></div>";
-:1306
-$message .= "<div class=\"texts\"><p>現在のメールアドレス登録状況:メールアドレス確認メール送信済(メールが届いていないか確認してください。まだメールアドレス正当性の確認は完了していません)</p>";
-$message .= "<div class=\"texts\"><p>Current status: Confirmation email has been sent. (Please check your email. The confirmation has not been done yet.)</p>";
-:1313
-$message .= "<div class=\"texts\"><p>現在のメールアドレス登録状況:メールアドレス未確認</p>";
-$message .= "<div class=\"texts\"><p>Current status: email address has not been confirmed</p>";
-:1314
-$message .= "<p>このウィキではメールアドレスの正当性の確認が必要です。以下のボタンを押すと「GlyphWikiメールアドレスの確認」という件名の確認メールがあなたのメールアドレスに送られます。メールには確認用コードを含むリンクが書かれています。そのリンクを開くことによってメールアドレスの正当性が確認されます。</p><p><form method=\"post\"><input type=\"hidden\" name=\"page\" value=\"Special:Confirmemail\"><input type=\"submit\" name=\"buttons\" value=\"$BUTTON_CONFIRM_EMAIL\"></form></p>";
-$message .= "<p>GlyphWiki requires that confirmation of your e-mail address before using e-mail features. Activate the button below to send a confirmation mail to your address. The mail will include a link containing a code; load the link in your browser to confirm that your e-mail address is valid.</p><p><form method=\"post\"><input type=\"hidden\" name=\"page\" value=\"Special:Confirmemail\"><input type=\"submit\" name=\"buttons\" value=\"$BUTTON_CONFIRM_EMAIL\"></form></p>";
-:1318
-$message .= "(現在登録されているメールアドレスを上書きします)</p></div>";
-$message .= "(overwritten by new email address)</p></div>";
-:1321
-$message .= "<p><form method=\"post\">メールアドレスを登録する:";
-$message .= "<p><form method=\"post\">register your email address:";
-:1323
-$message .= "(メールアドレスを登録するとパスワードを忘れたときに再発行することができます)</p></div>";
-$message .= "(you would be able to reissue the log in password if you register your email address)</p></div>";
-:1327
-my $title = "メールアドレスの登録・確認";
-my $title = "Register and Confirm your email address";
-:1485,1505,1524
-$message_login .= "<div class=\"messagered\"><span class=\"notice\">ログイン失敗:</span> ";
-$message_login .= "<div class=\"messagered\"><span class=\"notice\">Login error:</span> ";
-:1487,1526
-$message_login .= "利用者名を正しく指定していません。<span class=\"small\">利用者名は 英小文字、数字、“-”からなります。</span>";
-$message_login .= "You have not specified a valid user name. <span class=\"small\">User name consist from small letters, numbers and hyphen("-").</span>";
-:1490
-$message_login .= "\"$cgi_name\" という利用者は見当たりません。綴りが正しいことを再度確認するか、下記のフォームを使ってアカウントを作成してください。";
-$message_login .= "There is no user by the name \"$cgi_name\". Check your spelling, or create a new account.";
-:1492
-$message_login .= "パスワードを空にすることはできません。再度入力してください。";
-$message_login .= "Password entered was blank. Please try again.";
-:1494
-$message_login .= "パスワードが間違っています。再度入力してください。";
-$message_login .= "Incorrect password entered. Please try again.";
-:1496
-$message_login .= "グリフウィキではログインにクッキーを使います。しかし、ご使用のブラウザ等がクッキーを無効にしているようです。クッキーを有効にして、もう一度試してみてください。";
-$message_login .= "GlyphWiki uses cookies to log in users. You have cookies disabled. Please enable them and try again.";
-:1498
-$message_login .= "利用者のアカウントは作成されましたが、ログインしていません。グリフウィキではログインにクッキーを使います。あなたはクッキーを無効な設定にしているようです。クッキーを有効にしてから作成した利用者名とパスワードでログインしてください。";
-$message_login .= "The user account was created, but you are not logged in. GlyphWiki uses cookies to log in users. You have cookies disabled. Please enable them, then log in with your new username and password.";
-:1508
-$message_login .= "メールの送信中にエラーが発生しました: 利用者 \"$cgi_name\" のメールアドレスは登録されていません。";
-$message_login .= "Error sending mail: There is no e-mail address recorded for user \"$cgi_name\".";
-:1511
-$message_login .= "メールの送信中にエラーが発生しました: 利用者 \"$cgi_name\" のメールアドレスはまだ確認されていません。";
-$message_login .= "Error sending mail: 利用者 \"$cgi_name\" のメールアドレスはまだ確認されていません。";
-:1513
-$message_login .= "新しいパスワードは24時間以内に送信済みです。悪用防止のため、パスワードは24時間間隔で再発行可能となります。";
-$message_login .= "A password reminder has already been sent, within the last 24 hours. To prevent abuse, only one password reminder will be sent per 24 hours.";
-:1518
-$message_login .= "新しいパスワードを \"$cgi_name\" さんの登録済みメールアドレスにお送りしました。メールを受け取ったら、再度ログインしてください。";
-$message_login .= "A new password has been sent to the e-mail address registered for \"$cgi_name\". Please log in again after you receive it.";
-:1528
-$message_login .= "その利用者名はすでに使われています。ほかの名前をお選びください。";
-$message_login .= "Username entered already in use. Please choose a different name.";
-:1530,1562
-$message_login .= "パスワードが短すぎます。1文字以上の文字列にしてください。";
-$message_login .= "Your password is invalid or too short. It must have at least 2 characters.";
-:1532,1564
-$message_login .= "両方のパスワードが一致しません。";
-$message_login .= "The passwords you entered do not match.";
-:1534
-$message_login .= "確認コードが間違っているか入力されていません";
-$message_login .= "The confirmation code is invalid or empty.";
-:1537
-$message_login .= "指定した名前 \"$cgi_name\" は既に存在しているアカウント \"$misleading_name\" と類似しているため使用できません。別の名前を使用してください。";
-$message_login .= "Username you entered: \"$cgi_name\" is invalid for similar to an existing account: \"$misleading_name\". Please enter another one.";
-:1545
-$message_login2 = "<p>グリフウィキに \"$cgi_name\" としてログインしました。</p>";
-$message_login2 = "<p>You are now logged in to GlyphWiki as \"$cgi_name\".</p>";
-:1548
-$message_login = "<div class=\"messagegreen\">メールアドレスの正当性を確認するためのコードを含んだメールを送信しました。この確認を行わなくてもログインはできますが、確認するまでメール通知の機能は無効化されます。</div>";
-$message_login = "<div class=\"messagegreen\">A confirmation e-mail has been sent to the nominated e-mail address. Before any other mail is sent to the account, you will have to follow the instructions in the e-mail, to confirm that the account is actually yours.</div>";
-:1551
-$message_login2 = "<p>あなたのアカウントができました。</p>";
-$message_login2 = "<p>Your account has created.</p>";
-:1558
-$message_login .= "メールで送信した臨時パスワードでログインしています。ログインを完了するには、新しいパスワードを設定しなおす必要があります。";
-$message_login .= "You logged in with a temporary e-mailed code. To finish logging in, you must set a new password here:";
-:1560
-$message_login .= "データがセットされていません。";
-$message_login .= "There are no data to be set.";
-:1587
-$base = "ログイン成功";
-$base = "Login successful";
-:1589
-$base = "パスワードの再設定";
-$base = "Reset password";
-:1591
-$base = "ログインまたはアカウント作成";
-$base = "Log in / create account";
-:1607
-<p>自動化スクリプトによるパスワードクラック攻撃を防止するため、下の画像に表示されている文字を入力してください:(<a href="/wiki/GlyphWiki:$URL_CAPTCHA">詳細</a>)<br>
-<p>To refuse attacks by automated script, please input the characters inside the following image: (<a href="/wiki/GlyphWiki:$URL_CAPTCHA">more information</a>)<br>
-:1620
-<h2>ログイン</h2>
-<h2>Log in</h2>
-:1623
-<p>アカウントはお持ちですか?<a href="/wiki/Special:Userlogin?type=createaccount&returnto=$cgi_returnto" class="notice">アカウントを作成</a></p>
-<p>Don't have an account? <a href="/wiki/Special:Userlogin?type=createaccount&returnto=$cgi_returnto" class="notice">Create one</a>.</p>
-:1625
-<p>グリフウィキにログインするにはクッキーを有効にする必要があります。</p>
-<p>You must have cookies enabled to log in to GlyphWiki.</p>
-:1631,1669
-<tr><td align="right">利用者名<td><input type="text" name="name" value="$temp_name">
-<tr><td align="right">Username:<td><input type="text" name="name" value="$temp_name">
-:1632,1670
-<tr><td align="right">パスワード<td><input type="password" name="password">
-<tr><td align="right">Password:<td><input type="password" name="password">
-:1633,1673,1720
-<tr><td>&nbsp;<td><input id="remember" type="checkbox" name="savepassword" value="savepassword"> <label for="remember">セッションを越えてパスワードを記憶する</label>
-<tr><td>&nbsp;<td><input id="remember" type="checkbox" name="savepassword" value="savepassword"> <label for="remember">Remember me (up to 7 days)</label>
-:1641
-<li>利用者名とパスワードを入力して、<span class="notice">ログイン</span>をクリックしてください。
-<li>input 'Username' and 'Password' then click <span class="notice">login</span> button
-:1642
-<li>パスワードを忘れてしまった場合は、利用者名を入力して<span class="notice">$BUTTON_NEW_PASSWORD</span>をクリックすることによりパスワードの再発行を受けられます(ただし、メールアドレスを登録していた場合に限られます)。
-<li>input 'Username' and click <span class="notice">$BUTTON_NEW_PASSWORD</span> if you forget your 'Password', then you can reset your 'Password' (only when you registered an E-mail address)
-:1643,1684
-<li>その他、ログインに関する情報は<a href="/wiki/GlyphWiki:$URL_LOGIN">GlyphWiki:$WORD_LOGIN</a>を参照してください。 
-<li>その他、ログインに関する情報は<a href="/wiki/GlyphWiki:$URL_LOGIN">GlyphWiki:$WORD_LOGIN</a>を参照してください。 
-:1654
-<h2>アカウント作成</h2>
-<h2>Create account</h2>
-:1656
-<p>すでにアカウントをお持ちの場合: <a href="/wiki/Special:Userlogin?type=loginfirst&returnto=$cgi_returnto" class="notice">ログイン</a></p>
-<p>Already have an account? <a href="/wiki/Special:Userlogin?type=loginfirst&returnto=$cgi_returnto" class="notice">Log in</a></p>
-:1658
-<p>自動で実行されるスパム防止のため、利用者名を登録する際には下の画像に表示される単語を入力する必要があります:<br>
-<p>To help protect against automated account creation, please enter the words that appear below in the box<br>
-:1659
-(<a href="/wiki/GlyphWiki:$URL_CAPTCHA">これは何ですか?</a>)</p>
-(<a href="/wiki/GlyphWiki:Captcha">more info</a>)</p>
-:1671
-<tr><td align="right"><nobr>パスワード再入力</nobr><td><input type="password" name="password2">
-<tr><td align="right"><nobr>Retype password:</nobr><td><input type="password" name="password2">
-:1672
-<tr><td align="right">メールアドレス:<td><input type="text" name="email">
-<tr><td align="right">E-mail (optional)<td><input type="text" name="email">
-:1674
-<tr><td>&nbsp;<td><input type="submit" name="buttons" value="アカウント作成" class="notice">
-<tr><td>&nbsp;<td><input type="submit" name="buttons" value="Create account" class="notice">
-:1681
-<li>使用したい利用者名とパスワードを決めて入力し、<span class="notice">アカウント作成</span>をクリックしてください。
-<li>Simply choose a username (not the same as your email) and a unique password and click <span class="notice">"create account"</span>.
-:1682
-<li>作成したアカウントの削除はできません。
-<li>You can't close the created account.
-:1683
-<li>利用者名には英小文字、数字と“-”が使えます。利用者名を決める際の注意点や詳細な解説は、<a href="/wiki/GlyphWiki:$URL_USERNAME">ユーザー名</a>を参照してください。
-<li>You can use the alphabet(small letters), numbers and hyphen for ID. See <a href="/wiki/GlyphWiki:$URL_USERNAME">more information</a> for details.
-:1692
-<h1>$cgi_name さん、ようこそ!</h1>
-<h1>Welcome, $cgi_name!</h1>
-:1695,1753
-<p><a href="/wiki/$cgi_returnto">$html_returnto</a> に戻る。
-<p>Return to <a href="/wiki/$cgi_returnto">$html_returnto</a>.
-:1709
-<h2>パスワードを設定しなおす</h2>
-<h2>Reset account password</h2>
-:1717
-<tr><td align="right">利用者名:<td>$temp_name<input type="hidden" name="name" value="$temp_name"><input type="hidden" name="password" value="$temp_password">
-<tr><td align="right">Username:<td>$temp_name<input type="hidden" name="name" value="$temp_name"><input type="hidden" name="password" value="$temp_password">
-:1718
-<tr><td align="right">新しいパスワード:<td><input type="password" name="newpassword">
-<tr><td align="right">New password:<td><input type="password" name="newpassword">
-:1719
-<tr><td align="right">パスワード再入力<td><input type="password" name="newpassword2">
-<tr><td align="right">Retype new password<td><input type="password" name="newpassword2">
-:1721
-<tr><td>&nbsp;<td><input type="submit" name="buttons" value="再設定してログイン">
-<tr><td>&nbsp;<td><input type="submit" name="buttons" value="Set password and log in">
-:1745
-my $title = "ログアウト";
-my $title = "User logout";
-:1751
-<p><span class="notice">ログアウトしました。</span>このままグリフウィキを匿名で使い続けることができます。もう一度ログインして元の、あるいは別の利用者として使うこともできます。</p>
-<p><span class="notice">You are now logged out.</span> You can continue to use GlyphWiki anonymously, or you can log in again as the same or as a different user.</p>
-:1752
-<p>※いくつかのページはブラウザのキャッシュをクリアするまでログインしているかのように表示されることがあります。</p>
-<p>Note that some pages may continue to be displayed as if you were still logged in, until you clear your browser cache.</p>
-
diff --git a/glyphwiki/en.unused.txt b/glyphwiki/en.unused.txt
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/glyphwiki/ko.txt b/glyphwiki/ko.txt
deleted file mode 100644 (file)
index ebe999e..0000000
+++ /dev/null
@@ -1,1280 +0,0 @@
-!/var/www/glyphwiki.org/index.cgi
-:633
-$temp = sprintf("<div class=\"texts\"><p>グリフ実装率:%d\% (実装済:%dグリフ、未実装:%dグリフ)</p></div>", int($implemented / ($unimplemented + $implemented) * 100), $implemented, $unimplemented);
-$temp = sprintf("<div class=\"texts\"><p>글리프의 실장율:%d\% (실장필:%d글리프、미실장:%d글리프)</p></div>", int($implemented / ($unimplemented + $implemented) * 100), $implemented, $unimplemented);
-:634
-$temp2 = sprintf("グリフ実装率:%d\% [済%d、未%d]", int($implemented / ($unimplemented + $implemented) * 100), $implemented, $unimplemented);
-$temp2 = sprintf("글리프의 실장율:%d\% [필%d、미%d]", int($implemented / ($unimplemented + $implemented) * 100), $implemented, $unimplemented);
-
-!/home/kamichi/glyphwiki/page_others.pl
-:48
-$buffer = "最終更新 ".&local_localtime($lastupdate)."。";
-$buffer = "최종갱신".&local_localtime($lastupdate).".";
-:56
-<a href="/wiki/GlyphWiki:$URL_LICENSE">データ・記事のライセンス</a>
-<a href="/wiki/GlyphWiki:License">데이타・기사의 라이센스</a>
-:57
-<a href="/wiki/GlyphWiki:$URL_PRIVACY">プライバシー・ポリシー</a>
-<a href="/wiki/GlyphWiki:PrivacyPolicy">프라이버시 정책</a>
-:58
-<a href="/wiki/GlyphWiki:$URL_ABOUT">グリフウィキについて</a>
-<a href="/wiki/GlyphWiki:About">글리프위키에 대하여</a>
-:59
-<a href="/wiki/GlyphWiki:$URL_MENSEKI">免責事項</a>
-<a href="/wiki/GlyphWiki:Disclaimers">면책사항</a>
-:75
-$buffer .= qq|<div class="loginned"><div><img src="/images/user.gif"> <a href="/wiki/User:$loginname">$loginname</a></div> <div><a href="/wiki/User-talk:$loginname">マイ・トーク</a></div> <div><a href="/wiki/Special:Confirmemail">メールアドレスの登録・確認</a></div> <div><a href="/wiki/Special:Userlogout?returnto=$url_query">ログアウト</a></div></div>|;
-$buffer .= qq|<div class="loginned"><div><img src="/images/user.gif"> <a href="/wiki/User:$loginname">$loginname</a></div> <div><a href="/wiki/User-talk:$loginname">마이토크</a></div> <div><a href="/wiki/Special:Confirmemail">이메일주소의 등록・확인</a></div> <div><a href="/wiki/Special:Userlogout?returnto=$url_query">로그아웃</a></div></div>|;
-:77
-$buffer .= qq|<div class="login"><img src="/images/user.gif"> <a href="/wiki/Special:Userlogin?returnto=$url_query">ログインまたはアカウント作成</a></div>|;
-$buffer .= qq|<div class="login"><img src="/images/user.gif"> <a href="/wiki/Special:Userlogin?returnto=$url_query">로그인 혹은 아이디작성</a></div>|;
-
-!/home/kamichi/glyphwiki/config.pl
-
-!/home/kamichi/glyphwiki/get_dir.pl
-
-!/home/kamichi/glyphwiki/makeglyphfont.pl
-
-!/home/kamichi/glyphwiki/page_right_others.pl
-:26
-$title = qq|古い部品を引用しているグリフ|;
-$title = qq|오래된 부품을 인용하고 있는 글리프|;
-:29
-$buffer .= qq!<div class="texts"><a href="?view=parts">部品名別に表示する</a> | <a href="?view=glyphs">グリフ名順で一覧する</a></div>!;
-$buffer .= qq!<div class="texts"><a href="?view=parts">부품명별로 표시하기</a> | <a href="?view=glyphs">글리프 이름순으로 일람하기</a></div>!;
-:64
-$temp_list .= qq|<hr><br>(残りは省略されています)|;
-$temp_list .= qq|<hr><br>(나머지는 생략되어 있습니다)|;
-:81
-$mustrenew_list .= "<br><br><a href=\"/wiki/Special:Mustrenew?view=listup&target=$pname\">この部品について一覧形式で更新する</a>";
-$mustrenew_list .= "<br><br><a href=\"/wiki/Special:Mustrenew?view=listup&target=$pname\">이 부품에 관해서 일람형식으로 갱신하기</a>";
-:89
-$mustrenew_list .= "<br>(残りは省略されています)";
-$mustrenew_list .= "<br>(나머지는 생략되어 있습니다)";
-:100
-$buffer .= qq|<span class="text">該当するグリフはありません。</span>|;
-$buffer .= qq|<span class="text">해당하는 글리프는 없습니다.</span>|;
-:117
-$title = qq|古い部品を引用しているグリフの一括更新|;
-$title = qq|오래된 부품을 인용하고 있는 글리프의 일괄갱신|;
-:121
-$buffer .= qq|<div class="texts">更新対象:<a href="/wiki/$cgi_target"><img class="thumb related" src="/glyph/$cgi_target.50px.png" border="0"></a> <a href="/wiki/$cgi_target">$cgi_target</a></div>|;
-$buffer .= qq|<div class="texts">갱신대상:<a href="/wiki/$cgi_target"><img class="thumb related" src="/glyph/$cgi_target.50px.png" border="0"></a> <a href="/wiki/$cgi_target">$cgi_target</a></div>|;
-:125,267,272
-$cgi_value = "(指定した値が不正です)";
-$cgi_value = "(지정한 값이 맞지 않습니다)";
-:129,274
-if($cgi_value eq "" || $cgi_value eq "(指定した値が不正です)"){
-if($cgi_value eq "" || $cgi_value eq "(지정한 값이 맞지 않습니다)"){
-:188
-$mustrenew_list .= "<li class=\"history\"><a href=\"/wiki/$name\">$name</a> 現在 : <a href=\"/wiki/$name\"><img class=\"thumb100\" src=\"/glyph/$name\@$version.100px.png\" border=\"0\"></a> vs 最新部品 : ";
-$mustrenew_list .= "<li class=\"history\"><a href=\"/wiki/$name\">$name</a> 현재 : <a href=\"/wiki/$name\"><img class=\"thumb100\" src=\"/glyph/$name\@$version.100px.png\" border=\"0\"></a> vs. 최신부품: ";
-:190
-$mustrenew_list .= "<input type=\"checkbox\" name=\"target:$name\@$version\" value=\"update\" id=\"$name\"><label for=\"$name\">最新部品に更新する</label>";
-$mustrenew_list .= "<input type=\"checkbox\" name=\"target:$name\@$version\" value=\"update\" id=\"$name\"><label for=\"$name\">최신부품으로 갱신하기</label>";
-:202,358
-<div class="notice">部品の配置について</div>
-<div class="notice">부품의 배치에 대하여</div>
-:203,359
-標準では、古い部品の大きさと位置に合わせて新しい部品を配置しますが、変形させたり、固定させることができます。
-표준으로는, 오래된 부품의 크기와 위치에 맞추어서 새로운 부품을 배치합니다만, 변형시키거나, 고정시키는 것도 가능합니다.
-:206,362
-<li>部品の大きさを新旧で合わせる
-<li>부품의 크기를 새로운 것과 오래된 것으로 맞추기
-:207
-<br>これが標準です。古い部品の大きさと位置に合わせて新しい部品を配置します。テキストボックスには何も入力しないでください
-<br>이것이 표준입니다. 오래된 부품의 크기와 배치에 맞추어서 새로운 부품을 배치합니다. 텍스트북에는 아무것도 입력하지 마십시요
-:208,364
-<li>縦横ともに部品の大きさを基準に変形
-<li>가로와 세로 모두 부품의 크기를 기준으로 변형
-:209
-<br>標準配置後の部品の領域を調節できます。「type1,左上X座標への増分値,Y座標への増分値,右下X座標への増分値,Y座標への増分値」と入力してください 例: type1,5,-4,10,-20 (配置領域の左上座標について左に5ドット、上に4ドット移動、右下座標について10ドット右に、20ドット上に移動する)
-<br>표준배치이후의 부품의 영역을 조절가능합니다. 「type1, 왼쪽위 X좌표의 늘어난 값,Y좌표의 늘어난 값, 오른쪽아래 X좌표의 늘어난 값, Y좌표의 늘어난 값」이라고 입력해 주십시요  예:type1, 5, -4, 10, -20 (배치영역의 왼쪽위의 좌표에 대하여 왼쪽으로 5도트, 위쪽으로 4도트 이동, 오른쪽아래의 좌표에 대하여 10도트 오른쪽으로, 20도트 위쪽으로 이동하기)
-:210,366
-<li>縦横ともに新たな配置領域座標を記述
-<li>가로와 세로 모두 새로운 배치영역좌표을 기술
-:211
-<br>部品を指定した領域に配置します。「type2,左上X座標,Y座標,右下X座標,Y座標」と入力してください。
-<br>부품을 지정한 영역에 배치합니다.「type2, 왼쪽위X좌표,Y좌표,오른쪽아래X,Y좌표」라고 입력해 주십시요.
-:212,368
-<li>横は部品の大きさを基準に変形、縦は新たな配置領域座標を記述
-<li>가로는 부품의 크기를 기준으로 변형, 세로는 새로운 배치영역좌표를 기술
-:213
-<br>「type3,左上X座標への増分値,右下X座標への増分値,左上Y座標,右下Y座標」と入力してください(順番に注意)。
-<br>「type3,左上X座標への増分値,右下X座標への増分値,左上Y座標,右下Y座標」と入力してください(順番に注意)。
-:214,370
-<li>横は新たな配置領域座標を記述、縦は部品の大きさを基準に変形
-<li>横は新たな配置領域座標を記述、縦は部品の大きさを基準に変形
-:215
-<br>「type4,左上X座標,右下X座標,左上Y座標への増分値,右下Y座標への増分値,」と入力してください(順番に注意)。
-<br>「type4,左上X座標,右下X座標,左上Y座標への増分値,右下Y座標への増分値,」と入力してください(順番に注意)。
-:223
-$buffer .= " 配置調整指定:<input type=\"text\" name=\"value\" size=\"60\" value=\"$cgi_value\">";
-$buffer .= " 配置調整指定:<input type=\"text\" name=\"value\" size=\"60\" value=\"$cgi_value\">";
-:224,381
-$buffer .= " <input type=\"submit\" value=\"リストのプレビューを更新する\"></form>";
-$buffer .= " <input type=\"submit\" value=\"リストのプレビューを更新する\"></form>";
-:238
-$buffer .= "<div class=\"texts\">(残りは省略されています)</div>";
-$buffer .= "<div class=\"texts\">(snipped left)</div>";
-:240
-$buffer .= "<hr><div class=\"texts\">ボタンをクリックすると「最新部品に更新する」にチェックをしたグリフをプレビューせずに一度に更新します。更新グリフの量が多いとブラウザが時間切れでエラーとなる場合がありますが、更新処理は問題なく実行できます。</div>";
-$buffer .= "<hr><div class=\"texts\">ボタンをクリックすると「最新部品に更新する」にチェックをしたグリフをプレビューせずに一度に更新します。更新グリフの量が多いとブラウザが時間切れでエラーとなる場合がありますが、更新処理は問題なく実行できます。</div>";
-:241,407
-$buffer .= "<input type=\"button\" value=\"全グリフにチェックを入れる\" onClick=\"for(i=0;i<document.list.elements.length;i++){document.list.elements[i].checked=true;}\">";
-$buffer .= "<input type=\"button\" value=\"set checked mark at all glyphs\" onClick=\"for(i=0;i<document.list.elements.length;i++){document.list.elements[i].checked=true;}\">";
-:242,408
-$buffer .= "<br><br><input type=\"submit\" value=\"チェックをつけたグリフを一括で新しい部品に更新する\"></form>";
-$buffer .= "<br><br><input type=\"submit\" value=\"チェックをつけたグリフを一括で新しい部品に更新する\"></form>";
-:244
-$buffer .= qq|<div class="texts">該当するグリフはありません。<br><br><a href=\"/wiki/Special:Mustrenew?view=parts\">他の旧部品引用グリフ一覧へ戻る</a></div>|;
-$buffer .= qq|<div class="texts">There are no glyphs that you selected<br><br><a href=\"/wiki/Special:Mustrenew?view=parts\">back to the list of another glyphs which are using old components</a></div>|;
-:261
-$title = qq|部品の一括更新|;
-$title = qq|部品の一括更新|;
-:282
-$buffer .= qq|<div class="texts">更新対象:<a href="/wiki/$cgi_target"><img class="thumb related" src="/glyph/$cgi_target.50px.png" border="0"></a> <a href="/wiki/$cgi_target">$cgi_target</a> → <a href="/wiki/$vg"><img class="thumb related" src="/glyph/$vg.50px.png" border="0"></a> <a href="/wiki/$vg">$vg</a></div>|;
-$buffer .= qq|<div class="texts">The target of update:<a href="/wiki/$cgi_target"><img class="thumb related" src="/glyph/$cgi_target.50px.png" border="0"></a> <a href="/wiki/$cgi_target">$cgi_target</a> → <a href="/wiki/$vg"><img class="thumb related" src="/glyph/$vg.50px.png" border="0"></a> <a href="/wiki/$vg">$vg</a></div>|;
-:284
-$buffer .= qq|<div class="texts">更新対象:<a href="/wiki/$cgi_target"><img class="thumb related" src="/glyph/$cgi_target.50px.png" border="0"></a> <a href="/wiki/$cgi_target">$cgi_target</a> → (まだ指定されていません)</div>|;
-$buffer .= qq|<div class="texts">The target of update:<a href="/wiki/$cgi_target"><img class="thumb related" src="/glyph/$cgi_target.50px.png" border="0"></a> <a href="/wiki/$cgi_target">$cgi_target</a> → (unselected yet)</div>|;
-:344
-$mustrenew_list .= "<li class=\"history\"><a href=\"/wiki/$name\">$name</a> 現在 : <a href=\"/wiki/$name\"><img class=\"thumb100\" src=\"/glyph/$name\@$version.100px.png\" border=\"0\"></a> vs 更新後 : ";
-$mustrenew_list .= "<li class=\"history\"><a href=\"/wiki/$name\">$name</a> Current : <a href=\"/wiki/$name\"><img class=\"thumb100\" src=\"/glyph/$name\@$version.100px.png\" border=\"0\"></a> vs After updated : ";
-:346
-$mustrenew_list .= "<input type=\"checkbox\" name=\"target:$name\@$version\" value=\"update\" id=\"$name\"><label for=\"$name\">部品を更新する</label>";
-$mustrenew_list .= "<input type=\"checkbox\" name=\"target:$name\@$version\" value=\"update\" id=\"$name\"><label for=\"$name\">Update element</label>";
-:363
-<br>これが標準です。古い部品の大きさと位置に合わせて新しい部品を配置します。テキストボックスには置き換え部品グリフ名を入力してください
-<br>これが標準です。古い部品の大きさと位置に合わせて新しい部品を配置します。テキストボックスには置き換え部品グリフ名を入力してください
-:365
-<br>標準配置後の部品の領域を調節できます。「置き換え部品グリフ名,type1,左上X座標への増分値,Y座標への増分値,右下X座標への増分値,Y座標への増分値」と入力してください 例: u6c38,type1,5,-4,10,-20 (配置領域の左上座標について左に5ドット、上に4ドット移動、右下座標について10ドット右に、20ドット上に移動する)
-<br>標準配置後の部品の領域を調節できます。「置き換え部品グリフ名,type1,左上X座標への増分値,Y座標への増分値,右下X座標への増分値,Y座標への増分値」と入力してください 例: u6c38,type1,5,-4,10,-20 (配置領域の左上座標について左に5ドット、上に4ドット移動、右下座標について10ドット右に、20ドット上に移動する)
-:367
-<br>部品を指定した領域に配置します。「置き換え部品グリフ名,type2,左上X座標,Y座標,右下X座標,Y座標」と入力してください。
-<br>部品を指定した領域に配置します。「置き換え部品グリフ名,type2,左上X座標,Y座標,右下X座標,Y座標」と入力してください。
-:369
-<br>「置き換え部品グリフ名,type3,左上X座標への増分値,右下X座標への増分値,左上Y座標,右下Y座標」と入力してください(順番に注意)。
-<br>「置き換え部品グリフ名,type3,左上X座標への増分値,右下X座標への増分値,左上Y座標,右下Y座標」と入力してください(順番に注意)。
-:371
-<br>「置き換え部品グリフ名,type4,左上X座標,右下X座標,左上Y座標への増分値,右下Y座標への増分値,」と入力してください(順番に注意)。
-<br>「置き換え部品グリフ名,type4,左上X座標,右下X座標,左上Y座標への増分値,右下Y座標への増分値,」と入力してください(順番に注意)。
-:380
-$buffer .= " 置き換え部品グリフ、配置調整指定:<input type=\"text\" name=\"value\" size=\"60\" value=\"$cgi_value\">";
-$buffer .= " 置き換え部品グリフ、配置調整指定:<input type=\"text\" name=\"value\" size=\"60\" value=\"$cgi_value\">";
-:396,400
-$buffer .= qq|<div class="texts"><a href="?view=listup&target=$cgi_target&value=$cgi_value&offset=$prev">これより前の検索結果を見る</a></div>|;
-$buffer .= qq|<div class="texts"><a href="?view=listup&target=$cgi_target&value=$cgi_value&offset=$prev">これより前の検索結果を見る</a></div>|;
-:404
-$buffer .= "<div class=\"texts\">さらに対象グリフが存在する可能性があります。<a href=\"?view=listup&target=$cgi_target&value=$cgi_value&offset=$next\">これ以降の対象グリフを見る</a></div>";
-$buffer .= "<div class=\"texts\">さらに対象グリフが存在する可能性があります。<a href=\"?view=listup&target=$cgi_target&value=$cgi_value&offset=$next\">これ以降の対象グリフを見る</a></div>";
-:406
-$buffer .= "<hr><div class=\"texts\">ボタンをクリックすると「部品を更新する」にチェックをしたグリフをプレビューせずに一度に更新します。更新グリフの量が多いとブラウザが時間切れでエラーとなる場合がありますが、更新処理は問題なく実行できます。</div>";
-$buffer .= "<hr><div class=\"texts\">ボタンをクリックすると「部品を更新する」にチェックをしたグリフをプレビューせずに一度に更新します。更新グリフの量が多いとブラウザが時間切れでエラーとなる場合がありますが、更新処理は問題なく実行できます。</div>";
-:410
-$buffer .= qq|<div class="texts">該当するグリフはありません。<br><br><a href=\"/wiki/$cgi_target\">グリフページに戻る</a></div>|;
-$buffer .= qq|<div class="texts">該当するグリフはありません。<br><br><a href=\"/wiki/$cgi_target\">グリフページに戻る</a></div>|;
-:440
-$title = qq|旧部品一括更新の完了|;
-$title = qq|Completion of lump update of old components|;
-:512
-($new_version, $time) = &put_page($dbh, $name, $loginname, $temp, '旧部品の一括更新', $env_remoteaddress, $related);
-($new_version, $time) = &put_page($dbh, $name, $loginname, $temp, 'lump update of old components', $env_remoteaddress, $related);
-:524
-$buffer .= "<div class=\"texts\">${done}個のグリフを更新しました。<br><br><a href=\"/wiki/Special:Mustrenew?view=listup&target=$cgi_target\">一覧へ戻る</a></div>";
-$buffer .= "<div class=\"texts\">Updated ${done} glyphs.<br><br><a href=\"/wiki/Special:Mustrenew?view=listup&target=$cgi_target\">back to the list</a></div>";
-:526
-$buffer .= "<div class=\"texts\">${done}個のグリフを更新しました。<br><br><a href=\"/wiki/Special:Mustrenew?view=parts\">他の旧部品引用グリフ一覧へ戻る</a></div>";
-$buffer .= "<div class=\"texts\">Updated ${done} glyphs<br><br><a href=\"/wiki/Special:Mustrenew?view=parts\">back to the list of another glyphs using old components</a></div>";
-:528,650
-$buffer .= "<h2>更新したグリフ</h2>$donelist";
-$buffer .= "<h2>Updated glyphs</h2>$donelist";
-:530
-$buffer .= "<div class=\"texts\">更新したグリフはありません。<br><br><a href=\"/wiki/Special:Mustrenew?view=listup&target=$cgi_target\">一覧へ戻る</a></div>";
-$buffer .= "<div class=\"texts\">There are no glyphs being updated.<br><br><a href=\"/wiki/Special:Mustrenew?view=listup&target=$cgi_target\">back to the list</a></div>";
-:562
-$title = qq|部品一括更新の完了|;
-$title = qq|部品一括更新の完了|;
-:634
-($new_version, $time) = &put_page($dbh, $name, $loginname, $temp, '部品の一括更新', $env_remoteaddress, $related);
-($new_version, $time) = &put_page($dbh, $name, $loginname, $temp, '部品の一括更新', $env_remoteaddress, $related);
-:646
-$buffer .= "<div class=\"texts\">${done}個のグリフを更新しました。<br><br><a href=\"/wiki/Special:Renewall?view=listup&target=$cgi_target\">部品引用グリフ一覧へ戻る</a></div>";
-$buffer .= "<div class=\"texts\">${done}個のグリフを更新しました。<br><br><a href=\"/wiki/Special:Renewall?view=listup&target=$cgi_target\">部品引用グリフ一覧へ戻る</a></div>";
-:648
-$buffer .= "<div class=\"texts\">${done}個のグリフを更新しました。<br><br><a href=\"/wiki/$cgi_target\">グリフページへ戻る</a></div>";
-$buffer .= "<div class=\"texts\">${done}個のグリフを更新しました。<br><br><a href=\"/wiki/$cgi_target\">グリフページへ戻る</a></div>";
-:652
-$buffer .= "<div class=\"texts\">更新したグリフはありません。<br><br><a href=\"/wiki/Special:Renewall?view=listup&target=$cgi_target\">部品引用グリフ一覧へ戻る</a></div>";
-$buffer .= "<div class=\"texts\">更新したグリフはありません。<br><br><a href=\"/wiki/Special:Renewall?view=listup&target=$cgi_target\">部品引用グリフ一覧へ戻る</a></div>";
-:735
-$title = qq|最近更新したページ|;
-$title = qq|Recent Changes|;
-:807
-$byuser = " $cgi_user に";
-$byuser = " by $cgi_user";
-:809
-$buffer .= qq|<div class="texts">以下は${now}までに${byuser}編集された <span class="notice">$pages</span> ページです。(<span class="notice">N</span>=新規項目、日時は日本時間)<br>|;
-$buffer .= qq|<div class="texts">Below are the last <span class="notice">$pages</span> changes${byuser}, as of ${now}. (<span class="notice">N</span>=new page, notations of time are at JST[GMT+09:00])<br>|;
-:810
-$buffer .= qq(最近の <a href="/wiki/Special:Recentchanges?view=50$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype$setuser">50</a> | <a href="/wiki/Special:Recentchanges?view=100$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype$setuser">100</a> | <a href="/wiki/Special:Recentchanges?view=250$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype$setuser">250</a> | <a href="/wiki/Special:Recentchanges?view=500$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype$setuser">500</a> 件分を表示する<br>);
-$buffer .= qq(Show last <a href="/wiki/Special:Recentchanges?view=50$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype$setuser">50</a> | <a href="/wiki/Special:Recentchanges?view=100$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype$setuser">100</a> | <a href="/wiki/Special:Recentchanges?view=250$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype$setuser">250</a> | <a href="/wiki/Special:Recentchanges?view=500$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype$setuser">500</a> changes<br>);
-:811
-$buffer .= qq(表示の対象: <a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto&listtype=glyph$offset$offsetdir$setuser">グリフのみ</a> | <a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto&listtype=document$offset$offsetdir$setuser">文章のみ</a> | <a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto&listtype=both$offset$offsetdir$setuser">いずれも</a><br>);
-$buffer .= qq(List up for changes of: <a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto&listtype=glyph$offset$offsetdir$setuser">glyphs</a> | <a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto&listtype=document$offset$offsetdir$setuser">documents</a> | <a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto&listtype=both$offset$offsetdir$setuser">both glyphs and documents</a><br>);
-:813
-$buffer .= qq(ボットの編集を<a href="/wiki/Special:Recentchanges?view=$limit&hidebots=0$hideanons$hideliu$hidemyself$hideauto$listtype$offset$offsetdir">表示</a>);
-$buffer .= qq(<a href="/wiki/Special:Recentchanges?view=$limit&hidebots=0$hideanons$hideliu$hidemyself$hideauto$listtype$offset$offsetdir">Show</a> bots);
-:815
-$buffer .= qq(ボットの編集を<a href="/wiki/Special:Recentchanges?view=$limit&hidebots=1$hideanons$hideliu$hidemyself$hideauto$listtype$offset$offsetdir">隠す</a>);
-$buffer .= qq(<a href="/wiki/Special:Recentchanges?view=$limit&hidebots=1$hideanons$hideliu$hidemyself$hideauto$listtype$offset$offsetdir">Hide</a> bots);
-:819
-$buffer .= qq(匿名利用者の編集を<a href="/wiki/Special:Recentchanges?view=$limit$hidebots&hideanons=0$hideliu$hidemyself$hideauto$listtype$offset$offsetdir">表示</a>);
-$buffer .= qq(<a href="/wiki/Special:Recentchanges?view=$limit$hidebots&hideanons=0$hideliu$hidemyself$hideauto$listtype$offset$offsetdir">Show</a> anonymous users);
-:821
-$buffer .= qq(匿名利用者の編集を<a href="/wiki/Special:Recentchanges?view=$limit$hidebots&hideanons=1$hideliu$hidemyself$hideauto$listtype$offset$offsetdir">隠す</a>);
-$buffer .= qq(<a href="/wiki/Special:Recentchanges?view=$limit$hidebots&hideanons=1$hideliu$hidemyself$hideauto$listtype$offset$offsetdir">Hide</a> anonymous users);
-:825
-$buffer .= qq(登録利用者の編集を<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons&hideliu=0$hidemyself$hideauto$listtype$offset$offsetdir">表示</a>);
-$buffer .= qq(<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons&hideliu=0$hidemyself$hideauto$listtype$offset$offsetdir">Show</a> logged-in users);
-:827
-$buffer .= qq(登録利用者の編集を<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons&hideliu=1$hidemyself$hideauto$listtype$offset$offsetdir">隠す</a>);
-$buffer .= qq(<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons&hideliu=1$hidemyself$hideauto$listtype$offset$offsetdir">Hide</a> logged-in users);
-:831
-$buffer .= qq(自分の編集を<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu&hidemyself=0$hideauto$listtype$offset$offsetdir">表示</a>);
-$buffer .= qq(<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu&hidemyself=0$hideauto$listtype$offset$offsetdir">Show</a> my edits);
-:833
-$buffer .= qq(自分の編集を<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu&hidemyself=1$hideauto$listtype$offset$offsetdir">隠す</a>);
-$buffer .= qq(<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu&hidemyself=1$hideauto$listtype$offset$offsetdir">Hide</a> my edits);
-:837
-$buffer .= qq(自動編集を<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself&hideauto=0$listtype$offset$offsetdir$setuser">表示</a>);
-$buffer .= qq(<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself&hideauto=0$listtype$offset$offsetdir$setuser">Show</a> automatic posting);
-:839
-$buffer .= qq(自動編集を<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself&hideauto=1$listtype$offset$offsetdir$setuser">隠す</a>);
-$buffer .= qq(<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself&hideauto=1$listtype$offset$offsetdir$setuser">Hide</a> automatic posting);
-:842
-$buffer .= "<br><form>利用者<input type=\"text\" name=\"user\" size=\"12\" value=\"$cgi_user\">の履歴を<input type=\"submit\" value=\"見る\">";
-$buffer .= "<br><form><input type=\"submit\" value=\"See\"> recent logs of user <input type=\"text\" name=\"user\" size=\"12\" value=\"$cgi_user\">";
-:844
-$buffer .= " | <a href=\"?user=\">利用者指定の解除</a>";
-$buffer .= " | <a href=\"?user=\">clear limitation of user</a>";
-:853
-$buffer2 .= "<div class=\"texts\">(";
-$buffer2 .= "<div class=\"texts\">(";
-:855
-$buffer2 .= "最新";
-$buffer2 .= "latest";
-:857
-$buffer2 .= "<a href=\"/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype$setuser\">最新</a>";
-$buffer2 .= "<a href=\"/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype$setuser\">latest</a>";
-:861
-$buffer2 .= "最古";
-$buffer2 .= "earliest";
-:863
-$buffer2 .= "<a href=\"/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype&dir=prev$setuser\">最古</a>";
-$buffer2 .= "<a href=\"/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype&dir=prev$setuser\">earliest</a>";
-:865,871,877
-$buffer2 .= ")(";
-$buffer2 .= ") (";
-:867
-$buffer2 .= "新しい${limit}件";
-$buffer2 .= "newer ${limit}";
-:869
-$buffer2 .= "<a href=\"/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype&offset=$ts_newest&dir=prev$setuser\">新しい${limit}件</a>";
-$buffer2 .= "<a href=\"/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype&offset=$ts_newest&dir=prev$setuser\">newer ${limit}</a>";
-:873
-$buffer2 .= "古い${limit}件";
-$buffer2 .= "older ${limit}";
-:875
-$buffer2 .= "<a href=\"/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype&offset=$ts_oldest$setuser\">古い${limit}件</a>";
-$buffer2 .= "<a href=\"/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype&offset=$ts_oldest$setuser\">older ${limit}</a>";
-:879
-$buffer2 .= ") を見る</div>";
-$buffer2 .= ")</div>";
-:882
-$buffer .= qq|<span class="text">更新されたページはありません。</span>|;
-$buffer .= qq|<span class="text">There are no pages being updated.</span>|;
-:900
-<title>GlyphWiki - 最近更新したページ</title>
-<title>GlyphWiki - Recent changes</title>
-:902
-<description>最近付け加えられた変更はこのフィードで確認できます。</description>
-<description>最近付け加えられた変更はこのフィードで確認できます。</description>
-:1038
-if($temp eq "GlyphWiki:メインページ"){
-if($temp eq "GlyphWiki:MainPage"){
-:1039
-$temp = "メインページ";
-$temp = "MainPage";
-:1041
-$buffer .= qq|<h1>$temp の変更履歴</h1>|;
-$buffer .= qq|<h1>Revision history of $temp</h1>|;
-:1042
-$title = qq|$temp の変更履歴|;
-$title = qq|Revision history of $temp|;
-:1045
-$buffer .= "<div class=\"texts\">凡例:日時はJST</div>";
-$buffer .= "<div class=\"texts\">usage : in JST time</div>";
-:1047
-$buffer .= "<div class=\"texts\">凡例:(最新版) = 最新版との比較、(前の版) = 直前の版との比較、日時はJST</div>";
-$buffer .= "<div class=\"texts\">(cur) = difference from current version, (prev) = difference from preceding version, 日時はJST</div>";
-:1086
-$history_list .= "(最新版) ";
-$history_list .= "(cur) ";
-:1089
-$history_list .= "(<a href=\"/wiki/$db_wiki_name?diff=$data[1]\">最新版</a>) ";
-$history_list .= "(<a href=\"/wiki/$db_wiki_name?diff=$data[1]\">cur</a>) ";
-:1092
-$history_list .= "(<a href=\"/wiki/$db_wiki_name\@$data[1]?diff=".($data[1] - 1)."\">前の版</a>) ";
-$history_list .= "(<a href=\"/wiki/$db_wiki_name\@$data[1]?diff=".($data[1] - 1)."\">prev</a>) ";
-:1094
-$history_list .= "(前の版) ";
-$history_list .= "(prev) ";
-:1108
-$buffer .= qq|<div class="texts">(残りは省略されています ... <a href="?action=history&view=all">すべて表示する</a>)</div>|;
-$buffer .= qq|<div class="texts">(snipped ... <a href="?action=history&view=all">view all</a>)</div>|;
-:1111
-$buffer .= qq|<span class="text">このページには変更履歴がありません。</span>|;
-$buffer .= qq|<span class="text">There is no edit history for this page.</span>|;
-:1132
-$title = qq|検索|;
-$title = qq|Search results|;
-:1147
-$buffer .= qq|<span class="text">グリフウィキの検索についての詳しい情報は、<a href="/wiki/GlyphWiki:$URL_KENSAKU">GlyphWiki:$WORD_KENSAKU</a>をご覧下さい。</span><br><br>|;
-$buffer .= qq|<span class="text">See more details for searching function. <a href="/wiki/GlyphWiki:$URL_KENSAKU">GlyphWiki:$WORD_KENSAKU</a></span><br><br>|;
-:1151
-$buffer .= qq|<br><span class="query">(アルファベットの大文字と小文字は区別しません)</span></form>|;
-$buffer .= qq|<br><span class="query">(small and capital letter of the alphabet are not distinguished)</span></form>|;
-:1161
-$buffer .= qq|<div class="texts">$temp 件目以降の検索結果です。<a href="?search=$query&fulltext=検索&offset=$prev">これより前の検索結果を見る</a></div>|;
-$buffer .= qq|<div class="texts">results of No.$temp <a href="?search=$query&fulltext=検索&offset=$prev">see previous results</a></div>|;
-:1177
-$buffer .= qq|<div class="texts"><a href="?search=$query&fulltext=検索&offset=$prev">これより前の検索結果を見る</a></div>|;
-$buffer .= qq|<div class="texts"><a href="?search=$query&fulltext=検索&offset=$prev">see previous results</a></div>|;
-:1181
-$buffer .= qq|<div class="texts">さらに検索結果がある可能性があります。<a href="?search=$query&fulltext=検索&offset=$next">これ以降の検索結果を見る</a></div>|;
-$buffer .= qq|<div class="texts">There are more results. <a href="?search=$query&fulltext=検索&offset=$next">see next results</a></div>|;
-:1185
-$buffer .= qq|<br><span class="text">該当するページが見つかりませんでした。|;
-$buffer .= qq|<br><span class="text">No page text matches.|;
-:1187
-$buffer .= "検索キーワードは2文字以上である必要があります。";
-$buffer .= "Keyword must be at least 2 characters.";
-:1264
-$message .= "<div class=\"texts\"><p>あなたのメールアドレスは確認されました。ログインしてウィキを使用できます。</p><p><a href=\"/wiki/Special:Userlogin\">ログイン</a></p></div>";
-$message .= "<div class=\"texts\"><p>Your e-mail address has been confirmed. You may now log in and enjoy the wiki.</p><p><a href=\"/wiki/Special:Userlogin\">log in</a></p></div>";
-:1266
-$message .= "<div class=\"texts\"><p>確認用コードが正しくありません。このコードは期限切れです。</p><p><a href=\"/wiki/\">$LINK_DEFAULT</a> に戻る。</p></div>";
-$message .= "<div class=\"texts\"><p>Invalid confirmation code. The code may have expired.</p><p>Back to <a href=\"/wiki/\">$LINK_DEFAULT</a></p></div>";
-:1268
-$message .= "<div class=\"texts\"><p>このページを表示するにはログインが必要です。</p><p><a href=\"/wiki/Special:Userlogin?returnto=Special:Confirmemail\">ログイン</a></p></div>";
-$message .= "<div class=\"texts\"><p>You need to log in to see this page.</p><p><a href=\"/wiki/Special:Userlogin?returnto=Special:Confirmemail\">log in</a></p></div>";
-:1270
-$message .= "<div class=\"messagegreen\">メールアドレス確認メールを送信しました</div>";
-$message .= "<div class=\"messagegreen\">Confirmation email has been sent to you.</div>";
-:1271,1285
-$message .= "<div class=\"texts\"><p>現在のメールアドレス登録状況:メールアドレス確認メール送信済(メールを確認してください。まだメールアドレス正当性の確認は完了していません)</p>";
-$message .= "<div class=\"texts\"><p>Current status: Confirmation email has been sent. (Please check your email. The confirmation has not been done yet.)</p>";
-:1272,1286,1305
-$message .= "<p><form method=\"post\">もう一度確認メールを送りなおす:<input type=\"hidden\" name=\"page\" value=\"Special:Confirmemail\"><input type=\"submit\" name=\"buttons\" value=\"$BUTTON_CONFIRM_EMAIL\"></form></p>";
-$message .= "<p><form method=\"post\">send confirmatoin email again:<input type=\"hidden\" name=\"page\" value=\"Special:Confirmemail\"><input type=\"submit\" name=\"buttons\" value=\"$BUTTON_CONFIRM_EMAIL\"></form></p>";
-:1274,1288,1300,1307,1314
-$message .= "<p><form method=\"post\">新たにメールアドレスを登録する:";
-$message .= "<p><form method=\"post\">register a new email address:";
-:1276,1282,1290,1309
-$message .= "(現在登録されているメールアドレスを上書きします。再度確認メールの送信が必要となります)</p></div>";
-$message .= "(overwritten by new email address and you need to confirm new email address again)</p></div>";
-:1278
-$message .= "<p class=\"rednotice\">有効なメールアドレスが登録されていません</p>";
-$message .= "<p class=\"rednotice\">no valid email address has registered</p>";
-:1279,1293,1318
-$message .= "<div class=\"texts\"><p>現在のメールアドレス登録状況:メールアドレス未登録</p>";
-$message .= "<div class=\"texts\"><p>Current status: no email address has registered</p>";
-:1280,1294
-$message .= "<p><form method=\"post\">メールアドレスを再登録する:";
-$message .= "<p><form method=\"post\">register email address again:";
-:1284
-$message .= "<div class=\"messagegreen\">メールアドレスを登録しました。メールアドレス確認メールを送信しました</div>";
-$message .= "<div class=\"messagegreen\">Registered email address. Email for confirmation has been sent to you.</div>";
-:1292
-$message .= "<p class=\"rednotice\">メールアドレスの登録に失敗しました。有効ではないメールアドレスが入力されたようです</p>";
-$message .= "<p class=\"rednotice\">Failed to register email address. There was an invalid email address sent.</p>";
-:1299
-$message .= "<div class=\"texts\"><p>現在のメールアドレス登録状況:メールアドレス確認済($temp)</p>";
-$message .= "<div class=\"texts\"><p>Current status: email address has been confirmed ($temp)</p>";
-:1302
-$message .= "(現在登録されているメールアドレスを上書きします。再度メールの確認が必要となります)</p></div>";
-$message .= "(overwritten by new email address and you need to confirm new email address again)</p></div>";
-:1304
-$message .= "<div class=\"texts\"><p>現在のメールアドレス登録状況:メールアドレス確認メール送信済(メールが届いていないか確認してください。まだメールアドレス正当性の確認は完了していません)</p>";
-$message .= "<div class=\"texts\"><p>Current status: Confirmation email has been sent. (Please check your email. The confirmation has not been done yet.)</p>";
-:1311
-$message .= "<div class=\"texts\"><p>現在のメールアドレス登録状況:メールアドレス未確認</p>";
-$message .= "<div class=\"texts\"><p>Current status: email address has not been confirmed</p>";
-:1312
-$message .= "<p>このウィキではメールアドレスの正当性の確認が必要です。以下のボタンを押すと「GlyphWikiメールアドレスの確認」という件名の確認メールがあなたのメールアドレスに送られます。メールには確認用コードを含むリンクが書かれています。そのリンクを開くことによってメールアドレスの正当性が確認されます。</p><p><form method=\"post\"><input type=\"hidden\" name=\"page\" value=\"Special:Confirmemail\"><input type=\"submit\" name=\"buttons\" value=\"$BUTTON_CONFIRM_EMAIL\"></form></p>";
-$message .= "<p>GlyphWiki requires that confirmation of your e-mail address before using e-mail features. Activate the button below to send a confirmation mail to your address. The mail will include a link containing a code; load the link in your browser to confirm that your e-mail address is valid.</p><p><form method=\"post\"><input type=\"hidden\" name=\"page\" value=\"Special:Confirmemail\"><input type=\"submit\" name=\"buttons\" value=\"$BUTTON_CONFIRM_EMAIL\"></form></p>";
-:1316
-$message .= "(現在登録されているメールアドレスを上書きします)</p></div>";
-$message .= "(overwritten by new email address)</p></div>";
-:1319
-$message .= "<p><form method=\"post\">メールアドレスを登録する:";
-$message .= "<p><form method=\"post\">register your email address:";
-:1321
-$message .= "(メールアドレスを登録するとパスワードを忘れたときに再発行することができます)</p></div>";
-$message .= "(you would be able to reissue the log in password if you register your email address)</p></div>";
-:1325
-my $title = "メールアドレスの登録・確認";
-my $title = "Register and Confirm your email address";
-:1483,1503,1522
-$message_login .= "<div class=\"messagered\"><span class=\"notice\">ログイン失敗:</span> ";
-$message_login .= "<div class=\"messagered\"><span class=\"notice\">Login error:</span> ";
-:1485,1524
-$message_login .= "利用者名を正しく指定していません。<span class=\"small\">利用者名は 英小文字、数字、“-”からなります。</span>";
-$message_login .= "You have not specified a valid user name. <span class=\"small\">User name consist from small letters, numbers and hyphen("-").</span>";
-:1488
-$message_login .= "\"$cgi_name\" という利用者は見当たりません。綴りが正しいことを再度確認するか、下記のフォームを使ってアカウントを作成してください。";
-$message_login .= "There is no user by the name \"$cgi_name\". Check your spelling, or create a new account.";
-:1490
-$message_login .= "パスワードを空にすることはできません。再度入力してください。";
-$message_login .= "Password entered was blank. Please try again.";
-:1492
-$message_login .= "パスワードが間違っています。再度入力してください。";
-$message_login .= "Incorrect password entered. Please try again.";
-:1494
-$message_login .= "グリフウィキではログインにクッキーを使います。しかし、ご使用のブラウザ等がクッキーを無効にしているようです。クッキーを有効にして、もう一度試してみてください。";
-$message_login .= "GlyphWiki uses cookies to log in users. You have cookies disabled. Please enable them and try again.";
-:1496
-$message_login .= "利用者のアカウントは作成されましたが、ログインしていません。グリフウィキではログインにクッキーを使います。あなたはクッキーを無効な設定にしているようです。クッキーを有効にしてから作成した利用者名とパスワードでログインしてください。";
-$message_login .= "The user account was created, but you are not logged in. GlyphWiki uses cookies to log in users. You have cookies disabled. Please enable them, then log in with your new username and password.";
-:1506
-$message_login .= "メールの送信中にエラーが発生しました: 利用者 \"$cgi_name\" のメールアドレスは登録されていません。";
-$message_login .= "Error sending mail: There is no e-mail address recorded for user \"$cgi_name\".";
-:1509
-$message_login .= "メールの送信中にエラーが発生しました: 利用者 \"$cgi_name\" のメールアドレスはまだ確認されていません。";
-$message_login .= "Error sending mail: 利用者 \"$cgi_name\" のメールアドレスはまだ確認されていません。";
-:1511
-$message_login .= "新しいパスワードは24時間以内に送信済みです。悪用防止のため、パスワードは24時間間隔で再発行可能となります。";
-$message_login .= "A password reminder has already been sent, within the last 24 hours. To prevent abuse, only one password reminder will be sent per 24 hours.";
-:1516
-$message_login .= "新しいパスワードを \"$cgi_name\" さんの登録済みメールアドレスにお送りしました。メールを受け取ったら、再度ログインしてください。";
-$message_login .= "A new password has been sent to the e-mail address registered for \"$cgi_name\". Please log in again after you receive it.";
-:1526
-$message_login .= "その利用者名はすでに使われています。ほかの名前をお選びください。";
-$message_login .= "Username entered already in use. Please choose a different name.";
-:1528,1560
-$message_login .= "パスワードが短すぎます。1文字以上の文字列にしてください。";
-$message_login .= "Your password is invalid or too short. It must have at least 2 characters.";
-:1530,1562
-$message_login .= "両方のパスワードが一致しません。";
-$message_login .= "The passwords you entered do not match.";
-:1532
-$message_login .= "確認コードが間違っているか入力されていません";
-$message_login .= "The confirmation code is invalid or empty.";
-:1535
-$message_login .= "指定した名前 \"$cgi_name\" は既に存在しているアカウント \"$misleading_name\" と類似しているため使用できません。別の名前を使用してください。";
-$message_login .= "Username you entered: \"$cgi_name\" is invalid for similar to an existing account: \"$misleading_name\". Please enter another one.";
-:1543
-$message_login2 = "<p>グリフウィキに \"$cgi_name\" としてログインしました。</p>";
-$message_login2 = "<p>You are now logged in to GlyphWiki as \"$cgi_name\".</p>";
-:1546
-$message_login = "<div class=\"messagegreen\">メールアドレスの正当性を確認するためのコードを含んだメールを送信しました。この確認を行わなくてもログインはできますが、確認するまでメール通知の機能は無効化されます。</div>";
-$message_login = "<div class=\"messagegreen\">A confirmation e-mail has been sent to the nominated e-mail address. Before any other mail is sent to the account, you will have to follow the instructions in the e-mail, to confirm that the account is actually yours.</div>";
-:1549
-$message_login2 = "<p>あなたのアカウントができました。</p>";
-$message_login2 = "<p>Your account has created.</p>";
-:1556
-$message_login .= "メールで送信した臨時パスワードでログインしています。ログインを完了するには、新しいパスワードを設定しなおす必要があります。";
-$message_login .= "You logged in with a temporary e-mailed code. To finish logging in, you must set a new password here:";
-:1558
-$message_login .= "データがセットされていません。";
-$message_login .= "There are no data to be set.";
-:1585
-$base = "ログイン成功";
-$base = "Login successful";
-:1587
-$base = "パスワードの再設定";
-$base = "Reset password";
-:1589
-$base = "ログインまたはアカウント作成";
-$base = "Log in / create account";
-:1605
-<p>自動化スクリプトによるパスワードクラック攻撃を防止するため、下の画像に表示されている文字を入力してください:(<a href="/wiki/GlyphWiki:$URL_CAPTCHA">詳細</a>)<br>
-<p>To refuse attacks by automated script, please input the characters inside the following image: (<a href="/wiki/GlyphWiki:$URL_CAPTCHA">more information</a>)<br>
-:1618
-<h2>ログイン</h2>
-<h2>Log in</h2>
-:1621
-<p>アカウントはお持ちですか?<a href="/wiki/Special:Userlogin?type=createaccount&returnto=$cgi_returnto" class="notice">アカウントを作成</a></p>
-<p>Don't have an account? <a href="/wiki/Special:Userlogin?type=createaccount&returnto=$cgi_returnto" class="notice">Create one</a>.</p>
-:1623
-<p>グリフウィキにログインするにはクッキーを有効にする必要があります。</p>
-<p>You must have cookies enabled to log in to GlyphWiki.</p>
-:1629,1667
-<tr><td align="right">利用者名<td><input type="text" name="name" value="$temp_name">
-<tr><td align="right">Username:<td><input type="text" name="name" value="$temp_name">
-:1630,1668
-<tr><td align="right">パスワード<td><input type="password" name="password">
-<tr><td align="right">Password:<td><input type="password" name="password">
-:1631,1671,1718
-<tr><td>&nbsp;<td><input id="remember" type="checkbox" name="savepassword" value="savepassword"> <label for="remember">セッションを越えてパスワードを記憶する</label>
-<tr><td>&nbsp;<td><input id="remember" type="checkbox" name="savepassword" value="savepassword"> <label for="remember">Remember me (up to 7 days)</label>
-:1639
-<li>利用者名とパスワードを入力して、<span class="notice">ログイン</span>をクリックしてください。
-<li>input 'Username' and 'Password' then click <span class="notice">login</span> button
-:1640
-<li>パスワードを忘れてしまった場合は、利用者名を入力して<span class="notice">$BUTTON_NEW_PASSWORD</span>をクリックすることによりパスワードの再発行を受けられます(ただし、メールアドレスを登録していた場合に限られます)。
-<li>input 'Username' and click <span class="notice">$BUTTON_NEW_PASSWORD</span> if you forget your 'Password', then you can reset your 'Password' (only when you registered an E-mail address)
-:1641,1682
-<li>その他、ログインに関する情報は<a href="/wiki/GlyphWiki:$URL_LOGIN">GlyphWiki:$WORD_LOGIN</a>を参照してください。 
-<li>その他、ログインに関する情報は<a href="/wiki/GlyphWiki:$URL_LOGIN">GlyphWiki:$WORD_LOGIN</a>を参照してください。 
-:1652
-<h2>アカウント作成</h2>
-<h2>Create account</h2>
-:1654
-<p>すでにアカウントをお持ちの場合: <a href="/wiki/Special:Userlogin?type=loginfirst&returnto=$cgi_returnto" class="notice">ログイン</a></p>
-<p>Already have an account? <a href="/wiki/Special:Userlogin?type=loginfirst&returnto=$cgi_returnto" class="notice">Log in</a></p>
-:1656
-<p>自動で実行されるスパム防止のため、利用者名を登録する際には下の画像に表示される単語を入力する必要があります:<br>
-<p>To help protect against automated account creation, please enter the words that appear below in the box<br>
-:1657
-(<a href="/wiki/GlyphWiki:$URL_CAPTCHA">これは何ですか?</a>)</p>
-(<a href="/wiki/GlyphWiki:Captcha">more info</a>)</p>
-:1669
-<tr><td align="right"><nobr>パスワード再入力</nobr><td><input type="password" name="password2">
-<tr><td align="right"><nobr>Retype password:</nobr><td><input type="password" name="password2">
-:1670
-<tr><td align="right">メールアドレス:<td><input type="text" name="email">
-<tr><td align="right">E-mail (optional)<td><input type="text" name="email">
-:1672
-<tr><td>&nbsp;<td><input type="submit" name="buttons" value="アカウント作成" class="notice">
-<tr><td>&nbsp;<td><input type="submit" name="buttons" value="Create account" class="notice">
-:1679
-<li>使用したい利用者名とパスワードを決めて入力し、<span class="notice">アカウント作成</span>をクリックしてください。
-<li>Simply choose a username (not the same as your email) and a unique password and click <span class="notice">"create account"</span>.
-:1680
-<li>作成したアカウントの削除はできません。
-<li>You can't close the created account.
-:1681
-<li>利用者名には英小文字、数字と“-”が使えます。利用者名を決める際の注意点や詳細な解説は、<a href="/wiki/GlyphWiki:$URL_USERNAME">ユーザー名</a>を参照してください。
-<li>You can use the alphabet(small letters), numbers and hyphen for ID. See <a href="/wiki/GlyphWiki:$URL_USERNAME">more information</a> for details.
-:1690
-<h1>$cgi_name さん、ようこそ!</h1>
-<h1>Welcome, $cgi_name!</h1>
-:1693,1751
-<p><a href="/wiki/$cgi_returnto">$html_returnto</a> に戻る。
-<p>Return to <a href="/wiki/$cgi_returnto">$html_returnto</a>.
-:1707
-<h2>パスワードを設定しなおす</h2>
-<h2>Reset account password</h2>
-:1715
-<tr><td align="right">利用者名:<td>$temp_name<input type="hidden" name="name" value="$temp_name"><input type="hidden" name="password" value="$temp_password">
-<tr><td align="right">Username:<td>$temp_name<input type="hidden" name="name" value="$temp_name"><input type="hidden" name="password" value="$temp_password">
-:1716
-<tr><td align="right">新しいパスワード:<td><input type="password" name="newpassword">
-<tr><td align="right">New password:<td><input type="password" name="newpassword">
-:1717
-<tr><td align="right">パスワード再入力<td><input type="password" name="newpassword2">
-<tr><td align="right">Retype new password<td><input type="password" name="newpassword2">
-:1719
-<tr><td>&nbsp;<td><input type="submit" name="buttons" value="再設定してログイン">
-<tr><td>&nbsp;<td><input type="submit" name="buttons" value="Set password and log in">
-:1743
-my $title = "ログアウト";
-my $title = "User logout";
-:1749
-<p><span class="notice">ログアウトしました。</span>このままグリフウィキを匿名で使い続けることができます。もう一度ログインして元の、あるいは別の利用者として使うこともできます。</p>
-<p><span class="notice">You are now logged out.</span> You can continue to use GlyphWiki anonymously, or you can log in again as the same or as a different user.</p>
-:1750
-<p>※いくつかのページはブラウザのキャッシュをクリアするまでログインしているかのように表示されることがあります。</p>
-<p>Note that some pages may continue to be displayed as if you were still logged in, until you clear your browser cache.</p>
-
-!/home/kamichi/glyphwiki/page_left.pl
-:21
-$buffer .= qq|ナビゲーション|;
-$buffer .= qq|navigation|;
-:25
-$buffer .= qq|<li><a href="/wiki/Special:Recentchanges">最近更新したページ</a>|;
-$buffer .= qq|<li><a href="/wiki/Special:Recentchanges">Recent changes</a>|;
-:26
-$buffer .= qq|<li><a href="/wiki/Special:Random">おまかせ表示</a>|;
-$buffer .= qq|<li><a href="/wiki/Special:Random">Random glyph</a>|;
-:32
-$buffer .= qq|ヘルプ|;
-$buffer .= qq|help|;
-:35
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_HOWTO">どうやって使うのか</a>|;
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_HOWTO">Tutorial</a>|;
-:36
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_FAQ">よくある質問</a>|;
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_FAQ">FAQ</a>|;
-:37
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_JOIN">あなたにできること</a>|;
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_JOIN">Join us</a>|;
-:38
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_BUG">バグ報告</a>|;
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_BUG">Bug reports</a>|;
-:39
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_NEWS">お知らせ</a>|;
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:News">News</a>|;
-:40
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_IDOBATA">井戸端</a>|;
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_IDOBATA">Village pump</a>|;
-:46
-$buffer .= qq|検索|;
-$buffer .= qq|search|;
-:54
-$buffer .= qq|<ul><li><a href="http://fonts.jp/glyphwiki/kensaku.cgi">筆画検索(試行)</a></ul>|;
-$buffer .= qq|<ul><li><a href="http://fonts.jp/glyphwiki/kensaku.cgi">glyph search by strokes</a></ul>|;
-:55
-$buffer .= qq|<ul><li><a href="http://fonts.jp/glyphwiki/hwr.html">手書き検索(試行)</a></ul>|;
-$buffer .= qq|<ul><li><a href="http://fonts.jp/glyphwiki/hwr.html">glyph search by hand writing</a></ul>|;
-:56
-$buffer .= qq|<ul><li><a href="http://fonts.jp/glyphwiki/hwr2.html">手書き検索2(試行)</a></ul>|;
-$buffer .= qq|<ul><li><a href="http://fonts.jp/glyphwiki/hwr2.html">glyph search by hand writing 2</a></ul>|;
-:61
-$buffer .= qq|ツールボックス|;
-$buffer .= qq|toolbox|;
-:65
-$buffer .= qq|<li><a href="/wiki/Special:Mustrenew">旧部品引用グリフ</a>|;
-$buffer .= qq|<li><a href="/wiki/Special:Mustrenew">Glyphs which using old components</a>|;
-:68
-$buffer .= qq|<li><a href="/wiki/$fullwikiname">この版への固定リンク</a>|;
-$buffer .= qq|<li><a href="/wiki/$fullwikiname">Permanent link</a>|;
-:77
-$buffer .= qq|他の言語|;
-$buffer .= qq|languages|;
-
-!/home/kamichi/glyphwiki/page_right_general.pl
-:60
-$r_data =~ s/\[\[([^ \]]+ )?Talk:([^\]]+)\]\]/[[$1ノート:$2]]/g;
-# no operation
-:61
-$r_data =~ s/\[\[([^ \]]+ )?GlyphWiki-talk:([^\]]+)\]\]/[[$1GlyphWiki-ノート:$2]]/g;
-# no operation
-:62
-$r_data =~ s/\[\[([^ \]]+ )?Group:([^\]]+)\]\]/[[$1グループ:$2]]/g;
-# no operation
-:63
-$r_data =~ s/\[\[([^ \]]+ )?Group-talk:([^\]]+)\]\]/[[$1グループ-ノート:$2]]/g;
-# no operation
-:64
-$r_data =~ s/\[\[([^ \]]+ )?User:([^\]]+)\]\]/[[$1利用者:$2]]/g;
-# no operation
-:65
-$r_data =~ s/\[\[([^ \]]+ )?User-talk:([^\]]+)\]\]/[[$1利用者-会話:$2]]/g;
-# no operation
-:68
-$cgi_textbox =~ s/\[\[([^ \]]+ )?Talk:([^\]]+)\]\]/[[$1ノート:$2]]/g;
-# no operation
-:69
-$cgi_textbox =~ s/\[\[([^ \]]+ )?GlyphWiki-talk:([^\]]+)\]\]/[[$1GlyphWiki-ノート:$2]]/g;
-# no operation
-:70
-$cgi_textbox =~ s/\[\[([^ \]]+ )?Group:([^\]]+)\]\]/[[$1グループ:$2]]/g;
-# no operation
-:71
-$cgi_textbox =~ s/\[\[([^ \]]+ )?Group-talk:([^\]]+)\]\]/[[$1グループ-ノート:$2]]/g;
-# no operation
-:72
-$cgi_textbox =~ s/\[\[([^ \]]+ )?User:([^\]]+)\]\]/[[$1利用者:$2]]/g;
-# no operation
-:73
-$cgi_textbox =~ s/\[\[([^ \]]+ )?User-talk:([^\]]+)\]\]/[[$1利用者-会話:$2]]/g;
-# no operation
-:109
-$title = qq|$db_wiki_name を編集中|;
-$title = qq|Editing $db_wiki_name|;
-:111
-$title = qq|編集競合: $db_wiki_name|;
-$title = qq|Edit conflict: $db_wiki_name|;
-:113
-$title = qq|データベースエラー: $db_wiki_name|;
-$title = qq|Database error: $db_wiki_name|;
-:115
-$title = qq|データエラー: $db_wiki_name|;
-$title = qq|Data error: $db_wiki_name|;
-:117
-$title = qq|ソースを表示|;
-$title = qq|View source|;
-:146
-$buffer .= "<div class=\"query\"><span class=\"normal\">$db_wiki_name</span> のソース</div>";
-$buffer .= "<div class=\"query\">Source of <span class=\"normal\">$db_wiki_name</span></div>";
-:151
-$buffer .= "<div class=\"version\">版間での差分(日時はJST)</div>";
-$buffer .= "<div class=\"version\">difference among each versions (with JST time)</div>";
-:187
-$newversion = "最新";
-$newversion = "newest";
-:189
-$history_list .= "<li class=\"history\"><a class=\"notice\" href=\"/wiki/$url_db_wiki_name\@$data[1]\">".&local_localtime($data[3])."時点における${newversion}版</a> $temp $summary";
-$history_list .= "<li class=\"history\"><a class=\"notice\" href=\"/wiki/$url_db_wiki_name\@$data[1]\">Revision as of ".&local_localtime($data[3])." (version ${newversion})</a> $temp $summary";
-:190
-$history_list .= "<ul><li>追加された行を<span class=\"newdata\">このように</span>表示します。</ul>";
-$history_list .= "<ul><li>shows added line(s) <span class=\"newdata\">like this</span></ul>";
-:194
-$subtitle = "<h2>".&local_localtime($data[3])."時点における${newversion}版</h2>\n";
-$subtitle = "<h2>Revision as of ".&local_localtime($data[3])." (version ${newversion})</h2>\n";
-:216
-$history_list .= "<li class=\"history\"><a class=\"notice\" href=\"/wiki/$url_db_wiki_name\@$data[1]\">".&local_localtime($data[3])."時点における\@$data[1]版</a> $temp $summary";
-$history_list .= "<li class=\"history\"><a class=\"notice\" href=\"/wiki/$url_db_wiki_name\@$data[1]\">Revision as of ".&local_localtime($data[3])." (version \@$data[1])</a> $temp $summary";
-:217
-$history_list .= "<ul><li>削除された行を<span class=\"olddata\">このように</span>表示します。</ul>";
-$history_list .= "<ul><li>shows deleted line(s) <span class=\"olddata\">like this</span></ul>";
-:244
-$buffer .= "<div class=\"version\">".&local_localtime($r_timestamp)."; ".$temp." による \@${query_version}版<br>";
-$buffer .= "<div class=\"version\">".&local_localtime($r_timestamp)."; version \@${query_version} by ".$temp."<br>";
-:247
-$buffer .= "<a href=\"/wiki/".&url_encode($db_wiki_name)."\@".($query_version - 1)."\">← 前の版</a>";
-$buffer .= "<a href=\"/wiki/".&url_encode($db_wiki_name)."\@".($query_version - 1)."\">← previous version</a>";
-:249
-$buffer .= qq|<span class="disable">← 前の版</span>|;
-$buffer .= qq|<span class="disable">← previous version</span>|;
-:253
-$buffer .= " | <a href=\"/wiki/".&url_encode($db_wiki_name)."\">最新版を表示</a>";
-$buffer .= " | <a href=\"/wiki/".&url_encode($db_wiki_name)."\">latest version</a>";
-:255
-$buffer .= " | <span class=\"disable\">最新版を表示</span>";
-$buffer .= " | <span class=\"disable\">latest version</span>";
-:259
-$buffer .= " | <a href=\"/wiki/".&url_encode($db_wiki_name)."\@".($query_version + 1)."\">次の版 →</a>";
-$buffer .= " | <a href=\"/wiki/".&url_encode($db_wiki_name)."\@".($query_version + 1)."\">next version →</a>";
-:261
-$buffer .= " | <span class=\"disable\">次の版 →</span>";
-$buffer .= " | <span class=\"disable\">next version →</span>";
-:269
-$buffer .= qq|<div class="warning">存在しない版が指定されました。代替として最新版が表示されています。</div>|;
-$buffer .= qq|<div class="warning">存在しない版が指定されました。代替として最新版が表示されています。</div>|;
-:271
-$buffer .= qq|<div class="warning">存在しない版が指定されました。最新版に対する編集となります。</div>|;
-$buffer .= qq|<div class="warning">存在しない版が指定されました。最新版に対する編集となります。</div>|;
-:278
-$buffer .= qq|<div class="warning">警告: あなたはこのページの古い版を編集しています。もしこのグリフを保存すると、この版以降に追加された全ての変更が無効になってしまいます。</div>|;
-$buffer .= qq|<div class="warning">Notice: You are editing an old revision of this page. If you save it, any changes made since then will be removed.</div>|;
-:280
-$buffer .= qq|<div class="warning">警告: あなたはこのページの古い版を編集しています。もしこの文章を保存すると、この版以降に追加された全ての変更が無効になってしまいます。</div>|;
-$buffer .= qq|<div class="warning">Notice: You are editing an old revision of this page. If you save it, any changes made since then will be removed.</div>|;
-:287
-$buffer .= qq|<div class="panel"><span class="warning">グリフウィキには現在この名前の項目はありません。</span><ul><li>グリフを新しく描くには、まず下のテキストボックスに内容を書き込んでください。その際、著作権に注意してください。その後、ページ下部の<span class="notice">■投稿する前に以下を確認して下さい■</span>以下の注意事項をよく確認した上で “$BUTTON_ACCEPT_AND_SUBMIT” ボタンを押してください。そうすればすぐに見えるようになります。<li>もしあなたがグリフウィキに初めて投稿するならば、先に<a href="/wiki/GlyphWiki:$URL_HOWTO">どうやって使うのか</a>を読んでください。<li><span class="notice">投稿のテストをしたい場合、<a href="/wiki/GlyphWiki:$URL_SANDBOX">サンドボックス</a>を利用してください。</span>一度作成した項目はあなたが削除することはできません。<li>他の項目から<a href="/wiki/Special:Search?action=fulltext&search=$url_db_wiki_name">&quot;$db_wiki_name&quot;を検索する</a>。</ul><hr><ul><li><span class="notice">この項目を作成したばかりなのにこのメッセージがでる場合、データベースの更新が遅れているために表示できないのかもしれません。</span>項目を書き直す前にしばらく待ってから、再読込してみてください。<li>以前この項目を作成したことがあるならば、この項目は<a href="/wiki/$URL_DELETE_LOG">既に削除されています</a>。<a href="/wiki/$URL_SAKUJO">$WORD_SAKUJO</a>に削除された理由が記載されているかもしれません。</ul></div>|;
-$buffer .= qq|<div class="panel"><span class="warning">GlyphWiki does not have an article with this exact name.</span><ul><li>グリフを新しく描くには、まず下のテキストボックスに内容を書き込んでください。その際、著作権に注意してください。その後、ページ下部の<span class="notice">*** please confirm the following matters before contributing it ***</span>以下の注意事項をよく確認した上で “$BUTTON_ACCEPT_AND_SUBMIT” ボタンを押してください。そうすればすぐに見えるようになります。<li>もしあなたがグリフウィキに初めて投稿するならば、先に<a href="/wiki/GlyphWiki:$URL_HOWTO">どうやって使うのか</a>を読んでください。<li><span class="notice">投稿のテストをしたい場合、<a href="/wiki/GlyphWiki:$URL_SANDBOX">サンドボックス</a>を利用してください。</span>一度作成した項目はあなたが削除することはできません。<li>他の項目から<a href="/wiki/Special:Search?action=fulltext&search=$url_db_wiki_name">&quot;$db_wiki_name&quot;を検索する</a>。</ul><hr><ul><li><span class="notice">この項目を作成したばかりなのにこのメッセージがでる場合、データベースの更新が遅れているために表示できないのかもしれません。</span>項目を書き直す前にしばらく待ってから、再読込してみてください。<li>以前この項目を作成したことがあるならば、この項目は<a href="/wiki/$URL_DELETE_LOG">既に削除されています</a>。<a href="/wiki/$URL_SAKUJO">$WORD_SAKUJO</a>に削除された理由が記載されているかもしれません。</ul></div>|;
-:289
-$buffer .= qq|<div class="panel"><span class="warning">グリフウィキには現在この名前の項目はありません。</span><ul><li>文章を新しく作成するには、まず下のテキストボックスに内容を書き込んでください。その際、著作権に注意してください。その後、ページ下部の<span class="notice">■投稿する前に以下を確認して下さい■</span>以下の注意事項をよく確認した上で “$BUTTON_ACCEPT_AND_SUBMIT” ボタンを押してください。そうすればすぐに見えるようになります。<li>もしあなたがグリフウィキに初めて投稿するならば、先に<a href="/wiki/GlyphWiki:$URL_HOWTO">どうやって使うのか</a>を読んでください。<li><span class="notice">投稿のテストをしたい場合、<a href="/wiki/GlyphWiki:$URL_SANDBOX">サンドボックス</a>を利用してください。</span>一度作成した項目はあなたが削除することはできません。<li>他の項目から<a href="/wiki/Special:Search?action=fulltext&search=$url_db_wiki_name">&quot;$db_wiki_name&quot;を検索する</a>。</ul><hr><ul><li><span class="notice">この項目を作成したばかりなのにこのメッセージがでる場合、データベースの更新が遅れているために表示できないのかもしれません。</span>項目を書き直す前にしばらく待ってから、再読込してみてください。<li>以前この項目を作成したことがあるならば、この項目は<a href="/wiki/$URL_DELETE_LOG">既に削除されています</a>。<a href="/wiki/$URL_SAKUJO">$WORD_SAKUJO</a>に削除された理由が記載されているかもしれません。</ul></div>|;
-$buffer .= qq|<div class="panel"><span class="warning">GlyphWiki does not have an article with this exact name.</span><ul><li>文章を新しく作成するには、まず下のテキストボックスに内容を書き込んでください。その際、著作権に注意してください。その後、ページ下部の<span class="notice">*** please confirm the following matters before contributing it ***</span>以下の注意事項をよく確認した上で “$BUTTON_ACCEPT_AND_SUBMIT” ボタンを押してください。そうすればすぐに見えるようになります。<li>もしあなたがグリフウィキに初めて投稿するならば、先に<a href="/wiki/GlyphWiki:$URL_HOWTO">どうやって使うのか</a>を読んでください。<li><span class="notice">投稿のテストをしたい場合、<a href="/wiki/GlyphWiki:$URL_SANDBOX">サンドボックス</a>を利用してください。</span>一度作成した項目はあなたが削除することはできません。<li>他の項目から<a href="/wiki/Special:Search?action=fulltext&search=$url_db_wiki_name">&quot;$db_wiki_name&quot;を検索する</a>。</ul><hr><ul><li><span class="notice">この項目を作成したばかりなのにこのメッセージがでる場合、データベースの更新が遅れているために表示できないのかもしれません。</span>項目を書き直す前にしばらく待ってから、再読込してみてください。<li>以前この項目を作成したことがあるならば、この項目は<a href="/wiki/$URL_DELETE_LOG">既に削除されています</a>。<a href="/wiki/$URL_SAKUJO">$WORD_SAKUJO</a>に削除された理由が記載されているかもしれません。</ul></div>|;
-:296
-$buffer .= qq|<div class="message">あなたがこのページを編集し始めた後に、他の誰かがこのページ(またはこのページの別の版)を変更しました。左のグリフが現在の最新の状態です。あなたの編集していたグリフは右側に示されていますので再度編集して下さい。あなたの編集した内容は、"投稿する"をクリックした時に実際に保存されます。</div>|;
-$buffer .= qq|<div class="message">Someone else has changed this page since you started editing it. The left image contains the glyph as it currently exists. Your changes are shown in the right image. You will have to edit again. The glyph you edit will be saved when you press "Save page".</div>|;
-:298
-$buffer .= qq|<div class="message">あなたがこのページを編集し始めた後に、他の誰かがこのページ(またはこのページの別の版)を変更しました。上側のテキストエリアは現在の最新の状態です。あなたの編集していた文章は下側のテキストエリアに示されています。編集していた文章を、上側のテキストエリアの文章に組み込んで下さい。 <span class="notice">上側のテキストエリアの内容だけ</span>が、"保存する"をクリックした時に実際に保存されます。</div>|;
-$buffer .= qq|<div class="message">Someone else has changed this page since you started editing it. The upper text area contains the page text as it currently exists. Your changes are shown in the lower text area. You will have to merge your changes into the existing text. <span class="notice">Only</span> the text in the upper text area will be saved when you press "Save page".</div>|;
-:304
-$buffer .= qq|<div class="message">データベースの書き込みに失敗しました。多数のユーザが同時にアクセスしているか、サーバの負荷が高まっている可能性があります。まだ保存されていませんので、再度投稿してください。あなたの編集した内容は、"投稿する"をクリックした時に実際に保存されます。</div>|;
-$buffer .= qq|<div class="message">Failed to write to the database. 多数のユーザが同時にアクセスしているか、サーバの負荷が高まっている可能性があります。まだ保存されていませんので、再度投稿してください。あなたの編集した内容は、"投稿する"をクリックした時に実際に保存されます。</div>|;
-:309
-$buffer .= qq|<div class="message">グリフデータ、または関連字にエラーがあります。まだ保存されていませんので、内容を確認して再度投稿してください。あなたの編集した内容は、"投稿する"をクリックした時に実際に保存されます。</div>|;
-$buffer .= qq|<div class="message">There is an error at glyph data or at related char and it wasn't registered yet. Please check the content and contribute again. あなたの編集した内容は、"投稿する"をクリックした時に実際に保存されます。</div>|;
-:316
-$buffer .= qq|<div class="message">あなたは<span class="notice">ログインしていません</span>。匿名利用者による投稿としてこの項目の履歴に記録されます。また、投稿の前には<span class="notice">プレビュー</span>が必要です。|;
-$buffer .= qq|<div class="message">You are NOT currently logged in. Editing this way will cause as anonymous user to be recorded publicly in this page's history. Also you are needed to check PREVIEW. |;
-:318
-$buffer .= "匿名利用者は外部リンクを含むページを投稿することはできません。</div>";
-$buffer .= "Anonymous users can't contribute the page which includes external links.</div>";
-:327
-$buffer .= qq|<br><h2>プレビュー</h2><div class="warning2 notice">これはプレビューです。まだ保存されていません!</div><hr>|;
-$buffer .= qq|<br><h2>Preview</h2><div class="warning2 notice">Remember that this is only a preview; any changes have not yet been saved!</div><hr>|;
-:332
-$buffer .= qq|<div class="message">このページは編集できないように保護されているか、編集が禁止されています。これにはいくつか理由があります。詳しくは<a href="/wiki/$URL_HOGO">$PAGE_HOGO</a>または<a href="/wiki/$URL_HOGOKIROKU">$PAGE_HOGOKIROKU</a>をご覧ください。</div><hr>|;
-$buffer .= qq|<div class="message">This page is currently protected from editing. これにはいくつか理由があります。詳しくは<a href="/wiki/$URL_HOGO">$PAGE_HOGO</a>または<a href="/wiki/$URL_HOGOKIROKU">$PAGE_HOGOKIROKU</a>をご覧ください。</div><hr>|;
-:362
-$buffer .= qq|<div class=\"warning2\">UCS関連グリフの関連字に別の文字の割り当てや未定義(〓)とすることはできません。別の文字を関連付けたい場合は<a class=\"notice\" href=\"/wiki/GlyphWiki:$URL_MUSTRELATE\">$WORD_MUSTRELATE</a>に記述して異体字としての関連付けを申請してください。</div><hr>|;
-$buffer .= qq|<div class=\"warning2\">UCS関連グリフの関連字に別の文字の割り当てや未定義(〓)とすることはできません。別の文字を関連付けたい場合は<a class=\"notice\" href=\"/wiki/GlyphWiki:$URL_MUSTRELATE\">$WORD_MUSTRELATE</a>に記述して異体字としての関連付けを申請してください。</div><hr>|;
-:375
-$buffer .= qq|<div class=\"warning2\">他のグリフがこのグリフ(あるいはこのグリフの古い版)を引用しているので実際には削除できません。</div><hr>|;
-$buffer .= qq|<div class=\"warning2\">他のグリフがこのグリフ(あるいはこのグリフの古い版)を引用しているので実際には削除できません。</div><hr>|;
-:382
-$buffer .= qq|<div class=\"warning2\">エイリアスの対象グリフはバージョンを指定できません。このままでは登録はできません。バージョン指定を外すか、エイリアスではなく実体化する必要があります(専用エディタで部品を分解してください)。</div><hr>|;
-$buffer .= qq|<div class=\"warning2\">エイリアスの対象グリフはバージョンを指定できません。このままでは登録はできません。バージョン指定を外すか、エイリアスではなく実体化する必要があります(専用エディタで部品を分解してください)。</div><hr>|;
-:390
-$buffer .= "<div class=\"warning2\">存在しないグリフをエイリアスとして参照しています。実際には登録できません!</div><hr>";
-$buffer .= "<div class=\"warning2\">It refers unexisting glyph as alias. Actually it can't register!</div><hr>";
-:401
-$buffer .= qq|<h2>フォント</h2>|;
-$buffer .= qq|<h2>Font file</h2>|;
-:403
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_FONT">フォント生成のヘルプ</a>|;
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_FONT">help document for generating font file</a>|;
-:410
-$buffer .= qq|<li>TrueTypeフォント <a href="/font/$fontname.ttf">ダウンロード</a> (内部バージョン $fontname、$fontsize バイト)|;
-$buffer .= qq|<li>TrueType font file <a href="/font/$fontname.ttf">download</a> (inner version: $fontname、$fontsize bytes)|;
-:411,423,427
-$buffer .= qq|<ul><li>フォント生成ログ <a href="/font/$fontname.log">閲覧</a></ul>|;
-$buffer .= qq|<ul><li>log for font generation <a href="/font/$fontname.log">view</a></ul>|;
-:412
-$buffer .= qq|<li>フォント生成ソース<ul>|;
-$buffer .= qq|<li>sources to generate the font<ul>|;
-:413
-$buffer .= qq|<li><a href="/font/$fontname.source">ソースファイル</a>|;
-$buffer .= qq|<li><a href="/font/$fontname.source">source file</a>|;
-:414
-$buffer .= qq|<li><a href="/font/$fontname.meta">フォント定義ファイル</a>|;
-$buffer .= qq|<li><a href="/font/$fontname.meta">font definition file</a>|;
-:416
-$buffer .= qq|<li><a href="/font/$fontname.ivs">IVS定義ファイル</a>|;
-$buffer .= qq|<li><a href="/font/$fontname.ivs">IVS definition file</a>|;
-:422
-$buffer .= qq|<li>現在フォント生成中です。|;
-$buffer .= qq|<li>It is in generating process of font file now.|;
-:424
-$buffer .= qq|<ul><li><a href="/wiki/$wiki_name">最新の状況に更新</a></ul>|;
-$buffer .= qq|<ul><li><a href="/wiki/$wiki_name">Update latest status</a></ul>|;
-:426
-$buffer .= qq|<li>フォント生成に失敗しました(念のためページを再読み込みしてください)。|;
-$buffer .= qq|<li>Failed in generating font file. (You can try to reload this page.)|;
-:430
-$buffer .= qq|<li><a href="/wiki/$wiki_name?action=makettf">フォント生成の実行</a>|;
-$buffer .= qq|<li><a href="/wiki/$wiki_name?action=makettf">Execute to generate font</a>|;
-:431
-$buffer .= qq|<ul><li>クリックするとフォント生成が始まります。生成に必要な時間は、概ね1,000グリフで4分程度です。</ul>|;
-$buffer .= qq|<ul><li>When you click this link, font generation begins. It costs about 4 minutes per 1,000 glyphs.</ul>|;
-:434
-$buffer .= qq|<h2>グリフ集合</h2>|;
-$buffer .= qq|<h2>Set of glyphs</h2>|;
-:439
-$buffer .= qq|<div class="message">このグリフは<a href="/wiki/GlyphWiki:$URL_ALIAS">エイリアス</a>(他のグリフの別名)に指定されています。このまま編集を行うと独立したグリフ(あるいは別のグリフに対するエイリアス)となり、<span class="notice">現在指しているグリフとの関係は解消されます</span>。現在指しているグリフとの関係を継続する場合は、<a class="notice" href="$alias_to?action=edit">実体となるグリフを編集</a>してください。</div>|;
-$buffer .= qq|<div class="message">このグリフは<a href="/wiki/GlyphWiki:$URL_ALIAS">エイリアス</a>(他のグリフの別名)に指定されています。このまま編集を行うと独立したグリフ(あるいは別のグリフに対するエイリアス)となり、<span class="notice">現在指しているグリフとの関係は解消されます</span>。現在指しているグリフとの関係を継続する場合は、<a class="notice" href="$alias_to?action=edit">実体となるグリフを編集</a>してください。</div>|;
-:457
-$buffer .= qq|<div class="compare"><table><tr><td>保存された版<td>あなたのグリフ<tr><td><img src="/glyph/$temp_name.png"><td><img src="/get_preview_glyph.cgi?data=$cgi_textbox"></table></div>|;
-$buffer .= qq|<div class="compare"><table><tr><td>保存された版<td>あなたのグリフ<tr><td><img src="/glyph/$temp_name.png"><td><img src="/get_preview_glyph.cgi?data=$cgi_textbox"></table></div>|;
-:466
-$buffer .= qq|<div class="texts" style="margin: 1em 0 0 1em;"><a class="wiki" href=\"/wiki/$alias_to\">$alias_to</a> の<a href="/wiki/GlyphWiki:$URL_ALIAS">エイリアス</a>(別名)</div>|;
-$buffer .= qq|<div class="texts" style="margin: 1em 0 0 1em;"><a class="wiki" href=\"/wiki/$alias_to\">$alias_to</a> の<a href="/wiki/GlyphWiki:$URL_ALIAS">Aliase(s)</a></div>|;
-:473
-$buffer .= qq|<span class="text glyph_link">(SVG画像 <a href="/glyph/$db_wiki_name.svg">ポリゴン</a> <a href="/glyph/$db_wiki_name.path.svg">パス</a>)</span>|;
-$buffer .= qq|<span class="text glyph_link">(SVG image <a href="/glyph/$db_wiki_name.svg">by polygon</a> <a href="/glyph/$db_wiki_name.path.svg">by path</a>)</span>|;
-:474
-$buffer .= qq|<span class="text glyph_link"><a href="/glyph/$db_wiki_name.eps">(EPS画像)</a></span><br>|;
-$buffer .= qq|<span class="text glyph_link"><a href="/glyph/$db_wiki_name.eps">(EPS image)</a></span><br>|;
-:479
-$buffer .= qq|<span class="text glyph_link"><a href="/glyph/$db_wiki_name\@$query_version.svg">(SVG画像)</a></span>|;
-$buffer .= qq|<span class="text glyph_link"><a href="/glyph/$db_wiki_name\@$query_version.svg">(SVG image)</a></span>|;
-:480
-$buffer .= qq|<span class="text glyph_link"><a href="/glyph/$db_wiki_name\@$query_version.eps">(EPS画像)</a></span><br>|;
-$buffer .= qq|<span class="text glyph_link"><a href="/glyph/$db_wiki_name\@$query_version.eps">(EPS image)</a></span><br>|;
-:485
-$buffer .= qq|<div class="message">このページ(この版)は<span class="notice">管理者によって削除されました</span>。詳細は<a href="/wiki/$URL_DELETE_LOG">$WORD_DELETE_LOG</a>を参照してください。</div>|;
-$buffer .= qq|<div class="message">This page (this revision) was <span class="notice">deleted by administrator</span>. Please see <a href="/wiki/$URL_DELETE_LOG">$WORD_DELETE_LOG</a> for details.</div>|;
-:538
-$parent_info .= "<li>あなたのブラウザでの表示:<span class=\"related\">$parent_char</span>";
-$parent_info .= "<li>browser view: <span class=\"related\">$parent_char</span>";
-:559
-$parent_info .= "前の符号位置:<a href=\"/wiki/u$code\"><span class=\"related\">$char</span> (u$code)</a> ";
-$parent_info .= "previous code point: <a href=\"/wiki/u$code\"><span class=\"related\">$char</span> (u$code)</a> ";
-:578
-$parent_info .= "次の符号位置:<a href=\"/wiki/u$code\"><span class=\"related\">$char</span> (u$code)</a> ";
-$parent_info .= "next code point: <a href=\"/wiki/u$code\"><span class=\"related\">$char</span> (u$code)</a> ";
-:583,607,634,661
-$buffer .= qq|<h2>文字コード関連情報</h2>|;
-$buffer .= qq|<h2>Information about CCS</h2>|;
-:596,623,650
-$parent_info .= "前の番号:<a href=\"/wiki/$codechar\"><img class=\"thumb related\" src=\"/glyph/$codechar.50px.png\"> ($codechar)</a><br>";
-$parent_info .= "Prev. number : <a href=\"/wiki/$codechar\"><img class=\"thumb related\" src=\"/glyph/$codechar.50px.png\"> ($codechar)</a><br>";
-:602,629,656
-$parent_info .= "次の番号:<a href=\"/wiki/$codechar\"><img class=\"thumb related\" src=\"/glyph/$codechar.50px.png\"> ($codechar)</a><br>";
-$parent_info .= "Next number : <a href=\"/wiki/$codechar\"><img class=\"thumb related\" src=\"/glyph/$codechar.50px.png\"> ($codechar)</a><br>";
-:609
-$buffer .= qq|法務省 戸籍統一文字情報 <a href="http://kosekimoji.moj.go.jp/kosekimojidb/mjko/PeopleTop/">検索サイト</a><br>|;
-$buffer .= qq|法務省 戸籍統一文字情報 <a href="http://kosekimoji.moj.go.jp/kosekimojidb/mjko/PeopleTop/">検索サイト</a><br>|;
-:636,663
-$buffer .= qq|諸橋轍次『大漢和辞典』<br>|;
-$buffer .= qq|<i>Daikanwa-Jiten</i> by Tetsuji Morohashi<br>|;
-:680
-$buffer_related .= qq|<table border="0"><tr><td align="right" valign="top"><nobr><a href="/wiki/GlyphWiki:$URL_RELATED">関連字</a>:</nobr>|;
-$buffer_related .= qq|<table border="0"><tr><td align="right" valign="top"><nobr><a href="/wiki/GlyphWiki:$URL_RELATED">Related character(s)</a>:</nobr>|;
-:709
-$buffer_related .= qq|<tr><td align="right" valign="top"><nobr><a href="/wiki/GlyphWiki:$URL_VARIANT">異体字</a>:</nobr><td valign="top">$related_char$related_code<br>$label<td valign="top">$temp|;
-$buffer_related .= qq|<tr><td align="right" valign="top"><nobr><a href="/wiki/GlyphWiki:$URL_VARIANT">Variant(s)</a>:</nobr><td valign="top">$related_char$related_code<br>$label<td valign="top">$temp|;
-:717
-$buffer_related .= qq|<tr><td align="right" valign="top"><nobr><a href="/wiki/GlyphWiki:$URL_VARIANT">異体字</a>:</nobr><td valign="top"><a href="/wiki/$related_code2">$related_char$related_code</a><br>$label<td valign="top">|;
-$buffer_related .= qq|<tr><td align="right" valign="top"><nobr><a href="/wiki/GlyphWiki:$URL_VARIANT">Variant(s)</a>:</nobr><td valign="top"><a href="/wiki/$related_code2">$related_char$related_code</a><br>$label<td valign="top">|;
-:731
-$buffer_related .= "<p><a href=\"/springGraph.swf?code=$related_code_springgraph\">ばねグラフで異体字を表示する</a> | <span class=\"disable\">異体字の異体字をすべてたどって表示する</span></p>"
-$buffer_related .= "<p><a href=\"/springGraph.swf?code=$related_code_springgraph\">ばねグラフで異体字を表示する</a> | <span class=\"disable\">異体字の異体字をすべてたどって表示する</span></p>"
-:734
-$buffer_related .= "<p>(未設定)</p>";
-$buffer_related .= "<p>(undefined)</p>";
-:738
-$buffer .= qq|<h2>関連グリフ</h2>|;
-$buffer .= qq|<h2>Related glyphs</h2>|;
-:778
-$buffer_quoting .= "<br><p>(残りは省略されています ... <a href=\"?view=all\">すべて表示する</a>)</p>";
-$buffer_quoting .= "<br><p>(snipped ... <a href=\"?view=all\">view all</a>)</p>";
-:796
-$buffer .= qq|<h2>このグリフの<a href="/wiki/GlyphWiki:$URL_ALIAS">エイリアス</a>(別名)一覧</h2>|;
-$buffer .= qq|<h2>List of <a href="/wiki/GlyphWiki:Aliases">aliases</a> for this glyph</h2>|;
-:800
-$buffer .= qq|<h2>このグリフを内部で引用している他のグリフ一覧</h2>|;
-$buffer .= qq|<h2>This glyph is quoted by:</h2>|;
-:802
-$buffer .= qq|<div class="texts"><a href="/wiki/Special:Renewall?view=listup&target=$wiki_name">部品グリフを別のグリフに置き換える</a></div>|;
-$buffer .= qq|<div class="texts"><a href="/wiki/Special:Renewall?view=listup&target=$wiki_name">部品グリフを別のグリフに置き換える</a></div>|;
-:818
-$buffer .= qq|<h2>このグリフで引用している他のグリフ一覧</h2>|;
-$buffer .= qq|<h2>This glyph consists of:</h2>|;
-:839
-$local_using =~ s/^Talk:/ノート:/;
-# no operation
-:840
-$local_using =~ s/^Glyphwiki-talk:/GlyphWiki-ノート:/;
-# no operation
-:841
-$local_using =~ s/^User:/利用者:/;
-# no operation
-:842
-$local_using =~ s/^User-talk:/利用者-会話:/;
-# no operation
-:843
-$local_using =~ s/^Group:/グループ:/;
-# no operation
-:844
-$local_using =~ s/^Group-talk:/グループ-ノート:/;
-# no operation
-:850
-$buffer .= qq|<h2>このグリフを収録するグループ一覧</h2>|;
-$buffer .= qq|<h2>This glyph is a member of the below group(s):</h2>|;
-:884
-my $temp2 = &url_encode("旧部品の更新");
-my $temp2 = &url_encode("update quoted old part(s)");
-:885
-$buffer .= qq|<h2>引用する旧部品の更新</h2>|;
-$buffer .= qq|<h2>update quoted old part(s)</h2>|;
-:886
-$buffer .= qq|<div class="texts">現在:<img class="glyph compare" src="/glyph/$db_wiki_name\@$newest_version.png" border="0"> |;
-$buffer .= qq|<div class="texts">current design:<img class="glyph compare" src="/glyph/$db_wiki_name\@$newest_version.png" border="0"> |;
-:887
-$buffer .= qq|最新部品を利用:<img class="glyph compare" src="/get_preview_glyph.cgi?data=$temp" border="0"> |;
-$buffer .= qq|use the newest part(s):<img class="glyph compare" src="/get_preview_glyph.cgi?data=$temp" border="0"> |;
-:888
-$buffer .= qq|<a href="?action=edit&buttons=$URL_PREVIEW&textbox=$temp&related=$url_related&summary=$temp2">更新する</a></div>|;
-$buffer .= qq|<a href="?action=edit&buttons=$URL_PREVIEW&textbox=$temp&related=$url_related&summary=$temp2">Update</a></div>|;
-:914
-$buffer .= qq|<h2>このグループを引用するグループ一覧</h2>|;
-$buffer .= qq|<h2>List of groups which quotes this group</h2>|;
-:923
-$buffer .= qq|<div class="panel"><span class="warning">この名前は<a href="/wiki/GlyphWiki:$URL_GUIDE">命名ガイドライン</a>に沿っていない可能性があります。確認のうえ正しくなければ修正してください。</span><ul><li>諸橋轍次『大漢和辞典』番号は <a href="/wiki/dkw-$num0$num1">dkw-$num0$num1</a> のように数字5桁を指定してください</ul></div>|;
-$buffer .= qq|<div class="panel"><span class="warning">この名前は<a href="/wiki/GlyphWiki:$URL_GUIDE">命名ガイドライン</a>に沿っていない可能性があります。確認のうえ正しくなければ修正してください。</span><ul><li>諸橋轍次『大漢和辞典』番号は <a href="/wiki/dkw-$num0$num1">dkw-$num0$num1</a> のように数字5桁を指定してください</ul></div>|;
-:928
-$buffer .= qq|<div class="panel"><span class="warning">この名前は<a href="/wiki/GlyphWiki:$URL_GUIDE">命名ガイドライン</a>に沿っていない可能性があります。確認のうえ正しくなければ修正してください。</span><ul><li>法務省戸籍統一文字番号は <a href="/wiki/koseki-$num0$num1">koseki-$num0$num1</a> のように数字6桁を指定してください</ul></div>|;
-$buffer .= qq|<div class="panel"><span class="warning">この名前は<a href="/wiki/GlyphWiki:$URL_GUIDE">命名ガイドライン</a>に沿っていない可能性があります。確認のうえ正しくなければ修正してください。</span><ul><li>法務省戸籍統一文字番号は <a href="/wiki/koseki-$num0$num1">koseki-$num0$num1</a> のように数字6桁を指定してください</ul></div>|;
-:931
-$buffer .= qq|<div class="panel"><span class="warning">この名前は<a href="/wiki/GlyphWiki:$URL_GUIDE">命名ガイドライン</a>に沿っていない可能性があります。確認のうえ正しくなければ修正してください。</span><ul><li>baseparts- は廃止されました</ul></div>|;
-$buffer .= qq|<div class="panel"><span class="warning">この名前は<a href="/wiki/GlyphWiki:$URL_GUIDE">命名ガイドライン</a>に沿っていない可能性があります。確認のうえ正しくなければ修正してください。</span><ul><li>baseparts- は廃止されました</ul></div>|;
-:933
-$buffer .= qq|<div class="panel"><span class="warning">グリフウィキには現在この名前の項目はありません。</span><ul><li><a href="/wiki/$url_db_wiki_name?action=edit" class="recommend">&quot;$db_wiki_name&quot;という項目を新規作成する</a>。または<a href="/wiki/GlyphWiki:$URL_SEISAKUIRAI">制作依頼</a>する。<li>既存の項目から<a href="/wiki/Special:Search?action=fulltext&search=$url_db_wiki_name">&quot;$db_wiki_name&quot;を検索する</a>。</ul><hr><ul><li>もしこの項目を作成したことがあるのにこのメッセージがでる場合、データベースの更新が遅れているために表示できないか、既に削除されています(<a href="/wiki/$URL_SAKUJO">$WORD_SAKUJO</a>に削除された理由が記載されているかもしれません)。<a href="/wiki/$URL_DELETE_LOG">$WORD_DELETE_LOG</a>も確認してください。</ul></div>|;
-$buffer .= qq|<div class="panel"><span class="warning">GlyphWiki does not have an article with this exact name.</span><ul><li><a href="/wiki/$url_db_wiki_name?action=edit" class="recommend">&quot;$db_wiki_name&quot;という項目を新規作成する</a>。または<a href="/wiki/GlyphWiki:$URL_SEISAKUIRAI">制作依頼</a>する。<li>既存の項目から<a href="/wiki/Special:Search?action=fulltext&search=$url_db_wiki_name">&quot;$db_wiki_name&quot;を検索する</a>。</ul><hr><ul><li>もしこの項目を作成したことがあるのにこのメッセージがでる場合、データベースの更新が遅れているために表示できないか、既に削除されています(<a href="/wiki/$URL_SAKUJO">$WORD_SAKUJO</a>に削除された理由が記載されているかもしれません)。<a href="/wiki/$URL_DELETE_LOG">$WORD_DELETE_LOG</a>も確認してください。</ul></div>|;
-:966
-$buffer .= qq|<h2>あなたのグリフ</h2>|;
-$buffer .= qq|<h2>Your desgined glyph</h2>|;
-:979
-$buffer .= qq|<a href="/wiki/GlyphWiki:$URL_RELATED">関連字</a> (入力必須): <input type="text" name="related" value="$temp2" size="6"><br>|; 
-$buffer .= qq|<a href="/wiki/GlyphWiki:$URL_RELATED">related character</a> (must input): <input type="text" name="related" value="$temp2" size="6"><br>|; 
-:987
-$buffer .= qq|<div class="message"><div class="title">■投稿する前に以下の事柄を確認してください■</div><ol><li>GlyphWikiに投稿したデータは著作権の譲渡を行ったことになり、その<span class="notice">データがいかなる形態で改変・使用されることもあなたは許諾し、以後著作者人格権を主張・使用しないことを了承するものとみなします</span>。<li><span class="notice">他のフォントや印刷物などからグリフを無断で転載・コピー・トレースしないでください</span>。それ以外にも投稿内容に問題がある場合、<a href="/wiki/$URL_SAKUJO">削除の方針</a>に基づき削除されます。また、グリフウィキの運営方針についてはこれから決定していきますが、<span class="notice">最終的な決定権は管理者にあるものとします</span>。これらのことにあなたはあらかじめ同意したものとみなします。 <li>GlyphWikiのデータ・記事のライセンスはWikipediaの記事のライセンス(GFDL)とは異なります。詳しくは <a href="/wiki/GlyphWiki:$URL_LICENSE">データ・記事のライセンス</a> を参照してください。</ol></div>|;
-$buffer .= qq|<div class="message"><div class="title">*** please confirm the following matters before contributing it ***</div><ol><li>GlyphWikiに投稿したデータは著作権の譲渡を行ったことになり、その<span class="notice">データがいかなる形態で改変・使用されることもあなたは許諾し、以後著作者人格権を主張・使用しないことを了承するものとみなします</span>。<li><span class="notice">他のフォントや印刷物などからグリフを無断で転載・コピー・トレースしないでください</span>。それ以外にも投稿内容に問題がある場合、<a href="/wiki/$URL_SAKUJO">削除の方針</a>に基づき削除されます。また、グリフウィキの運営方針についてはこれから決定していきますが、<span class="notice">最終的な決定権は管理者にあるものとします</span>。これらのことにあなたはあらかじめ同意したものとみなします。 <li>GlyphWikiのデータ・記事のライセンスはWikipediaの記事のライセンス(GFDL)とは異なります。詳しくは <a href="/wiki/GlyphWiki:$URL_LICENSE">データ・記事のライセンス</a> を参照してください。</ol></div>|;
-:989,1030
-$buffer .= qq|<div class="toolbox"><a href="/wiki/GlyphWiki:$URL_YOUYAKU">編集内容の要約</a>: <input type="text" name="summary" value="$html_summary" size="100"><br>|;
-$buffer .= qq|<div class="toolbox"><a href="/wiki/GlyphWiki:$URL_YOUYAKU">Edit summary</a>: <input type="text" name="summary" value="$html_summary" size="100"><br>|;
-:991,1032
-$buffer .= "要約のプレビュー: <span class=\"summary\">($html_summary)</span><br>";
-$buffer .= "Summary preview: <span class=\"summary\">($html_summary)</span><br>";
-:1000,1041
-$buffer .= qq*<a href="/wiki/$url_wiki_name">中止</a> | <a href="/wiki/GlyphWiki:$URL_HENSHU" target="_blank">編集の仕方</a> (新しいウィンドウが開きます)</div>*;
-$buffer .= qq*<a href="/wiki/$url_wiki_name">Cancel</a> | <a href="/wiki/GlyphWiki:$URL_HENSHU" target="_blank">Editing help</a> (opens in new window)</div>*;
-:1005
-$buffer .= qq|<div class="message2">以下にソースを表示しています:</div>|;
-$buffer .= qq|<div class="message2">Showing source in the following:</div>|;
-:1009
-$buffer .= qq|<a href="/wiki/GlyphWiki:$URL_RELATED">関連字</a>: <input type="text" name="related" value="$temp2" size="6"><br>|; 
-$buffer .= qq|<a href="/wiki/GlyphWiki:$URL_RELATED">related character</a>: <input type="text" name="related" value="$temp2" size="6"><br>|; 
-:1016
-$buffer .= qq|<div class="message"><a href="/wiki/$url_db_wiki_name">$db_wiki_name</a> に戻る。</div>|;
-$buffer .= qq|<div class="message">Return tp <a href="/wiki/$url_db_wiki_name">$db_wiki_name</a>.</div>|;
-:1028
-$buffer .= qq|<div class="message"><div class="title">■投稿する前に以下の事柄を確認してください■</div><ol><li>GlyphWikiに投稿した記事は著作権の譲渡を行ったことになり、その<span class="notice">記事がいかなる形態で改変・使用されることもあなたは許諾し、以後著作者人格権を主張・使用しないことを了承するものとみなします</span>。<li><span class="notice">他のWebページや出版物などから文章を無断で転載・コピー・トレースしないでください</span>。それ以外にも投稿内容に問題がある場合、<a href="/wiki/$URL_SAKUJO">削除の方針</a>に基づき削除されます。また、グリフウィキの運営方針についてはこれから決定していきますが、<span class="notice">最終的な決定権は管理者にあるものとします</span>。これらのことにあなたはあらかじめ同意したものとみなします。 <li>GlyphWikiのデータ・記事のライセンスはWikipediaの記事のライセンス(GFDL)とは異なります。詳しくは<a href="/wiki/GlyphWiki:$URL_LICENSE">データ・記事のライセンス</a>を参照してください。</ol></div>|;
-$buffer .= qq|<div class="message"><div class="title">*** please confirm the following matters before contributing it ***</div><ol><li>GlyphWikiに投稿した記事は著作権の譲渡を行ったことになり、その<span class="notice">記事がいかなる形態で改変・使用されることもあなたは許諾し、以後著作者人格権を主張・使用しないことを了承するものとみなします</span>。<li><span class="notice">他のWebページや出版物などから文章を無断で転載・コピー・トレースしないでください</span>。それ以外にも投稿内容に問題がある場合、<a href="/wiki/$URL_SAKUJO">削除の方針</a>に基づき削除されます。また、グリフウィキの運営方針についてはこれから決定していきますが、<span class="notice">最終的な決定権は管理者にあるものとします</span>。これらのことにあなたはあらかじめ同意したものとみなします。 <li>GlyphWikiのデータ・記事のライセンスはWikipediaの記事のライセンス(GFDL)とは異なります。詳しくは<a href="/wiki/GlyphWiki:$URL_LICENSE">データ・記事のライセンス</a>を参照してください。</ol></div>|;
-:1044
-$buffer .= qq|<h2>あなたの更新内容</h2>|;
-$buffer .= qq|<h2>your changes</h2>|;
-:1056
-$sqlh = $dbh->prepare("SELECT count(*) FROM wiki WHERE name = '$db_wiki_name' AND username != 'autoglyph-bot' AND summary != '旧部品の一括更新' AND summary != '部品の一括更新'");
-$sqlh = $dbh->prepare("SELECT count(*) FROM wiki WHERE name = '$db_wiki_name' AND username != 'autoglyph-bot' AND summary != '旧部品の一括更新' AND summary != '部品の一括更新'");
-:1057
-$DEBUG .= "SELECT count(*) FROM wiki WHERE name = '$db_wiki_name' AND username != 'autoglyph-bot' AND summary != '旧部品の一括更新' AND summary != '部品の一括更新'\n";
-$DEBUG .= "SELECT count(*) FROM wiki WHERE name = '$db_wiki_name' AND username != 'autoglyph-bot' AND summary != '旧部品の一括更新' AND summary != '部品の一括更新'\n";
-:1070
-my $summary = &url_encode("簡易調整");
-my $summary = "simple adjustment";
-:1072
-$buffer .= qq|<h2>簡易調整</h2>\n<div class="texts">適切と思われるグリフをクリックしてください。続けてプレビュー状態になります。赤枠は現在プレビュー中のグリフです。</div>|;
-$buffer .= qq|<h2>Simple adjustment</h2>\n<div class="texts">Click most proper designed glyph, and become preview mode. The red frame is currently previewed glyph.</div>|;
-:1074
-$buffer .= qq|<h2>簡易調整</h2>\n<div class="texts">適切と思われるグリフをクリックしてください。プレビュー状態になります。赤枠は現在の登録グリフです。</div>|;
-$buffer .= qq|<h2>Simple adjustment</h2>\n<div class="texts">Click most proper designed glyph, and become preview mode. The red frame is currently registered glyph.</div>|;
-:1083
-$buffer .= qq|<h3>間隔<span style="font-size: 80%; font-weight: normal;">(広く ←→ 狭く)</span></h3>|;
-$buffer .= qq|<h3>Space between two components<span style="font-size: 80%; font-weight: normal;">( get wider ←→ get narrower )</span></h3>|;
-:1159
-$buffer .= qq|<h3>比率<span style="font-size: 80%; font-weight: normal;">(左を小さく ←→ 右を小さく)</span></h3>|;
-$buffer .= qq|<h3>Ratio of two components<span style="font-size: 80%; font-weight: normal;">( get smaller the left ←→ get smaller the right )</span></h3>|;
-
-!/home/kamichi/glyphwiki/makefont.pl
-:79
-if($data =~ m/(^|\r\n|\r|\n):(usecurve|曲線を使う):(yes|はい)/){
-if($data =~ m/(^|\r\n|\r|\n):(usecurve|曲線を使う):(yes|はい)/){
-:87
-if($data =~ m/(^|\r\n|\r|\n):(baseline|ベースライン):(-?[0-9]{3})/){
-if($data =~ m/(^|\r\n|\r|\n):(baseline|ベースライン):(-?[0-9]{3})/){
-
-!/home/kamichi/glyphwiki/common.pl
-:661
-$dbh->do("INSERT INTO wiki VALUES (DEFAULT, '$wikiname', COALESCE((SELECT max(version) FROM wiki WHERE name = '$wikiname'), 0) + 1, $time, '$user', 'エイリアス実体変更による自動更新', 0, '$old_buffer', '$ip', $current_related, 1)"); 
-$dbh->do("INSERT INTO wiki VALUES (DEFAULT, '$wikiname', COALESCE((SELECT max(version) FROM wiki WHERE name = '$wikiname'), 0) + 1, $time, '$user', 'Automatic update by changes of substance of aliases', 0, '$old_buffer', '$ip', $current_related, 1)"); 
-:662
-$DEBUG .= "INSERT INTO wiki VALUES (DEFAULT, '$wikiname', COALESCE((SELECT max(version) FROM wiki WHERE name = '$wikiname'), 0) + 1, $time, '$user', 'エイリアス実体変更による自動更新', 0, '$old_buffer', '$ip', $current_related, 1)\n";
-$DEBUG .= "INSERT INTO wiki VALUES (DEFAULT, '$wikiname', COALESCE((SELECT max(version) FROM wiki WHERE name = '$wikiname'), 0) + 1, $time, '$user', 'Automatic update by changes of substance of aliases', 0, '$old_buffer', '$ip', $current_related, 1)\n";
-:703
-$URL_USERNAME = &url_encode("ユーザー名");
-$URL_USERNAME = &url_encode("ユーザー名");
-:704
-$URL_SANDBOX = &url_encode("サンドボックス");
-$URL_SANDBOX = &url_encode("サンドボックス");
-:705
-$URL_SEISAKUIRAI = &url_encode("制作依頼");
-$URL_SEISAKUIRAI = &url_encode("制作依頼");
-:706
-$URL_HENSHU = &url_encode("編集の仕方");
-$URL_HENSHU = &url_encode("編集の仕方");
-:707
-$URL_YOUYAKU = &url_encode("常に要約欄に記入する");
-$URL_YOUYAKU = &url_encode("常に要約欄に記入する");
-:708
-$URL_LICENSE = &url_encode("データ・記事のライセンス");
-$URL_LICENSE = "License";
-:709
-$URL_ABOUT = &url_encode("グリフウィキについて");
-$URL_ABOUT = "About";
-:710
-$URL_PRIVACY = &url_encode("プライバシー・ポリシー");
-$URL_PRIVACY = "PrivacyPolicy";
-:711
-$URL_MENSEKI = &url_encode("免責事項");
-$URL_MENSEKI = "Disclaimers";
-:712
-$URL_RELATED = &url_encode("関連字");
-$URL_RELATED = &url_encode("関連字");
-:713
-$URL_VARIANT = &url_encode("異体字");
-$URL_VARIANT = &url_encode("異体字");
-:714
-$URL_BUG = &url_encode("バグ報告");
-$URL_BUG = &url_encode("バグ報告");
-:715
-$URL_JOIN = &url_encode("あなたにできること");
-$URL_JOIN = "JoinUs";
-:716
-$URL_FAQ = &url_encode("よくある質問");
-$URL_FAQ = "FAQ";
-:717
-$URL_HOWTO = &url_encode("どうやって使うのか");
-$URL_HOWTO = "Tutorial";
-:718
-$URL_FONT = &url_encode("フォント生成");
-$URL_FONT = &url_encode("フォント生成");
-:719
-$URL_ALIAS = &url_encode("エイリアス");
-$URL_ALIAS = &url_encode("エイリアス");
-:720
-$URL_CAPTCHA = &url_encode("キャプチャ");
-$URL_CAPTCHA = &url_encode("キャプチャ");
-:721
-$URL_NEWS = &url_encode("お知らせ");
-$URL_NEWS = "News";
-:722
-$URL_IDOBATA = &url_encode("井戸端");
-$URL_IDOBATA = &url_encode("VillagePump");
-:723
-$URL_GUIDE = &url_encode("命名ガイドライン");
-$URL_GUIDE = &url_encode("命名ガイドライン");
-:725
-$WORD_QUERY = "問い合わせ";
-$WORD_QUERY = "You searched for";
-:727
-$WORD_EDITOR = "専用エディタで編集する";
-$WORD_EDITOR = "Edit by glyph editor";
-:729
-$WORD_DESCRIPTION = "説明";
-$WORD_DESCRIPTION = "Description";
-:731
-$WORD_DEFAULT = "メインページ";
-$WORD_DEFAULT = "MainPage";
-:734
-$WORD_CONFIRM_EMAIL = "確認用コードを送信する";
-$WORD_CONFIRM_EMAIL = "Send confirmation code by email.";
-:737
-$WORD_REGISTER_EMAIL = "メールアドレスを登録する";
-$WORD_REGISTER_EMAIL = "メールアドレスを登録する";
-:740
-$WORD_NEW_PASSWORD = "新しいパスワードをメールで送る";
-$WORD_NEW_PASSWORD = "E-mail new password";
-:743
-$WORD_LOGIN = "ログイン";
-$WORD_LOGIN = "Log in";
-:747
-$WORD_FROM = "出典: フリーグリフデータベース『グリフウィキ(GlyphWiki)』";
-$WORD_FROM = "From GlyphWiki: the free glyph database";
-:749
-$TAB_KAISETSU = "解説";
-$TAB_KAISETSU = "article";
-:750
-$TAB_SPECIAL = "特別ページ";
-$TAB_SPECIAL = "special page";
-:751
-$TAB_EDIT = "編集";
-$TAB_EDIT = "edit this page";
-:752
-$TAB_VIEW_SOURCE = "ソースを表示";
-$TAB_VIEW_SOURCE = "view source";
-:753
-$TAB_GLYPH = "グリフ";
-$TAB_GLYPH = "glyph";
-:754
-$TAB_RECENT = "履歴";
-$TAB_RECENT = "history";
-:755
-$TAB_GROUP = "グループ";
-$TAB_GROUP = "group";
-:756
-$TAB_NOTE = "ノート";
-$TAB_NOTE = "discussion";
-:757
-$TAB_USER = "利用者ページ";
-$TAB_USER = "user page";
-:758
-$LABEL_RECENT = "履歴";
-$LABEL_RECENT = "hist";
-:759
-$LABEL_KAIWA = "会話";
-$LABEL_KAIWA = "Talk";
-:760
-$LABEL_USER = "利用者";
-$LABEL_USER = "User";
-:761
-$LABEL_ANONYMOUS = "匿名利用者";
-$LABEL_ANONYMOUS = "anonymous user";
-:763
-$WORD_MUSTRELATE = "関連付けるべきグリフ";
-$WORD_MUSTRELATE = "関連付けるべきグリフ";
-:767
-$WORD_HOGOKIROKU = "保護記録";
-$WORD_HOGOKIROKU = "Protection log";
-:771
-$WORD_HOGO = "保護されたページ";
-$WORD_HOGO = "Protected page";
-:775
-$WORD_SAKUJO = "削除の方針";
-$WORD_SAKUJO = "Deletion policy";
-:779
-$WORD_DELETE_LOG = "削除記録";
-$WORD_DELETE_LOG = "Deletion log";
-:783
-$WORD_ACCEPT_AND_SUBMIT = "以上の記述を完全に理解し同意したうえで投稿する";
-$WORD_ACCEPT_AND_SUBMIT = "Save page";
-:786
-$WORD_PREVIEW = "プレビューを実行";
-$WORD_PREVIEW = "Show preview";
-:790
-$WORD_KENSAKU = "検索";
-$WORD_KENSAKU = "Search";
-:794
-$WORD_HYOUJI = "表示";
-$WORD_HYOUJI = "Go";
-:806
-$label =~ s/Talk:/ノート:/;
-# no operation
-:807
-$label =~ s/GlyphWiki-talk:/GlyphWiki-ノート:/;
-# no operation
-:808
-$label =~ s/User:/利用者:/;
-# no operation
-:809
-$label =~ s/User-talk:/利用者-会話:/;
-# no operation
-:810
-$label =~ s/Group:/グループ:/;
-# no operation
-:811
-$label =~ s/Group-talk:/グループ-ノート:/;
-# no operation
-:818
-$label =~ s/利用者:/User:/;
-# no operation
-:819
-$label =~ s/利用者-会話:/User-talk:/;
-# no operation
-:820
-$label =~ s/グループ:/Group:/;
-# no operation
-:821
-$label =~ s/グループ-ノート:/Group-talk:/; 
-# no operation
-:822
-$label =~ s/GlyphWiki-ノート:/GlyphWiki-talk:/; 
-# no operation
-:823
-$label =~ s/ノート:/Talk:/;
-# no operation
-:917
-return sprintf("%04d年%d月%d日(%s) %02d:%02d", $year + 1900, $mon + 1, $mday, qw(日 月 火 水 木 金 土)[$wday], $hour, $min);
-return sprintf("%02d:%02d, %d %s %d", $hour, $min, $mday, qw(January February March April May June July August September October November December)[$mon], $year + 1900);
-:1007
-my $subject = 'Password reminder from GlyphWiki (グリフウィキからのパスワードのお知らせ)';
-my $subject = 'Password reminder from GlyphWiki';
-:1009
-どなたか($ip のIPアドレスの使用者)がグリフウィキ(http://glyphwiki.org/)
-Someone (probably you, from IP address $1)
-:1010
-のログイン用パスワードの再発行を依頼しました。
-requested that we send you a new GlyphWiki login password.
-:1012
-利用者 "$name" のパスワードを "$temp_password" に変更しました。
-The password for user "$name" is now "$temp_password".
-:1013
-ログインして別のパスワードに変更してください。
-You should log in and change your password now.
-:1359
-my $subject = 'GlyphWiki メールアドレスの確認';
-my $subject = 'GlyphWiki e-mail address confirmation';
-:1367
-どなたか(IPアドレス $ip の使用者)がこのメールアドレスを
-Someone, probably you from IP address $ip,
-:1368
-GlyphWiki のアカウント "$name" に登録しました。
-has registered an account "$name" with this e-mail address
-:1370
-このアカウントがあなたのものであるか確認してください。
-on GlyphWiki.
-:1371
-あなたの登録したアカウントであるならば、GlyphWiki
-To confirm that this account really does belong to you and activate
-:1372
-のメール通知機能を有効にするために、以下のURLにアクセスしてください:
-e-mail features on GlyphWiki, open this link in your browser:
-:1376
-もし GlyphWiki について身に覚えがない場合は、リンクを開かないでください。
-If this is *not* you, don't follow the link. This confirmation code
-:1377
-確認用コードは $expire に期限切れになります。
-will expire at $expire.
-:1680
-unshift(@tocresult, qq(<div class="toc"><h1>目次</h1>));
-unshift(@tocresult, qq(<div class="toc"><h1>Contents</h1>));
-
diff --git a/glyphwiki/zh.txt b/glyphwiki/zh.txt
deleted file mode 100644 (file)
index f1f6bb0..0000000
+++ /dev/null
@@ -1,1280 +0,0 @@
-!/var/www/glyphwiki.org/index.cgi
-:633
-$temp = sprintf("<div class=\"texts\"><p>グリフ実装率:%d\% (実装済:%dグリフ、未実装:%dグリフ)</p></div>", int($implemented / ($unimplemented + $implemented) * 100), $implemented, $unimplemented);
-$temp = sprintf("<div class=\"texts\"><p>作字率 :%d\% (已作:%d字、未作:%d字)</p></div>", int($implemented / ($unimplemented + $implemented) * 100), $implemented, $unimplemented);
-:634
-$temp2 = sprintf("グリフ実装率:%d\% [済%d、未%d]", int($implemented / ($unimplemented + $implemented) * 100), $implemented, $unimplemented);
-$temp2 = sprintf("作字率:%d\% [已%d、未%d]", int($implemented / ($unimplemented + $implemented) * 100), $implemented, $unimplemented);
-
-!/home/kamichi/glyphwiki/page_others.pl
-:48
-$buffer = "最終更新 ".&local_localtime($lastupdate)."。";
-$buffer = "最后修订于".&local_localtime($lastupdate).".";
-:56
-<a href="/wiki/GlyphWiki:$URL_LICENSE">データ・記事のライセンス</a>
-<a href="/wiki/GlyphWiki:License">著作权</a>
-:57
-<a href="/wiki/GlyphWiki:$URL_PRIVACY">プライバシー・ポリシー</a>
-<a href="/wiki/GlyphWiki:PrivacyPolicy">隐私政策</a>
-:58
-<a href="/wiki/GlyphWiki:$URL_ABOUT">グリフウィキについて</a>
-<a href="/wiki/GlyphWiki:About">关于字维基</a>
-:59
-<a href="/wiki/GlyphWiki:$URL_MENSEKI">免責事項</a>
-<a href="/wiki/GlyphWiki:Disclaimers">免责声明</a>
-:75
-$buffer .= qq|<div class="loginned"><div><img src="/images/user.gif"> <a href="/wiki/User:$loginname">$loginname</a></div> <div><a href="/wiki/User-talk:$loginname">マイ・トーク</a></div> <div><a href="/wiki/Special:Confirmemail">メールアドレスの登録・確認</a></div> <div><a href="/wiki/Special:Userlogout?returnto=$url_query">ログアウト</a></div></div>|;
-$buffer .= qq|<div class="loginned"><div><img src="/images/user.gif"> <a href="/wiki/User:$loginname">$loginname</a></div> <div><a href="/wiki/User-talk:$loginname">讨论页</a></div> <div><a href="/wiki/Special:Confirmemail">电子邮件注册、确认</a></div> <div><a href="/wiki/Special:Userlogout?returnto=$url_query">退出</a></div></div>|;
-:77
-$buffer .= qq|<div class="login"><img src="/images/user.gif"> <a href="/wiki/Special:Userlogin?returnto=$url_query">ログインまたはアカウント作成</a></div>|;
-$buffer .= qq|<div class="login"><img src="/images/user.gif"> <a href="/wiki/Special:Userlogin?returnto=$url_query">登录或注册帐户</a></div>|;
-
-!/home/kamichi/glyphwiki/config.pl
-
-!/home/kamichi/glyphwiki/get_dir.pl
-
-!/home/kamichi/glyphwiki/makeglyphfont.pl
-
-!/home/kamichi/glyphwiki/page_right_others.pl
-:26
-$title = qq|古い部品を引用しているグリフ|;
-$title = qq|使用旧零件的字|;
-:29
-$buffer .= qq!<div class="texts"><a href="?view=parts">部品名別に表示する</a> | <a href="?view=glyphs">グリフ名順で一覧する</a></div>!;
-$buffer .= qq!<div class="texts"><a href="?view=parts">按零件的名字排列</a> | <a href="?view=glyphs">按字排列</a></div>!;
-:64
-$temp_list .= qq|<hr><br>(残りは省略されています)|;
-$temp_list .= qq|<hr><br>(以下从略)|;
-:81
-$mustrenew_list .= "<br><br><a href=\"/wiki/Special:Mustrenew?view=listup&target=$pname\">この部品について一覧形式で更新する</a>";
-$mustrenew_list .= "<br><br><a href=\"/wiki/Special:Mustrenew?view=listup&target=$pname\">关于该零件更新一览</a>";
-:89
-$mustrenew_list .= "<br>(残りは省略されています)";
-$mustrenew_list .= "<br>(以下从略)";
-:100
-$buffer .= qq|<span class="text">該当するグリフはありません。</span>|;
-$buffer .= qq|<span class="text">找不到</span>|;
-:117
-$title = qq|古い部品を引用しているグリフの一括更新|;
-$title = qq|更新所有使用旧零件的字|;
-:121
-$buffer .= qq|<div class="texts">更新対象:<a href="/wiki/$cgi_target"><img class="thumb related" src="/glyph/$cgi_target.50px.png" border="0"></a> <a href="/wiki/$cgi_target">$cgi_target</a></div>|;
-$buffer .= qq|<div class="texts">更新对象:<a href="/wiki/$cgi_target"><img class="thumb related" src="/glyph/$cgi_target.50px.png" border="0"></a> <a href="/wiki/$cgi_target">$cgi_target</a></div>|;
-:125,267,272
-$cgi_value = "(指定した値が不正です)";
-$cgi_value = "(the specified value is invalid)";
-:129,274
-if($cgi_value eq "" || $cgi_value eq "(指定した値が不正です)"){
-if($cgi_value eq "" || $cgi_value eq "(the specified value is invalid)"){
-:188
-$mustrenew_list .= "<li class=\"history\"><a href=\"/wiki/$name\">$name</a> 現在 : <a href=\"/wiki/$name\"><img class=\"thumb100\" src=\"/glyph/$name\@$version.100px.png\" border=\"0\"></a> vs 最新部品 : ";
-$mustrenew_list .= "<li class=\"history\"><a href=\"/wiki/$name\">$name</a> current : <a href=\"/wiki/$name\"><img class=\"thumb100\" src=\"/glyph/$name\@$version.100px.png\" border=\"0\"></a> vs. use the newest component : ";
-:190
-$mustrenew_list .= "<input type=\"checkbox\" name=\"target:$name\@$version\" value=\"update\" id=\"$name\"><label for=\"$name\">最新部品に更新する</label>";
-$mustrenew_list .= "<input type=\"checkbox\" name=\"target:$name\@$version\" value=\"update\" id=\"$name\"><label for=\"$name\">用最新零件更新</label>";
-:202,358
-<div class="notice">部品の配置について</div>
-<div class="notice">关于组装零件</div>
-:203,359
-標準では、古い部品の大きさと位置に合わせて新しい部品を配置しますが、変形させたり、固定させることができます。
-默认状态按旧零件的大小和位置组装零件。也可能变形或固定。
-:206,362
-<li>部品の大きさを新旧で合わせる
-<li>调和新旧零件的大小。
-:207
-<br>これが標準です。古い部品の大きさと位置に合わせて新しい部品を配置します。テキストボックスには何も入力しないでください
-<br>这是默认状态。按旧零件的大小和位置组装新零件。本文框里不要输入。
-:208,364
-<li>縦横ともに部品の大きさを基準に変形
-<li>按零件大小变形
-:209
-<br>標準配置後の部品の領域を調節できます。「type1,左上X座標への増分値,Y座標への増分値,右下X座標への増分値,Y座標への増分値」と入力してください 例: type1,5,-4,10,-20 (配置領域の左上座標について左に5ドット、上に4ドット移動、右下座標について10ドット右に、20ドット上に移動する)
-<br>標準配置後の部品の領域を調節できます。「type1,左上X座標への増分値,Y座標への増分値,右下X座標への増分値,Y座標への増分値」と入力してください 例: type1,5,-4,10,-20 (配置領域の左上座標について左に5ドット、上に4ドット移動、右下座標について10ドット右に、20ドット上に移動する)
-:210,366
-<li>縦横ともに新たな配置領域座標を記述
-<li>縦横ともに新たな配置領域座標を記述
-:211
-<br>部品を指定した領域に配置します。「type2,左上X座標,Y座標,右下X座標,Y座標」と入力してください。
-<br>部品を指定した領域に配置します。「type2,左上X座標,Y座標,右下X座標,Y座標」と入力してください。
-:212,368
-<li>横は部品の大きさを基準に変形、縦は新たな配置領域座標を記述
-<li>横は部品の大きさを基準に変形、縦は新たな配置領域座標を記述
-:213
-<br>「type3,左上X座標への増分値,右下X座標への増分値,左上Y座標,右下Y座標」と入力してください(順番に注意)。
-<br>「type3,左上X座標への増分値,右下X座標への増分値,左上Y座標,右下Y座標」と入力してください(順番に注意)。
-:214,370
-<li>横は新たな配置領域座標を記述、縦は部品の大きさを基準に変形
-<li>横は新たな配置領域座標を記述、縦は部品の大きさを基準に変形
-:215
-<br>「type4,左上X座標,右下X座標,左上Y座標への増分値,右下Y座標への増分値,」と入力してください(順番に注意)。
-<br>「type4,左上X座標,右下X座標,左上Y座標への増分値,右下Y座標への増分値,」と入力してください(順番に注意)。
-:223
-$buffer .= " 配置調整指定:<input type=\"text\" name=\"value\" size=\"60\" value=\"$cgi_value\">";
-$buffer .= " 配置調整指定:<input type=\"text\" name=\"value\" size=\"60\" value=\"$cgi_value\">";
-:224,381
-$buffer .= " <input type=\"submit\" value=\"リストのプレビューを更新する\"></form>";
-$buffer .= " <input type=\"submit\" value=\"リストのプレビューを更新する\"></form>";
-:238
-$buffer .= "<div class=\"texts\">(残りは省略されています)</div>";
-$buffer .= "<div class=\"texts\">(snipped left)</div>";
-:240
-$buffer .= "<hr><div class=\"texts\">ボタンをクリックすると「最新部品に更新する」にチェックをしたグリフをプレビューせずに一度に更新します。更新グリフの量が多いとブラウザが時間切れでエラーとなる場合がありますが、更新処理は問題なく実行できます。</div>";
-$buffer .= "<hr><div class=\"texts\">ボタンをクリックすると「最新部品に更新する」にチェックをしたグリフをプレビューせずに一度に更新します。更新グリフの量が多いとブラウザが時間切れでエラーとなる場合がありますが、更新処理は問題なく実行できます。</div>";
-:241,407
-$buffer .= "<input type=\"button\" value=\"全グリフにチェックを入れる\" onClick=\"for(i=0;i<document.list.elements.length;i++){document.list.elements[i].checked=true;}\">";
-$buffer .= "<input type=\"button\" value=\"set checked mark at all glyphs\" onClick=\"for(i=0;i<document.list.elements.length;i++){document.list.elements[i].checked=true;}\">";
-:242,408
-$buffer .= "<br><br><input type=\"submit\" value=\"チェックをつけたグリフを一括で新しい部品に更新する\"></form>";
-$buffer .= "<br><br><input type=\"submit\" value=\"チェックをつけたグリフを一括で新しい部品に更新する\"></form>";
-:244
-$buffer .= qq|<div class="texts">該当するグリフはありません。<br><br><a href=\"/wiki/Special:Mustrenew?view=parts\">他の旧部品引用グリフ一覧へ戻る</a></div>|;
-$buffer .= qq|<div class="texts">There are no glyphs that you selected<br><br><a href=\"/wiki/Special:Mustrenew?view=parts\">back to the list of another glyphs which are using old components</a></div>|;
-:261
-$title = qq|部品の一括更新|;
-$title = qq|部品の一括更新|;
-:282
-$buffer .= qq|<div class="texts">更新対象:<a href="/wiki/$cgi_target"><img class="thumb related" src="/glyph/$cgi_target.50px.png" border="0"></a> <a href="/wiki/$cgi_target">$cgi_target</a> → <a href="/wiki/$vg"><img class="thumb related" src="/glyph/$vg.50px.png" border="0"></a> <a href="/wiki/$vg">$vg</a></div>|;
-$buffer .= qq|<div class="texts">The target of update:<a href="/wiki/$cgi_target"><img class="thumb related" src="/glyph/$cgi_target.50px.png" border="0"></a> <a href="/wiki/$cgi_target">$cgi_target</a> → <a href="/wiki/$vg"><img class="thumb related" src="/glyph/$vg.50px.png" border="0"></a> <a href="/wiki/$vg">$vg</a></div>|;
-:284
-$buffer .= qq|<div class="texts">更新対象:<a href="/wiki/$cgi_target"><img class="thumb related" src="/glyph/$cgi_target.50px.png" border="0"></a> <a href="/wiki/$cgi_target">$cgi_target</a> → (まだ指定されていません)</div>|;
-$buffer .= qq|<div class="texts">The target of update:<a href="/wiki/$cgi_target"><img class="thumb related" src="/glyph/$cgi_target.50px.png" border="0"></a> <a href="/wiki/$cgi_target">$cgi_target</a> → (unselected yet)</div>|;
-:344
-$mustrenew_list .= "<li class=\"history\"><a href=\"/wiki/$name\">$name</a> 現在 : <a href=\"/wiki/$name\"><img class=\"thumb100\" src=\"/glyph/$name\@$version.100px.png\" border=\"0\"></a> vs 更新後 : ";
-$mustrenew_list .= "<li class=\"history\"><a href=\"/wiki/$name\">$name</a> Current : <a href=\"/wiki/$name\"><img class=\"thumb100\" src=\"/glyph/$name\@$version.100px.png\" border=\"0\"></a> vs After updated : ";
-:346
-$mustrenew_list .= "<input type=\"checkbox\" name=\"target:$name\@$version\" value=\"update\" id=\"$name\"><label for=\"$name\">部品を更新する</label>";
-$mustrenew_list .= "<input type=\"checkbox\" name=\"target:$name\@$version\" value=\"update\" id=\"$name\"><label for=\"$name\">Update element</label>";
-:363
-<br>これが標準です。古い部品の大きさと位置に合わせて新しい部品を配置します。テキストボックスには置き換え部品グリフ名を入力してください
-<br>これが標準です。古い部品の大きさと位置に合わせて新しい部品を配置します。テキストボックスには置き換え部品グリフ名を入力してください
-:365
-<br>標準配置後の部品の領域を調節できます。「置き換え部品グリフ名,type1,左上X座標への増分値,Y座標への増分値,右下X座標への増分値,Y座標への増分値」と入力してください 例: u6c38,type1,5,-4,10,-20 (配置領域の左上座標について左に5ドット、上に4ドット移動、右下座標について10ドット右に、20ドット上に移動する)
-<br>標準配置後の部品の領域を調節できます。「置き換え部品グリフ名,type1,左上X座標への増分値,Y座標への増分値,右下X座標への増分値,Y座標への増分値」と入力してください 例: u6c38,type1,5,-4,10,-20 (配置領域の左上座標について左に5ドット、上に4ドット移動、右下座標について10ドット右に、20ドット上に移動する)
-:367
-<br>部品を指定した領域に配置します。「置き換え部品グリフ名,type2,左上X座標,Y座標,右下X座標,Y座標」と入力してください。
-<br>部品を指定した領域に配置します。「置き換え部品グリフ名,type2,左上X座標,Y座標,右下X座標,Y座標」と入力してください。
-:369
-<br>「置き換え部品グリフ名,type3,左上X座標への増分値,右下X座標への増分値,左上Y座標,右下Y座標」と入力してください(順番に注意)。
-<br>「置き換え部品グリフ名,type3,左上X座標への増分値,右下X座標への増分値,左上Y座標,右下Y座標」と入力してください(順番に注意)。
-:371
-<br>「置き換え部品グリフ名,type4,左上X座標,右下X座標,左上Y座標への増分値,右下Y座標への増分値,」と入力してください(順番に注意)。
-<br>「置き換え部品グリフ名,type4,左上X座標,右下X座標,左上Y座標への増分値,右下Y座標への増分値,」と入力してください(順番に注意)。
-:380
-$buffer .= " 置き換え部品グリフ、配置調整指定:<input type=\"text\" name=\"value\" size=\"60\" value=\"$cgi_value\">";
-$buffer .= " 置き換え部品グリフ、配置調整指定:<input type=\"text\" name=\"value\" size=\"60\" value=\"$cgi_value\">";
-:396,400
-$buffer .= qq|<div class="texts"><a href="?view=listup&target=$cgi_target&value=$cgi_value&offset=$prev">これより前の検索結果を見る</a></div>|;
-$buffer .= qq|<div class="texts"><a href="?view=listup&target=$cgi_target&value=$cgi_value&offset=$prev">これより前の検索結果を見る</a></div>|;
-:404
-$buffer .= "<div class=\"texts\">さらに対象グリフが存在する可能性があります。<a href=\"?view=listup&target=$cgi_target&value=$cgi_value&offset=$next\">これ以降の対象グリフを見る</a></div>";
-$buffer .= "<div class=\"texts\">さらに対象グリフが存在する可能性があります。<a href=\"?view=listup&target=$cgi_target&value=$cgi_value&offset=$next\">これ以降の対象グリフを見る</a></div>";
-:406
-$buffer .= "<hr><div class=\"texts\">ボタンをクリックすると「部品を更新する」にチェックをしたグリフをプレビューせずに一度に更新します。更新グリフの量が多いとブラウザが時間切れでエラーとなる場合がありますが、更新処理は問題なく実行できます。</div>";
-$buffer .= "<hr><div class=\"texts\">ボタンをクリックすると「部品を更新する」にチェックをしたグリフをプレビューせずに一度に更新します。更新グリフの量が多いとブラウザが時間切れでエラーとなる場合がありますが、更新処理は問題なく実行できます。</div>";
-:410
-$buffer .= qq|<div class="texts">該当するグリフはありません。<br><br><a href=\"/wiki/$cgi_target\">グリフページに戻る</a></div>|;
-$buffer .= qq|<div class="texts">該当するグリフはありません。<br><br><a href=\"/wiki/$cgi_target\">グリフページに戻る</a></div>|;
-:440
-$title = qq|旧部品一括更新の完了|;
-$title = qq|Completion of lump update of old components|;
-:512
-($new_version, $time) = &put_page($dbh, $name, $loginname, $temp, '旧部品の一括更新', $env_remoteaddress, $related);
-($new_version, $time) = &put_page($dbh, $name, $loginname, $temp, 'lump update of old components', $env_remoteaddress, $related);
-:524
-$buffer .= "<div class=\"texts\">${done}個のグリフを更新しました。<br><br><a href=\"/wiki/Special:Mustrenew?view=listup&target=$cgi_target\">一覧へ戻る</a></div>";
-$buffer .= "<div class=\"texts\">Updated ${done} glyphs.<br><br><a href=\"/wiki/Special:Mustrenew?view=listup&target=$cgi_target\">back to the list</a></div>";
-:526
-$buffer .= "<div class=\"texts\">${done}個のグリフを更新しました。<br><br><a href=\"/wiki/Special:Mustrenew?view=parts\">他の旧部品引用グリフ一覧へ戻る</a></div>";
-$buffer .= "<div class=\"texts\">Updated ${done} glyphs<br><br><a href=\"/wiki/Special:Mustrenew?view=parts\">back to the list of another glyphs using old components</a></div>";
-:528,650
-$buffer .= "<h2>更新したグリフ</h2>$donelist";
-$buffer .= "<h2>Updated glyphs</h2>$donelist";
-:530
-$buffer .= "<div class=\"texts\">更新したグリフはありません。<br><br><a href=\"/wiki/Special:Mustrenew?view=listup&target=$cgi_target\">一覧へ戻る</a></div>";
-$buffer .= "<div class=\"texts\">There are no glyphs being updated.<br><br><a href=\"/wiki/Special:Mustrenew?view=listup&target=$cgi_target\">back to the list</a></div>";
-:562
-$title = qq|部品一括更新の完了|;
-$title = qq|部品一括更新の完了|;
-:634
-($new_version, $time) = &put_page($dbh, $name, $loginname, $temp, '部品の一括更新', $env_remoteaddress, $related);
-($new_version, $time) = &put_page($dbh, $name, $loginname, $temp, '部品の一括更新', $env_remoteaddress, $related);
-:646
-$buffer .= "<div class=\"texts\">${done}個のグリフを更新しました。<br><br><a href=\"/wiki/Special:Renewall?view=listup&target=$cgi_target\">部品引用グリフ一覧へ戻る</a></div>";
-$buffer .= "<div class=\"texts\">${done}個のグリフを更新しました。<br><br><a href=\"/wiki/Special:Renewall?view=listup&target=$cgi_target\">部品引用グリフ一覧へ戻る</a></div>";
-:648
-$buffer .= "<div class=\"texts\">${done}個のグリフを更新しました。<br><br><a href=\"/wiki/$cgi_target\">グリフページへ戻る</a></div>";
-$buffer .= "<div class=\"texts\">${done}個のグリフを更新しました。<br><br><a href=\"/wiki/$cgi_target\">グリフページへ戻る</a></div>";
-:652
-$buffer .= "<div class=\"texts\">更新したグリフはありません。<br><br><a href=\"/wiki/Special:Renewall?view=listup&target=$cgi_target\">部品引用グリフ一覧へ戻る</a></div>";
-$buffer .= "<div class=\"texts\">更新したグリフはありません。<br><br><a href=\"/wiki/Special:Renewall?view=listup&target=$cgi_target\">部品引用グリフ一覧へ戻る</a></div>";
-:735
-$title = qq|最近更新したページ|;
-$title = qq|Recent Changes|;
-:807
-$byuser = " $cgi_user に";
-$byuser = " by $cgi_user";
-:809
-$buffer .= qq|<div class="texts">以下は${now}までに${byuser}編集された <span class="notice">$pages</span> ページです。(<span class="notice">N</span>=新規項目、日時は日本時間)<br>|;
-$buffer .= qq|<div class="texts">Below are the last <span class="notice">$pages</span> changes${byuser}, as of ${now}. (<span class="notice">N</span>=new page, notations of time are at JST[GMT+09:00])<br>|;
-:810
-$buffer .= qq(最近の <a href="/wiki/Special:Recentchanges?view=50$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype$setuser">50</a> | <a href="/wiki/Special:Recentchanges?view=100$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype$setuser">100</a> | <a href="/wiki/Special:Recentchanges?view=250$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype$setuser">250</a> | <a href="/wiki/Special:Recentchanges?view=500$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype$setuser">500</a> 件分を表示する<br>);
-$buffer .= qq(Show last <a href="/wiki/Special:Recentchanges?view=50$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype$setuser">50</a> | <a href="/wiki/Special:Recentchanges?view=100$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype$setuser">100</a> | <a href="/wiki/Special:Recentchanges?view=250$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype$setuser">250</a> | <a href="/wiki/Special:Recentchanges?view=500$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype$setuser">500</a> changes<br>);
-:811
-$buffer .= qq(表示の対象: <a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto&listtype=glyph$offset$offsetdir$setuser">グリフのみ</a> | <a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto&listtype=document$offset$offsetdir$setuser">文章のみ</a> | <a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto&listtype=both$offset$offsetdir$setuser">いずれも</a><br>);
-$buffer .= qq(List up for changes of: <a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto&listtype=glyph$offset$offsetdir$setuser">glyphs</a> | <a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto&listtype=document$offset$offsetdir$setuser">documents</a> | <a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto&listtype=both$offset$offsetdir$setuser">both glyphs and documents</a><br>);
-:813
-$buffer .= qq(ボットの編集を<a href="/wiki/Special:Recentchanges?view=$limit&hidebots=0$hideanons$hideliu$hidemyself$hideauto$listtype$offset$offsetdir">表示</a>);
-$buffer .= qq(<a href="/wiki/Special:Recentchanges?view=$limit&hidebots=0$hideanons$hideliu$hidemyself$hideauto$listtype$offset$offsetdir">Show</a> bots);
-:815
-$buffer .= qq(ボットの編集を<a href="/wiki/Special:Recentchanges?view=$limit&hidebots=1$hideanons$hideliu$hidemyself$hideauto$listtype$offset$offsetdir">隠す</a>);
-$buffer .= qq(<a href="/wiki/Special:Recentchanges?view=$limit&hidebots=1$hideanons$hideliu$hidemyself$hideauto$listtype$offset$offsetdir">Hide</a> bots);
-:819
-$buffer .= qq(匿名利用者の編集を<a href="/wiki/Special:Recentchanges?view=$limit$hidebots&hideanons=0$hideliu$hidemyself$hideauto$listtype$offset$offsetdir">表示</a>);
-$buffer .= qq(<a href="/wiki/Special:Recentchanges?view=$limit$hidebots&hideanons=0$hideliu$hidemyself$hideauto$listtype$offset$offsetdir">Show</a> anonymous users);
-:821
-$buffer .= qq(匿名利用者の編集を<a href="/wiki/Special:Recentchanges?view=$limit$hidebots&hideanons=1$hideliu$hidemyself$hideauto$listtype$offset$offsetdir">隠す</a>);
-$buffer .= qq(<a href="/wiki/Special:Recentchanges?view=$limit$hidebots&hideanons=1$hideliu$hidemyself$hideauto$listtype$offset$offsetdir">Hide</a> anonymous users);
-:825
-$buffer .= qq(登録利用者の編集を<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons&hideliu=0$hidemyself$hideauto$listtype$offset$offsetdir">表示</a>);
-$buffer .= qq(<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons&hideliu=0$hidemyself$hideauto$listtype$offset$offsetdir">Show</a> logged-in users);
-:827
-$buffer .= qq(登録利用者の編集を<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons&hideliu=1$hidemyself$hideauto$listtype$offset$offsetdir">隠す</a>);
-$buffer .= qq(<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons&hideliu=1$hidemyself$hideauto$listtype$offset$offsetdir">Hide</a> logged-in users);
-:831
-$buffer .= qq(自分の編集を<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu&hidemyself=0$hideauto$listtype$offset$offsetdir">表示</a>);
-$buffer .= qq(<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu&hidemyself=0$hideauto$listtype$offset$offsetdir">Show</a> my edits);
-:833
-$buffer .= qq(自分の編集を<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu&hidemyself=1$hideauto$listtype$offset$offsetdir">隠す</a>);
-$buffer .= qq(<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu&hidemyself=1$hideauto$listtype$offset$offsetdir">Hide</a> my edits);
-:837
-$buffer .= qq(自動編集を<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself&hideauto=0$listtype$offset$offsetdir$setuser">表示</a>);
-$buffer .= qq(<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself&hideauto=0$listtype$offset$offsetdir$setuser">Show</a> automatic posting);
-:839
-$buffer .= qq(自動編集を<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself&hideauto=1$listtype$offset$offsetdir$setuser">隠す</a>);
-$buffer .= qq(<a href="/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself&hideauto=1$listtype$offset$offsetdir$setuser">Hide</a> automatic posting);
-:842
-$buffer .= "<br><form>利用者<input type=\"text\" name=\"user\" size=\"12\" value=\"$cgi_user\">の履歴を<input type=\"submit\" value=\"見る\">";
-$buffer .= "<br><form><input type=\"submit\" value=\"See\"> recent logs of user <input type=\"text\" name=\"user\" size=\"12\" value=\"$cgi_user\">";
-:844
-$buffer .= " | <a href=\"?user=\">利用者指定の解除</a>";
-$buffer .= " | <a href=\"?user=\">clear limitation of user</a>";
-:853
-$buffer2 .= "<div class=\"texts\">(";
-$buffer2 .= "<div class=\"texts\">(";
-:855
-$buffer2 .= "最新";
-$buffer2 .= "latest";
-:857
-$buffer2 .= "<a href=\"/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype$setuser\">最新</a>";
-$buffer2 .= "<a href=\"/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype$setuser\">latest</a>";
-:861
-$buffer2 .= "最古";
-$buffer2 .= "earliest";
-:863
-$buffer2 .= "<a href=\"/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype&dir=prev$setuser\">最古</a>";
-$buffer2 .= "<a href=\"/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype&dir=prev$setuser\">earliest</a>";
-:865,871,877
-$buffer2 .= ")(";
-$buffer2 .= ") (";
-:867
-$buffer2 .= "新しい${limit}件";
-$buffer2 .= "newer ${limit}";
-:869
-$buffer2 .= "<a href=\"/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype&offset=$ts_newest&dir=prev$setuser\">新しい${limit}件</a>";
-$buffer2 .= "<a href=\"/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype&offset=$ts_newest&dir=prev$setuser\">newer ${limit}</a>";
-:873
-$buffer2 .= "古い${limit}件";
-$buffer2 .= "older ${limit}";
-:875
-$buffer2 .= "<a href=\"/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype&offset=$ts_oldest$setuser\">古い${limit}件</a>";
-$buffer2 .= "<a href=\"/wiki/Special:Recentchanges?view=$limit$hidebots$hideanons$hideliu$hidemyself$hideauto$listtype&offset=$ts_oldest$setuser\">older ${limit}</a>";
-:879
-$buffer2 .= ") を見る</div>";
-$buffer2 .= ")</div>";
-:882
-$buffer .= qq|<span class="text">更新されたページはありません。</span>|;
-$buffer .= qq|<span class="text">There are no pages being updated.</span>|;
-:900
-<title>GlyphWiki - 最近更新したページ</title>
-<title>GlyphWiki - Recent changes</title>
-:902
-<description>最近付け加えられた変更はこのフィードで確認できます。</description>
-<description>最近付け加えられた変更はこのフィードで確認できます。</description>
-:1038
-if($temp eq "GlyphWiki:メインページ"){
-if($temp eq "GlyphWiki:MainPage"){
-:1039
-$temp = "メインページ";
-$temp = "MainPage";
-:1041
-$buffer .= qq|<h1>$temp の変更履歴</h1>|;
-$buffer .= qq|<h1>Revision history of $temp</h1>|;
-:1042
-$title = qq|$temp の変更履歴|;
-$title = qq|Revision history of $temp|;
-:1045
-$buffer .= "<div class=\"texts\">凡例:日時はJST</div>";
-$buffer .= "<div class=\"texts\">usage : in JST time</div>";
-:1047
-$buffer .= "<div class=\"texts\">凡例:(最新版) = 最新版との比較、(前の版) = 直前の版との比較、日時はJST</div>";
-$buffer .= "<div class=\"texts\">(cur) = difference from current version, (prev) = difference from preceding version, 日時はJST</div>";
-:1086
-$history_list .= "(最新版) ";
-$history_list .= "(cur) ";
-:1089
-$history_list .= "(<a href=\"/wiki/$db_wiki_name?diff=$data[1]\">最新版</a>) ";
-$history_list .= "(<a href=\"/wiki/$db_wiki_name?diff=$data[1]\">cur</a>) ";
-:1092
-$history_list .= "(<a href=\"/wiki/$db_wiki_name\@$data[1]?diff=".($data[1] - 1)."\">前の版</a>) ";
-$history_list .= "(<a href=\"/wiki/$db_wiki_name\@$data[1]?diff=".($data[1] - 1)."\">prev</a>) ";
-:1094
-$history_list .= "(前の版) ";
-$history_list .= "(prev) ";
-:1108
-$buffer .= qq|<div class="texts">(残りは省略されています ... <a href="?action=history&view=all">すべて表示する</a>)</div>|;
-$buffer .= qq|<div class="texts">(snipped ... <a href="?action=history&view=all">view all</a>)</div>|;
-:1111
-$buffer .= qq|<span class="text">このページには変更履歴がありません。</span>|;
-$buffer .= qq|<span class="text">There is no edit history for this page.</span>|;
-:1132
-$title = qq|検索|;
-$title = qq|Search results|;
-:1147
-$buffer .= qq|<span class="text">グリフウィキの検索についての詳しい情報は、<a href="/wiki/GlyphWiki:$URL_KENSAKU">GlyphWiki:$WORD_KENSAKU</a>をご覧下さい。</span><br><br>|;
-$buffer .= qq|<span class="text">See more details for searching function. <a href="/wiki/GlyphWiki:$URL_KENSAKU">GlyphWiki:$WORD_KENSAKU</a></span><br><br>|;
-:1151
-$buffer .= qq|<br><span class="query">(アルファベットの大文字と小文字は区別しません)</span></form>|;
-$buffer .= qq|<br><span class="query">(small and capital letter of the alphabet are not distinguished)</span></form>|;
-:1161
-$buffer .= qq|<div class="texts">$temp 件目以降の検索結果です。<a href="?search=$query&fulltext=検索&offset=$prev">これより前の検索結果を見る</a></div>|;
-$buffer .= qq|<div class="texts">results of No.$temp <a href="?search=$query&fulltext=検索&offset=$prev">see previous results</a></div>|;
-:1177
-$buffer .= qq|<div class="texts"><a href="?search=$query&fulltext=検索&offset=$prev">これより前の検索結果を見る</a></div>|;
-$buffer .= qq|<div class="texts"><a href="?search=$query&fulltext=検索&offset=$prev">see previous results</a></div>|;
-:1181
-$buffer .= qq|<div class="texts">さらに検索結果がある可能性があります。<a href="?search=$query&fulltext=検索&offset=$next">これ以降の検索結果を見る</a></div>|;
-$buffer .= qq|<div class="texts">There are more results. <a href="?search=$query&fulltext=検索&offset=$next">see next results</a></div>|;
-:1185
-$buffer .= qq|<br><span class="text">該当するページが見つかりませんでした。|;
-$buffer .= qq|<br><span class="text">No page text matches.|;
-:1187
-$buffer .= "検索キーワードは2文字以上である必要があります。";
-$buffer .= "Keyword must be at least 2 characters.";
-:1264
-$message .= "<div class=\"texts\"><p>あなたのメールアドレスは確認されました。ログインしてウィキを使用できます。</p><p><a href=\"/wiki/Special:Userlogin\">ログイン</a></p></div>";
-$message .= "<div class=\"texts\"><p>Your e-mail address has been confirmed. You may now log in and enjoy the wiki.</p><p><a href=\"/wiki/Special:Userlogin\">log in</a></p></div>";
-:1266
-$message .= "<div class=\"texts\"><p>確認用コードが正しくありません。このコードは期限切れです。</p><p><a href=\"/wiki/\">$LINK_DEFAULT</a> に戻る。</p></div>";
-$message .= "<div class=\"texts\"><p>Invalid confirmation code. The code may have expired.</p><p>Back to <a href=\"/wiki/\">$LINK_DEFAULT</a></p></div>";
-:1268
-$message .= "<div class=\"texts\"><p>このページを表示するにはログインが必要です。</p><p><a href=\"/wiki/Special:Userlogin?returnto=Special:Confirmemail\">ログイン</a></p></div>";
-$message .= "<div class=\"texts\"><p>You need to log in to see this page.</p><p><a href=\"/wiki/Special:Userlogin?returnto=Special:Confirmemail\">log in</a></p></div>";
-:1270
-$message .= "<div class=\"messagegreen\">メールアドレス確認メールを送信しました</div>";
-$message .= "<div class=\"messagegreen\">Confirmation email has been sent to you.</div>";
-:1271,1285
-$message .= "<div class=\"texts\"><p>現在のメールアドレス登録状況:メールアドレス確認メール送信済(メールを確認してください。まだメールアドレス正当性の確認は完了していません)</p>";
-$message .= "<div class=\"texts\"><p>Current status: Confirmation email has been sent. (Please check your email. The confirmation has not been done yet.)</p>";
-:1272,1286,1305
-$message .= "<p><form method=\"post\">もう一度確認メールを送りなおす:<input type=\"hidden\" name=\"page\" value=\"Special:Confirmemail\"><input type=\"submit\" name=\"buttons\" value=\"$BUTTON_CONFIRM_EMAIL\"></form></p>";
-$message .= "<p><form method=\"post\">send confirmatoin email again:<input type=\"hidden\" name=\"page\" value=\"Special:Confirmemail\"><input type=\"submit\" name=\"buttons\" value=\"$BUTTON_CONFIRM_EMAIL\"></form></p>";
-:1274,1288,1300,1307,1314
-$message .= "<p><form method=\"post\">新たにメールアドレスを登録する:";
-$message .= "<p><form method=\"post\">register a new email address:";
-:1276,1282,1290,1309
-$message .= "(現在登録されているメールアドレスを上書きします。再度確認メールの送信が必要となります)</p></div>";
-$message .= "(overwritten by new email address and you need to confirm new email address again)</p></div>";
-:1278
-$message .= "<p class=\"rednotice\">有効なメールアドレスが登録されていません</p>";
-$message .= "<p class=\"rednotice\">no valid email address has registered</p>";
-:1279,1293,1318
-$message .= "<div class=\"texts\"><p>現在のメールアドレス登録状況:メールアドレス未登録</p>";
-$message .= "<div class=\"texts\"><p>Current status: no email address has registered</p>";
-:1280,1294
-$message .= "<p><form method=\"post\">メールアドレスを再登録する:";
-$message .= "<p><form method=\"post\">register email address again:";
-:1284
-$message .= "<div class=\"messagegreen\">メールアドレスを登録しました。メールアドレス確認メールを送信しました</div>";
-$message .= "<div class=\"messagegreen\">Registered email address. Email for confirmation has been sent to you.</div>";
-:1292
-$message .= "<p class=\"rednotice\">メールアドレスの登録に失敗しました。有効ではないメールアドレスが入力されたようです</p>";
-$message .= "<p class=\"rednotice\">Failed to register email address. There was an invalid email address sent.</p>";
-:1299
-$message .= "<div class=\"texts\"><p>現在のメールアドレス登録状況:メールアドレス確認済($temp)</p>";
-$message .= "<div class=\"texts\"><p>Current status: email address has been confirmed ($temp)</p>";
-:1302
-$message .= "(現在登録されているメールアドレスを上書きします。再度メールの確認が必要となります)</p></div>";
-$message .= "(overwritten by new email address and you need to confirm new email address again)</p></div>";
-:1304
-$message .= "<div class=\"texts\"><p>現在のメールアドレス登録状況:メールアドレス確認メール送信済(メールが届いていないか確認してください。まだメールアドレス正当性の確認は完了していません)</p>";
-$message .= "<div class=\"texts\"><p>Current status: Confirmation email has been sent. (Please check your email. The confirmation has not been done yet.)</p>";
-:1311
-$message .= "<div class=\"texts\"><p>現在のメールアドレス登録状況:メールアドレス未確認</p>";
-$message .= "<div class=\"texts\"><p>Current status: email address has not been confirmed</p>";
-:1312
-$message .= "<p>このウィキではメールアドレスの正当性の確認が必要です。以下のボタンを押すと「GlyphWikiメールアドレスの確認」という件名の確認メールがあなたのメールアドレスに送られます。メールには確認用コードを含むリンクが書かれています。そのリンクを開くことによってメールアドレスの正当性が確認されます。</p><p><form method=\"post\"><input type=\"hidden\" name=\"page\" value=\"Special:Confirmemail\"><input type=\"submit\" name=\"buttons\" value=\"$BUTTON_CONFIRM_EMAIL\"></form></p>";
-$message .= "<p>GlyphWiki requires that confirmation of your e-mail address before using e-mail features. Activate the button below to send a confirmation mail to your address. The mail will include a link containing a code; load the link in your browser to confirm that your e-mail address is valid.</p><p><form method=\"post\"><input type=\"hidden\" name=\"page\" value=\"Special:Confirmemail\"><input type=\"submit\" name=\"buttons\" value=\"$BUTTON_CONFIRM_EMAIL\"></form></p>";
-:1316
-$message .= "(現在登録されているメールアドレスを上書きします)</p></div>";
-$message .= "(overwritten by new email address)</p></div>";
-:1319
-$message .= "<p><form method=\"post\">メールアドレスを登録する:";
-$message .= "<p><form method=\"post\">register your email address:";
-:1321
-$message .= "(メールアドレスを登録するとパスワードを忘れたときに再発行することができます)</p></div>";
-$message .= "(you would be able to reissue the log in password if you register your email address)</p></div>";
-:1325
-my $title = "メールアドレスの登録・確認";
-my $title = "Register and Confirm your email address";
-:1483,1503,1522
-$message_login .= "<div class=\"messagered\"><span class=\"notice\">ログイン失敗:</span> ";
-$message_login .= "<div class=\"messagered\"><span class=\"notice\">Login error:</span> ";
-:1485,1524
-$message_login .= "利用者名を正しく指定していません。<span class=\"small\">利用者名は 英小文字、数字、“-”からなります。</span>";
-$message_login .= "You have not specified a valid user name. <span class=\"small\">User name consist from small letters, numbers and hyphen("-").</span>";
-:1488
-$message_login .= "\"$cgi_name\" という利用者は見当たりません。綴りが正しいことを再度確認するか、下記のフォームを使ってアカウントを作成してください。";
-$message_login .= "There is no user by the name \"$cgi_name\". Check your spelling, or create a new account.";
-:1490
-$message_login .= "パスワードを空にすることはできません。再度入力してください。";
-$message_login .= "Password entered was blank. Please try again.";
-:1492
-$message_login .= "パスワードが間違っています。再度入力してください。";
-$message_login .= "Incorrect password entered. Please try again.";
-:1494
-$message_login .= "グリフウィキではログインにクッキーを使います。しかし、ご使用のブラウザ等がクッキーを無効にしているようです。クッキーを有効にして、もう一度試してみてください。";
-$message_login .= "GlyphWiki uses cookies to log in users. You have cookies disabled. Please enable them and try again.";
-:1496
-$message_login .= "利用者のアカウントは作成されましたが、ログインしていません。グリフウィキではログインにクッキーを使います。あなたはクッキーを無効な設定にしているようです。クッキーを有効にしてから作成した利用者名とパスワードでログインしてください。";
-$message_login .= "The user account was created, but you are not logged in. GlyphWiki uses cookies to log in users. You have cookies disabled. Please enable them, then log in with your new username and password.";
-:1506
-$message_login .= "メールの送信中にエラーが発生しました: 利用者 \"$cgi_name\" のメールアドレスは登録されていません。";
-$message_login .= "Error sending mail: There is no e-mail address recorded for user \"$cgi_name\".";
-:1509
-$message_login .= "メールの送信中にエラーが発生しました: 利用者 \"$cgi_name\" のメールアドレスはまだ確認されていません。";
-$message_login .= "Error sending mail: 利用者 \"$cgi_name\" のメールアドレスはまだ確認されていません。";
-:1511
-$message_login .= "新しいパスワードは24時間以内に送信済みです。悪用防止のため、パスワードは24時間間隔で再発行可能となります。";
-$message_login .= "A password reminder has already been sent, within the last 24 hours. To prevent abuse, only one password reminder will be sent per 24 hours.";
-:1516
-$message_login .= "新しいパスワードを \"$cgi_name\" さんの登録済みメールアドレスにお送りしました。メールを受け取ったら、再度ログインしてください。";
-$message_login .= "A new password has been sent to the e-mail address registered for \"$cgi_name\". Please log in again after you receive it.";
-:1526
-$message_login .= "その利用者名はすでに使われています。ほかの名前をお選びください。";
-$message_login .= "Username entered already in use. Please choose a different name.";
-:1528,1560
-$message_login .= "パスワードが短すぎます。1文字以上の文字列にしてください。";
-$message_login .= "Your password is invalid or too short. It must have at least 2 characters.";
-:1530,1562
-$message_login .= "両方のパスワードが一致しません。";
-$message_login .= "The passwords you entered do not match.";
-:1532
-$message_login .= "確認コードが間違っているか入力されていません";
-$message_login .= "The confirmation code is invalid or empty.";
-:1535
-$message_login .= "指定した名前 \"$cgi_name\" は既に存在しているアカウント \"$misleading_name\" と類似しているため使用できません。別の名前を使用してください。";
-$message_login .= "Username you entered: \"$cgi_name\" is invalid for similar to an existing account: \"$misleading_name\". Please enter another one.";
-:1543
-$message_login2 = "<p>グリフウィキに \"$cgi_name\" としてログインしました。</p>";
-$message_login2 = "<p>You are now logged in to GlyphWiki as \"$cgi_name\".</p>";
-:1546
-$message_login = "<div class=\"messagegreen\">メールアドレスの正当性を確認するためのコードを含んだメールを送信しました。この確認を行わなくてもログインはできますが、確認するまでメール通知の機能は無効化されます。</div>";
-$message_login = "<div class=\"messagegreen\">A confirmation e-mail has been sent to the nominated e-mail address. Before any other mail is sent to the account, you will have to follow the instructions in the e-mail, to confirm that the account is actually yours.</div>";
-:1549
-$message_login2 = "<p>あなたのアカウントができました。</p>";
-$message_login2 = "<p>Your account has created.</p>";
-:1556
-$message_login .= "メールで送信した臨時パスワードでログインしています。ログインを完了するには、新しいパスワードを設定しなおす必要があります。";
-$message_login .= "You logged in with a temporary e-mailed code. To finish logging in, you must set a new password here:";
-:1558
-$message_login .= "データがセットされていません。";
-$message_login .= "There are no data to be set.";
-:1585
-$base = "ログイン成功";
-$base = "Login successful";
-:1587
-$base = "パスワードの再設定";
-$base = "Reset password";
-:1589
-$base = "ログインまたはアカウント作成";
-$base = "Log in / create account";
-:1605
-<p>自動化スクリプトによるパスワードクラック攻撃を防止するため、下の画像に表示されている文字を入力してください:(<a href="/wiki/GlyphWiki:$URL_CAPTCHA">詳細</a>)<br>
-<p>To refuse attacks by automated script, please input the characters inside the following image: (<a href="/wiki/GlyphWiki:$URL_CAPTCHA">more information</a>)<br>
-:1618
-<h2>ログイン</h2>
-<h2>Log in</h2>
-:1621
-<p>アカウントはお持ちですか?<a href="/wiki/Special:Userlogin?type=createaccount&returnto=$cgi_returnto" class="notice">アカウントを作成</a></p>
-<p>Don't have an account? <a href="/wiki/Special:Userlogin?type=createaccount&returnto=$cgi_returnto" class="notice">Create one</a>.</p>
-:1623
-<p>グリフウィキにログインするにはクッキーを有効にする必要があります。</p>
-<p>You must have cookies enabled to log in to GlyphWiki.</p>
-:1629,1667
-<tr><td align="right">利用者名<td><input type="text" name="name" value="$temp_name">
-<tr><td align="right">Username:<td><input type="text" name="name" value="$temp_name">
-:1630,1668
-<tr><td align="right">パスワード<td><input type="password" name="password">
-<tr><td align="right">Password:<td><input type="password" name="password">
-:1631,1671,1718
-<tr><td>&nbsp;<td><input id="remember" type="checkbox" name="savepassword" value="savepassword"> <label for="remember">セッションを越えてパスワードを記憶する</label>
-<tr><td>&nbsp;<td><input id="remember" type="checkbox" name="savepassword" value="savepassword"> <label for="remember">Remember me (up to 7 days)</label>
-:1639
-<li>利用者名とパスワードを入力して、<span class="notice">ログイン</span>をクリックしてください。
-<li>input 'Username' and 'Password' then click <span class="notice">login</span> button
-:1640
-<li>パスワードを忘れてしまった場合は、利用者名を入力して<span class="notice">$BUTTON_NEW_PASSWORD</span>をクリックすることによりパスワードの再発行を受けられます(ただし、メールアドレスを登録していた場合に限られます)。
-<li>input 'Username' and click <span class="notice">$BUTTON_NEW_PASSWORD</span> if you forget your 'Password', then you can reset your 'Password' (only when you registered an E-mail address)
-:1641,1682
-<li>その他、ログインに関する情報は<a href="/wiki/GlyphWiki:$URL_LOGIN">GlyphWiki:$WORD_LOGIN</a>を参照してください。 
-<li>その他、ログインに関する情報は<a href="/wiki/GlyphWiki:$URL_LOGIN">GlyphWiki:$WORD_LOGIN</a>を参照してください。 
-:1652
-<h2>アカウント作成</h2>
-<h2>Create account</h2>
-:1654
-<p>すでにアカウントをお持ちの場合: <a href="/wiki/Special:Userlogin?type=loginfirst&returnto=$cgi_returnto" class="notice">ログイン</a></p>
-<p>Already have an account? <a href="/wiki/Special:Userlogin?type=loginfirst&returnto=$cgi_returnto" class="notice">Log in</a></p>
-:1656
-<p>自動で実行されるスパム防止のため、利用者名を登録する際には下の画像に表示される単語を入力する必要があります:<br>
-<p>To help protect against automated account creation, please enter the words that appear below in the box<br>
-:1657
-(<a href="/wiki/GlyphWiki:$URL_CAPTCHA">これは何ですか?</a>)</p>
-(<a href="/wiki/GlyphWiki:Captcha">more info</a>)</p>
-:1669
-<tr><td align="right"><nobr>パスワード再入力</nobr><td><input type="password" name="password2">
-<tr><td align="right"><nobr>Retype password:</nobr><td><input type="password" name="password2">
-:1670
-<tr><td align="right">メールアドレス:<td><input type="text" name="email">
-<tr><td align="right">E-mail (optional)<td><input type="text" name="email">
-:1672
-<tr><td>&nbsp;<td><input type="submit" name="buttons" value="アカウント作成" class="notice">
-<tr><td>&nbsp;<td><input type="submit" name="buttons" value="Create account" class="notice">
-:1679
-<li>使用したい利用者名とパスワードを決めて入力し、<span class="notice">アカウント作成</span>をクリックしてください。
-<li>Simply choose a username (not the same as your email) and a unique password and click <span class="notice">"create account"</span>.
-:1680
-<li>作成したアカウントの削除はできません。
-<li>You can't close the created account.
-:1681
-<li>利用者名には英小文字、数字と“-”が使えます。利用者名を決める際の注意点や詳細な解説は、<a href="/wiki/GlyphWiki:$URL_USERNAME">ユーザー名</a>を参照してください。
-<li>You can use the alphabet(small letters), numbers and hyphen for ID. See <a href="/wiki/GlyphWiki:$URL_USERNAME">more information</a> for details.
-:1690
-<h1>$cgi_name さん、ようこそ!</h1>
-<h1>Welcome, $cgi_name!</h1>
-:1693,1751
-<p><a href="/wiki/$cgi_returnto">$html_returnto</a> に戻る。
-<p>Return to <a href="/wiki/$cgi_returnto">$html_returnto</a>.
-:1707
-<h2>パスワードを設定しなおす</h2>
-<h2>Reset account password</h2>
-:1715
-<tr><td align="right">利用者名:<td>$temp_name<input type="hidden" name="name" value="$temp_name"><input type="hidden" name="password" value="$temp_password">
-<tr><td align="right">Username:<td>$temp_name<input type="hidden" name="name" value="$temp_name"><input type="hidden" name="password" value="$temp_password">
-:1716
-<tr><td align="right">新しいパスワード:<td><input type="password" name="newpassword">
-<tr><td align="right">New password:<td><input type="password" name="newpassword">
-:1717
-<tr><td align="right">パスワード再入力<td><input type="password" name="newpassword2">
-<tr><td align="right">Retype new password<td><input type="password" name="newpassword2">
-:1719
-<tr><td>&nbsp;<td><input type="submit" name="buttons" value="再設定してログイン">
-<tr><td>&nbsp;<td><input type="submit" name="buttons" value="Set password and log in">
-:1743
-my $title = "ログアウト";
-my $title = "User logout";
-:1749
-<p><span class="notice">ログアウトしました。</span>このままグリフウィキを匿名で使い続けることができます。もう一度ログインして元の、あるいは別の利用者として使うこともできます。</p>
-<p><span class="notice">You are now logged out.</span> You can continue to use GlyphWiki anonymously, or you can log in again as the same or as a different user.</p>
-:1750
-<p>※いくつかのページはブラウザのキャッシュをクリアするまでログインしているかのように表示されることがあります。</p>
-<p>Note that some pages may continue to be displayed as if you were still logged in, until you clear your browser cache.</p>
-
-!/home/kamichi/glyphwiki/page_left.pl
-:21
-$buffer .= qq|ナビゲーション|;
-$buffer .= qq|navigation|;
-:25
-$buffer .= qq|<li><a href="/wiki/Special:Recentchanges">最近更新したページ</a>|;
-$buffer .= qq|<li><a href="/wiki/Special:Recentchanges">Recent changes</a>|;
-:26
-$buffer .= qq|<li><a href="/wiki/Special:Random">おまかせ表示</a>|;
-$buffer .= qq|<li><a href="/wiki/Special:Random">Random glyph</a>|;
-:32
-$buffer .= qq|ヘルプ|;
-$buffer .= qq|help|;
-:35
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_HOWTO">どうやって使うのか</a>|;
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_HOWTO">Tutorial</a>|;
-:36
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_FAQ">よくある質問</a>|;
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_FAQ">FAQ</a>|;
-:37
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_JOIN">あなたにできること</a>|;
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_JOIN">Join us</a>|;
-:38
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_BUG">バグ報告</a>|;
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_BUG">Bug reports</a>|;
-:39
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_NEWS">お知らせ</a>|;
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:News">News</a>|;
-:40
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_IDOBATA">井戸端</a>|;
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_IDOBATA">Village pump</a>|;
-:46
-$buffer .= qq|検索|;
-$buffer .= qq|search|;
-:54
-$buffer .= qq|<ul><li><a href="http://fonts.jp/glyphwiki/kensaku.cgi">筆画検索(試行)</a></ul>|;
-$buffer .= qq|<ul><li><a href="http://fonts.jp/glyphwiki/kensaku.cgi">glyph search by strokes</a></ul>|;
-:55
-$buffer .= qq|<ul><li><a href="http://fonts.jp/glyphwiki/hwr.html">手書き検索(試行)</a></ul>|;
-$buffer .= qq|<ul><li><a href="http://fonts.jp/glyphwiki/hwr.html">glyph search by hand writing</a></ul>|;
-:56
-$buffer .= qq|<ul><li><a href="http://fonts.jp/glyphwiki/hwr2.html">手書き検索2(試行)</a></ul>|;
-$buffer .= qq|<ul><li><a href="http://fonts.jp/glyphwiki/hwr2.html">glyph search by hand writing 2</a></ul>|;
-:61
-$buffer .= qq|ツールボックス|;
-$buffer .= qq|toolbox|;
-:65
-$buffer .= qq|<li><a href="/wiki/Special:Mustrenew">旧部品引用グリフ</a>|;
-$buffer .= qq|<li><a href="/wiki/Special:Mustrenew">Glyphs which using old components</a>|;
-:68
-$buffer .= qq|<li><a href="/wiki/$fullwikiname">この版への固定リンク</a>|;
-$buffer .= qq|<li><a href="/wiki/$fullwikiname">Permanent link</a>|;
-:77
-$buffer .= qq|他の言語|;
-$buffer .= qq|languages|;
-
-!/home/kamichi/glyphwiki/page_right_general.pl
-:60
-$r_data =~ s/\[\[([^ \]]+ )?Talk:([^\]]+)\]\]/[[$1ノート:$2]]/g;
-# no operation
-:61
-$r_data =~ s/\[\[([^ \]]+ )?GlyphWiki-talk:([^\]]+)\]\]/[[$1GlyphWiki-ノート:$2]]/g;
-# no operation
-:62
-$r_data =~ s/\[\[([^ \]]+ )?Group:([^\]]+)\]\]/[[$1グループ:$2]]/g;
-# no operation
-:63
-$r_data =~ s/\[\[([^ \]]+ )?Group-talk:([^\]]+)\]\]/[[$1グループ-ノート:$2]]/g;
-# no operation
-:64
-$r_data =~ s/\[\[([^ \]]+ )?User:([^\]]+)\]\]/[[$1利用者:$2]]/g;
-# no operation
-:65
-$r_data =~ s/\[\[([^ \]]+ )?User-talk:([^\]]+)\]\]/[[$1利用者-会話:$2]]/g;
-# no operation
-:68
-$cgi_textbox =~ s/\[\[([^ \]]+ )?Talk:([^\]]+)\]\]/[[$1ノート:$2]]/g;
-# no operation
-:69
-$cgi_textbox =~ s/\[\[([^ \]]+ )?GlyphWiki-talk:([^\]]+)\]\]/[[$1GlyphWiki-ノート:$2]]/g;
-# no operation
-:70
-$cgi_textbox =~ s/\[\[([^ \]]+ )?Group:([^\]]+)\]\]/[[$1グループ:$2]]/g;
-# no operation
-:71
-$cgi_textbox =~ s/\[\[([^ \]]+ )?Group-talk:([^\]]+)\]\]/[[$1グループ-ノート:$2]]/g;
-# no operation
-:72
-$cgi_textbox =~ s/\[\[([^ \]]+ )?User:([^\]]+)\]\]/[[$1利用者:$2]]/g;
-# no operation
-:73
-$cgi_textbox =~ s/\[\[([^ \]]+ )?User-talk:([^\]]+)\]\]/[[$1利用者-会話:$2]]/g;
-# no operation
-:109
-$title = qq|$db_wiki_name を編集中|;
-$title = qq|Editing $db_wiki_name|;
-:111
-$title = qq|編集競合: $db_wiki_name|;
-$title = qq|Edit conflict: $db_wiki_name|;
-:113
-$title = qq|データベースエラー: $db_wiki_name|;
-$title = qq|Database error: $db_wiki_name|;
-:115
-$title = qq|データエラー: $db_wiki_name|;
-$title = qq|Data error: $db_wiki_name|;
-:117
-$title = qq|ソースを表示|;
-$title = qq|View source|;
-:146
-$buffer .= "<div class=\"query\"><span class=\"normal\">$db_wiki_name</span> のソース</div>";
-$buffer .= "<div class=\"query\">Source of <span class=\"normal\">$db_wiki_name</span></div>";
-:151
-$buffer .= "<div class=\"version\">版間での差分(日時はJST)</div>";
-$buffer .= "<div class=\"version\">difference among each versions (with JST time)</div>";
-:187
-$newversion = "最新";
-$newversion = "newest";
-:189
-$history_list .= "<li class=\"history\"><a class=\"notice\" href=\"/wiki/$url_db_wiki_name\@$data[1]\">".&local_localtime($data[3])."時点における${newversion}版</a> $temp $summary";
-$history_list .= "<li class=\"history\"><a class=\"notice\" href=\"/wiki/$url_db_wiki_name\@$data[1]\">Revision as of ".&local_localtime($data[3])." (version ${newversion})</a> $temp $summary";
-:190
-$history_list .= "<ul><li>追加された行を<span class=\"newdata\">このように</span>表示します。</ul>";
-$history_list .= "<ul><li>shows added line(s) <span class=\"newdata\">like this</span></ul>";
-:194
-$subtitle = "<h2>".&local_localtime($data[3])."時点における${newversion}版</h2>\n";
-$subtitle = "<h2>Revision as of ".&local_localtime($data[3])." (version ${newversion})</h2>\n";
-:216
-$history_list .= "<li class=\"history\"><a class=\"notice\" href=\"/wiki/$url_db_wiki_name\@$data[1]\">".&local_localtime($data[3])."時点における\@$data[1]版</a> $temp $summary";
-$history_list .= "<li class=\"history\"><a class=\"notice\" href=\"/wiki/$url_db_wiki_name\@$data[1]\">Revision as of ".&local_localtime($data[3])." (version \@$data[1])</a> $temp $summary";
-:217
-$history_list .= "<ul><li>削除された行を<span class=\"olddata\">このように</span>表示します。</ul>";
-$history_list .= "<ul><li>shows deleted line(s) <span class=\"olddata\">like this</span></ul>";
-:244
-$buffer .= "<div class=\"version\">".&local_localtime($r_timestamp)."; ".$temp." による \@${query_version}版<br>";
-$buffer .= "<div class=\"version\">".&local_localtime($r_timestamp)."; version \@${query_version} by ".$temp."<br>";
-:247
-$buffer .= "<a href=\"/wiki/".&url_encode($db_wiki_name)."\@".($query_version - 1)."\">← 前の版</a>";
-$buffer .= "<a href=\"/wiki/".&url_encode($db_wiki_name)."\@".($query_version - 1)."\">← previous version</a>";
-:249
-$buffer .= qq|<span class="disable">← 前の版</span>|;
-$buffer .= qq|<span class="disable">← previous version</span>|;
-:253
-$buffer .= " | <a href=\"/wiki/".&url_encode($db_wiki_name)."\">最新版を表示</a>";
-$buffer .= " | <a href=\"/wiki/".&url_encode($db_wiki_name)."\">latest version</a>";
-:255
-$buffer .= " | <span class=\"disable\">最新版を表示</span>";
-$buffer .= " | <span class=\"disable\">latest version</span>";
-:259
-$buffer .= " | <a href=\"/wiki/".&url_encode($db_wiki_name)."\@".($query_version + 1)."\">次の版 →</a>";
-$buffer .= " | <a href=\"/wiki/".&url_encode($db_wiki_name)."\@".($query_version + 1)."\">next version →</a>";
-:261
-$buffer .= " | <span class=\"disable\">次の版 →</span>";
-$buffer .= " | <span class=\"disable\">next version →</span>";
-:269
-$buffer .= qq|<div class="warning">存在しない版が指定されました。代替として最新版が表示されています。</div>|;
-$buffer .= qq|<div class="warning">存在しない版が指定されました。代替として最新版が表示されています。</div>|;
-:271
-$buffer .= qq|<div class="warning">存在しない版が指定されました。最新版に対する編集となります。</div>|;
-$buffer .= qq|<div class="warning">存在しない版が指定されました。最新版に対する編集となります。</div>|;
-:278
-$buffer .= qq|<div class="warning">警告: あなたはこのページの古い版を編集しています。もしこのグリフを保存すると、この版以降に追加された全ての変更が無効になってしまいます。</div>|;
-$buffer .= qq|<div class="warning">Notice: You are editing an old revision of this page. If you save it, any changes made since then will be removed.</div>|;
-:280
-$buffer .= qq|<div class="warning">警告: あなたはこのページの古い版を編集しています。もしこの文章を保存すると、この版以降に追加された全ての変更が無効になってしまいます。</div>|;
-$buffer .= qq|<div class="warning">Notice: You are editing an old revision of this page. If you save it, any changes made since then will be removed.</div>|;
-:287
-$buffer .= qq|<div class="panel"><span class="warning">グリフウィキには現在この名前の項目はありません。</span><ul><li>グリフを新しく描くには、まず下のテキストボックスに内容を書き込んでください。その際、著作権に注意してください。その後、ページ下部の<span class="notice">■投稿する前に以下を確認して下さい■</span>以下の注意事項をよく確認した上で “$BUTTON_ACCEPT_AND_SUBMIT” ボタンを押してください。そうすればすぐに見えるようになります。<li>もしあなたがグリフウィキに初めて投稿するならば、先に<a href="/wiki/GlyphWiki:$URL_HOWTO">どうやって使うのか</a>を読んでください。<li><span class="notice">投稿のテストをしたい場合、<a href="/wiki/GlyphWiki:$URL_SANDBOX">サンドボックス</a>を利用してください。</span>一度作成した項目はあなたが削除することはできません。<li>他の項目から<a href="/wiki/Special:Search?action=fulltext&search=$url_db_wiki_name">&quot;$db_wiki_name&quot;を検索する</a>。</ul><hr><ul><li><span class="notice">この項目を作成したばかりなのにこのメッセージがでる場合、データベースの更新が遅れているために表示できないのかもしれません。</span>項目を書き直す前にしばらく待ってから、再読込してみてください。<li>以前この項目を作成したことがあるならば、この項目は<a href="/wiki/$URL_DELETE_LOG">既に削除されています</a>。<a href="/wiki/$URL_SAKUJO">$WORD_SAKUJO</a>に削除された理由が記載されているかもしれません。</ul></div>|;
-$buffer .= qq|<div class="panel"><span class="warning">GlyphWiki does not have an article with this exact name.</span><ul><li>グリフを新しく描くには、まず下のテキストボックスに内容を書き込んでください。その際、著作権に注意してください。その後、ページ下部の<span class="notice">*** please confirm the following matters before contributing it ***</span>以下の注意事項をよく確認した上で “$BUTTON_ACCEPT_AND_SUBMIT” ボタンを押してください。そうすればすぐに見えるようになります。<li>もしあなたがグリフウィキに初めて投稿するならば、先に<a href="/wiki/GlyphWiki:$URL_HOWTO">どうやって使うのか</a>を読んでください。<li><span class="notice">投稿のテストをしたい場合、<a href="/wiki/GlyphWiki:$URL_SANDBOX">サンドボックス</a>を利用してください。</span>一度作成した項目はあなたが削除することはできません。<li>他の項目から<a href="/wiki/Special:Search?action=fulltext&search=$url_db_wiki_name">&quot;$db_wiki_name&quot;を検索する</a>。</ul><hr><ul><li><span class="notice">この項目を作成したばかりなのにこのメッセージがでる場合、データベースの更新が遅れているために表示できないのかもしれません。</span>項目を書き直す前にしばらく待ってから、再読込してみてください。<li>以前この項目を作成したことがあるならば、この項目は<a href="/wiki/$URL_DELETE_LOG">既に削除されています</a>。<a href="/wiki/$URL_SAKUJO">$WORD_SAKUJO</a>に削除された理由が記載されているかもしれません。</ul></div>|;
-:289
-$buffer .= qq|<div class="panel"><span class="warning">グリフウィキには現在この名前の項目はありません。</span><ul><li>文章を新しく作成するには、まず下のテキストボックスに内容を書き込んでください。その際、著作権に注意してください。その後、ページ下部の<span class="notice">■投稿する前に以下を確認して下さい■</span>以下の注意事項をよく確認した上で “$BUTTON_ACCEPT_AND_SUBMIT” ボタンを押してください。そうすればすぐに見えるようになります。<li>もしあなたがグリフウィキに初めて投稿するならば、先に<a href="/wiki/GlyphWiki:$URL_HOWTO">どうやって使うのか</a>を読んでください。<li><span class="notice">投稿のテストをしたい場合、<a href="/wiki/GlyphWiki:$URL_SANDBOX">サンドボックス</a>を利用してください。</span>一度作成した項目はあなたが削除することはできません。<li>他の項目から<a href="/wiki/Special:Search?action=fulltext&search=$url_db_wiki_name">&quot;$db_wiki_name&quot;を検索する</a>。</ul><hr><ul><li><span class="notice">この項目を作成したばかりなのにこのメッセージがでる場合、データベースの更新が遅れているために表示できないのかもしれません。</span>項目を書き直す前にしばらく待ってから、再読込してみてください。<li>以前この項目を作成したことがあるならば、この項目は<a href="/wiki/$URL_DELETE_LOG">既に削除されています</a>。<a href="/wiki/$URL_SAKUJO">$WORD_SAKUJO</a>に削除された理由が記載されているかもしれません。</ul></div>|;
-$buffer .= qq|<div class="panel"><span class="warning">GlyphWiki does not have an article with this exact name.</span><ul><li>文章を新しく作成するには、まず下のテキストボックスに内容を書き込んでください。その際、著作権に注意してください。その後、ページ下部の<span class="notice">*** please confirm the following matters before contributing it ***</span>以下の注意事項をよく確認した上で “$BUTTON_ACCEPT_AND_SUBMIT” ボタンを押してください。そうすればすぐに見えるようになります。<li>もしあなたがグリフウィキに初めて投稿するならば、先に<a href="/wiki/GlyphWiki:$URL_HOWTO">どうやって使うのか</a>を読んでください。<li><span class="notice">投稿のテストをしたい場合、<a href="/wiki/GlyphWiki:$URL_SANDBOX">サンドボックス</a>を利用してください。</span>一度作成した項目はあなたが削除することはできません。<li>他の項目から<a href="/wiki/Special:Search?action=fulltext&search=$url_db_wiki_name">&quot;$db_wiki_name&quot;を検索する</a>。</ul><hr><ul><li><span class="notice">この項目を作成したばかりなのにこのメッセージがでる場合、データベースの更新が遅れているために表示できないのかもしれません。</span>項目を書き直す前にしばらく待ってから、再読込してみてください。<li>以前この項目を作成したことがあるならば、この項目は<a href="/wiki/$URL_DELETE_LOG">既に削除されています</a>。<a href="/wiki/$URL_SAKUJO">$WORD_SAKUJO</a>に削除された理由が記載されているかもしれません。</ul></div>|;
-:296
-$buffer .= qq|<div class="message">あなたがこのページを編集し始めた後に、他の誰かがこのページ(またはこのページの別の版)を変更しました。左のグリフが現在の最新の状態です。あなたの編集していたグリフは右側に示されていますので再度編集して下さい。あなたの編集した内容は、"投稿する"をクリックした時に実際に保存されます。</div>|;
-$buffer .= qq|<div class="message">Someone else has changed this page since you started editing it. The left image contains the glyph as it currently exists. Your changes are shown in the right image. You will have to edit again. The glyph you edit will be saved when you press "Save page".</div>|;
-:298
-$buffer .= qq|<div class="message">あなたがこのページを編集し始めた後に、他の誰かがこのページ(またはこのページの別の版)を変更しました。上側のテキストエリアは現在の最新の状態です。あなたの編集していた文章は下側のテキストエリアに示されています。編集していた文章を、上側のテキストエリアの文章に組み込んで下さい。 <span class="notice">上側のテキストエリアの内容だけ</span>が、"保存する"をクリックした時に実際に保存されます。</div>|;
-$buffer .= qq|<div class="message">Someone else has changed this page since you started editing it. The upper text area contains the page text as it currently exists. Your changes are shown in the lower text area. You will have to merge your changes into the existing text. <span class="notice">Only</span> the text in the upper text area will be saved when you press "Save page".</div>|;
-:304
-$buffer .= qq|<div class="message">データベースの書き込みに失敗しました。多数のユーザが同時にアクセスしているか、サーバの負荷が高まっている可能性があります。まだ保存されていませんので、再度投稿してください。あなたの編集した内容は、"投稿する"をクリックした時に実際に保存されます。</div>|;
-$buffer .= qq|<div class="message">Failed to write to the database. 多数のユーザが同時にアクセスしているか、サーバの負荷が高まっている可能性があります。まだ保存されていませんので、再度投稿してください。あなたの編集した内容は、"投稿する"をクリックした時に実際に保存されます。</div>|;
-:309
-$buffer .= qq|<div class="message">グリフデータ、または関連字にエラーがあります。まだ保存されていませんので、内容を確認して再度投稿してください。あなたの編集した内容は、"投稿する"をクリックした時に実際に保存されます。</div>|;
-$buffer .= qq|<div class="message">There is an error at glyph data or at related char and it wasn't registered yet. Please check the content and contribute again. あなたの編集した内容は、"投稿する"をクリックした時に実際に保存されます。</div>|;
-:316
-$buffer .= qq|<div class="message">あなたは<span class="notice">ログインしていません</span>。匿名利用者による投稿としてこの項目の履歴に記録されます。また、投稿の前には<span class="notice">プレビュー</span>が必要です。|;
-$buffer .= qq|<div class="message">You are NOT currently logged in. Editing this way will cause as anonymous user to be recorded publicly in this page's history. Also you are needed to check PREVIEW. |;
-:318
-$buffer .= "匿名利用者は外部リンクを含むページを投稿することはできません。</div>";
-$buffer .= "Anonymous users can't contribute the page which includes external links.</div>";
-:327
-$buffer .= qq|<br><h2>プレビュー</h2><div class="warning2 notice">これはプレビューです。まだ保存されていません!</div><hr>|;
-$buffer .= qq|<br><h2>Preview</h2><div class="warning2 notice">Remember that this is only a preview; any changes have not yet been saved!</div><hr>|;
-:332
-$buffer .= qq|<div class="message">このページは編集できないように保護されているか、編集が禁止されています。これにはいくつか理由があります。詳しくは<a href="/wiki/$URL_HOGO">$PAGE_HOGO</a>または<a href="/wiki/$URL_HOGOKIROKU">$PAGE_HOGOKIROKU</a>をご覧ください。</div><hr>|;
-$buffer .= qq|<div class="message">This page is currently protected from editing. これにはいくつか理由があります。詳しくは<a href="/wiki/$URL_HOGO">$PAGE_HOGO</a>または<a href="/wiki/$URL_HOGOKIROKU">$PAGE_HOGOKIROKU</a>をご覧ください。</div><hr>|;
-:362
-$buffer .= qq|<div class=\"warning2\">UCS関連グリフの関連字に別の文字の割り当てや未定義(〓)とすることはできません。別の文字を関連付けたい場合は<a class=\"notice\" href=\"/wiki/GlyphWiki:$URL_MUSTRELATE\">$WORD_MUSTRELATE</a>に記述して異体字としての関連付けを申請してください。</div><hr>|;
-$buffer .= qq|<div class=\"warning2\">UCS関連グリフの関連字に別の文字の割り当てや未定義(〓)とすることはできません。別の文字を関連付けたい場合は<a class=\"notice\" href=\"/wiki/GlyphWiki:$URL_MUSTRELATE\">$WORD_MUSTRELATE</a>に記述して異体字としての関連付けを申請してください。</div><hr>|;
-:375
-$buffer .= qq|<div class=\"warning2\">他のグリフがこのグリフ(あるいはこのグリフの古い版)を引用しているので実際には削除できません。</div><hr>|;
-$buffer .= qq|<div class=\"warning2\">他のグリフがこのグリフ(あるいはこのグリフの古い版)を引用しているので実際には削除できません。</div><hr>|;
-:382
-$buffer .= qq|<div class=\"warning2\">エイリアスの対象グリフはバージョンを指定できません。このままでは登録はできません。バージョン指定を外すか、エイリアスではなく実体化する必要があります(専用エディタで部品を分解してください)。</div><hr>|;
-$buffer .= qq|<div class=\"warning2\">エイリアスの対象グリフはバージョンを指定できません。このままでは登録はできません。バージョン指定を外すか、エイリアスではなく実体化する必要があります(専用エディタで部品を分解してください)。</div><hr>|;
-:390
-$buffer .= "<div class=\"warning2\">存在しないグリフをエイリアスとして参照しています。実際には登録できません!</div><hr>";
-$buffer .= "<div class=\"warning2\">It refers unexisting glyph as alias. Actually it can't register!</div><hr>";
-:401
-$buffer .= qq|<h2>フォント</h2>|;
-$buffer .= qq|<h2>Font file</h2>|;
-:403
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_FONT">フォント生成のヘルプ</a>|;
-$buffer .= qq|<li><a href="/wiki/GlyphWiki:$URL_FONT">help document for generating font file</a>|;
-:410
-$buffer .= qq|<li>TrueTypeフォント <a href="/font/$fontname.ttf">ダウンロード</a> (内部バージョン $fontname、$fontsize バイト)|;
-$buffer .= qq|<li>TrueType font file <a href="/font/$fontname.ttf">download</a> (inner version: $fontname、$fontsize bytes)|;
-:411,423,427
-$buffer .= qq|<ul><li>フォント生成ログ <a href="/font/$fontname.log">閲覧</a></ul>|;
-$buffer .= qq|<ul><li>log for font generation <a href="/font/$fontname.log">view</a></ul>|;
-:412
-$buffer .= qq|<li>フォント生成ソース<ul>|;
-$buffer .= qq|<li>sources to generate the font<ul>|;
-:413
-$buffer .= qq|<li><a href="/font/$fontname.source">ソースファイル</a>|;
-$buffer .= qq|<li><a href="/font/$fontname.source">source file</a>|;
-:414
-$buffer .= qq|<li><a href="/font/$fontname.meta">フォント定義ファイル</a>|;
-$buffer .= qq|<li><a href="/font/$fontname.meta">font definition file</a>|;
-:416
-$buffer .= qq|<li><a href="/font/$fontname.ivs">IVS定義ファイル</a>|;
-$buffer .= qq|<li><a href="/font/$fontname.ivs">IVS definition file</a>|;
-:422
-$buffer .= qq|<li>現在フォント生成中です。|;
-$buffer .= qq|<li>It is in generating process of font file now.|;
-:424
-$buffer .= qq|<ul><li><a href="/wiki/$wiki_name">最新の状況に更新</a></ul>|;
-$buffer .= qq|<ul><li><a href="/wiki/$wiki_name">Update latest status</a></ul>|;
-:426
-$buffer .= qq|<li>フォント生成に失敗しました(念のためページを再読み込みしてください)。|;
-$buffer .= qq|<li>Failed in generating font file. (You can try to reload this page.)|;
-:430
-$buffer .= qq|<li><a href="/wiki/$wiki_name?action=makettf">フォント生成の実行</a>|;
-$buffer .= qq|<li><a href="/wiki/$wiki_name?action=makettf">Execute to generate font</a>|;
-:431
-$buffer .= qq|<ul><li>クリックするとフォント生成が始まります。生成に必要な時間は、概ね1,000グリフで4分程度です。</ul>|;
-$buffer .= qq|<ul><li>When you click this link, font generation begins. It costs about 4 minutes per 1,000 glyphs.</ul>|;
-:434
-$buffer .= qq|<h2>グリフ集合</h2>|;
-$buffer .= qq|<h2>Set of glyphs</h2>|;
-:439
-$buffer .= qq|<div class="message">このグリフは<a href="/wiki/GlyphWiki:$URL_ALIAS">エイリアス</a>(他のグリフの別名)に指定されています。このまま編集を行うと独立したグリフ(あるいは別のグリフに対するエイリアス)となり、<span class="notice">現在指しているグリフとの関係は解消されます</span>。現在指しているグリフとの関係を継続する場合は、<a class="notice" href="$alias_to?action=edit">実体となるグリフを編集</a>してください。</div>|;
-$buffer .= qq|<div class="message">このグリフは<a href="/wiki/GlyphWiki:$URL_ALIAS">エイリアス</a>(他のグリフの別名)に指定されています。このまま編集を行うと独立したグリフ(あるいは別のグリフに対するエイリアス)となり、<span class="notice">現在指しているグリフとの関係は解消されます</span>。現在指しているグリフとの関係を継続する場合は、<a class="notice" href="$alias_to?action=edit">実体となるグリフを編集</a>してください。</div>|;
-:457
-$buffer .= qq|<div class="compare"><table><tr><td>保存された版<td>あなたのグリフ<tr><td><img src="/glyph/$temp_name.png"><td><img src="/get_preview_glyph.cgi?data=$cgi_textbox"></table></div>|;
-$buffer .= qq|<div class="compare"><table><tr><td>保存された版<td>あなたのグリフ<tr><td><img src="/glyph/$temp_name.png"><td><img src="/get_preview_glyph.cgi?data=$cgi_textbox"></table></div>|;
-:466
-$buffer .= qq|<div class="texts" style="margin: 1em 0 0 1em;"><a class="wiki" href=\"/wiki/$alias_to\">$alias_to</a> の<a href="/wiki/GlyphWiki:$URL_ALIAS">エイリアス</a>(別名)</div>|;
-$buffer .= qq|<div class="texts" style="margin: 1em 0 0 1em;"><a class="wiki" href=\"/wiki/$alias_to\">$alias_to</a> の<a href="/wiki/GlyphWiki:$URL_ALIAS">Aliase(s)</a></div>|;
-:473
-$buffer .= qq|<span class="text glyph_link">(SVG画像 <a href="/glyph/$db_wiki_name.svg">ポリゴン</a> <a href="/glyph/$db_wiki_name.path.svg">パス</a>)</span>|;
-$buffer .= qq|<span class="text glyph_link">(SVG image <a href="/glyph/$db_wiki_name.svg">by polygon</a> <a href="/glyph/$db_wiki_name.path.svg">by path</a>)</span>|;
-:474
-$buffer .= qq|<span class="text glyph_link"><a href="/glyph/$db_wiki_name.eps">(EPS画像)</a></span><br>|;
-$buffer .= qq|<span class="text glyph_link"><a href="/glyph/$db_wiki_name.eps">(EPS image)</a></span><br>|;
-:479
-$buffer .= qq|<span class="text glyph_link"><a href="/glyph/$db_wiki_name\@$query_version.svg">(SVG画像)</a></span>|;
-$buffer .= qq|<span class="text glyph_link"><a href="/glyph/$db_wiki_name\@$query_version.svg">(SVG image)</a></span>|;
-:480
-$buffer .= qq|<span class="text glyph_link"><a href="/glyph/$db_wiki_name\@$query_version.eps">(EPS画像)</a></span><br>|;
-$buffer .= qq|<span class="text glyph_link"><a href="/glyph/$db_wiki_name\@$query_version.eps">(EPS image)</a></span><br>|;
-:485
-$buffer .= qq|<div class="message">このページ(この版)は<span class="notice">管理者によって削除されました</span>。詳細は<a href="/wiki/$URL_DELETE_LOG">$WORD_DELETE_LOG</a>を参照してください。</div>|;
-$buffer .= qq|<div class="message">This page (this revision) was <span class="notice">deleted by administrator</span>. Please see <a href="/wiki/$URL_DELETE_LOG">$WORD_DELETE_LOG</a> for details.</div>|;
-:538
-$parent_info .= "<li>あなたのブラウザでの表示:<span class=\"related\">$parent_char</span>";
-$parent_info .= "<li>browser view: <span class=\"related\">$parent_char</span>";
-:559
-$parent_info .= "前の符号位置:<a href=\"/wiki/u$code\"><span class=\"related\">$char</span> (u$code)</a> ";
-$parent_info .= "previous code point: <a href=\"/wiki/u$code\"><span class=\"related\">$char</span> (u$code)</a> ";
-:578
-$parent_info .= "次の符号位置:<a href=\"/wiki/u$code\"><span class=\"related\">$char</span> (u$code)</a> ";
-$parent_info .= "next code point: <a href=\"/wiki/u$code\"><span class=\"related\">$char</span> (u$code)</a> ";
-:583,607,634,661
-$buffer .= qq|<h2>文字コード関連情報</h2>|;
-$buffer .= qq|<h2>Information about CCS</h2>|;
-:596,623,650
-$parent_info .= "前の番号:<a href=\"/wiki/$codechar\"><img class=\"thumb related\" src=\"/glyph/$codechar.50px.png\"> ($codechar)</a><br>";
-$parent_info .= "Prev. number : <a href=\"/wiki/$codechar\"><img class=\"thumb related\" src=\"/glyph/$codechar.50px.png\"> ($codechar)</a><br>";
-:602,629,656
-$parent_info .= "次の番号:<a href=\"/wiki/$codechar\"><img class=\"thumb related\" src=\"/glyph/$codechar.50px.png\"> ($codechar)</a><br>";
-$parent_info .= "Next number : <a href=\"/wiki/$codechar\"><img class=\"thumb related\" src=\"/glyph/$codechar.50px.png\"> ($codechar)</a><br>";
-:609
-$buffer .= qq|法務省 戸籍統一文字情報 <a href="http://kosekimoji.moj.go.jp/kosekimojidb/mjko/PeopleTop/">検索サイト</a><br>|;
-$buffer .= qq|法務省 戸籍統一文字情報 <a href="http://kosekimoji.moj.go.jp/kosekimojidb/mjko/PeopleTop/">検索サイト</a><br>|;
-:636,663
-$buffer .= qq|諸橋轍次『大漢和辞典』<br>|;
-$buffer .= qq|<i>Daikanwa-Jiten</i> by Tetsuji Morohashi<br>|;
-:680
-$buffer_related .= qq|<table border="0"><tr><td align="right" valign="top"><nobr><a href="/wiki/GlyphWiki:$URL_RELATED">関連字</a>:</nobr>|;
-$buffer_related .= qq|<table border="0"><tr><td align="right" valign="top"><nobr><a href="/wiki/GlyphWiki:$URL_RELATED">Related character(s)</a>:</nobr>|;
-:709
-$buffer_related .= qq|<tr><td align="right" valign="top"><nobr><a href="/wiki/GlyphWiki:$URL_VARIANT">異体字</a>:</nobr><td valign="top">$related_char$related_code<br>$label<td valign="top">$temp|;
-$buffer_related .= qq|<tr><td align="right" valign="top"><nobr><a href="/wiki/GlyphWiki:$URL_VARIANT">Variant(s)</a>:</nobr><td valign="top">$related_char$related_code<br>$label<td valign="top">$temp|;
-:717
-$buffer_related .= qq|<tr><td align="right" valign="top"><nobr><a href="/wiki/GlyphWiki:$URL_VARIANT">異体字</a>:</nobr><td valign="top"><a href="/wiki/$related_code2">$related_char$related_code</a><br>$label<td valign="top">|;
-$buffer_related .= qq|<tr><td align="right" valign="top"><nobr><a href="/wiki/GlyphWiki:$URL_VARIANT">Variant(s)</a>:</nobr><td valign="top"><a href="/wiki/$related_code2">$related_char$related_code</a><br>$label<td valign="top">|;
-:731
-$buffer_related .= "<p><a href=\"/springGraph.swf?code=$related_code_springgraph\">ばねグラフで異体字を表示する</a> | <span class=\"disable\">異体字の異体字をすべてたどって表示する</span></p>"
-$buffer_related .= "<p><a href=\"/springGraph.swf?code=$related_code_springgraph\">ばねグラフで異体字を表示する</a> | <span class=\"disable\">異体字の異体字をすべてたどって表示する</span></p>"
-:734
-$buffer_related .= "<p>(未設定)</p>";
-$buffer_related .= "<p>(undefined)</p>";
-:738
-$buffer .= qq|<h2>関連グリフ</h2>|;
-$buffer .= qq|<h2>Related glyphs</h2>|;
-:778
-$buffer_quoting .= "<br><p>(残りは省略されています ... <a href=\"?view=all\">すべて表示する</a>)</p>";
-$buffer_quoting .= "<br><p>(snipped ... <a href=\"?view=all\">view all</a>)</p>";
-:796
-$buffer .= qq|<h2>このグリフの<a href="/wiki/GlyphWiki:$URL_ALIAS">エイリアス</a>(別名)一覧</h2>|;
-$buffer .= qq|<h2>List of <a href="/wiki/GlyphWiki:Aliases">aliases</a> for this glyph</h2>|;
-:800
-$buffer .= qq|<h2>このグリフを内部で引用している他のグリフ一覧</h2>|;
-$buffer .= qq|<h2>This glyph is quoted by:</h2>|;
-:802
-$buffer .= qq|<div class="texts"><a href="/wiki/Special:Renewall?view=listup&target=$wiki_name">部品グリフを別のグリフに置き換える</a></div>|;
-$buffer .= qq|<div class="texts"><a href="/wiki/Special:Renewall?view=listup&target=$wiki_name">部品グリフを別のグリフに置き換える</a></div>|;
-:818
-$buffer .= qq|<h2>このグリフで引用している他のグリフ一覧</h2>|;
-$buffer .= qq|<h2>This glyph consists of:</h2>|;
-:839
-$local_using =~ s/^Talk:/ノート:/;
-# no operation
-:840
-$local_using =~ s/^Glyphwiki-talk:/GlyphWiki-ノート:/;
-# no operation
-:841
-$local_using =~ s/^User:/利用者:/;
-# no operation
-:842
-$local_using =~ s/^User-talk:/利用者-会話:/;
-# no operation
-:843
-$local_using =~ s/^Group:/グループ:/;
-# no operation
-:844
-$local_using =~ s/^Group-talk:/グループ-ノート:/;
-# no operation
-:850
-$buffer .= qq|<h2>このグリフを収録するグループ一覧</h2>|;
-$buffer .= qq|<h2>This glyph is a member of the below group(s):</h2>|;
-:884
-my $temp2 = &url_encode("旧部品の更新");
-my $temp2 = &url_encode("update quoted old part(s)");
-:885
-$buffer .= qq|<h2>引用する旧部品の更新</h2>|;
-$buffer .= qq|<h2>update quoted old part(s)</h2>|;
-:886
-$buffer .= qq|<div class="texts">現在:<img class="glyph compare" src="/glyph/$db_wiki_name\@$newest_version.png" border="0"> |;
-$buffer .= qq|<div class="texts">current design:<img class="glyph compare" src="/glyph/$db_wiki_name\@$newest_version.png" border="0"> |;
-:887
-$buffer .= qq|最新部品を利用:<img class="glyph compare" src="/get_preview_glyph.cgi?data=$temp" border="0"> |;
-$buffer .= qq|use the newest part(s):<img class="glyph compare" src="/get_preview_glyph.cgi?data=$temp" border="0"> |;
-:888
-$buffer .= qq|<a href="?action=edit&buttons=$URL_PREVIEW&textbox=$temp&related=$url_related&summary=$temp2">更新する</a></div>|;
-$buffer .= qq|<a href="?action=edit&buttons=$URL_PREVIEW&textbox=$temp&related=$url_related&summary=$temp2">Update</a></div>|;
-:914
-$buffer .= qq|<h2>このグループを引用するグループ一覧</h2>|;
-$buffer .= qq|<h2>List of groups which quotes this group</h2>|;
-:923
-$buffer .= qq|<div class="panel"><span class="warning">この名前は<a href="/wiki/GlyphWiki:$URL_GUIDE">命名ガイドライン</a>に沿っていない可能性があります。確認のうえ正しくなければ修正してください。</span><ul><li>諸橋轍次『大漢和辞典』番号は <a href="/wiki/dkw-$num0$num1">dkw-$num0$num1</a> のように数字5桁を指定してください</ul></div>|;
-$buffer .= qq|<div class="panel"><span class="warning">この名前は<a href="/wiki/GlyphWiki:$URL_GUIDE">命名ガイドライン</a>に沿っていない可能性があります。確認のうえ正しくなければ修正してください。</span><ul><li>諸橋轍次『大漢和辞典』番号は <a href="/wiki/dkw-$num0$num1">dkw-$num0$num1</a> のように数字5桁を指定してください</ul></div>|;
-:928
-$buffer .= qq|<div class="panel"><span class="warning">この名前は<a href="/wiki/GlyphWiki:$URL_GUIDE">命名ガイドライン</a>に沿っていない可能性があります。確認のうえ正しくなければ修正してください。</span><ul><li>法務省戸籍統一文字番号は <a href="/wiki/koseki-$num0$num1">koseki-$num0$num1</a> のように数字6桁を指定してください</ul></div>|;
-$buffer .= qq|<div class="panel"><span class="warning">この名前は<a href="/wiki/GlyphWiki:$URL_GUIDE">命名ガイドライン</a>に沿っていない可能性があります。確認のうえ正しくなければ修正してください。</span><ul><li>法務省戸籍統一文字番号は <a href="/wiki/koseki-$num0$num1">koseki-$num0$num1</a> のように数字6桁を指定してください</ul></div>|;
-:931
-$buffer .= qq|<div class="panel"><span class="warning">この名前は<a href="/wiki/GlyphWiki:$URL_GUIDE">命名ガイドライン</a>に沿っていない可能性があります。確認のうえ正しくなければ修正してください。</span><ul><li>baseparts- は廃止されました</ul></div>|;
-$buffer .= qq|<div class="panel"><span class="warning">この名前は<a href="/wiki/GlyphWiki:$URL_GUIDE">命名ガイドライン</a>に沿っていない可能性があります。確認のうえ正しくなければ修正してください。</span><ul><li>baseparts- は廃止されました</ul></div>|;
-:933
-$buffer .= qq|<div class="panel"><span class="warning">グリフウィキには現在この名前の項目はありません。</span><ul><li><a href="/wiki/$url_db_wiki_name?action=edit" class="recommend">&quot;$db_wiki_name&quot;という項目を新規作成する</a>。または<a href="/wiki/GlyphWiki:$URL_SEISAKUIRAI">制作依頼</a>する。<li>既存の項目から<a href="/wiki/Special:Search?action=fulltext&search=$url_db_wiki_name">&quot;$db_wiki_name&quot;を検索する</a>。</ul><hr><ul><li>もしこの項目を作成したことがあるのにこのメッセージがでる場合、データベースの更新が遅れているために表示できないか、既に削除されています(<a href="/wiki/$URL_SAKUJO">$WORD_SAKUJO</a>に削除された理由が記載されているかもしれません)。<a href="/wiki/$URL_DELETE_LOG">$WORD_DELETE_LOG</a>も確認してください。</ul></div>|;
-$buffer .= qq|<div class="panel"><span class="warning">GlyphWiki does not have an article with this exact name.</span><ul><li><a href="/wiki/$url_db_wiki_name?action=edit" class="recommend">&quot;$db_wiki_name&quot;という項目を新規作成する</a>。または<a href="/wiki/GlyphWiki:$URL_SEISAKUIRAI">制作依頼</a>する。<li>既存の項目から<a href="/wiki/Special:Search?action=fulltext&search=$url_db_wiki_name">&quot;$db_wiki_name&quot;を検索する</a>。</ul><hr><ul><li>もしこの項目を作成したことがあるのにこのメッセージがでる場合、データベースの更新が遅れているために表示できないか、既に削除されています(<a href="/wiki/$URL_SAKUJO">$WORD_SAKUJO</a>に削除された理由が記載されているかもしれません)。<a href="/wiki/$URL_DELETE_LOG">$WORD_DELETE_LOG</a>も確認してください。</ul></div>|;
-:966
-$buffer .= qq|<h2>あなたのグリフ</h2>|;
-$buffer .= qq|<h2>Your desgined glyph</h2>|;
-:979
-$buffer .= qq|<a href="/wiki/GlyphWiki:$URL_RELATED">関連字</a> (入力必須): <input type="text" name="related" value="$temp2" size="6"><br>|; 
-$buffer .= qq|<a href="/wiki/GlyphWiki:$URL_RELATED">related character</a> (must input): <input type="text" name="related" value="$temp2" size="6"><br>|; 
-:987
-$buffer .= qq|<div class="message"><div class="title">■投稿する前に以下の事柄を確認してください■</div><ol><li>GlyphWikiに投稿したデータは著作権の譲渡を行ったことになり、その<span class="notice">データがいかなる形態で改変・使用されることもあなたは許諾し、以後著作者人格権を主張・使用しないことを了承するものとみなします</span>。<li><span class="notice">他のフォントや印刷物などからグリフを無断で転載・コピー・トレースしないでください</span>。それ以外にも投稿内容に問題がある場合、<a href="/wiki/$URL_SAKUJO">削除の方針</a>に基づき削除されます。また、グリフウィキの運営方針についてはこれから決定していきますが、<span class="notice">最終的な決定権は管理者にあるものとします</span>。これらのことにあなたはあらかじめ同意したものとみなします。 <li>GlyphWikiのデータ・記事のライセンスはWikipediaの記事のライセンス(GFDL)とは異なります。詳しくは <a href="/wiki/GlyphWiki:$URL_LICENSE">データ・記事のライセンス</a> を参照してください。</ol></div>|;
-$buffer .= qq|<div class="message"><div class="title">*** please confirm the following matters before contributing it ***</div><ol><li>GlyphWikiに投稿したデータは著作権の譲渡を行ったことになり、その<span class="notice">データがいかなる形態で改変・使用されることもあなたは許諾し、以後著作者人格権を主張・使用しないことを了承するものとみなします</span>。<li><span class="notice">他のフォントや印刷物などからグリフを無断で転載・コピー・トレースしないでください</span>。それ以外にも投稿内容に問題がある場合、<a href="/wiki/$URL_SAKUJO">削除の方針</a>に基づき削除されます。また、グリフウィキの運営方針についてはこれから決定していきますが、<span class="notice">最終的な決定権は管理者にあるものとします</span>。これらのことにあなたはあらかじめ同意したものとみなします。 <li>GlyphWikiのデータ・記事のライセンスはWikipediaの記事のライセンス(GFDL)とは異なります。詳しくは <a href="/wiki/GlyphWiki:$URL_LICENSE">データ・記事のライセンス</a> を参照してください。</ol></div>|;
-:989,1030
-$buffer .= qq|<div class="toolbox"><a href="/wiki/GlyphWiki:$URL_YOUYAKU">編集内容の要約</a>: <input type="text" name="summary" value="$html_summary" size="100"><br>|;
-$buffer .= qq|<div class="toolbox"><a href="/wiki/GlyphWiki:$URL_YOUYAKU">Edit summary</a>: <input type="text" name="summary" value="$html_summary" size="100"><br>|;
-:991,1032
-$buffer .= "要約のプレビュー: <span class=\"summary\">($html_summary)</span><br>";
-$buffer .= "Summary preview: <span class=\"summary\">($html_summary)</span><br>";
-:1000,1041
-$buffer .= qq*<a href="/wiki/$url_wiki_name">中止</a> | <a href="/wiki/GlyphWiki:$URL_HENSHU" target="_blank">編集の仕方</a> (新しいウィンドウが開きます)</div>*;
-$buffer .= qq*<a href="/wiki/$url_wiki_name">Cancel</a> | <a href="/wiki/GlyphWiki:$URL_HENSHU" target="_blank">Editing help</a> (opens in new window)</div>*;
-:1005
-$buffer .= qq|<div class="message2">以下にソースを表示しています:</div>|;
-$buffer .= qq|<div class="message2">Showing source in the following:</div>|;
-:1009
-$buffer .= qq|<a href="/wiki/GlyphWiki:$URL_RELATED">関連字</a>: <input type="text" name="related" value="$temp2" size="6"><br>|; 
-$buffer .= qq|<a href="/wiki/GlyphWiki:$URL_RELATED">related character</a>: <input type="text" name="related" value="$temp2" size="6"><br>|; 
-:1016
-$buffer .= qq|<div class="message"><a href="/wiki/$url_db_wiki_name">$db_wiki_name</a> に戻る。</div>|;
-$buffer .= qq|<div class="message">Return tp <a href="/wiki/$url_db_wiki_name">$db_wiki_name</a>.</div>|;
-:1028
-$buffer .= qq|<div class="message"><div class="title">■投稿する前に以下の事柄を確認してください■</div><ol><li>GlyphWikiに投稿した記事は著作権の譲渡を行ったことになり、その<span class="notice">記事がいかなる形態で改変・使用されることもあなたは許諾し、以後著作者人格権を主張・使用しないことを了承するものとみなします</span>。<li><span class="notice">他のWebページや出版物などから文章を無断で転載・コピー・トレースしないでください</span>。それ以外にも投稿内容に問題がある場合、<a href="/wiki/$URL_SAKUJO">削除の方針</a>に基づき削除されます。また、グリフウィキの運営方針についてはこれから決定していきますが、<span class="notice">最終的な決定権は管理者にあるものとします</span>。これらのことにあなたはあらかじめ同意したものとみなします。 <li>GlyphWikiのデータ・記事のライセンスはWikipediaの記事のライセンス(GFDL)とは異なります。詳しくは<a href="/wiki/GlyphWiki:$URL_LICENSE">データ・記事のライセンス</a>を参照してください。</ol></div>|;
-$buffer .= qq|<div class="message"><div class="title">*** please confirm the following matters before contributing it ***</div><ol><li>GlyphWikiに投稿した記事は著作権の譲渡を行ったことになり、その<span class="notice">記事がいかなる形態で改変・使用されることもあなたは許諾し、以後著作者人格権を主張・使用しないことを了承するものとみなします</span>。<li><span class="notice">他のWebページや出版物などから文章を無断で転載・コピー・トレースしないでください</span>。それ以外にも投稿内容に問題がある場合、<a href="/wiki/$URL_SAKUJO">削除の方針</a>に基づき削除されます。また、グリフウィキの運営方針についてはこれから決定していきますが、<span class="notice">最終的な決定権は管理者にあるものとします</span>。これらのことにあなたはあらかじめ同意したものとみなします。 <li>GlyphWikiのデータ・記事のライセンスはWikipediaの記事のライセンス(GFDL)とは異なります。詳しくは<a href="/wiki/GlyphWiki:$URL_LICENSE">データ・記事のライセンス</a>を参照してください。</ol></div>|;
-:1044
-$buffer .= qq|<h2>あなたの更新内容</h2>|;
-$buffer .= qq|<h2>your changes</h2>|;
-:1056
-$sqlh = $dbh->prepare("SELECT count(*) FROM wiki WHERE name = '$db_wiki_name' AND username != 'autoglyph-bot' AND summary != '旧部品の一括更新' AND summary != '部品の一括更新'");
-$sqlh = $dbh->prepare("SELECT count(*) FROM wiki WHERE name = '$db_wiki_name' AND username != 'autoglyph-bot' AND summary != '旧部品の一括更新' AND summary != '部品の一括更新'");
-:1057
-$DEBUG .= "SELECT count(*) FROM wiki WHERE name = '$db_wiki_name' AND username != 'autoglyph-bot' AND summary != '旧部品の一括更新' AND summary != '部品の一括更新'\n";
-$DEBUG .= "SELECT count(*) FROM wiki WHERE name = '$db_wiki_name' AND username != 'autoglyph-bot' AND summary != '旧部品の一括更新' AND summary != '部品の一括更新'\n";
-:1070
-my $summary = &url_encode("簡易調整");
-my $summary = "simple adjustment";
-:1072
-$buffer .= qq|<h2>簡易調整</h2>\n<div class="texts">適切と思われるグリフをクリックしてください。続けてプレビュー状態になります。赤枠は現在プレビュー中のグリフです。</div>|;
-$buffer .= qq|<h2>Simple adjustment</h2>\n<div class="texts">Click most proper designed glyph, and become preview mode. The red frame is currently previewed glyph.</div>|;
-:1074
-$buffer .= qq|<h2>簡易調整</h2>\n<div class="texts">適切と思われるグリフをクリックしてください。プレビュー状態になります。赤枠は現在の登録グリフです。</div>|;
-$buffer .= qq|<h2>Simple adjustment</h2>\n<div class="texts">Click most proper designed glyph, and become preview mode. The red frame is currently registered glyph.</div>|;
-:1083
-$buffer .= qq|<h3>間隔<span style="font-size: 80%; font-weight: normal;">(広く ←→ 狭く)</span></h3>|;
-$buffer .= qq|<h3>Space between two components<span style="font-size: 80%; font-weight: normal;">( get wider ←→ get narrower )</span></h3>|;
-:1159
-$buffer .= qq|<h3>比率<span style="font-size: 80%; font-weight: normal;">(左を小さく ←→ 右を小さく)</span></h3>|;
-$buffer .= qq|<h3>Ratio of two components<span style="font-size: 80%; font-weight: normal;">( get smaller the left ←→ get smaller the right )</span></h3>|;
-
-!/home/kamichi/glyphwiki/makefont.pl
-:79
-if($data =~ m/(^|\r\n|\r|\n):(usecurve|曲線を使う):(yes|はい)/){
-if($data =~ m/(^|\r\n|\r|\n):(usecurve|曲線を使う):(yes|はい)/){
-:87
-if($data =~ m/(^|\r\n|\r|\n):(baseline|ベースライン):(-?[0-9]{3})/){
-if($data =~ m/(^|\r\n|\r|\n):(baseline|ベースライン):(-?[0-9]{3})/){
-
-!/home/kamichi/glyphwiki/common.pl
-:661
-$dbh->do("INSERT INTO wiki VALUES (DEFAULT, '$wikiname', COALESCE((SELECT max(version) FROM wiki WHERE name = '$wikiname'), 0) + 1, $time, '$user', 'エイリアス実体変更による自動更新', 0, '$old_buffer', '$ip', $current_related, 1)"); 
-$dbh->do("INSERT INTO wiki VALUES (DEFAULT, '$wikiname', COALESCE((SELECT max(version) FROM wiki WHERE name = '$wikiname'), 0) + 1, $time, '$user', 'Automatic update by changes of substance of aliases', 0, '$old_buffer', '$ip', $current_related, 1)"); 
-:662
-$DEBUG .= "INSERT INTO wiki VALUES (DEFAULT, '$wikiname', COALESCE((SELECT max(version) FROM wiki WHERE name = '$wikiname'), 0) + 1, $time, '$user', 'エイリアス実体変更による自動更新', 0, '$old_buffer', '$ip', $current_related, 1)\n";
-$DEBUG .= "INSERT INTO wiki VALUES (DEFAULT, '$wikiname', COALESCE((SELECT max(version) FROM wiki WHERE name = '$wikiname'), 0) + 1, $time, '$user', 'Automatic update by changes of substance of aliases', 0, '$old_buffer', '$ip', $current_related, 1)\n";
-:703
-$URL_USERNAME = &url_encode("ユーザー名");
-$URL_USERNAME = &url_encode("ユーザー名");
-:704
-$URL_SANDBOX = &url_encode("サンドボックス");
-$URL_SANDBOX = &url_encode("サンドボックス");
-:705
-$URL_SEISAKUIRAI = &url_encode("制作依頼");
-$URL_SEISAKUIRAI = &url_encode("制作依頼");
-:706
-$URL_HENSHU = &url_encode("編集の仕方");
-$URL_HENSHU = &url_encode("編集の仕方");
-:707
-$URL_YOUYAKU = &url_encode("常に要約欄に記入する");
-$URL_YOUYAKU = &url_encode("常に要約欄に記入する");
-:708
-$URL_LICENSE = &url_encode("データ・記事のライセンス");
-$URL_LICENSE = "License";
-:709
-$URL_ABOUT = &url_encode("グリフウィキについて");
-$URL_ABOUT = "About";
-:710
-$URL_PRIVACY = &url_encode("プライバシー・ポリシー");
-$URL_PRIVACY = "PrivacyPolicy";
-:711
-$URL_MENSEKI = &url_encode("免責事項");
-$URL_MENSEKI = "Disclaimers";
-:712
-$URL_RELATED = &url_encode("関連字");
-$URL_RELATED = &url_encode("関連字");
-:713
-$URL_VARIANT = &url_encode("異体字");
-$URL_VARIANT = &url_encode("異体字");
-:714
-$URL_BUG = &url_encode("バグ報告");
-$URL_BUG = &url_encode("バグ報告");
-:715
-$URL_JOIN = &url_encode("あなたにできること");
-$URL_JOIN = "JoinUs";
-:716
-$URL_FAQ = &url_encode("よくある質問");
-$URL_FAQ = "FAQ";
-:717
-$URL_HOWTO = &url_encode("どうやって使うのか");
-$URL_HOWTO = "Tutorial";
-:718
-$URL_FONT = &url_encode("フォント生成");
-$URL_FONT = &url_encode("フォント生成");
-:719
-$URL_ALIAS = &url_encode("エイリアス");
-$URL_ALIAS = &url_encode("エイリアス");
-:720
-$URL_CAPTCHA = &url_encode("キャプチャ");
-$URL_CAPTCHA = &url_encode("キャプチャ");
-:721
-$URL_NEWS = &url_encode("お知らせ");
-$URL_NEWS = "News";
-:722
-$URL_IDOBATA = &url_encode("井戸端");
-$URL_IDOBATA = &url_encode("VillagePump");
-:723
-$URL_GUIDE = &url_encode("命名ガイドライン");
-$URL_GUIDE = &url_encode("命名ガイドライン");
-:725
-$WORD_QUERY = "問い合わせ";
-$WORD_QUERY = "You searched for";
-:727
-$WORD_EDITOR = "専用エディタで編集する";
-$WORD_EDITOR = "Edit by glyph editor";
-:729
-$WORD_DESCRIPTION = "説明";
-$WORD_DESCRIPTION = "Description";
-:731
-$WORD_DEFAULT = "メインページ";
-$WORD_DEFAULT = "MainPage";
-:734
-$WORD_CONFIRM_EMAIL = "確認用コードを送信する";
-$WORD_CONFIRM_EMAIL = "Send confirmation code by email.";
-:737
-$WORD_REGISTER_EMAIL = "メールアドレスを登録する";
-$WORD_REGISTER_EMAIL = "メールアドレスを登録する";
-:740
-$WORD_NEW_PASSWORD = "新しいパスワードをメールで送る";
-$WORD_NEW_PASSWORD = "E-mail new password";
-:743
-$WORD_LOGIN = "ログイン";
-$WORD_LOGIN = "Log in";
-:747
-$WORD_FROM = "出典: フリーグリフデータベース『グリフウィキ(GlyphWiki)』";
-$WORD_FROM = "From GlyphWiki: the free glyph database";
-:749
-$TAB_KAISETSU = "解説";
-$TAB_KAISETSU = "article";
-:750
-$TAB_SPECIAL = "特別ページ";
-$TAB_SPECIAL = "special page";
-:751
-$TAB_EDIT = "編集";
-$TAB_EDIT = "edit this page";
-:752
-$TAB_VIEW_SOURCE = "ソースを表示";
-$TAB_VIEW_SOURCE = "view source";
-:753
-$TAB_GLYPH = "グリフ";
-$TAB_GLYPH = "glyph";
-:754
-$TAB_RECENT = "履歴";
-$TAB_RECENT = "history";
-:755
-$TAB_GROUP = "グループ";
-$TAB_GROUP = "group";
-:756
-$TAB_NOTE = "ノート";
-$TAB_NOTE = "discussion";
-:757
-$TAB_USER = "利用者ページ";
-$TAB_USER = "user page";
-:758
-$LABEL_RECENT = "履歴";
-$LABEL_RECENT = "hist";
-:759
-$LABEL_KAIWA = "会話";
-$LABEL_KAIWA = "Talk";
-:760
-$LABEL_USER = "利用者";
-$LABEL_USER = "User";
-:761
-$LABEL_ANONYMOUS = "匿名利用者";
-$LABEL_ANONYMOUS = "anonymous user";
-:763
-$WORD_MUSTRELATE = "関連付けるべきグリフ";
-$WORD_MUSTRELATE = "関連付けるべきグリフ";
-:767
-$WORD_HOGOKIROKU = "保護記録";
-$WORD_HOGOKIROKU = "Protection log";
-:771
-$WORD_HOGO = "保護されたページ";
-$WORD_HOGO = "Protected page";
-:775
-$WORD_SAKUJO = "削除の方針";
-$WORD_SAKUJO = "Deletion policy";
-:779
-$WORD_DELETE_LOG = "削除記録";
-$WORD_DELETE_LOG = "Deletion log";
-:783
-$WORD_ACCEPT_AND_SUBMIT = "以上の記述を完全に理解し同意したうえで投稿する";
-$WORD_ACCEPT_AND_SUBMIT = "Save page";
-:786
-$WORD_PREVIEW = "プレビューを実行";
-$WORD_PREVIEW = "Show preview";
-:790
-$WORD_KENSAKU = "検索";
-$WORD_KENSAKU = "Search";
-:794
-$WORD_HYOUJI = "表示";
-$WORD_HYOUJI = "Go";
-:806
-$label =~ s/Talk:/ノート:/;
-# no operation
-:807
-$label =~ s/GlyphWiki-talk:/GlyphWiki-ノート:/;
-# no operation
-:808
-$label =~ s/User:/利用者:/;
-# no operation
-:809
-$label =~ s/User-talk:/利用者-会話:/;
-# no operation
-:810
-$label =~ s/Group:/グループ:/;
-# no operation
-:811
-$label =~ s/Group-talk:/グループ-ノート:/;
-# no operation
-:818
-$label =~ s/利用者:/User:/;
-# no operation
-:819
-$label =~ s/利用者-会話:/User-talk:/;
-# no operation
-:820
-$label =~ s/グループ:/Group:/;
-# no operation
-:821
-$label =~ s/グループ-ノート:/Group-talk:/; 
-# no operation
-:822
-$label =~ s/GlyphWiki-ノート:/GlyphWiki-talk:/; 
-# no operation
-:823
-$label =~ s/ノート:/Talk:/;
-# no operation
-:917
-return sprintf("%04d年%d月%d日(%s) %02d:%02d", $year + 1900, $mon + 1, $mday, qw(日 月 火 水 木 金 土)[$wday], $hour, $min);
-return sprintf("%02d:%02d, %d %s %d", $hour, $min, $mday, qw(January February March April May June July August September October November December)[$mon], $year + 1900);
-:1007
-my $subject = 'Password reminder from GlyphWiki (グリフウィキからのパスワードのお知らせ)';
-my $subject = 'Password reminder from GlyphWiki';
-:1009
-どなたか($ip のIPアドレスの使用者)がグリフウィキ(http://glyphwiki.org/)
-Someone (probably you, from IP address $1)
-:1010
-のログイン用パスワードの再発行を依頼しました。
-requested that we send you a new GlyphWiki login password.
-:1012
-利用者 "$name" のパスワードを "$temp_password" に変更しました。
-The password for user "$name" is now "$temp_password".
-:1013
-ログインして別のパスワードに変更してください。
-You should log in and change your password now.
-:1359
-my $subject = 'GlyphWiki メールアドレスの確認';
-my $subject = 'GlyphWiki e-mail address confirmation';
-:1367
-どなたか(IPアドレス $ip の使用者)がこのメールアドレスを
-Someone, probably you from IP address $ip,
-:1368
-GlyphWiki のアカウント "$name" に登録しました。
-has registered an account "$name" with this e-mail address
-:1370
-このアカウントがあなたのものであるか確認してください。
-on GlyphWiki.
-:1371
-あなたの登録したアカウントであるならば、GlyphWiki
-To confirm that this account really does belong to you and activate
-:1372
-のメール通知機能を有効にするために、以下のURLにアクセスしてください:
-e-mail features on GlyphWiki, open this link in your browser:
-:1376
-もし GlyphWiki について身に覚えがない場合は、リンクを開かないでください。
-If this is *not* you, don't follow the link. This confirmation code
-:1377
-確認用コードは $expire に期限切れになります。
-will expire at $expire.
-:1680
-unshift(@tocresult, qq(<div class="toc"><h1>目次</h1>));
-unshift(@tocresult, qq(<div class="toc"><h1>Contents</h1>));
-
diff --git a/glyphwiki/注意.txt b/glyphwiki/注意.txt
deleted file mode 100644 (file)
index 49d7da5..0000000
+++ /dev/null
@@ -1 +0,0 @@
-en.index.cgi\82Ì\93ª\82Ìlang\95Ï\90\94\82Q\82Â\82Éen,en.\82ð\8eè\82Å\89Á\82¦\82é\r
diff --git a/kage.js b/kage.js
deleted file mode 100644 (file)
index 0966119..0000000
--- a/kage.js
+++ /dev/null
@@ -1,423 +0,0 @@
-function Kage(size){\r
-  // method\r
-  function makeGlyph(polygons, buhin){ // void\r
-    var glyphData = this.kBuhin.search(buhin);\r
-    this.makeGlyph2(polygons, glyphData);\r
-  }\r
-  Kage.prototype.makeGlyph = makeGlyph;\r
-  \r
-  function makeGlyph2(polygons, data){ // void\r
-      if(data != ""){\r
-         var strokesArray = this.adjustKirikuchi(this.adjustUroko2(this.adjustUroko(this.adjustKakato(this.adjustTate(this.adjustMage(this.adjustHane(this.getEachStrokes(data))))))));\r
-         for(var i = 0; i < strokesArray.length; i++){\r
-             dfDrawFont(this, polygons,\r
-                        strokesArray[i][0],\r
-                        strokesArray[i][1],\r
-                        strokesArray[i][2],\r
-                        strokesArray[i][3],\r
-                        strokesArray[i][4],\r
-                        strokesArray[i][5],\r
-                        strokesArray[i][6],\r
-                        strokesArray[i][7],\r
-                        strokesArray[i][8],\r
-                        strokesArray[i][9],\r
-                        strokesArray[i][10]);\r
-         }\r
-      }\r
-  }\r
-  Kage.prototype.makeGlyph2 = makeGlyph2;\r
-  \r
-  function makeGlyph3(data){ // void\r
-      var result = new Array();\r
-      if(data != ""){\r
-         var strokesArray = this.adjustKirikuchi(this.adjustUroko2(this.adjustUroko(this.adjustKakato(this.adjustTate(this.adjustMage(this.adjustHane(this.getEachStrokes(data))))))));\r
-         for(var i = 0; i < strokesArray.length; i++){\r
-             var polygons = new Polygons();\r
-             dfDrawFont(this, polygons,\r
-                        strokesArray[i][0],\r
-                        strokesArray[i][1],\r
-                        strokesArray[i][2],\r
-                        strokesArray[i][3],\r
-                        strokesArray[i][4],\r
-                        strokesArray[i][5],\r
-                        strokesArray[i][6],\r
-                        strokesArray[i][7],\r
-                        strokesArray[i][8],\r
-                        strokesArray[i][9],\r
-                        strokesArray[i][10]);\r
-             result.push(polygons);\r
-         }\r
-      }\r
-      return result;\r
-  }\r
-  Kage.prototype.makeGlyph3 = makeGlyph3;\r
-  \r
-  function getEachStrokes(glyphData){ // strokes array\r
-    var strokesArray = new Array();\r
-    var strokes = glyphData.split("$");\r
-    for(var i = 0; i < strokes.length; i++){\r
-      var columns = strokes[i].split(":");\r
-      if(Math.floor(columns[0]) != 99){\r
-        strokesArray.push([\r
-          Math.floor(columns[0]),\r
-          Math.floor(columns[1]),\r
-          Math.floor(columns[2]),\r
-          Math.floor(columns[3]),\r
-          Math.floor(columns[4]),\r
-          Math.floor(columns[5]),\r
-          Math.floor(columns[6]),\r
-          Math.floor(columns[7]),\r
-          Math.floor(columns[8]),\r
-          Math.floor(columns[9]),\r
-          Math.floor(columns[10])\r
-          ]);\r
-      } else {\r
-        var buhin = this.kBuhin.search(columns[7]);\r
-        if(buhin != ""){\r
-          strokesArray = strokesArray.concat(this.getEachStrokesOfBuhin(buhin,\r
-                                                  Math.floor(columns[3]),\r
-                                                  Math.floor(columns[4]),\r
-                                                  Math.floor(columns[5]),\r
-                                                  Math.floor(columns[6]),\r
-                                                  Math.floor(columns[1]),\r
-                                                  Math.floor(columns[2]),\r
-                                                  Math.floor(columns[9]),\r
-                                                  Math.floor(columns[10]))\r
-                            );\r
-        }\r
-      }\r
-    }\r
-    return strokesArray;\r
-  }\r
-  Kage.prototype.getEachStrokes = getEachStrokes;\r
-  \r
-  function getEachStrokesOfBuhin(buhin, x1, y1, x2, y2, sx, sy, sx2, sy2){\r
-    var temp = this.getEachStrokes(buhin);\r
-    var result = new Array();\r
-    var box = this.getBox(buhin);\r
-      if(sx != 0 || sy != 0){\r
-         if(sx > 100){\r
-             sx -= 200;\r
-         } else {\r
-             sx2 = 0;\r
-             sy2 = 0;\r
-         }\r
-      }\r
-    for(var i = 0; i < temp.length; i++){\r
-       if(sx != 0 || sy != 0){\r
-           temp[i][3] = stretch(sx, sx2, temp[i][3], box.minX, box.maxX);\r
-           temp[i][4] = stretch(sy, sy2, temp[i][4], box.minY, box.maxY);\r
-           temp[i][5] = stretch(sx, sx2, temp[i][5], box.minX, box.maxX);\r
-           temp[i][6] = stretch(sy, sy2,temp[i][6], box.minY, box.maxY);\r
-           if(temp[i][0] != 99){\r
-               temp[i][7] = stretch(sx, sx2, temp[i][7], box.minX, box.maxX);  \r
-               temp[i][8] = stretch(sy, sy2, temp[i][8], box.minY, box.maxY);\r
-               temp[i][9] = stretch(sx, sx2, temp[i][9], box.minX, box.maxX);\r
-               temp[i][10] = stretch(sy, sy2, temp[i][10], box.minY, box.maxY);\r
-           }\r
-       }\r
-      result.push([temp[i][0],\r
-                   temp[i][1],\r
-                   temp[i][2],\r
-                   x1 + temp[i][3] * (x2 - x1) / 200,\r
-                   y1 + temp[i][4] * (y2 - y1) / 200,\r
-                   x1 + temp[i][5] * (x2 - x1) / 200,\r
-                   y1 + temp[i][6] * (y2 - y1) / 200,\r
-                   x1 + temp[i][7] * (x2 - x1) / 200,\r
-                   y1 + temp[i][8] * (y2 - y1) / 200,\r
-                   x1 + temp[i][9] * (x2 - x1) / 200,\r
-                   y1 + temp[i][10] * (y2 - y1) / 200]);\r
-    }\r
-    return result;\r
-  }\r
-  Kage.prototype.getEachStrokesOfBuhin = getEachStrokesOfBuhin;\r
-  \r
-  function adjustHane(sa){ // strokesArray\r
-      for(var i = 0; i < sa.length; i++){\r
-         if((sa[i][0] == 1 || sa[i][0] == 2 || sa[i][0] == 6) && sa[i][2] == 4){\r
-             var lpx; // lastPointX\r
-             var lpy; // lastPointY\r
-             if(sa[i][0] == 1){\r
-                 lpx = sa[i][5];\r
-                 lpy = sa[i][6];\r
-             } else if(sa[i][0] == 2){\r
-                 lpx = sa[i][7];\r
-                 lpy = sa[i][8];\r
-             } else {\r
-                 lpx = sa[i][9];\r
-                 lpy = sa[i][10];\r
-             }\r
-             var mn = Infinity; // mostNear\r
-             if(lpx + 18 < 100){\r
-                 mn = lpx + 18;\r
-             }\r
-             for(var j = 0; j < sa.length; j++){\r
-                 if(i != j && sa[j][0] == 1 && sa[j][3] == sa[j][5] && sa[j][3] < lpx && sa[j][4] <= lpy && sa[j][6] >= lpy){\r
-                     if(lpx - sa[j][3] < 100){\r
-                         mn = Math.min(mn, lpx - sa[j][3]);\r
-                     }\r
-                 }\r
-             }\r
-             if(mn != Infinity){\r
-                 sa[i][2] += 700 - Math.floor(mn / 15) * 100; // 0-99 -> 0-700\r
-             }\r
-         }\r
-      }\r
-      return sa;\r
-  }\r
-  Kage.prototype.adjustHane = adjustHane;\r
-\r
-  function adjustUroko(strokesArray){ // strokesArray\r
-    for(var i = 0; i < strokesArray.length; i++){\r
-      if(strokesArray[i][0] == 1 && strokesArray[i][2] == 0){ // no operation for TATE\r
-        for(var k = 0; k < this.kAdjustUrokoLengthStep; k++){\r
-          var tx, ty, tlen;\r
-          if(strokesArray[i][4] == strokesArray[i][6]){ // YOKO\r
-            tx = strokesArray[i][5] - this.kAdjustUrokoLine[k];\r
-            ty = strokesArray[i][6] - 0.5;\r
-            tlen = strokesArray[i][5] - strokesArray[i][3];\r
-          } else {\r
-            var rad = Math.atan((strokesArray[i][6] - strokesArray[i][4]) / (strokesArray[i][5] - strokesArray[i][3]));\r
-            tx = strokesArray[i][5] - this.kAdjustUrokoLine[k] * Math.cos(rad) - 0.5 * Math.sin(rad);\r
-            ty = strokesArray[i][6] - this.kAdjustUrokoLine[k] * Math.sin(rad) - 0.5 * Math.cos(rad);\r
-            tlen = Math.sqrt((strokesArray[i][6] - strokesArray[i][4]) * (strokesArray[i][6] - strokesArray[i][4]) +\r
-                             (strokesArray[i][5] - strokesArray[i][3]) * (strokesArray[i][5] - strokesArray[i][3]));\r
-          }\r
-          if(tlen < this.kAdjustUrokoLength[k] ||\r
-             isCrossWithOthers(strokesArray, i, tx, ty, strokesArray[i][5], strokesArray[i][6])\r
-             ){\r
-            strokesArray[i][2] += (this.kAdjustUrokoLengthStep - k) * 100;\r
-            k = Infinity;\r
-          }\r
-        }\r
-      }\r
-    }\r
-    return strokesArray;\r
-  }\r
-  Kage.prototype.adjustUroko = adjustUroko;\r
-  \r
-  function adjustUroko2(strokesArray){ // strokesArray\r
-    for(var i = 0; i < strokesArray.length; i++){\r
-      if(strokesArray[i][0] == 1 && strokesArray[i][2] == 0 && strokesArray[i][4] == strokesArray[i][6]){\r
-        var pressure = 0;\r
-        for(var j = 0; j < strokesArray.length; j++){\r
-          if(i != j && (\r
-             (strokesArray[j][0] == 1 && strokesArray[j][4] == strokesArray[j][6] &&\r
-              !(strokesArray[i][3] + 1 > strokesArray[j][5] || strokesArray[i][5] - 1 < strokesArray[j][3]) &&\r
-              Math.abs(strokesArray[i][4] - strokesArray[j][4]) < this.kAdjustUroko2Length) ||\r
-             (strokesArray[j][0] == 3 && strokesArray[j][6] == strokesArray[j][8] &&\r
-              !(strokesArray[i][3] + 1 > strokesArray[j][7] || strokesArray[i][5] - 1 < strokesArray[j][5]) &&\r
-              Math.abs(strokesArray[i][4] - strokesArray[j][6]) < this.kAdjustUroko2Length)\r
-             )){\r
-            pressure += Math.pow(this.kAdjustUroko2Length - Math.abs(strokesArray[i][4] - strokesArray[j][6]), 1.1);\r
-          }\r
-        }\r
-        var result = Math.min(Math.floor(pressure / this.kAdjustUroko2Length), this.kAdjustUroko2Step) * 100;\r
-        if(strokesArray[i][2] < result){\r
-          strokesArray[i][2] = strokesArray[i][2] % 100 + Math.min(Math.floor(pressure / this.kAdjustUroko2Length), this.kAdjustUroko2Step) * 100;\r
-        }\r
-      }\r
-    }\r
-    return strokesArray;\r
-  }\r
-  Kage.prototype.adjustUroko2 = adjustUroko2;\r
-  \r
-  function adjustTate(strokesArray){ // strokesArray\r
-    for(var i = 0; i < strokesArray.length; i++){\r
-      if((strokesArray[i][0] == 1 || strokesArray[i][0] == 3 || strokesArray[i][0] == 7) && strokesArray[i][3] == strokesArray[i][5]){\r
-        for(var j = 0; j < strokesArray.length; j++){\r
-          if(i != j && (strokesArray[j][0] == 1 || strokesArray[j][0] == 3 || strokesArray[j][0] == 7) && strokesArray[j][3] == strokesArray[j][5] &&\r
-             !(strokesArray[i][4] + 1 > strokesArray[j][6] || strokesArray[i][6] - 1 < strokesArray[j][4]) &&\r
-             Math.abs(strokesArray[i][3] - strokesArray[j][3]) < this.kMinWidthT * this.kAdjustTateStep){\r
-            strokesArray[i][1] += (this.kAdjustTateStep - Math.floor(Math.abs(strokesArray[i][3] - strokesArray[j][3]) / this.kMinWidthT)) * 1000;\r
-            if(strokesArray[i][1] > this.kAdjustTateStep * 1000){\r
-              strokesArray[i][1] = strokesArray[i][1] % 1000 + this.kAdjustTateStep * 1000;\r
-            }\r
-          }\r
-        }\r
-      }\r
-    }\r
-    return strokesArray;\r
-  }\r
-  Kage.prototype.adjustTate = adjustTate;\r
-  \r
-  function adjustMage(strokesArray){ // strokesArray\r
-    for(var i = 0; i < strokesArray.length; i++){\r
-      if((strokesArray[i][0] == 3) && strokesArray[i][6] == strokesArray[i][8]){\r
-        for(var j = 0; j < strokesArray.length; j++){\r
-          if(i != j && (\r
-             (strokesArray[j][0] == 1 && strokesArray[j][4] == strokesArray[j][6] &&\r
-              !(strokesArray[i][5] + 1 > strokesArray[j][5] || strokesArray[i][7] - 1 < strokesArray[j][3]) &&\r
-              Math.abs(strokesArray[i][6] - strokesArray[j][4]) < this.kMinWidthT * this.kAdjustMageStep) ||\r
-             (strokesArray[j][0] == 3 && strokesArray[j][6] == strokesArray[j][8] &&\r
-              !(strokesArray[i][5] + 1 > strokesArray[j][7] || strokesArray[i][7] - 1 < strokesArray[j][5]) &&\r
-              Math.abs(strokesArray[i][6] - strokesArray[j][6]) < this.kMinWidthT * this.kAdjustMageStep)\r
-             )){\r
-            strokesArray[i][2] += (this.kAdjustMageStep - Math.floor(Math.abs(strokesArray[i][6] - strokesArray[j][6]) / this.kMinWidthT)) * 1000;\r
-            if(strokesArray[i][2] > this.kAdjustMageStep * 1000){\r
-              strokesArray[i][2] = strokesArray[i][2] % 1000 + this.kAdjustMageStep * 1000;\r
-            }\r
-          }\r
-        }\r
-      }\r
-    }\r
-    return strokesArray;\r
-  }\r
-  Kage.prototype.adjustMage = adjustMage;\r
-  \r
-  function adjustKirikuchi(strokesArray){ // strokesArray\r
-    for(var i = 0; i < strokesArray.length; i++){\r
-      if(strokesArray[i][0] == 2 && strokesArray[i][1] == 32 &&\r
-         strokesArray[i][3] > strokesArray[i][5] &&\r
-         strokesArray[i][4] < strokesArray[i][6]){\r
-        for(var j = 0; j < strokesArray.length; j++){ // no need to skip when i == j\r
-          if(strokesArray[j][0] == 1 &&\r
-             strokesArray[j][3] < strokesArray[i][3] && strokesArray[j][5] > strokesArray[i][3] &&\r
-             strokesArray[j][4] == strokesArray[i][4] && strokesArray[j][4] == strokesArray[j][6]){\r
-            strokesArray[i][1] = 132;\r
-            j = strokesArray.length;\r
-          }\r
-        }\r
-      }\r
-    }\r
-    return strokesArray;\r
-  }\r
-  Kage.prototype.adjustKirikuchi = adjustKirikuchi;\r
-  \r
-  function adjustKakato(strokesArray){ // strokesArray\r
-    for(var i = 0; i < strokesArray.length; i++){\r
-      if(strokesArray[i][0] == 1 &&\r
-         (strokesArray[i][2] == 13 || strokesArray[i][2] == 23)){\r
-        for(var k = 0; k < this.kAdjustKakatoStep; k++){\r
-          if(isCrossBoxWithOthers(strokesArray, i,\r
-                               strokesArray[i][5] - this.kAdjustKakatoRangeX / 2,\r
-                               strokesArray[i][6] + this.kAdjustKakatoRangeY[k],\r
-                               strokesArray[i][5] + this.kAdjustKakatoRangeX / 2,\r
-                               strokesArray[i][6] + this.kAdjustKakatoRangeY[k + 1])\r
-             | strokesArray[i][6] + this.kAdjustKakatoRangeY[k + 1] > 200 // adjust for baseline\r
-             | strokesArray[i][6] - strokesArray[i][4] < this.kAdjustKakatoRangeY[k + 1] // for thin box\r
-             ){\r
-            strokesArray[i][2] += (3 - k) * 100;\r
-            k = Infinity;\r
-          }\r
-        }\r
-      }\r
-    }\r
-    return strokesArray;\r
-  }\r
-  Kage.prototype.adjustKakato = adjustKakato;\r
-  \r
-  function getBox(glyph){ // minX, minY, maxX, maxY\r
-      var a = new Object();\r
-      a.minX = 200;\r
-      a.minY = 200;\r
-      a.maxX = 0;\r
-      a.maxY = 0;\r
-      \r
-      var strokes = this.getEachStrokes(glyph);\r
-      for(var i = 0; i < strokes.length; i++){\r
-         if(strokes[i][0] == 0){ continue; }\r
-         a.minX = Math.min(a.minX, strokes[i][3]);\r
-         a.maxX = Math.max(a.maxX, strokes[i][3]);\r
-         a.minY = Math.min(a.minY, strokes[i][4]);\r
-         a.maxY = Math.max(a.maxY, strokes[i][4]);\r
-         a.minX = Math.min(a.minX, strokes[i][5]);\r
-         a.maxX = Math.max(a.maxX, strokes[i][5]);\r
-         a.minY = Math.min(a.minY, strokes[i][6]);\r
-         a.maxY = Math.max(a.maxY, strokes[i][6]);\r
-         if(strokes[i][0] == 1){ continue; }\r
-         if(strokes[i][0] == 99){ continue; }\r
-         a.minX = Math.min(a.minX, strokes[i][7]);\r
-         a.maxX = Math.max(a.maxX, strokes[i][7]);\r
-         a.minY = Math.min(a.minY, strokes[i][8]);\r
-         a.maxY = Math.max(a.maxY, strokes[i][8]);\r
-         if(strokes[i][0] == 2){ continue; }\r
-         if(strokes[i][0] == 3){ continue; }\r
-         if(strokes[i][0] == 4){ continue; }\r
-         a.minX = Math.min(a.minX, strokes[i][9]);\r
-         a.maxX = Math.max(a.maxX, strokes[i][9]);\r
-         a.minY = Math.min(a.minY, strokes[i][10]);\r
-         a.maxY = Math.max(a.maxY, strokes[i][10]);\r
-      }\r
-      return a;\r
-  }\r
-  Kage.prototype.getBox = getBox;\r
-\r
-  function stretch(dp, sp, p, min, max){ // interger\r
-      var p1, p2, p3, p4;\r
-      if(p < sp + 100){\r
-         p1 = min;\r
-         p3 = min;\r
-         p2 = sp + 100;\r
-         p4 = dp + 100;\r
-      } else {\r
-         p1 = sp + 100;\r
-         p3 = dp + 100;\r
-         p2 = max;\r
-         p4 = max;\r
-      }\r
-      return Math.floor(((p - p1) / (p2 - p1)) * (p4 - p3) + p3);\r
-  }\r
-  Kage.prototype.stretch = stretch;\r
-\r
-  //properties\r
-  Kage.prototype.kMincho = 0;\r
-  Kage.prototype.kGothic = 1;\r
-  this.kShotai = this.kMincho;\r
-  \r
-  this.kRate = 100;\r
-  \r
-  if(size == 1){\r
-    this.kMinWidthY = 1.2;\r
-    this.kMinWidthT = 3.6;\r
-    this.kWidth = 3;\r
-    this.kKakato = 1.8;\r
-    this.kL2RDfatten = 1.1;\r
-    this.kMage = 6;\r
-    this.kUseCurve = 0;\r
-    \r
-    this.kAdjustKakatoL = ([8, 5, 3, 1, 0]); // for KAKATO adjustment 000,100,200,300,400\r
-    this.kAdjustKakatoR = ([4, 3, 2, 1]); // for KAKATO adjustment 000,100,200,300\r
-    this.kAdjustKakatoRangeX = 12; // check area width\r
-    this.kAdjustKakatoRangeY = ([1, 11, 14, 18]); // 3 steps of checking\r
-    this.kAdjustKakatoStep = 3; // number of steps\r
-    \r
-    this.kAdjustUrokoX = ([14, 12, 9, 7]); // for UROKO adjustment 000,100,200,300\r
-    this.kAdjustUrokoY = ([7, 6, 5, 4]); // for UROKO adjustment 000,100,200,300\r
-    this.kAdjustUrokoLength = ([13, 21, 30]); // length for checking\r
-    this.kAdjustUrokoLengthStep = 3; // number of steps\r
-    this.kAdjustUrokoLine = ([13, 15, 18]); // check for crossing. corresponds to length\r
-  } else {\r
-    this.kMinWidthY = 2;\r
-    this.kMinWidthT = 6;\r
-    this.kWidth = 5;\r
-    this.kKakato = 3;\r
-    this.kL2RDfatten = 1.1;\r
-    this.kMage = 10;\r
-    this.kUseCurve = 0;\r
-    \r
-    this.kAdjustKakatoL = ([14, 9, 5, 2, 0]); // for KAKATO adjustment 000,100,200,300,400\r
-    this.kAdjustKakatoR = ([8, 6, 4, 2]); // for KAKATO adjustment 000,100,200,300\r
-    this.kAdjustKakatoRangeX = 20; // check area width\r
-    this.kAdjustKakatoRangeY = ([1, 19, 24, 30]); // 3 steps of checking\r
-    this.kAdjustKakatoStep = 3; // number of steps\r
-    \r
-    this.kAdjustUrokoX = ([24, 20, 16, 12]); // for UROKO adjustment 000,100,200,300\r
-    this.kAdjustUrokoY = ([12, 11, 9, 8]); // for UROKO adjustment 000,100,200,300\r
-    this.kAdjustUrokoLength = ([22, 36, 50]); // length for checking\r
-    this.kAdjustUrokoLengthStep = 3; // number of steps\r
-    this.kAdjustUrokoLine = ([22, 26, 30]); // check for crossing. corresponds to length\r
-    \r
-    this.kAdjustUroko2Step = 3;\r
-    this.kAdjustUroko2Length = 40;\r
-    \r
-    this.kAdjustTateStep = 4;\r
-    \r
-    this.kAdjustMageStep = 5;\r
-  }\r
-  \r
-  this.kBuhin = new Buhin();\r
-  \r
-  return this;\r
-}\r
-\r
diff --git a/kagecd.js b/kagecd.js
deleted file mode 100755 (executable)
index 876b943..0000000
--- a/kagecd.js
+++ /dev/null
@@ -1,1296 +0,0 @@
-function cdDrawCurveU(kage, polygons, x1, y1, sx1, sy1, sx2, sy2, x2, y2, ta1, ta2){\r
-  var rad, t;\r
-  var x, y, v;\r
-  var ix, iy, ia, ib, ir;\r
-  var tt;\r
-  var delta;\r
-  var deltad;\r
-  var XX, XY, YX, YY;\r
-  var poly, poly2;\r
-  var hosomi;\r
-  var kMinWidthT, kMinWidthT2;\r
-  var a1, a2, opt1, opt2, opt3, opt4;\r
-  \r
-  if(kage.kShotai == kage.kMincho){ // mincho\r
-    a1 = ta1 % 1000;\r
-    a2 = ta2 % 100;\r
-    opt1 = Math.floor((ta1 % 10000) / 1000);\r
-    opt2 = Math.floor((ta2 % 1000) / 100);\r
-    opt3 = Math.floor(ta1 / 10000);\r
-    opt4 = Math.floor(ta2 / 1000);\r
-    \r
-    kMinWidthT = kage.kMinWidthT - opt1 / 2;\r
-    kMinWidthT2 = kage.kMinWidthT - opt4 / 2;\r
-    \r
-    switch(a1 % 100){\r
-    case 0:\r
-    case 7:\r
-      delta = -1 * kage.kMinWidthY * 0.5;\r
-      break;\r
-    case 1:\r
-    case 2: // ... must be 32\r
-    case 6:\r
-    case 22:\r
-    case 32: // changed\r
-      delta = 0;\r
-      break;\r
-    case 12:\r
-    //case 32:\r
-      delta = kage.kMinWidthY;\r
-      break;\r
-    default:\r
-      break;\r
-    }\r
-    \r
-    if(x1 == sx1){\r
-      if(y1 < sy1){ y1 = y1 - delta; }\r
-      else{ y1 = y1 + delta; }\r
-    }\r
-    else if(y1 == sy1){\r
-      if(x1 < sx1){ x1 = x1 - delta; }\r
-      else{ x1 = x1 + delta; }\r
-    }\r
-    else{\r
-      rad = Math.atan((sy1 - y1) / (sx1 - x1));\r
-      if(x1 < sx1){ v = 1; } else{ v = -1; }\r
-      x1 = x1 - delta * Math.cos(rad) * v;\r
-      y1 = y1 - delta * Math.sin(rad) * v;\r
-    }\r
-    \r
-    switch(a2 % 100){\r
-    case 0:\r
-    case 1:\r
-    case 7:\r
-    case 9:\r
-    case 15: // it can change to 15->5\r
-    case 14: // it can change to 14->4\r
-    case 17: // no need\r
-    case 5:\r
-      delta = 0;\r
-      break;\r
-    case 8: // get shorten for tail's circle\r
-      delta = -1 * kMinWidthT * 0.5;\r
-      break;\r
-    default:\r
-      break;\r
-    }\r
-    \r
-    if(sx2 == x2){\r
-      if(sy2 < y2){ y2 = y2 + delta; }\r
-      else{ y2 = y2 - delta; }\r
-    }\r
-    else if(sy2 == y2){\r
-      if(sx2 < x2){ x2 = x2 + delta; }\r
-      else{ x2 = x2 - delta; }\r
-    }\r
-    else{\r
-      rad = Math.atan((y2 - sy2) / (x2 - sx2));\r
-      if(sx2 < x2){ v = 1; } else{ v = -1; }\r
-      x2 = x2 + delta * Math.cos(rad) * v;\r
-      y2 = y2 + delta * Math.sin(rad) * v;\r
-    }\r
-    \r
-    hosomi = 0.5;\r
-    if(Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)) < 50){\r
-      hosomi += 0.4 * (1 - Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)) / 50);\r
-    }\r
-    \r
-    //---------------------------------------------------------------\r
-    \r
-    poly = new Polygon();\r
-    poly2 = new Polygon();\r
-    \r
-    if(sx1 == sx2 && sy1 == sy2){ // Spline\r
-      if(kage.kUseCurve){\r
-        // generating fatten curve -- begin\r
-        var kage2 = new Kage();\r
-        kage2.kMinWidthY = kage.kMinWidthY;\r
-        kage2.kMinWidthT = kMinWidthT;\r
-        kage2.kWidth = kage.kWidth;\r
-        kage2.kKakato = kage.kKakato;\r
-        kage2.kRate = 10;\r
-        \r
-        var curve = new Array(2); // L and R\r
-        get_candidate(kage2, curve, a1, a2, x1, y1, sx1, sy1, x2, y2, opt3, opt4);\r
-        \r
-        var dcl12_34 = new Array(2);\r
-        var dcr12_34 = new Array(2);\r
-        var dpl12_34 = new Array(2);\r
-        var dpr12_34 = new Array(2);\r
-        divide_curve(kage2, x1, y1, sx1, sy1, x2, y2, curve[0], dcl12_34, dpl12_34);\r
-        divide_curve(kage2, x1, y1, sx1, sy1, x2, y2, curve[1], dcr12_34, dpr12_34);\r
-        \r
-        var ncl1 = new Array(7);\r
-        var ncl2 = new Array(7);\r
-        find_offcurve(kage2, dcl12_34[0], dpl12_34[0][2], dpl12_34[0][3], ncl1);\r
-        find_offcurve(kage2, dcl12_34[1], dpl12_34[1][2], dpl12_34[1][3], ncl2);\r
-        \r
-        poly.push(ncl1[0], ncl1[1]);\r
-        poly.push(ncl1[2], ncl1[3], 1);\r
-        poly.push(ncl1[4], ncl1[5]);\r
-        poly.push(ncl2[2], ncl2[3], 1);\r
-        poly.push(ncl2[4], ncl2[5]);\r
-        \r
-        poly2.push(dcr12_34[0][0][0], dcr12_34[0][0][1]);\r
-        poly2.push(dpr12_34[0][2] - (ncl1[2] - dpl12_34[0][2]), dpl12_34[0][3] - (ncl1[3] - dpl12_34[0][3]), 1);\r
-        poly2.push(dcr12_34[0][dcr12_34[0].length - 1][0], dcr12_34[0][dcr12_34[0].length - 1][1]);\r
-        poly2.push(dpr12_34[1][2] - (ncl2[2] - dpl12_34[1][2]), dpl12_34[1][3] - (ncl2[3] - dpl12_34[1][3]), 1);\r
-        poly2.push(dcr12_34[1][dcr12_34[1].length - 1][0], dcr12_34[1][dcr12_34[1].length - 1][1]);\r
-        \r
-        poly2.reverse();\r
-        poly.concat(poly2);\r
-        polygons.push(poly);\r
-        // generating fatten curve -- end\r
-      } else {\r
-        for(tt = 0; tt <= 1000; tt = tt + kage.kRate){\r
-          t = tt / 1000;\r
-          \r
-          // calculate a dot\r
-          x = ((1.0 - t) * (1.0 - t) * x1 + 2.0 * t * (1.0 - t) * sx1 + t * t * x2);\r
-          y = ((1.0 - t) * (1.0 - t) * y1 + 2.0 * t * (1.0 - t) * sy1 + t * t * y2);\r
-          \r
-          // KATAMUKI of vector by BIBUN\r
-          ix = (x1 - 2.0 * sx1 + x2) * 2.0 * t + (-2.0 * x1 + 2.0 * sx1);\r
-          iy = (y1 - 2.0 * sy1 + y2) * 2.0 * t + (-2.0 * y1 + 2.0 * sy1);\r
-          \r
-          // line SUICHOKU by vector\r
-          if(ix != 0 && iy != 0){\r
-            ir = Math.atan(iy / ix * -1);\r
-            ia = Math.sin(ir) * (kMinWidthT);\r
-            ib = Math.cos(ir) * (kMinWidthT);\r
-          }\r
-          else if(ix == 0){\r
-            ia = kMinWidthT;\r
-            ib = 0;\r
-          }\r
-          else{\r
-            ia = 0;\r
-            ib = kMinWidthT;\r
-          }\r
-          \r
-          if(a1 == 7 && a2 == 0){ // L2RD: fatten\r
-            deltad = Math.pow(t, hosomi) * kage.kL2RDfatten;\r
-          }\r
-          else if(a1 == 7){\r
-            deltad = Math.pow(t, hosomi);\r
-          }\r
-          else if(a2 == 7){\r
-            deltad = Math.pow(1.0 - t, hosomi);\r
-          }\r
-          else if(opt3 > 0 || opt4 > 0){\r
-              deltad = ((kage.kMinWidthT - opt3 / 2) - (opt4 - opt3) / 2 * t) / kage.kMinWidthT;\r
-          }\r
-          else{ deltad = 1; }\r
-          \r
-          if(deltad < 0.15){\r
-            deltad = 0.15;\r
-          }\r
-          ia = ia * deltad;\r
-          ib = ib * deltad;\r
-          \r
-          //reverse if vector is going 2nd/3rd quadrants\r
-          if(ix <= 0){\r
-            ia = ia * -1;\r
-            ib = ib * -1;\r
-          }\r
-          \r
-          //copy to polygon structure\r
-          poly.push(x - ia, y - ib);\r
-          poly2.push(x + ia, y + ib);\r
-        }\r
-        \r
-        // suiheisen ni setsuzoku\r
-        if(a1 == 132){\r
-          var index = 0;\r
-          while(true){\r
-            if(poly2.array[index].y <= y1 && y1 <= poly2.array[index + 1].y){\r
-              break;\r
-            }\r
-            index++;\r
-          }\r
-          newx1 = poly2.array[index + 1].x + (poly2.array[index].x - poly2.array[index + 1].x) *\r
-            (poly2.array[index + 1].y - y1) / (poly2.array[index + 1].y - poly2.array[index].y);\r
-          newy1 = y1;\r
-          newx2 = poly.array[0].x + (poly.array[0].x - poly.array[1].x) * (poly.array[0].y - y1) /\r
-            (poly.array[1].y - poly.array[0].y);\r
-          newy2 = y1;\r
-          \r
-          for(var i = 0; i < index; i++){\r
-            poly2.shift();\r
-          }\r
-          poly2.set(0, newx1, newy1);\r
-          poly.unshift(newx2, newy2);\r
-        }\r
-        \r
-        // suiheisen ni setsuzoku 2\r
-        if(a1 == 22 && y1 > y2){\r
-          var index = 0;\r
-          while(true){\r
-            if(poly2.array[index].y <= y1 && y1 <= poly2.array[index + 1].y){\r
-              break;\r
-            }\r
-            index++;\r
-          }\r
-          newx1 = poly2.array[index + 1].x + (poly2.array[index].x - poly2.array[index + 1].x) *\r
-            (poly2.array[index + 1].y - y1) / (poly2.array[index + 1].y - poly2.array[index].y);\r
-          newy1 = y1;\r
-          newx2 = poly.array[0].x + (poly.array[0].x - poly.array[1].x - 1) * (poly.array[0].y - y1) /\r
-            (poly.array[1].y - poly.array[0].y);\r
-          newy2 = y1 + 1;\r
-          \r
-          for(var i = 0; i < index; i++){\r
-            poly2.shift();\r
-          }\r
-          poly2.set(0, newx1, newy1);\r
-          poly.unshift(newx2, newy2);\r
-        }\r
-        \r
-        poly2.reverse();\r
-        poly.concat(poly2);\r
-        polygons.push(poly);\r
-      }\r
-    } else { // Bezier\r
-      for(tt = 0; tt <= 1000; tt = tt + kage.kRate){\r
-        t = tt / 1000;\r
-        \r
-        // calculate a dot\r
-        x = (1.0 - t) * (1.0 - t) * (1.0 - t) * x1 + 3.0 * t * (1.0 - t) * (1.0 - t) * sx1 + 3 * t * t * (1.0 - t) * sx2 + t * t * t * x2;\r
-        y = (1.0 - t) * (1.0 - t) * (1.0 - t) * y1 + 3.0 * t * (1.0 - t) * (1.0 - t) * sy1 + 3 * t * t * (1.0 - t) * sy2 + t * t * t * y2;\r
-        // KATAMUKI of vector by BIBUN\r
-        ix = t * t * (-3 * x1 + 9 * sx1 + -9 * sx2 + 3 * x2) + t * (6 * x1 + -12 * sx1 + 6 * sx2) + -3 * x1 + 3 * sx1;\r
-        iy = t * t * (-3 * y1 + 9 * sy1 + -9 * sy2 + 3 * y2) + t * (6 * y1 + -12 * sy1 + 6 * sy2) + -3 * y1 + 3 * sy1;\r
-        \r
-        // line SUICHOKU by vector\r
-        if(ix != 0 && iy != 0){\r
-          ir = Math.atan(iy / ix * -1);\r
-          ia = Math.sin(ir) * (kMinWidthT);\r
-          ib = Math.cos(ir) * (kMinWidthT);\r
-        }\r
-        else if(ix == 0){\r
-          ia = kMinWidthT;\r
-          ib = 0;\r
-        }\r
-        else{\r
-          ia = 0;\r
-          ib = kMinWidthT;\r
-        }\r
-        \r
-        if(a1 == 7 && a2 == 0){ // L2RD: fatten\r
-          deltad = Math.pow(t, hosomi) * kage.kL2RDfatten;\r
-        }\r
-        else if(a1 == 7){\r
-          deltad = Math.pow(t, hosomi);\r
-          deltad = Math.pow(deltad, 0.7); // make fatten\r
-        }\r
-        else if(a2 == 7){\r
-          deltad = Math.pow(1.0 - t, hosomi);\r
-        }\r
-        else{ deltad = 1; }\r
-        \r
-        if(deltad < 0.15){\r
-          deltad = 0.15;\r
-        }\r
-        ia = ia * deltad;\r
-        ib = ib * deltad;\r
-        \r
-        //reverse if vector is going 2nd/3rd quadrants\r
-        if(ix <= 0){\r
-          ia = ia * -1;\r
-          ib = ib * -1;\r
-        }\r
-        \r
-        //copy to polygon structure\r
-        poly.push(x - ia, y - ib);\r
-        poly2.push(x + ia, y + ib);\r
-      }\r
-      \r
-      // suiheisen ni setsuzoku\r
-      if(a1 == 132){\r
-        var index = 0;\r
-        while(true){\r
-          if(poly2.array[index].y <= y1 && y1 <= poly2.array[index + 1].y){\r
-            break;\r
-          }\r
-          index++;\r
-        }\r
-        newx1 = poly2.array[index + 1].x + (poly2.array[index].x - poly2.array[index + 1].x) *\r
-          (poly2.array[index + 1].y - y1) / (poly2.array[index + 1].y - poly2.array[index].y);\r
-        newy1 = y1;\r
-        newx2 = poly.array[0].x + (poly.array[0].x - poly.array[1].x) * (poly.array[0].y - y1) /\r
-          (poly.array[1].y - poly.array[0].y);\r
-        newy2 = y1;\r
-        \r
-        for(var i = 0; i < index; i++){\r
-          poly2.shift();\r
-        }\r
-        poly2.set(0, newx1, newy1);\r
-        poly.unshift(newx2, newy2);\r
-      }\r
-      \r
-      // suiheisen ni setsuzoku 2\r
-      if(a1 == 22){\r
-        if(x1 > sx1){\r
-          var index = 0;\r
-          while(true){\r
-            if(poly2.array[index].y <= y1 && y1 <= poly2.array[index + 1].y){\r
-              break;\r
-            }\r
-            index++;\r
-          }\r
-          newx1 = poly2.array[index + 1].x + (poly2.array[index].x - poly2.array[index + 1].x) *\r
-            (poly2.array[index + 1].y - y1) / (poly2.array[index + 1].y - poly2.array[index].y);\r
-          newy1 = y1;\r
-          newx2 = poly.array[0].x + (poly.array[0].x - poly.array[1].x - 1) * (poly.array[0].y - y1) /\r
-            (poly.array[1].y - poly.array[0].y);\r
-          newy2 = y1 + 1;\r
-          \r
-          for(var i = 0; i < index; i++){\r
-            poly2.shift();\r
-          }\r
-          poly2.set(0, newx1, newy1);\r
-          poly.unshift(newx2, newy2);\r
-        }\r
-      }\r
-      \r
-      poly2.reverse();\r
-      poly.concat(poly2);\r
-      polygons.push(poly);\r
-    }\r
-    \r
-    //process for head of stroke\r
-    rad = Math.atan((sy1 - y1) / (sx1 - x1));\r
-    if(x1 < sx1){ v = 1; } else{ v = -1; }\r
-    XX = Math.sin(rad) * v;\r
-    XY = Math.cos(rad) * v * -1;\r
-    YX = Math.cos(rad) * v;\r
-    YY = Math.sin(rad) * v;\r
-    \r
-    if(a1 == 12){\r
-      if(x1 == x2){\r
-        poly= new Polygon();\r
-        poly.push(x1 - kMinWidthT, y1);\r
-        poly.push(x1 + kMinWidthT, y1);\r
-        poly.push(x1 - kMinWidthT, y1 - kMinWidthT);\r
-        polygons.push(poly);\r
-      }\r
-      else{\r
-        poly = new Polygon();\r
-        poly.push(x1 - kMinWidthT * XX, y1 - kMinWidthT * XY);\r
-        poly.push(x1 + kMinWidthT * XX, y1 + kMinWidthT * XY);\r
-        poly.push(x1 - kMinWidthT * XX - kMinWidthT * YX, y1 - kMinWidthT * XY - kMinWidthT * YY);\r
-        polygons.push(poly);\r
-      }\r
-    }\r
-    \r
-    var type;\r
-    var pm = 0;\r
-    if(a1 == 0){\r
-      if(y1 <= y2){ //from up to bottom\r
-        type = (Math.atan2(Math.abs(y1 - sy1), Math.abs(x1 - sx1)) / Math.PI * 2 - 0.4);\r
-        if(type > 0){\r
-          type = type * 2;\r
-        } else {\r
-          type = type * 16;\r
-        }\r
-        if(type < 0){\r
-          pm = -1;\r
-        } else {\r
-          pm = 1;\r
-        }\r
-        if(x1 == sx1){\r
-          poly = new Polygon();\r
-          poly.push(x1 - kMinWidthT, y1 + 1);\r
-          poly.push(x1 + kMinWidthT, y1);\r
-          poly.push(x1 - kMinWidthT * pm, y1 - kage.kMinWidthY * type * pm);\r
-          //if(x1 > x2){\r
-          //  poly.reverse();\r
-          //}\r
-          polygons.push(poly);\r
-        }\r
-        else{\r
-          poly = new Polygon();\r
-          poly.push(x1 - kMinWidthT * XX + 1 * YX, y1 - kMinWidthT * XY + 1 * YY);\r
-          poly.push(x1 + kMinWidthT * XX, y1 + kMinWidthT * XY);\r
-          poly.push(x1 - kMinWidthT * pm * XX - kage.kMinWidthY * type * pm * YX, y1 - kMinWidthT * pm * XY - kage.kMinWidthY * type * pm * YY);\r
-          //if(x1 > x2){\r
-          //  poly.reverse();\r
-          //}\r
-          polygons.push(poly);\r
-        }\r
-      }\r
-      else{ //bottom to up\r
-        if(x1 == sx1){\r
-          poly = new Polygon();\r
-          poly.push(x1 - kMinWidthT, y1);\r
-          poly.push(x1 + kMinWidthT, y1);\r
-          poly.push(x1 + kMinWidthT, y1 - kage.kMinWidthY);\r
-          polygons.push(poly);\r
-        }\r
-        else{\r
-          poly = new Polygon();\r
-          poly.push(x1 - kMinWidthT * XX, y1 - kMinWidthT * XY);\r
-          poly.push(x1 + kMinWidthT * XX, y1 + kMinWidthT * XY);\r
-          poly.push(x1 + kMinWidthT * XX - kage.kMinWidthY * YX, y1 + kMinWidthT * XY - kage.kMinWidthY * YY);\r
-          //if(x1 < x2){\r
-          //  poly.reverse();\r
-          //}\r
-          polygons.push(poly);\r
-        }\r
-      }\r
-    }\r
-    \r
-    if(a1 == 22){ //box's up-right corner, any time same degree\r
-      poly = new Polygon();\r
-      poly.push(x1 - kMinWidthT, y1 - kage.kMinWidthY);\r
-      poly.push(x1, y1 - kage.kMinWidthY - kage.kWidth);\r
-      poly.push(x1 + kMinWidthT + kage.kWidth, y1 + kage.kMinWidthY);\r
-      poly.push(x1 + kMinWidthT, y1 + kMinWidthT - 1);\r
-      poly.push(x1 - kMinWidthT, y1 + kMinWidthT + 4);\r
-      polygons.push(poly);\r
-    }\r
-    \r
-    if(a1 == 0){ //beginning of the stroke\r
-      if(y1 <= y2){ //from up to bottom\r
-        if(pm > 0){\r
-          type = 0;\r
-        }\r
-        var move = kage.kMinWidthY * type * pm;\r
-        if(x1 == sx1){\r
-          poly = new Polygon();\r
-          poly.push(x1 + kMinWidthT, y1 - move);\r
-          poly.push(x1 + kMinWidthT * 1.5, y1 + kage.kMinWidthY - move);\r
-          poly.push(x1 + kMinWidthT - 2, y1 + kage.kMinWidthY * 2 + 1);\r
-          polygons.push(poly);\r
-        }\r
-        else{\r
-          poly = new Polygon();\r
-          poly.push(x1 + kMinWidthT * XX - move * YX,\r
-                    y1 + kMinWidthT * XY - move * YY);\r
-          poly.push(x1 + kMinWidthT * 1.5 * XX + (kage.kMinWidthY - move * 1.2) * YX,\r
-                    y1 + kMinWidthT * 1.5 * XY + (kage.kMinWidthY - move * 1.2) * YY);\r
-          poly.push(x1 + (kMinWidthT - 2) * XX + (kage.kMinWidthY * 2 - move * 0.8 + 1) * YX,\r
-                    y1 + (kMinWidthT - 2) * XY + (kage.kMinWidthY * 2 - move * 0.8 + 1) * YY);\r
-          //if(x1 < x2){\r
-          //  poly.reverse();\r
-          //}\r
-          polygons.push(poly);\r
-        }\r
-      }\r
-      else{ //from bottom to up\r
-        if(x1 == sx1){\r
-          poly = new Polygon();\r
-          poly.push(x1 - kMinWidthT, y1);\r
-          poly.push(x1 - kMinWidthT * 1.5, y1 + kage.kMinWidthY);\r
-          poly.push(x1 - kMinWidthT * 0.5, y1 + kage.kMinWidthY * 3);\r
-          polygons.push(poly);\r
-        }\r
-        else{\r
-          poly = new Polygon();\r
-          poly.push(x1 - kMinWidthT * XX, y1 - kMinWidthT * XY);\r
-          poly.push(x1 - kMinWidthT * 1.5 * XX + kage.kMinWidthY * YX, y1 + kage.kMinWidthY * YY - kMinWidthT * 1.5 * XY);\r
-          poly.push(x1 - kMinWidthT * 0.5 * XX + kage.kMinWidthY * 3 * YX, y1 + kage.kMinWidthY * 3 * YY - kMinWidthT * 0.5 * XY);\r
-          //if(x1 < x2){\r
-          //  poly.reverse();\r
-          //}\r
-          polygons.push(poly);\r
-        }\r
-      }\r
-    }\r
-    \r
-    //process for tail\r
-    rad = Math.atan((y2 - sy2) / (x2 - sx2));\r
-    if(sx2 < x2){ v = 1; } else{ v = -1; }\r
-    YX = Math.sin(rad) * v * -1;\r
-    YY = Math.cos(rad) * v;\r
-    XX = Math.cos(rad) * v;\r
-    XY = Math.sin(rad) * v;\r
-    \r
-    if(a2 == 1 || a2 == 8 || a2 == 15){ //the last filled circle ... it can change 15->5\r
-      if(sx2 == x2){\r
-        poly = new Polygon();\r
-        if(kage.kUseCurve){\r
-          // by curve path\r
-          poly.push(x2 - kMinWidthT2, y2);\r
-          poly.push(x2 - kMinWidthT2 * 0.9, y2 + kMinWidthT2 * 0.9, 1);\r
-          poly.push(x2, y2 + kMinWidthT2);\r
-          poly.push(x2 + kMinWidthT2 * 0.9, y2 + kMinWidthT2 * 0.9, 1);\r
-          poly.push(x2 + kMinWidthT2, y2);\r
-        } else {\r
-          // by polygon\r
-          poly.push(x2 - kMinWidthT2, y2);\r
-          poly.push(x2 - kMinWidthT2 * 0.7, y2 + kMinWidthT2 * 0.7);\r
-          poly.push(x2, y2 + kMinWidthT2);\r
-          poly.push(x2 + kMinWidthT2 * 0.7, y2 + kMinWidthT2 * 0.7);\r
-          poly.push(x2 + kMinWidthT2, y2);\r
-        }\r
-        polygons.push(poly);\r
-      }\r
-      else if(sy2 == y2){\r
-        poly = new Polygon();\r
-        if(kage.kUseCurve){\r
-          // by curve path\r
-          poly.push(x2, y2 - kMinWidthT2);\r
-          poly.push(x2 + kMinWidthT2 * 0.9, y2 - kMinWidthT2 * 0.9, 1);\r
-          poly.push(x2 + kMinWidthT2, y2);\r
-          poly.push(x2 + kMinWidthT2 * 0.9, y2 + kMinWidthT2 * 0.9, 1);\r
-          poly.push(x2, y2 + kMinWidthT2);\r
-        } else {\r
-          // by polygon\r
-          poly.push(x2, y2 - kMinWidthT2);\r
-          poly.push(x2 + kMinWidthT2 * 0.7, y2 - kMinWidthT2 * 0.7);\r
-          poly.push(x2 + kMinWidthT2, y2);\r
-          poly.push(x2 + kMinWidthT2 * 0.7, y2 + kMinWidthT2 * 0.7);\r
-          poly.push(x2, y2 + kMinWidthT2);\r
-        }\r
-        polygons.push(poly);\r
-      }\r
-      else{\r
-        poly = new Polygon();\r
-        if(kage.kUseCurve){\r
-          poly.push(x2 + Math.sin(rad) * kMinWidthT2 * v, y2 - Math.cos(rad) * kMinWidthT2 * v);\r
-          poly.push(x2 + Math.cos(rad) * kMinWidthT2 * 0.9 * v + Math.sin(rad) * kMinWidthT2 * 0.9 * v,\r
-                    y2 + Math.sin(rad) * kMinWidthT2 * 0.9 * v - Math.cos(rad) * kMinWidthT2 * 0.9 * v, 1);\r
-          poly.push(x2 + Math.cos(rad) * kMinWidthT2 * v, y2 + Math.sin(rad) * kMinWidthT2 * v);\r
-          poly.push(x2 + Math.cos(rad) * kMinWidthT2 * 0.9 * v - Math.sin(rad) * kMinWidthT2 * 0.9 * v,\r
-                    y2 + Math.sin(rad) * kMinWidthT2 * 0.9 * v + Math.cos(rad) * kMinWidthT2 * 0.9 * v, 1);\r
-          poly.push(x2 - Math.sin(rad) * kMinWidthT2 * v, y2 + Math.cos(rad) * kMinWidthT2 * v);\r
-        } else {\r
-          poly.push(x2 + Math.sin(rad) * kMinWidthT2 * v, y2 - Math.cos(rad) * kMinWidthT2 * v);\r
-          poly.push(x2 + Math.cos(rad) * kMinWidthT2 * 0.7 * v + Math.sin(rad) * kMinWidthT2 * 0.7 * v,\r
-                    y2 + Math.sin(rad) * kMinWidthT2 * 0.7 * v - Math.cos(rad) * kMinWidthT2 * 0.7 * v);\r
-          poly.push(x2 + Math.cos(rad) * kMinWidthT2 * v, y2 + Math.sin(rad) * kMinWidthT2 * v);\r
-          poly.push(x2 + Math.cos(rad) * kMinWidthT2 * 0.7 * v - Math.sin(rad) * kMinWidthT2 * 0.7 * v,\r
-                    y2 + Math.sin(rad) * kMinWidthT2 * 0.7 * v + Math.cos(rad) * kMinWidthT2 * 0.7 * v);\r
-          poly.push(x2 - Math.sin(rad) * kMinWidthT2 * v, y2 + Math.cos(rad) * kMinWidthT2 * v);\r
-        }\r
-        polygons.push(poly);\r
-      }\r
-    }\r
-    \r
-    if(a2 == 9 || (a1 == 7 && a2 == 0)){ // Math.sinnyu & L2RD Harai ... no need for a2=9\r
-      var type = (Math.atan2(Math.abs(y2 - sy2), Math.abs(x2 - sx2)) / Math.PI * 2 - 0.6);\r
-      if(type > 0){\r
-        type = type * 8;\r
-      } else {\r
-        type = type * 3;\r
-      }\r
-      var pm = 0;\r
-      if(type < 0){\r
-        pm = -1;\r
-      } else {\r
-        pm = 1;\r
-      }\r
-      if(sy2 == y2){\r
-        poly = new Polygon();\r
-        poly.push(x2, y2 + kMinWidthT * kage.kL2RDfatten);\r
-        poly.push(x2, y2 - kMinWidthT * kage.kL2RDfatten);\r
-        poly.push(x2 + kMinWidthT * kage.kL2RDfatten * Math.abs(type), y2 + kMinWidthT * kage.kL2RDfatten * pm);\r
-        polygons.push(poly);\r
-      }\r
-      else{\r
-        poly = new Polygon();\r
-        poly.push(x2 + kMinWidthT * kage.kL2RDfatten * YX, y2 + kMinWidthT * kage.kL2RDfatten * YY);\r
-        poly.push(x2 - kMinWidthT * kage.kL2RDfatten * YX, y2 - kMinWidthT * kage.kL2RDfatten * YY);\r
-        poly.push(x2 + kMinWidthT * kage.kL2RDfatten * Math.abs(type) * XX + kMinWidthT * kage.kL2RDfatten * pm * YX,\r
-                  y2 + kMinWidthT * kage.kL2RDfatten * Math.abs(type) * XY + kMinWidthT * kage.kL2RDfatten * pm * YY);\r
-        polygons.push(poly);\r
-      }\r
-    }\r
-    \r
-    if(a2 == 15){ //jump up ... it can change 15->5\r
-      // anytime same degree\r
-      poly = new Polygon();\r
-      if(y1 < y2){\r
-        poly.push(x2, y2 - kMinWidthT + 1);\r
-        poly.push(x2 + 2, y2 - kMinWidthT - kage.kWidth * 5);\r
-        poly.push(x2, y2 - kMinWidthT - kage.kWidth * 5);\r
-        poly.push(x2 - kMinWidthT, y2 - kMinWidthT + 1);\r
-      } else {\r
-        poly.push(x2, y2 + kMinWidthT - 1);\r
-        poly.push(x2 - 2, y2 + kMinWidthT + kage.kWidth * 5);\r
-        poly.push(x2, y2 + kMinWidthT + kage.kWidth * 5);\r
-        poly.push(x2 + kMinWidthT, y2 + kMinWidthT - 1);\r
-      }\r
-      polygons.push(poly);\r
-    }\r
-    \r
-    if(a2 == 14){ //jump to left, allways go left\r
-      poly = new Polygon();\r
-      poly.push(x2, y2);\r
-      poly.push(x2, y2 - kMinWidthT);\r
-      poly.push(x2 - kage.kWidth * 4 * Math.min(1 - opt2 / 10, Math.pow(kMinWidthT / kage.kMinWidthT, 3)), y2 - kMinWidthT);\r
-      poly.push(x2 - kage.kWidth * 4 * Math.min(1 - opt2 / 10, Math.pow(kMinWidthT / kage.kMinWidthT, 3)), y2 - kMinWidthT * 0.5);\r
-      //poly.reverse();\r
-      polygons.push(poly);\r
-    }\r
-  }\r
-  else{ //gothic\r
-    if(a1 % 10 == 2){\r
-      if(x1 == sx1){\r
-        if(y1 < sy1){ y1 = y1 - kage.kWidth; } else{ y1 = y1 + kage.kWidth; }\r
-      }\r
-      else if(y1 == sy1){\r
-        if(x1 < sx1){ x1 = x1 - kage.kWidth; } else{ x1 = x1 + kage.kWidth; }\r
-      }\r
-      else{\r
-        rad = Math.atan((sy1 - y1) / (sx1 - x1));\r
-        if(x1 < sx1){ v = 1; } else{ v = -1; }\r
-        x1 = x1 - kage.kWidth * Math.cos(rad) * v;\r
-        y1 = y1 - kage.kWidth * Math.sin(rad) * v;\r
-      }\r
-    }\r
-    \r
-    if(a1 % 10 == 3){\r
-      if(x1 == sx1){\r
-        if(y1 < sy1){\r
-          y1 = y1 - kage.kWidth * kage.kKakato;\r
-        }\r
-        else{\r
-          y1 = y1 + kage.kWidth * kage.kKakato;\r
-        }\r
-      }\r
-      else if(y1 == sy1){\r
-        if(x1 < sx1){\r
-          x1 = x1 - kage.kWidth * kage.kKakato;\r
-        }\r
-        else{\r
-          x1 = x1 + kage.kWidth * kage.kKakato;\r
-        }\r
-      }\r
-      else{\r
-        rad = Math.atan((sy1 - y1) / (sx1 - x1));\r
-        if(x1 < sx1){ v = 1; } else{ v = -1; }\r
-        x1 = x1 - kage.kWidth * Math.cos(rad) * v * kage.kKakato;\r
-        y1 = y1 - kage.kWidth * Math.sin(rad) * v * kage.kKakato;\r
-      }\r
-    }\r
-    if(a2 % 10 == 2){\r
-      if(sx2 == x2){\r
-        if(sy2 < y2){ y2 = y2 + kage.kWidth; } else{ y2 = y2 - kage.kWidth; }\r
-      }\r
-      else if(sy2 == y2){\r
-        if(sx2 < x2){ x2 = x2 + kage.kWidth; } else{ x2 = x2 - kage.kWidth; }\r
-      }\r
-      else{\r
-        rad = Math.atan((y2 - sy2) / (x2 - sx2));\r
-        if(sx2 < x2){ v = 1; } else{ v = -1; }\r
-        x2 = x2 + kage.kWidth * Math.cos(rad) * v;\r
-        y2 = y2 + kage.kWidth * Math.sin(rad) * v;\r
-      }\r
-    }\r
-    \r
-    if(a2 % 10 == 3){\r
-      if(sx2 == x2){\r
-        if(sy2 < y2){\r
-          y2 = y2 + kage.kWidth * kage.kKakato;\r
-        }\r
-        else{\r
-          y2 = y2 - kage.kWidth * kage.kKakato;\r
-        }\r
-      }\r
-      else if(sy2 == y2){\r
-        if(sx2 < x2){\r
-          x2 = x2 + kage.kWidth * kage.kKakato;\r
-        }\r
-        else{\r
-          x2 = x2 - kage.kWidth * kage.kKakato;\r
-        }\r
-      }\r
-      else{\r
-        rad = Math.atan((y2 - sy2) / (x2 - sx2));\r
-        if(sx2 < x2){ v = 1; } else{ v = -1; }\r
-        x2 = x2 + kage.kWidth * Math.cos(rad) * v * kage.kKakato;\r
-        y2 = y2 + kage.kWidth * Math.sin(rad) * v * kage.kKakato;\r
-      }\r
-    }\r
-    \r
-    poly = new Polygon();\r
-    poly2 = new Polygon();\r
-    \r
-    for(tt = 0; tt <= 1000; tt = tt + kage.kRate){\r
-      t = tt / 1000;\r
-      \r
-      if(sx1 == sx2 && sy1 == sy2){\r
-        //calculating each point\r
-        x = ((1.0 - t) * (1.0 - t) * x1 + 2.0 * t * (1.0 - t) * sx1 + t * t * x2);\r
-        y = ((1.0 - t) * (1.0 - t) * y1 + 2.0 * t * (1.0 - t) * sy1 + t * t * y2);\r
-        \r
-        //SESSEN NO KATAMUKI NO KEISAN(BIBUN)\r
-        ix = (x1 - 2.0 * sx1 + x2) * 2.0 * t + (-2.0 * x1 + 2.0 * sx1);\r
-        iy = (y1 - 2.0 * sy1 + y2) * 2.0 * t + (-2.0 * y1 + 2.0 * sy1);\r
-      } else {\r
-      }\r
-      //SESSEN NI SUICHOKU NA CHOKUSEN NO KEISAN\r
-      if(kage.kShotai == kage.kMincho){ //always false ?\r
-        if(ix != 0 && iy != 0){\r
-          ir = Math.atan(iy / ix * -1.0);\r
-          ia = Math.sin(ir) * kage.kMinWidthT;\r
-          ib = Math.cos(ir) * kage.kMinWidthT;\r
-        }\r
-        else if(ix == 0){\r
-          ia = kage.kMinWidthT;\r
-          ib = 0;\r
-        }\r
-        else{\r
-          ia = 0;\r
-          ib = kage.kMinWidthT;\r
-        }\r
-        ia = ia * Math.sqrt(1.0 - t);\r
-        ib = ib * Math.sqrt(1.0 - t);\r
-      }\r
-      else{\r
-        if(ix != 0 && iy != 0){\r
-          ir = Math.atan(iy / ix * -1.0);\r
-          ia = Math.sin(ir) * kage.kWidth;\r
-          ib = Math.cos(ir) * kage.kWidth;\r
-        }\r
-        else if(ix == 0){\r
-          ia = kage.kWidth;\r
-          ib = 0;\r
-        }\r
-        else{\r
-          ia = 0;\r
-          ib = kage.kWidth;\r
-        }\r
-      }\r
-      \r
-      //reverse if vector is going 2nd/3rd quadrants\r
-      if(ix <= 0){\r
-        ia = ia * -1;\r
-        ib = ib * -1;\r
-      }\r
-      \r
-      //save to polygon\r
-      poly.push(x - ia, y - ib);\r
-      poly2.push(x + ia, y + ib);\r
-    }\r
-    \r
-    poly2.reverse();\r
-    poly.concat(poly2);\r
-    polygons.push(poly);\r
-  }\r
-}\r
-\r
-function cdDrawBezier(kage, polygons, x1, y1, x2, y2, x3, y3, x4, y4, a1, a2){\r
-  cdDrawCurveU(kage, polygons, x1, y1, x2, y2, x3, y3, x4, y4, a1, a2);\r
-}\r
-\r
-function cdDrawCurve(kage, polygons, x1, y1, x2, y2, x3, y3, a1, a2){\r
-  cdDrawCurveU(kage, polygons, x1, y1, x2, y2, x2, y2, x3, y3, a1, a2);\r
-}\r
-\r
-function cdDrawLine(kage, polygons, tx1, ty1, tx2, ty2, ta1, ta2){\r
-  var rad;\r
-  var v, x1, y1, x2, y2;\r
-  var a1, a2, opt1, opt2;\r
-  var XX, XY, YX, YY;\r
-  var poly;\r
-  var kMinWidthT;\r
-  \r
-  if(kage.kShotai == kage.kMincho){ //mincho\r
-    x1 = tx1;\r
-    y1 = ty1;\r
-    x2 = tx2;\r
-    y2 = ty2;\r
-    a1 = ta1 % 1000;\r
-    a2 = ta2 % 100;\r
-    opt1 = Math.floor(ta1 / 1000);\r
-    opt2 = Math.floor(ta2 / 100);\r
-    \r
-    kMinWidthT = kage.kMinWidthT - opt1 / 2;\r
-    \r
-    if(x1 == x2){ //if TATE stroke, use y-axis\r
-      poly = new Polygon(4);\r
-      switch(a1){\r
-      case 0:\r
-        poly.set(3, x1 - kMinWidthT, y1 - kage.kMinWidthY / 2);\r
-        poly.set(0, x1 + kMinWidthT, y1 + kage.kMinWidthY / 2);\r
-        break;\r
-      case 1:\r
-      case 6: //... no need\r
-      case 22:\r
-        poly.set(3, x1 - kMinWidthT, y1);\r
-        poly.set(0, x1 + kMinWidthT, y1);\r
-        break;\r
-      case 12:\r
-        poly.set(3, x1 - kMinWidthT, y1 - kage.kMinWidthY - kMinWidthT);\r
-        poly.set(0, x1 + kMinWidthT, y1 - kage.kMinWidthY);\r
-        break;\r
-      case 32:\r
-        poly.set(3, x1 - kMinWidthT, y1 - kage.kMinWidthY);\r
-        poly.set(0, x1 + kMinWidthT, y1 - kage.kMinWidthY);\r
-        break;\r
-      }\r
-      \r
-      switch(a2){\r
-      case 0:\r
-        if(a1 == 6){ //KAGI's tail ... no need\r
-          poly.set(2, x2 - kMinWidthT, y2);\r
-          poly.set(1, x2 + kMinWidthT, y2);\r
-        }\r
-        else{\r
-          poly.set(2, x2 - kMinWidthT, y2 + kMinWidthT / 2);\r
-          poly.set(1, x2 + kMinWidthT, y2 - kMinWidthT / 2);\r
-        }\r
-        break;\r
-      case 1:\r
-        poly.set(2, x2 - kMinWidthT, y2);\r
-        poly.set(1, x2 + kMinWidthT, y2);\r
-        break;\r
-      case 13:\r
-        poly.set(2, x2 - kMinWidthT, y2 + kage.kAdjustKakatoL[opt2] + kMinWidthT);\r
-        poly.set(1, x2 + kMinWidthT, y2 + kage.kAdjustKakatoL[opt2]);\r
-        break;\r
-      case 23:\r
-       poly.set(2, x2 - kMinWidthT, y2 + kage.kAdjustKakatoR[opt2] + kMinWidthT);\r
-        poly.set(1, x2 + kMinWidthT, y2 + kage.kAdjustKakatoR[opt2]);\r
-       break;\r
-      case 24: //for T/H design\r
-        poly.set(2, x2 - kMinWidthT, y2 + kage.kMinWidthY);\r
-        poly.set(1, x2 + kMinWidthT, y2 + kage.kMinWidthY);\r
-       break;\r
-      case 32:\r
-        poly.set(2, x2 - kMinWidthT, y2 + kage.kMinWidthY);\r
-        poly.set(1, x2 + kMinWidthT, y2 + kage.kMinWidthY);\r
-        break;\r
-      }\r
-      \r
-      polygons.push(poly);\r
-\r
-      if(a2 == 24){ //for T design\r
-        poly = new Polygon();\r
-        poly.push(x2, y2 + kage.kMinWidthY);\r
-        poly.push(x2 + kMinWidthT, y2 - kage.kMinWidthY * 3);\r
-        poly.push(x2 + kMinWidthT * 2, y2 - kage.kMinWidthY);\r
-        poly.push(x2 + kMinWidthT * 2, y2 + kage.kMinWidthY);\r
-        polygons.push(poly);\r
-      }\r
-\r
-      if(a2 == 13 && opt2 == 4){ //for new GTH box's left bottom corner\r
-        poly = new Polygon();\r
-        poly.push(x2 - kMinWidthT, y2 - kage.kMinWidthY * 3);\r
-        poly.push(x2 - kMinWidthT * 2, y2);\r
-        poly.push(x2 - kage.kMinWidthY, y2 + kage.kMinWidthY * 5);\r
-        poly.push(x2 + kMinWidthT, y2 + kage.kMinWidthY);\r
-        polygons.push(poly);\r
-      }\r
-      \r
-      if(a1 == 22){ //box's right top corner\r
-        poly = new Polygon();\r
-        poly.push(x1 - kMinWidthT, y1 - kage.kMinWidthY);\r
-        poly.push(x1, y1 - kage.kMinWidthY - kage.kWidth);\r
-        poly.push(x1 + kMinWidthT + kage.kWidth, y1 + kage.kMinWidthY);\r
-        poly.push(x1 + kMinWidthT, y1 + kMinWidthT);\r
-        poly.push(x1 - kMinWidthT, y1);\r
-        polygons.push(poly);\r
-      }\r
-      \r
-      if(a1 == 0){ //beginning of the stroke\r
-        poly = new Polygon();\r
-        poly.push(x1 + kMinWidthT, y1 + kage.kMinWidthY * 0.5);\r
-        poly.push(x1 + kMinWidthT + kMinWidthT * 0.5, y1 + kage.kMinWidthY * 0.5 + kage.kMinWidthY);\r
-        poly.push(x1 + kMinWidthT - 2, y1 + kage.kMinWidthY * 0.5 + kage.kMinWidthY * 2 + 1);\r
-        polygons.push(poly);\r
-      }\r
-      \r
-      if((a1 == 6 && a2 == 0) || a2 == 1){ //KAGI NO YOKO BOU NO SAIGO NO MARU ... no need only used at 1st=yoko\r
-        poly = new Polygon();\r
-       if(kage.kUseCurve){\r
-          poly.push(x2 - kMinWidthT, y2);\r
-          poly.push(x2 - kMinWidthT * 0.9, y2 + kMinWidthT * 0.9, 1);\r
-          poly.push(x2, y2 + kMinWidthT);\r
-          poly.push(x2 + kMinWidthT * 0.9, y2 + kMinWidthT * 0.9, 1);\r
-          poly.push(x2 + kMinWidthT, y2);\r
-        } else {\r
-          poly.push(x2 - kMinWidthT, y2);\r
-          poly.push(x2 - kMinWidthT * 0.6, y2 + kMinWidthT * 0.6);\r
-          poly.push(x2, y2 + kMinWidthT);\r
-          poly.push(x2 + kMinWidthT * 0.6, y2 + kMinWidthT * 0.6);\r
-          poly.push(x2 + kMinWidthT, y2);\r
-        }\r
-        //poly.reverse(); // for fill-rule\r
-        polygons.push(poly);\r
-      }\r
-    }\r
-    else if(y1 == y2){ //if it is YOKO stroke, use x-axis\r
-      if(a1 == 6){ //if it is KAGI's YOKO stroke, get bold\r
-        poly = new Polygon();\r
-        poly.push(x1, y1 - kMinWidthT);\r
-        poly.push(x2, y2 - kMinWidthT);\r
-        poly.push(x2, y2 + kMinWidthT);\r
-        poly.push(x1, y1 + kMinWidthT);\r
-        polygons.push(poly);\r
-        \r
-        if(a2 == 1 || a2 == 0 || a2 == 5){ // no need a2=1\r
-          //KAGI NO YOKO BOU NO SAIGO NO MARU\r
-          poly = new Polygon();\r
-          if(kage.kUseCurve){\r
-            if(x1 < x2){\r
-              poly.push(x2, y2 - kMinWidthT);\r
-              poly.push(x2 + kMinWidthT * 0.9, y2 - kMinWidthT * 0.9, 1);\r
-              poly.push(x2 + kMinWidthT, y2);\r
-              poly.push(x2 + kMinWidthT * 0.9, y2 + kMinWidthT * 0.9, 1);\r
-              poly.push(x2, y2 + kMinWidthT);\r
-            } else {\r
-              poly.push(x2, y2 - kMinWidthT);\r
-              poly.push(x2 - kMinWidthT * 0.9, y2 - kMinWidthT * 0.9, 1);\r
-              poly.push(x2 - kMinWidthT, y2);\r
-              poly.push(x2 - kMinWidthT * 0.9, y2 + kMinWidthT * 0.9, 1);\r
-              poly.push(x2, y2 + kMinWidthT);\r
-            }\r
-          } else {\r
-            if(x1 < x2){\r
-              poly.push(x2, y2 - kMinWidthT);\r
-              poly.push(x2 + kMinWidthT * 0.6, y2 - kMinWidthT * 0.6);\r
-              poly.push(x2 + kMinWidthT, y2);\r
-              poly.push(x2 + kMinWidthT * 0.6, y2 + kMinWidthT * 0.6);\r
-              poly.push(x2, y2 + kMinWidthT);\r
-            } else {\r
-              poly.push(x2, y2 - kMinWidthT);\r
-              poly.push(x2 - kMinWidthT * 0.6, y2 - kMinWidthT * 0.6);\r
-              poly.push(x2 - kMinWidthT, y2);\r
-              poly.push(x2 - kMinWidthT * 0.6, y2 + kMinWidthT * 0.6);\r
-              poly.push(x2, y2 + kMinWidthT);\r
-            }\r
-          }\r
-          polygons.push(poly);\r
-        }\r
-        \r
-        if(a2 == 5){\r
-          //KAGI NO YOKO BOU NO HANE\r
-          poly = new Polygon();\r
-          if(x1 < x2){\r
-            poly.push(x2, y2 - kMinWidthT + 1);\r
-            poly.push(x2 + 2, y2 - kMinWidthT - kage.kWidth * (4 * (1 - opt1 / kage.kAdjustMageStep) + 1));\r
-            poly.push(x2, y2 - kMinWidthT - kage.kWidth * (4 * (1 - opt1 / kage.kAdjustMageStep) + 1));\r
-            poly.push(x2 - kMinWidthT, y2 - kMinWidthT + 1);\r
-          } else {\r
-            poly.push(x2, y2 - kMinWidthT + 1);\r
-            poly.push(x2 - 2, y2 - kMinWidthT - kage.kWidth * (4 * (1 - opt1 / kage.kAdjustMageStep) + 1));\r
-            poly.push(x2, y2 - kMinWidthT - kage.kWidth * (4 * (1 - opt1 / kage.kAdjustMageStep) + 1));\r
-            poly.push(x2 + kMinWidthT, y2 - kMinWidthT + 1);\r
-          }\r
-          //poly.reverse(); // for fill-rule\r
-          polygons.push(poly);\r
-        }\r
-      }\r
-      else{\r
-        //always same\r
-        poly = new Polygon(4);\r
-        poly.set(0, x1, y1 - kage.kMinWidthY);\r
-        poly.set(1, x2, y2 - kage.kMinWidthY);\r
-        poly.set(2, x2, y2 + kage.kMinWidthY);\r
-        poly.set(3, x1, y1 + kage.kMinWidthY);\r
-        polygons.push(poly);\r
-        \r
-        //UROKO\r
-        if(a2 == 0){\r
-          poly = new Polygon();\r
-          poly.push(x2, y2 - kage.kMinWidthY);\r
-          poly.push(x2 - kage.kAdjustUrokoX[opt2], y2);\r
-          poly.push(x2 - kage.kAdjustUrokoX[opt2] / 2, y2 - kage.kAdjustUrokoY[opt2]);\r
-          polygons.push(poly);\r
-        }\r
-      }\r
-    }\r
-    else{ //for others, use x-axis\r
-      rad = Math.atan((y2 - y1) / (x2 - x1));\r
-      if((Math.abs(y2 - y1) < Math.abs(x2 - x1)) && (a1 != 6) && (a2 != 6) && !(x1 > x2)){ //ASAI KAUDO\r
-        //always same\r
-        poly = new Polygon(4);\r
-        poly.set(0, x1 + Math.sin(rad) * kage.kMinWidthY, y1 - Math.cos(rad) * kage.kMinWidthY);\r
-        poly.set(1, x2 + Math.sin(rad) * kage.kMinWidthY, y2 - Math.cos(rad) * kage.kMinWidthY);\r
-        poly.set(2, x2 - Math.sin(rad) * kage.kMinWidthY, y2 + Math.cos(rad) * kage.kMinWidthY);\r
-        poly.set(3, x1 - Math.sin(rad) * kage.kMinWidthY, y1 + Math.cos(rad) * kage.kMinWidthY);\r
-        polygons.push(poly);\r
-        \r
-        //UROKO\r
-        if(a2 == 0){\r
-          poly = new Polygon();\r
-          poly.push(x2 + Math.sin(rad) * kage.kMinWidthY, y2 - Math.cos(rad) * kage.kMinWidthY);\r
-          poly.push(x2 - Math.cos(rad) * kage.kAdjustUrokoX[opt2], y2 - Math.sin(rad) * kage.kAdjustUrokoX[opt2]);\r
-          poly.push(x2 - Math.cos(rad) * kage.kAdjustUrokoX[opt2] / 2 + Math.sin(rad) * kage.kAdjustUrokoX[opt2] / 2, y2 - Math.sin(rad) * kage.kAdjustUrokoY[opt2] - Math.cos(rad) * kage.kAdjustUrokoY[opt2]);\r
-          polygons.push(poly);\r
-        }\r
-      }\r
-      \r
-      else{ //KAKUDO GA FUKAI or KAGI NO YOKO BOU\r
-        if(x1 > x2){ v = -1; } else{ v = 1; }\r
-        poly = new Polygon(4);\r
-        switch(a1){\r
-        case 0:\r
-          poly.set(0, x1 + Math.sin(rad) * kMinWidthT * v + kage.kMinWidthY * Math.cos(rad) * 0.5 * v,\r
-                   y1 - Math.cos(rad) * kMinWidthT * v + kage.kMinWidthY * Math.sin(rad) * 0.5 * v);\r
-          poly.set(3, x1 - Math.sin(rad) * kMinWidthT * v - kage.kMinWidthY * Math.cos(rad) * 0.5 * v,\r
-                   y1 + Math.cos(rad) * kMinWidthT * v - kage.kMinWidthY * Math.sin(rad) * 0.5 * v);\r
-          break;\r
-        case 1:\r
-        case 6:\r
-          poly.set(0, x1 + Math.sin(rad) * kMinWidthT * v, y1 - Math.cos(rad) * kMinWidthT * v);\r
-          poly.set(3, x1 - Math.sin(rad) * kMinWidthT * v, y1 + Math.cos(rad) * kMinWidthT * v);\r
-          break;\r
-        case 12:\r
-          poly.set(0, x1 + Math.sin(rad) * kMinWidthT * v - kage.kMinWidthY * Math.cos(rad) * v,\r
-                   y1 - Math.cos(rad) * kMinWidthT * v - kage.kMinWidthY * Math.sin(rad) * v);\r
-          poly.set(3, x1 - Math.sin(rad) * kMinWidthT * v - (kMinWidthT + kage.kMinWidthY) * Math.cos(rad) * v,\r
-                   y1 + Math.cos(rad) * kMinWidthT * v - (kMinWidthT + kage.kMinWidthY) * Math.sin(rad) * v);\r
-          break;\r
-        case 22:\r
-          poly.set(0, x1 + (kMinWidthT * v + 1) / Math.sin(rad), y1 + 1);\r
-          poly.set(3, x1 - (kMinWidthT * v) / Math.sin(rad), y1);\r
-          break;\r
-        case 32:\r
-          poly.set(0, x1 + (kMinWidthT * v) / Math.sin(rad), y1);\r
-          poly.set(3, x1 - (kMinWidthT * v) / Math.sin(rad), y1);\r
-          break;\r
-        }\r
-        \r
-        switch(a2){\r
-        case 0:\r
-          if(a1 == 6){\r
-            poly.set(1, x2 + Math.sin(rad) * kMinWidthT * v, y2 - Math.cos(rad) * kMinWidthT * v);\r
-            poly.set(2, x2 - Math.sin(rad) * kMinWidthT * v, y2 + Math.cos(rad) * kMinWidthT * v);\r
-          }\r
-          else{\r
-            poly.set(1, x2 + Math.sin(rad) * kMinWidthT * v - kMinWidthT * 0.5 * Math.cos(rad) * v,\r
-                     y2 - Math.cos(rad) * kMinWidthT * v - kMinWidthT * 0.5 * Math.sin(rad) * v);\r
-            poly.set(2, x2 - Math.sin(rad) * kMinWidthT * v + kMinWidthT * 0.5 * Math.cos(rad) * v,\r
-                     y2 + Math.cos(rad) * kMinWidthT * v + kMinWidthT * 0.5 * Math.sin(rad) * v);\r
-          }\r
-          break;\r
-        case 1: // is needed?\r
-        case 5:\r
-          poly.set(1, x2 + Math.sin(rad) * kMinWidthT * v, y2 - Math.cos(rad) * kMinWidthT * v);\r
-          poly.set(2, x2 - Math.sin(rad) * kMinWidthT * v, y2 + Math.cos(rad) * kMinWidthT * v);\r
-          break;\r
-        case 13:\r
-          poly.set(1, x2 + Math.sin(rad) * kMinWidthT * v + kage.kAdjustKakatoL[opt2] * Math.cos(rad) * v,\r
-                   y2 - Math.cos(rad) * kMinWidthT * v + kage.kAdjustKakatoL[opt2] * Math.sin(rad) * v);\r
-          poly.set(2, x2 - Math.sin(rad) * kMinWidthT * v + (kage.kAdjustKakatoL[opt2] + kMinWidthT) * Math.cos(rad) * v,\r
-                   y2 + Math.cos(rad) * kMinWidthT * v + (kage.kAdjustKakatoL[opt2] + kMinWidthT) * Math.sin(rad) * v);\r
-          break;\r
-        case 23:\r
-          poly.set(1, x2 + Math.sin(rad) * kMinWidthT * v + kage.kAdjustKakatoR[opt2] * Math.cos(rad) * v,\r
-                   y2 - Math.cos(rad) * kMinWidthT * v + kage.kAdjustKakatoR[opt2] * Math.sin(rad) * v);\r
-          poly.set(2,\r
-                   x2 - Math.sin(rad) * kMinWidthT * v + (kage.kAdjustKakatoR[opt2] + kMinWidthT) * Math.cos(rad) * v,\r
-                   y2 + Math.cos(rad) * kMinWidthT * v + (kage.kAdjustKakatoR[opt2] + kMinWidthT) * Math.sin(rad) * v);\r
-          break;\r
-        case 24:\r
-          poly.set(1, x2 + (kMinWidthT * v) / Math.sin(rad), y2);\r
-          poly.set(2, x2 - (kMinWidthT * v) / Math.sin(rad), y2);\r
-          break;\r
-        case 32:\r
-          poly.set(1, x2 + (kMinWidthT * v) / Math.sin(rad), y2);\r
-          poly.set(2, x2 - (kMinWidthT * v) / Math.sin(rad), y2);\r
-          break;\r
-        }\r
-        \r
-        polygons.push(poly);\r
-\r
-      if(a2 == 24){ //for T design\r
-        poly = new Polygon();\r
-        poly.push(x2, y2 + kage.kMinWidthY);\r
-        poly.push(x2 + kMinWidthT * 0.5, y2 - kage.kMinWidthY * 4);\r
-        poly.push(x2 + kMinWidthT * 2, y2 - kage.kMinWidthY);\r
-        poly.push(x2 + kMinWidthT * 2, y2 + kage.kMinWidthY);\r
-        polygons.push(poly);\r
-      }\r
-\r
-        if((a1 == 6) && (a2 == 0 || a2 == 5)){ //KAGI NO YOKO BOU NO SAIGO NO MARU\r
-          poly = new Polygon();\r
-          if(kage.kUseCurve){\r
-            poly.push(x2 + Math.sin(rad) * kMinWidthT * v, y2 - Math.cos(rad) * kMinWidthT * v);\r
-            poly.push(x2 - Math.cos(rad) * kMinWidthT * 0.9 * v + Math.sin(rad) * kMinWidthT * 0.9 * v,\r
-                      y2 + Math.sin(rad) * kMinWidthT * 0.9 * v - Math.cos(rad) * kMinWidthT * 0.9 * v, 1);\r
-            poly.push(x2 + Math.cos(rad) * kMinWidthT * v, y2 + Math.sin(rad) * kMinWidthT * v);\r
-            poly.push(x2 + Math.cos(rad) * kMinWidthT * 0.9 * v - Math.sin(rad) * kMinWidthT * 0.9 * v,\r
-                      y2 + Math.sin(rad) * kMinWidthT * 0.9 * v + Math.cos(rad) * kMinWidthT * 0.9 * v, 1);\r
-            poly.push(x2 - Math.sin(rad) * kMinWidthT * v, y2 + Math.cos(rad) * kMinWidthT * v);\r
-          } else {\r
-            poly.push(x2 + Math.sin(rad) * kMinWidthT * v, y2 - Math.cos(rad) * kMinWidthT * v);\r
-            poly.push(x2 + Math.cos(rad) * kMinWidthT * 0.8 * v + Math.sin(rad) * kMinWidthT * 0.6 * v,\r
-                      y2 + Math.sin(rad) * kMinWidthT * 0.8 * v - Math.cos(rad) * kMinWidthT * 0.6 * v);\r
-            poly.push(x2 + Math.cos(rad) * kMinWidthT * v, y2 + Math.sin(rad) * kMinWidthT * v);\r
-            poly.push(x2 + Math.cos(rad) * kMinWidthT * 0.8 * v - Math.sin(rad) * kMinWidthT * 0.6 * v,\r
-                      y2 + Math.sin(rad) * kMinWidthT * 0.8 * v + Math.cos(rad) * kMinWidthT * 0.6 * v);\r
-            poly.push(x2 - Math.sin(rad) * kMinWidthT * v, y2 + Math.cos(rad) * kMinWidthT * v);\r
-          }\r
-          polygons.push(poly);\r
-        }\r
-        \r
-        if(a1 == 6 && a2 == 5){\r
-          //KAGI NO YOKO BOU NO HANE\r
-          poly = new Polygon();\r
-          if(x1 < x2){\r
-            poly.push(x2 + (kMinWidthT - 1) * Math.sin(rad) * v, y2 - (kMinWidthT - 1) * Math.cos(rad) * v);\r
-            poly.push(x2 + 2 * Math.cos(rad) * v + (kMinWidthT + kage.kWidth * 5) * Math.sin(rad) * v,\r
-                      y2 + 2 * Math.sin(rad) * v - (kMinWidthT + kage.kWidth * 5) * Math.cos(rad) * v);\r
-            poly.push(x2 + (kMinWidthT + kage.kWidth * 5) * Math.sin(rad) * v,\r
-                      y2 - (kMinWidthT + kage.kWidth * 5) * Math.cos(rad) * v);\r
-            poly.push(x2 + (kMinWidthT - 1) * Math.sin(rad) * v - kMinWidthT * Math.cos(rad) * v,\r
-                      y2 - (kMinWidthT - 1) * Math.cos(rad) * v - kMinWidthT * Math.sin(rad) * v);\r
-          } else {\r
-            poly.push(x2 - (kMinWidthT - 1) * Math.sin(rad) * v, y2 + (kMinWidthT - 1) * Math.cos(rad) * v);\r
-            poly.push(x2 + 2 * Math.cos(rad) * v - (kMinWidthT + kage.kWidth * 5) * Math.sin(rad) * v,\r
-                      y2 + 2 * Math.sin(rad) * v + (kMinWidthT + kage.kWidth * 5) * Math.cos(rad) * v);\r
-            poly.push(x2 - (kMinWidthT + kage.kWidth * 5) * Math.sin(rad) * v,\r
-                      y2 + (kMinWidthT + kage.kWidth * 5) * Math.cos(rad) * v);\r
-            poly.push(x2 + (kMinWidthT - 1) * Math.sin(rad) * v - kMinWidthT * Math.cos(rad) * v,\r
-                      y2 - (kMinWidthT - 1) * Math.cos(rad) * v - kMinWidthT * Math.sin(rad) * v);\r
-          }\r
-          polygons.push(poly);\r
-        }\r
-        \r
-        if(a1 == 22){ //SHIKAKU MIGIUE UROKO NANAME DEMO MASSUGU MUKI\r
-          poly = new Polygon();\r
-          poly.push(x1 - kMinWidthT, y1 - kage.kMinWidthY);\r
-          poly.push(x1, y1 - kage.kMinWidthY - kage.kWidth);\r
-          poly.push(x1 + kMinWidthT + kage.kWidth, y1 + kage.kMinWidthY);\r
-          poly.push(x1 + kMinWidthT, y1 + kMinWidthT - 1);\r
-          poly.push(x1 - kMinWidthT, y1 + kMinWidthT + 4);\r
-          polygons.push(poly);\r
-        }\r
-\r
-\r
-        if(a2 == 13 && opt2 == 4){ //for new GTH box's left bottom corner MUKI KANKEINASHI\r
-          poly = new Polygon();\r
-          var m = 0;\r
-          if(x1 > x2 && y1 != y2){\r
-            m = Math.floor((x1 - x2) / (y2 - y1) * 3);\r
-          }\r
-          poly.push(x2 + m, y2 - kage.kMinWidthY * 5);\r
-          poly.push(x2 - kMinWidthT * 2 + m, y2);\r
-          poly.push(x2 - kage.kMinWidthY + m, y2 + kage.kMinWidthY * 5);\r
-          poly.push(x2 + kMinWidthT + m, y2 + kage.kMinWidthY);\r
-          poly.push(x2 + m, y2);\r
-          polygons.push(poly);\r
-        }\r
-\r
-        XX = Math.sin(rad) * v;\r
-        XY = Math.cos(rad) * v * -1;\r
-        YX = Math.cos(rad) * v;\r
-        YY = Math.sin(rad) * v;\r
-        \r
-        if(a1 == 0){ //beginning of the storke\r
-          poly = new Polygon();\r
-          poly.push(x1 + kMinWidthT * XX + (kage.kMinWidthY * 0.5) * YX,\r
-                    y1 + kMinWidthT * XY + (kage.kMinWidthY * 0.5) * YY);\r
-          poly.push(x1 + (kMinWidthT + kMinWidthT * 0.5) * XX + (kage.kMinWidthY * 0.5 + kage.kMinWidthY) * YX,\r
-                    y1 + (kMinWidthT + kMinWidthT * 0.5) * XY + (kage.kMinWidthY * 0.5 + kage.kMinWidthY) * YY);\r
-          poly.push(x1 + kMinWidthT * XX + (kage.kMinWidthY * 0.5 + kage.kMinWidthY * 2) * YX - 2 * XX,\r
-                    y1 + kMinWidthT * XY + (kage.kMinWidthY * 0.5 + kage.kMinWidthY * 2) * YY + 1 * XY);\r
-          polygons.push(poly);\r
-        }\r
-      }\r
-    }\r
-  }\r
-  else{ //gothic\r
-    if(tx1 == tx2){ //if TATE stroke, use y-axis\r
-      if(ty1 > ty2){\r
-        x1 = tx2;\r
-        y1 = ty2;\r
-        x2 = tx1;\r
-        y2 = ty1;\r
-        a1 = ta2;\r
-        a2 = ta1;\r
-      }\r
-      else{\r
-        x1 = tx1;\r
-        y1 = ty1;\r
-        x2 = tx2;\r
-        y2 = ty2;\r
-        a1 = ta1;\r
-        a2 = ta2;\r
-      }\r
-      \r
-      if(a1 % 10 == 2){ y1 = y1 - kage.kWidth; }\r
-      if(a2 % 10 == 2){ y2 = y2 + kage.kWidth; }\r
-      if(a1 % 10 == 3){ y1 = y1 - kage.kWidth * kage.kKakato; }\r
-      if(a2 % 10 == 3){ y2 = y2 + kage.kWidth * kage.kKakato; }\r
-      \r
-      poly = new Polygon();\r
-      poly.push(x1 - kage.kWidth, y1);\r
-      poly.push(x2 - kage.kWidth, y2);\r
-      poly.push(x2 + kage.kWidth, y2);\r
-      poly.push(x1 + kage.kWidth, y1);\r
-      //poly.reverse(); // for fill-rule\r
-      \r
-      polygons.push(poly);\r
-    }\r
-    else if(ty1 == ty2){ //if YOKO stroke, use x-axis\r
-      if(tx1 > tx2){\r
-        x1 = tx2;\r
-        y1 = ty2;\r
-        x2 = tx1;\r
-        y2 = ty1;\r
-        a1 = ta2;\r
-        a2 = ta1;\r
-      }\r
-      else{\r
-        x1 = tx1;\r
-        y1 = ty1;\r
-        x2 = tx2;\r
-        y2 = ty2;\r
-        a1 = ta1;\r
-        a2 = ta2;\r
-      }\r
-      if(a1 % 10 == 2){ x1 = x1 - kage.kWidth; }\r
-      if(a2 % 10 == 2){ x2 = x2 + kage.kWidth; }\r
-      if(a1 % 10 == 3){ x1 = x1 - kage.kWidth * kage.kKakato; }\r
-      if(a2 % 10 == 3){ x2 = x2 + kage.kWidth * kage.kKakato; }\r
-      \r
-      poly = new Polygon();\r
-      poly.push(x1, y1 - kage.kWidth);\r
-      poly.push(x2, y2 - kage.kWidth);\r
-      poly.push(x2, y2 + kage.kWidth);\r
-      poly.push(x1, y1 + kage.kWidth);\r
-      \r
-      polygons.push(poly);\r
-    }\r
-    else{ //for others, use x-axis\r
-      if(tx1 > tx2){\r
-        x1 = tx2;\r
-        y1 = ty2;\r
-        x2 = tx1;\r
-        y2 = ty1;\r
-        a1 = ta2;\r
-        a2 = ta1;\r
-      }\r
-      else{\r
-        x1 = tx1;\r
-        y1 = ty1;\r
-        x2 = tx2;\r
-        y2 = ty2;\r
-        a1 = ta1;\r
-        a2 = ta2;\r
-      }\r
-      rad = Math.atan((y2 - y1) / (x2 - x1));\r
-      if(a1 % 10 == 2){\r
-        x1 = x1 - kage.kWidth * Math.cos(rad);\r
-        y1 = y1 - kage.kWidth * Math.sin(rad);\r
-      }\r
-      if(a2 % 10 == 2){\r
-        x2 = x2 + kage.kWidth * Math.cos(rad);\r
-        y2 = y2 + kage.kWidth * Math.sin(rad);\r
-      }\r
-      if(a1 % 10 == 3){\r
-        x1 = x1 - kage.kWidth * Math.cos(rad) * kage.kKakato;\r
-        y1 = y1 - kage.kWidth * Math.sin(rad) * kage.kKakato;\r
-      }\r
-      if(a2 % 10 == 3){\r
-        x2 = x2 + kage.kWidth * Math.cos(rad) * kage.kKakato;\r
-        y2 = y2 + kage.kWidth * Math.sin(rad) * kage.kKakato;\r
-      }\r
-      \r
-      //SUICHOKU NO ICHI ZURASHI HA Math.sin TO Math.cos NO IREKAE + x-axis MAINASU KA\r
-      poly = new Polygon();\r
-      poly.push(x1 + Math.sin(rad) * kage.kWidth, y1 - Math.cos(rad) * kage.kWidth);\r
-      poly.push(x2 + Math.sin(rad) * kage.kWidth, y2 - Math.cos(rad) * kage.kWidth);\r
-      poly.push(x2 - Math.sin(rad) * kage.kWidth, y2 + Math.cos(rad) * kage.kWidth);\r
-      poly.push(x1 - Math.sin(rad) * kage.kWidth, y1 + Math.cos(rad) * kage.kWidth);\r
-      \r
-      polygons.push(poly);\r
-    }\r
-  }\r
-}\r
diff --git a/kagedf.js b/kagedf.js
deleted file mode 100644 (file)
index 92e42bf..0000000
--- a/kagedf.js
+++ /dev/null
@@ -1,447 +0,0 @@
-function dfDrawFont(kage, polygons, a1, a2, a3, x1, y1, x2, y2, x3, y3, x4, y4){\r
-  var tx1, tx2, tx3, tx4, ty1, ty2, ty3, ty4, v;\r
-  var rad;\r
-       \r
-  if(kage.kShotai == kage.kMincho){\r
-    switch(a1 % 100){ // ... no need to divide\r
-    case 0:\r
-      break;\r
-    case 1:\r
-      if(a3 % 100 == 4){\r
-        if(x1 == x2){\r
-          if(y1 < y2){ v = 1; } else{ v = -1; }\r
-          tx1 = x2;\r
-          ty1 = y2 - kage.kMage * v;\r
-        }\r
-        else if(y1 == y2){ // ... no need\r
-          if(x1 < x2){ v = 1; } else{ v = -1; }\r
-          tx1 = x2 - kage.kMage * v;\r
-          ty1 = y2;\r
-        }\r
-        else{\r
-          rad = Math.atan((y2 - y1) / (x2 - x1));\r
-          if(x1 < x2){ v = 1; } else{v = -1; }\r
-          tx1 = x2 - kage.kMage * Math.cos(rad) * v;\r
-          ty1 = y2 - kage.kMage * Math.sin(rad) * v;\r
-        }\r
-        cdDrawLine(kage, polygons, x1, y1, tx1, ty1, a2, 1);\r
-        cdDrawCurve(kage, polygons, tx1, ty1, x2, y2, x2 - kage.kMage * (((kage.kAdjustTateStep + 4) - Math.floor(a2 / 1000)) / (kage.kAdjustTateStep + 4)), y2, 1 + (a2 - a2 % 1000), a3 + 10);\r
-      }\r
-      else{\r
-        cdDrawLine(kage, polygons, x1, y1, x2, y2, a2, a3);\r
-      }\r
-      break;\r
-    case 2:\r
-    //case 12: // ... no need\r
-      if(a3 % 100 == 4){\r
-        if(x2 == x3){\r
-          tx1 = x3;\r
-          ty1 = y3 - kage.kMage;\r
-        }\r
-        else if(y2 == y3){\r
-          tx1 = x3 - kage.kMage;\r
-          ty1 = y3;\r
-        }\r
-        else{\r
-          rad = Math.atan((y3 - y2) / (x3 - x2));\r
-          if(x2 < x3){ v = 1; } else{ v = -1; }\r
-          tx1 = x3 - kage.kMage * Math.cos(rad) * v;\r
-          ty1 = y3 - kage.kMage * Math.sin(rad) * v;\r
-        }\r
-        cdDrawCurve(kage, polygons, x1, y1, x2, y2, tx1, ty1, a2, 1);\r
-        cdDrawCurve(kage, polygons, tx1, ty1, x3, y3, x3 - kage.kMage, y3, 1, a3 + 10);\r
-      }\r
-      else if(a3 == 5){\r
-        cdDrawCurve(kage, polygons, x1, y1, x2, y2, x3, y3, a2, 15);\r
-      }\r
-      else{\r
-        cdDrawCurve(kage, polygons, x1, y1, x2, y2, x3, y3, a2, a3);\r
-      }\r
-      break;\r
-    case 3:\r
-      if(a3 % 1000 == 5){\r
-        if(x1 == x2){\r
-          if(y1 < y2){ v = 1; } else{ v = -1; }\r
-          tx1 = x2;\r
-          ty1 = y2 - kage.kMage * v;\r
-        }\r
-        else if(y1 == y2){\r
-          if(x1 < x2){ v = 1; } else{ v = -1; }\r
-          tx1 = x2 - kage.kMage * v;\r
-          ty1 = y2;\r
-        }\r
-        else{\r
-          rad = Math.atan((y2 - y1) / (x2 - x1));\r
-          if(x1 < x2){ v = 1; } else{ v = -1; }\r
-          tx1 = x2 - kage.kMage * Math.cos(rad) * v;\r
-          ty1 = y2 - kage.kMage * Math.sin(rad) * v;\r
-        }\r
-        if(x2 == x3){\r
-          if(y2 < y3){ v = 1; } else{ v = -1; }\r
-          tx2 = x2;\r
-          ty2 = y2 + kage.kMage * v;\r
-        }\r
-        else if(y2 == y3){\r
-          if(x2 < x3){ v = 1; } else { v = -1; }\r
-          tx2 = x2 + kage.kMage * v;\r
-          ty2 = y2;\r
-        }\r
-        else{\r
-          rad = Math.atan((y3 - y2) / (x3 - x2));\r
-          if(x2 < x3){ v = 1; } else{ v = -1; }\r
-          tx2 = x2 + kage.kMage * Math.cos(rad) * v;\r
-          ty2 = y2 + kage.kMage * Math.sin(rad) * v;\r
-        }\r
-        tx3 = x3;\r
-        ty3 = y3;\r
-        \r
-        cdDrawLine(kage, polygons, x1, y1, tx1, ty1, a2, 1);\r
-        cdDrawCurve(kage, polygons, tx1, ty1, x2, y2, tx2, ty2, 1 + (a2 - a2 % 1000) * 10, 1 + (a3 - a3 % 1000));\r
-        if((x2 < x3 && tx3 - tx2 > 0) || (x2 > x3 && tx2 - tx3 > 0)){ // for closer position\r
-          cdDrawLine(kage, polygons, tx2, ty2, tx3, ty3, 6 + (a3 - a3 % 1000), 5); // bolder by force\r
-        }\r
-      }\r
-      else{\r
-        if(x1 == x2){\r
-          if(y1 < y2){ v = 1; } else { v = -1; }\r
-          tx1 = x2;\r
-          ty1 = y2 - kage.kMage * v;\r
-        }\r
-        else if(y1 == y2){\r
-          if(x1 < x2){ v = 1; } else{ v = -1; }\r
-          tx1 = x2 - kage.kMage * v;\r
-          ty1 = y2;\r
-        }\r
-        else{\r
-          rad = Math.atan((y2 - y1) / (x2 - x1));\r
-          if(x1 < x2){ v = 1; } else{ v = -1; }\r
-          tx1 = x2 - kage.kMage * Math.cos(rad) * v;\r
-          ty1 = y2 - kage.kMage * Math.sin(rad) * v;\r
-        }\r
-        if(x2 == x3){\r
-          if(y2 < y3){ v = 1; } else{ v = -1; }\r
-          tx2 = x2;\r
-          ty2 = y2 + kage.kMage * v;\r
-        }\r
-        else if(y2 == y3){\r
-          if(x2 < x3){ v = 1; } else{ v = -1; }\r
-          tx2 = x2 + kage.kMage * v;\r
-          ty2 = y2;\r
-        }\r
-        else{\r
-          rad = Math.atan((y3 - y2) / (x3 - x2));\r
-          if(x2 < x3){ v = 1; } else{ v = -1; }\r
-          tx2 = x2 + kage.kMage * Math.cos(rad) * v;\r
-          ty2 = y2 + kage.kMage * Math.sin(rad) * v;\r
-        }\r
-        cdDrawLine(kage, polygons, x1, y1, tx1, ty1, a2, 1);\r
-        cdDrawCurve(kage, polygons, tx1, ty1, x2, y2, tx2, ty2, 1 + (a2 - a2 % 1000) * 10, 1 + (a3 - a3 % 1000));\r
-        cdDrawLine(kage, polygons, tx2, ty2, x3, y3, 6 + (a3 - a3 % 1000), a3); // bolder by force\r
-      }\r
-      break;\r
-    case 12:\r
-      cdDrawCurve(kage, polygons, x1, y1, x2, y2, x3, y3, a2, 1);\r
-      cdDrawLine(kage, polygons, x3, y3, x4, y4, 6, a3);\r
-      break;\r
-    case 4:\r
-      rate = 6;\r
-      if((x3 - x2) * (x3 - x2) + (y3 - y2) * (y3 - y2) < 14400){ // smaller than 120 x 120\r
-        rate = Math.sqrt((x3 - x2) * (x3 - x2) + (y3 - y2) * (y3 - y2)) / 120 * 6;\r
-      }\r
-      if(a3 == 5){\r
-        if(x1 == x2){\r
-          if(y1 < y2){ v = 1; } else{ v = -1; }\r
-          tx1 = x2;\r
-          ty1 = y2 - kage.kMage * v * rate;\r
-        }\r
-        else if(y1 == y2){\r
-          if(x1 < x2){ v = 1; } else{ v = -1; }\r
-          tx1 = x2 - kage.kMage * v * rate;\r
-          ty1 = y2;\r
-        }\r
-        else{\r
-          rad = Math.atan((y2 - y1) / (x2 - x1));\r
-          if(x1 < x2){ v = 1; } else{ v = -1; }\r
-          tx1 = x2 - kage.kMage * Math.cos(rad) * v * rate;\r
-          ty1 = y2 - kage.kMage * Math.sin(rad) * v * rate;\r
-        }\r
-        if(x2 == x3){\r
-          if(y2 < y3){ v = 1; } else{ v = -1; }\r
-          tx2 = x2;\r
-          ty2 = y2 + kage.kMage * v * rate;\r
-        }\r
-        else if(y2 == y3){\r
-          if(x2 < x3){ v = 1; } else { v = -1; }\r
-          tx2 = x2 + kage.kMage * v * rate;\r
-          ty2 = y2;\r
-        }\r
-        else{\r
-          rad = Math.atan((y3 - y2) / (x3 - x2));\r
-          if(x2 < x3){ v = 1; } else{ v = -1; }\r
-          tx2 = x2 + kage.kMage * Math.cos(rad) * v * rate;\r
-          ty2 = y2 + kage.kMage * Math.sin(rad) * v * rate;\r
-        }\r
-        tx3 = x3;\r
-        ty3 = y3;\r
-        \r
-        cdDrawLine(kage, polygons, x1, y1, tx1, ty1, a2, 1);\r
-        cdDrawCurve(kage, polygons, tx1, ty1, x2, y2, tx2, ty2, 1, 1);\r
-        if(tx3 - tx2 > 0){ // for closer position\r
-          cdDrawLine(kage, polygons, tx2, ty2, tx3, ty3, 6, 5); // bolder by force\r
-        }\r
-      }\r
-      else{\r
-        if(x1 == x2){\r
-          if(y1 < y2){ v = 1; } else { v = -1; }\r
-          tx1 = x2;\r
-          ty1 = y2 - kage.kMage * v * rate;\r
-        }\r
-        else if(y1 == y2){\r
-          if(x1 < x2){ v = 1; } else{ v = -1; }\r
-          tx1 = x2 - kage.kMage * v * rate;\r
-          ty1 = y2;\r
-        }\r
-        else{\r
-          rad = Math.atan((y2 - y1) / (x2 - x1));\r
-          if(x1 < x2){ v = 1; } else{ v = -1; }\r
-          tx1 = x2 - kage.kMage * Math.cos(rad) * v * rate;\r
-          ty1 = y2 - kage.kMage * Math.sin(rad) * v * rate;\r
-        }\r
-        if(x2 == x3){\r
-          if(y2 < y3){ v = 1; } else{ v = -1; }\r
-          tx2 = x2;\r
-          ty2 = y2 + kage.kMage * v * rate;\r
-        }\r
-        else if(y2 == y3){\r
-          if(x2 < x3){ v = 1; } else{ v = -1; }\r
-          tx2 = x2 + kage.kMage * v * rate;\r
-          ty2 = y2;\r
-        }\r
-        else{\r
-          rad = Math.atan((y3 - y2) / (x3 - x2));\r
-          if(x2 < x3){ v = 1; } else{ v = -1; }\r
-          tx2 = x2 + kage.kMage * Math.cos(rad) * v * rate;\r
-          ty2 = y2 + kage.kMage * Math.sin(rad) * v * rate;\r
-        }\r
-        cdDrawLine(kage, polygons, x1, y1, tx1, ty1, a2, 1);\r
-        cdDrawCurve(kage, polygons, tx1, ty1, x2, y2, tx2, ty2, 1, 1);\r
-        cdDrawLine(kage, polygons, tx2, ty2, x3, y3, 6, a3); // bolder by force\r
-      }\r
-      break;\r
-    case 6:\r
-      if(a3 % 100 == 4){\r
-        if(x3 == x4){\r
-          tx1 = x4;\r
-          ty1 = y4 - kage.kMage;\r
-        }\r
-        else if(y3 == y4){\r
-          tx1 = x4 - kage.kMage;\r
-          ty1 = y4;\r
-        }\r
-        else{\r
-          rad = Math.atan((y4 - y3) / (x4 - x3));\r
-          if(x3 < x4){ v = 1; } else{ v = -1; }\r
-          tx1 = x4 - kage.kMage * Math.cos(rad) * v;\r
-          ty1 = y4 - kage.kMage * Math.sin(rad) * v;\r
-        }\r
-        cdDrawBezier(kage, polygons, x1, y1, x2, y2, x3, y3, tx1, ty1, a2, 1);\r
-        cdDrawCurve(kage, polygons, tx1, ty1, x4, y4, x4 - kage.kMage, y4, 1, a3 + 10);\r
-      }\r
-      else if(a3 == 5){\r
-        cdDrawBezier(kage, polygons, x1, y1, x2, y2, x3, y3, x4, y4, a2, 15);\r
-      }\r
-      else{\r
-        cdDrawBezier(kage, polygons, x1, y1, x2, y2, x3, y3, x4, y4, a2, a3);\r
-      }\r
-      break;\r
-    case 7:\r
-      cdDrawLine(kage, polygons, x1, y1, x2, y2, a2, 1);\r
-      cdDrawCurve(kage, polygons, x2, y2, x3, y3, x4, y4, 1 + (a2 - a2 % 1000), a3);\r
-      break;\r
-    case 9: // may not be exist ... no need\r
-      //kageCanvas[y1][x1] = 0;\r
-      //kageCanvas[y2][x2] = 0;\r
-      break;\r
-    default:\r
-      break;\r
-    }\r
-  }\r
-    \r
-  else{ // gothic\r
-    switch(a1 % 100){\r
-    case 0:\r
-      break;\r
-    case 1:\r
-      if(a3 == 4){\r
-        if(x1 == x2){\r
-          if(y1 < y2){ v = 1; } else{ v = -1; }\r
-          tx1 = x2;\r
-          ty1 = y2 - kage.kMage * v;\r
-        }\r
-        else if(y1 == y2){\r
-          if(x1 < x2){ v = 1; } else{ v = -1; }\r
-          tx1 = x2 - kage.kMage * v;\r
-          ty1 = y2;\r
-        }\r
-        else{\r
-          rad = Math.atan((y2 - y1) / (x2 - x1));\r
-          if(x1 < x2){ v = 1; } else{ v = -1; }\r
-          tx1 = x2 - kage.kMage * Math.cos(rad) * v;\r
-          ty1 = y2 - kage.kMage * Math.sin(rad) * v;\r
-        }\r
-        cdDrawLine(kage, polygons, x1, y1, tx1, ty1, a2, 1);\r
-        cdDrawCurve(kage, polygons, tx1, ty1, x2, y2, x2 - kage.kMage * 2, y2 - kage.kMage * 0.5, 1, 0);\r
-      }\r
-      else{\r
-        cdDrawLine(kage, polygons, x1, y1, x2, y2, a2, a3);\r
-      }\r
-      break;\r
-    case 2:\r
-    case 12:\r
-      if(a3 == 4){\r
-        if(x2 == x3){\r
-          tx1 = x3;\r
-          ty1 = y3 - kage.kMage;\r
-        }\r
-        else if(y2 == y3){\r
-          tx1 = x3 - kage.kMage;\r
-          ty1 = y3;\r
-        }\r
-        else{\r
-          rad = Math.atan((y3 - y2) / (x3 - x2));\r
-          if(x2 < x3){ v = 1; } else{ v = -1; }\r
-          tx1 = x3 - kage.kMage * Math.cos(rad) * v;\r
-          ty1 = y3 - kage.kMage * Math.sin(rad) * v;\r
-        }\r
-        cdDrawCurve(kage, polygons, x1, y1, x2, y2, tx1, ty1, a2, 1);\r
-        cdDrawCurve(kage, polygons, tx1, ty1, x3, y3, x3 - kage.kMage * 2, y3 - kage.kMage * 0.5, 1, 0);\r
-      }\r
-      else if(a3 == 5){\r
-        tx1 = x3 + kage.kMage;\r
-        ty1 = y3;\r
-        tx2 = tx1 + kage.kMage * 0.5;\r
-        ty2 = y3 - kage.kMage * 2;\r
-        cdDrawCurve(kage, polygons, x1, y1, x2, y2, x3, y3, a2, 1);\r
-        cdDrawCurve(kage, polygons, x3, y3, tx1, ty1, tx2, ty2, 1, 0);\r
-      }\r
-      else{\r
-        cdDrawCurve(kage, polygons, x1, y1, x2, y2, x3, y3, a2, a3);\r
-      }\r
-      break;\r
-    case 3:\r
-      if(a3 == 5){\r
-        if(x1 == x2){\r
-          if(y1 < y2){ v = 1; } else{ v = -1; }\r
-          tx1 = x2;\r
-          ty1 = y2 - kage.kMage * v;\r
-        }\r
-        else if(y1 == y2){\r
-          if(x1 < x2){ v = 1; } else{ v = -1; }\r
-          tx1 = x2 - kage.kMage * v;\r
-          ty1 = y2;\r
-        }\r
-        else{\r
-          rad = Math.atan((y2 - y1) / (x2 - x1));\r
-          if(x1 < x2){ v = 1; } else{ v = -1; }\r
-          tx1 = x2 - kage.kMage * Math.cos(rad) * v;\r
-          ty1 = y2 - kage.kMage * Math.sin(rad) * v;\r
-        }\r
-        if(x2 == x3){\r
-          if(y2 < y3){ v = 1; } else{ v = -1; }\r
-          tx2 = x2;\r
-          ty2 = y2 + kage.kMage * v;\r
-        }\r
-        else if(y2 == y3){\r
-          if(x2 < x3){ v = 1; } else{ v = -1; }\r
-          tx2 = x2 + kage.kMage * v;\r
-          ty2 = y2;\r
-        }\r
-        else{\r
-          rad = Math.atan((y3 - y2) / (x3 - x2));\r
-          if(x2 < x3){ v = 1; } else{ v = -1; }\r
-          tx2 = x2 + kage.kMage * Math.cos(rad) * v;\r
-          ty2 = y2 + kage.kMage * Math.sin(rad) * v;\r
-        }\r
-        tx3 = x3 - kage.kMage;\r
-        ty3 = y3;\r
-        tx4 = x3 + kage.kMage * 0.5;\r
-        ty4 = y3 - kage.kMage * 2;\r
-        \r
-        cdDrawLine(kage, polygons, x1, y1, tx1, ty1, a2, 1);\r
-        cdDrawCurve(kage, polygons, tx1, ty1, x2, y2, tx2, ty2, 1, 1);\r
-        cdDrawLine(kage, polygons, tx2, ty2, tx3, ty3, 1, 1);\r
-        cdDrawCurve(kage, polygons, tx3, ty3, x3, y3, tx4, ty4, 1, 0);\r
-      }\r
-      else{\r
-        if(x1 == x2){\r
-          if(y1 < y2){ v = 1; } else{ v = -1; }\r
-          tx1 = x2;\r
-          ty1 = y2 - kage.kMage * v;\r
-        }\r
-        else if(y1 == y2){\r
-          if(x1 < x2){ v = 1; } else{ v = -1; }\r
-          tx1 = x2 - kage.kMage * v;\r
-          ty1 = y2;\r
-        }\r
-        else{\r
-          rad = Math.atan((y2 - y1) / (x2 - x1));\r
-          if(x1 < x2){ v = 1; } else{ v = -1; }\r
-          tx1 = x2 - kage.kMage * Math.cos(rad) * v;\r
-          ty1 = y2 - kage.kMage * Math.sin(rad) * v;\r
-        }\r
-        if(x2 == x3){\r
-          if(y2 < y3){ v = 1; } else{ v = -1; }\r
-          tx2 = x2;\r
-          ty2 = y2 + kage.kMage * v;\r
-        }\r
-        else if(y2 == y3){\r
-          if(x2 < x3){ v = 1; } else{ v = -1; }\r
-          tx2 = x2 + kage.kMage * v;\r
-          ty2 = y2;\r
-        }\r
-        else{\r
-          rad = Math.atan((y3 - y2) / (x3 - x2));\r
-          if(x2 < x3){ v = 1; } else{ v = -1; }\r
-          tx2 = x2 + kage.kMage * Math.cos(rad) * v;\r
-          ty2 = y2 + kage.kMage * Math.sin(rad) * v;\r
-        }\r
-        \r
-        cdDrawLine(kage, polygons, x1, y1, tx1, ty1, a2, 1);\r
-        cdDrawCurve(kage, polygons, tx1, ty1, x2, y2, tx2, ty2, 1, 1);\r
-        cdDrawLine(kage, polygons, tx2, ty2, x3, y3, 1, a3);\r
-      }\r
-      break;\r
-    case 6:\r
-      if(a3 == 5){\r
-        tx1 = x4 - kage.kMage;\r
-        ty1 = y4;\r
-        tx2 = x4 + kage.kMage * 0.5;\r
-        ty2 = y4 - kage.kMage * 2;\r
-        /*\r
-                               cdDrawCurve(x1, y1, x2, y2, (x2 + x3) / 2, (y2 + y3) / 2, a2, 1);\r
-                               cdDrawCurve((x2 + x3) / 2, (y2 + y3) / 2, x3, y3, tx1, ty1, 1, 1);\r
-         */\r
-        cdDrawBezier(kage, polygons, x1, y1, x2, y2, x3, y3, tx1, ty1, a2, 1);\r
-        cdDrawCurve(kage, polygons, tx1, ty1, x4, y4, tx2, ty2, 1, 0);\r
-      }\r
-      else{\r
-        /*\r
-                               cdDrawCurve(x1, y1, x2, y2, (x2 + x3) / 2, (y2 + y3) / 2, a2, 1);\r
-                               cdDrawCurve((x2 + x3) / 2, (y2 + y3) / 2, x3, y3, x4, y4, 1, a3);\r
-         */\r
-        cdDrawBezier(kage, polygons, x1, y1, x2, y2, x3, y3, x4, y4, a2, a3);\r
-      }\r
-      break;\r
-    case 7:\r
-      cdDrawLine(kage, polygons, x1, y1, x2, y2, a2, 1);\r
-      cdDrawCurve(kage, polygons, x2, y2, x3, y3, x4, y4, 1, a3);\r
-      break;\r
-    case 9: // may not be exist\r
-      //kageCanvas[y1][x1] = 0;\r
-      //kageCanvas[y2][x2] = 0;\r
-      break;\r
-    default:\r
-      break;\r
-    }\r
-  }\r
-}\r
diff --git a/polygon.js b/polygon.js
deleted file mode 100644 (file)
index 4d26b38..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-function Polygon(number){\r
-  // resolution : 0.1\r
-  \r
-  // method\r
-  function push(x, y, off){ // void\r
-    var temp = new Object();\r
-    temp.x = Math.floor(x*10)/10;\r
-    temp.y = Math.floor(y*10)/10;\r
-    if(off != 1){\r
-      off = 0;\r
-    }\r
-    temp.off = off;\r
-    this.array.push(temp);\r
-  }\r
-  Polygon.prototype.push = push;\r
-  \r
-  function set(index, x, y, off){ // void\r
-    this.array[index].x = Math.floor(x*10)/10;\r
-    this.array[index].y = Math.floor(y*10)/10;\r
-    if(off != 1){\r
-      off = 0;\r
-    }\r
-    this.array[index].off = off;\r
-  }\r
-  Polygon.prototype.set = set;\r
-  \r
-  function reverse(){ // void\r
-    this.array.reverse();\r
-  }\r
-  Polygon.prototype.reverse = reverse;\r
-  \r
-  function concat(poly){ // void\r
-    this.array = this.array.concat(poly.array);\r
-  }\r
-  Polygon.prototype.concat = concat;\r
-       \r
-  function shift(){ // void\r
-    this.array.shift();\r
-  }\r
-  Polygon.prototype.shift = shift;\r
-       \r
-  function unshift(x, y, off){ // void\r
-    var temp = new Object();\r
-    temp.x = Math.floor(x*10)/10;\r
-    temp.y = Math.floor(y*10)/10;\r
-    if(off != 1){\r
-      off = 0;\r
-    }\r
-    temp.off = off;\r
-    this.array.unshift(temp);\r
-  }\r
-  Polygon.prototype.unshift = unshift;\r
-       \r
-  // property\r
-  this.array = new Array();\r
-  \r
-  // initialize\r
-  if(number){\r
-    for(var i = 0; i < number; i++){\r
-      this.push(0, 0, 0);\r
-    }\r
-  }\r
-  \r
-  return this;\r
-}\r
diff --git a/polygons.js b/polygons.js
deleted file mode 100644 (file)
index 75ebdc1..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-function Polygons(){\r
-  // method\r
-       function clear(){ // void\r
-    this.array = new Array();\r
-  }\r
-  Polygons.prototype.clear = clear;\r
-       \r
-  function push(polygon){ // void\r
-    // only a simple check\r
-    var minx = 200;\r
-    var maxx = 0;\r
-    var miny = 200;\r
-    var maxy = 0;\r
-    var error = 0;\r
-    for(var i = 0; i < polygon.array.length; i++){\r
-      if(polygon.array[i].x < minx){\r
-        minx = polygon.array[i].x;\r
-      }\r
-      if(polygon.array[i].x > maxx){\r
-        maxx = polygon.array[i].x;\r
-      }\r
-      if(polygon.array[i].y < miny){\r
-        miny = polygon.array[i].y;\r
-      }\r
-      if(polygon.array[i].y > maxy){\r
-        maxy = polygon.array[i].y;\r
-      }\r
-      if(isNaN(polygon.array[i].x) || isNaN(polygon.array[i].y)){\r
-        error++;\r
-      }\r
-    }\r
-    if(error == 0 && minx != maxx && miny != maxy && polygon.array.length >= 3){\r
-      var newArray = new Array();\r
-      newArray.push(polygon.array.shift());\r
-      while(polygon.array.length != 0){\r
-        var temp = polygon.array.shift();\r
-        //if(newArray[newArray.length - 1].x != temp.x ||\r
-        //   newArray[newArray.length - 1].y != temp.y){\r
-          newArray.push(temp);\r
-        //}\r
-      }\r
-      if(newArray.length >= 3){\r
-        polygon.array = newArray;\r
-        this.array.push(polygon);\r
-      }\r
-    }\r
-  }\r
-  Polygons.prototype.push = push;\r
-  \r
-  function generateSVG(curve){ // string\r
-    var buffer = "";\r
-    buffer += "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" baseProfile=\"full\" viewBox=\"0 0 200 200\" width=\"200\" height=\"200\">\n";\r
-    if(curve){\r
-      for(var i = 0; i < this.array.length; i++){\r
-        var mode = "L";\r
-        buffer += "<path d=\"M ";\r
-        buffer += this.array[i].array[0].x + "," + this.array[i].array[0].y + " ";\r
-        for(var j = 1; j < this.array[i].array.length; j++){\r
-          if(this.array[i].array[j].off == 1){\r
-            buffer += "Q ";\r
-            mode = "Q";\r
-          } else if(mode == "Q" && this.array[i].array[j - 1].off != 1){\r
-            buffer += "L ";\r
-          } else if(mode == "L" && j == 1){\r
-            buffer += "L ";\r
-          }\r
-          buffer += this.array[i].array[j].x + "," + this.array[i].array[j].y + " ";\r
-        }\r
-        buffer += "Z\" fill=\"black\" />\n";\r
-      }\r
-      buffer += "</svg>\n";\r
-    } else {\r
-      buffer += "<g fill=\"black\">\n";\r
-      for(var i = 0; i < this.array.length; i++){\r
-        buffer += "<polygon points=\"";\r
-        for(var j = 0; j < this.array[i].array.length; j++){\r
-          buffer += this.array[i].array[j].x + "," + this.array[i].array[j].y + " ";\r
-        }\r
-        buffer += "\" />\n";\r
-      }\r
-      buffer += "</g>\n";\r
-      buffer += "</svg>\n";\r
-    }\r
-    return buffer;\r
-  }\r
-  Polygons.prototype.generateSVG = generateSVG;\r
-  \r
-  function generateEPS(){ // string\r
-    var buffer = "";\r
-    buffer += "%!PS-Adobe-3.0 EPSF-3.0\n";\r
-    buffer += "%%BoundingBox: 0 -208 1024 816\n";\r
-    buffer += "%%Pages: 0\n";\r
-    buffer += "%%Title: Kanji glyph\n";\r
-    buffer += "%%Creator: GlyphWiki powered by KAGE system\n";\r
-    buffer += "%%CreationDate: " + new Date() + "\n";\r
-    buffer += "%%EndComments\n";\r
-    buffer += "%%EndProlog\n";\r
-    \r
-    for(var i = 0; i < this.array.length; i++){\r
-      for(var j = 0; j < this.array[i].array.length; j++){\r
-        buffer += (this.array[i].array[j].x * 5) + " " + (1000 - this.array[i].array[j].y * 5 - 200) + " ";\r
-        if(j == 0){\r
-          buffer += "newpath\nmoveto\n";\r
-        } else {\r
-          buffer += "lineto\n";\r
-        }\r
-      }\r
-      buffer += "closepath\nfill\n";\r
-    }\r
-    buffer += "%%EOF\n";\r
-    return buffer;\r
-  }\r
-  Polygons.prototype.generateEPS = generateEPS;\r
-  \r
-  // property\r
-  this.array = new Array();\r
-  \r
-  return this;\r
-}\r
diff --git a/sample.as b/sample.as
deleted file mode 100644 (file)
index d67ee06..0000000
--- a/sample.as
+++ /dev/null
@@ -1,29 +0,0 @@
-#include "2d.js"\r
-#include "buhin.js"\r
-#include "curve.js"\r
-#include "kage.js"\r
-#include "kagecd.js"\r
-#include "kagedf.js"\r
-#include "polygon.js"\r
-#include "polygons.js"\r
-\r
-var kage = new Kage();\r
-kage.kUseCurve = false;\r
-var polygons = new Polygons();\r
-\r
-kage.kBuhin.push("u6f22", "99:0:0:9:12:73:200:u6c35-07$99:0:0:54:10:190:199:u26c29-07");\r
-kage.kBuhin.push("u6c35-07", "2:7:8:42:12:99:23:124:35$2:7:8:20:62:75:71:97:85$2:7:8:12:123:90:151:81:188$2:2:7:63:144:109:118:188:51");\r
-kage.kBuhin.push("u26c29-07", "1:0:0:18:29:187:29$1:0:0:73:10:73:48$1:0:0:132:10:132:48$1:12:13:44:59:44:87$1:2:2:44:59:163:59$1:22:23:163:59:163:87$1:2:2:44:87:163:87$1:0:0:32:116:176:116$1:0:0:21:137:190:137$7:32:7:102:59:102:123:102:176:10:190$2:7:0:105:137:126:169:181:182");\r
-\r
-kage.makeGlyph(polygons, "u6f22");\r
-\r
-_root.lineStyle(0, 0, 100);\r
-for (var i = 0; i < polygons.array.length; i++) {\r
-       _root.beginFill(0, 100);\r
-       _root.moveTo(polygons.array[i].array[0].x, polygons.array[i].array[0].y);\r
-       for (var j = 1; j < polygons.array[i].array.length; j++) {\r
-               _root.lineTo(polygons.array[i].array[j].x, polygons.array[i].array[j].y);\r
-       }\r
-       _root.endFill();\r
-}\r
-\r
diff --git a/sample.html b/sample.html
deleted file mode 100644 (file)
index 9ff8299..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-<html>\r
- <head>\r
-  <script type="text/javascript" src="2d.js"></script>\r
-  <script type="text/javascript" src="buhin.js"></script>\r
-  <script type="text/javascript" src="curve.js"></script>\r
-  <script type="text/javascript" src="kage.js"></script>\r
-  <script type="text/javascript" src="kagecd.js"></script>\r
-  <script type="text/javascript" src="kagedf.js"></script>\r
-  <script type="text/javascript" src="polygon.js"></script>\r
-  <script type="text/javascript" src="polygons.js"></script>\r
-  <script type="text/javascript">\r
-function draw() {\r
- var canvas = document.getElementById("canvas");\r
- var ctx = canvas.getContext("2d");\r
\r
- var kage = new Kage();\r
- kage.kUseCurve = false;\r
- var polygons = new Polygons();\r
\r
- kage.kBuhin.push("u9ebb", "1:0:2:40:37:143:37$4:22:5:143:37:12:169:170:169:175:171");\r
- kage.kBuhin.push("u9ebb-2", "99:0:0:0:0:200:200:u9ebb:0:0:0");\r
\r
- kage.makeGlyph(polygons, "u9ebb-2");\r
\r
- ctx.fillStyle = "rgb(0, 0, 0)";\r
\r
- for(var i = 0; i < polygons.array.length; i++){\r
-  ctx.beginPath();\r
-  ctx.moveTo(polygons.array[i].array[0].x, polygons.array[i].array[0].y);\r
-  for(var j = 1; j < polygons.array[i].array.length; j++){\r
-   ctx.lineTo(polygons.array[i].array[j].x, polygons.array[i].array[j].y);\r
-  }\r
-  ctx.closePath();\r
-  ctx.fill();\r
- }\r
-}\r
-  </script>\r
- </head>\r
- <body onload="draw()">\r
-   <canvas style="border: 1px #ccc solid;" id="canvas" width="200" height="200"></canvas>\r
- </body>\r
-</html>\r
diff --git a/sample.js b/sample.js
deleted file mode 100644 (file)
index 0b1375e..0000000
--- a/sample.js
+++ /dev/null
@@ -1,26 +0,0 @@
-// KAGE engine sample script for JavaScript engine
-//
-// % js sample.js > result.svg (SpiderMonkey)
-// % java -jar js.jar sample.js > result.svg (Rhino)
-
-load("2d.js");
-load("buhin.js");
-load("curve.js");
-load("kage.js");
-load("kagecd.js");
-load("kagedf.js");
-load("polygon.js");
-load("polygons.js");
-
-var kage = new Kage();
-kage.kUseCurve = true;
-var polygons = new Polygons();
-
-kage.kBuhin.push("u6f22", "99:150:0:9:12:73:200:u6c35-07:0:-10:50$99:0:0:54:10:190:199:u26c29-07");
-kage.kBuhin.push("u6c35-07", "2:7:8:42:12:99:23:124:35$2:7:8:20:62:75:71:97:85$2:7:8:12:123:90:151:81:188$2:2:7:63:144:109:118:188:51");
-kage.kBuhin.push("u26c29-07", "1:0:0:18:29:187:29$1:0:0:73:10:73:48$1:0:0:132:10:132:48$1:12:13:44:59:44:87$1:2:2:44:59:163:59$1:22:23:163:59:163:87$1:2:2:44:87:163:87$1:0:0:32:116:176:116$1:0:0:21:137:190:137$7:32:7:102:59:102:123:102:176:10:190$2:7:0:105:137:126:169:181:182");
-
-kage.makeGlyph(polygons, "u6f22");
-
-print(polygons.generateSVG(true));
-