QXD-012
indexへもどる
boundingboxの数値を書き出すPostScriptが、キチンと点Aの部分はX=20mm・Y=17mm、点BはX=30mm・Y=27mmと書き出してくれれば、何の問題もないのですが、PostScriptのboundingboxは整数のpoint値しかサポートしないのです。
点Aはpointに換算するとX=56.6929pt・Y=48.1895ptとなりますが、PostScriptではX=56pt・Y=48ptと小数点以下の数字を丸めて整数にしてしまいます。この丸め方の規則は四捨五入でもないようです。
もちろん点BもX=85.0396pt・Y=76.5352ptX=86pt・Y=77ptと丸められてしまいます。

この点A・B共に丸められた、いいかげんな数値をboundingboxとしてIllustratorはPostScriptに書き出すのです。【図6】

この時点ですでに点Aで最大1pt未満(小数点以下の端数を丸めるので)、点Bでも同じく最大1pt未満、計2pt未満の誤差が、実際のオブジェクトとPostScriptの間に生じるのです。

この通り10mm×10mm(28.347pt×28.347pt)の正方形オブジェクトは、30pt×29ptになってしまいました。

【図6】

Illustrator上でルーラーの原点をオブジェクトの左下(点Aの位置)へ持っていくと、点Aの位置に誤差は生じませんが、点Bの位置はpointの整数値で無い限り、つまりオブジェクトが小数点の無いきりのいいpointの大きさでない限り、誤差が生じます。この場合の誤差は、最大1point未満となります。【図7】

【図7】

PhotoshopのDATAの場合、原点(点Aの位置)は必ず画像の左下になるため、図7と同じように最大1pt未満の誤差となります。【図8】

※追記:Illustrator9.0もこの方式となりましたので、誤差は1pt未満となります。

【図8】

原点である点Aの誤差の出方は、Illustrator上のどの位置に制作したかによって異なり、また小数点以下が切り捨てられるのか、切り上げられるのかはその都度違いますので、誤差はケースにより異なります。【図9】

【図9】

backindexnext