#navi(Perl/EPSファイル作成)

エンコーディングと文字列の原点

概要

  • 使用しているフォントは「小塚ゴシック Pro - M」。
  • EPS中で「Unicode(UTF8)」で指定する場合は「KozGoPro-Medium-UniJIS-UTF8-H」と記述する。(横書き)
  • EPS中で「Unicode(UCS2)」で指定する場合は「KozGoPro-Medium-UniJIS-UCS2-H」と記述する。(横書き)
  • EPS中で「Unicode(UTF8)」で指定する場合は「KozGoPro-Medium-UniJIS-UTF8-V」と記述する。(縦書き)
  • EPS中で「Unicode(UCS2)」で指定する場合は「KozGoPro-Medium-UniJIS-UCS2-V」と記述する。(縦書き)

ソースコード

# EPS作成
# テキストの配置
# このソースは UTF8N, LF で保存すること

use strict;
use utf8;
use Encode qw/encode decode/;

my $eps_file = 'GA2.eps';
my $mm2point = 72 / 25.4;

# A4サイズ
my $width = sprintf( "%.2f", 210 * $mm2point );
my $height = sprintf( "%.2f", 297 * $mm2point );

my $String = "ギャラクシーエンジェる〜ん Oct 2006";
my $String_ucs2 = &str_to_ucs2( $String );
my $String_utf8 = &str_to_utf8( $String );
my $StringFontSize = 24;

my $x1 = 4 * $StringFontSize;
my $y1 = $height - 4 * $StringFontSize;

my $x2 = $x1;
my $y2 = $height - 6 * $StringFontSize;

my $x3 = $x1;
my $y3 = $height - 8 * $StringFontSize;

my $x4 = 9 * $StringFontSize;
my $y4 = $height - 11 * $StringFontSize;

my $x5 = 13 * $StringFontSize;
my $y5 = $y4;

my $x6 = 17 * $StringFontSize;
my $y6 = $y4;

my $eps = '';

$eps .=<<EOL;
%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 0 0 $width $height

/putText {
	4 dict begin
		/str exch def
		/encode exch def
		/ty exch def
		/tx exch def
		0 1 1 0 setcmykcolor
		tx ty moveto
		tx ty 2 0 360 arc
		fill
		0 0 0 1 setcmykcolor
		encode findfont $StringFontSize scalefont setfont
		tx ty moveto
		str show
	end
} def

% 全体枠
0 0 moveto
0 $height lineto
$width $height lineto
$width 0 lineto
closepath
1 setlinewidth
0 0 0 1 setcmykcolor
stroke

% 小塚ゴシック Pro - M
$x1 $y1 /KozGoPro-Medium-UniJIS-UTF8-H <$String_utf8> putText
$x2 $y2 /KozGoPro-Medium-UniJIS-UCS2-H <$String_ucs2> putText
$x3 $y3 /KozGoPro-Medium-UniJIS-UCS2-HW-H <$String_ucs2> putText
$x4 $y4 /KozGoPro-Medium-UniJIS-UTF8-V <$String_utf8> putText
$x5 $y5 /KozGoPro-Medium-UniJIS-UCS2-V <$String_ucs2> putText
$x6 $y6 /KozGoPro-Medium-UniJIS-UCS2-HW-V <$String_ucs2> putText

showpage
EOL

open( OUT, ">:encoding(utf8)", $eps_file ) || die( "can't open '" . $eps_file . "'.\n" );
print OUT $eps;
close( OUT );

exit();

#### Subroutine ####

sub str_to_ucs2
{
	my( $sIn ) = @_;
	my( $sOut, $len, $i );

	$sOut = '';

	$len = length( $sIn );
	for( $i=0; $i<$len; ++$i ){
		$sOut .= sprintf( "%04x ", unpack( "U", substr( $sIn, $i, 1 )));
	}
	chop( $sOut );

	return $sOut;
}

sub str_to_utf8
{
	my( $sIn ) = @_;
	my( $sOut, $len, $i );

	$sOut = '';

	$len = length( $sIn );
	for( $i=0; $i<$len; ++$i ){
		$sOut .= unpack( "H8", substr( $sIn, $i, 1 ) ) . ' ';
	}
	chop( $sOut );

	return $sOut;
}

# EOF

ダウンロード

  • ソースコードと出力されるEPSファイル
    GA2.zip
  • EPSファイルをAcrobat Distiller 6でPDFに変換したもの
    GA2.pdf

#navi(Perl/EPSファイル作成)