Added web page for checking data.
authorKoichi KAMICHI <kamichi@fonts.jp>
Fri, 26 Jan 2007 00:44:04 +0000 (00:44 +0000)
committerKoichi KAMICHI <kamichi@fonts.jp>
Fri, 26 Jan 2007 00:44:04 +0000 (00:44 +0000)
makettf/checkdata.cgi [new file with mode: 0755]
makettf/checkdata.html [new file with mode: 0644]
makettf/index.html

diff --git a/makettf/checkdata.cgi b/makettf/checkdata.cgi
new file mode 100755 (executable)
index 0000000..d156024
--- /dev/null
@@ -0,0 +1,98 @@
+#!/usr/bin/perl
+
+$ERROR_SYNTAX = 1;
+$ERROR_NOPARTS = 2;
+
+use utf8;
+binmode STDOUT, ":utf8";
+use CGI;
+$form = new CGI;
+$| = 1;
+
+my $data = $form->param('partsdata');
+utf8::decode($data);
+@buffer = split(/\r\n|\r|\n/, $data);
+
+$result = "";
+
+$pre1 = "";
+$pre2 = "";
+
+%parts = ();
+foreach $temp (@buffer){
+  if($temp =~ m/:/ && $temp =~ m/[0-9]/){
+    @temp = split(/ |\t|\r\n|\r|\n/, $temp);
+    $parts{$temp[0]} = 1;
+  }
+}
+
+foreach $temp (@buffer){
+  if($temp =~ m/:/ && $temp =~ m/[0-9]/){
+    $error = 0;
+    $check = 0;
+    @temp = split(/ |\t|\r\n|\r|\n/, $temp);
+    @temp2 = split(/\$/, $temp[1]);
+    foreach $temp2 (@temp2){
+      if($temp2 =~ m/^1:(0|2):(0|2):/){ $check++; }
+      if($temp2 =~ m/^1:(0|12|22|32):(0|13|23|32|4):/){ $check++; }
+      if($temp2 =~ m/^2:(0|12|22|32):(4|5|7):/){ $check++; }
+      if($temp2 =~ m/^2:7:(0|4|8):/){ $check++; }
+      if($temp2 =~ m/^2:2:7:/){ $check++; }
+      if($temp2 =~ m/^3:(0|12|22|32):(0|5):/){ $check++; }
+      if($temp2 =~ m/^6:22:5:/){ $check++; }
+      if($temp2 =~ m/^7:(0|12|22|32):7:/){ $check++; }
+      if($temp2 =~ m/^99:[^:]+:[^:]+:[^:]+:[^:]+:[^:]+:[^:]+:([^:]+)/){
+        $check++;
+        if(!exists($parts{$1})){
+          $error = $error | $ERROR_NOPARTS;
+        }
+      }
+      if($temp2 =~ m/^0:/){ $check++; }
+    }
+    if($check == 0){
+      $error = $error | $ERROR_SYNTAX;
+    }
+    if($error != 0){
+      if($error & $ERROR_SYNTAX){
+        $result .= "** 文法エラー・処理できない筆画があります **\n";
+      }
+      if($error & $ERROR_NOPARTS){
+        $result .= "** 99番で使用されている部品が存在しません **\n";
+      }
+      $result .= "$pre2\n$pre1\n==> $temp\n"."-" x 70 . "\n";
+    }
+  }
+  $pre2 = $pre1;
+  $pre1 = $temp;
+}
+
+if($result eq ""){
+  $result = "エラーはありませんでした\n";
+}
+
+print <<"EOT";
+Content-type: text/html;
+
+<!DOCTYPE html
+    PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+    "http://www.w3.org/TR/html4/loose.dtd">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="http://fonts.jp/green.css">
+<html>
+<head>
+<title>チェック結果</title>
+</head>
+<body>
+<div class="main">
+<h1>チェック結果</h1>
+<p>チェック結果は以下の通りです。</p>
+<pre>
+$result
+</pre>
+<p><a href="checkdata.html">戻る</a></p>
+<hr class="footer">
+fonts.jp
+</div>
+</body>
+</html>
+EOT
diff --git a/makettf/checkdata.html b/makettf/checkdata.html
new file mode 100644 (file)
index 0000000..82e26e4
--- /dev/null
@@ -0,0 +1,31 @@
+<!DOCTYPE html
+    PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+    "http://www.w3.org/TR/html4/loose.dtd">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="http://fonts.jp/green.css">
+<html>
+<head>
+<title>TTF(TrueType)フォント生成 データチェック</title>
+</head>
+<body>
+<div class="main">
+<h1>TTF(TrueType)フォント生成 データチェック</h1>
+
+<form action="checkdata.cgi" method="POST">
+部品データ<br>
+<textarea wrap="off" name="partsdata" cols="80" rows="10">30A8 2:7:8:66:2:95:16:110:33$1:0:2:28:56:102:56$1:22:4:103:56:103:196$1:0:2:3:92:66:92$2:22:7:66:92:48:146:1:178$2:0:7:186:66:163:89:125:112$2:7:0:107:60:130:144:196:182
+一 2:7:8:66:2:95:16:110:33$1:0:2:28:56:102:56$1:22:4:103:56:103:196$1:0:2:3:92:66:92$2:22:7:66:92:48:146:1:178$2:0:7:186:66:163:89:125:112$2:7:0:107:60:130:144:196:182
+</textarea>
+<br>
+<input type="submit" value="チェック">
+</form>
+
+<p>部品データを貼り付けてチェックボタンをクリックしてください。文法チェック(処理できない筆画のチェックを含む)および足りない部品のチェックを行います。</p>
+
+<a href="index.html">戻る</a>
+
+<hr class="footer">
+fonts.jp
+</div>
+</body>
+</html>
index ab3e05a..8f66b36 100644 (file)
@@ -22,6 +22,8 @@
 <input type="submit" value="生成">
 </form>
 
+<p><a href="checkdata.html">データのチェックを行う</a></p>
+
 <h2>説明</h2>
 
 <p>部品データは 1部品ごとに1行 で、「部品名、スペース、部品データ」の順に記述します。<br>