KANOU Hiroki
kanou****@khdd*****
2005年 1月 18日 (火) 12:23:26 JST
狩野です。 村岡さんの書かれた EPS 切り出し処理を長方形領域に対応させてみました。 epscut.pl と EPSCut::cut() に、2 個までの追加引数を追加できるように しました。5 番目が 長方形領域の x の大きさ、6 番目が y の大きさです。 (y の省略値は x と同じで、x の省略値は 100 です)。 % perl epscut.pl 0060.eps thin/uni0061.eps 6 1 100 150 とすると、mplus-thin の 'a' が uni0061.eps に書き出されます。 # ベースラインが浮いてるのって、これで正常なんですよね。 これでいよいよ、プロポーショナル英文を取り込むための部品はすべて 組み上がったはずです。 # 今のところ、太さのある線の問題は、setlinewidth を pop に置き換えて # 対処しています。 フォント作成スクリプト全体の修正は、村岡さんにお任せしたいと思います。 --- EPSCut.pm.orig Tue Apr 20 10:45:54 2004 +++ EPSCut.pm Tue Jan 18 12:08:28 2005 @@ -5,8 +5,9 @@ package EPSCut; -my $NUNIT = 100; -my $SCALE = 10; +my $EM = 1000.0; +my ($XUNIT, $YUNIT) = (100, 100); +my $SCALE = $EM / $YUNIT; my $RXFLT = "-?\\d+(\\.\\d+)?"; sub cut @@ -15,11 +16,14 @@ my $outfile = shift; my $row = shift; my $col = shift; + $XUNIT = shift if (@_); + $YUNIT = shift if (@_); + $SCALE = $EM / $YUNIT; # Prepare - my @size = ($SCALE * $NUNIT, $SCALE * $NUNIT); + my @size = ($SCALE * $XUNIT, $SCALE * $YUNIT); my @range = ( - $col * $NUNIT, $row * $NUNIT, - ($col + 1) * $NUNIT, ($row + 1) * $NUNIT + $col * $XUNIT, $row * $YUNIT, + ($col + 1) * $XUNIT, ($row + 1) * $YUNIT ); open IN, $infile; open OUT, ">$outfile"; --- epscut.pl.orig Sun Mar 7 20:28:27 2004 +++ epscut.pl Tue Jan 18 12:06:30 2005 @@ -5,7 +5,7 @@ if (@ARGV < 4) { print STDOUT <<"__HERE__"; ERROR: Too less arguments -Usage: $0 {INFILE} {OUTFILE} {NROW} {NCOL} +Usage: $0 {INFILE} {OUTFILE} {NROW} {NCOL} [{XUNIT} [{YUNIT}]] __HERE__ exit 1; } @@ -13,11 +13,14 @@ $OUTFILE = shift; $NROW = ((shift) + 0); $NCOL = ((shift) + 0); +$XUNIT = $YUNIT = 100; +$XUNIT = $YUNIT = ((shift) + 0) if @ARGV; +$YUNIT = ((shift) + 0) if @ARGV; if (not -r $INFILE) { print STDERR "ERROR: Can't read a file $INFILE\n"; exit 1; } -&EPSCut::cut($INFILE, $OUTFILE, $NROW, $NCOL); +&EPSCut::cut($INFILE, $OUTFILE, $NROW, $NCOL, $XUNIT, $YUNIT); exit;