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互換とするか選択できる」追加

Illustrator CS5で文字を置換するスクリプト

イラレCS5での話ですが、置換ダイアログを出すところまでははアクションに登録できるものの、置換する文字の組み合わせは記録されません。
常に同じ文字を置換したくても、アクションでは対応できないのです。

仕方がないのでスクリプトをおさらいすることに。
検索するといろいろ出てくるのですが、文字を操作するスクリプトは大抵
activeDocument.selection
を使用しており、文字を選択していることが前提となっているので使いにくいことこの上ないです。
そこで、ドキュメント内全てのオブジェクトからテキストかどうかを判定して、置換に掛けるように組み直してみました。
ファイル名を「relpacement.jsx」とでもして保存すれば使えます。

var data = {src:"あ", dst:"い"};
var targetObj = [];

// ドキュメント内からテキストのみを取り出す
var docObj = activeDocument;
for(var i=0; i<docObj.pageItems.length; i++){
	typ = docObj.pageItems[i].typename;
	if (typ != "TextFrame") continue; // テキスト以外は無視
	targetObj.push(docObj.pageItems[i]); // 対象を格納
}

// テキストの該当文字を置換
for(var i=0; i<targetObj.length; i++){
	var regSrc = new RegExp(data.src, "gm");
	targetObj[i].contents = targetObj[i].contents.replace(regSrc, data.dst);
}


CS5では正常に動いていますが、CCはでは不明です。
そもそもアクションに記録できるようになっているのかな?
CS6以降なら、スクリプトの実行もアクションに登録できるらしいので、さらに楽になりますね。
CS5ではいちいちファイルを指定しないとだめです。

Adobeの体験版をインストールしたらひどい目にあった

IllustratorのデザインをHTMLに起こす作業が必要になって、Dreamweaverなら一発で変換できるかもしれないと入れてみた。
結論からするとできなかったわけだが、後で気がついたことがいろいろと。

まずファイルの関連付けが強制的に変更される。
テキスト関係の関連付けがごっそりと入れ替わってひどい目にあった。
それに、コンテキストメニューにAdobe Driveというよくわからないメニューが追加されて非常にうっとうしい。しかも表示しない設定がどこにもない。

Adobeの技術にはいろいろとお世話になっているけれど、こういう所はまったくもって共感できない。
レジストリいじるしかないのかなぁ。はぁ。

Inkscapeがいつのまにか0.47になっていた

Illustrator要らずのパス系ツールのInkscapeです。
お仕事でEPSを描くときもInkscapeで充分です。
むしろ汚いEPSを吐き出すIllustratorよりも美しいEPSを吐き出すInkscapeのほうが、コーダにとっては評価は上です。

2009年の11月24日にバージョン0.47がリリースされていたようなので、早速入れ替えてみました。
メニューが一部変化したのと、日本語化されている場所が増えました。
操作面ではそんなに違いはなかったのですが、マスクやクリップがEPSで出力されない不具合が修正されていました。とても助かります。
あとはCMYKで出力できれば言うことなしなのですが。RGBを単純に変換しただけでもかまわないんですけどね~

RGBとCMYKのお話

RGBは加法混色、CMYKは減法混色。
モニタで見る色と、印刷で見る色は異なり、同じ色を出すことはできません。
この違いをどうエミュレートするかが、DTPの鍵なので、いろいろ調べてみました。

有名な変換式
RGB→CMYK

  C=(1-R-K)/(1-K)
  M=(1-G-K)/(1-K)
  Y=(1-B-K)/(1-K)
  K=min(1-R,1-G,1-B)


CMYK→RGB

  R=1-min(1,C*(1-K)+K)
  G=1-min(1,M*(1-K)+K)
  B=1-min(1,Y*(1-K)+K)

これらの式はいわゆる論理式に近く、実際に使用できるほどの精度はない。
RGBとCMYの最小値~最大値を変換しているだけで、色の再現性は無視されている。
そこで、DPのソフトウェアでは、独自の式を用いている場合が多いが、イラストレーターの場合はバージョンで式が異なる。そこで、いったいどうなっているのか調べてみたので、記録しておく。

イラストレータ7の場合

赤を変換してみる。
C:M:Y:K=0:100:100:0

R:G:B=255:0:0

C:M:Y:K=1.17:96.55:91.8:0

R:G:B=250:13:10

C:M:Y:K=2.34:94.92:91.02:0.39

