Fixed.
[chise/kage.git] / makettf / makettf.cgi
1 #!/usr/bin/perl
2 use utf8;
3 binmode STDOUT, ":utf8";
4
5 use CGI;
6 $form = new CGI;
7
8 $PERL = "/usr/bin/perl";
9 $RM = "/bin/rm";
10 $LICENSE = 'Created by KAGE system. (http://fonts.jp/)';
11 $TEMP="temp";
12
13 $RANDOM = sprintf("%05X", rand() * 0x100000);
14 $TEMPDIR = "/tmp/makettf_$RANDOM";
15 mkdir($TEMPDIR);
16
17 &makehead();
18 &makefoot();
19 &makeparts();
20 $dummy = `$PERL makettf.pl $TEMPDIR $TEMP mincho 3`;
21 &sendfont();
22
23 sub makehead{
24     $fontname_en = $form->param('fontname-en');
25     $fontname_en =~ s/[\;\&\#\"\'\%\\\$\:\!\=\~\^\`]//g;
26     $fontname_ja = $form->param('fontname-ja');
27     $fontname_ja =~ s/[\;\&\#\"\'\%\\\$\:\!\=\~\^\`]//g;
28     utf8::decode($fontname_ja);
29     if($fontname_en eq ""){
30         $fontname_en = "Untitled";
31     }
32     if($fontname_ja eq ""){
33         $fontname_ja = $fontname_en;
34     }
35     open FH, ">:utf8", "$TEMPDIR/head.txt";
36     print FH <<"EOT";
37 New()
38 Reencode("UnicodeFull")
39 SetTTFName(0x409,0,"$LICENSE")
40 SetTTFName(0x409,1,"$fontname_en")
41 SetTTFName(0x409,4,"$fontname_en")
42 SetTTFName(0x411,1,"$fontname_ja")
43 SetTTFName(0x411,4,"$fontname_ja")
44 EOT
45     close FH;
46 }
47
48 sub makefoot{
49     open FH, ">:utf8", "$TEMPDIR/foot.txt";
50     close FH;
51 }
52
53 sub makeparts{
54     my $temp = $form->param('partsdata');
55     utf8::decode($temp);
56     open FH, ">:utf8", "$TEMPDIR/parts.txt";
57     print FH $temp;
58     close FH;
59 }
60
61 sub sendfont{
62     my $fdata = "";
63     my $fsize = 0;
64     my @bdata;
65     print <<"EOT";
66 Content-type: application/octet-stream
67 Content-Disposition: attachment; filename = $fontname_en.ttf
68
69 EOT
70     open FH, "<:utf8", "$TEMPDIR/$TEMP.ttf";
71     while(1){
72         $readed = read FH, $fdata, 1024;
73         utf8::decode($fdata);
74         print $fdata;
75         if($readed <= 0){
76             last;
77         }
78     }
79     close FH;
80     $dummy = `$RM -r $TEMPDIR`;
81 }