サイトアイコン InDesign(インデザイン)専門の質の高いDTP制作会社―株式会社インフォルム

平滑度と出力解像度

平滑度と出力解像度

RIPで生成される線分

印刷物を作るという工程において、コンピュータを使うことでもっとも便利になったのは線画作成ではないでしょうか。以前であればロットリングやからす口で一本ずつ引いていたため、技術や経験が必要でしたが、Illustratorなどのソフトを使えば、どんな形の線でもペンツールで簡単に引け、しかも自由に変更もできるのですから本当に便利になったものです。

Illustratorで作る線画のように、形を簡単に編集できるオブジェクトデータを「ベクターデータ」と呼びます。ベクターデータは、四角いピクセルを等間隔に敷き詰めて構成される写真画像(ラスターデータ)と違って、座標と関数で定義されています。もちろん、直線は座標値だけでも定義できますが、曲線は関数を使うことで、きちんと定義することが可能になるのです。

たとえばA4サイズのオブジェクトの場合、ラスターデータであれば印刷物で一般的な解像度の場合、数十MBくらいのデータになりますが、ベクターデータならせいぜい数MB程度、しかもサイズがいくら大きくてもそれほど巨大なファイルにはなりません。

座標と関数で定義されているということは、座標値や関数を変更すれば形を変えられるということです。そのため、各ピクセルを操作しなければ形が変わらないラスターデータと比べると、形の変更がきわめて簡単かつ自由というのが最大のメリットになります。

ベクターデータで使われる関数にはベジェ関数や二次Bスプライン関数などがあります。ベジェ関数はPostScriptで、二次Bスプライン関数はTrueTypeフォントなどで使われています。

オブジェクトの形を関数で表すというのは、柔軟性が高く、データ容量も少ない便利な方法なのですが、これを出力する場面になると話は変わってきます。

パソコンで作られたデータをイメージセッタやCTPで出力する場合、パソコンから送られたPostScriptデータをRIPで解析し、出力機で出力できる単純な一枚構造のラスターデータにします。当然、関数で表現されているオブジェクトもビットマップのデータに変換しなければならないわけです。

関数で定義されているベクターデータをビットマップデータにする際、関数を使ってドット1つずつを演算していくのでは、高解像度出力の場合あまりにも大変です。そこで、RIPではまず関数で表現されている曲線から関数の要素を取り除きます。具体的に言うと、曲線をごく短い線分の集まりに分割するのです。線分は始点と終点の座標値だけで表せるので演算の負担も少なく、また、ビットマップデータに変換するのも簡単というわけです。

もちろん、線分がいくら短くても所詮は曲線ではなく、近似値に過ぎません。ただし、ドットで出力する以上、完全な曲線というものは作れません。要は、人の目に曲線に見えればいいわけです。

線分をコントロールする平滑度

曲線を短い線分に分割する際、問題になるのがその長さです。線分の長さが目で見分けられるほど長いと、曲線がカクカクとした折れ線になってしまいますし、あまり短すぎると線分の数が膨大になり、RIPの処理も大変です。

そこで、PostScriptにはこの長さをコントロールする「setflat」というコマンドが用意されています。このコマンドは、関数によって描かれる理論的な曲線とRIPで実際に生成される線分の間の空き(差)を指定するものです。たとえば、setflatが「2」であれば、曲線と線分の間が最大で(出力機の解像度で)2ピクセル分までに収まるように線分を生成するというわけです。

setflatコマンドは、DTPソフトでは「平滑度」と呼ばれています。たとえば、Photoshopでクリッピングパスを指定する際にダイアログで「平滑度」を指定する欄が表示されます。指定された切り抜きパスに合わせて切り抜き画像を出力する際、RIPは指定された曲線を線分に変換する作業を行いますが、その時、この平滑度によって線分が生成されるのです。

この平滑度の欄で指定できるのは0.2ピクセルから100ピクセルの間です。指定する値が大きければそれだけRIPの処理スピードも上がりますし、高解像度出力であればある程度大きな値でも曲線に見えますが、それでもあまり大きな値を入れるのは避けるべきです。2400dpi出力でもせいぜい数ピクセル程度、RIPの性能が上がった現在では最小の0.2ピクセルにしておいて問題はまずないでしょう。品質的にはこれがベストです。

なお、この欄を入力しなかった場合、出力デバイスで設定されている最適の値が適用されるはずですが、アクションでクリッピングパスを指定すると自動的に高い数値が指定されるという不具合が以前のバージョンにありました。バッチ処理する際は、一応平滑度の値も入力したほうが無難かもしれません。

また、Illustratorにもプリントダイアログのグラフィックの項目に「平滑度」を指定する欄があります。通常は自動になっていますが、自動のチェックを外せば「高画質」(平滑度1.0)から「速度」(平滑度10.0)の間で指定ができます。

以前のバージョンのIllustratorには、平滑度ではなく、属性パレットや書類設定の中に「出力解像度」(アウトプット)を指定する欄がありました。実はこれが平滑度と連動しています。平滑度は、曲線と線分の差(距離)を出力機の出力ピクセルで表したものですが、この線分は平滑度で指定したピクセル数を最小単位にした座標で表せます。つまり、平滑度が2ピクセルであれば、出力機の2分の1の解像度の座標で線分を引くことと同じになるわけです。

実際の出力機の解像度と線分の解像度、平滑度の関係を式で表すと、「出力機の解像度÷線分の解像度=平滑度」となります。平滑度が1なら出力機の解像度と線分の解像度は同じ、2であれば線分の解像度は半分ということになります。

以前のIllustratorで、この線分の解像度を指定していたのが、属性パレットの「アウトプット」欄や書類設定の「出力解像度」欄でした。この欄が800dpiになっていれば、2400dpi出力時には平滑度が3ピクセルの線分が生成されるわけです。

ところが、Illustrator 9.0では線のアウトライン化などの処理を行うとアウトプットが勝手に「100」に変更されてしまうというバグがありました(アップデートで解決)。出力解像度が100だと2400dpi出力で平滑度は24ピクセルとなり、出力された文字などの曲線が角張ってしまうことになります(実際にこういったトラブルが積み重なってIllustrator 9の評判を悪くしたのも事実)。

setflatはPostScriptのコマンドであり、「平滑度」を変えても画面上は何の変化もありません。それだけに出力してはじめてトラブルに気付くことになります。取り返しのつかないトラブルに巻き込まれないためにも、平滑度について十分理解し、問題が起こらないような指定を心がけることが大切です。

(田村 2007.10.1初出)

(田村 2016.5.31更新)

モバイルバージョンを終了