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