#!/usr/bin/perl # definition $BASEDIR = "/var/www/makettf"; $MAKETTF = "/usr/bin/perl $BASEDIR/makettf.pl"; $LICENSE = 'Created by KAGE system. (http://fonts.jp/)'; $TEMP="font"; $HEADER_FILENAME = "head.txt"; $PARTS_FILENAME = "parts.txt"; $FOOTER_FILENAME = "foot.txt"; # initialize use utf8; binmode STDOUT, ":utf8"; use CGI; $form = new CGI; # prepare working directory $RANDOM = sprintf("%07X", rand(0x10000000)); $TEMPDIR = "$BASEDIR/$RANDOM"; $TEMPURL = "$RANDOM"; mkdir($TEMPDIR); # main : divided for parent and child process $| = 1; $pid = fork(); unless(defined $pid){ &makeerror(); exit; } if($pid > 0){ &makepage(); } else{ close(STDIN); close(STDOUT); close(STDERR); &makehead(); &makefoot(); &makeparts(); $dummy = `$MAKETTF $TEMPDIR $TEMP mincho 3`; } exit; sub makehead{ $fontname_en = $form->param('fontname-en'); $fontname_en =~ s/[\;\&\#\"\'\%\\\$\:\!\=\~\^\`]//g; $fontname_ja = $form->param('fontname-ja'); $fontname_ja =~ s/[\;\&\#\"\'\%\\\$\:\!\=\~\^\`]//g; utf8::decode($fontname_ja); if($fontname_en eq ""){ $fontname_en = "Untitled"; } if($fontname_ja eq ""){ $fontname_ja = $fontname_en; } open FH, ">:utf8", "$TEMPDIR/$HEADER_FILENAME"; print FH <<"EOT"; New() Reencode("UnicodeFull") SetTTFName(0x409,0,"$LICENSE") SetTTFName(0x409,1,"$fontname_en") SetTTFName(0x409,4,"$fontname_en") SetTTFName(0x411,1,"$fontname_ja") SetTTFName(0x411,4,"$fontname_ja") EOT close FH; } sub makefoot{ open FH, ">:utf8", "$TEMPDIR/$FOOTER_FILENAME"; close FH; } sub makeparts{ my $temp = $form->param('partsdata'); utf8::decode($temp); open FH, ">:utf8", "$TEMPDIR/$PARTS_FILENAME"; print FH $temp; close FH; } sub makepage{ print <<"EOT"; Content-type: text/html; フォントダウンロード

フォント生成中

以下のリンクをクリックしてください。リンクが切れている場合は生成中ですのでもう少しお待ちください。6000グリフで25分程度かかります。

フォントのダウンロード

生成ログ(しばらくすると、ここに処理したグリフのUCSコードポイントが記録されます。通常の漢字は0u4E00から0u9FA5の間で、0u4E00から処理されます。0u9XXXまで到達せずに更新が止まった場合はデータにエラーがあり失敗している可能性があります。

戻る

fonts.jp
EOT } sub makeerror{ print <<"EOT"; Content-type: text/html; フォント生成失敗

フォント生成失敗

もう一度戻ってやり直してください。

戻る

fonts.jp
EOT }