« 2006年02月12日 | メイン | 2006年02月14日 »

2006年02月13日

PDFの作成方法(20) – PDFドライバの解像度

2005年11月18日にPostScriptプリンタドライバとGDI型PDFプリンタドライバの相違について、WindowsのGDIの影響を受けるかどうか、という違いがあることを説明し、具体的な例として、カラーの処理を挙げました。

今日は、もうひとつの例として、解像度の問題を取り上げてみます。

Microsoft Windows、及びそのアプリケーションはディスプレイやプリンタを統一のGDI (graphics device interface)という機能を使って扱っています。アプリケーションが、直接、プリンタやディスプレイなどの物理デバイスに出力することはできません。原則としてGDI経由の出力になります。

プリンタでの印刷やディスプレイなどの表示デバイスには解像度という表示能力を表す尺度があり、dpiという単位で表します。dpiとはインチあたりのドット数の略です。デバイス上の1ドットは物理的なものです。これに対して、WindowsGDIの上では画像は1ピクセル単位で処理します。ピクセルというのは論理的なものですので、実際の出力ではGDI上のピクセルがデバイスのドットに割り付けられます。この割付はWindowsやデバイス・ドライバの役割となります。(以下、ここではとりあえず、ドットとピクセルを区別しないで考えます。)

GDI上で線を引くときは、ピクセル単位の塗りつぶしで表現します。ですので、次の図のように、GDIの上で表示できる線の最小の太さは1ピクセル幅ということになります。これは、デバイスの上では1ドット幅の線に相当します。

図 表示できる最小の線幅
BitmapDisplay.PNG

ここから予想されることは、アプリケーション・ソフトが細い直線を引いたとしても、GDIを経由する限り、それを実際にディスプレイの画面に表示したり、物理的なプリンタに出せるとは限らないということです。

実例で試してみましょう。まず、直線の太さを0.01ポイントから少しずつ太くしていくようなデータを作ります。

表示に使用するWindowsのディスプレイは、96dpi(1インチに96ドット)の解像度に設定してありますので、このディスプレイの上の1ドットの大きさは、(72ポイント/1インチ)÷(96ドット/1インチ)=0.75ポイントとなっています。
∵1インチは72ポイント。96dpiは1インチに96ドット。

1ポイントは約0.35mmですので、100分の1ポイントは、0.0035mmに相当します。このような細い線を指定できるWindowsアプリケーションは少ないと思いますので、普段はあまり眼にしたことがないかもしれません。XSL Formatterを使って、この線を表示してみます。

図 Windowsの画面にどの位の太さの線を表示できるか
BitmapDisplay-0214.PNG

この表示結果を見ますと、Windowsはディスプレイ上の1ドット相当よりも細い線も画面に表示しているようです。但し、細い線は正しく表示できていないことが理解できます。これは、ディスプレイの物理的な表示能力を超えているのですから、まあ、やむを得ないともいえます。(2006/2/14削除)

この表示結果を見ますと、Windowsは、ディスプレイ上で1ドット相当よりも細線も表示しています。これは、WindowsのGDIは1ドット相当よりも細い線については1ドットにして表示するためだそうです。(2006/2/14挿入)

解像度に応じて、ドットの大きさがどの位になるかを次の表に示しました。ディスプレイと比較しますとプリンタの解像度はもっと大きいのが普通です。通常のプリンタですと300dpiから600dpiでしょうか。例えば、600dpiのプリンタでは1ドットの大きさは0.12ポイントとなります。

DPI 1ドットの幅(単位:ポイント)
72 1.00
96 0.75
144 0.50
300 0.24
600 0.12
1200 0.06
2400 0.03

さて、例えば、Microsoft Word2003の罫線は、細いほうから1/4ポイント、1/2ポイント、3/4ポイントが設定できます。そうしますと、上の表から、この太さの線を正しく表示するのには、最低限600dpi、144dpi、72dpiの解像度が必要ということになります。

次に、実際に試して見ましょう。
Microsoft Word2003で、1/4ポイント、1/2ポイント、3/4ポイントの太さの罫線を引きます。

Wordの画面(200%に拡大)は次のようになります。

図 Wordの画面(200%拡大)
Word1-Original.PNG

・200%拡大しても1/4ポイント、1/2ポイントの線の太さは画面上で識別できません。

これをWordからアンテナハウスPDFドライバを使って、解像度設定を72dpi、300dpi、600dpiに設定してPDFを作成します。これを、Adobe Readerで300%に拡大して画面に表示します。

図 GDI型PDFドライバの解像度72dpiの時のPDFの線の太さ
Word1-AHPDF-72dpi.png

・72dpiでは3種類の線の太さを識別できていないことがわかります。

図 GDI型PDFドライバの解像度300dpiの時のPDFの線の太さ
Word1-AHPDF-300dpi.png

・300dpiではPDFの上でも3種類の線の太さが判別できます。

図 GDI型PDFドライバの解像度600dpiの時のPDFの線の太さ
Word1-AHPDF-600dpi.png

・600dpiは、画面上で拡大してみる限り、300dpiとあまり変わりません。

この3つの例から、GDI型PDFドライバでPDFを作成するとき、正しく表示できる線の太さは解像度設定によって変わることがわかります。これはGDI型PDFドライバは、WindowsのGDIの仕組みに依存しており、GDIがドット単位での処理を行っているためです。大雑把に言えば、どのGDI型PDFドライバでも似たような結果になるはずです。

投票をお願いいたします

投稿者 koba : 08:00 | コメント (2) | トラックバック