Illustrator CCまでのバージョンで何が変わった?

いまだにつきまとうバージョン違いの挙動。
大きく何が変わったのか簡単にメモをしておこうかと。

Illustrator 8
---- 透明実装(PSでの互換性が一部失われる)、AI形式の実態がPDFファイルになる
Illustrator 9
---- 保存時にPDF互換とするか選択できる
Illustrator 10
---- テキストエンジン変更(PSでのテキスト不具合が大量発生)
Illustrator 11(CS)
Illustrator 12(CS2)
Illustrator 13(CS3)
---- 複数アートボード実装(PSでの互換がほぼ失われる)
Illustrator 14(CS4)
Illustrator 15(CS5)
---- 64bitでの高速化(環境によってクラッシュのラッシュ)
Illustrator 16(CS6)

2016-11-30 9と10の間に「追加保存時にPDF互換とするか選択できる」追加

イラレと同じ大きさの画像を作る

ImageMagickでEPSを背景なしのpngにする方法があったけど、やり方をすっかり忘れてしまったので、GostScriptにお願いすることに。

・イラストレータで見た大きさと同じ画像に変換するには「-r72」のおまじない
・背景を透明にするには「-sDEVICE=pngalpha」のおまじない

を唱えよう

gs -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pngalpha -dEPSCrop -r72 -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -sOutputFile=output.png input.eps

Windowsの場合はgsではなくgswin32cになります。

PostScript::Simpleで楕円を書く

PostScript::Simpleには楕円を描くためのメソッドは用意されていません。
そのため、自力で書く必要があります。

コツは楕円の中心へtranslateして、そこを中心にscaleします。
用意されているcircleメソッドで円を書いて、
scaleを元に戻して、translateも元に戻します。
これで元の座標軸に戻ります。

# 楕円のサイズ
my $width  = 100;
my $height = 50;

# 横幅を基準に描画する
$ps -> {'pspages'} .= sprintf( "%d %d translate\n", $width, $height );
$ps -> {'pspages'} .= sprintf( "1 %.2f scale\n", $height / $width );
$ps -> circle( 0, 0, $width );
$ps -> {'pspages'} .= sprintf( "1 1 %.2f div scale\n", $height / $width );
$ps -> {'pspages'} .= sprintf( "-%d -%d translate\n", $width, $height );

movetoとの使い分けが難しいですね。
楕円のときだけtranslateなのかな?