[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

invisible rules in vfs





*** invisible rules in vfs ***

Let me go out on a limb.

CLAIM: The one and only aim of invisible rules in vfs and
dvi files is to cause a motion of the printer head
*without* incurring the risk of introducing a drift
correction at that point.

What is drift correction? It concerns execution of
resolution independent printer code on a pixel grid of fixed
resolution. More precisely, it is a printer head position
correction (usually horizontal) attenuating or eliminating
accumulated roundoff error in positioning on the pixel grid.

What is the problem?  The chief problem is that drift
correction occurring between characters/rules whose images are
close causes a *highly visible* effect and usually a random
one.  Print quality goes to pot. In particular, drift
corrections inside and between VF characters are anathema.

The name of the game: prevent such drift corrections by
suitable coding of VFs while allowing enough drift corrections
to keep absolute drift invisible.

Who administers drift correction? PostScript interpreters on
the one hand and the programmers of printer drivers for
simple-minded bitmapped printers on the other.  The latter
usually do this by borrowing code from dvitype.

I would bet that most sophisticated printers (PS, HP, QMS,...)
handle drift correction on the basis of the printer language
stream they receive, but according to complex rules that are
seldom, if ever, published, and which may indeed evolve and vary
with printer model.

Here is a key question re Postscript and TeX VFs: 

QUESTION: Given a postscript stream

   <character><other stuff><character'>

what is a sufficient restriction on <other stuff> to
assure that *no* PostScript drift correction will occur
between <character> and <character'>.

I hope Berthold will have a helpful answer as he often does!

There is of course a similar question for every drift
correction system, and the answer is indeed available for
dvitype (see the code on CTAN).

OPTIMIST'S HYPOTHESIS:
Every "DVI-to-whatever" driver is so programmed (or soon will
be) that if in a VF character, or in the DVI file itself,
there occurs a sequence

           <character><invisible rules><character'>

then drift correction between the characters will surely not 
occur.

I hope Berthold will tell us that this is a reasonable
hypothesis (even though it is not well formulated since VFs
are recursive etc etc).

If he does, then we have a good hunch as to why invisible 
rules occur in VFs.  

PESSIMIST'S HYPOTHESIS: Drift is the Achilles heel of VFs.
There is no good way to prevent drift correction within and
between VF characters; therefore VFs are not suitable for
first class typography at moderate resolutions.

Comments please!

              Cheers

                     Larry Siebenmann