4 binmode STDOUT, ":utf8";
6 if(scalar(@ARGV) != 4){
7 print "Usage: makettf.pl WorkingDirectory WorkingName Shotai Weight\n";
8 print "Shotai: mincho or gothic\n";
9 print "Weight: 1 3 5 7\n";
13 $FONTFORGE = "/usr/local/bin/fontforge";
14 $PERL = "/usr/bin/perl";
20 unlink "$WORKDIR/$WORKNAME.log";
21 unlink "$WORKDIR/$WORKNAME.scr";
22 unlink "$WORKDIR/$WORKNAME.ttf";
23 mkdir "$WORKDIR/build";
30 Import("$WORKDIR/build/$_[0].svg")
40 open FH, ">>:utf8", "$WORKDIR/$WORKNAME.scr";
46 my $buffer = "Generate(\"$WORKDIR/$WORKNAME.ttf\", \"\", 0)\n";
47 $buffer .= "Quit()\n";
48 open FH, ">>:utf8", "$WORKDIR/$WORKNAME.scr";
52 $buffer = `export LANG=utf-8; $FONTFORGE -script $WORKDIR/$WORKNAME.scr > $WORKDIR/$WORKNAME.log 2>&1`;
53 #open FH, ">>:utf8", "$WORKDIR/$WORKNAME.log";
59 $subset{$_[0]} = $buhin{$_[0]};
60 while($buhin{$_[0]} =~ m/(^|\$)99:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:(.+?)(\$|$)/gc){
61 if(!exists($subset{$2})){
68 if(-e "$WORKDIR/head.txt"){
69 open FH, "<:utf8", "$WORKDIR/head.txt";
70 open FH2, ">>:utf8", "$WORKDIR/$WORKNAME.scr";
79 open FH, ">>:utf8", "$WORKDIR/$WORKNAME.log";
80 print FH "No header file.\n";
87 if(-e "$WORKDIR/parts.txt"){
88 open FH, "<:utf8", "$WORKDIR/parts.txt";
97 open FH, ">>:utf8", "$WORKDIR/$WORKNAME.log";
98 print FH "No parts file.\n";
102 @temp = split(/\r\n|\r|\n/, $temp);
105 @temp2 = split(/ +|\t/, $_);
106 $buhin{$temp2[0]} = $temp2[1];
110 # parse target codepoint
112 foreach(sort(keys %buhin)){
113 if($_ =~ m/^\[([^\]])\]$/){
114 $target = sprintf("%X", unpack('U', $1));
115 } elsif(length($_) == 1){
116 $target = sprintf("%X", unpack('U', $_));
117 } elsif($_ =~ m/^[Uu]{0,1}[\+\-]{0,1}([0-9A-Fa-f]{1,8})$/){
122 $target =~ s/^0+//g; # delete zero for the beginning
124 $target{$target} = $name;
127 # make glyph for each target
128 foreach(sort(keys(%target))){
130 $target = $target{$_};
134 foreach(keys(%subset)){
135 $partsdata .= $_." ".$subset{$_}."\n";
137 utf8::encode($target);
138 $target =~ s/([^0-9A-Za-z_ ])/'%'.unpack('H2',$1)/ge;
140 utf8::encode($partsdata);
141 $partsdata =~ s/([^0-9A-Za-z_ ])/'%'.unpack('H2',$1)/ge;
142 $partsdata =~ s/\s/+/g;
143 $svg = `/usr/bin/js makeglyph.js $target $partsdata $SHOTAI $WEIGHT`;
144 open FH, ">$WORKDIR/build/$code.svg";
151 if(-e "$WORKDIR/foot.txt"){
152 open FH, "<:utf8", "$WORKDIR/foot.txt";
153 open FH2, ">>:utf8", "$WORKDIR/$WORKNAME.scr";
162 open FH, ">>:utf8", "$WORKDIR/$WORKNAME.log";
163 print FH "No footer file.\n";