9354620d69c442af1021b36dc9dba8769f34e340
[chise/kage.git] / makettf / makettf.cgi
1 #!/usr/bin/perl
2 use utf8;
3 use CGI;
4
5 $FONTFORGE = "/usr/local/bin/fontforge";
6 $PERL = "/usr/bin/perl";
7 $ECHO = "/bin/echo";
8 $RM = "/bin/rm";
9 $TEMP = "/tmp/tempKAGE";
10 $KAGESCRIPT = "/home/kamichi/perl";
11 $FMT = "svg";
12 $LICENSE = 'Created by KAGE system. (http://fonts.jp/)';
13
14 $form = new CGI;
15
16 $fontname_en = $form->param('fontname-en');
17 $fontname_en =~ s/[\;\&\#\"\'\%\\\$\:\!\=\~\^\`]//g;
18 $fontname_ja = $form->param('fontname-ja');
19 $fontname_ja =~ s/[\;\&\#\"\'\%\\\$\:\!\=\~\^\`]//g;
20 utf8::decode($fontname_ja);
21 if($fontname_en eq ""){
22     $fontname_en = "Untitled";
23 }
24 if($fontname_ja eq ""){
25     $fontname_ja = $fontname_en;
26 }
27
28 #open FH, "<", "parts.txt";
29 #$temp = "";
30 #%parts = ();
31 #foreach(<FH>){
32 #    $temp .= $_;
33 #    @temp = split(/ \t|\r\n|\r|\n/, $_);
34 #    $parts{$temp[0]} = $temp[1];
35 #}
36 #close FH;
37 @temp2 = split(/\r\n|\r|\n/, $partsdata);
38 $temp = "";
39 %parts = ();
40 foreach(@temp2){
41     $temp .= $_;
42     @temp = split(/ |\t|\r\n|\r|\n/, $_);
43     $parts{$temp[0]} = $temp[1];
44 }
45 open FH, ">", "$TEMP.parts.txt";
46 $temp =~ s/ /\t/g;
47 print FH $temp;
48 close FH;
49
50 #open FH, "<", "map.txt";
51 #%map = ();
52 #foreach(<FH>){
53 #    @temp = split(/\t|\r\n|\r|\n/, $_);
54 #    $map{$temp[0]} = $temp[1];
55 #}
56 #close FH;
57 @temp2 = split(/\r\n|\r|\n/, $mappingtable);
58 %map = ();
59 foreach(@temp2){
60     @temp = split(/ |\t|\r\n|\r|\n/, $_);
61     $map{$temp[0]} = $temp[1];
62 }
63
64 $script =<<"EOT";
65 New()
66 Reencode("UnicodeFull")
67 SetTTFName(0x409,0,"$LICENSE")
68 SetTTFName(0x409,1,"$fontname_en")
69 SetTTFName(0x409,4,"$fontname_en")
70 SetTTFName(0x411,1,"$fontname_ja")
71 SetTTFName(0x411,4,"$fontname_ja")
72 EOT
73
74 foreach(sort(keys %map)){
75     $temp = $parts{$map{$_}};
76     $dummy = `cd $KAGESCRIPT; $ECHO '$temp' | $PERL $KAGESCRIPT/kagepre.pl $TEMP.parts.txt | $PERL $KAGESCRIPT/kage$FMT.pl > $TEMP.$_.$FMT`;
77     &addglyph($_);
78 }
79 &makefont;
80
81 sub addglyph{
82     $script .=<<"EOT";
83 Select(0u$_[0])
84 Clear()
85 Import("$TEMP.$_[0].$FMT")
86 #Import("$TEMP.$_[0].$FMT",0,2)
87 RemoveOverlap()
88 Simplify()
89 SetWidth(1000)
90 SetVWidth(1000)
91 Move(0, 50)
92 RoundToInt()
93 AutoHint()
94 EOT
95 }
96
97 sub makefont{
98     $script .= "Generate(\"$TEMP.ttf\", \"\", 0)\n";
99     $script .= "Quit()\n";
100     open FH, ">:utf8", "$TEMP.scr";
101     print FH $script;
102     close FH;
103     
104     $dummy = `export LANG=utf-8; $FONTFORGE -script $TEMP.scr 2>/dev/null`;
105     
106     my $fdata = "";
107     my $fsize = 0;
108     my @bdata;
109     open FH, "<$TEMP.ttf";
110     $fsize = -s FH;
111     read FH, $fdata, $fsize;
112     close FH;
113     print <<"EOT";
114 Content-type: application/octet-stream
115 Content-Disposition: attachment; filename = $fontname_en.ttf
116
117 $fdata
118 EOT
119     
120     $dummy = `$RM $TEMP*`;
121 }
122