この後はどんどんずれていき、
R:G:B=236:22:11
C:M:Y:K=6.25:91.41:92.97:0.78
前後で安定する。
どのような式で変換されているのかまったくの不明である。

イラストレータCS3の場合

C:M:Y:K=0:100:100:0

R:G:B=204:34:41

C:M:Y:K=0:100:100:0

R:G:B=204:34:41
と、CS3では可逆変換になっている。
ちなみにRGBから変換すると、
R:G:B=255:0:0

C:M:Y:K=0:96.08:89.8:0

R:G:B=255:0:0
こちらも可逆らしい。
イラレ7とは異なる式が用いられているのは明らか。

Photoshop7の場合

C:M:Y:K=0:100:100:0

R:G:B=237:28:36

C:M:Y:K=0:100:100:0
こちらも可逆変換のよう。
RGBから変換すると、
R:G:B=255:0:0

C:M:Y:K=0:99:100:0

R:G:B=255:0:0
こちらも可逆変換と思われる。
しかし、CS3とはRGBが異なり、異なる式が用いられているらしい。

GIMP2.6の場合


C:M:Y:K=0:100:100:0
||
R:G:B=255:0:0
簡単な式によって変換されている。
推測だが、ImageMagickもGIMPと同じ式を用いて変換されているらしい。

  C=1-(R/255)
  M=1-(G/255)
  Y=1-(B/255)


但し
C=M=Yの場合に限り

  K=C
  C=M=Y=0


となる。

結論としては、CMYKを基準にして、ディスプレイでは適当なRGBを選択しておき、EPSなどにするときは内部でテーブルを用意して置き換えるのがよさそうです。

イラレのEPSファイルを考察する

今回は文字についての考察です。
文字を比較していて気がついたのですが、イラレのEPSフォーマットは8と9で大きく異なります。

まず、文字の記述方法です。
イラレ8までは、「(abcdefg) TX 1 0 Tk」となりますが、
イラレ9以降では、「(abcdfeg) sh」となります。

文字を含むかどうかをチェックしたい場合、
イラレ8までは、ほかにtxを含むものがないので「/\) tx/i」でよく、
イラレ9からは、shの後は必ず改行があり、showとかぶるので「/\) sh\r?\n/」となります。「\r?\n」とするのは、エディタで改行コードを変えた場合に備えておきます。

次は画像についてです。
イラレ8までは、「%AI5_File:」があれば画像情報を含んでいることになります。
イラレ9ではどうやらPDFとして埋め込まれているようで、フォーマットについて理解がありませんが、おそらく「Adobe_AGM_Image」このあたりが怪しいです。

とりあえず、こんな感じです。

イラストレーターのEPSデータを考察

イラストレータといっても、手持ちのは古いままで7でのお話です。
EPSで保存すると、プレビューとサムネールを保存するかどうかの確認がありますが、これはいったいどのように格納されているかを調べてみました。

調べるといっても、サムネイルもプレビューも含まないで保存したEPSファイルと、サムネイルまたはプレビューを含んだEPSファイルを比較しただけです。

保存したファイル名と保存日時のデータは無視して、それ以外を比較します。

まず、サムネイルを含んだEPSファイルを比較しました。
違っていたのは、以下のとおりです。
46行目にある
%AI7_Thumbnail: 128 128 8
から
%%EndData
これが、サムネイルデータのようです。
バイナリが16進で格納されているようです。
どの画像形式かはわかりませんが、おそらくTIFFではないでしょうか。

次に、プレビューを含んだEPSファイルを比較しました。
違っていたのは、以下のとおりです。
1行目の先頭にバイナリデータが含まれています。
その後に通常のEPSデータが始まります。
%!PS-Adobe-3.0 EPSF-3.0
そして34行目に、
プレビューを含まないEPSファイルでは
%AI3_DocumentPreview: Header
となっているところが、
プレビューを含むEPSファイルでは
%AI3_DocumentPreview: PC_ColorTIFF
となっいます。
そして一番最後にまたバイナリデータが含まれています。
通常のEPSデータの末尾である
%%EOF
の後に、バイナリデータが追加されています。

他のイラストレータのバージョンでは、また違うかもしれません。
比較に使用したファイルをおいておきます。
サムネイルもプレビューも含まないEPSファイル
サムネイルを含むEPSファイル
プレビューを含むEPSファイル