[QuarkXPress奮戦記 vol.17]

QuarkXPressの単位と計測の怪(追記)

 vol.17をアップしたのち、ピッタリ収まるはずのテキストボックスに収まらないのは、ポイント換算と、その解の丸めによるものだ、と当サイトのDTPフォーラムでも少し話題になったし、雑誌でも同様の説明をみつけた。
 しかし僕は、どうも納得できない。これでは、級数の違いによって収まったり収まらなかったりすることが説明できないのだ。そこで、僕がDTPフォーラムに書き込んだことをもとに、ここに追記として掲載しておきたい。

■基準数値が1つなら単位が違っても結果は同じ

 まず、基準の数値が1つであれば、計算をどの単位でしていようが必ず合わなければならない。たとえば1mm=Aptとすると、14級10字詰めは、普通は次のように計算すると考えられる。

●ボックスをミリで計算しミリで表示…(3.5×Apt×10×(1/Apt))=35×Apt/Apt=35mm
●文字をQで計算しミリで表示……(14×(0.25Apt)×10×(1/Apt))=35×Apt/Apt=35mm

 コンピュータは式の前から順に計算するので、一般的な数学式の計算とは違い注意が必要だ。しかし上記はすべてかけ算とわり算なので同じ結果になる。これは、エクセルで計算して確認した。
「Apt」でミリをポイントに直し、最後に「1/Apt」で再びポイントをミリに直せば、この二つは結局両方とも必ず同じ35mmになってしまうのだ。仮に1mm=Apt、1Q=Bptと定義されていたとしても、ボックスと文字の関係は常に同じになるので、少なくとも、収まったり収まらなかったりということは起こり得ない。
 ということは、QuarkXPressは上記のようには計算していないことになる。

■数値ひとつひとつについて端数処理される?

 すでに見たように、実態として次のようなことがある。

(1)あらかじめ計算した数値でボックスを作れば、級数によって収まる場合と収まらない場合がある。
(2)四則演算をさせてボックスを作ると収まる。

 そうなるとこれは、端数処理がいつ行われているかに関係していると思わざるを得ない。5捨6入の端数処理が最後に行われるのと計算途中で行われるのでは、結果が異なるからだ。すると次のような仮説が成り立つ。
 文字は1字単位で計算が終結している。つまり、1字ごとにポイントに換算し、端数のどこかで5捨6入されて確定する。すると、級数によって微妙に大きな文字と微妙に小さな文字ができる。誤差は、おそらく1万分の1mm未満だろう。
 これを(1)のケースのテキストボックスに収めようとすれば、微妙に大きな文字は収まらず、微妙に小さな文字だけが収まる。つまり、級数によって収まる場合と収まらない場合があり得るわけだ。
 そして(2)のテキストボックスは、たとえば3.5mm×10にしろ14Q×10にしろ、まず「3.5mm」「14Q」がポイントに換算されて端数処理され、数値が確定する。その上で倍数が掛けられるから、この計算結果は文字と同じになる。したがってどの級数でもボックスに収まる、ということになる。

 つまり原因は、単にポイント換算ということだけではなく、端数処理の時期の問題だと思うのだ。もっと突っ込めば、QuarkXPressは式のひとつひとつの数値についてポイント換算処理を行い、それぞれ端数を処理して結果を確定している、ということだ。だから「3.5mm×10」と「35mm」は微妙に違う結果となる。これだと、考え方としては(1)のケースと(2)のケースの説明がつく。
 エクセルで実験してみたところ、(1)の現象が起こることは数値的にも確認できた。しかしそれが、実態である3級きざみで現れる、ということは検証できなかった。QuarkXPressが小数点以下何桁までのデータを扱い、どこで端数処理がされるのかがわからない。

 さて、ここまでやって、ずいぶんと核心に近づいたような気もするが、どんどん泥沼にハマりそうな気がするので、これ以上は追求しないことにした。いずれにしても、テキストボックスは四則演算で作るべし、ということだ。

(記/1998.6.18追記)

<<BACK

][