Digital PDFs
Documents
Guest
Register
Log In
EK-LN03R-SP-001
April 1987
170 pages
Original
31MB
view
download
OCR Version
15MB
view
download
Document:
LN03R ScriptPrinter Programmer's Supplement
Order Number:
EK-LN03R-SP
Revision:
001
Pages:
170
Original Filename:
OCR Text
LNO3R SCRIPTPRINTER Programmer’s Supplement Order Number: EK-LNO3R-SP-001 This manual provides information that programmers or system managers need when writing programs that use the facilities of the LNO3R printer. Revision/Update Information: This is a new document. Operating System and Version: VAX/VMS, Version 4.4 or later MicroVMS, Version 4.4 or later Software Version: digital equipment corporation maynard, massachusetts LNO3R ScRIPTPRINTER Software V1.0 First Printing April 1987 The information in this document is subject to change without notice and should not be construed as a commitment by Digital Equipment Corporation. Digital Equipment Corporation assumes no responsibility for any errors that may appear in this document. The software described in this document is furnished under a license and may be used or copied only in accordance with the terms of such license. No responsibility is assumed for the use or reliability of software on equipment that is not supplied by Digital Equipment Corporation or its affiliated companies. Copyright ©1986 by Digital Equipment Corporation All Rights Reserved. Printed in U.S.A. The READER'S COMMENTS form on the last page of this document requests the user’s critical evaluation to assist in preparing future documentation. The following are trademarks of Digital Equipment Corporation: DEC DIBOL UNIBUS DEC/CMS EduSystem VAX DEC/MMS IAS VAXcluster DECsystem-10 PDP VT DECnet MASSBUS DECSYSTEM-20 PDT DECUS RSTS DECwriter RSX VMS o mnmnnau POSTSCRIPT is a registered trademark of Adobe Systems Incorporated, Palo Alto, California TRANSCRIPT is a registered trademark of Adobe Systems Incorporated, Palo Alto, California Tektronix is a trademark of Tektronix, Inc., Beaverton, Oregon I Times is a trademark and Helvetica is a registered trademark of Allied Corporation LaserWriter and LaserWriter Plus are registered trademarks of Apple Computer Corporation MS(TM)-DOS is a registered trademark of Microsoft Corporation R, ML-S744 This document was prepared using an in-house documentation production system. All page composition and make-up was performed by TeX, the typesetting system developed by Donald E. Knuth at Stanford University. TeX is a trademark of the American Mathematical Society. Contents Xi PREFACE LNO3R ScrirTPrinTER PROFILE 1-1 1.1 PRINTER HARDWARE Print Engine 1.1.1 Controller Device 1.1.2 and Output Devices Input Paper 1.1.3 1-2 1-3 1-4 1-4 1.2 HARDWARE REQUIRED ON HOST SYSTEM 1-4 1.3 PRINTER SOFTWARE 1.4 ANCILLARY INTERFACES 1-5 1.5 APPLICATION PROGRAMS 1-5 PostScrirt SYSTEM PARAMETERS 2-1 2.1 ACCESSING SYSTEM PARAMETERS 2-2 2.2 PERSISTENT AND VOLATILE PARAMETERS Changing Persistent Parameters 2.2.1 2-2 2-2 2.3 INTERACTIVE MODE 2-5 2.4 SCAN CONVERSION PARAMETER 2-6 CHAPTER 1 CHAPTER 2 1.3.1 2.2.2 Translators Changing Volatile Parameters 1-5 1-5 2-5 2.5 2.6 PAPER HANDLING PARAMETERS 2-8 2.5.1 Paper Orientation 2.5.2 2-9 Margins 2-9 MISCELLANEOUS SYSTEM PARAMETERS 2-10 2.6.1 Page Counter 2.6.2 Printer Name 2.6.3 2-10 Test Page Status 2.6.4 2-10 Password 2-11 2-10 - 2.6.5 Default Timeouts 2.6.6 2-11 Scratch Memory 2-11 2.6.7 Name of Current Job 2.6.8 2-12 Software Revision 2-12 2.6.9 Encoding Vectors 2-12 P CHAPTER 3 3.1 3.2 PostScrirr EXTENSIONS 3-1 PosTScRIPT EXTENSION OBJECT TYPES 3-1 USING THE EXTENSIONS 3.2.1 3-2 Extensions Restrictions 3-2 CHECKPASSWORD 3-3 DEFAULTJOBTIMEOUT 3-4 DEFAULTTIMEOUTS 3-5 DOSTARTPAGE 3-6 EESCRATCH 3-7 EEXEC 3-8 EXECUTIVE 3-9 EXITSERVER 3-10 IDLEFONTS 3-11 JOBNAME 3-13 JOBTIMEOUT 3-14 MARGINS 3-15 PAGECOUNT 3-16 PAGESTACKORDER 3-17 IO PAPERSIZE PRINTERNAME PRODUCT REVISION SETDEFAULTJOBTIMEOUT 3-18 3-19 3-20 3-21 3-22 SETDOSTARTPAGE SETEESCRATCH 3-24 3-25 SETDEFAULTTIMEOUTS SETIDLEFONTS SETJOBTIMEOUT SETMARGINS SETPASSWORD SETPRINTERNAME SETVMLIMIT WAITTIMEOUT CHAPTER 4 FONT METRICS 3-23 3-26 3-28 3-29 3-31 3-32 3-33 3-34 4-1 4.1 FONT METRIC FILE NAMES 4-1 4.2 FORMAT OF FONT METRIC FILES Global Section 4.2.1 4-3 4-5 4.2.2 4.2.3 4.2.4 Character Metrics Section Kerning Data Section Composite Character Section 4-7 4-8 4-10 v CHAPTER 5 OPTIMIZING PERFORMANCE 5-1 5.1 BASIC CONCEPTS 5-1 5.2 SMALLER OPERATOR NAMES 5-2 5.3 AUTOMATIC SPACING 5-2 5.4 USE OF BIND OPERATOR 5-2 o 5.5 ELIMINATING UNNECESSARY PROCEDURE CALLS 5-2 5.6 SCALING THE COORDINATE SYSTEM 5-3 5.7 SHOWPAGE AND COPYPAGE 5-3 5.8 #COPIES FOR MULTIPLE COPIES 5-4 5.9 IDLE FONTS 5-4 P CHAPTER 6 6.1 6.2 6.3 PROGRAMMING FOR THE LNO3R 6-1 PRINTING DEVICE CONTROL 6.1.1 Using POSTSCRIPT Extension Operators 6-1 6-2 6.1.2 Redefining Standard POSTSCRIPT Operators 6-2 PosTScRIPT OPERATORS 6-3 6.2.1 Device-Dependent Programs 6-3 6.2.2 Preserving the Context State 6.2.3 6-3 Restrictions to Operators 6-4 VIRTUAL MEMORY 6-6 6.4 CHANGES TO STANDARD PosTScriPT OPERATORS ON THE LNO3R 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.4.7 Limit to Dictionary Stack Entries findfont gsave Polygon Fill quit start vmstatus 6-9 6-9 6-9 6-9 6-9 6-10 6-10 6-10 6.5 WRITING A PosTScriPT SOFTWARE DRIVER 6.5.1 Useful Techniques 6.5.2 Techniques to Avoid 6-11 6-11 6-12 6.6 CONTROL CHARACTERS 6-12 6.7 PRINTABLE CHARACTERS 6-13 APPENDIX A FONTS A-1 APPENDIX B ENCODING VECTORS B-1 APPENDIX C 40 COMPATIBILITIES AND DIFFERENCES: LNO3R AND PRINTSERVER C-1 C.1 VIRTUAL MEMORY C-1 C.2 OPERATORS C-1 C.3 COMMUNICATIONS INTERFACE | C-2 APPENDIX D D.1 MS-DOS AND ULTRIX INSTALLATIONS D-1 USING THE LNO3R WITH MS-DOS D-1 D.1.1 Using Applications with MS—-DOS D-1 D.1.2 Transmitting Print Requests D-2 D.2 USING THE LNO3R WITH VMS VAXMATE SERVER D-3 D.3 USING THE LNO3R WITH ULTRIX D-4 D.3.1 D-4 APPENDIX E The TRANSCRIPT Application CHARACTER BITMAP DISTRIBUTION FORMAT E-1 E.1 TAPE FORMAT E-1 E.2 FILE FORMAT E-2 E.3 METRIC INFORMATION E-3 E4 AN EXAMPLE FILE E-6 GLOSSARY Glossary-1 INDEX EXAMPLES 2-1 viii Defining the DECMCS Encoding Vector 2-12 2—-2 Defining the ISOLatin1 Encoding Vector 2-13 3-1 Setting Margins on the Printer 3-30 4-1 Sample Font Metric (AFM) File 4-4 FIGURES 1-1 1-2 A-1 A-2 A-3 A—-4 A-5 A-6 A-7 A-8 B-1 B—-2 B-3 B—4 E-1 E-2 1-1 1-3 A-2 A-4 A-6 A-8 A-10 A-12 A-14 A-16 B-2 B-3 B-5 The LNO3R System Major Hardware Systems ITC Avant Garde Courier Helvetica ITC Lubalin Graph New Century Schoolbook ITC Souvenir Times Symbol Adobe Standard Encoding Vector Symbol Encoding Vector ISO Latin1 Encoding Vector DEC MCS (DIGITAL Multinational Character Set) Encoding Vector Example of a Descender Example with the Origin Outside the Bounding Box B-7 E-4 E-5 LNO3R Persistent Parameters LNO3R Volatile Parameters Interactive Mode Control Characters Font Numbers for Idle Scan Conversion Font Metric Files Characters Listed in the Order of Adobe Standard Encoding Characters Listed in the Order of Symbol Encoding Characters Listed in the Order of ISO Latin1 Encoding Characters Listed in the Order of DEC MCS Encoding Characters Listed in Alphabetical Order Undefined PRINTSERVER 40 Operators 2-4 2-5 2-6 2-7 4-2 B-8 B-9 B-11 B-13 B-15 C-2 TABLES 2-1 2-2 2-3 2—-4 4-1 B-1 B—2 B—3 B—4 B-5 C-1 ___ ix i TSRO, o L B AR IS A o AR Preface Intended Audience This manual is for programmers creating POsTScRriPT programs or applications that generate PosTScrIPT programs. In addition to programmers, system managers can use this manual to make adjustments to the LNO3R printing environment. You should be familiar with the PostScriprT page description language and with the PostScripT Language Reference Manual and PostScripT Language Tutorial and Cookbook. Structure of This Document The manual contains the following chapters and appendixes: Chapter 1 introduces the LNO3R by describing its major components. Chapter 2 explains the system-specific capabilities of the LNO3R, organized by function. Chapter 3, the main reference section, describes system-specific PosTScriPT operators, listed in alphabetical order. Chapter 4 explains how your application can obtain font metric information for the fonts supplied with the LNO3R. Chapter 5 explains how to improve the performance of PosTScrirt programs that you or your applications send to the LNO3R. Chapter 6 gives guidelines for writing PostScripT programs that will run successfully in the DIGITAL printing environment. Appendix A describes and shows samples of the 29 fonts on the LNO3R. Appendix B shows the encoding vectors for Adobe Standard Encoding, Symbol encoding, ISOLATIN1 encoding, and DECMCS encoding. * Appendix C describes the compatibilities and differences between the LNO3R and PRINTSERVER 40. * Appendix D describes installing and using the LNO3R in the MS-DOS * A glossary of terms and index is provided for reference. and Ultrix environments. Conventions Used in This Document This document uses the following conventions: Convention Meaning Boldface Boldface words and letters used in formats, examples, and text specify PostScrirr keywords. In page descriptions, you should type the keyword exactly as shown. Italics When italic words and letters appear in command formats, substitute an appropriate word or value for the word or letter. When italic words appear in normal text, they indicate the first use of a new term. Square brackets in command formats indicate that the enclosed item is optional. {) T Braces in command formats enclose lists from which you must choose one alternative. The choices are listed vertically or separated by the vertical bar symbol (I). A horizontal ellipsis in command formats indicates that the preceding item(s) can be repeated one or more times. A vertical ellipsis in examples indicates that code has been omitted. AR AR Meaning Convention CTRL/x | This symbol indicates that you should press the key labeled CTRL while you simultaneously press another key, for example, CTRL/Z, CTRL/C, CTRL/O. This symbol indicates that you should press the RETURN key. Associated Documents The following documents are associated with the LNO3R: VAX/VMS Tools Reference Manual: LNO3R SCRIPTPRINTER VAX/VMS Management /User’s Guide: LNO3R SCRIPTPRINTER VAX /VMS Software Installation Guide: LNO3R SCRIPTPRINTER PostScript Quick Reference Guide: LNO3R SCRIPTPRINTER LNO3R ScripTPRINTER Operator Guide LNO3R ScripTPRINTER Installation Guide PostScrirt Translators Reference Manual PostScript Language Tutorial and Cookbook PostScripT Language Reference Manual The following document may also be useful for reference: Font File Format User’s Manual: Order No. EK-CFFFM-UG-001 A AN OSR A e R ] R Chapter 1 LNO3R ScriPTPRINTER Profile The LNO3R combines hardware and software into a printing system that many users can share. The major components of the system are the printer and the host, as shown in Figure 1-1. Figure 1-1: PRINT The LNO3R System REQUEST HOST PRINTER PAPER MLO-228-87 This chapter introduces the LNO3R system by describing its major components. Section 1.1, which describes the printer, deals mainly with system hardware. The remaining sections describe the software. LNO3R SCRIPTPRINTER Profile 1-1 1.1 Printer Hardware * The LNO3R printer is a laser output device that contains firmware to receive incoming print files and the following hardware systems: ® A device controller to process PostScript file data (page descriptions) into bitmap images ® A print engine to produce marks on paper * Paper input and output devices * Power distribution unit The printer composes the image in a full-page bitmap memory, then processes the image to produce a serial bit stream that is compatible with the print engine. The print engine, in turn, uses laser electrophotography to deposit the image on plain paper. Figure 1-2 illustrates the LNO3R subsystems. SO 1-2 LNO3R SCRIPTPRINTER Profile Figure 1-2: Major Hardware Systems - OUTPUT TRAY, 250 SHEETS STACKER PRINT ENGINE ‘ UNIT 8.5 x 11" INPUT TRAY, 250 SHEETS SERIAL TM LINE 1 DEVICE CONTROLLER POWER DISTRIBUTION , UNIT - AC INPUT MLO-229-87 B s v I b 1.1.1 Print Engine The print engine produces images. Using a nonimpact printing technique, a low-power laser generates image-forming charges one line at a time on - the surface of a belt. Then the printer applies a dry powder (toner) to the belt; the powder adheres only to the charged areas. The powder is then transferred to the paper and fused on. The print engine accepts 1-bit/pixel data from bitmap memory and generates images having 300-pixel/inch resolution. Maximum printing speed for the print engine is eight A-size pages/minute, although the actual speed depends on the page composition time; complex pages reduce the throughput. The print engine contains internal logic that synchronizes the printing process. This controller makes sure the paper is fed to the print engine at the proper time, the marks are made on the paper, and then the paper is ejected from the engine. 1.1.2 Device Controller The device controller is a Motorola 68000-based microprocessor. It contains a POSTSCRIPT interpreter, firmware in ROM, PosTtScripT virtual memory and full-page bit-mapped memory in RAM, plus communications hardware to support the host serial port and print engine signals. 1.1.3 Paper Input and Output Devices The LNO3R contains a 250-sheet input tray and a 250-page output tray. A device called the face-down stacker feeds paper to the output tray. A switch on the back of the LNO3R should agree with the paper size being loaded into the print engine. This setting should also agree with the papersize operator as described in Chapter 3. 1.2 Hardware Required on Host System The host system for the LNO3R must have a hard disk drive with 2000 blocks of storage available for LNO3R software and an RX50, TK50, or 1600 BPI magnetic tape for software distribution. The host system must have an RS-232 or RS-423 serial interface to connect to the LNO3R. Refer to the LNO3R ScrIPTPRINTER Installation Guide for more information. 1-4 LNO3R SCRIPTPRINTER Profile | 1.3 Printer Software The LNO3R operates with a VMS, MicroVMS, Ultrix, or MS-DOS operating system. The software configuration depends on the host’s operating system. Refer to the software installation kit or the operating system documentation for more information. 1.3.1 Translators Application programs that output data other than PosTScripT must use a translator to convert output files into PostScript. Translator facilities differ between operating systems. Refer to the VAX/VMS Software Installation Guide: LNO3R ScrIPTPRINTER or to the documentation for your operating system. 1.4 “ Ancillary Interfaces In addition to the primary hardware systems already discussed, there are additional interfaces into and out of the LNO3R system: e e 1.5 Host serial port—Receives PosTScrIPT programs and control codes from the host system. Print engine operator panel—Allows the operator to control the print engine in order to recover from errors and change configuration. Application Programs Application programs running on host systems produce print files for the LNO3R. Examples of such applications are: * Text formatters e Computer-aided design tools * Spreadsheets e Graphics editors LNO3R SCRIPTPRINTER Profile 1-5 The output of these applications can be PostScrirt, ReGIS, Tektronix, or simple ANSI text, although PosTScripT is preferred. - NOTE New applications should produce PosTScrirT output for greatest efficiency and to make the best use of the LNO3R’s features. If your application is designed to produce files for the LNO3R, those files should be PostScripT page descriptions. i LNO3R SCRIPTPRINTER Profile fi Chapter 2 n Parameters PosTSCRIPT is a page description language that describes the appearance of text, graphical shapes, and scanned images on printed pages. The LNO3R converts programs written in PosTScriT to printed pages. The PosTtScripT language is portable. A single program written in PostScripT produces an equivalent printed document, regardless of which model PostScripT printer is used. This portability is ensured only for programs that use standard (non-device-specific) POsTScrIPT operators. The LNO3R has unique features that distinguish it from other POSTSCRIPT printers. Certain system parameters, such as password, job names, paper margins, paper sizes, page counts, and timeout values, are manipulated by the LNO3R in ways that may apply differently or not at all to other PosTSCRIPT printers. This chapter describes the system parameters on the LNO3R. Accessing the LNO3R system parameters require some of the LNO3R extensions to the PosTScripT language. Those extensions are discussed in this chapter and are fully described in Chapter 3. POSTSCRIPT System Parameters 2-1 2.1 Accessing System Parameters B PostScript stores LNO3R system parameters in a special dictionary named statusdict. This dictionary contains operator, string, and integer objects that constitute the PosTScripT language extensions for the LNO3R. By comparison, the systemdict and userdict dictionaries contain standard PosTScripT operators and procedure definitions. - only the e To alter a system parameter, execute statusdict begin. This pushes statusdict on the dictionary stack. You can then execute the operators and objects defined in statusdict. To exit statusdict, execute the end statement. »: The following example illustrates this procedure using the setvmlim it operator: statusdict begin — 470 setvmlimit end 2.2 Persistent and Volatile Parameters The LNO3R has two kinds of parameters: persistent and volatile. Persistent parameters are stored in nonvolatile memory (NVM) located in the printer, so their values persist even when the machine is turned off, Persistent parameters are sometimes called nonvolatile parameters. Volatile parameters, on the other hand, remain in effect only during the execution of a job. When a job completes, volatile parameters revert to the default values. 2.2.1 | Changing Persistent Parameters - m To change a persistent parameter, a job must bypass the normal initialization sequence that begins and ends every job. This initialization sequence, called the server loop, consists of the system executing the save and re- store operators to ensure that changes to virtual memory in one job do not persist into the next job. By escaping from the server loop, a job can make changes that persist until the printer is powered off. 2-2 POSTSCRIPT System Parameters SR | To escape from the server loop, issue the following PosTScrirT statement: serverdict begin password exitserver where: serverdict Refers to a special dictionary. This dictionary is distinct from statusdict. password Is a string that provides control over the ability of user jobs to escape the server loop. exitserver Is the procedure in serverdict that exits the server loop. CAUTION 1. Application programs should never exit the server loop. From outside the server loop, you have direct access to all system parameters and you can damage the printer configuration beyond your ability to reconfigure or repair it. To change persistent parameters, PosTScrIPT programs require a password. The system manager sets the system password, and only a system manager should be permitted to change persistent parameters. Your POsTScRIPT program checks the system password with the checkpassword operator. If your application generates a PosTScripT program that needs the password, the application should first query the user and check the password. If the password you supply when exiting the server loop is incorrect, exitserver executes the error invalidaccess. If the password is correct, exitserver performs an implicit restore and clears the operand and dictionary stacks, as if preparing to execute the next job. However, it does not perform another save. (Actually, the system does start a new job, but without sending the usual end-of-file indication on the communication channel. Therefore, the PosTScripT program must not issue an end to match the serverdict begin.) Having executed a successful exitserver, your PosTScripT program can invoke the statusdict operators that change persistent parameters until the next end-of-file. Changes the program makes to the state of the PosTSCRIPT VM — such as creating new objects and storing values into dictionaries — persist until power-off. The initial states of all subsequent jobs contain the modified VM. POSTSCRIPT System Parameters 2-3 During execution of a program outside the server loop, VM is not protected from changes that could cause the system to malfunction. Also, VM resources consumed by the program remain until power is cycled to the LNO3R (the LNO3R is turned off and on). Table 2-1 lists the persistent parameters of the LNO3R and their extensions. The table lists, in parentheses, the object type of an extension if it is not an operator. For a complete description of these parameters, see Chapter 3. Table 2—-1: s LNO3R Persistent Parameters Parameter Extension Communication parameters setsccbatch”, sccbatch Device controller firmware ID deviceid Exit save/restore context exitserver Fonts to scan convert setidlefonts*, idlefonts Margin values setmargins’, margins Name of printer setprintername”, printername Name of product product (string) Page count pagecount (integer) Paper size and load direction papersize Page stacking order pagestackorder Password for system manager checkpassword, setpassword” Print engine model ID deviceid Printer error printererror Revision of machine-dependent revision (integer) R B, e s T PostScript software Scratch memory values seteescratch*, eescratch Test page selection setdostartpage”, dostartpage Timeout values, default setdefaulttimeouts”, defaulttimeouts, setdefaultjobtimeout®, defaultjobtime- s out * ‘ Indicates an operator that requires you to exit the server loop. R R 2-4 POSTSCRIPT System Parameters 2.2.2 Changing Volatile Parameters Some volatile parameters are string or integer values that you can read and write using PosTtScriPT dictionary operators, such as get and put. You access the other volatile parameters by using statusdict operators. Table 2-2 lists the volatile parameters and the object type of an extension if it is not an operator. For a description of the volatile parameters, see Chapter 3. Table 2—-2: LNO3R Volatile Parameters Parameter Extension Interactive mode executive Name of current job jobname (string) Timeout values jobtimeout, setjobtimeout, waittimeout Virtual memory limit 2.3 setvmlimit Interactive Mode Normally, the LNO3R printer operates in batch mode, consuming and executing a sequence of POSTSCRIPT programs received from the host system. The LNO3R also supports interactive mode by which you interact with the LNO3R’s PostScripT interpreter by connecting an ANSI terminal to the printer with a standard RS-232 serial interface. Use a “null modem” cable, which reverses the Transmit Data and Receive Data signals, to connect the terminal to the host serial port of the LNO3R printer. Characters typed at the terminal are transmitted to the printer. The printer then displays the typed characters (and other information) on the terminal screen. Interactive mode should be used by application programmers as a PostScriptT debugging tool and should never be invoked from within a POSTSCRIPT program. The executive operator allows you to enter interactive mode. This operator is described in Chapter 3. To enter interactive mode, enter: executive POSTSCRIPT System Parameters 2-5 This entry does not echo to the screen, since the LNO3R is in batch mode. After the carriage return, the LNO3R enters interactive mode. The PosTSCRIPT interpreter issues the following prompt for user input: PS> You can then input PosTScripT statements to the interpreter, which are echoed to the terminal on the LNO3R output channel. When a PosTtScript statement is terminated, the interpreter executes the statement. B — The following control characters take the actions indicated while in interactive mode: Table 2-3: Interactive Mode Control Characters Character Action Delete Backs up and erases one character CTRL/H (Backspace) Backs up and erases one character N — CTRL/U Erases the current line CTRL/R Redisplays the current line CTRL/C Aborts the statement and starts over - s Interactive mode continues until you type |CTRL/D , or until the quit or exitserver PosTSCRIPT operator is executed. NOTE Executing the PosTScripT stop operator does not terminate interactive mode. The stop operator aborts the statement being executed and prompts for a new one. 2.4 Scan Conversion Parameter To gain efficiency, the LNO3R performs character scan conversion and cache storage during idle time. That is, when not processing a job, the LNO3R scan converts characters in commonly-used fonts and point sizes and load the results into the font cache. Page descriptions using the characters in cache execute faster than if the cache fonts were not available. 2-6 — POSTSCRIPT System Parameters — — o You can select the fonts to scan convert, using the setidlefonts operator. Specify each font to be scan converted, using the following sequence of five integers: font 8x*10 8y*10 rot/6 nchars where: font Is one of the font numbers shown in Table 2-4. sx and sy Are the scale factors for x and y. rot Is the rotation in degrees. nchars Is the number of characters to be converted. Table 2-4: Font Numbers for Idle Scan Conversion Number Font Number Font 0 Courier 15 AvantGarde-Demi 1 Courier-Bold 16 AvantGarde-DemiOblique 2 Courier-Oblique 25 NewCenturySchlbk-Roman 3 Courier-BoldOblique 26 NewCenturySchlbk-Bold 4 Times-Roman 27 NewCenturySchlbk-Italic 5 Times-Bold 28 NewCenturySchlbk-BoldlItalic 6 Times-Italic 35 LubalinGraph-Book 7 Times-BoldlItalic 36 LubalinGraph-BookOblique 8 Helvetica 37 LubalinGraph-Demi 9 Helvetica-Bold 38 LubalinGraph-DemiOblique 10 Helvetica-Oblique 39 Souvenir-Demi 11 Helvetica-BoldOblique 40 Souvenir-Demiltalic 12 Symbol 41 Souvenir-Light 13 AvantGarde-Book 42 Souvenir-Lightltalic 14 AvantGarde-BookOblique POSTSCRIPT System Parameters 2-7 The system scan converts the specified number of characters of the following 94-character set: abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789.,;2:-() "4+ 1$ Yo &e*/=@#(} <> "~I\ For example, the statement mark © 100 120 18 b2 setidlefonts specifies conversion of all lowercase and uppercase alphabetic characters of Helvetica-Bold in a 12-point size, narrowed by the ratio 10/12, and rotated by 90 degrees. The mark value indicates the bottom of the stack. You can specify multiple fonts by providing a group of five integers for each font. PostScrirT reads in each group of five integers, up to a maximum of 150 integers (30 fonts) in the range 0 to 255. If you omit the integers, PosTScrirT does not perform idle-time conversion. The following characters are set at the factory for idle time scan conversion: — Courier 10 point: full ASCII set — Times-Roman and Helvetica 10, 12 and 14 point: alphanumerics and TR B common punctuation — Times-Bold and Helvetica-Bold 10, 12 and 14 point: lowercase letters See the description of setidlefonts in Chapter 3 for more information. 2.5 Paper Handling Parameters The LNO3R has one slot and one paper input tray, which accommodates either 8.5” x 11”7 (A) or 210 x 297 mm (A4) paper sizes. A switch on the back of the printer indicates the paper size. The state of this switch is accessible to PosTScrIPT programs through the use of the papersize operator, as described in Chapter 3. The LNO3R has one face-down output stacker on top of the machine, which holds 250 sheets. 2-8 POSTSCRIPT System Parameters SR 251 Paper Orientation The following parameters are affected when a paper size is selected for input: Paper orientation: Paper feeds into the LNO3R short edge first. PostScripT coordinate system positioning: The PosTScripT processor places its default coordinate system origin (0,0) at the lower left-hand corner of sheet, with the positive X axis extending right (along the short edge), and the positive Y axis extending vertically (along the long edge). This orientation is called “Portrait”. PosTScrIPT coordinate system unit size: Regardless of paper size, the default units for the PostScripT coordinate system are points (1/72 inch). There is no default scaling of the units based on paper size. Only the extents of the printable area change to match the paper size. PostScripT clipping values: The clipping path is the edges of the imageable area for the paper being used and is set to its default value each time a PosTtScrirT job begins. The PostScript clipping path is set by reading the paper size switch on the print engine when the interpreter is initialized. These values for A size paper are .25” (75 pixels) from the left and right sides, .18” (54 pixels) from the top and .28” (83 pixels) from the bottom of the paper. The values are the same for A4 paper with one exception: .35” from the right side. NOTE The LNO3R print engine cannot image to the edges of the sheet. 2.5.2 Margins Margin setting allows PosTScripT programs to adjust the machine-specific paper registration. Only a Field Service technician or individual responsible for installation or repair should set the LNO3R margins. This person sets margins at LNO3R installation time or when performing major repair on the printer that affects paper registration. NOTE Most PostScripT programs should not use the margin control operators. The printer does not require machine registration adjustment. POSTSCRIPT System Parameters 2-9 The operators that allow you to access the margins are setmargins and margins. 2.6 Miscellaneous System Parameters A The remaining system parameters pertain to system status, ID, and current configuration. This section describes those parameters. P 2.6.1 Page Counter You examine the contents of the LNO3R page counter to determine the number of pages printed since the printer controller was built. To do this, use the pagecount operator. 2.6.2 Printer Name The printer name is a character string on the test page at printer start-up time. By default, the value is set to "LNO3R”. — You can use the setprintername operator to store a printer name. The maximum length of the string is 31 characters. To obtain the printer name, use the printername operator. 2.6.3 Test Page Status I The LNO3R prints a test page when powered up. You can control whether or not this test page prints by using the setdostartpage operator. To determine if printing the test page is enabled, execute the dostartpage operator. - — — JT— 2-10 POSTSCRIPT System Parameters 2.6.4 Password As described in Section 2.2.1, you use the system password to escape the normal server loop and make changes to persistent parameters. To set the system password, use the setpassword operator. To compare a value with the current password, use the checkpassword operator. 2.6.5 Default Timeouts A timeout facility limits how long the system remains in various states. Two timeout facilities are the job timeout and the wait timeout. At the beginning of a job, these timeouts are set to default values (initially 0 and 40 seconds, respectively).! A PosTScRIPT program can be used to change the timeouts for a job, if desired. The operators for controlling timeouts are located in statusdict and are described in Chapter 3. The job timeout limits the time a job has to execute, which protects the LNO3R from being tied up by a PostScripT program that runs too long. The program can rejuvenate the timer any number of times during the job. The wait timeout limits the time the system waits to receive additional input for a job in progress. This protects the LNO3R from being indefinitely tied up by a host system failure or disconnection. If a job or wait timeout expires, the PosTScrIPT interpreter executes the timeout error from errordict. With the standard definition of timeout, a job running in batch mode terminates. The timeout facility is not ordinarily enabled when the LNO3R is in interactive mode. 2.6.6 Scratch Memory Scratch memory is an area in nonvolatile memory where additional persistent parameters can be stored. You can store values in scratch memory, using the seteescratch operator. To obtain a value stored in scratch memory, use the eescratch operator. 1 A third timeout, the manual feed timeout, is maintained by the POSTSCRIPT interpreter. However, its value is irrelevant in the LNO3R, which has no manual feed option. POSTSCRIPT System Parameters 2-11 2.6.7 Name of Current Job The job name is a string that appears as part of status responses generated during the print job. By default, the value is a null string. Your PosTtScript program can set the job name by associating it with jobname in statusdict. 2.6.8 Software Revision You can obtain the revision level of the machine-dependent portion of the PosTScripT interpreter by executing the revision operator. 2.6.9 Encoding Vectors The examples in this section demonstrate how the ISOLatin1 and DEC MCS encoding vectors are defined. See Appendix B for more information about the encoding vectors. The encoding vector DECMCSEncoding is defined by changing the vector ISOLatin1Encoding. Example 2-1: Defining the DECMCS Encoding Vector %! DECMCSEncoding.PS h % Create DEC Multinational Character Set (MCS) encoding vector. /DECMCSEncoding ISOLatiniEncoding 266 array copy def mark 8#177 8#240 8#244 8#246 8#2b4 8#2b5 8#266 8#267 8#264 8#270 8#276 8#320 8#336 8#360 8#376 B#377 counttomark {DECMCSEncoding exch /questionmirror put} repeat % stack now contains mark 8#260 /currency 8#327 /OE 8#336 /Ydieresis 8#367 /oe 8#376 /ydieresis counttomark -1 bitshift % divide by 2 {DECMCSEncoding 3 1 roll put} repeat % stack now contains cleartomark 2-12 POSTSCRIPT System Parameters mark Example 2-2: Defining the ISOLatin1 Encoding Vector %! ISOLatiniEncoding.PS 4 % Create IS0 Latin 1 encoding vector, if it does not already exist. mark /ISOLatiniEncoding 8#000 1 8#054 {StandardEncoding exch get} for /minus % at position 8#065, was hyphen 8#066 1 8#217 {StandardEncoding exch get} for /dotlessi % at position 8#220 8#301 1 8#317 {StandardEncoding exch get} for % all the accents /space /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /lgrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /0slash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis /180LatiniEncoding where not {266 array astore def} if cleartomark POSTSCRIPT System Parameters 2-13 T i [ A . WO I e [ e S BN s RO Chapter 3 PosTScCRIPT Extensions This chapter describes the LNO3R extensions to the PostScrirt language. The extensions described in this chapter are in addition to the standard PostScrirT language used by all PostScripT products. For the standard PostScripT language, see the PosTScriPT Language Reference Manual. Before using the extensions described in this chapter, be certain you are familiar with the information in Chapter 2. 3.1 POSTSCRIPT Extension Object Types While most of the extensions for the LNO3R are operators, some are strings, integers, or boolean values. For example, the jobname extension is a string object whose value represents the name of the job that the system uses in all status reports concerning the job. You can read and write extensions that are not operators, using the normal PostScript dictionary operators, such as get and put. The four categories of extensions are operators, procedures, integers, and strings. The extensions described in this chapter are operators or procedures, except for two strings (jobname and product) and one integer (revision). Unless noted otherwise, all extensions are defined in statusdict. POSTSCRIPT Extensions 3-1 3.2 Using the Extensions Each operator description shows syntax in the following format: operand,...operand, operator result;...result,, The operands precede the operator, with operand, being the top element on the operand stack. The operator pops these objects from the operand stack and consumes them. An example of an operator that expects an operand (the password) is checkpassword. After executing, the operator leaves result; through result,, on the operand stack, with result,, being the top element. For the checkpassword operator, TRUE is returned if the operand entered is correct and FALSE if it is incorrect. A dash in an operand position indicates-that the operator expects no operands. Likewise, a dash in a result position indicates that the operator returns no results. This has the syntax: — operator — 3.2.1 Extensions Restrictions The PosTScripT extensions are used by operating system software, such as symbionts, device control libraries, and daemons. While it is possible to also use them in application programs, it is not recommended; the results can be unpredictable or undesirable. Also, the extensions are devicespecific and, their use in an application can make the application unusable on PosTScrIPT printers other than the LNO3R. P IS A OO 3-2 POSTSCRIPT Extensions checkpassword checkpassword Determines if a string value is equal to the current system password. You need the password to escape from the server loop and make changes to persistent parameters or to virtual memory. See Section 2.2.1 for details. The initial default password is “LNO3R". Format string checkpassword boolean string The value to test against the current system password. boolean TRUE if the string is equal to the current system password or FALSE if it is not equal, the wrong type, or missing. POSTSCRIPT Extensions 3-3 defauitjobtimeout defaultjobtimeout Returns the value of the job default timeouts. This value is set by the setdefaultjobtimeout or setdefaulttimeout operator. If the job default timeout is not set, its value is 0 (that is, the default is to disable job timeouts). Format — defaultjobtimeout job job The returned job default timeout. S, Error stackoverflow The operand stack is full, preventing the operator from adding the returned value to the stack. G NG AR 3-4 POSTSCRIPT Extensions defaulttimeouts defaulttimeouts Returns the value of the job, manualfeed, and wait timeouts set by the setdefaulttimeouts operator. Format — defaulttimeouts job manualfeed wait job The default value for jobs, in seconds. Standard value is zero. manualfeed The default value manualfeed, in seconds. This value is ignored by the LNO3R. wait The default value for the wait timeout, in seconds. Standard value is 40. Error stackoverflow The operand stack is full, preventing the operator from adding the returned value to the stack. POSTSCRIPT Extensions 3-5 dostartpage dostartpage BB Determines whether a test page will be printed at power on. You control printing of a power-on test page by invoking the setdostartpage operator. The initial default is TRUE. Format — dostartpage boolean boolean The TRUE or FALSE value of the start page parameter. AR Error . stackoverflow The operand stack is full, preventing the operator from adding the returned value to the stack. IR 3-6 POSTSCRIPT Extensions eescratch eescratch Returns the value of the specified array element stored in nonvolatile memory for scratch use. If the specified scratch value is not set, its value is 0. NOTE eescratch index locations 0 to 31 are reserved for DIGITAL software. Format ' index eescratch value index An integer in the range of 0 to 63,9, which is an index into the array stored in nonvolatile memory. value An integer in the range of 0 to 255,p which is the data contained in the array in nonvolatile memory. Errors rangecheck An operand value is not within the allowed range of values. stackunderflow The operand stack is empty when the operator expects a value. typecheck An operand value is not the correct data type. POSTSCRIPT Extensions 3-7 AN Decodes an encrypted file or string data and executes it as a standard input stream. Format | file eexec — file The object on the operand stack to be passed through an encryption filter. The action is terminated by an end-of-file condition (CTRL/D) or by closing the current input file. Errors — stackunderfiow - The operand stack is empty when the operator expects a value. o typecheck An operand value is not the correct data type. — wwwwwwwwwwwwwwwww 3-8 POSTSCRIPT Extensions T, executive Puts the LNO3R into interactive mode. Do not use this operator in a PosTtScripT program. For more information about interactive mode, see Section 2.3. Format — executive — POSTSCRIPT Extensions 3-9 exitserver exitserver Escapes from the server loop in order to change persistent parameters. See Section 2.2.1 for details on changing persistent parameters. exitserver is defined in serverdict, not in statusdict. Format password exitserver — password A string set by setpassword. Error invalidaccess Password is incorrect or missing. 3-10 POSTSCRIPT Extensions idlefonts | Returns the characters that the LNO3R scan converts during idle time. These characters are set by the setidlefonts operator. If setidlefonts was not called, this operator returns the list of default idle fonts set at the factory. See Section 2.4 for details on idle-time scan conversion. Format — idlefonts mark [font s, s, rot nchars]... mark A position marker (character) that delimits the bottom of the list of scanconverted characters. The group of five integers following the mark is repeated for each font containing characters to be scan converted during idle time. Idle-time font caching is performed only for fonts present in VM during idle time (those that are built into the system or have been down-line loaded permanently outside the server loop). font An integer that indicates the font of the scan-converted characters. See Table 24 the list of values. Sx. Sy Integers representing the scale factor for the x and y coordinates of the scan-converted characters, multiplied by 10. rot The rotation, in degrees, of the scan-converted characters, divided by 5. For example, characters rotated by 90 degrees have a rot value of 18. nchars The number of characters to be converted, beginning with the first character and advancing through the following set: abcdefghijklmnopqgrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789.,;7:-() "'+ 1$%&*/=@# (} <> "~I\ POSTSCRIPT Extensions 3-11 idlefonts Error stackoverflow The operand stack is full, preventing the operator from adding the returned value to the stack. s I 3-12 POSTSCRIPT Extensions - jonname Specifies the name of the job. This object is a string and not an operator. The name is an ordinary data value, stored in statusdict, that you access, using either the get or put operator. If defined by a PosTScripT program, the job name appears as part of status responses generated during the remainder of the job. The default is a null object. Format — jobname string string After a get operation, this string object contains the job name. For a put or def operation, this string object contains the name of the job to be set. Errors jobname does not cause errors. However, the get, put, and def operators can cause errors. See the PostScrirT Language Reference Manual for details. POSTSCRIPT Extensions 3-13 jobtimeout jobtimeout P Returns the amount of time remaining before the batch job timeout occurs. This value can be set by setjobtimeout, or by the default, setdefaultjobtimeout. A value of 0 means that the job will never time out. Format — jobtimeout integer integer The amount of time remaining before the batch job timeout occurs. Error stackoverfiow The operand stack is full, preventing the operator from adding the returned value to the stack. g s, 3-14 POSTSCRIPT Extensions margins Returns the value of the two margin parameters. The margin parameters are set by the setmargins operator. Both values are integers that specify distances in device space (hardware pixels). The initial defaults for both margins are 0. Format — margins top left top The value of the top margin. left The value of the left margin. Error stackoverflow The operand stack is full, preventing the operator from adding the returned value to the stack. pagecount pagecount Returns the number of pages (mcludmg test pages) prmted since the controller was built. This value, storedin a page counter in the LNO3R, cannot be changed. This value may not be the same as that shown on the mechanical page counter on the side of the LNO3R. Format — pagecount integer integer The number of pages printed since the printer was built. Error stackoverflow , The operand stack is full, preventing the operator from adding the returned value to the stack. P R oo, 3-16 POSTSCRIPT Extensions R pagestackorder pagestackorder Determines the stacking order of the paper. This operator exists for compatibility with the PRINTSERVER 40 POSTScRIPT printer. Format — pagestackorder boolean boolean Returns FALSE if the first page printed faces the back of the second page, and TRUE if the first page faces away from the second. The LNO3R will always return TRUE, since paper is always stacked face down. Error stackoverflow \ The operand stack is full, preventing the operator from adding the returned value to the stack. papersize papersize Returns the paper size as selected by the paper size switch on the back of the LNO3R. This switch corresponds to the size of the paper in the paper input tray. The PosTScrIpT interpreter uses the paper size switch to determine the default clipping region for the page. This operator exists for compatibility with the PRINTSERVER 40 PosTScripT printer. Format — papersize boolean name boolean Returns the load orientation of the paper. If the paper is loaded short edge first, the value is TRUE; if the long edge is first, the value is FALSE. The LNO3R always returns TRUE, since paper feeds short edge first. : name The name of the tray, which corresponds to one of the following strings: IR Paper Size Selected String Returned letter (8.5" x 117) lettertray A4 (210mm x 297mm) adtray O | MR These strings are the names of the operators used for paper tray selection by DIGITAL PostScrirt printers with multiple input trays, such as the PRINTSERVER 40. The LNO3R has one input tray. Error stackoverflow The operand stack is full, preventing the operator from adding the returned value to the stack. o P 3-18 POSTSCRIPT Extensions printername printername Returns the name of the printer. The operator stores the name in a string you supply. This value is set by setprintername. Format string printername substring Sstring A string of characters, including spaces, that contains as many characters as the saved printer name. The operator places the printer name into the space provided by this string. substring ‘The returned value, which is a substring of the string parameter after the operation. The initial default value of the substring is LNO3R SCRIPTPRINTER. Errors invalidaccess An object’s access attribute is violated. stackunderflow The operand stack is empty when the operator expects a value. typecheck An operand value is not the correct data type. rangecheck Operand string is too small to contain the printer name. POSTSCRIPT Extensions 3-19 product product Returns the name of the product, which is an ordinary data value, stored in statusdict, that you access with the standard get operator. The value of product is “ScriPTPRINTER” and cannot be changed. Format — product string string After the get operation, this string contains the product name stored in the product string. Error product does not cause errors. However, the get operator can cause errors. See the PostScript Language Reference Manual for details. O, 3-20 POSTSCRIPT Extensions revision Returns the revision level of the machine-dependent portion of the PostScript interpreter. The revision level is a data value, stored in statusdict, that you access with the get operator. Format — revision integer integer The revision number of the machine-dependent portion of the POSTSCRIPT interpreter. The standard value is 1. Error revision does not cause errors. However, the get and put operators can cause errors. See the PosTScripT Language Reference Manual for details. setdefaultjobtimeout setdefaultjobtimeout SRR V _ Sets the job default timeout value. The operator does not take effect until the start of the next job. | Format Jjob setdefaultjobtimeout — I job | A positive integer representing the default timeout value for jobs, in seconds. The standard value is zero, which disables timeouts for jobs. Positive integers greater than 14 are permitted. - * Errors rangecheck _— An operand value is not in the allowed range of values. stackunderflow The operand stack is empty when the operator expects a value. | — typecheck An operand value is not the correct data type. G, 3-22 POSTSCRIPT Extensions L setdefaulttimeouts ' Sets the values of the default job, manualfeed, and wait timeouts. To disable timeouts, enter 0. Format job manualfeed wait setdefaulttimeouts — job A positive integer that sets the default value for jobs, in seconds. The standard value is zero. Positive integers greater than 14 are permitted. manualfeed A positive integer that sets the default value for manual feed, in seconds. This value is ignored by the LNO3R. wait | A positive integer that sets the default value for the wait timeout, in seconds. The standard value is 40. Errors invalidaccess Attempted to set persistent parameters without first exiting the server loop. rangecheck An operand value is not in the allowed range of values. stackunderflow The operand stack is empty when the operator expects a value. typecheck An operand value is not the correct data type. setdostartpage setdostartpage Sets the power-on default for either printing or not printing a test page. Format boolean setdostartpage — boolean A TRUE value causes the printer to print a test page on power up. A FALSE value suppresses printing of a test page at power up. Errors invalidaccess Attempted to set persistent parameters without first exiting the server loop. stackunderflow The operand stack is empty when the operator expects a value. typecheck An operand value is not the correct data type. 3-24 POSTSCRIPT Extensions seteescratch Writes a value into an array in nonvolatile memory for storing persistent data. System managers can use the scratch memory to store data needed at a particular site. For example, a system manager can maintain several different page counters for different types of sheets. Locations in the eescratch array can store the counter data. Format index value seteescratch — index An integer value in the range 0 to 6319 that is an index into the array stored in nonvolatile memory. eescratch index locations 0 to 31 are reserved for DIGITAL software. value An integer value in the range 0 to 255, that is the data that you are writing to the array in nonvolatile memory. Errors invalidaccess | Attempted to set persistent parameters without first exiting the server loop. rangecheck An operand value is not in the allowed range of values. stackunderflow The operand stack is empty when the operator expects a value. typecheck An operand value is not the correct data type. setidlefonts setidlefonts Specifies fonts to be scan converted during idle time. Input to the operator consists of up to 150 integer values, in the range 0 to 255, on the operand stack. The integers are read by PostScripT in groups of five. Each group contains information on the font, scale factor, rotation, and characters in the font to scan convert. A mark immediately below the bottom integer on the stack delimits the series of integers. An empty list of integers (that is, a mark that is not followed by integer values) specifies that no characters will be scan converted. See Section 2.4 for details on idle-time scan conversion. Format mark [font s, s, rot nchars]... setidlefonts — mark A position marker that delimits the bottom of the list of scan-converted characters. The group of five integers following the mark is repeated for each font containing characters to be scan converted during idle time. font An integer value that indicates the font of the scan-converted characters. See Table 2-4 for the list of possible values. Sx. Sy Integers representing the scale factor for the x and y coordinates of the scan-converted characters, multiplied by 10. For example, a 12-point size is specified by the integer 120. rot The rotation, in degrees, of the scan-converted characters, divided by 5. For example, to rotate a character by 90 degrees, specify 18. A G T 3-26 POSTSCRIPT Extensions s nchars The number of characters to be converted, beginning with the first character and advancing through the following set: abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789.,;2:-() "'+ 1$%&* /=@# {} <> "~I\ Errors invalidaccess Attempted to set persistent parameters without first exiting the server loop. limitcheck An operand value is not in the allowed range of values. typecheck An operand value is not the correct data type. unmatched mark An expected mark is not on the operand stack. setjobtimeout setjohtimeout Sets the timeout for the current job. You can obtain the default job timeout by executing the defaultjobtimeout operator. Format integer setjobtimeout — integer The timeout, in seconds, that you want to set for the current job. Specify 0 to disable timeouts. Errors rangecheck An operand value is not in the allowed range of values. stackunderflow The operand stack is empty when the operator expects a value. typecheck An operand value is not the correct data type. S, S 3-28 POSTSCRIPT Extensions setmargins setmargins Add the specified value to the top and/or left margins. A positive integer widens the margin, a negative integer narrows it. The operator adds two numbers from the operand stack to the current values of the top and left margins, measured in pixels (1/300 inch). The result is a change in the alignment of the image area on the output page. The range of adjustment is limited by the print engine’s adjustment ability. The standard values for 8.5” x 11” paper are .25” (75 pixels) from the left and right sides, .18” (54 pixels) from the top and .28” (83 pixels) from the bottom. The values are the same for A4 paper except for the right side: .35” (101 pixels). When a value is out of the adjustment range, the closest value within the range is used. The limits on margin adjustment for 8.5” x 11” paper are, in pixels: top: [-25, 1185] left: [-16, 80] System managers or technicians should use setmargins only during system installation to correct alignment errors. Do not use setmargins to set the dimensions of the image area. This operator does not take effect until the next PostScripT job executes. Format top left setmargins — top The number of hardware pixels to add to the top margin (short edge of paper resting closest to front of the printer). left The number of hardware pixels to add to the left margin (long edge of paper closest to left side of printer). POSTSCRIPT Extensions 3-29 setmargins Errors — invalidaccess Attempted to set persistent parameters without first exiting the server loop. rangecheck An operand value is not in the allowed range of values. [ - stackunderflow The operand stack is empty when the operator expects a value. typecheck An operand value is not the correct data type. Example 3-1: — Setting Margins on the Printer % % This program will set the X and Y margins on an LNO3R. h (LNO3R) fl — % edit this line to equal your system exit password /Courier findfont 10 scalefont setfont K 100 720 moveto serverdict begin statusdict begin dup checkpassword — (Setting new margins. 0ld margins were: 10 string cvs show ( ) show 10 string cvs show ( ) show ) show margins exch showpage exitserver S } {(Sorry, wrong password!) show} ifelse statusdict begin 1 32 setmargins ), *¥* Edit this line. First number is top margin, . % *second number is left margin. Both are in pixels. end R 3-30 POSTSCRIPT Extensions setpassword setpassword Sets the password. The password must be enclosed in parentheses. The password is stored in nonvolatile memory. Format old new setpassword boolean old A string corresponding to the current password. The initial default is “LNO3R.” new A string corresponding to the new password. boolean TRUE is returned if old is the correct password and the password is changed to new. FALSE is returned if old is incorrect and no action is taken. Errors stackunderflow The operand stack is empty when the operator expects a value. typecheck An operand value is not the correct data type. POSTSCRIPT Extensions 3-31 setprintername setprintername Sets the name of the printer. The entry must be enclosed in parenthese s. The printer name is stored internally and is printed on the test page at printer startup. Format string setprintername — string The name of the printer. The string can be 31 characters long. Errors invalidaccess Attempted to set persistent parameters without first exiting the server loop. limitcheck Implementation limit exceeded. stackunderflow The operand stack is empty when the operator expects a value. AR typecheck An operand value is not the correct data type. B e 3-32 POSTSCRIPT Extensions P setvmlimit setvmlimit Allocates the number of bytes to store in virtual memory (VM). By default, the VM limit on the LNO3R is set to the maximum bytes available, which is 470K bytes. Applications can reduce the VM limit to ensure transportability among PosTScripT printers. The setvmlimit values are set by the standard PosTtScripT operator vmstatus. See Section 6.6.7 for more information about vmstatus as modified for the LNO3R. e Format limit setvmlimit — limit The maximum number of bytes for VM, which is 470K bytes. If you specify a value larger than the maximum VM limit, the maximum value is used. Errors limitcheck An operand value is not in the allowed range of values. vmerror Attempted to use more VM than the limit allows. POSTSCRIPT Extensions 3-33 waittimeout waittimeout P _ Returns the wait timeout, which is the seconds the LNO3R waits to receive additional characters from the host before aborting the job by executing a timeout. At the beginning of a job, the system initializes waittimeout to the timeout returned by defaulttimeouts; but a PostScript program may change the timeout to any positive integer. (In interactive mode, the wait timeout is 0.) The initial default is 40. P Format — waittimeout integer — integer . The number of seconds before timeout. Errors stackoverflow The operand stack is full, preventing the operator from adding the returned value to the stack. OO B 3-34 POSTSCRIPT Extensions Chapter 4 Font Metrics Adobe Font Metrics files are ASCII-encoded files that allow application programs to format text containing characters defined in the fonts provided with the LNO3R. Font metrics consist of such information as: Character widths Kerning information (by character pairs) Composite character information (for forming character composites, such as accented letters) This chapter describes the font metric files and shows the contents and form of the files. 4.1 Font Metric File Names The font metrics for each font reside in a file with the AFM extension. (AFM stands for Adobe Font Metrics.) You can determine the name of a font metric file by taking the contents of the FontName field and changing the hyphens (-) to underscores (). For example, suppose a FontName field contains the following string: DEC-COURIER-BOLDOBLIQUE The name of its font metric file is: DEC_COURIER_BOLDOBLIQUE.AFM The names of the font metric files for the 29 PostScriprT fonts in to the LNO3R are as follows: TR, Table 4-1: Font Metric Files AVANTGARDE _BOOK.AFM AVANTGARDE _BOOKOBLIQUE.AFM AVANTEGARDE_DEMI.AFM AVANTEGARDE_DEMIOBLIQUE.AFM COURIER.AFM COURIER_BOLD.AFM COURIER_OBLIQUE.AFM COURIER _BOLDOBLIQUE.AFM HELVETICA.AFM HELVETICA _BOLD.AFM HELVETICA _OBLIQUE.AFM HELVETICA _BOLDOBLIQUE.AFM LUBALINGRAPH_BOOK.AFM LUBALINGRAPH_BOOKOBLIQUE.AFM LUBALINGRAPH_DEMILAFM LUBALINGRAPH _DEMIOBLIQUE.AFM NEWCENTURYSCHLBK _ROMAN.AFM NEWCENTURYSCHLBK _ITALIC.AFM NEWCENTURYSCHLBK _BOLD.AFM NEWCENTURYSCHLBK _BOLDITALIC.AFM SOUVENIR_DEMI.AFM SOUVENIR_DEMIITALIC.AFM SOUVENIR_LIGHT.AFM SOUVENIR_LIGHTITALIC.AFM SYMBOL.AFM TIMES_BOLD.AFM TIMES_BOLDITALIC.AFM TIMES_ITALIC.AFM TIMES_ROMAN.AFM 4-2 Font Metrics 4.2 Format of Font Metric Files The AFM file has the following features: e ¢ Itis ASCII encoded and human readable. Applications can reformat the information, if necessary. (For example, you can produce TgX, TEM, or PL files.) The file is extensible. You cém add nonstandard fields. e Applications can parse the format, skipping over items that are not e A PosTSCRIPT program can generate the format by using the informa- applicable. | tion in a PostScripT font. An AFM file consists of four sections that describe different properties of a font. The global section contains information on the font. The character metrics section contains the metric information for each character. The kerning data section contains information about different types of character spacing (kerning). The composite character section contains data about characters that are made from other characters. The following example shows a sample AFM file, illustrating the four sections of the format. An explanation of each section follows. R, Example 4-1: Sample Font Metric (AFM) File AR C‘omment **********#*****‘*************************# StartFontMetrics 2.0 Comment Copyright (c) FontName Times-Roman Global 1986 Adobe Systems Incorporated. Section e ook o All rights reserved. FullName Times Roman FamilyName Times Weight Medium ItalicAngle 0.0 IsFixedPitch false UnderlinePosition -98 UnderlineThickness 54 Version 001.000 Notice Times is a trademark of Allied Corporation. EncodingScheme AdobeStandardEncoding FontBBox -167 -262 1004 904 CapHeight 673 XHeight 4456 Descender -219 Ascender 686 Comment ¥k skskikskskskikkkkskkkskkkkkkkks*x StartCharMetrics 210 C32 ; WX 260 ; N space C33 ; WX 333 ; C34 ; WK 408 ; ; Character Metrics Section %% BO OO O ; N exclam ; B 128 -17 240 873 : N quotedbl ; B 46 445 313 685 ; Comment---> Lines omitted for brevity C37 C37 C37 ; WX 833 ; WX 833 ; ; WX 833 ; ; Ne ; B Nf ;B 24 -17 416 469 ; 210382685 ; Lifi 24 -220 469 468 ; Ng ; B DS ;L 1Z£1 : Comment---> Lines omitted for brevity C37 ; WX 833 ; N islash C37 ; ; WX 833 ; N oslash ; C37 ; WX 833 ; Noe EndCharMetrics ; B B 0 O 283 685 : 30 -104 469 566 30 -10 684 462 : B A 4-4 Font Metrics AR Comment % sk sk sk ok ok ok ok ok ko ok sk ok ok ok ok ok sk kokokokokokskokokok ok ok k ok Kern Data Section *kks StartKernData StartTrackKern TrackKern -3 6 TrackKern -2 6 TrackKern -1 6 3 1 72 -6 2 72 -3 7 72 -1 EndTrackKern StartKernPairs 2 KPX AV -18 KPX A 0 -10 EndKernPairs EndKernData .............................. StartComposites 1 CC Aacute2; PCC A 0 O; PCC acute 30 300; EndComposites EndFontMetrics 4.2.1 Global Section The following global font keys are the same as those in the FontInfo dictionary for any font. The PostScripT Language Reference Manual describes the fonts’ meanings. Numeric values are in the character coordinate system (1000 units/em). NOTE The following format descriptions use number as defined in the PostScripT Language Reference Manual. A number can be a signed integer, a real value, or a radix value. FontName string string is the name of the font as presented to the PostScriet findfont operator. ~ FullName string string is the print name of the font. FamilyName string string is the font family name. Weight string string is the weight of the font. Font Metrics 4-5 A SO ItalicAngle realnumber realnumber is the angle in degrees, counterclockwise from the vertical, of the vertical strokes of the font. IsFixedPitch boolean boolean value indicates whether the font is monospaced. UnderlinePosition number number is the distance beneath the baseline at which to place an underline. UnderlineThickness number number is the thickness of an underline stroke. Version string string is a font version identifier. Notice string AR string is a font name trademark or copyright notice. Comment string string is a string that an application reading the AFM file should ignore. I EncodingScheme string string indicates the default encoding vector for the font. The most common vector is AdobeStandardEncoding. Special fonts can also specify FontSpecific. FontBBox lix lly urx ury NG The four integers represent the lower left-hand corner and upper righthand corner of the font bounding box: B lix is an integer value representing the lower left-hand x coordinate. . lly is an integer value representing the lower left-hand y coordinate. A urx is an integer value representing the upper right-hand x coordinate. ury is an integer value representing the upper right-hand y coordinate. This bounding box is of flattened paths, not of the Bezier curve descriptions. O 4-6 Font Metrics CapHeight number number represents the top of an uppercase H. XHeight number number represents the top of a lowercase x. Descender number number is a value representing the bottom of a lowercase p. Ascender number number is a value representing the top of a lowercase d. 4.2.2 Character Metrics Section The character metrics section of an AFM file begins with the key StartCharMetrics and ends with the key EndCharMetrics. Each character’s metric information consists of a list of keys and values, separated by semicolons. The characters in the font are in numerically ascending character code. Unencoded characters follow the encoded characters and are identified by character codes of —1. Each character metric must fit on one line. Key descriptions follow. StartCharMetrics integer integer indicates the number of characters that the font metric file describes for the font. This integer is valuable for applications to perform a consistency check when parsing the data. C number number is the decimal value of the default PostScript character code (-1 if unencoded). WX width-x width-x is the character width in the x coordinate. (The value of y is 0.) W width-x width-y width-x and width-y constitute the character width vector. g G N name name is the name of the character. B lix lly urx ury The four integers represent the lower left-hand corner and upper righthand corner of the character bounding box: llx represents the lower left-hand x coordinate. lly represents the lower left-hand y coordinate. IS urx represents the upper right-hand x coordinate. ury represents the upper right-hand y coordinate. L successor ligature successor is the name of a character that joins with the current character to form a character named ligature. Characters may have more than one ligature entry. 4.2.3 Kerning Data Section The kerning data section is optional; it may or may not be present. The section begins with the key StartKernData and ends with EndKernData. Two categories of kerning data exist: track kerning and character pair kerning. One or both sections can be in a font metric file. To specify track kerning, supply the minimum and maximum point sizes of the characters you are kerning, as well as the minimum and maximum kerning amounts. The format of keys for kerning data follows. StartTrackKern integer integer indicates how many tracks are present. This key begins a section that provides track kerning information. The section must have a matching EndTrackKern key. TrackKern degree min_pt min_kern max_pt max__kern degree is an integer. Increasingly negative degrees represent tighter track kerning and increasingly positive degrees represent looser track kerning. min_pt is the minimum point size for kerning, below which the min_kern value is used. 4-8 Font Metrics i A min_kern is the minimum track kerning value in character coordinate units (1000 units/em). max_—pt is the maximum point size for kerning, above which the max__kern value is used. max _kern is the maximum track kerning value in character coordinate units (1000 units/em). EndTrackKern This key ends a section that provides track kerning information. It must have a matching StartTrackKern key. StartKernPairs This key starts the kerning pairs section. The integer fc)llomng tells how many pairs to expect. EndKernPairs This key ends the kerning pairs section. KP namel name2 deltax deltay namel is the first character in the kerning pair. name?2 is the second character in the kerning pair. deltax is the kerning amount in the x direction. deltay is the kerning amount in the y direction. KPX namel name2 deltax namel is the first character in the kerning pair. name2 is the second character in the kerning pair. deltax is the kerning amount in the x direction (y is 0). Font Metrics 4-9 e 4.2.4 Composite Character Section The composite character section is optional. Composite characters consist of characters that already exist in a font. Character metrics data for composite characters resides in the Character Metrics Section, along with noncomposite characters. The composite character section begins with the key StartComposites and ends with the key EndComposites. The data for each composite character consists of a list of keys and values, separated by semicolons. Each composite character description must fit on one line. The key description follows: B CC name integer name is the name of the composite character. G integer is the number of parts that comprise the composite character. PCC name deltax deltay This key composes one of the parts of a composite character. name is the character that will be used to make up the composite character. deltax is the displacement from the origin in the x direction. deltay is the displacement from the origin in the y direction. All units are in the character coordinate system. There is a PCC entry for each part of the composite character. G I P R e 4-10 Font Metrics e Chapter 5 Optimizing Performance The performance of the LNO3R depends on several factors, including the size and load of the host computer, speed of the communications interface, PosTScrIpT processing, the image drawing hardware, and the print engine. This chapter describes methods for optimizing the PosTScripT processing. 5.1 Basic Concepts Three processes account for most of the PosTScripT execution time: Low-level raster manipulations This process consists of painting character bitmaps and filling trapezoids located at arbitrary bit boundaries. Usually, this process dominates all others if all the characters are in the font cache. Character scan conversion This compute-intensive operation pushes high-level character definitions through the full PostScript graphics machinery. This process requires extensive arithmetic, both fixed and floating point. PosTScripT input scanning and interpretation This process includes parsing the input stream, constructing tokens, looking up names, and pushing and popping stacks. The time consumed depends on the type of page description and the programming style. Text that consists of strings and calls to simple PosTScripT procedures consumes little time in the interpreter; text that executes complex PosTScripT code for each mark placed on the page more time. Optimizing Performance 5-1 The PostScripT processor can print 3000 characters a page at a rate of 8 pages a minute, using characters in the bitmap cache. However, since several factors determine this performance, make sure that your POSTSCRIPT code produces high performance. 5.2 e Smaller Operator Names You can replace standard operator names with names that use fewer characters for file-saving and/or communication-saving sake. e S 5.3 Automatic Spacing Use the automatic spacing of the show operator rather than explicitly positioning every character in your PosTScripT program. Also, use widthshow for sequences of words with constant space in between. 5.4 Use of bind Operator Applying the bind operator to procedure bodies relieves the interpreter of looking up the names of PosTScripT operators each time they are executed. This technique works only if the procedure body does not depend upon AR — O late-binding,. 9.5 Eliminating Unnecessary Procedure Calls Check for unnecessary nested procedure calls and “unroll” definitions where possible. For instance, the contents of some procedure bodies can be placed in-line. o e G e Kot 5-2 Optimizing Performance 5.6 Scaling the Coordinate System Arrange the current transformation matrix so that the PosTSCrRIPT matrix machinery does most of the arithmetic work. Where appropriate, specify numeric constants as reals rather than integers. Applications can unnecessarily perform the findfont, makefont and setfont steps twice (once to change the typeface and again to change the size). This indicates an error in the application software’s design. Check for double calls when font changes occur. | 5.7 showpage and copypage Inappropriately using the copypage operator can degrade performance in the LNO3R. showpage produces better throughput performance. The operator prints the current page, erases it, and initializes the graphics state. On the other hand, copypage prints the page, but does not erase it or initialize the graphics state. copypage is more specialized in that it adds new marks to an existing page. You most often use copypage to incrementally build up a page. The showpage operator is logically equivalent to copypage erasepage initgraphics Using copypage in your PosTScripT programs for printing pages can degrade page throughput. showpage produces better results because it performs the printing and erasing in parallel, whereas copypage erasepage does it serially. Additionally, you should not use copypage to defeat the automatic initgraphics performed by showpage. That is, to print and erase the current page, but leave the graphics state unchanged, you should enter gsave showpage grestore A PP You should not enter o copypage erasepage NOTE The PostScrirt Language Tutorial and Cookbook includes an example that uses the incorrect technique. IO SO S 5.8 #copies for Multiple Copies The correct way to print multiple copies of a page is to associate the number of copies with the name #copies prior to invoking showpage or copypage, as described in the PostScripT Language Reference Manual. Executing showpage or copypage for each copy is inefficient. 5.9 LR Idie Fonts You can improve the page composition speed by using the setidlefonts extension to scan convert the appropriate fonts. See Section 2.4, as well as the description of setidlefonts in Chapter 3, for details. oG RO [ E s 5-4 Optimizing Performance Chapter 6 Programming for the LNO3R System software that controls PosTScripT printers may send POSTSCRIPT device control procedures to the printer ahead of the user’s PosTScript program. This chapter provides information you need to know to write programs that successfully execute in the LNO3R. 6.1 Printing Device Control PostScripT procedures for device control may be generated by system software that controls a PostScripT printer. The function of these procedures is determined by the host operating system and printer control software. Some functions performed by device control procedures are: ® Report error conditions to the user e Report print job accounting information to the user e Control the portion of a print job that produces output ¢ Provide custom character set encodings The device control procedures are sent to the printer ahead of the user’s PosTScriPT program and terminate when the print job does. These procedures modify the behavior of print job in two ways: 1. By using PosTScrIPT extension operators 2. By redefining standard PosTScripT operators aming for the LNO3R 6-1 B 6.1.1 Using PostScrirT Extension Operators PosTScRIPT extension operators are used to control the printer. These operators are unique to the printer model or class of printers. The PosTScripT extension operators for the LNO3R are described in Chapter 3. To ensure device-independent page descriptions, application software should not refer to the operator extensions in a POSTSCRIPT program. When the extensions must be used, use those that produce the desired output on the largest set of different printer models. 6.1.2 Redefining Standard PosTScrirT Operators Printer control software may redefine standard PosTScripT operators to modify a print job’s behavior. This programming technique is called layering; it is made possible by the way PostScrirT performs implicit name searches. Layering may also be used by document-formatting utilities that include portions of one PosTScRrIPT program in a second POSTSCRIPT program. See Section 6.2 for more information about programmmg MO ‘context layers. Layering inserts a context layer between the user’s POSTSCRIPT program and the standard PostScrirT interpreter. The context layer consists of the PostScripT stacks and the graphics state. The context layer modifies the behavior of the user’s PosTScripT program, which is executed (layered) over it. Although the context layer modifies the behavior of the user program, it is transparent to the user program. In fact, the user program may run on top of several different context layers, all equally unaware of each other’s existence. A The current context is the PosTScrIPT state resulting from all the layers present when a program runs: user, device control, system management, and standard PosTScripT. PosTtScripT programs that violate the implicit name search order can cause unexpected results, as they override and possibly conflict with underlying context layers. PosTSCRIPT programs cannot assume the order of objects on the various PostScrirt stacks at the start of a job, because the stack order may have been modified by an underlying context layer. Start each program with a save operator and end each program with a restore operator to ensure that you save the context of the program. 6-2 Programming for the LNO3R R 6.2 POSTS(:RIPT Operators These guidelines help make programs transportable and help eliminate potential conflict among underlying context layers. NOTE Application programs should never exit the server loop. 6.2.1 Device-Dependent Programs Device-dependent POSTSCRIPT programs can change system parameters. Because these programs perform device control and can exit the server loop, they do not always follow the operator restrictions. Normally, only system managers should create programs that change system parameters. 6.2.2 Preserving the Context State PosTtScripT programs should, in general, preserve the context state that exists at the start of the program. However, programs should not make assumptions about that context state. Follow these guidelines to preserve the state of the underlying context layer: 1. Execute a save operator at the beginning of the program and a restore at the end. This ensures that the state of virtual memory and composite objects are restored to their previous values when the program completes. 2. Do not alter the contents of a string object that was defined in a previous context layer, because the restore operator does not restore the contents of strings. You should not, however, depend on the fact that the restore operator does not restore the contents of strings. 3. Do not assume a preexisting stack state at the start of the program. For example, do nat assume an object is on top of a particular stack at the start of the program. amming for the LNO3R 6-3 4. Keep the order of stack objects that existed before the start of the program. 5. 6.2.3 Do not clear the stack. Restrictions to Operators Application software should restrict the use of the following PosTSCRIPT operators in a layered environment, as described: banddevice Do not use this device-dependent operator. T clear S This operator clears the entire operand stack, possibly including state that an underlying context layer was trying to preserve. Instead, use mark and cleartomark or pop the exact number of objects that were pushed. AT closefile Only close files in the module that opened them. Do not close the standard input file, because this closes all instances of the input stream, thus preventing execution of the rest of the file. erasepage This operator ignores the clipping path. Use code like the following instead: s gsave clippath AR 1 setgray £ill grestore framedevice R WP Do not use this device-dependent operator. initclip Do not assume that the default clipping path is in effect when the program starts. Use gsave and grestore to preserve the original clipping path. 6-4 Programming for the LNO3R S [ e initgraphics The current context may have redefined any or all of the graphics state. Use gsave and grestore to preserve the original graphics state. initmatrix The current context may have redefined the current transformation matrix (CTM). Instead of using initmatrix, set a variable to the CTM at the start of the included file. For example, use this: /origmatrix matrix currentmatrix def origmatrix setmatrix % revert to original CTM Use gsave and grestore rather than initmatrix in such cases. renderbands Do not use this device-dependent operator. setmatrix Do not make assumptions about the initial CTM. In general, use concat instead of setmatrix. systemdict Do not reference operators through systemdict. Use the dictionary stack, in case they have been redefined. Do not use: systemdict /moveto get /m exch def Instead, use: /moveto load /m exch def transform The transform operators (transform, itransform, dtransform, idtransform) take an X,Y pair on the stack and “transform” them back and forth between the user space and device space coordinate systems. They are implemented as matrix operations, and if they are used at all should only be used in pairs. userdict Do not assume that userdict is on top of the dictionary stack. Programs should not reference userdict explicitly. Instead, they should create their own local dictionaries. Do not use: Programming for the LNO3R 6-5 P O /x1 def /y 2 def /z 3 def Instead, use: 3 dict begin /x 1 def /y 2 def /z 3 def end ® . % pop local dictionary off the dictionary stack quit — In some environments, quit may prevent later jobs from being printed. Use stop instead. A 6.3 Virtual Memory By default, the LNO3R sets the limit of available virtual memory (VM) to the maximum amount, 470K bytes. To set virtual memory lower than the default, use the setvmlimit operator. Setting a lower VM limit may be necessary for transporting applications. To make sure a file does not exceed virtual memory limits, enclose each page with a save/restore pair. For programs that require large amounts of VM, such as complex graphics applications, you may need to take other steps to prevent VM limitchecks. A program can reuse a composite object rather than create a new one each time the object is needed. A program can also use save and restore frequently. Remember that the restore operator not only recovers VM but also restores the graphics state (as for a grestore) and restores variables to the values they had at the time of the save. Several POSTSCRIPT operators consume VM each time they are executed. Avoid using these operators within a loop. In this example, the 100 string allocates VM for a 100-element string at each iteration of the loop: AR I e — “"‘”'”“‘”“ e — "“"“"""‘“”‘“” S 11 100 { myarray exch get 100 string cvs show } for [ 6-6 Programming for the LNO3R [ Instead, move the 100 string out of the loop. This example allocates VM for the string once instead of 100 times: /mystring 100 string i1 1000 { myarray exch get mystring cvs show } for The following operators consume VM: [] Initialized arrays constructed with bracketed pairs consume VM once an execution. Move the brackets outside of loops. array Arrays constructed with the array operator consume VM once an execution. dict The dict operator consumes VM each time it is executed. However, dict is rarely executed from within a loop. matrix A matrix is an array of six elements, usually real numbers. Each call to the matrix operator consumes VM. This example allocates VM for six matrixes, although only two are needed: 10 10 matrix scale 90 matrix rotate matrix concatmatrix /etm_1 exch def b b matrix scale 90 matrix rotate matrix concatmatrix /ctm_2 exch def The following example consumes less VM. In this case, only three matrixes are allocated in VM, and the scratch matrix can be reused later. /scratch_matrix matrix def Jetm_1 matrix detf /ctm_2 matrix def 10 10 ctm_1 scale 90 scratch_matrix rotate ctm_1 concatmatrix ming for the LNO3R 6-7 b b ctm_2 scale 90 scratch_matrix rotate J— ctm_2 concatmatrix * — string The string operator consumes VM each time it is executed. When possible, reuse strings and keep the string operator outside of loops. AR () I A string in parentheses consumes VM only once, at scan time, so it can be left inside loops. However, be careful of modifying such a string. If the string is modified the first time through the loop, the modified version is used in each subsequent iteration. - — The following example tries to enter several different names into an entry on a form. It fails, because there is only one copy of the string (Name:—____)in VM. g name_array { (Name: ) 8 2 -1 roll putinterval show 12 O rmoveto } forall BRI If the first two names entered were Zimmerman and Jones, the form would look something like this: Name: _Zimmerman__ - Name:_Jonesrman__ To get the desired results, use the copy operator to create a new string for each name: — name_array { (Name: — ) 1 copy exch pop 6 2 -1 roll putinterval show 12 0 rmoveto } forall e <> S The angle bracket construct for entering hexadecimal strings consumes VM only at scan time, not at execution time. 6-8 Programming for the LNO3R — - 6.4 Changes to Standard POSTSCRIPT Operators on the LNO3R Some standard PosTSCRIPT operators operate differently when used with the LNO3R. This section describes changes and restrictions to those standard POSTSCRIPT operators. 6.4.1 Limit to Dictionary Stack Entries The PostScripT Language Reference Manual states that the maximum number of entries on the dictionary stack (dict stack) is 20. However, on the LNO3R, PostScripT uses two entries outside the server loop, so a maximum of 18 entries on dict stack is available to user programs. NOTE If other libraries also use dictionary stack entries, fewer are available for user programs. 6.4.2 findfont findfont executes the invalidfont error when the requested font is not in VM. (In other PostScripT printers, findfont may select a font for you when the requested font is not in VM). findfont is defined in systemdict, not in statusdict. 6.4.3 gsave - The PostScript Language Reference Manual states that you can have a maximum of 31 active gsave commands before you get a limitcheck error. However, the LNO3R uses two active gsave commands outside the server loop, so the maximum number for programs is 29. Note that if other libraries also use active gsave, fewer are available for user programs. 6.4.4 Polygon Fill Using polygon fill (the fill, eofill, clip, and eoclip operators) can cause a limitcheck error even if fewer than 1500 points are in the path. Programming for the LNO3R 6-9 O 6.4.5 quit The quit operator, when executed inside the server loop, is identical in function to the PosTtScripT stop operator. When executed outside the server loop, quit results in the following message: S Flushing: to end of file If executed in interactive mode, quit terminates interactive mode or causes the innermost invocation of executive to be exited. S A If executed in batch mode, quit functions identically to the stop operator. 6.4.6 start The start operator implements the behavior of the top-level server control. When invoked, another instance of the PostScript server loop is created. When used inside the server loop, start generates an invalidaccess error. When exited outside the server loop, a power-up reset sequence results. User programs should not invoke start, as it may cause unexpected side effects. For example, the exitserver operator would not exit the top-level server loop when invoked, but rather the one that was “created” by the user program upon executing start. 6.4.7 vmstatus For the LNO3R, vmstatus returns three integers that describe the state of the PosTScripT virtual memory. The values returned are defined as follows: 1. LEVEL: The current depth of “save” nesting. It describes the number of “saves” that have not yet been matched with a “restore”. 2. USED: The number of bytes of virtual memory currently in use. 3. MAXIMUM: The maximum number of bytes of virtual memory available to the PostScripT program. This value is changed by the setvmlimit operator, as described in Chapter 3. A A S W 6-10 Programming for the LNO3R 6.5 Writing a POSTSCRIPT Software Driver PosTScripT is a full programming language, but is an interpreted language designed for high-level, device-independent page representation. It is not designed for floating-point number processing, or extensive string manipulations. It is best to use the language according to its design. This section lists programming techniques to consider and avoid when writing a PosTtScripT software driver. 6.5.1 Useful Techniques * Write a very clearly defined prolog, which will contain primitive procedures needed by your application, and make it-human readable. The application will then generate a “script”, which will represent the document data. * Use a local dictionary to define the prolog, and use it within procedure calls or when beginning a document. For more information, see the descriptions of dict, begin, and end in the PostScrirt Language Reference Manual. e Put your prolog in a separate data resource or file and/or allow users to supply alternate ones. Allow the PosTScripT output to be redefined to the disk if requested. * Adhere carefully to Adobe’s document structuring conventions, as * Use the load operator when you want to use an existing operator in another procedure definition. For example: outlined in the PostScriprT Language Reference Manual. /s /showpage load def e For changing among fonts, save font dictionaries instead of procedures that execute findfont. For example, /music /Sonata findfont 24 scalefont def will process faster than /music { /Sonata findfont 24 scalefont } def e Use the bind operator in all prolog procedure definitions. This eliminates unnecessary name lookups and increases POSTSCRIPT’s efficiency. For example: /proc { add 2 div exch round } bind def Programming for the LNO3R 6-11 [ Assume that the PosTScripT environment you inherit at the beginning of your job is the standard one. Avoid “defensive” programming techniques such as using the initgraphics, grestoreall, erasepage, and setmatrix operators. Use the save and restore operators around logical graphic and text objects, and/or complete pages, to reclaim state and memory, and to accomplish font management. SO 6.5.2 Techniques to Avoid Avoid compromising efficiency for generality. Try to minimize the amount of computation performed as the PostScrrrr file is interpreted. Scale the coordinate system when appropriate. Do not compute line " breaks of column justification in PosTScrirT. Avoid interactive dialogs with printers. Use font (.AFM) files and printer description (.APD) files. PO Avoid system-level dependencies and operators (see Section op_restrict and avoid using exitserver in simple drivers. A Avoid setting device-level functions or parameters, especially not the transformation matrix. Use the concat operator instead. 6.6 Control Characters The only characters in the ASCII control set that you can use in a print file are the white space characters recognized by PostScript. The LNO3R uses CTRL/C, CTRL/D, and CTRL/T for print job synchronization. These characters should only be used by system software, which controls the LNO3R. Applications should not include these characters in PosTScripT page descriptions. IO POSTSCRIPT uses the following white space characters as separators. ASCII codes are in decimal. Carriage Return (ASCII code 13) Horizontal Tab (ASCII code 9) Line Feed (ASCII code 10) Space (ASCII code 32) 6-12 Programming for the LNO3R s 6.7 Printable Characters ASCII characters that fall between code 33 and 126 comprise the printable characters for PosTScripT programs. Using character codes outside these limits may prevent the PosTScrIPT program from being successfully transmitted across a 7-bit communications interface. Use backslash octal notation in strings to represent character codes that fall outside the recommended set. Programming for the LNO3R 6-13 ol s ORGSR, HOIG, S A SIS e AR R [— o Appendix A Fonts This appendix describes the 29 fonts on the LNO3R. These include four type faces of ITC Avant Garde, a fixed-pitch Courier, Helvetica, ITC Lubalin Graph, New Century Schoolbook, ITC Souvenir, and Times. The appendix also includes a Symbol font containing mathematical and special characters. Each font includes sample text and a description of the character set. The sample text is 10-point text with 12-point line spacing. The following five characters are in all the available fonts, except Symbol. However, none of the character encodings have codes for these characters: Scaron scaron Zcaron zcaron trademark Fonts A-1 Figure A-1: ITC Avant Garde 10 point text on 12 point linespacing AvantGarde-Book Each single letter is a small, well-balanced figure in itself. There are bad types, too; however, in a good type-face each letter rests complete in itself. - Romano Guardini AvantGarde The contemporary typographer regards his work from the design point of view and concentrates on the true essence of his task, to create graphic design. - Emerich Kner AvantGarde-Demi Machines exist; let us then exploit them to create beauty - a modern beauty, while we are about it. For we live in the twentieth century. - Aldous Huxley AvantGarde -DemiOblique Neither may the clarity of the single lefter be given up for the sake of rhythm, nor may formal beauly be sacrificed to mere clarity or misconceived utility. - Walter Tiemann -BookOblique 8point The graphic signs called letters are so completely blended with the stream 9point The graphic signs called letters are so completely blended with th 10point The graphic signs called letters are so completely blended w 11point The graphic signs called letters are so completely ble 12point The graphic signs called letters are so completely upont 1NE graphic signs called lefters are so com s 1NE graphic signs called letters o «ee 1NE Qraphic signs called | A-2 Fonts o Figure A-1 (Cont.): ITC Avant Garde abcdefghijkimnopagrstuvwxyz 1234567890 ABCDEFGHIJKLMNOPQRSTUVWXYZ Y2Va¥a c‘:zéuqqq".’ngé’éééfil’[fi6(6666._50‘OQOW?’(i5-‘39 AAAAAACEEEEININOOOOOSUTUUYYZ tedpBt@Dbecefil £CE(_@&TF§HNO®RTM ++=—-— — 0SC¥Ef<-* /[| 1 \A#>%~%o0 N e O~ W (o) «?Ine¢, " M N N, Y [PV {7, 123 AnIS 7} abcdefghijkimnopgrstuvwxyz 1234567890 ABCDEFGHIJKLMNOPQRSTUVWXYZ V2 Ya% agdaadagéééeiin 66606s5aauuyyz (j¢°° AAAAAACEEEEINTINOOOOOSUOUUYYZ 1tedpBtdPbceceiiACE(_R&TFS)O®TM|123 t4+=—-— — 0SC¥Ef<-*/ /| I \N#>%~%0 wm O P AN owa fo) «?Inec, "7, v, 0 7T, ) abcdefghijkimnopqrstuvwxyz 1234567890 ABCDEFGHIJKLMNOPQRSTUVWXYZ '2Ys% AAAAAACEEEEITTINOOOOOSUUUUYYZ itodpBL@Dbcecefifl £CE(_Q@&TF§])O® TM23 t4=—cm — aBSEC¥ESf<-*/ /1 I\ 2 #>%~%0 «?InCe¢, 7 7 0 ."{»uv.,......."..‘...} abcdefghijkimnopqrstuvwxyz 1234567890 "ABCDEFGHIJKLMNOPQRSTUVWXYZ '/2Ya% AAAAAACEEEEIITINOOOOOSUUUUYYZ A (_@&TF§T)O® TMu123 1HedpBLt@DbPecefii tt=—em — =OSC¥Ef<-*/ /1 I\ 2 #>%~%0 "-} “?!” .", o ‘ 6593 69 (] n;:’ " ’-nu {""" ® ~orass - p Fonts A-3 Figure A-2: Courier 10 point text on 12 point linespacing Courier ~ Each single letter is a small, well-balanced — Courier-Oblique Romano The figure in itself. Guardini contemporary typographer regards point his work from the design of view and concentrates on the true to create — Emerich essence of his ARG task, graphic design. s Kner B Courier-Bold Machines exist; exploit let us then them to create beauty - a modern beauty, are about it. A while we For we live in the twentieth century. — Aldous Huxley Courier Neither may the clarity of the -BoldOblique single letter be sake of rhythm, given up for the nor may formal beauty be sacrificed to mere PR clarity or misconceived utility. - Walter Tiemann A-4 Fonts 8point The graphic signs 8point The graphic called letters 10point The graphic 11point The graphic 12point The graphic signs called letters 14pint. The st The xwm 1€ signs called signs called signs graphic so completely blended w are so letters are called signs graphic are letters letters called signs graphic completely bl so complete are so com are so c letters a called 1 signs ca S Figure A-2 Courier (Cont.): 1234567890 abcdefghijklmnopgrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ %lU% 485338¢cé88811110608088uGUNYyYZ [j¢22] 11285pREPPPecfiflEE (_R&1t+ST) O®TMp? 23 t4+=——-— — nSCY¥LEf<-* ~ /| I\"#>%~% | \7 A\ /4 o o 6 A N S - ;o . abcdefghijklmnopgrstuvwxyz 1234567890 ABCDEFGHIJKLMNOPQRSTUVWXYZ %#%% adaddaadcéééeéeiiiinédsdbodbsaauuyyz [jecé9e] 27 E( OOTMMy’ eaiff 1100pBEOPPR&t#ST) F4+=——— — =BSC¥Ef<-* -~ [\ "#>%~% ~ ” N A e -~ S o o o ! W /7 ((?!))’ o) ’(’, "’Of""'>uun{ " ‘;' } abcdefghijklmnopgrstuvwxyz 1234567890 ABCDEFGHIJKLMNOPQRSTUVWXYZ ¥4% ddaddacéééeiiiindooodssuatuuyyz [j¢82] AARAAXCERERELTIINOO0O00SGOTUYYZ 1220pBLIDPxcfiflEE (_QR&t++ST)OC®TMpu! 23 t4=—== — RSCY¥EF<-* ~ /| I\ *#>%~% 9' (o] \ WY \ 7 o ® T 0 o N I -~ . w v | abcdefghijklmnopgrstuvwxyz 1234567890 %#%k% ABCDEFGHIJKLMNOPQRSTUVWNXYZ d8dadacéééeéiiiindooodsutuuyyz [jc82] UU AAAAAACEEEETLTIRO6600SGOYYZ ( OTMy 127 ilEE _RC&1#ST) 120 0pBLODPx Fb=——e= = «<K7!2» .<ff 9’ ‘a RS¢Y¥E£fF<-* w /7”7 Y4 \ W 4 o o LAA 4 [T | ~ [/ \*#>%8~% )'"{ ” W W 4 [T I T S ¢ Fonts ¢ } A-5 Figure A-3: Helvetica 10 point text on 12 point linespacing Helvetica Each single letter is a small, well-balanced figure in itself. There are bad types, too; however, in a good type-face each letter rests complete in itself. — Romano Guardini Helvetica-Oblique The contemporary typographer regards his S work from the design point of view and concentrates on the true essence of his task, to create graphic design. — Emerich Kner Helvetica-Bold Machines exist; let us then exploit them to create beauty — a modern beauty, while we are about it. For we live In the twentieth century. — Aldous Huxley Helvetica -BoldOblique Neither may the clarity of the single letter be given up for the sake of rhythm, P nor may formal beauty be sacrificed to mere clarity or misconceived utility. - Walter Tiemann 8point The graphic signs called letters are so completely blended with the stream of writ 9point The graphic signs called letters are so completely blended with the strea 1opoint The graphic signs called letters are so completely blended with t 11point The graphic signs called letters are so completely blended w 1zpoit The graphic signs called letters are so completely ble 14pomt T he graphic signs called letters are so comple w1 N€ graphic signs called letters are s « 1N€ graphic signs called le A-6 Fonts HETPINL Figure A-3 (Cont.): Helvetica abcdefghijkimnopqgrstuvwxyz 1234567890 ABCDEFGHIJKLMNOPQRSTUVWXYZ V2434 aadaadcééeeiiinodoooosaauuyyz [j¢2°] AAAAAACEEEEITINOOOOOSUUUUYYZ 1tedpBLOD P cefif EE( @8&11§])©®TMp123 t4=—-— — -.n$¢¥£f< * //I'\"#>% ~ %o «?!»"M,“" ) - {rEY AmeRes '"} abcdefghijklmnopqrstuvwxyz 1234567890 ABCDEFGHIJKLMNOPQRSTUVWXYZ V2Va% dddaaaceééeiiiinoododsuaiuyyz [j¢ 2% AAAAAACEEEEIITINOOOOO UUUUYYZ 1o 8p BLODPascefifl £ CE(_ @&r¢§1[)mu123 Ft=—-— — -m$¢¥£f< "’///, "#> %~ ~%o «?»° ‘n ;3 sy ® { } abcdefghijkimnopqrstuvwxyz 1 234567890 ABCDEFGHIJKLMNOPQRSTUVWXYZ V1% addaaaceééeiiiinoooodsuaiauyyz [1¢29] AAAAAACEEEEIIINOOOOOSUUUUYYZ HodpBLODP2cfifl EE( @&T1§])O®TMp123 tpz—-— — nPe¥Ef<* //I'\A#>%~%a «?1»° "”“”s“ ;'a'”’..u{ T ~} abcdefghijkimnopqrstuvwxyz 1234567890 ABCDEFGHIJKLMNOPQRSTUVWXYZ %%% éfiéééégééééfliifiéébbééfifiuuyyf [ié29] AAAAAACEEEEIIINOOOOOSUOUUYYZ HobpBLODPacefifl/EE( @&TE§T)O®TMu123 thzme—e — 0$C¥Ef< "’//I,’\"#:-% %o «?!»O."’ "‘!”l!.;:, "','..{lwv PYIYRYfl'} Fonts A-7 Figure A-4: ITC Lubalin Graph 10 point text on 12 point linespacing LubalinGraph-Book Each single letter is a small, well-balcnced figure in itself. There are bad types, too; however, in a good type-face each letter rests complete in itself. - Romamo Guardini LubalinGraph -BookOblique The contemporary typographer regards his work from the design point of view and concentrates on the true essence of his task, to create graphic design. | - Emerich Kner LubalinGraph-Demi Machines exist; let us then exploit them to create beauty - a modemn beauty, wh weil are about e it. For we live in the twentieth century. - Aldous Huxley LubalinGraph -DemiOblique Neither may the clarity of the single letter be given up for the sake of rhythm, nor may formal beauty be sacrificed to mere clarity or misconceived utility. - Walter Tiemann ~ 8point The graphic signs called letters are so wmplétaly blended with the strea 9point The graphic signs called letters are so completely blended with t 1opoint The graphic signs called letters are so completely blended w- 11point The graphic signs called letters are so completely ble 1zpont The graphic signs called letters are so completel upont 1NE graphic signs called letters acre so co s 1NE grapPhic signs called letters a «on 1NE graphic signs called A-8 Fonts Figure A-4 (Cont.): ITC Lubalin Graph abcdefghijklmnopqgrstuvwxyz 1234567890 ABCDEFGHIJKLMNOPQRSTUVWXYZ YaYa¥% Gadadaceeeiiiinocooosauuyyz [i;:] AAAAAACEEEEIIINOOOOOSUIUUUYYZ 1B RLBDPascefifl ECE(_@&T$§T)©®TM1123 tt=—em — OFCH¥S </ /| ; o) WK N, M (Y } AR - ] | © =~ I\NA#>%~%o0 | abcdefghijklmnopqrstuvwxyz 1234567890 ABCDEFGHIJKLMNOPQRSTUVWXYZ Y2¥a% AAAAAACEEEEIIINOOOOOSUUUUYYZ 1leSbREGPPcecefil ECE(_ @& T+§T)©®TM (1123 th=—a — —O$EXEF<*/ /| I \AE>%~%o {IVV o 888 N N - o...} . "'} wa «?hom, " . ‘ o \ » abcdefghijklmnopqrstuvwxyz 1234567890 ABCDEFGHIJKLMNOPQRSTUVWXYZ Y2V % Gaaaaageeeeiilind560o5autuyy2 [¢*] AAAAAACEEEEITIINOOOOOSTUUUYYZ 1165 RLODPeceil ECE(_@&TFETNO®TMn123 tt=—em — OSECHELf<*/ /| I \A#>%~%0 «?1y° .‘”m;'u' ;:’m’“.{w - v‘ m...n.n-‘q ~} abcdefghijklmnopqrstuvwxyz 1234567890 ABCDEFGHIJKLMNOPQRSTUVWXYZ %% AAAAAACEEEEITIINOOOOOSTUUUUYYZ 1100pBRLODPece il EZCE( @&T+#ST)O®TMn123 tt=—ee — OSCHESS"/| I \A#>%~ %0 © £5yr 82 ,, M «?!» .f” y *)*3 ""{ WY $ AN ' P } Fonts A-8 Figure A-5: New Century Schoolbook DO 10 point text on 12 point linespacing - NewCenturySchlbk -Roman Each single letter is a small, well-balanced figure in itself. There are bad types, too; however, in a good type-face each letter rests complete in itself. — Romano Guardini NewCenturySchlbk -Italic The contemporary typographer regards his work from the design point of view and concentrates on the true essence ofhis task, to create graphic design. — Emerich Kner NewCenturySchlbk Machines exist; let us then exploit them -Bold to create beauty - a modern beauty, while we are about it. For we live in the twentieth century. -~ Aldous Huxley NewCenturySchlbk -BoldItalic Neither may the clarity of the single letter be given up for the sake of rhythm, nor may formal beauty be sacrificed to mere clarity or misconceived utility. — Walter Tiemann 8point The graphic signs called letters are so cpmpletely blended with the stream of w gpoint The graphic signs called letters are so completely blended with the st 10point The graphic signs called letters are so completely blended wit 11point The graphic signs called letters are so completely blende 12point The graphic signs called letters are so completely bl 14pont 'The graphic signs called letters are so compl weom 1€ graphic signs called letters ar ..« Lhe graphic signs called 1 A-10 Fonts TR Figure A-5 (Cont.): New Century Schoolbook abcdefghijklmnopqrstuvwxyz 1234567890 ABCDEFGHIJ KLMNOPQRSTUVWXYZ Yol %4 dddaaaceéeeeiiiinooooosunaiuyyz [2° AAAAAACERERIIHINOOOOOSUTUUYYE 11g0pBLODPxcfil EE(_@&Ti§HO®TM1123 o Y U —— -10$¢¥£f<'*//| F NN #> % ~%o0 ‘«?!»0 ® (”“”,H.;:,IH)‘.' {/wvbm.”\nm‘om} abcdefghijklmnopqrstuvwxyz 1234567890 ABCDEFGHIJKLMNOPQRST UVWXYZ YoYa%y dddagacéééeiiiinédooosuniuyyz [j; %] AAAAAACEEEEIITINOOOOOSUUUUYYZ 1todpREDPPeefiflEE(_@&T1§T)©O®TMy 123 td=—-— — OPE¥Lf<-* /| 1IN > %0~ %o «ZI»C0 T LT LT abcdefghijklmnopqrstuvwxyz 1234567890 ABCDEFGHIJKLMNOPQRSTUVWXYZ %£Y3% Addaddcéeseiiiiiiédoo68uainyyz 1] AAAAAACEEREEIITIINOOOOOSUTUUYYZ 1163pBLOPP il EE(_@&T§T)O®TM 128 tdz=—-— — OGE¥EF<*/ /1 1\ 2 #>%~%0 o..} «?1»° .<”un’u‘::,m“ {’W,A m...‘ abcdefghijklmnopqgrstuvwxyz 1234567890 ABCDEFGHIJKLMNOPQRSTUVWXYZ Yo1/4%4 ' déaa&ageeeeuunooooosuuuuyyz [,3 AAAAAACEEREEIITINOOOOOSUUUUYYZ zl¢dpfi£flflbwwfiflE®( @& }1§T)O®TMni2s t4z=—-— — "O$E¢¥Lf<¥ /114 \ A #> % ~%o0 Ao \m‘ «?!‘»D.(”“”"’;., "')‘.. {Iu\: m} Fonts A-11 S Figure A-6: ITC Souvenir 10 point text on 12 poiht linespacing Souvenir-Light Each single letter is a small, well-balanced figure in itself. There are bad types, too; however, in a good type-face each letter rests complete in itself. — Romano Guardini Souvenir-Lightltalic The contemporary typographer regards his work from the design point of view and concentrates on the true essence of his task, to create graphic design. — Emerich Kner Souvenir-Demi Machines exist; let us then exploit them to create beauty - a modern beauty, while we are about it. For we live in the twentieth century. - Aldous Huxley Souvenir Neither may the clarity of the single letter be given up for the sake of rhythm, nor may formal beauty be sacrificed to mere clarity or misconceived utility. - Walter Tiemann -Demiltalic 8point The graphic signs called letters are so completely blended with the stream of writte 9point The graphic signs called letters are so 1ccompletely blended with the stream 10point The graphic signs called letters are so completely blended with the 11paint The graphic signs called letters are so completely blended wi 12point The graphic signs called letters are so completely blend “upom The graphic signs called letters are so complete L e | e graphic signs called letters are s .= 1 he graphic signs called lett A-12 Fonts Figure A-6 (Cont.): ITC Souvenir abcdefghijklmnopqrstuvwxyz 1234567890 ABCDEFGHIJKLMNOPQRSTUVWXYZ Y2l/a%a rrrrrr flaabeLEDPaeoefiflfE(E @&figqO@Myizs t+=—-— — B$E¥EF <"/ /11 \ A #>%~%0 JNS A 7} TSI ) Y4 PAE abcdefghijklmnopqgrstuvwxyz 1234567890 ABCDEFGHIJKLMNOPQRSTUVWXYZ 121434 dddadacéééefiiinoéséo6suniugyz [jé*°] AAAAgA CEEEEIIIINOOOOOSUUUUYYZ 1teopBt. ODPaecefifl £E(_ @&‘I‘i §J)o®TM 123 ++=—-—— 0OSC¥E f<. ¥ //1i \NA#>%~%o0 «?lnCe “7 7 L M, T AT) abcdefghijklmnopqrstuvwxyz 1234567890 ABCDEFGHIJKLMNOPQRSTUVWXYZ 121/334 addaaaceeeeininodooosuniinyyz [;¢°°] AAAAAACEEEEIIIINOOOOO UUUUYYZ nloabBLflDmefiflE(E(M@&1’#5%)@@’“;1123 t4m—mm — BSC¥EF<-* 7 /1 | \A#>%~%c0 «4’!» Y u”,u! ;."”)‘.'{tvvba \”-‘om} abcdefghijkimnopqrstuvwxyz 1234567890 ABCDEFGHIJKLMNOPQRSTUVWXYZ 12Y4%4 aaaadageeeétuméoooosuuuu Z [;¢2°] AAAAA QEEEEmiNOOOOOS(JUUU?Yz 1103p BLOPP2cefifl EE(_@&++§F)O® TMy 123 e E——— — wu$¢¥£f< */ «PIn®0c,, O 569 o “7, s, £ ne frev "] /1 I \A#>%~%o Assesnme Q » ) Fonts A-13 Figure A-7: Times 10 point text on 12 point linespacing Times-Roman | Each single letter is a small, well-balanced figure in itself. There are bad types, too; however, in a good type-face each letter rests complete in itself. — Romano Guardini Times-Italic A The contemporary typographer regards his work from the design point of view and concentrates on the true essence of his task, to create graphic design. — Emerich Kner Times-Bold Machines exist; let us then exploit them to create beauty — a modern beauty, G while we are about it. For we live in the twentieth century. — Aldous Huxley Times-Boldltalic Neither may the clarity of the single letter be given up for the sake of rhythm, nor may formal beauty be sacrificed to mere clarity or misconceived utility. -~ Walter Tiemann 8 point The graphic signs called letters are so completely blended with the stream of written thou 8 point The graphic signs called letters are so completely blended with the stream of wr 10 point The graphic signs called letters are so completely blended with the strea 11 point The graphic signs called letters are so completely blended with t 12 point The graphic signs called letters are so completely blended w 14 point The graphic signs called letters are so completely b 18 point The graphic signs called letters are so ¢ PR [ 24 point A-14 Fonts The graphic signs called lette Figure A-7 (Cont.): Times abcdefghijklmnopqrstuvwxyz 1234567890 ABCDEFGHIJKLMNOPQRSTUVWXYZ %Y dadadacéeeeiliinéoooosuaiiuyyz ;2] AAAAAACEEEEMNIINOOOOOSUOUUYYZ 1160pBLODPzifl EE(_@&T$§])©O®TTMp123 t+=—-— — -OF¢¥L£f<-* / [IN#>%~%0 «I»Ce o] €9 ¢ 9% 7 . 7 i " ML {IUV . Mes o N Ouv} abcdefghijklmnopqrstuvwxyz 1234567890 ABCDEFGHIJKLMNOPQRSTUVWXYZ Y2%% dddgaacgééééiiiinooooosuninyyz [; ;%] AAAAAACEEEEITIINOOOGOOSUUUUYYZ 1HpopSLODPecfilEE( @&TES])O®TTMTMy 123 tt=—e— ARG ¥Lf<-* /|| \NE> D0 ~%0 «?!»Q.(” 66 9 , tl.;:’nl {wwv‘ Assy mfln"‘fin} abcdefghijkilmnopqrstuvwxyz 1234567890 ABCDEFGHIJKLMNOPQRSTUVWXYZ %“%3% aaddaaacéeééeiiiinéoooosuaaiauyyz [; 2] AAAAAACEEEEIIIINOOOOOSUUUUYYZ iHgdpBLODPP2efil EE( @&Ti§HNO®TM 123 thzmem — REE¥Ef<* / /|\A#> % ~%0 - © s ¢9 " . £ ’wV Ow Ao\ MNe abcdefghijklmnopgqrstuvwxyz 1234567890 ABCDEFGHIJKLMNOPQRSTUVWXYZ Y Y%% dddadacéééeiiiinooooosunvinyyz [; ;4] AAAAAACEEEEIITINOOOOOSUOUUYYZ 1odppLODPecefii EE(_@&T1§])O®TMy 123 t4=—ee — OFe¥L£f<-* / /1IN #>% ~ %00 9’ o] «?In®0q, €€y ¢y ,, MM Py 7,57, Wil e Asss Qo ) Figure A-8: Symbol Sample Symbol uses aR®(bBc)=(a®b)DP(a®c) A YypoI' *P 8”—‘-’-—”1}1}1{1}’1 xlI(1+x)#1) WE-E)=32|Cn{E} |CN{E}|if &LeLandt #&" i‘;: Z,HcM ZWONZ =3 (G#]) proposition true if and only if (Fu) s (p) (Vu) s (~ p) (Fu) s (~ p) ~((Vu) s (p)) SNT,#Q SNT,=Q (@wsE) SNT, #D SAT, #J SNT,=0 kpwzf’ll (at)ml s+ Vs2—4Au k SO 2 I A-16 Fonts Figure A-8 (Cont.): Symbol 12 point J EERRIIRIEA) oy SedyNIKALVOTOPSTLOE YL EBOG ABXAE®IHIKAMNOIIOPETYQ=¥ZY | {4t || | | —f=~m=<>S . —+EX+ 2AV o V3sdNnuococgege TP L] L k) ocTolecellale"”ar3Re D AOBOMPOTMMY][)LLVes o va #%&*,. 01234567892 FN || —1/ 16 point anSecbfykauvonepctuu)&\uc(pmfig ABXAE®THIKAMNOIIGPETYQEWYZY o< =2=~==<>SZ2AV .. —+EX+ Visonuocpopczeg O@Doo oceToleocel=le""0r3Rp L AOPOTMMBPOMTMMYI][)LLVes ¢ va f\ | | —1/ #9%&+*,. 012345678952 H{H}[H]((\) | 4 | J U LU U Fonts A-17 G I AP SR B MRS RO SR O IS5, AR S s s [ B Appendix B The LNO3R includes four encoding vectors: Adobe Standard Encoding, Symbol Encoding (used only for the Symbol font), ISO Latinl Encoding, - and DEC MCS Encoding. When you use the extended findfont operator, which is part of the device control library, these encodings are available. This appendix describes the encoding vectors on the LNO3R and lists the characters in each encoding vector in numerical and alphabetical order. ISO Latin1 Encoding Vector The ISO Latin Alphabet Number 1 standard (ISO 8859/1) and the 8-bit ASCII standard (ANSI X3.4-1977 and X3.134.2) both specify the character set for text and data processing in the languages of western Europe and the western hemisphere. The character codes octal 040 through 176 in the ISO Latinl Encoding vector and Adobe Standard Encoding vector conform to the American National Standard Code for Information Interchange (ASCII), X3.4-1977. The ASCII Standard permits several choices between coded characters that look alike, which is especially useful in monospaced fonts. For proportionally-spaced fonts, you must choose. For example, the ASCII and ISO standards permit octal 055 to be either hyphen, minus sign, or both. Also, the ASCII standard permits octal 140 to be left single quotation mark, grave accent, or both and permits octal 047 to be apostrophe, right single quotation mark, acute accent, or any combination. Character codes octal 040 through 176 for the ISO Latinl Encoding vector are identical to the Adobe Standard Encoding vector, except for character code 055, which is hyphen in the Standard Encoding vector and is minus sign in the ISO Latinl Encoding vector. ISO Latinl Encoding has hyphen at code table position 255 octal. Having both hyphen and minus characters (with different coding) is more useful than having two hyphen characters. The character codes octal 240 through 377 in the ISO Latinl Encoding vector conform to the ANSI and ISO standards. The ANSI and ISO standards are for “final form” interchange with character imaging devices, such as PostScrirt, where the data is not to be reformatted after interchange. The standards are also for “revisable form” interchange with text Encoding Vectors B-1 P processing systems, where the data may or may not be reformatted after interchange. The characters at octal 240 and 255 are non-breaking space and soft hyphen, respectively, which have identical presentation, as space (octal 40), and hyphen. These are for revisable interchange. Therefore, for final form interchange, such as PostScripT, octal 240 is defined as space (the same as octal 40), and octal 255 is defined as hyphen. I Note that dotlessi and accents (octal 220 to 237) are not part of the ISO Latin Alphabet Number 1 or the 8-bit ASCII standards. They are encoded in the ISO Latinl Encoding vector because PosTScripT requires that accents and component characters used by encoded composite characters also occur somewhere in the encoding vector. In other ANSI and ISO standards, octal 220 to 237 are assigned to control functions, not graphic characters. However, PostScripT does not include these control functions. I SRR e B-2 Encoding Vectors Adobe Standard Encoding Vector f o s elotela’e Figure B—1 SHNEEREREE A==R(s|00O~ =©&0Ol]| : v~|r~ ‘oS |= P s»:v‘::L0 9 A £ e L L) ‘l’.r et . atalato &tate R v oolM‘~fl'1‘0.\ ratatets%Foll Wi ot fl.fl.k!Po ote “‘ hals, ol a2atlN %’ ED D o, o LD Sx 7x 2x S5x 7x Encoding Vectors B-3 LKAXnw0mSO.nONSLAR-B.i‘hQanPflRl.-f.llOAOIlnfi¥IRELDgSvAOEOoEF,ESSOINOSS, B-4 Encod Vectors ( \06x 0 \07x 8 I1x Ox \23x 2x \27x u2rs: Sx KR SRt AN \O5x RRNRMRSR gure B-2 XSO,5TlXX RIS:SOO N ARR PRI RRlKt& NROLR As eD<E)RAE STeLWSRLtEOAyHTKQeDTSTRLRUAtIREANKRIGADyt,RNgRESRXeISO,RAeBNK2FR5tyII,MLEHeRSTBes SXeIOtRCEeRKANOSECSBRNUA KRRASTKRNRIyKMKGAWKRASRyEtOgRPDSeLDSeRSGEOtRANNSRIOOR SSRB RlSEkOS7NNS NoKDOCSoSOaN2eteOSR’,leOeEBSeXARSeO0sNwRe4I&eC,K’0e. DReSLACBRxKT2cNSLO 5os0e5 BK(ue‘3lNSQe'eI!URlSowCl&.IUNfeQltUS‘l5Q%XvusSORTSVeelSiAtwmtNmonO,t0fRlmAfiKo2LSX .NRDeBSeRt, ,NellxXtRsN OQPR:mRqALBR@L««fR(Si‘u‘tt‘SIL‘Inn‘fllyEaffli eeiLGiXNRfeKOlWKKRSSSNeiWORX'sh4‘RA0%RR-R@&N'&AN*«RR&Re,f50 Et OSwRNSSeSNQSXMKK1W,RLsDLKIWYeR¢tRGARC‘ARlOH‘GIARI¢RyAeSKCMeAIE3mEHfGAKNl5CSOlXTnS1RATSeKARKSRfNNL"SRXRllO‘f&iA!O'NGfN0&LGl0SfI!E,*lNS‘WAfX0XlUiINQ,SI‘fflS%lO&!. LSQlX,ARANRKGRIf!OeIIlXTO"S%’QfR2OlUM'.W@USf:MlN0lwQfOa«iEfftli . SOLRIN(SCRROERKCGIARRCE 0SODIQ‘SNM!1'LAU1B&«"N1,KT‘G1‘ NOIBBRSBSANRR,R,ySO-D 4 DeLROtKSATaS ISOSSRNB0 XMOISKOOLSAA)ONI ANIDURHE obtDRnOcSNOOARS SOoRKORCGIEA,NEtNNO 0AACO O 0 RSRBSeROTy0E IR Symbol Encoding Vector TR \10x S \12x \11x SRR \13x R \l4x \16x Sx \I7x SRS < A L4 AT " Ix Ox 2x 3x TM 7x O R S gure B-3 1SO Latin1 Encoding Vector S SRNRSERESESKARROISEONIII,R sS,R%sx(IBRR(IASN octal Qxlfl"fl'.’ R R F FERRS R aegalale X%35p%u%eat metulfitfln» LARLIe )RN IRS ALRNRS Reskv eR OQGRPI e%6xs5Ek3£ iTN, BsLKRE oNNR(RSl Slea a SO 0£K T &5 . £ i SNOfWlfidf5lflwh e A S L S SOl wialalelPsO NEet T o, & O ial ettte *M 'S, "et WSS ! : 5 Cohntatatatntate et o : Nt : ", Pa et e n & e St T s eT ToS Kflfil‘fl R R SIS m=Od«n2aw.n‘,oA0 %ey’ i e SOGD \ aTrata 8" s e %e s SN (S RSeSll&wEke JfEifAlSCfAlfEi LNeASWR RS 5e.%5 aSeatyla AOBSRNR,wev oAQKR W‘fikflfil‘.‘i SO S SRNS M2yU A(iRt e SR .x‘w SWSeNDKEXRNT BSPAR,SRBISRt eSEOO0 OSlNSeTareleate¢E, LSRMY E R AN, ® AR \ alsS elale! ¥ % x S5x \O6x 0 \O07x 8 \10x \llx [ 2x \I3x 4x Sx \I7x » SEuks,SeOtnSern 2x oEaeto,ta B S, OGBS Slatatote RIS R o+ bt KL0 ) L .fl Qnfl K : e C 4x Sx 6x » Va 1 Ox N4 1x 2x 1=~ 3x 4x S “w Sx 6x o 3 =3 7x Ya ‘*Q ", W ) Zn 22 . O Sy L * e o Gs > ! *. e o -, e 5 Huke & SIR, CIA 7x i e2%&olol " L e s, R 0 erntatls! SOsseiet yalOs L, SR M ReB 3x " *, RN o IR LA o otywnflf£l‘tl'W W%R‘eSKRN % Q' DEC MCS (DIGITAL Multinational Character Set) Encoding Vector Character codes octal 040 through 176 (the ASCII character set) of the DEC MCS Encoding vector are the same as the ISO Latinl Encoding vector and, therefore, are the same as the Adobe Standard Encoding, except for code table position octal 055. Position octal 055 is minus in ISO Latin1 Encoding and DEC MCS Encoding, but it is hyphen in Adobe Standard Encoding. Note that dotlessi and accents (octal 220 to 237) are not part of the ISO Latin Alphabet Number 1 or the 8-bit ASCII standards. They are encoded because PosTScrIPT requires that all accents and component characters used by encoded composite characters also occur somewhere in the encoding vector. In ANSI and ISO standards, octal 220 to 237 are assigned to control functions, not graphic characters. However, POSTScrIPT does not include these control functions. S Y O RN fe fE B-6 Encoding Vectors R DEC MCS (DIGITAL Muitinational Character Set) Figure B-4 Encoding Vector ESENSL oSoeae RSNtetestasA0 X AREK etLReteltets MWSM?%HYE, eoTasTealaB SR eBH)LSRS, Lo SOSR e, XRERIGS GtS e £ 5 2 LN e ¥; e elWD SeO Sy x ) O LN * : ¥ L4 X ‘lflt=‘l’fl Rqulficm O 0 SO SOSOG oiGOS0tatelale ! aenwtates%eCAXlNeseoate,l%nf lfolSR% Sl LA saeTteye, K LR RS20 S *,‘, SO L3 . 50 IR O % L e, noape OO0 3 e & RK A AR 5 SR e (2 s QR sle s L3 Sl BRI & & £ . AN T s QAR ¥Qn.',lK."lN ) \ EKBR‘I“&#D*Q“ bSetaete DS S fl*&'am fifi,. LNRI Sl N sQIR SLR SISSKNR ReSleTatal o& e AN e AL aTeathauStle Sl ;lnhwfi A5reteatatsA! LoraiSnOetty etARSO0 S &. (RN SRSel -L3 ER05ooSele SRfSl*l&‘ o R ek o . S, e RR L ifl'fll““ eliawi‘e&leW! RToeietels! eiateTets SRS st caTatete KL eeseTenel tt!‘w‘a0IW eo%a2t 0 octal S5x \06x 0 \07x 8 Ox Ix 2x 3x 4x =fl‘fi‘iybmf‘f !eletRerae i o, AN G fl“fl.‘*lfl‘fiBURSTS st t LRe Sx e Q:O'y “N o o"% SRe e%sse SO o a st ot atahsuls! ey 2ey WP tatatulate! b o o W SR, 5 & o Fock K et [ SO A, %@WJV e2els! s SR a«hfam O RR ARe RS %Uflm ,e D ERNi el " e D XX LR KR LRN L) oR > fifi 1\, 23 . NSS DR elR‘ifl*‘!R,, el ortureTotutel:es Qlwflfiflfl%"fl. %%t e 5 e e EO) T,SO0 55 W 7x L Lo RN0,eR . * SO “« « 6x » Ox Ix # NS4 oN L 1=+ 3x 4x =) E Vectors B-7 Table B-1: octal octal char name 136 asciicircum 271 . quotedblbase 137 underscore 272 7 quotedblright 042 quotedbl 140 quoteleft 273 » guillemotright numbersign 141 a 274 ... ellipsis 275 %o perthousand 277 i questiondown 301 ) bar 302 303 ) circumflex asciitilde 304 -~ tilde exclamdown 305 - macron cent 306 - breve sterling 307 ' fraction 310 parenleft 175 parenright 176 asterisk 241 plus 242 054 comma 243 055 hyphen 244 056 period 245 057 slash 246 zero 247 053 250 nine 251 072 colon 252 semicolon 253 less 254 075 076 077 100 101 >V H A 074 PO 073 - 071 equal 255 greater 256 question 257 at 261 A 262 263 yen 312 florin 313 section 315 currency 316 quotesingle 317 quotedblieft 320 P grave acute dotaccent dieresis - ring cedilla - hungarumlaut ¢ 174 ogonek £ N e g ot braceright 173 O eunn 052 braceleft ampersand quoteright - 051 z R caron emdash By Ao 2 050 172 guillemotleft 341 AE guilsinglleft 343 ordfeminine guilsinglright 350 Lslash fi 351 Oslash fl 352 OE | 047 dollar percent endash 353 ordmasculine dagger 361 ae daggerdbl 365 dotlessi PR T 046 A B 044 = space exclam PR n 040 045 Encoding Vectors name 041 043 B-8 char ! name B -~ char K N octal Characters Listed in the Order of Adobe Standard Encoding 132 Z 264 periodcentered 133 370 Islash bracketleft 266 paragraph 371 oslash 134 backslash 267 bullet 372 oe 135 bracketright 270 quotesinglbase 373 germandbls A, GO g octal char Phi 144 Gamma 145 PSS ~3320moocm | name octal char name 040 space 106 041 exclam 107 042 universal 110 043 numbersign 111 existential 112 047 suchthat 115 050 parenleft 116 051 parenright 117 052 asteriskmath 120 053 -plus 121 054 comma 122 124 057 slash 125 060 zero 126 Sigma 161 Tau 162 Upsilon 163 sigmal 164 tau Omega 165 upsilon Xi 166 167 omega xi theta rho sigma L perpendicular 174 underscore 175 braceright Delta 140 bracketleft 171 therefore 172 173 radicalex 176 141 o alpha 241 142 B beta 242 chi 243 143 psi zeta braceleft bar | Beta 170 similar s Alpha Zeta omegal minute A A I 133 105 omicron pi 137 less 104 160 136 132 103 157 Rho congruent semicolon 101 Theta mu nu question 073 102 156 bracketright 131 100 155 Pi ] 130 colon 077 Omicron kappa 135 nine 072 076 153 154 greater 071 074 Mu Nu iota phil 134 127 075 152 PP NEHNRDN 123 period 151 Lambda 2V minus Kappa gamma eta mb X w > 055 056 150 A 114 thetal phi B € 113 ampersand 147 delta epsilon e percent 046 146 Iota name gt E I 045 “Eta OH O CTE char Encoding A MIOOO0ZZ > RS~T 1O octal Characters Listed in the Order of Symbol Q0 Table B-2: lessequal Upsilonl Epsilon Encoding Vectors B-9 B, Table B-2 (Cont.): name 244 245 char fraction 302 infinity 303 304 305 250 diamond 306 251 heart 307 spade 310 263 264 265 266 267 270 271 272 273 274 275 276 277 300 301 tH o] arrowdown 315 degree 316 plusminus 317 second 320 Vv 262 313 314 greaterequal X 260 261 arrowup arrowright multiply W R 257 311 312 proportional e 255 256 arrowboth arrowleft bullet M H + 253 254 divide 326 notequal 327 equivalence 330 approxequal 331 ellipsis 332 arrowvertex 333 arrowhorizex 334 carriageretum 335 aleph 336 Ifraktur 337 w=xt | —: 252 DT 1 » @ florin club 247 321 322 323 partialdiff 324 325 =) =210 <> 246 octal 2 EO@ANR M NNANUCOOORD 3 char < § octal Characters Listed in the Order of Symbol Encoding name octal char name Rfraktur 340 lozenge weierstrass 341 angleleft circlemultiply 342 registersans circleplus 343 copyrightsans emptyset 344 trademarksans intersection 345 summation union 346 parenlefttp propersuperset 347 parenleftex reflexsuperset 350 parenleftbt bracketlefitp notsubset 351 propersubset 352 bracketleftex reflexsubset 353 bracketleftbt bracelefttp element 354 notelement 355 braceleftmid angle 356 braceleftbt braceex gradient 357 registerserif 361 angleright copyrightserif 362 integral trademarksenif 363 integraltp product 364 integralex 365 integralbt dotmath 366 logicalnot parennighttp 367 parennightex logicaland 370 parenrightbt logicalor 371 bracketrighttp arrowdblboth 372 bracketrightex bracketrightbt arrowdblleft 373 arrowdblup 374 bracenghttp arrowdblright 375 bracerightmid arrowdbldown 376 bracerightbt e SRR AR I SN B-10 Encoding Vectors s Characters Listed in the Order of ISO Latin1 Encoding space 101 A 041 exclam 042 quotedbl 132 043 numbersign 133 044 dollar 134 hungarumlaut , 236 ogonek bracketleft 237 caron backslash 240 space bracketright 241 asciicircum 242 Z 136 047 quoteright 137 underscore 243 050 parenleft 140 quoteleft 244 051 parenright 141 a 245 055 174 056 175 057 176 060 220 g bar 251 braceright- 252 asciitilde 253 dotlessi 254 grave 255 exclamdown currency yen copyright cent sterling brokenbar section dieresis ordfeminine guillemotleft logicalnot hyphen 222 acute 256 072 223 circumflex 257 073 224 tilde 260 O degree 225 macron breve - 262 W !+' plusminus 226 227 dotaccent 263 W registered 071 threesuperior 230 dieresis 264 vy 221 250 braceleft. oo o 173 247 « o comma 054 Z I 172 Jonk asterisk plus # P 246 + 053 > e 135 ampersand - o cedilla e R o 233 percent 052 name 235 A 046 045 char R o~ 040 octal name O char tem == o octal char N ¢ name octal @ 1 a2 =0 Table B-3: acute 232 ring 074 075 076 077 100 ® >VIl A - ' - 261 macron twosuperior Encoding Vectors B-11 PG penodcentered 320 270 cedilla 321 271 onesuperior 322 272 ordmasculine 323 273 guillemotright 324 274 onequarter 325 275 onehalf 326 276 threequarters 327 277 e questiondown 330 Agrave 331 ) (Y e 1 Bt B D Aacute 332 302 303 304 305 306 307 311 312 313 314 315 — e [TE U ITh 310 Acircumflex 333 Atilde 334 Adieresis Aring 347 350 Eth 351 Ntilde 352 ccedilla eacute ecircumflex Ograve 353 Oacute 354 igrave Ocircumflex 355 iacute Otilde 356 Odieresis 357 mulaply 360 Oslash 361 Ugrave 362 Uacute 363 edieresis icircumflex idieresis eth ntilde ograve oacute Ucircumflex 364 ocircumflex Udieresis 365 otilde 335 Yacute 366 336 Thom 367 AE 337 germandbls 370 Ccedilla 340 Egrave 341 Eacute 342 Ecircumflex 343 Edieresis 344 Igrave 345 Iacute 346 agrave 371 aacute 372 acircumflex 373 atilde 374 adieresis 375 aring 376 ae 377 OO 301 egrave Icircumflex Idieresis S 300 name odieresis divide I oslash ugrave CTECEDE 267 char OO 317 paragraph octal DB 316 o mu 266 . 265 name o char DO octal OO name oo char B octal Characters Listed in the Order of I1SO Latin1 Encoding COCCOAX COO0OOCOZtY - Table B-3 (Cont.): uacute ucircumflex udieresis yacute thom P B P B-12 Encoding Vectors A i Table B—-4: Characters Listed in the Order of DEC MCS name octal char 040 space 076 041 exclam 077 042 quotedbl 100 043 numbersign 101 >0 oV Encoding 044 dollar 224 tilde 225 macron at 226 breve A 227 dotaccent 230 dieresis 232 ring ampersand 133 bracketleft 233 cedilla quoteright 134 backslash 235 hungarumlaut 135 bracketright 236 ogonek parenrnight 136 asciicircum 237 137 underscore 241 minus 172 z 247 245 056 period 057 slash 173 braceleft 250 060 Zero 174 bar 251 175 braceright 252 253 176 072 220 ~dotlessi 260 073 075 colon semicolon 221 grave 261 less 222 acute 262 equal 223 circumflex 263 A 074 e nine - 071 ¢ 055 K th 6~ 243 0w 242 a section = O quoteleft 141 copyright A 140 comma 053 caron exclamdown cent sterling yen currency ordfeminine guillemotleft o plus 054 052 ¢ Z e A~ 132 R percent asterisk 051 name greater parenleft 050 char question + 047 octal degree W M 046 name plusminus w 045 char R Re octal threesuperior twosuperior 265 266 267 name octal char mu 316 paragraph 317 periodcentered 321 271 onesupernior 322 272 ordmasculine 323 274 275 B XK 273 300 301 302 303 304 305 306 (B e B Dt 3o B D 277 310 311 312 313 314 315 e [T D ITh T 307 guillemotright 324 onequarter 325 onehalf 326 questiondown 327 Agrave 330 Aacute 331 Acircumflex 332 Atilde 333 Adieresis 334 Aring 335 AE 337 Ccedilla 340 Egrave 341 Eacute 342 Ecircumflex 343 Edieresis 344 Igrave 345 Iacute 346 name octal char name %:fi:fi&:*&g&Q&&Q’Bt-:t-an\—ffi:m&wm B char Characters Listed in the Order of DEC MCS Encoding Bt OR OO0 2 — octal L T -~ Table B-4 (Cont.): ae Icircumflex 346 Idieresis 347 Ntilde 350 Ograve 351 Oacute 352 Ocircumflex 353 Otilde 354 Odieresis 355 OE 356 Oslash 357 Ugrave 361 Uacute 362 Ucircumflex 363 Udieresis 364 Ydieresis 365 germandbls 366 agrave 367 aacute 370 acircumflex 371 atilde 372 adieresis 373 aring 374 ae 375 AT ccedilla egrave eacute ecircumflex edieresis igrave iacute icircumflex idieresis ntilde ograve gacute ocircumflex otilde odieresis oe A oslash ugrave uacute ucircumflex R udieresis ydieresis L A Ao B-14 Encoding Vectors Table B-5: name Characters Listed in Alphabetical Order encoding character Adobe A AE Aacute Acircumflex Adieresis ~ Agrave Standard Symbol ISOLatin1 DECMCS A 101 e 101 101 A A A 341 — — e — —_ 306 301 302 306 301 302 A — — 300 300 A — — 304 304 A — 101 — —_ Aring A — — 305 305 Atilde B A B e 102 — —_— Beta B e 102 C C 103 - — o Alpha C Ccedilla Chi D Delta E 303 102 — —_— 103 307 103 307 — —_ —— 103 D 104 — 104 104 A E — 105 — —_ 104 — — 105 311 312 — 105 311 312 _— — 310 310 X Eacute Ecircumflex Edieresis E E E Epsilon Eta Eth F G Gamma E H b F G r Egrave 303 102 E — — e — e — 106 107 — 105 110 —_ — —_ 107 313 313 — —_— 320 106 107 — — —_ — 106 107 e Encoding Vectors B-15 ‘Table B-5 (Cont.): name Characters Listed in Alphabetical Order character encoding Adobe Standard Symbol R ISOLatin1 DECMCS H 110 — 110 1 110 111 — 111 111 Iacute —_— 315 315 — 316 Idieresis 316 — 317 Ifraktur 317 301 — Igrave — 314 Iota 111 e Icircumflex R 314 J — 112 K 112 — 113 113 Kappa 113 — L — 114 Lambda 114 e — 115 115 e 114 Lslash 115 — 116 116 — 321 321 116 — — 117 OE 117 327 Oacute — 323 Ocircumflex —_— 324 Odieresis 324 — 326 326 322 Ograve —_ 322 Omega 127 e Omicron 117 e 323 il E B-16 Encoding Vectors Table B-5 (Cont.): name Characters Listed in Alphabetical Order character encoding Adobe Standard Symbol ISOLatint DECMCS Oslash (%) 351 — 330 330 Otilde 0 — — 325 325 P P 120 e 120 120 Phi ® — 106 e — Pi Psi IT b4 o - 120 131 — — —_ — Q Q 121 - 121 121 R R 122 e 122 122 Rfraktur Rho R P e S 302 122 — — e — S S 123 e 123 123 Scaron S — — — —_ Sigma z — 123 — — T Tau Theta Thom U T T 124 e S 124 124 — 124 — e e 121 —_— — p e —_ 336 U 125 —— 125 o 125 Uacute Ucircumflex Udieresis U 0 18] — — e — — — 332 333 334 332 333 334 Upsilon Y e 125 — Y — 241 — — Upsilonl \" W X A" W 126 127 — e 126 127 126 127 X 130 — 130 130 Ugrave U — — 331 331 . Encoding Vectors B-17 A Table B-5 (Cont.): name ~ Characters Listed in Alphabetical Order character fl encoding . Adobe Standard Symbol ISOL atin1 DECMCS — Xi = e 130 — _— Y Y 131 — 131 131 Yacute Y — Y 335 _ — Ydieresis — — 335 Z Z 132 Zcaron y4 _— - 132 132 Zeta Z e 132 — —_ a a 141 R 141 141 aacute 4 e o 341 341 acircumflex a e — 342 342 e acute ’ 302 - 222 344 — — — — _— @ e - 222 344 z 361 —_ 346 346 agrave a e e 340 340 aleph R e 300 —_ —_— adieresis ae " o — — - — alpha o —_ 141 — — — ampersand & 046 046 angle Z S 320 046 — 046 — L angleleft { e 341 —_ — angleright ) — 361 approxequal = e — 273 — —_— aring a e - arrowboth PN — 253 345 345 arrowdblboth =3 — 333 e — — — — arrowdbldown U - 337 — — arrowdblleft = e 334 — —_ arrowdblright => — 336 _— — — - J— g SO B-18 Encoding Vectors S Characters Listed in Alphabetical Order Table B-5 (Cont.): name encoding character arrowup arrowvertex asciicircum asciitilde asterisk = arrowright e —— —~ arrowleft 335 257 — —_ | arrowhornizex DECMCS 276 — —— 254 — —— 256 — — 255 — e 275 . — — 136 136 e 176 176 — 052 052 > —=01 7T arrowdown ISOL atin1 1 arrowdblup Symbol * Adobe Standard asteriskmath 052 — —_— at e 100 100 atilde — 343 343 b e 142 142 backslash — 134 134 bar 174 174 174 beta 142 —— —_ braceex 357 —_ e braceleft 173 173 173 braceleftbt 356 —_ — braceleftmid 355 e — bracelefttp 354 - o braceright 175 175 175 bracerightbt 376 —_ —_— bracerightmid 375 —_ —_ bracerighttp 374 —_— —_— bracketleft 133 133 133 Encoding Vectors B-19 Table B-5 (Cont.): name Characters Listed in Alphabetical Order character encoding Adobe bracketleftbt bracketleftex bracketlefttp bracketright bracketrightbt bracketrightex L s . | Standard Symbol ISOLatin 1 DECMCS — 353 — — — | [ — — 135 — — — — 135 373 372 — — o ] J | 352 351 135 — — 135 — —_ - " bracketrighttp 1 breve - 306 e 226 226 brokenbar | e o 246 —_ bullet . 267 267 e e c c 143 e 143 143 — 371 — — e caron v 317 — 237 237 carnagereturn o e 277 e — | ccedilla ¢ . - 347 347 — cedilla . 313 — 233 233 cent ¢ 242 e 242 242 chi X e 143 e o — — circlemultiply ® — 304 — — circleplus &b — 305 — e circumflex B 303 club . » 223 223 — 247 \, — — > colon : 072 072 072 comma 072 . 054 054 054 054 congruent = o 100 - — copyright © e e 251 251 copyrightsans © e 343 copyrightserif © — 323 — -— — — . | - s v B-20 Encoding Vectors Table B-5 (Cont.): encoding character DECMCS e 244 250 — 144 144 260 260 e e — — e 230 230 O ISOLatin1 250 d O Symbol 144 dagger —+ Adobe Standard 262 4+ name Characters Listed in Aiphabetical Order 263 currency O 260 delta OO0 144 250 divide 044 e 227 227 dotlessi — 220 220 dotmath 327 — — e &» O © e 044 . 145 145 o 351 351 — 352 352 & 367 . e 353 353 oo o 270 o 350 350 070 070 070 M dollar 310 Qti dieresis o diamond : degree @& daggerdbl 316 e . 274 e — 306 — o dotaccent eacute ecircumflex edieresis egrave eight element emdash emptyset endash epsilon equal equivalence mon e Q| ellipsis 145 — e 075 075 075 272 e e Encoding Vectors B-21 Table B-5 (Cont.): name Characters Listed in Alphabetical Order character encoding exclam 150 — — 360 germandbls 044 —_— — 146 146 065 065 065 o g gamma 241 146 B fraction 041 241 256 WL florin four 041 — 065 B Y five fl 041 241 246 246 e 064 064 064 N f 244 244 — 147 373 Encoding Vectors r WV 255 150 @ 254 hungarumlaut 1 273 heart hyphen B-22 2 guilsinglright h ¥ guilsinglleft 253 ~ guillemotleft guillemotright 076 v greaterequal 301 I greater SO 257 gradient grave DECMCS 041 = 0 existential W exclamdown fi ISOLatin1 3 eth Symbol = o Adobe Standard eta S - 147 147 o o 337 321 o 064 147 337 — 221 221 076 076 076 263 o — 253 253 . 273 273 150 — 150 251 — 315 e 235 055 — 255 235 S Table B-5 (Cont.): name Characters Listed in Alphabetical Order character | Adobe encoding Standard Symbol ISOL atin1 DECMCS i i 151 - 151 151 iacute i - o 355 355 icircumflex i —_ — 356 356 idieresis i e - 357 357 igrave i — e 354 354 infinity oo e 245 — — integral J — 362 o — 3 _ 364 e — e 307 integralbt J integraltp ( integralex intersection N — — 365 363 — — — — — —— iota 1 e 151 —_ —_— j j 152 e 152 152 153 k k 153 — 153 kappa X — 153 — — 1 | 154 — 154 154 lambda A —_ 154 e e less < 074 074 074 074 lessequal < e 243 — — logicaland A — 331 — — logicalnot - — 330 254 — logicalor v — 332 o — lozenge 0 - 340 — — 370 — — — m 155 — 155 155 macron - 305 — 225 225 minus - e 055 055 055 Islash m Encoding Vectors B-23 Table B-5 (Cont.): name Characters Listed in Alphabetical Order character encoding nu numbersign o oacute ocircumflex odieresis oe ogonek ograve omega omegal omicron one onehalf onequarter onesupernor ordfeminine ordmasculine X & O3 265 264 327 265 — 156 156 071 071 071 — e R ntilde e 155 317 # notsubset 242 DECMCS 271 33 fQ notelement notequal ISOL atin1 313 e e 361 oo o o0 #£t < n nine Symbol 156 — 043 043 - 157 157 — 363 363 361 043 s 364 364 o 366 366 — 236 236 — 362 362 167 e 367 B multply N =0 8e8g o- mu (-2 minute hl Adobe Standard T 166 - 157 e 061 061 061 e 275 275 — 274 274 — 271 271 343 e 353 e - 252 252 272 272 P IR B-24 Encoding Vectors OO Table B-5 (Cont.): name Characters Listed in Alphabetical Order character encoding Adobe Standard Symbol ISOL atin1 DECMCS oslash ® 371 — 370 370 otilde o — e 365 365 p p 160 o 160 160 paragraph | 266 — 266 266 parenleft ( 050 050 050 parenleftbt parenleftex \ | — — 350347 — e 050 parenlefitp ( ) 051 — 346 parenrightbt ) — parenrightex parenrighttp l ) — — parenright 051 — — e — 051 051 370 — — 367 366 —_ — —_ — partialdiff d — 266 — o percent % 045 045 045 045 period . 056 056 056 periodcentered . 264 — 267 056 267 perpendicular 4 — 136 — — perthousand Yoo 275 o — s phi o — 146 — e phil ) — 152 o —_ pi n — 160 — — plus + 053 053 053 053 plusminus S — 261 261 261 product Il — 325 — — propersubset c — 314 — — propersuperset D — 311 — —_— proportional oc e 265 — e Encoding Vectors B-25 Table B-5 (Cont.): name Characters Listed in Alphabetical Order character encoding Adobe Standard Symbol R . ISOLatin1 — DECMCS — o psi v e 161 171 q q _— 161 161 question ? 077 077 077 077 questiondown b 277 e 277 277 T quotedbl quotedblbase quotedblleft " ” “ — — — 042 — _— 042 —_— —_ - quotedblright ” 042 271 252 — — quoteleft ‘ 140 quoteright ’ 047 o — 140 047 140 047 _— quotesinglbase quotesingle , ' 270 251 e — —_ — —_— —_ L r r 162 e 162 162 radical v - 326 — — . reflexsubset c — 315 — — reflexsuperset - — 312 e — — registered ® —_ 256 _— ® e — 342 — — registerserif ® —_— 322 e — rho ) e 162 — — ring : 312 — 232 232 s S 163 . 163 163 5 e — — —_ - scaron second ” — — — section § 247 e 247 247 ; 073 073 073 073 radicalex registersans semicolon 272 - — — 140 262 —_ — — — — o - — A ‘o s e B-26 Encoding Vectors Table B-5 (Cont.): name Characters Listed in Alphabetical Order character encoding Adobe Standard Symbol ISOLatin1 DECMCS seven 7 067 067 067 067 sigma Lo} . 163 sigmal o — 126 — — — — similar ~ — 176 —_ e six 6 066 066 066 066 slash / space 057 057 057 057 040 040 040 040 252 — — spade [y — sterling £ 243 — 243 243 suchthat E - 047 —_— e summation ) — 345 — — t t 164 — 164 164 tau T — 164 - — therefore — 134 —_— — theta 0 e 161 — e thetal 0 r— 112 — — thomn b —_ . 376 — three 3 063 063 063 063 threequarters Ya —— —— 276 — threesuperior 3 — e 263 263 tilde - 304 — 224 224 trademark TM — —— e -«-» trademarksans TM — 344 e — trademarkserif TM — 324 — e two 2 062 062 062 062 twosuperior 2 — — 262 262 u u 165 — 165 165 Encoding Vectors B-27 Table B-5 (Cont.): name Characters Listed in Alphabetical Order character encoding Adobe B-28 Standard Symbol ISOLatin1 DECMCS uacute 4 — — 372 372 ucircumflex a e o 373 373 udieresis u e e 374 374 ugrave u o e 371 371 137 underscore _ 137 137 137 union ) e 310 e — universal \4 e 042 —_ — upsilon v e 165 — \Y — v 166 e 166 166 167 167 w w 167 — weilerstrass 0 — 303 e X — X 170 —_ 170 Xi 170 £ — 170 e e y y “17 — 171 171 — yacute y e e 375 ydieresis ¥y e e 377 375 yen ¥ 245 e 245 245 172 z z 172 e 172 zcaron 4 e e - — zero 0 060 060 060 060 zeta C e 172 e — Encoding Vectors Appendix WC atibilities and Differences: LNO3R and PRINTSERVER 40 The LNO3R is compatible with the high-speed PrRINTSERVER 40 Laser Print Server and supports some of the PRINTSERVER 40 features. This appendix describes the differences and compatibilites between the LNO3R and the PRINTSERVER 40. C.1 Virtual Memory The LNO3R contains 470K bytes of PostScript virtual memory. The PRINTSERVER 40 contains 1 megabyte of PostScript virtual memory. This means that a POSTSCRIPT program that runs on the PRINTSERVER 40 may not run successfully on the LNO3R if the program requires more virtual memory than is available on the LNO3R. C.2 Operators Most PosTScrIPT operators are device-independent. However, to provide the user with direct access to device-dependent features of print engines, the base reference portion of the PostScript language have been extended. PosTScrIPT extensions are device-specific, but have been made as general as possible to minimize differences between the product-specific Extended PostScripT language sets. Some PRINTSERVER 40 operators have no meaning on the LNO3R. The following PRINTSERVER 40 operators return “undefined” when they are issued to the LNO3R implementation: ss: LNO3R and PRINTSERVER 40 C-1 C.3 Table C—-1: Undefined PrinTServEr 40 Operators operand operator - A3TRAY - A4TRAY ~ A5TRAY - - B4TRAY - - BSTRAY - - DEFAULTOUTPUTTRAY integer -~ LEDGERTRAY - - LEGALTRAY - - LETTERTRAY - integer SETDEFAULTOUTPUTTRAY ~ integer SETDEFAULTPAPERTRAY - integer SETOUTPUTTRAY - integer SETPAPERTRAY - - 11X17TRAY - result - | - [ Communications Interface The PrINTSERVER 40 and LNO3R use different interfaces to communicate between the host and the print engine. As a result, different communications protocols are used. The PrRINTSERVER 40 is a network-oriented printer that communicates with one or more clients. The PRINTSERVER 40 uses the LAPS protocol for messages that are layered on DECNET, since the client and PRINTSERVER 40 are geographically separated. T The LNO3R is connected to the host with an RS-232 interface and uses the ASCII character set for commands and data. This communications channel is more limited than the PRINTSERVER 40 and thus is not compatible with it. st C-2 Compatibilities and Differences: LNO3R and PRINTSERVER 40 A Appendix D MS-DO0S and ULTRIX Installations This appendix describes the procedures for installing and using the LNO3R in MS-DOS yand ULTRIX environments. D.1 Using the LNO3R with MS-DOS Connect the LNO3R to a serial printer port on the back of the computer. If the computer is a VAXmate, the printer should be set up for XON/XOFF protocol. If the computer is an IBM PC, the printer should be set up for polarity for DTR (Polarity Low is ready). Since the MS-DOS spooler does not recognize messages sent by the printer, error messages returned to the host are lost. Thus, if your PostScripT output has an error, you will not receive the error message. If you select a font that is not available on the LNO3R, an invalidfont error results. D.1.1 Using Applications with MS-D0S Some MS-DOS applications do not support the LNO3R. However, the LNO3R is similar to the LaserWriter and LaserWriter Plus,TM allowing you to use applications that support those products. When loading your software application and configuring the LNO3R, select the Laserwriter or LaserWriter Plus as the printer connected to your VAXmate or PC/AT clone. Make the same selection for MS-Windows. If you are using MS-Windows, display the control window on the screen and add the PSCRPT.DRYV driver to the system. Then return device control to the PostScripT driver. For applications that do not run under MS-Windows, use the set-up feature and assign control to a LaserWriter Plus. ® LaserWriter and LaserWriter Plus are trademarks of the Apple Computer Corporation. The difference between the LNO3R and non-DIGITAL PosTScRIPT printers is the range of available typefaces. The typefaces normally available with all PosTScripT pmnters are the following;: °* TIMES w1th Roman, Italic, Bold, and Bold Italic ¢ COURIER: with Normal, Oblique, Bold, and Bold Oblique | e HELVETICA: with Normal, Oblique, Bold, and Bold Oblique * SYMBOL In addition to the above, the LNO3R also supplies the following faces: * NEW CENTURY SCHOOLBOOK: with Roman, Italic, Bold, and Bold Italic e SOUVENIR LIGHT: with Light Italic, Demi, and Deml Itahc e AVANT GARDE BOOK: with Book Oblique, Demi, and Demi Oblique e LUBALIN GRAPH BOOK: with Book Oblique, Demi, and Demi Oblique fr R The Laserwriter applications do not support any of the additional faces. The LaserWriter Plus applications support New Century Schoolbook Roman and Avant Garde Book (plus some other typefaces not supported by the LNO3R). D.1.2 Transmitting Print Requests Since transmitting a print request can be slow in the MS-DOS environment, the LNO3R displays the transmission status on the front panel. A flashing controller error with a “6” displayed indicates that the computer and printer controller are communicating and generating an image. The printer is active as long as these symbols are displayed. Another indication that the printer is active is that the print spooler icon appears on your windows screen. Transmitting print requests that contain graphics produced by a “paint” program take more time, since a bitmap (rather than image-drawing directions) is sent to the printer. Bitmaps are up to 900K bytes in size, and the communications link is 9600-19.2K baud, which accounts for the delay. D-2 MS-DOS and ULTRIX Installations R fo LNO3R with VMS VAXmate Server L] The LNO3R can be used on a VAX or MicroVax II system running VMS and acting as a server for a network of VAXmates or PC clones. To set up a VMS server for VAXmates, follow these steps: 1. Install the LNO3R software by the standard procedure (see the VAX/VMS Software Installation Guide: LNO3R SCRIPTPRINTER). Create generic print queues for PostScrirr and ANSI output with recognizable names, such as LNO3R$POST and LNO3R$ANSI. 2. Install the VMS server software by standard procedure. Using PC ADMIN, add the generic print queues, using the ADD PRINTER QUEUE menu item. 3. Create a key diskette for each VAXmate or PC Clone and direct the printer ports to REMOTE printers on the host system. For instance, direct LPT1 to LNO3R$POST and LPT2 to LNO3R$SANSI. When you start up the VAXmate, the initialization process shows each printer port and the queue on the host system that each is directed to. Using MS-Windows, bring up the CONTROL panel and, with the INSTALLATION menu, select ADD NEW PRINTER. Add the PostScript driver and LAS50 driver to the known drivers in the system. Using the SETUP menu, select the printer ports. This associates the drivers with the correct printer port. For instance, associate LPT1 (LNO3R$POST) with the PostScripT driver and LPT2 (LNO3R$ANSI) with the LA50 driver. The LAS50 driver outputs ASCII text, which can be printed by the LNO3R's ANSI translator. To print using MS-Windows, use the control panel to select the default printer port. Then when you print files, they are directed to the default printer port and thus to the correct queue. Many applications that run under MS-Windows allow you to select the printer, so the default may be overridden. For applications not running under MS-Windows, you must select the printer port using the application’s setup routine. To print directly from MS-DOS, use the NET PRINT command and direct the output to the appropriate printer port. D.3 Using the LNO3R with ULTRIX The LNO3Ris connected to your system via a serial communication line. Follow the directions in your ULTRIX installation documentation for setting up the communications line for a prmter Configure the LNO3R for XON/XOFF protocol. D.3.1 The Tm&:mn Application To use the LNO3R in the ULTRIX environment, you need to use the TRANSCRIPT application package from Adobe Systems. This package includes instructions for mstallmg the software, whlch performs the - following functions: ® Provides the communications path between the printer daemon (LPD) * Creates banner pages for files sent to the printer and provides a front end (enscript) to the LPR command. * Provides filters for converting various formatted output into e P S and the LNO3R. AP, ‘PostScrirt, such as DITROFF and ASCIL Returns error messages from the printer and puts them in a log file. T D-4 MS-DOS and ULTRIX Installations - Appendix E Character Bitmap Distribution Format This document” describes Adobe System’s character bitmap distribution format, version 2.1. The format is intended to be easily understood by both humans and computers. The format described is subject to change without prior notification. NOTE This appendix describes the format of tapes obtained from Adobe Systems, Inc. Tapes obtained from other sources may have different formats. E.1 Tape Format Each tape is 1600 bpi, nine track, unlabeled, and contains two or more files. Each file is followed by an EOF mark. The last file on the tape is followed by two EOF marks. Physical records contain 512 bytes. The last physical record in a file (preceding an EOF mark) may contain fewer than 512 bytes. Each file is encoded in the printable characters (octal 40 through 176) of USASCII plus carriage return and linefeed. Each file consists of a sequence of variable-length lines. Each line is terminated by a carriage-return (octal 015) and line-feed (octal 012). The first file on the tape is the Adobe Systems Copyright notice, followed by font files. The format of font files is described in the following sections. NOTE Font tapes may also be obtained in UNIX" tar format. Be sure to specify tar format if desired. No other tape formats are currently supported by Adobe Systems. * Cfif)&right Adobe Systems, Inc. Reprinted by permission. *U is a registered trademark of American Telephone & Telegraph Company. E.2 File Format Character bitmap information will be distributed in an USASCII encoded, human readable form. The information about a particular family and face at one size and orientation will be contained in one file. The file begins with information pertaining to the face as a whole, followed by the information and bitmaps for the individual characters. A font bitmap description file has the following general form, where each item is contained on a separate line of text in the file. Items on a line are separated by spaces. 1. The word STARTFONT followed by a version number, indicating the exact file format used. The version described here is number 2.1. 2. One or more lines beginning with the word COMMENT. These lines may be ignored by any program reading the file. The word FONT followed by the family name and the face name, separated by a hyphen. The word SIZE followed by the point size of the characters, the x resolution and y resolution of the device for which these characters were intended. The word FONTBOUNDINGBOX followed by the width in x, height in y, and the x and y displacement of the lower left corner from the origin. (See the examples in Section E.4.) A Optionally the word STARTPROPERTIES followed by the number of properties (p) that follow. Then come p lines consisting of a word for the pmpérty name followed by either an integer or string surronded by quotedbl (042). Internal quotedbl characters are indicated by using two in a row. The property section, if it exists, is terminated by ENDPROPERTIES. The word CHARS followed by the number of character segments ¢ that follow. 10. Then come ¢ character segments in the following format: a. The word STARTCHAR followed by up to 14 characters (no blanks) of descriptive name of the glyph. b. The word ENCODING followed by a positive integer representing the Adobe Standard Encoding value. If the character is not a member of the Adobe Standard Encoding, ENCODING is followed by -1 and an optional integer specifying the glyph index. E-2 Character Bitmap Distribution Format ST The word SWIDTH followed by the scalable width in x and y of character. Scalable widths are in units of 1/1000th the size of the character. If the size of the character is p points, the width information must be scaled by p/1000 to get the width of the character in printer’s points. This width information should be considered as a vector indicating the position of the next character’s origin relative to the origin of this character. To convert the scalable width to the width in device pixels, multiply SWIDTH times p/1000 times r/ 72 where r is the device resolution in pixels per inch. The resultis a real number giving the ideal print width in device pixels. The actual device width must of course be an integral number of device pixels andis given in the next entry. The word DWIDTH followed by the width in x and y of the character in device units. Like the SWIDTH, this width information is a vector indicating the position of the next character’s origin relative to the origin of this character. The word BBX followed by the width in x (BBw), height in y (BBh) and x and y displacement (BBox, BBoy) of the lower left corner from the origin of the character. The optional word ATTRIBUTES followed by the attributes as 4 hex-encoded characters. The interpretation of these attributes is undefined in this document. g. The word BITMAP. h. h lines of hex-encoded bitmap, padded on the right with zeroes to the nearest byte (i.e., multiple of 8). i. The word ENDCHAR. 11. The fileis terminated with the word ENDFONT. E.3 Metric Information Figures E-1 and E-2 best illustrate the bitmap format and character metric information. Character Bitmap Distribution Format E-3 S, G, Figure E-1: Example of a Descender BBw N A SR g L G s DI BBoy A BBh| v A 4 E4 Cl - Bitmap Distribution Format Figure E-2: Example with the Origin Outside the Bounding Box .._)BBox EBB E W BBoy + + O, E.4 An Example File ] The following is an example of a bitmap file containing the specification of two characters (j and quoteright).” STARTFONT 2.1 COMMENT This is a sample font in 2.1 format. FONT Helvetica-Bold SIZE 8 200 200 FONTBOUNDINGBOX 9 24 -2 -6 STARTPROPERTIES 2 MinSpace 4 Copyright "Copyright (c) 1987 Adobe Systems, Inc." ENDPROPERTIES CHARS 2 STARTCHAR j ENCODING 106 SWIDTH 356 O DWIDTH 8 O BBX 9 22 -2 -6 BITMAP 0380 0380 0380 0380 I 0700 [T [ T T * Helvetica is a registered trademark of Allied Corporation. E-6 Character Bitmap Distribution Format ENDCHAR STARTCHAR quoteright ENCODING 39 SWIDTH 223 0 DWIDTH 6 O BBX 4 6 2 12 ATTRIBUTES 01CO BITMAP 70 70 60 EO Cco ENDCHAR ENDFONT T I e AR AR B e AR DRHES: BRI W fr T P o e oo SO Glossary bitmap A digitized image that can be stored, transmitted, and reproduced. composite character A character that is made up of two or more other characters. For example, an accented letter is a composite character. Ethernet A local area network that uses coaxial cable as a passive communication medium to connect different types of computers, printer products, and office equipment at a site. encoding vector The association between character codes and character descriptions. An encoding vector on the LNO3R is a 256-element array, indexed by character code. The elements of the array are character names. font The artistic representation of a typeface that describes a set of characters by point size, weight, and style. font file A data file that contains information used to reproduce a font. host The computer that provides services and enables start up and management of the peripheral devices, such as printers. initialize To set counters, switches, addresses, or contents of memory to 0 or other starting values at the beginning of, or at prescribed points in, a computer routine. interpreter A program in the printer that converts data for imaging data syntax, such as text or graphics, into a bitmap. kerning Subtracting the space between characters. language extensions PosTScripT operators and objects added to the standard PosTScriPT operators and objects in a specific implementation of the PosTScript interpreter. These extensions control the system parameters for that type of PosTScRIPT printer. line A physical communications path. name A descriptive identifier (ASCII string) that is associated with a subject or object in the system. network A group of computers that are connected by communications lines to share information and resources. T e object type of extensions PostScripT language extensions can be of type operator, integer or string. See the PostScript Language Reference Manual for more information. operator A built-in PostScrirT language object that performs operation. An operator, when invoked, can result in data being manipulated, system parameters being modified, and/or sheets being printed. persistent parameters System parameters that remain unchanged across PosTScrIPT print jobs. These parameters are stored in nonvolatile memory and therefore are maintained even when power is removed from the printer. — o — printer controller firmware The software that interprets the data in a print request according to a specified data syntax, builds bitmaps of each page to be printed, and forwards the bitmaps to the print engine that produces the hard-copy output. | printer software The software that handles the communications among the process that makes a print request (terminal), the process that provides resources (a host), and the process that performs the printing service (a print queue). - print spooler A feature that enables a computer to maintain a print queue and print documents while performing other computer tasks. e - privilege The level of system access allowed to a user. system parameter Values maintained within the PostScrirT interpreter and used by the PostScripT interpreter to control various system-specific features. These features are related to the print engine model and the type of communication interface between the printer and the host. Also see persistent parameters and volatile parameters. translator A program that changes data into a form that can be used by the printer. user The person who initiates requests for services. These requests are handled by the host, which forwards them to the appropriate queue. Glossary-2 [ — — s volatile parameters System parameters that stay in effect for one PosTScript print job. At the end of the print job, volatile parameters revert to their default values. Glossary-3 D s . ORI A T A [ A S TR e closefile operator restriction ® 6-4 A Adobe bitmap example file ® E-6 file format ® E-2 metric information ® E-3 tape format ®*E-1 Ancillary interfaces ® 1-5 Application programs ® 1-5 TRANSCRIPT ®D-4 with MS-DOS ¢ D-1 with ULTRIX ® D-4 Communications Interface ® C-2 Composite characters ®4-10 Context layer ® 6-2 Context state current ® 6-2 preserving ® 6-3 Coordinate system positioning ® 2-9 Coordinate system unit size ® 2-9 copypage operator ® 5-3 Current context ® 6-2 Automatic Spacing® 5-2 banddevice operator restriction ® 6-4 bind operator ® 5-2 Character bitmap distribution format ® E-1 Character encoding encoding vectors ® B-1 Character metrics section ® 4-7 Character set control characters ® 6-12 defaultjobtimeout operator ® 3-4 Default timeouts ® 2-11 defauittimeouts operator ® 3-5 Device controller® 1-4 Device control modules ® 6-1 POSTSCRIPT operators® 6-2 PRINT command parameters ® 6-1 redefining POSTSCRIPT operators ® 6-2 Device-dependent programs ® 6-3 Dictionary stack limit to entries ® 6-9 dostartpage operator ® 3-6 printable ®6-13 checkpassword operator ® 3-3 clear operator restriction ® 6-4 Clipping values ® 2-9 eescratch operator ® 3-7 eexec operator ® 3-8 Encoding vectors ® 2-12, B-1 Adobe Standard Encoding ® B-1 Index-1 Encoding vectors (cont’d.) DEC MCS ®B-6 examples ® 2-12 ISO Latin1®B-4 Symbol ® B-9 erasepage operator restriction ® 6-4 Interactive mode ® 2-5 J jobname operator ® 3-13 jobtimeout operator ® 3-14 executive operator ® 3-9 exitserver operator ® 3-10 F Kerning data section ® 4-8 findfont operator ® 6-9 L Font metrics ® 4-1 character metrics ® 4-7 Layering ® 6-2 composite character section®4-10 Limit to entries file format® 4-3 sample ® 4-3 dictionary stack ® 6-9 Limit to use file names ® 4-1 gsave ® 6-9 global font keys ® 4-5 Polygon fill ® 6-9 kerning data section ® 4-8 Fonts global font keys ® 4-5 numbers foridlescan conversion ® 2-7 framedevice operator restriction ® 6-4 I quit operator ® 6-10 start®6-10 vmstatus ® 6-10 LNO3R application programs ® 1-5 compatibility with LPS40® C-1 hardware ® 1-2 LNO3R software® 1-5 LPS40 Global section®4-5 gsave compatibilities with LNO3R® C-1 differences with LNO3R ® C-1 limit to use ® 6-9 T Margins Host system hardware requirements ® 1-4 paper ® 2-9 margins operator ® 3-15 MS-DOS connecting the LNO3R®D-1 idlefonts operator® 3-11 initclip operator restriction ® 6-4 initgraphics operator restriction ® 6-5 initmatrix operator restriction ® 6-5 2-Index installations ® D-1 | LNO3R applications ® D-1 Transmitting Print Requests ® D-2 MS~Windows ® D-1 multiple copies ® 5-4 POSTSCRIPT extensions (cont'd.) Name of job parameter® 2-12 setprintername ® 3-32 setvmlimit ® 3-33 using ® 3-2 waittimeout ® 3-34 operators Operators compatibility with LPS40¢®C-1 findfont ® 6-9 guidelines ® 6-3 quit®6-10 restrictions ® 6-9 POSTSCRIPT software driver P techniques to avoid ® 6-12 POSTSCRIPT clipping values ® 2-9 coordinate system positioning ® 2-9 coordinate system unit size ® 2-9 extensions checkpassword ® 3-3 defaultjobtimeout ® 3-4 defaulttimeouts ® 3-5 dostartpage ® 3-6 eescratch ® 3-7 eexec ® 3-8 executive ® 3-9 exitserver ® 3-10 format® 3-1 idlefonts ® 3-11 jobname ® 3-13 jobtimeout ® 3-14 margins ® 3-15 object types ® 3-1 pagecount® 3-16 pagestackorder ® 3-17 papersize ® 3-18 printername ® 3-19 product ® 3-20 restrictions ® 3-2 revision ® 3-21 setdefaultjobtimeout ® 3-22 setdefaulttimeouts ® 3-23 setdostartpage ® 3-24 seteescratch ® 3-25 setidlefonts ® 3-26 useful techniques ®6-11 writing ® 6-11 Page counter parameter®2-10 pagecount operator ® 3-16 pagestackorder operator ® 3-17 Paper feed ® 2-9 Paper handling margins ® 2-9 parameters ® 2-8 Paper orientation ® 2-9 papersize operator ® 3-18 Password parameter ® 2-11 Performance optimizing ® 5-1 Polygon fill ® 6-9 limit to use ® 6-9 Printer® 1-2 device controller® 1-4 paper trays ® 1-4 print engine ® 1-3 printer name parameter ® 2-10 Printer name parameter ® 2-10 printername operator ® 3-19 Procedure calls eliminating ® 5-2 product operator ® 3-20 optimizing performance with ® 5-4 setjobtimeout ® 3-28 setmargins ® 3-29 setpassword ® 3-3 1 quit operator ®6-10 limit to use ®6-10 Index-3 quit operator (cont'd.) restriction ® 6-6 setidiefonts operator ® 3-26 setjobtimeout operator ® 3-28 setmargins operator ® 3-29 adjustment ranges ® 3-29 setmatrix operator renderbands operator restriction ® 6-5 Restrictions banddevice operator ® 6-4 clear operator ® 6-4 closefile operator ® 6-4 control characters ®6-12 dictionary stack entries ® 6-9 erasepage operator ® 6-4 findfont ® 6-9 framedevice operator ® 6-4 gsave ® 6-9 initclip operator ® 6-4 restriction ® 6-5 setpassword operator ® 3-31 setprintername operator ® 3-32 setvmlimit operator ® 3-33 show operator ® 5-2 showpage operator ® 5-3 Smaller operator names ® 5-2 start limit to use ®6-10 systemdict operator restriction ® 6-5 System parameters ® 2-1 default timeout ® 2-11 initgraphics operator ® 6-5 initmatrix operator ® 6-5 location ® 2-2 name of current job® 2-12 POSTSCRIPT operators ® 6-4 page counter ® 2-10 paper handling ® 2-8 polygon fill ® 6-9 quit®6-10 password ® 2-11 quit operator ® 6-6 renderbands operator ® 6-5 setmatrix operator ® 6-5 start®6-10 systemdict operator ® 6-5 transform operator ® 6-5 userdict operator ® 6-5 vmstatus ®6-10 revision operator ® 3-21 Scaling the Coordinate System @ 5-3 Scan conversion fonts ® 2-7 Scan conversion parameter ® 2-6 Scratch memory parameter ® 2-11 setdefaultjobtimeout operator ® 3-22 setdefaulttimeouts operator ® 3-23 setdostartpage operator ® 3-24 seteescratch operator ® 3-25 setidlefonts extension optimizing performance with ® 5-4 | Software revision parameter ® 2-12 persistent ® 2-2 printer name ® 2-10 scan conversion ® 2-6 scratch memory ® 2-11 software revision ® 2-12 test page status ® 2-10 volatile ® 2-5 T Test page parameter ® 2-10 transform operator restriction ® 6-5 Translators ® 1-6 RO ULTRIX®D-4 Installing the LNO3R ® D-4 userdict operator restriction ® 6-5 e 4-Index SR | - v - Virtual memory LPS40 and LNO3R®C-1 e | s £ operators that consume ® 6-7 persistent parameters ® 2-2 preventing limitchecks ® 6-6 setting limit ® 3-33 status ®6-10 volatile parameters ® 2-5 See Virtual memory vmstatus limit to use ®6-10 VMS VAXmate Server using the LNO3R with ® D-3 - w a— waittimeout operator ® 3-34 widthshow operator ® 5-2 Index-5 PR I A R O g Ay, e HOW TO ORDER ADDITIONAL DOCUMENTATION - From Call Write 8 Alaska, Hawaii, or New Hampshire 603-884-6660 Digital Equipment Corporation P.O. Box CS2008 Rest of U.S.A. 800-258-1710 Nashua, NH 03061 and Puerto Rico* * Prepaid orders from Puerto Rico must be placed with DIGITAL’s local subsidiary (809-754-7575) Canada 800-267-6219 (for software documentation) p Digital Equipment of Canada Ltd. 100 Herzberg Road Kanata, Ontario, Canada K2K 2A6 613-592-5111 (for hardware documentation) — Internal orders (for software documentation) — Internal orders (for hardware 617-234-4323 documentation) Attn: Direct Order desk Software Distribution Center (SDC) Digital Equipment Corporation Westminster, MA 01473 Publishing & Circulation Serv. (P&CS) NR03-1/W3 Digital Equipment Corporation Northboro, MA 01532 T B [ P S AT LNO3R SCRIPTPRINTER Programmer’s Supplement Note: This form is for document comments only. DIGITAL wiill use comments submitted on this form at the company’s discretion. If you require a written reply and are eligible to receive one under Software Performance Report (SPR) service, submit your comments on an SPR form. Did you find this manual understandable, usable, and well organized? Please make suggestions - for improvement. Did you find errors in this manual? If so, specify the error and the page number. Please indicate the type of user/reader that you most nearly represent: [0 [J [0 [0 [0 [0 Assembly language programmer Higher-level language programmer Occasional programmer (experienced) User with little programming experience Student programmer Other (please specify) Name Date :, Organization Street City ' State Zip Code or Country — — Do Not Tear — Fold Here and Tape — — — — __ —_— e — — o o e NO POSTAGE NECESSARY IF MAILED IN THE UNITED STATES [ BUSINESS REPLY MAIL FIRST CLASS PERMIT NO.33 MAYNARD MASS. SR POSTAGE WILL BE PAID BY ADDRESSEE DIGITAL EQUIPMENT CORPORATION CORPORATE USER PUBLICATIONS foo MLOS-5/E45 146 MAIN STREET MAYNARD, MA 01754-2571 Do Not Tear — Fold Here @ — — — — — __ . e e e e e e e e Cut Along Dotted Line — s
Home
Privacy and Data
Site structure and layout ©2025 Majenko Technologies