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