[comp.lang.postscript] qms800 bug ?

sarantos@notecnirp.Princeton.EDU (Sarantos Kapidakis) (03/14/89)

I think I have run into a postscript bug, on the QMS-PS 800 II,
running postscript version 47.0, release 3:
I try to make a new font, which combines characters from the Courier
and Symbol fonts.
In that simple case, my function works.
As a next step, I want to use some of the unencoded characters on the
Courier font.  The only way I know how to do that, is by reencoding this
font.
When I use reencoded fonts, the new font does not work, and produces
the "invalidfont" error on a "stringwidth" command.
But the individual reencoded fonts do work.
When I run the same program on a NeXT machine, it works.
Any ideas ? Any known bugs in this area ?
The similar known problem I have find is mentioned on the red book,
on page 309 writes for known problems on the LaserWriter version 1.0,
running postscript version 23.0:
More than two levels of recursion in calls to BuildChar procedures
may cause the LaserWriter to crash.  A user-defined font's BuildChar
procedure may execute a show using a built-in-font.  But it is unsafe for
that user defined font to be invoked from the BuildChar procedure of
yet another user-deffined font.
But I don't think this is the case, since reencoded fonts are just
considered built-in (they have the same FontType as before).
Any facts or ideas ?  Everything is welcome.
thanks
						sarantos

PS:  By the way, if there is any way to use unencoded characters in
a font (when called from another font), except by reencoding, let me
know, this may solve my problem for the time being.

greid@adobe.com (Glenn Reid) (03/15/89)

In article <15604@princeton.Princeton.EDU> sarantos@princeton.Princeton.EDU (Sarantos Kapidakis) writes:
>I think I have run into a postscript bug, on the QMS-PS 800 II,
>running postscript version 47.0, release 3:
>I try to make a new font, which combines characters from the Courier
>and Symbol fonts.
>In that simple case, my function works.
>As a next step, I want to use some of the unencoded characters on the
>Courier font.  The only way I know how to do that, is by reencoding this
>font.
>When I use reencoded fonts, the new font does not work, and produces
>the "invalidfont" error on a "stringwidth" command.
>But the individual reencoded fonts do work.
>When I run the same program on a NeXT machine, it works.
>Any ideas ? Any known bugs in this area ?

I think the problem is likely to be related to composite characters.
Those are characters formed from two or more existing characters.  An
example of this is the "aring" or "Aacute" characters, which are formed
from "a", "ring", "A", and "acute", respectively.

Check your new encoding vector to make sure that ALL the component
characters (like "a", "ring", "acute", etc.) for each composite
character are also in the encoding vector somewhere (it doesn't matter
where).  Also make sure that "dotlessi" is in the vector if you use
"iacute" or others that seem as though they would use the lower case
"i" as a component.

This restriction has, I believe, been fixed in newer interpreters,
which is probably why you don't see it on the NeXT machine.  However, a
large percentage of the installed base has this `feature,' and making
sure all the component pieces are encoded is your best bet.

In your case, you may have to reencode the Courier font in addition to
(or instead of) reencoding your own user-defined font.  It may be
possible to reencode at the same time that you are forming the
user-defined font, by simply installing a vector then instead of
copying the existing Encoding and later changing it.

Good luck,
 Glenn Reid
 Adobe Systems