Annotation of researchv10no/cmd/post.src/post.src.cpio, revision 1.1.1.1

1.1       root        1: 0707070014231030370407550057030000000000400277220522634650100001100000000000post.src0707070014230361420407550057030057030000021040140522633073100002000000000000post.src/common0707070014230361431006440057030057030000011040300522627500500003200000007173post.src/common/request.c/*
                      2:  *
                      3:  * Things used to handle special requests (eg. manual feed) globally or on a per
                      4:  * page basis. Requests are passed through to the translator using the -R option.
                      5:  * The argument to -R can be "request", "request:page", or "request:page:file".
                      6:  * If page is omitted (as in the first form) or set to 0 request will be applied
                      7:  * to the global environment. In all other cases it applies only to the selected
                      8:  * page. If a file is given, page must be supplied, and the lookup is in that file
                      9:  * rather than *requestfile.
                     10:  *
                     11:  */
                     12: 
                     13: #include <stdio.h>
                     14: 
                     15: #include "gen.h"                       /* general purpose definitions */
                     16: #include "request.h"                   /* a few special definitions */
                     17: #include "path.h"                      /* for the default request file */
                     18: 
                     19: Request        request[MAXREQUEST];            /* next page or global request */
                     20: int    nextreq = 0;                    /* goes in request[nextreq] */
                     21: char   *requestfile = REQUESTFILE;     /* default lookup file */
                     22: 
                     23: /*****************************************************************************/
                     24: 
                     25: saverequest(want)
                     26: 
                     27:     char       *want;                  /* grab code for this stuff */
                     28: 
                     29: {
                     30: 
                     31:     char       *page;                  /* and save it for this page */
                     32:     char       *strtok();
                     33: 
                     34: /*
                     35:  *
                     36:  * Save the request until we get to appropriate page - don't even bother with
                     37:  * the lookup right now. Format of *want string is "request", "request:page", or
                     38:  * "request:page:file", and we assume we can change the string here as needed.
                     39:  * If page is omitted or given as 0 the request will be done globally. If *want
                     40:  * includes a file, request and page must also be given, and in that case *file
                     41:  * will be used for the lookup.
                     42:  *
                     43:  */
                     44: 
                     45:     if ( nextreq < MAXREQUEST )  {
                     46:        request[nextreq].want = strtok(want, ": ");
                     47:        if ( (page = strtok(NULL, ": ")) == NULL )
                     48:            request[nextreq].page = 0;
                     49:        else request[nextreq].page = atoi(page);
                     50:        if ( (request[nextreq].file = strtok(NULL, ": ")) == NULL )
                     51:            request[nextreq].file = requestfile;
                     52:        nextreq++;
                     53:     } else error(NON_FATAL, "too many requests - ignoring %s", want);
                     54: 
                     55: }   /* End of saverequest */
                     56: 
                     57: /*****************************************************************************/
                     58: 
                     59: writerequest(page, fp_out)
                     60: 
                     61:     int                page;                   /* write everything for this page */
                     62:     FILE       *fp_out;                /* to this file */
                     63: 
                     64: {
                     65: 
                     66:     int                i;                      /* loop index */
                     67: 
                     68: /*
                     69:  *
                     70:  * Writes out all the requests that have been saved for page. Page 0 refers to
                     71:  * the global environment and is done during initial setup.
                     72:  *
                     73:  */
                     74: 
                     75:     for ( i = 0; i < nextreq; i++ )
                     76:        if ( request[i].page == page )
                     77:            dumprequest(request[i].want, request[i].file, fp_out);
                     78: 
                     79: }   /* End of writerequest */
                     80: 
                     81: /*****************************************************************************/
                     82: 
                     83: dumprequest(want, file, fp_out)
                     84: 
                     85:     char       *want;                  /* look for this string */
                     86:     char       *file;                  /* in this file */
                     87:     FILE       *fp_out;                /* and write the value out here */
                     88: 
                     89: {
                     90: 
                     91:     char       buf[100];               /* line buffer for reading *file */
                     92:     FILE       *fp_in;
                     93: 
                     94: /*
                     95:  *
                     96:  * Looks for *want in the request file and if it's found the associated value
                     97:  * is copied to the output file. Keywords (ie. the *want strings) begin an @ in
                     98:  * the first column of file, while the values (ie. the stuff that's copied to
                     99:  * the output file) starts on the next line and extends to the next keyword or
                    100:  * to the end of file.
                    101:  *
                    102:  */
                    103: 
                    104:     if ( (fp_in = fopen(file, "r")) != NULL )  {
                    105:        while ( fgets(buf, sizeof(buf), fp_in) != NULL )
                    106:            if ( buf[0] == '@' && strncmp(want, &buf[1], strlen(want)) == 0 )
                    107:                while ( fgets(buf, sizeof(buf), fp_in) != NULL )
                    108:                    if ( buf[0] == '#' || buf[0] == '%' )
                    109:                        continue;
                    110:                    else if ( buf[0] != '@' )
                    111:                        fprintf(fp_out, "%s", buf);
                    112:                    else break;
                    113:        fclose(fp_in);
                    114:     }  /* End if */
                    115: 
                    116: }   /* End of dumprequest */
                    117: 
                    118: /*****************************************************************************/
                    119: 
                    120: 0707070014230361441006440057030057030000011040150522627500500003200000001035post.src/common/tempnam.c#include <stdio.h>
                    121: #include <errno.h>
                    122: 
                    123: #if defined(V9) || defined(BSD4_2)
                    124: char *tempnam(dir, pfx)
                    125: char *dir, *pfx;
                    126: {
                    127:        int pid;
                    128:        unsigned int len;
                    129:        char *tnm, *malloc();
                    130:        static int seq = 0;
                    131: 
                    132:        pid = getpid();
                    133:        len = strlen(dir) + strlen(pfx) + 10;
                    134:        if ((tnm = malloc(len)) != NULL) {
                    135:                sprintf(tnm, "%s", dir);
                    136:                if (access(tnm, 7) == -1)
                    137:                        return(NULL);
                    138:                do {
                    139:                        sprintf(tnm, "%s/%s%d%d", dir, pfx, pid, seq++);
                    140:                        errno = 0;
                    141:                        if (access(tnm, 7) == -1)
                    142:                                if (errno == ENOENT)
                    143:                                        return(tnm);
                    144:                } while (1);
                    145:        }
                    146:        return(tnm);
                    147: }
                    148: #endif
                    149: 0707070014230361451006440057030057030000011040160522627500500003200000001432post.src/common/request.h/*
                    150:  *
                    151:  * Things used to handle special PostScript requests (like manual feed) globally
                    152:  * or on a per page basis. All the translators I've supplied accept the -R option
                    153:  * that can be used to insert special PostScript code before the global setup is
                    154:  * done, or at the start of named pages. The argument to the -R option is a string
                    155:  * that can be "request", "request:page", or "request:page:file". If page isn't
                    156:  * given (as in the first form) or if it's 0 in the last two, the request applies
                    157:  * to the global environment, otherwise request holds only for the named page.
                    158:  * If a file name is given a page number must be supplied, and in that case the
                    159:  * request will be looked up in that file.
                    160:  *
                    161:  */
                    162: 
                    163: #define MAXREQUEST     30
                    164: 
                    165: typedef struct {
                    166:        char    *want;
                    167:        int     page;
                    168:        char    *file;
                    169: } Request;
                    170: 
                    171: 0707070014230361461006440057030057030000011041310522633073100002700000002213post.src/common/path.h/*
                    172:  *
                    173:  * pathname definitions for important files and directories.
                    174:  *
                    175:  */
                    176: 
                    177: #define DPOST          "/usr/lib/postscript/dpost.ps"
                    178: #define POSTBGI                "/usr/lib/postscript/postbgi.ps"
                    179: #define POSTDAISY      "/usr/lib/postscript/postdaisy.ps"
                    180: #define POSTDMD                "/usr/lib/postscript/postdmd.ps"
                    181: #define POSTMD         "/usr/lib/postscript/postmd.ps"
                    182: #define POSTPLOT       "/usr/lib/postscript/postplot.ps"
                    183: #define POSTPRINT      "/usr/lib/postscript/postprint.ps"
                    184: #define POSTNPRINT     "/usr/lib/postscript/postnprint.ps"
                    185: #define POSTTEK                "/usr/lib/postscript/posttek.ps"
                    186: #define POSTGIF                "/usr/lib/postscript/postgif.ps"
                    187: 
                    188: #define BASELINE       "/usr/lib/postscript/baseline.ps"
                    189: #define COLOR          "/usr/lib/postscript/color.ps"
                    190: #define DRAW           "/usr/lib/postscript/draw.ps"
                    191: #define FORMFILE       "/usr/lib/postscript/forms.ps"
                    192: #define SHADEFILE      "/usr/lib/postscript/shade.ps"
                    193: #define KERNING                "/usr/lib/postscript/kerning.ps"
                    194: #define REQUESTFILE    "/usr/lib/postscript/ps.requests"
                    195: #define ROUNDPAGE      "/usr/lib/postscript/roundpage.ps"
                    196: 
                    197: #define ENCODINGDIR    "/usr/lib/postscript"
                    198: #define HOSTDIR                "/usr/lib/font/postscript"
                    199: #define FONTDIR                "/usr/lib/font"
                    200: #define POSTLIBDIR     "/usr/lib/postscript"
                    201: #define TEMPDIR                "/tmp"
                    202: 
                    203: 0707070014230357551006400057030057030000011024350522633073100002600000002157post.src/common/gen.h/*
                    204:  *
                    205:  * A few definitions that shouldn't have to change. Used by most programs in
                    206:  * this package.
                    207:  *
                    208:  */
                    209: 
                    210: #define PROGRAMVERSION "3.3.2"
                    211: 
                    212: #define NON_FATAL      0
                    213: #define FATAL          1
                    214: #define USER_FATAL     2
                    215: 
                    216: #define OFF            0
                    217: #define ON             1
                    218: 
                    219: #define FALSE          0
                    220: #define TRUE           1
                    221: 
                    222: #define BYTE           8
                    223: #define BMASK          0377
                    224: 
                    225: #define POINTS         72.3
                    226: 
                    227: #ifndef PI
                    228: #define PI             3.141592654
                    229: #endif
                    230: 
                    231: #define ONEBYTE                0
                    232: #define UTFENCODING    1
                    233: 
                    234: #define READING                ONEBYTE
                    235: #define WRITING                ONEBYTE
                    236: 
                    237: /*
                    238:  *
                    239:  * DOROUND controls whether some translators include file ROUNDPAGE (path.h)
                    240:  * after the prologue. Used to round page dimensions obtained from the clippath
                    241:  * to know paper sizes. Enabled by setting DOROUND to TRUE (or 1).
                    242:  *
                    243:  */
                    244: 
                    245: #define DOROUND        TRUE
                    246: 
                    247: /*
                    248:  *
                    249:  * Default resolution and the height and width of a page (in case we need to get
                    250:  * to upper left corner) - only used in BoundingBox calculations!!
                    251:  *
                    252:  */
                    253: 
                    254: #define DEFAULT_RES    72
                    255: #define PAGEHEIGHT     11.0 * DEFAULT_RES
                    256: #define PAGEWIDTH      8.5 * DEFAULT_RES
                    257: 
                    258: /*
                    259:  *
                    260:  * Simple macros.
                    261:  *
                    262:  */
                    263: 
                    264: #define ABS(A)         ((A) >= 0 ? (A) : -(A))
                    265: #define MIN(A, B)      ((A) < (B) ? (A) : (B))
                    266: #define MAX(A, B)      ((A) > (B) ? (A) : (B))
                    267: 
                    268: 0707070014230361501006440057030057030000011040500522627500500002700000007564post.src/common/misc.c/*
                    269:  *
                    270:  * General purpose routines.
                    271:  *
                    272:  */
                    273: 
                    274: #include <stdio.h>
                    275: #include <ctype.h>
                    276: #include <fcntl.h>
                    277: 
                    278: #include "gen.h"
                    279: #include "ext.h"
                    280: #include "path.h"
                    281: 
                    282: int    nolist = 0;                     /* number of specified ranges */
                    283: int    olist[50];                      /* processing range pairs */
                    284: 
                    285: /*****************************************************************************/
                    286: 
                    287: out_list(str)
                    288: 
                    289:     char       *str;
                    290: 
                    291: {
                    292: 
                    293:     int                start, stop;
                    294: 
                    295: /*
                    296:  *
                    297:  * Grab page ranges from str, save them in olist[], and update the nolist
                    298:  * count. Range syntax matches nroff/troff syntax.
                    299:  *
                    300:  */
                    301: 
                    302:     while ( *str && nolist < sizeof(olist) - 2 ) {
                    303:        start = stop = str_convert(&str, 0);
                    304: 
                    305:        if ( *str == '-' && *str++ )
                    306:            stop = str_convert(&str, 9999);
                    307: 
                    308:        if ( start > stop )
                    309:            error(FATAL, "illegal range %d-%d", start, stop);
                    310: 
                    311:        olist[nolist++] = start;
                    312:        olist[nolist++] = stop;
                    313: 
                    314:        if ( *str != '\0' ) str++;
                    315:     }  /* End while */
                    316: 
                    317:     olist[nolist] = 0;
                    318: 
                    319: }   /* End of out_list */
                    320: 
                    321: /*****************************************************************************/
                    322: 
                    323: in_olist(num)
                    324: 
                    325:     int                num;
                    326: 
                    327: {
                    328: 
                    329:     int                i;
                    330: 
                    331: /*
                    332:  *
                    333:  * Return ON if num is in the current page range list. Print everything if
                    334:  * there's no list.
                    335:  *
                    336:  */
                    337:     if ( nolist == 0 )
                    338:        return(ON);
                    339: 
                    340:     for ( i = 0; i < nolist; i += 2 )
                    341:        if ( num >= olist[i] && num <= olist[i+1] )
                    342:            return(ON);
                    343: 
                    344:     return(OFF);
                    345: 
                    346: }   /* End of in_olist */
                    347: 
                    348: /*****************************************************************************/
                    349: 
                    350: setencoding(name)
                    351: 
                    352:     char       *name;
                    353: 
                    354: {
                    355: 
                    356:     char       path[150];
                    357: 
                    358: /*
                    359:  *
                    360:  * Include the font encoding file selected by name. It's a full pathname if
                    361:  * it begins with /, otherwise append suffix ".enc" and look for the file in
                    362:  * ENCODINGDIR. Missing files are silently ignored.
                    363:  *
                    364:  */
                    365: 
                    366:     if ( name == NULL )
                    367:        name = "Default";
                    368: 
                    369:     if ( *name == '/' )
                    370:        strcpy(path, name);
                    371:     else sprintf(path, "%s/%s.enc", ENCODINGDIR, name);
                    372: 
                    373:     if ( cat(path) == TRUE )
                    374:        writing = strncmp(name, "UTF", 3) == 0;
                    375: 
                    376: }   /* End of setencoding */
                    377: 
                    378: /*****************************************************************************/
                    379: 
                    380: cat(file)
                    381: 
                    382:     char       *file;
                    383: 
                    384: {
                    385: 
                    386:     int                fd_in;
                    387:     int                fd_out;
                    388:     char       buf[512];
                    389:     int                count;
                    390: 
                    391: /*
                    392:  *
                    393:  * Copy *file to stdout. Return FALSE is there was a problem.
                    394:  *
                    395:  */
                    396: 
                    397:     fflush(stdout);
                    398: 
                    399:     if ( (fd_in = open(file, O_RDONLY)) == -1 )
                    400:        return(FALSE);
                    401: 
                    402:     fd_out = fileno(stdout);
                    403:     while ( (count = read(fd_in, buf, sizeof(buf))) > 0 )
                    404:        write(fd_out, buf, count);
                    405: 
                    406:     close(fd_in);
                    407: 
                    408:     return(TRUE);
                    409: 
                    410: }   /* End of cat */
                    411: 
                    412: /*****************************************************************************/
                    413: 
                    414: str_convert(str, err)
                    415: 
                    416:     char       **str;
                    417:     int                err;
                    418: 
                    419: {
                    420: 
                    421:     int                i;
                    422: 
                    423: /*
                    424:  *
                    425:  * Grab the next integer from **str and return its value or err if *str
                    426:  * isn't an integer. *str is modified after each digit is read.
                    427:  *
                    428:  */
                    429: 
                    430:     if ( ! isdigit(**str) )
                    431:        return(err);
                    432: 
                    433:     for ( i = 0; isdigit(**str); *str += 1 )
                    434:        i = 10 * i + **str - '0';
                    435: 
                    436:     return(i);
                    437: 
                    438: }   /* End of str_convert */
                    439: 
                    440: /*****************************************************************************/
                    441: 
                    442: error(kind, mesg, a1, a2, a3)
                    443: 
                    444:     int                kind;
                    445:     char       *mesg;
                    446:     unsigned   a1, a2, a3;
                    447: 
                    448: {
                    449: 
                    450: /*
                    451:  *
                    452:  * Print an error message and quit if kind is FATAL.
                    453:  *
                    454:  */
                    455: 
                    456:     if ( mesg != NULL && *mesg != '\0' ) {
                    457:        fprintf(stderr, "%s: ", prog_name);
                    458:        fprintf(stderr, mesg, a1, a2, a3);
                    459:        if ( lineno > 0 )
                    460:            fprintf(stderr, " (line %d)", lineno);
                    461:        if ( position > 0 )
                    462:            fprintf(stderr, " (near byte %d)", position);
                    463:        putc('\n', stderr);
                    464:     }  /* End if */
                    465: 
                    466:     if ( kind == FATAL && ignore == OFF ) {
                    467:        if ( temp_file != NULL )
                    468:            unlink(temp_file);
                    469:        exit(x_stat | 01);
                    470:     }  /* End if */
                    471: 
                    472: }   /* End of error */
                    473: 
                    474: /*****************************************************************************/
                    475: 
                    476: void interrupt(sig)
                    477: 
                    478:     int                sig;
                    479: 
                    480: {
                    481: 
                    482: /*
                    483:  *
                    484:  * Signal handler for translators.
                    485:  *
                    486:  */
                    487: 
                    488:     if ( temp_file != NULL )
                    489:        unlink(temp_file);
                    490: 
                    491:     exit(1);
                    492: 
                    493: }   /* End of interrupt */
                    494: 
                    495: /*****************************************************************************/
                    496: 
                    497: 0707070014230361511006440057030057030000011040540522627500500002600000002032post.src/common/ext.h/*
                    498:  *
                    499:  * External varibles - most are in glob.c.
                    500:  *
                    501:  */
                    502: 
                    503: extern char    **argv;                 /* global so everyone can use them */
                    504: extern int     argc;
                    505: 
                    506: extern int     x_stat;                 /* program exit status */
                    507: extern int     debug;                  /* debug flag */
                    508: extern int     ignore;                 /* what we do with FATAL errors */
                    509: 
                    510: extern long    lineno;                 /* line number */
                    511: extern long    position;               /* byte position */
                    512: extern char    *prog_name;             /* and program name - for errors */
                    513: extern char    *temp_file;             /* temporary file - for some programs */
                    514: extern char    *fontencoding;          /* text font encoding scheme */
                    515: 
                    516: extern int     dobbox;                 /* enable BoundingBox stuff if TRUE */
                    517: extern double  pageheight;             /* only for BoundingBox calculations! */
                    518: extern double  pagewidth;
                    519: 
                    520: extern int     reading;                /* input */
                    521: extern int     writing;                /* and output encoding */
                    522: 
                    523: extern char    *optarg;                /* for getopt() */
                    524: extern int     optind;
                    525: 
                    526: extern void    interrupt();
                    527: extern char    *malloc();
                    528: extern char    *calloc();
                    529: extern char    *tempnam();
                    530: extern char    *strtok();
                    531: extern long    ftell();
                    532: extern double  atof();
                    533: extern double  sqrt();
                    534: extern double  atan2();
                    535: 
                    536: 0707070014230361521006440057030057030000011040170522627500500002700000001461post.src/common/glob.c/*
                    537:  *
                    538:  * Global varibles - for PostScript translators.
                    539:  *
                    540:  */
                    541: 
                    542: #include <stdio.h>
                    543: #include "gen.h"
                    544: 
                    545: char   **argv;                         /* global so everyone can use them */
                    546: int    argc;
                    547: 
                    548: int    x_stat = 0;                     /* program exit status */
                    549: int    debug = OFF;                    /* debug flag */
                    550: int    ignore = OFF;                   /* what we do with FATAL errors */
                    551: 
                    552: long   lineno = 0;                     /* line number */
                    553: long   position = 0;                   /* byte position */
                    554: char   *prog_name = "";                /* and program name - for errors */
                    555: char   *temp_file = NULL;              /* temporary file - for some programs */
                    556: char   *fontencoding = NULL;           /* text font encoding scheme */
                    557: 
                    558: int    dobbox = FALSE;                 /* enable BoundingBox stuff if TRUE */
                    559: double pageheight = PAGEHEIGHT;        /* only for BoundingBox calculations! */
                    560: double pagewidth = PAGEWIDTH;
                    561: 
                    562: int    reading = READING;              /* input */
                    563: int    writing = WRITING;              /* and output encoding */
                    564: 
                    565: 0707070014230361531006440057030057030000011040700522627500500003300000007534post.src/common/comments.h/*
                    566:  *
                    567:  * Currently defined file structuring comments from Adobe - plus a few others.
                    568:  * Ones that end with a colon expect arguments, while those ending with a newline
                    569:  * stand on their own. Truly overkill on Adobe's part and mine for including them
                    570:  * all!
                    571:  *
                    572:  * All PostScript files should begin with a header that starts with one of the
                    573:  * following comments.
                    574:  *
                    575:  */
                    576: 
                    577: #define NONCONFORMING                  "%!PS\n"
                    578: #define MINCONFORMING                  "%!PS-Adobe-\n"
                    579: #define OLDCONFORMING                  "%!PS-Adobe-1.0\n"
                    580: 
                    581: #define CONFORMING                     "%!PS-Adobe-2.0\n"
                    582: #define CONFORMINGEPS                  "%!PS-Adobe-2.0 EPS\n"
                    583: #define CONFORMINGQUERY                        "%!PS-Adobe-2.0 Query\n"
                    584: #define CONFORMINGEXITSERVER           "%!PS-Adobe-2.0 ExitServer\n"
                    585: 
                    586: /*
                    587:  *
                    588:  * Header comments - immediately follow the appropriate document classification
                    589:  * comment.
                    590:  *
                    591:  */
                    592: 
                    593: #define TITLE                          "%%Title:"
                    594: #define CREATOR                                "%%Creator:"
                    595: #define CREATIONDATE                   "%%CreationDate:"
                    596: #define FOR                            "%%For:"
                    597: #define ROUTING                                "%%Routing:"
                    598: #define BOUNDINGBOX                    "%%BoundingBox:"
                    599: #define PAGES                          "%%Pages:"
                    600: #define REQUIREMENTS                   "%%Requirements:"
                    601: 
                    602: #define DOCUMENTFONTS                  "%%DocumentFonts:"
                    603: #define DOCUMENTNEEDEDFONTS            "%%DocumentNeededFonts:"
                    604: #define DOCUMENTSUPPLIEDFONTS          "%%DocumentSuppliedFonts:"
                    605: #define DOCUMENTNEEDEDPROCSETS         "%%DocumentNeededProcSets:"
                    606: #define DOCUMENTSUPPLIEDPROCSETS       "%%DocumentSuppliedProcSets:"
                    607: #define DOCUMENTNEEDEDFILES            "%%DocumentNeededFiles:"
                    608: #define DOCUMENTSUPPLIEDFILES          "%%DocumentSuppliedFiles:"
                    609: #define DOCUMENTPAPERSIZES             "%%DocumentPaperSizes:"
                    610: #define DOCUMENTPAPERFORMS             "%%DocumentPaperForms:"
                    611: #define DOCUMENTPAPERCOLORS            "%%DocumentPaperColors:"
                    612: #define DOCUMENTPAPERWEIGHTS           "%%DocumentPaperWeights:"
                    613: #define DOCUMENTPRINTERREQUIRED                "%%DocumentPrinterREquired:"
                    614: #define ENDCOMMENTS                    "%%EndComments\n"
                    615: #define ENDPROLOG                      "%%EndProlog\n"
                    616: 
                    617: /*
                    618:  *
                    619:  * Body comments - can appear anywhere in a document.
                    620:  *
                    621:  */
                    622: 
                    623: #define BEGINSETUP                     "%%BeginSetup\n"
                    624: #define ENDSETUP                       "%%EndSetup\n"
                    625: #define BEGINDOCUMENT                  "%%BeginDocument:"
                    626: #define ENDDOCUMENT                    "%%EndDocument\n"
                    627: #define BEGINFILE                      "%%BeginFile:"
                    628: #define ENDFILE                                "%%EndFile\n"
                    629: #define BEGINPROCSET                   "%%BeginProcSet:"
                    630: #define ENDPROCSET                     "%%EndProcSet\n"
                    631: #define BEGINBINARY                    "%%BeginBinary:"
                    632: #define ENDBINARY                      "%%EndBinary\n"
                    633: #define BEGINPAPERSIZE                 "%%BeginePaperSize:"
                    634: #define ENDPAPERSIZE                   "%%EndPaperSize\n"
                    635: #define BEGINFEATURE                   "%%BeginFeature:"
                    636: #define ENDFEATURE                     "%%EndFeature\n"
                    637: #define BEGINEXITSERVER                        "%%BeginExitServer:"
                    638: #define ENDEXITSERVER                  "%%EndExitServer\n"
                    639: #define TRAILER                                "%%Trailer\n"
                    640: 
                    641: /*
                    642:  *
                    643:  * Page level comments - usually will occur once per page.
                    644:  *
                    645:  */
                    646: 
                    647: #define PAGE                           "%%Page:"
                    648: #define PAGEFONTS                      "%%PageFonts:"
                    649: #define PAGEFILES                      "%%PageFiles:"
                    650: #define PAGEBOUNDINGBOX                        "%%PageBoundingBox:"
                    651: #define BEGINPAGESETUP                 "%%BeginPageSetup\n"
                    652: #define BEGINOBJECT                    "%%BeginObject:"
                    653: #define ENDOBJECT                      "%%EndObject\n"
                    654: 
                    655: /*
                    656:  *
                    657:  * Resource requirements - again can appear anywhere in a document.
                    658:  *
                    659:  */
                    660: 
                    661: #define INCLUDEFONT                    "%%IncludeFont:"
                    662: #define INCLUDEPROCSET                 "%%IncludeProcSet:"
                    663: #define INCLUDEFILE                    "%%IncludeFile:"
                    664: #define EXECUTEFILE                    "%%ExecuteFile:"
                    665: #define CHANGEFONT                     "%%ChangeFont:"
                    666: #define PAPERFORM                      "%%PaparForm:"
                    667: #define PAPERCOLOR                     "%%PaperColor:"
                    668: #define PAPERWEIGHT                    "%%PaperWeight:"
                    669: #define PAPERSIZE                      "%%PaperSize:"
                    670: #define FEATURE                                "%%Feature:"
                    671: #define ENDOFFILE                      "%%EOF\n"
                    672: 
                    673: #define CONTINUECOMMENT                        "%%+"
                    674: #define ATEND                          "(atend)"
                    675: 
                    676: /*
                    677:  *
                    678:  * Some non-standard document comments. Global definitions are occasionally used
                    679:  * in dpost and are marked by BEGINGLOBAL and ENDGLOBAL. The resulting document
                    680:  * violates page independence, but can easily be converted to a conforming file
                    681:  * using a utililty program.
                    682:  *
                    683:  */
                    684: 
                    685: #define BEGINSCRIPT                    "%%BeginScript\n"
                    686: #define BEGINGLOBAL                    "%%BeginGlobal\n"
                    687: #define ENDGLOBAL                      "%%EndGlobal\n"
                    688: #define ENDPAGE                                "%%EndPage:"
                    689: #define FORMSPERPAGE                   "%%FormsPerPage:"
                    690: #define VERSION                                "%%Version:"
                    691: 
                    692: 0707070014230361541006440057030057030000011041100522627500600002700000012551post.src/common/bbox.c/*
                    693:  *
                    694:  * Boundingbox code for PostScript translators. The boundingbox for each page
                    695:  * is accumulated in bbox - the one for the whole document goes in docbbox. A
                    696:  * call to writebbox() puts out an appropriate comment, updates docbbox, and
                    697:  * resets bbox for the next page. The assumption made at the end of writebbox()
                    698:  * is that we're really printing the current page only if output is now going
                    699:  * to stdout - a valid assumption for all supplied translators. Needs the math
                    700:  * library.
                    701:  *
                    702:  */
                    703: 
                    704: #include <stdio.h>
                    705: #include <ctype.h>
                    706: #include <fcntl.h>
                    707: #include <math.h>
                    708: 
                    709: #include "comments.h"                  /* PostScript file structuring comments */
                    710: #include "gen.h"                       /* a few general purpose definitions */
                    711: #include "ext.h"                       /* external variable declarations */
                    712: 
                    713: typedef struct bbox {
                    714:        int     set;
                    715:        double  llx, lly;
                    716:        double  urx, ury;
                    717: } Bbox;
                    718: 
                    719: Bbox   bbox = {FALSE, 0.0, 0.0, 0.0, 0.0};
                    720: Bbox   docbbox = {FALSE, 0.0, 0.0, 0.0, 0.0};
                    721: 
                    722: double ctm[6] = {1.0, 0.0, 0.0, 1.0, 0.0, 0.0};
                    723: double matrix1[6], matrix2[6];
                    724: 
                    725: /*****************************************************************************/
                    726: 
                    727: cover(x, y)
                    728: 
                    729:     double     x, y;
                    730: 
                    731: {
                    732: 
                    733: /*
                    734:  *
                    735:  * Adds point (x, y) to bbox. Coordinates are in user space - the transformation
                    736:  * to default coordinates happens in writebbox().
                    737:  *
                    738:  */
                    739: 
                    740:     if ( bbox.set == FALSE ) {
                    741:        bbox.llx = bbox.urx = x;
                    742:        bbox.lly = bbox.ury = y;
                    743:        bbox.set = TRUE;
                    744:     } else {
                    745:        if ( x < bbox.llx )
                    746:            bbox.llx = x;
                    747:        if ( y < bbox.lly )
                    748:            bbox.lly = y;
                    749:        if ( x > bbox.urx )
                    750:            bbox.urx = x;
                    751:        if ( y > bbox.ury )
                    752:            bbox.ury = y;
                    753:     }  /* End else */
                    754: 
                    755: }   /* End of cover */
                    756: 
                    757: /*****************************************************************************/
                    758: 
                    759: writebbox(fp, keyword, slop)
                    760: 
                    761:     FILE       *fp;                    /* the comment is written here */
                    762:     char       *keyword;               /* the boundingbox comment string */
                    763:     int                slop;                   /* expand (or contract?) the box a bit */
                    764: 
                    765: {
                    766: 
                    767:     Bbox       ubbox;                  /* user space bounding box */
                    768:     double     x, y;
                    769: 
                    770: /*
                    771:  *
                    772:  * Transforms the numbers in the bbox[] using ctm[], adjusts the corners a bit
                    773:  * (depending on slop) and then writes comment. If *keyword is BoundingBox use
                    774:  * whatever's been saved in docbbox, otherwise assume the comment is just for
                    775:  * the current page.
                    776:  *
                    777:  */
                    778: 
                    779:     if ( strcmp(keyword, BOUNDINGBOX) == 0 )
                    780:        bbox = docbbox;
                    781: 
                    782:     if ( bbox.set == TRUE ) {
                    783:        ubbox = bbox;
                    784:        bbox.set = FALSE;               /* so cover() works properly */
                    785:        x = ctm[0] * ubbox.llx + ctm[2] * ubbox.lly + ctm[4];
                    786:        y = ctm[1] * ubbox.llx + ctm[3] * ubbox.lly + ctm[5];
                    787:        cover(x, y);
                    788:        x = ctm[0] * ubbox.llx + ctm[2] * ubbox.ury + ctm[4];
                    789:        y = ctm[1] * ubbox.llx + ctm[3] * ubbox.ury + ctm[5];
                    790:        cover(x, y);
                    791:        x = ctm[0] * ubbox.urx + ctm[2] * ubbox.ury + ctm[4];
                    792:        y = ctm[1] * ubbox.urx + ctm[3] * ubbox.ury + ctm[5];
                    793:        cover(x, y);
                    794:        x = ctm[0] * ubbox.urx + ctm[2] * ubbox.lly + ctm[4];
                    795:        y = ctm[1] * ubbox.urx + ctm[3] * ubbox.lly + ctm[5];
                    796:        cover(x, y);
                    797:        bbox.llx -= slop + 0.5;
                    798:        bbox.lly -= slop + 0.5;
                    799:        bbox.urx += slop + 0.5;
                    800:        bbox.ury += slop + 0.5;
                    801:        fprintf(fp, "%s %d %d %d %d\n", keyword, (int)bbox.llx, (int)bbox.lly,(int)bbox.urx, (int)bbox.ury);
                    802:        bbox = ubbox;
                    803:     }  /* End if */
                    804: 
                    805:     resetbbox((fp == stdout) ? TRUE : FALSE);
                    806: 
                    807: }   /* End of writebbox */
                    808: 
                    809: /*****************************************************************************/
                    810: 
                    811: resetbbox(output)
                    812: 
                    813:     int                output;
                    814: 
                    815: {
                    816: 
                    817: /*
                    818:  *
                    819:  * Adds bbox to docbbox and resets bbox for the next page. Only update docbbox
                    820:  * if we really did output on the last page.
                    821:  *
                    822:  */
                    823: 
                    824:     if ( docbbox.set == TRUE ) {
                    825:        cover(docbbox.llx, docbbox.lly);
                    826:        cover(docbbox.urx, docbbox.ury);
                    827:     }  /* End if */
                    828: 
                    829:     if ( output == TRUE ) {
                    830:        docbbox = bbox;
                    831:        docbbox.set = TRUE;
                    832:     }  /* End if */
                    833: 
                    834:     bbox.set = FALSE;
                    835: 
                    836: }   /* End of resetbbox */
                    837: 
                    838: /*****************************************************************************/
                    839: 
                    840: scale(sx, sy)
                    841: 
                    842:     double     sx, sy;
                    843: 
                    844: {
                    845: 
                    846: /*
                    847:  *
                    848:  * Scales the default matrix.
                    849:  *
                    850:  */
                    851: 
                    852:     matrix1[0] = sx;
                    853:     matrix1[1] = 0;
                    854:     matrix1[2] = 0;
                    855:     matrix1[3] = sy;
                    856:     matrix1[4] = 0;
                    857:     matrix1[5] = 0;
                    858: 
                    859:     concat(matrix1);
                    860: 
                    861: }   /* End of scale */
                    862: 
                    863: /*****************************************************************************/
                    864: 
                    865: translate(tx, ty)
                    866: 
                    867:     double     tx, ty;
                    868: 
                    869: {
                    870: 
                    871: /*
                    872:  *
                    873:  * Translates the default matrix.
                    874:  *
                    875:  */
                    876: 
                    877:     matrix1[0] = 1.0;
                    878:     matrix1[1] = 0.0;
                    879:     matrix1[2] = 0.0;
                    880:     matrix1[3] = 1.0;
                    881:     matrix1[4] = tx;
                    882:     matrix1[5] = ty;
                    883: 
                    884:     concat(matrix1);
                    885: 
                    886: }   /* End of translate */
                    887: 
                    888: /*****************************************************************************/
                    889: 
                    890: rotate(angle)
                    891: 
                    892:     double     angle;
                    893: 
                    894: {
                    895: 
                    896: /*
                    897:  *
                    898:  * Rotates by angle degrees.
                    899:  *
                    900:  */
                    901: 
                    902:     angle *= 3.1416 / 180;
                    903: 
                    904:     matrix1[0] = matrix1[3] = cos(angle);
                    905:     matrix1[1] = sin(angle);
                    906:     matrix1[2] = -matrix1[1];
                    907:     matrix1[4] = 0.0;
                    908:     matrix1[5] = 0.0;
                    909: 
                    910:     concat(matrix1);
                    911: 
                    912: }   /* End of rotate */
                    913: 
                    914: /*****************************************************************************/
                    915: 
                    916: concat(m1)
                    917: 
                    918:     double     m1[];
                    919: 
                    920: {
                    921: 
                    922:     double     m2[6];
                    923: 
                    924: /*
                    925:  *
                    926:  * Replaces the ctm[] by the result of the matrix multiplication m1[] x ctm[].
                    927:  *
                    928:  */
                    929: 
                    930:     m2[0] = ctm[0];
                    931:     m2[1] = ctm[1];
                    932:     m2[2] = ctm[2];
                    933:     m2[3] = ctm[3];
                    934:     m2[4] = ctm[4];
                    935:     m2[5] = ctm[5];
                    936: 
                    937:     ctm[0] = m1[0] * m2[0] + m1[1] * m2[2];
                    938:     ctm[1] = m1[0] * m2[1] + m1[1] * m2[3];
                    939:     ctm[2] = m1[2] * m2[0] + m1[3] * m2[2];
                    940:     ctm[3] = m1[2] * m2[1] + m1[3] * m2[3];
                    941:     ctm[4] = m1[4] * m2[0] + m1[5] * m2[2] + m2[4];
                    942:     ctm[5] = m1[4] * m2[1] + m1[5] * m2[3] + m2[5];
                    943: 
                    944: }   /* End of concat */
                    945: 
                    946: /*****************************************************************************/
                    947: 
                    948: 0707070014230361551006440057030057030000011040560522627500600003500000001604post.src/common/pathtemplate/*
                    949:  *
                    950:  * pathname definitions for important files and directories.
                    951:  *
                    952:  */
                    953: 
                    954: #define DPOST          "POSTLIB/dpost.ps"
                    955: #define POSTBGI                "POSTLIB/postbgi.ps"
                    956: #define POSTDAISY      "POSTLIB/postdaisy.ps"
                    957: #define POSTDMD                "POSTLIB/postdmd.ps"
                    958: #define POSTMD         "POSTLIB/postmd.ps"
                    959: #define POSTPLOT       "POSTLIB/postplot.ps"
                    960: #define POSTPRINT      "POSTLIB/postprint.ps"
                    961: #define POSTNPRINT     "POSTLIB/postnprint.ps"
                    962: #define POSTTEK                "POSTLIB/posttek.ps"
                    963: #define POSTGIF                "POSTLIB/postgif.ps"
                    964: 
                    965: #define BASELINE       "POSTLIB/baseline.ps"
                    966: #define COLOR          "POSTLIB/color.ps"
                    967: #define DRAW           "POSTLIB/draw.ps"
                    968: #define FORMFILE       "POSTLIB/forms.ps"
                    969: #define SHADEFILE      "POSTLIB/shade.ps"
                    970: #define KERNING                "POSTLIB/kerning.ps"
                    971: #define REQUESTFILE    "POSTLIB/ps.requests"
                    972: #define ROUNDPAGE      "POSTLIB/roundpage.ps"
                    973: 
                    974: #define ENCODINGDIR    "POSTLIB"
                    975: #define HOSTDIR                "HOSTDIR"
                    976: #define FONTDIR                "FONTDIR"
                    977: #define POSTLIBDIR     "POSTLIB"
                    978: #define TEMPDIR                "/tmp"
                    979: 
                    980: 0707070014230357541006400057030057030000011040360522633073100003200000002342post.src/common/common.mkMAKE=/bin/make
                    981: MAKEFILE=common.mk
                    982: 
                    983: SYSTEM=V9
                    984: VERSION=3.3.2
                    985: 
                    986: FONTDIR=/usr/lib/font
                    987: HOSTDIR=/usr/lib/font/postscript
                    988: POSTLIB=/usr/lib/postscript
                    989: 
                    990: ROUNDPAGE=TRUE
                    991: 
                    992: CFLGS=-O
                    993: LDFLGS=-s
                    994: 
                    995: CFLAGS=$(CFLGS)
                    996: LDFLAGS=$(LDFLGS)
                    997: 
                    998: all :
                    999: 
                   1000: install : all
                   1001: 
                   1002: clean :
                   1003:        rm -f *.o
                   1004: 
                   1005: clobber : clean
                   1006: 
                   1007: bbox.o : bbox.c ext.h gen.h
                   1008:        $(CC) $(CFLAGS) -c bbox.c
                   1009: 
                   1010: glob.o : glob.c gen.h
                   1011:        $(CC) $(CFLAGS) -c glob.c
                   1012: 
                   1013: misc.o : misc.c ext.h gen.h path.h
                   1014:        $(CC) $(CFLAGS) -c misc.c
                   1015: 
                   1016: request.o : request.c gen.h path.h request.h
                   1017:        $(CC) $(CFLAGS) -c request.c
                   1018: 
                   1019: rune.o : rune.c rune.h
                   1020:        $(CC) $(CFLAGS) -c rune.c
                   1021: 
                   1022: tempnam.o : tempnam.c
                   1023:        $(CC) $(CFLAGS) -D$(SYSTEM) -c tempnam.c
                   1024: 
                   1025: changes :
                   1026:        @trap "" 1 2 3 15; \
                   1027:        sed \
                   1028:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
                   1029:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
                   1030:            -e "s'^FONTDIR=.*'FONTDIR=$(FONTDIR)'" \
                   1031:            -e "s'^HOSTDIR=.*'HOSTDIR=$(HOSTDIR)'" \
                   1032:            -e "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" \
                   1033:            -e "s'^ROUNDPAGE=.*'ROUNDPAGE=$(ROUNDPAGE)'" \
                   1034:        $(MAKEFILE) >XXX.mk; \
                   1035:        mv XXX.mk $(MAKEFILE); \
                   1036:        sed \
                   1037:            -e 's:"FONTDIR:"$(FONTDIR):' \
                   1038:            -e 's:"HOSTDIR:"$(HOSTDIR):' \
                   1039:            -e 's:"POSTLIB:"$(POSTLIB):' \
                   1040:        pathtemplate >path.h; \
                   1041:        sed \
                   1042:            -e "s'^#define.*DOROUND.*'#define DOROUND   $(ROUNDPAGE)'" \
                   1043:        gen.h >Xgen.h; \
                   1044:        mv Xgen.h gen.h
                   1045: 
                   1046: 0707070014230361571006440057030057030000011040570522627500600002700000000566post.src/common/rune.h/*
                   1047:  *
                   1048:  * Rune declarations - for supporting UTF encoding.
                   1049:  *
                   1050:  */
                   1051: 
                   1052: #define RUNELIB                1
                   1053: 
                   1054: #ifdef RUNELIB
                   1055: typedef unsigned short Rune;
                   1056: 
                   1057: enum
                   1058: {
                   1059:        UTFmax          = 3,            /* maximum bytes per rune */
                   1060:        Runesync        = 0x21,         /* cannot represent part of a utf sequence (<) */
                   1061:        Runeself        = 0xA0,         /* rune and utf sequences are the same (<) */
                   1062:        Runeerror       = 0x80,         /* decoding error in utf */
                   1063: };
                   1064: #endif
                   1065: 0707070014230361601006440057030057030000011040740522627500600002700000004760post.src/common/rune.c/*
                   1066:  *
                   1067:  * Rune library routines for supporting UTF encoding.
                   1068:  *
                   1069:  */
                   1070: 
                   1071: #include "rune.h"
                   1072: 
                   1073: #ifdef RUNELIB
                   1074: enum
                   1075: {
                   1076:        Char1   = Runeself,     Rune1   = Runeself,
                   1077:        Char21  = 0xA1,         Rune21  = 0x0100,
                   1078:        Char22  = 0xF6,         Rune22  = 0x4016,
                   1079:        Char3   = 0xFC,         Rune3   = 0x10000,      /* really 0x38E2E */
                   1080:        Esc     = 0xBE,         Bad     = Runeerror,
                   1081: };
                   1082: 
                   1083: static unsigned char   U[256];
                   1084: static unsigned char   T[256];
                   1085: 
                   1086: static
                   1087: void
                   1088: mktable()
                   1089: {
                   1090:        int i, u;
                   1091: 
                   1092:        for(i=0; i<256; i++) {
                   1093:                u = i + (0x5E-0xA0);
                   1094:                if(i < 0xA0)
                   1095:                        u = i + (0xDF-0x7F);
                   1096:                if(i < 0x7F)
                   1097:                        u = i + (0x00-0x21);
                   1098:                if(i < 0x21)
                   1099:                        u = i + (0xBE-0x00);
                   1100:                U[i] = u;
                   1101:                T[u] = i;
                   1102:        }
                   1103: }
                   1104: 
                   1105: int
                   1106: chartorune(rune, str)
                   1107:        Rune *rune;
                   1108:        char *str;
                   1109: {
                   1110:        int c, c1, c2;
                   1111:        long l;
                   1112: 
                   1113:        if(U[0] == 0)
                   1114:                mktable();
                   1115: 
                   1116:        /*
                   1117:         * one character sequence
                   1118:         *      00000-0009F => 00-9F
                   1119:         */
                   1120:        c = *(unsigned char*)str;
                   1121:        if(c < Char1) {
                   1122:                *rune = c;
                   1123:                return 1;
                   1124:        }
                   1125: 
                   1126:        /*
                   1127:         * two character sequence
                   1128:         *      000A0-000FF => A0; A0-FF
                   1129:         */
                   1130:        c1 = *(unsigned char*)(str+1);
                   1131:        if(c < Char21) {
                   1132:                if(c1 >= Rune1 && c1 < Rune21) {
                   1133:                        *rune = c1;
                   1134:                        return 2;
                   1135:                }
                   1136:                goto bad;
                   1137:        }
                   1138: 
                   1139:        /*
                   1140:         * two character sequence
                   1141:         *      00100-04015 => A1-F5; 21-7E/A0-FF
                   1142:         */
                   1143:        c1 = U[c1];
                   1144:        if(c1 >= Esc)
                   1145:                goto bad;
                   1146:        if(c < Char22) {
                   1147:                *rune =  (c-Char21)*Esc + c1 + Rune21;
                   1148:                return 2;
                   1149:        }
                   1150: 
                   1151:        /*
                   1152:         * three character sequence
                   1153:         *      04016-38E2D => A6-FB; 21-7E/A0-FF
                   1154:         */
                   1155:        c2 = U[*(unsigned char*)(str+2)];
                   1156:        if(c2 >= Esc)
                   1157:                goto bad;
                   1158:        if(c < Char3) {
                   1159:                l = (c-Char22)*Esc*Esc + c1*Esc + c2 + Rune22;
                   1160:                if(l >= Rune3)
                   1161:                        goto bad;
                   1162:                *rune = l;
                   1163:                return 3;
                   1164:        }
                   1165: 
                   1166:        /*
                   1167:         * bad decoding
                   1168:         */
                   1169: bad:
                   1170:        *rune = Bad;
                   1171:        return 1;
                   1172: }
                   1173: 
                   1174: int
                   1175: runetochar(str, rune)
                   1176:        char *str;
                   1177:        Rune *rune;
                   1178: {
                   1179:        long c;
                   1180: 
                   1181:        if(T[0] == 0)
                   1182:                mktable();
                   1183: 
                   1184:        /*
                   1185:         * one character sequence
                   1186:         *      00000-0009F => 00-9F
                   1187:         */
                   1188:        c = *rune;
                   1189:        if(c < Rune1) {
                   1190:                str[0] = c;
                   1191:                return 1;
                   1192:        }
                   1193: 
                   1194:        /*
                   1195:         * two character sequence
                   1196:         *      000A0-000FF => A0; A0-FF
                   1197:         */
                   1198:        if(c < Rune21) {
                   1199:                str[0] = Char1;
                   1200:                str[1] = c;
                   1201:                return 2;
                   1202:        }
                   1203: 
                   1204:        /*
                   1205:         * two character sequence
                   1206:         *      00100-04015 => A1-F5; 21-7E/A0-FF
                   1207:         */
                   1208:        if(c < Rune22) {
                   1209:                c -= Rune21;
                   1210:                str[0] = c/Esc + Char21;
                   1211:                str[1] = T[c%Esc];
                   1212:                return 2;
                   1213:        }
                   1214: 
                   1215:        /*
                   1216:         * three character sequence
                   1217:         *      04016-38E2D => A6-FB; 21-7E/A0-FF
                   1218:         */
                   1219:        c -= Rune22;
                   1220:        str[0] = c/(Esc*Esc) + Char22;
                   1221:        str[1] = T[c/Esc%Esc];
                   1222:        str[2] = T[c%Esc];
                   1223:        return 3;
                   1224: }
                   1225: 
                   1226: int
                   1227: runelen(c)
                   1228:        long c;
                   1229: {
                   1230:        Rune rune;
                   1231:        char str[10];
                   1232: 
                   1233:        rune = c;
                   1234:        return runetochar(str, &rune);
                   1235: }
                   1236: 
                   1237: int
                   1238: fullrune(str, n)
                   1239:        char *str;
                   1240:        int n;
                   1241: {
                   1242:        int c;
                   1243: 
                   1244:        if(n > 0) {
                   1245:                c = *(unsigned char*)str;
                   1246:                if(c < Char1)
                   1247:                        return 1;
                   1248:                if(n > 1)
                   1249:                        if(c < Char22 || n > 2)
                   1250:                                return 1;
                   1251:        }
                   1252:        return 0;
                   1253: }
                   1254: 
                   1255: #endif RUNELIB
                   1256: 0707070014231030400407550057030057030000020277230522633100400001700000000000post.src/dpost0707070014231030411006440057030057030000010277240522627500600002600000002711post.src/dpost/README
                   1257: Troff to PostScript translator. The big change is in the font table
                   1258: routines. The old binary format and makedev are gone. Troff and dpost
                   1259: now both read ASCII tables. Translating the ASCII font tables in dpost
                   1260: (and troff) means some startup overhead. Both programs run a bit slower,
                   1261: but it's a small price to pay for the added flexibility.
                   1262: 
                   1263: Long PostScript font names can now be included in the font tables.
                   1264: They should follow the fontname keyword as in,
                   1265: 
                   1266:        fontname Times-Roman
                   1267: 
                   1268: The fontname field helps with the DocumentFonts comment, font name
                   1269: abbreviations (formally required to be in the prologue), and is used
                   1270: to manage host resident fonts.
                   1271: 
                   1272: dpost can also now calculate a reasonably tight BoundingBox, which
                   1273: helps picture inclusion. By default the calculations are disabled.
                   1274: Use the -B option when you BoundingBox and PageBoundingBox comments.
                   1275: If you're stubborn and always want the comment set dobbox (in file
                   1276: dpost.c) to TRUE. You'll still need -B to get the the best fit.
                   1277: 
                   1278: Most other changes are bug fixes. Color support has been improved,
                   1279: and now works with the drawing routines. The different text encoding
                   1280: schemes are all still in. Level 2 is well tested and is now the default.
                   1281: For a different default change DFLTENCODING (file dpost.h). Don't make
                   1282: level 3 the default unless you can live with ragged right margins.
                   1283: 
                   1284: A typical command line would be,
                   1285: 
                   1286:     pic file | tbl | eqn | troff -mm | dpost >file.ps
                   1287: 
                   1288: file.ps is PostScript and can be sent directly to a printer.
                   1289: 
                   1290: 0707070014231030421006440057030057030000010277400522627500600002700000015654post.src/dpost/color.c/*
                   1291:  *
                   1292:  * Routines that handle color requests passed through as device control commands
                   1293:  * in the form "x X SetColor:red". The following PostScript procedures are needed:
                   1294:  *
                   1295:  *     setcolor
                   1296:  *
                   1297:  *       mark /color setcolor mark
                   1298:  *       mark /color1 /color2 setcolor mark
                   1299:  *
                   1300:  *         Called whenever we want to change PostScript's current color graphics
                   1301:  *         state parameter. One or two color arguments can be given. In each case
                   1302:  *         the colors are looked up in the PostScript colordict dictionary that's
                   1303:  *         defined in *colorfile. Two named colors implies reverse video printing
                   1304:  *         with the background given in /color2 and the text printed in /color1.
                   1305:  *         Unknown colors are mapped into defaults - black for a single color and
                   1306:  *         white on black for reverse video.
                   1307:  *
                   1308:  *     drawrvbox
                   1309:  *
                   1310:  *       leftx rightx drawrvbox -
                   1311:  *
                   1312:  *         Fills a box that extends from leftx to rightx with the background color
                   1313:  *         that was requested when setcolor set things up for reverse video mode.
                   1314:  *         The vertical extent of the box is determined using FontBBox just before
                   1315:  *         the first string is printed, and the height remains in effect until
                   1316:  *         there's an explicit color change. In otherwords font or size changes
                   1317:  *         won't always produce correct result in reverse video mode.
                   1318:  *
                   1319:  *     setdecoding
                   1320:  *
                   1321:  *       num setdecoding -
                   1322:  *
                   1323:  *         Selects the text decoding procedure (ie. what's assigned to PostScript
                   1324:  *         procedure t) from the decodingdefs array defined in the prologue. num
                   1325:  *         should be the value assigned to variable encoding (in dpost) and will
                   1326:  *         remain constant throughout a job, unless special features, like reverse
                   1327:  *         video printing, are requested. The text encoding scheme can be set on
                   1328:  *         the command line using the -e option. Print time and the size of the
                   1329:  *         output file will usually decrease as the value assigned to encoding
                   1330:  *         increases.
                   1331:  *
                   1332:  *
                   1333:  * The recognized collection of "x X SetColor:" commands are:
                   1334:  *
                   1335:  *     x X SetColor:                           selects black
                   1336:  *     x X SetColor:color                      selects color
                   1337:  *     x X SetColor:color1 on color2           reverse video
                   1338:  *     x X SetColor:color1 color2              reverse video again
                   1339:  *     x X SetColor:num1 num2 num3 rgb         explicit rgb color request
                   1340:  *     x X SetColor:num1 num2 num3 hsb         explicit hsb color request
                   1341:  *
                   1342:  * In the last three examples num1, num2, and num3 should be numbers between 0 and
                   1343:  * 1 inclusive and are passed on as aguments to the approrpriate PostScript color
                   1344:  * command (eg. setrgbcolor). Unknown color names (ie. the ones that setcolor
                   1345:  * doesn't find in colordict) are mapped into defaults. For one color the default
                   1346:  * is black, while for reverse video it's white text on a black background.
                   1347:  *
                   1348:  * dpost makes sure the current color is maintained across page boundaries, which
                   1349:  * may not be what you want if you're using a macro package like mm that puts out
                   1350:  * page footers and headers. Adding a color request to troff and keeping track of
                   1351:  * the color in each environment may be the best solution.
                   1352:  *
                   1353:  * To get reverse video printing follow the "x X SetColor:" command with two or
                   1354:  * three arguments. "x X SetColor:white on black" or "x X SetColor:white black"
                   1355:  * both produce white text on a black background. Any two colors named in colordict
                   1356:  * (in file *colorfile) can be chosen so "x X SetColor:yellow on blue" also works.
                   1357:  * Each reverse video mode request selects the vertical extent of the background
                   1358:  * box based on the font and size in use just before the first string is printed.
                   1359:  * Font and/or size changes aren't guaranteed to work properly in reverse video
                   1360:  * printing.
                   1361:  *
                   1362:  */
                   1363: 
                   1364: #include <stdio.h>
                   1365: #include <ctype.h>
                   1366: 
                   1367: #include "gen.h"                       /* general purpose definitions */
                   1368: #include "ext.h"                       /* external variable definitions */
                   1369: 
                   1370: #define DEFAULTCOLOR   "black"
                   1371: 
                   1372: char   color[50] = DEFAULTCOLOR;       /* current color */
                   1373: int    gotcolor = FALSE;               /* TRUE after *colorfile is downloaded */
                   1374: int    wantcolor = FALSE;              /* TRUE if we really ask for a color */
                   1375: 
                   1376: /*
                   1377:  *
                   1378:  * All these should be defined in dpost.c.
                   1379:  *
                   1380:  */
                   1381: 
                   1382: extern int     lastend;
                   1383: extern int     encoding;
                   1384: extern int     maxencoding;
                   1385: extern int     realencoding;
                   1386: 
                   1387: extern char    *colorfile;
                   1388: extern FILE    *tf;
                   1389: 
                   1390: /*****************************************************************************/
                   1391: 
                   1392: getcolor()
                   1393: 
                   1394: {
                   1395: 
                   1396: /*
                   1397:  *
                   1398:  * Responsible for making sure the PostScript color procedures are downloaded from
                   1399:  * *colorfile. Done at most once per job, and only if the job really uses color.
                   1400:  * For now I've decided not to quit if we can't read the color file.
                   1401:  *
                   1402:  */
                   1403: 
                   1404:     if ( gotcolor == FALSE )
                   1405:        exportfile(colorfile);
                   1406: 
                   1407:     if ( tf == stdout )
                   1408:        gotcolor = TRUE;
                   1409: 
                   1410: }   /* End of getcolor */
                   1411: 
                   1412: /*****************************************************************************/
                   1413: 
                   1414: newcolor(name)
                   1415: 
                   1416:     char       *name;                  /* of the color */
                   1417: 
                   1418: {
                   1419: 
                   1420:     char       *p;                     /* next character in *name */
                   1421:     int                i;                      /* goes in color[i] */
                   1422: 
                   1423: /*
                   1424:  *
                   1425:  * Converts *name to lower case and saves the result in color[] for use as the
                   1426:  * current color. The first time something other than DEFAULTCOLOR is requested
                   1427:  * sets wantcolor to TRUE. Characters are converted to lower case as they're put
                   1428:  * in color[] and we quit when we find a newline or get to the end of *name. The
                   1429:  * isupper() test is for Berkley systems.
                   1430:  *
                   1431:  */
                   1432: 
                   1433:     for ( p = name; *p && (*p == ' ' || *p == ':'); p++ ) ;
                   1434: 
                   1435:     for ( i = 0; i < sizeof(color) - 1 && *p != '\n' && *p; i++, p++ )
                   1436:        if ( isupper(*p) )
                   1437:            color[i] = tolower(*p);
                   1438:        else color[i] = *p;
                   1439: 
                   1440:     if ( i == 0 )
                   1441:        strcpy(color, DEFAULTCOLOR);
                   1442:     else color[i] = '\0';
                   1443: 
                   1444:     if ( strcmp(color, DEFAULTCOLOR) != 0 )
                   1445:        wantcolor = TRUE;
                   1446: 
                   1447: }   /* End of newcolor */
                   1448: 
                   1449: /*****************************************************************************/
                   1450: 
                   1451: setcolor()
                   1452: 
                   1453: {
                   1454: 
                   1455:     int                newencoding;            /* text encoding scheme that's needed */
                   1456:     char       *p;                     /* for converting what's in color[] */
                   1457: 
                   1458: /*
                   1459:  *
                   1460:  * Sets the color being used by the printer to whatever's stored as the current
                   1461:  * color (ie. the string in color[]). wantcolor is only set to TRUE if we've been
                   1462:  * through newcolor() and asked for something other than DEFAULTCOLOR (probably
                   1463:  * black). While in reverse video mode encoding gets set to maxencoding + 1 in
                   1464:  * dpost and 0 on the printer. Didn't see much point in trying to extend reverse
                   1465:  * video to all the different encoding schemes. realencoding is restored when we
                   1466:  * leave reverse video mode.
                   1467:  *
                   1468:  */
                   1469: 
                   1470:     if ( wantcolor == TRUE ) {
                   1471:        flushtext();
                   1472:        getcolor();
                   1473: 
                   1474:        lastend = -1;
                   1475:        newencoding = realencoding;
                   1476: 
                   1477:        if ( islower(color[0]) == 0 )           /* explicit rgb or hsb request */
                   1478:            fprintf(tf, "%s\n", color);
                   1479:        else {
                   1480:            putc('/', tf);
                   1481:            for ( p = color; *p && *p != ' '; p++ )
                   1482:                putc(*p, tf);
                   1483:            for ( ; *p && *p == ' '; p++ ) ;
                   1484:            if ( strncmp(p, "on ", 3) == 0 ) p += 3;
                   1485:            if ( *p != '\0' ) {
                   1486:                fprintf(tf, " /%s", p);
                   1487:                newencoding = maxencoding + 1;
                   1488:            }   /* End if */
                   1489:            fprintf(tf, " setcolor\n");
                   1490:        }   /* End else */
                   1491: 
                   1492:        if ( newencoding != encoding ) {
                   1493:            encoding = newencoding;
                   1494:            fprintf(tf, "%d setdecoding\n", encoding);
                   1495:            resetpos();
                   1496:        }   /* End if */
                   1497:     }  /* End if */
                   1498: 
                   1499: }   /* End of setcolor */
                   1500: 
                   1501: /*****************************************************************************/
                   1502: 
                   1503: 0707070014231027441006400057030057030000010254600522633100400002700000012240post.src/dpost/dpost.1.ds dF /usr/lib/font
                   1504: .ds dQ /usr/lib/postscript
                   1505: .TH DPOST 1 "DWB 3.2"
                   1506: .SH NAME
                   1507: .B dpost
                   1508: \-
                   1509: .B troff
                   1510: postprocessor for PostScript printers
                   1511: .SH SYNOPSIS
                   1512: \*(mBdpost\f1
                   1513: .OP "" options []
                   1514: .OP "" files []
                   1515: .SH DESCRIPTION
                   1516: .B dpost
                   1517: translates
                   1518: .I files
                   1519: created by
                   1520: .BR troff (1)
                   1521: into PostScript and writes the results on the
                   1522: standard output.
                   1523: If no
                   1524: .I files
                   1525: are specified, or if
                   1526: .OP \-
                   1527: is one of the input
                   1528: .IR files ,
                   1529: the standard input is read.
                   1530: The following
                   1531: .I options
                   1532: are understood:
                   1533: .TP 0.75i
                   1534: .OP \-c num
                   1535: Print
                   1536: .I num
                   1537: copies of each page.
                   1538: By default only one copy is printed.
                   1539: .TP
                   1540: .OP \-m num
                   1541: Magnify each logical page by the factor
                   1542: .IR num
                   1543: (default is 1.0).
                   1544: Pages are scaled uniformly about the origin,
                   1545: which is located near the upper left corner of
                   1546: each page.
                   1547: .TP
                   1548: .OP \-n num
                   1549: Print
                   1550: .I num
                   1551: logical pages on each piece of paper,
                   1552: where
                   1553: .I num
                   1554: can be any positive integer.
                   1555: By default,
                   1556: .I num
                   1557: is set to 1.
                   1558: .TP
                   1559: .OP \-o list
                   1560: Print pages whose numbers are given in the comma-separated
                   1561: .IR list .
                   1562: The list contains single numbers
                   1563: .I N
                   1564: and ranges
                   1565: .IR N1\-\|N2 .
                   1566: A missing
                   1567: .I N1
                   1568: means the lowest numbered page, a missing
                   1569: .I N2
                   1570: means the highest.
                   1571: .TP
                   1572: .OP \-p mode
                   1573: Print
                   1574: .I files
                   1575: in either \*(mBportrait\fP or \*(mBlandscape\fP mode.
                   1576: Only the first character of
                   1577: .I mode
                   1578: is significant.
                   1579: The default
                   1580: .I mode
                   1581: is \*(mBportrait\fP.
                   1582: .TP
                   1583: .OP \-w num
                   1584: Set the line width used to implement
                   1585: .B troff
                   1586: graphics commands to
                   1587: .I num
                   1588: points, where a point is approximately 1/72
                   1589: of an inch.
                   1590: By default
                   1591: .I num
                   1592: is set to 0.3 points.
                   1593: .TP
                   1594: .OP \-x num
                   1595: Translate the origin
                   1596: .I num
                   1597: inches along the positive x axis.
                   1598: The default
                   1599: coordinate system has the origin fixed near the
                   1600: upper left corner of the page, with positive
                   1601: x to the right and positive y down the page.
                   1602: Positive
                   1603: .I num
                   1604: moves everything right.
                   1605: The default offset is 0 inches.
                   1606: .TP
                   1607: .OP \-y num
                   1608: Translate the origin
                   1609: .I num
                   1610: inches along the positive y axis.
                   1611: Positive
                   1612: .I num
                   1613: moves text down the page.
                   1614: The default offset is 0.
                   1615: .TP
                   1616: .OP \-B
                   1617: Include
                   1618: .MW %%BoundingBox
                   1619: comments in the output file.
                   1620: Should only be used when the comments are needed
                   1621: for picture inclusion.
                   1622: Output is forced onto an 8.5\(mu11-inch page.
                   1623: .TP
                   1624: .OP \-E name
                   1625: Set the character encoding for text fonts to
                   1626: .IR name .
                   1627: Requesting
                   1628: .I name
                   1629: means include file
                   1630: .MI \*(dQ/ name .enc \f1.
                   1631: A nonexistent encoding file is silently ignored.
                   1632: There is no default.
                   1633: .TP
                   1634: .OP \-F dir
                   1635: Use
                   1636: .I dir
                   1637: as the font directory.
                   1638: The default
                   1639: .I dir
                   1640: is
                   1641: .MR \*(dF ,
                   1642: and
                   1643: .B dpost
                   1644: reads
                   1645: .SM ASCII
                   1646: font files from directory
                   1647: .MR \*(dF/devpost .
                   1648: .TP
                   1649: .OP \-H dir
                   1650: Use
                   1651: .I dir
                   1652: as the host-resident font directory.
                   1653: A file in
                   1654: .I dir
                   1655: that matches the name of the
                   1656: .B troff
                   1657: font is assumed to be a host resident font program
                   1658: and is included in
                   1659: .B dpost
                   1660: output.
                   1661: There is no default.
                   1662: .TP
                   1663: .OP \-L \^file
                   1664: Use
                   1665: .I file
                   1666: as the PostScript prologue.
                   1667: The default is
                   1668: .MR \*(dQ/dpost.ps .
                   1669: .TP
                   1670: .OP \-T name
                   1671: Use font files for device
                   1672: .I name
                   1673: as the best description of available PostScript fonts.
                   1674: By default,
                   1675: .I name
                   1676: is
                   1677: \*(mBpost\fP
                   1678: and
                   1679: .B dpost
                   1680: reads
                   1681: .SM ASCII
                   1682: files from
                   1683: .MR \*(dF/devpost .
                   1684: .br
                   1685: .ne 1i
                   1686: .PP
                   1687: Three options allow insertion of arbitrary PostScript
                   1688: at controlled points in the translation process:
                   1689: .TP 0.75i
                   1690: .OP \-C \^file
                   1691: Copy
                   1692: .I file
                   1693: to the output file;
                   1694: .I file
                   1695: must contain legitimate PostScript.
                   1696: .TP
                   1697: .OP \-P string
                   1698: Include
                   1699: .I string
                   1700: in the output file;
                   1701: .I string
                   1702: must be legitimate PostScript.
                   1703: .TP
                   1704: .OP \-R action
                   1705: Requests special
                   1706: .I action
                   1707: (e.g.,
                   1708: .MR manualfeed )
                   1709: on a per page or global basis.
                   1710: The
                   1711: .I action
                   1712: string can be given as
                   1713: .IR request \|,
                   1714: .IM request : page\f1\|,
                   1715: or
                   1716: .IM request : page : file\f1\|.
                   1717: If
                   1718: .I page
                   1719: is omitted or given as 0 the request
                   1720: applies to all pages.
                   1721: If
                   1722: .I file
                   1723: is omitted the request
                   1724: lookup is done in
                   1725: .MR \*(dQ/ps.requests .
                   1726: .PP
                   1727: All
                   1728: .I files
                   1729: should be prepared by
                   1730: .B troff
                   1731: for the same device.
                   1732: Device tables that describe real PostScript fonts that can be
                   1733: used by
                   1734: .B dpost
                   1735: should include
                   1736: .EX
                   1737: PDL PostScript
                   1738: .EE
                   1739: in their
                   1740: .SM DESC
                   1741: file.
                   1742: Tables that depend on a non-standard character set encoding indicate
                   1743: that fact by an
                   1744: .MW Encoding
                   1745: entry in their
                   1746: .SM DESC
                   1747: file.
                   1748: For example,
                   1749: .EX
                   1750: Encoding Latin1
                   1751: .EE
                   1752: means include file
                   1753: .MR \*(dQ/Latin1.enc .
                   1754: The
                   1755: .OP \-E
                   1756: option overrides the
                   1757: .SM DESC
                   1758: setting.
                   1759: .SH EXAMPLES
                   1760: .PP
                   1761: A typical command line might be:
                   1762: .EX
                   1763: pic  \f2files\fP | tbl | eqn | troff -mm | dpost
                   1764: .EE
                   1765: .SH DIAGNOSTICS
                   1766: A 0 exit status is returned if
                   1767: .I files
                   1768: were successfully translated,
                   1769: while 2 often indicates a syntax error in the input
                   1770: .IR files .
                   1771: .SH WARNINGS
                   1772: .PP
                   1773: .B dpost
                   1774: output does not usually conform to Adobe's file-structuring conventions.
                   1775: Send the output through
                   1776: .B postreverse
                   1777: to produce a minimally conforming PostScript file.
                   1778: .PP
                   1779: Emulation is expensive and does not always produce satisfactory results.
                   1780: No attempt has been made to implement the character sets or fonts available
                   1781: on all devices supported by
                   1782: .BR troff .
                   1783: Missing characters are replaced by white space, and unrecognized
                   1784: fonts default to one of the Times fonts (e.g.,
                   1785: .MR R ,
                   1786: .MR I ,
                   1787: .MR B ,
                   1788: or
                   1789: .MR BI ).
                   1790: .SH FILES
                   1791: .MW \*(dF/devpost/*
                   1792: .br
                   1793: .MW \*(dF/devpost/charlib/*
                   1794: .br
                   1795: .MW \*(dQ/dpost.ps
                   1796: .br
                   1797: .MW \*(dQ/color.ps
                   1798: .br
                   1799: .MW \*(dQ/draw.ps
                   1800: .br
                   1801: .MW \*(dQ/forms.ps
                   1802: .br
                   1803: .MW \*(dQ/ps.requests
                   1804: .SH SEE ALSO
                   1805: .BR buildtables (1),
                   1806: .BR postio (1),
                   1807: .BR postprint (1),
                   1808: .BR postreverse (1),
                   1809: .BR psencoding (1),
                   1810: .BR troff (1),
                   1811: .BR font (5),
                   1812: .BR troff (5)
                   1813: 0707070014231030441006440057030057030000010300000522627500600002700000130466post.src/dpost/dpost.c/*
                   1814:  *
                   1815:  * dpost - troff post-processor for PostScript printers.
                   1816:  *
                   1817:  * A program that translates output generated by the device independent troff
                   1818:  * into PostScript. Much was borrowed from dimpress and dps (formally dlzw),
                   1819:  * and even though the code has changed, credit has to be given to Richard
                   1820:  * Flood for his early work on the PostScript driver.
                   1821:  *
                   1822:  * The big change is in the font table routines. The old binary format and
                   1823:  * makedev are gone. dpost and troff now read ASCII tables, and both skip
                   1824:  * unrecognized entries in the ASCII tables. That means problems, like where
                   1825:  * to put the real name of the PostScript font, have disappeared. The added
                   1826:  * flexibility means some overhead translating the ASCII tables, but the
                   1827:  * overhead isn't too bad.
                   1828:  *
                   1829:  * dpost can also now calculate a reasonably tight BoundingBox, which helps
                   1830:  * picture inclusion. The calculations, by default, are disabled. Couldn't
                   1831:  * justify the overhead for a comment, particularly one that's only needed
                   1832:  * occasionally. Use the -B option to get the comment.
                   1833:  *
                   1834:  * Output produced by dpost is still nonconforming. Definitions made in pages
                   1835:  * and exported to the job's global environment are the primary problem. It's
                   1836:  * an efficient approach, but means pages are not independent. Violations are
                   1837:  * bracketed by %%BeginGlobal and %%EndGlobal comments and can be pulled into
                   1838:  * the prologue by utility programs (like postreverse) that recognize the new
                   1839:  * comments.
                   1840:  *
                   1841:  * The program handles files formatted for any device, although the best and
                   1842:  * most efficient output is generated when the font and description files
                   1843:  * match PostScript's resident fonts. Emulation is relatively expensive, and
                   1844:  * can produce output files that are more than twice the size of the input
                   1845:  * files.
                   1846:  *
                   1847:  * Several different methods can be used to encode lines of text. What's done
                   1848:  * depends on the value assigned to encoding. Print time should decrease as
                   1849:  * encoding increases (up to MAXENCODING). Setting encoding to 3 (or higher)
                   1850:  * is not normally recommended. It's fast and produces very compact output,
                   1851:  * but rounding errors in troff's width tables can accumulate and lead to a
                   1852:  * ragged right margin. encoding can be changed on the command line using the
                   1853:  * -e option.
                   1854:  *
                   1855:  * PostScript fonts don't support all of troff's characters. Some are built
                   1856:  * by special PostScript procedures in directory *fontdir/devpost/charlib.
                   1857:  * The charlib approach is not meant to replace user defined fonts. It was
                   1858:  * a quick implementation designed to handle characters that aren't used
                   1859:  * often - charlib should not be overused! The charlib lookup is triggered
                   1860:  * when a character in a font table is assigned a code less than 32.
                   1861:  *
                   1862:  * Most defaults are set in the prologue, but can be changed by options. The
                   1863:  * -P option passes arbitrary PostScript into the setup section of the output
                   1864:  * file. It can be used to set (or change) values that can't be accessed by
                   1865:  * other options. For example,
                   1866:  *
                   1867:  *     dpost -P'/useclippath false def' file > file.ps
                   1868:  *
                   1869:  * defines useclippath to be false. Everything passed through using the -P
                   1870:  * (-C to copy a file) options become part of the job's global environment.
                   1871:  * Definitions override defaults in the prologue.
                   1872:  *
                   1873:  * dpost expects to find the following procedures in the prologue:
                   1874:  *
                   1875:  *     setup
                   1876:  *
                   1877:  *       mark ... setup -
                   1878:  *
                   1879:  *         Initialization procedure mainly responsible for setting up an
                   1880:  *         appropriate coordinate system.
                   1881:  *
                   1882:  *     pagesetup
                   1883:  *
                   1884:  *       page pagesetup -
                   1885:  *
                   1886:  *         Called at the start of each page, immediately after the page
                   1887:  *         level save. Argument is the current page number.
                   1888:  *
                   1889:  *     setdecoding
                   1890:  *
                   1891:  *       num setdecoding -
                   1892:  *
                   1893:  *         Select the decoding procedure used to print text strings encoded
                   1894:  *         by dpost. num is whatever has been assigned to encoding.
                   1895:  *
                   1896:  *     f
                   1897:  *
                   1898:  *       size font f -
                   1899:  *
                   1900:  *         Set the font and size used for character imaging. The font name
                   1901:  *         argument is (normally) the name troff used. Mapping to the real
                   1902:  *         PostScript font name is made using the fontname field in the
                   1903:  *         ASCII width tables.
                   1904:  *
                   1905:  *     m
                   1906:  *
                   1907:  *       x y m -
                   1908:  *
                   1909:  *         Move to point (x, y). Not used for positioning words in text
                   1910:  *         strings.
                   1911:  *
                   1912:  *     t
                   1913:  *
                   1914:  *       mark text t mark
                   1915:  *
                   1916:  *         Everything on the stack (up to the mark) is treated as a line
                   1917:  *         of text to be decoded and printed. What's on the stack depends
                   1918:  *         on encoding.
                   1919:  *
                   1920:  *     w
                   1921:  *
                   1922:  *       string x y w -
                   1923:  *
                   1924:  *         Print a single word starting at position (x, y). Only used in
                   1925:  *         the more complicated encoding schemes, like the ones based on
                   1926:  *         widthshow.
                   1927:  *
                   1928:  *     done
                   1929:  *
                   1930:  *         Make sure the last page prints. Always called, but only needed
                   1931:  *         when printing more than one page on each sheet of paper.
                   1932:  *
                   1933:  * output language from troff:
                   1934:  * all numbers are character strings
                   1935:  * 
                   1936:  * sn  size in points
                   1937:  * fn  font as number from 1-n
                   1938:  * cx  ascii character x
                   1939:  * Cxyz        funny char xyz. terminated by white space
                   1940:  * Hn  go to absolute horizontal position n
                   1941:  * Vn  go to absolute vertical position n (down is positive)
                   1942:  * hn  go n units horizontally (relative)
                   1943:  * vn  ditto vertically
                   1944:  * nnc move right nn, then print c (exactly 2 digits!)
                   1945:  *             (this wart is an optimization that shrinks output file size
                   1946:  *              about 35% and run-time about 15% while preserving ascii-ness)
                   1947:  * Dt ...\n    draw operation 't':
                   1948:  *     Dl x y          line from here by x,y
                   1949:  *     Dc d            circle of diameter d with left side here
                   1950:  *     De x y          ellipse of axes x,y with left side here
                   1951:  *     Da x1 y1 x2 y2  arc counter-clockwise from current point (x, y) to
                   1952:  *                     (x + x1 + x2, y + y1 + y2)
                   1953:  *     D~ x y x y ...  wiggly line by x,y then x,y ...
                   1954:  * nb a        end of line (information only -- no action needed)
                   1955:  *     b = space before line, a = after
                   1956:  * p   new page begins -- set v to 0
                   1957:  * #...\n      comment
                   1958:  * x ...\n     device control functions:
                   1959:  *     x i     init
                   1960:  *     x T s   name of device is s
                   1961:  *     x r n h v       resolution is n/inch
                   1962:  *             h = min horizontal motion, v = min vert
                   1963:  *     x p     pause (can restart)
                   1964:  *     x s     stop -- done forever
                   1965:  *     x t     generate trailer
                   1966:  *     x f n s font position n contains font s
                   1967:  *     x H n   set character height to n
                   1968:  *     x S n   set slant to N
                   1969:  * 
                   1970:  *     Subcommands like "i" are often spelled out like "init".
                   1971:  *
                   1972:  */
                   1973: 
                   1974: #include       <stdio.h>
                   1975: #include       <fcntl.h>
                   1976: #include       <signal.h>
                   1977: #include       <math.h>
                   1978: #include       <ctype.h>
                   1979: #include       <time.h>
                   1980: 
                   1981: #include       "comments.h"            /* structuring comments */
                   1982: #include       "gen.h"                 /* general purpose definitions */
                   1983: #include       "path.h"                /* prologue and a few other files */
                   1984: #include       "ext.h"                 /* external variable declarations */
                   1985: #include       "font.h"                /* font table definitions */
                   1986: #include       "dpost.h"               /* a few definitions just used here */
                   1987: #include       "motion.h"              /* positioning macros */
                   1988: 
                   1989: char   *prologue = DPOST;              /* the PostScript prologue */
                   1990: char   *colorfile = COLOR;             /* color support */
                   1991: char   *drawfile = DRAW;               /* drawing routines */
                   1992: char   *formfile = FORMFILE;           /* multiple pages on each sheet */
                   1993: char   *baselinefile = BASELINE;       /* for text along curved baseline */
                   1994: 
                   1995: char   *fontdir = FONTDIR;             /* font table directories */
                   1996: char   *hostfontdir = NULL;            /* host resident font directory */
                   1997: 
                   1998: char   *realdev = DEVNAME;             /* use these width tables */
                   1999: char   devname[20] = "";               /* job formatted for this device */
                   2000: Fontmap        fontmap[] = FONTMAP;            /* font translation table - emulation */
                   2001: char   *useencoding = NULL;            /* text font encoding - from -E option */
                   2002: 
                   2003: int    copies = 1;                     /* copies of each sheet */
                   2004: int    printed = 0;                    /* pages processed and printed */
                   2005: int    formsperpage = 1;               /* pages on each sheet of paper */
                   2006: int    picflag = ON;                   /* enable/disable picture inclusion */
                   2007: 
                   2008: int    encoding = DFLTENCODING;        /* how text is translated to PostScript */
                   2009: int    realencoding = DFLTENCODING;    /* where we started */
                   2010: int    maxencoding = MAXENCODING;      /* max that users can select */
                   2011: 
                   2012: int    landscape = FALSE;              /* for BoundingBox calculations only */
                   2013: double magnification = 1.0;
                   2014: double xoffset = 0.0;
                   2015: double yoffset = 0.0;
                   2016: 
                   2017: int    smnt;                           /* special fonts start here */
                   2018: int    devres;                         /* device resolution */
                   2019: int    unitwidth;                      /* and unitwidth - from DESC file */
                   2020: 
                   2021: char   downloaded[MAXCH+32+ALPHABET];  /* status of charlib characters */
                   2022: 
                   2023: int    nfonts = 0;                     /* number of font positions */
                   2024: int    size = 10;                      /* current point size */
                   2025: int    font = 0;                       /* and font position */
                   2026: int    hpos = 0;                       /* where troff wants to be */
                   2027: int    vpos = 0;
                   2028: float  lastw = 0;                      /* width of the last input character */
                   2029: int    lastc = 0;                      /* its name (or index) - for charlib() */
                   2030: 
                   2031: int    fontheight = 0;                 /* points from x H ... */
                   2032: int    fontslant = 0;                  /* angle from x S ... */
                   2033: 
                   2034: int    res;                            /* resolution assumed in input file */
                   2035: float  widthfac = 1.0;                 /* for emulation = res/devres */
                   2036: 
                   2037: int    lastsize = -1;                  /* for tracking printer's current size */
                   2038: int    lastfont = -1;                  /* current font */
                   2039: float  lastx = -1;                     /* and current position */
                   2040: int    lasty = -1;
                   2041: int    lastend;                        /* where last character on this line was */
                   2042: 
                   2043: int    seenpage = FALSE;               /* expect fonts are now all mounted */
                   2044: int    gotspecial = FALSE;             /* append special fonts - emulation */
                   2045: 
                   2046: float  pointslop = SLOP;               /* horizontal error in points */
                   2047: int    slop;                           /* and machine units */
                   2048: int    rvslop;                         /* to extend box in reverse video mode */
                   2049: 
                   2050: int    textcount = 0;                  /* strings accumulated so far */
                   2051: int    stringstart = 0;                /* where the next one starts */
                   2052: int    spacecount = 0;                 /* spaces in current string */
                   2053: 
                   2054: Line   line[MAXSTACK+3];               /* data about words accumulated so far */
                   2055: char   strings[STRINGSPACE];           /* strings temporarily saved here */
                   2056: char   *strptr;                        /* next free slot in strings[] */
                   2057: 
                   2058: FILE   *tf = NULL;                     /* most output goes here */
                   2059: FILE   *fp_acct = NULL;                /* accounting file */
                   2060: 
                   2061: char   *optnames = "a:c:e:m:n:o:p:tw:x:y:A:BC:E:J:F:H:L:OP:R:S:T:DI";
                   2062: 
                   2063: extern int     gotcolor;               /* read *colorfile when TRUE */
                   2064: extern Font    fonts[];                /* data about every font we see */
                   2065: extern Font    *mount[];               /* troff mounts fonts here */
                   2066: 
                   2067: /*****************************************************************************/
                   2068: 
                   2069: main(agc, agv)
                   2070: 
                   2071:     int                agc;
                   2072:     char       *agv[];
                   2073: 
                   2074: {
                   2075: 
                   2076: /*
                   2077:  *
                   2078:  * Translates output from troff into PostScript. Input files must be formatted
                   2079:  * for the same device. Each input file begins on a new page.
                   2080:  *
                   2081:  */
                   2082: 
                   2083:     argc = agc;                                /* global so everyone can use them */
                   2084:     argv = agv;
                   2085: 
                   2086:     prog_name = argv[0];               /* for error messages */
                   2087: 
                   2088:     init_signals();                    /* interrupt handling */
                   2089:     header();                          /* structuring comments */
                   2090:     options();                         /* command line options */
                   2091:     arguments();                       /* translate the input files */
                   2092:     done();                            /* add trailing comments etc. */
                   2093:     account();                         /* job accounting data */
                   2094: 
                   2095:     exit(x_stat);
                   2096: 
                   2097: }   /* End of main */
                   2098: 
                   2099: /*****************************************************************************/
                   2100: 
                   2101: init_signals()
                   2102: 
                   2103: {
                   2104: 
                   2105: /*
                   2106:  *
                   2107:  * Make sure we handle interrupts.
                   2108:  *
                   2109:  */
                   2110: 
                   2111:     if ( signal(SIGINT, interrupt) == SIG_IGN ) {
                   2112:        signal(SIGINT, SIG_IGN);
                   2113:        signal(SIGQUIT, SIG_IGN);
                   2114:        signal(SIGHUP, SIG_IGN);
                   2115:     } else {
                   2116:        signal(SIGHUP, interrupt);
                   2117:        signal(SIGQUIT, interrupt);
                   2118:     }   /* End else */
                   2119: 
                   2120:     signal(SIGTERM, interrupt);
                   2121: 
                   2122: }   /* End of init_signals */
                   2123: 
                   2124: /*****************************************************************************/
                   2125: 
                   2126: header()
                   2127: 
                   2128: {
                   2129: 
                   2130:     int                ch;
                   2131:     int                old_optind = optind;
                   2132: 
                   2133: /*
                   2134:  *
                   2135:  * Scan the option list for things needed now (e.g. prologue file), but could
                   2136:  * be changed from defaults. An attempt to follow to Adobe's 2.0 structuring
                   2137:  * conventions.
                   2138:  *
                   2139:  */
                   2140: 
                   2141:     while ( (ch = getopt(argc, argv, optnames)) != EOF )
                   2142:        if ( ch == 'L' )
                   2143:            setpaths(optarg);
                   2144:        else if ( ch == 'B' )
                   2145:            dobbox = TRUE;
                   2146:        else if ( ch == '?' )
                   2147:            error(FATAL, "");
                   2148: 
                   2149:     optind = old_optind;               /* restored for options() */
                   2150: 
                   2151:     fprintf(stdout, "%s", NONCONFORMING);
                   2152:     fprintf(stdout, "%s %s\n", VERSION, PROGRAMVERSION);
                   2153:     fprintf(stdout, "%s %s\n", DOCUMENTFONTS, ATEND);
                   2154:     fprintf(stdout, "%s %s\n", PAGES, ATEND);
                   2155:     if ( dobbox == TRUE )
                   2156:        fprintf(stdout, "%s %s\n", BOUNDINGBOX, ATEND);
                   2157:     fprintf(stdout, "%s", ENDCOMMENTS);
                   2158: 
                   2159:     if ( cat(prologue) == FALSE )
                   2160:        error(FATAL, "can't read %s", prologue);
                   2161: 
                   2162:     if ( DOROUND )
                   2163:        cat(ROUNDPAGE);
                   2164: 
                   2165:     fprintf(stdout, "%s", ENDPROLOG);
                   2166:     fprintf(stdout, "%s", BEGINSETUP);
                   2167:     fprintf(stdout, "mark\n");
                   2168: 
                   2169: }   /* End of header */
                   2170: 
                   2171: /*****************************************************************************/
                   2172: 
                   2173: options()
                   2174: 
                   2175: {
                   2176: 
                   2177:     int                ch;
                   2178: 
                   2179:     extern char        *optarg;
                   2180:     extern int optind;
                   2181: 
                   2182: /*
                   2183:  *
                   2184:  * Command line options - there are too many!
                   2185:  *
                   2186:  */
                   2187: 
                   2188:     while ( (ch = getopt(argc, argv, optnames)) != EOF ) {
                   2189:        switch ( ch ) {
                   2190:            case 'a':                   /* aspect ratio */
                   2191:                    fprintf(stdout, "/aspectratio %s def\n", optarg);
                   2192:                    break;
                   2193: 
                   2194:            case 'c':                   /* number of copies */
                   2195:                    copies = atoi(optarg);
                   2196:                    fprintf(stdout, "/#copies %s store\n", optarg);
                   2197:                    break;
                   2198: 
                   2199:            case 'e':                   /* select the encoding scheme */
                   2200:                    if ( (encoding = atoi(optarg)) < 0 || encoding > MAXENCODING )
                   2201:                        encoding = DFLTENCODING;
                   2202:                    realencoding = encoding;
                   2203:                    break;
                   2204: 
                   2205:            case 'm':                   /* magnification */
                   2206:                    magnification = atof(optarg);
                   2207:                    fprintf(stdout, "/magnification %s def\n", optarg);
                   2208:                    break;
                   2209: 
                   2210:            case 'n':                   /* forms per page */
                   2211:                    formsperpage = atoi(optarg);
                   2212:                    fprintf(stdout, "%s %s\n", FORMSPERPAGE, optarg);
                   2213:                    fprintf(stdout, "/formsperpage %s def\n", optarg);
                   2214:                    break;
                   2215: 
                   2216:            case 'o':                   /* output page list */
                   2217:                    out_list(optarg);
                   2218:                    break;
                   2219: 
                   2220:            case 'p':                   /* landscape or portrait mode */
                   2221:                    landscape = (*optarg == 'l') ? TRUE : FALSE;
                   2222:                    if ( landscape == TRUE )
                   2223:                        fprintf(stdout, "/landscape true def\n");
                   2224:                    else fprintf(stdout, "/landscape false def\n");
                   2225:                    break;
                   2226: 
                   2227:            case 't':                   /* compatibility */
                   2228:                    break;
                   2229: 
                   2230:            case 'w':                   /* line width - for drawing */
                   2231:                    fprintf(stdout, "/linewidth %s def\n", optarg);
                   2232:                    break;
                   2233: 
                   2234:            case 'x':                   /* shift horizontally */
                   2235:                    xoffset = atof(optarg);
                   2236:                    fprintf(stdout, "/xoffset %s def\n", optarg);
                   2237:                    break;
                   2238: 
                   2239:            case 'y':                   /* shift vertically */
                   2240:                    yoffset = atof(optarg);
                   2241:                    fprintf(stdout, "/yoffset %s def\n", optarg);
                   2242:                    break;
                   2243: 
                   2244:            case 'A':                   /* job accounting */
                   2245:            case 'J':
                   2246:                    if ( (fp_acct = fopen(optarg, "a")) == NULL )
                   2247:                        error(FATAL, "can't open accounting file %s", optarg);
                   2248:                    break;
                   2249: 
                   2250:            case 'B':                   /* enable BoundingBox calculations */
                   2251:                    dobbox = TRUE;
                   2252:                    fprintf(stdout, "/rotation 1 def\n");
                   2253:                    fprintf(stdout, "/gotpagebbox true def\n");
                   2254:                    break;
                   2255: 
                   2256:            case 'C':                   /* copy file to output */
                   2257:                    if ( cat(optarg) == FALSE )
                   2258:                        error(FATAL, "can't read %s", optarg);
                   2259:                    break;
                   2260: 
                   2261:            case 'E':                   /* text font encoding - override DESC */
                   2262:                    useencoding = optarg;
                   2263:                    break;
                   2264: 
                   2265:            case 'F':                   /* font table directory */
                   2266:                    fontdir = optarg;
                   2267:                    break;
                   2268: 
                   2269:            case 'H':                   /* host resident font directory */
                   2270:                    hostfontdir = optarg;
                   2271:                    break;
                   2272: 
                   2273:            case 'L':                   /* prologue file */
                   2274:                    setpaths(optarg);   /* already been done in header() */
                   2275:                    break;
                   2276: 
                   2277:            case 'O':                   /* disable picture inclusion */
                   2278:                    picflag = OFF;
                   2279:                    break;
                   2280: 
                   2281:            case 'P':                   /* copy string to output */
                   2282:                    fprintf(stdout, "%s\n", optarg);
                   2283:                    break;
                   2284: 
                   2285:            case 'R':                   /* global or page level request */
                   2286:                    saverequest(optarg);
                   2287:                    break;
                   2288: 
                   2289:            case 'S':                   /* horizontal position error */
                   2290:                    if ( (pointslop = atof(optarg)) < 0 )
                   2291:                        pointslop = 0;
                   2292:                    break;
                   2293: 
                   2294:            case 'T':                   /* target printer */
                   2295:                    realdev = optarg;
                   2296:                    break;
                   2297: 
                   2298:            case 'D':                   /* debug flag */
                   2299:                    debug = ON;
                   2300:                    tf = stdout;
                   2301:                    break;
                   2302: 
                   2303:            case 'I':                   /* ignore FATAL errors */
                   2304:                    ignore = ON;
                   2305:                    break;
                   2306: 
                   2307:            case '?':                   /* don't know the option */
                   2308:                    error(FATAL, "");
                   2309:                    break;
                   2310: 
                   2311:            default:
                   2312:                    error(FATAL, "missing case for option %c", ch);
                   2313:                    break;
                   2314:        }   /* End switch */
                   2315:     }  /* End while */
                   2316: 
                   2317:     argc -= optind;
                   2318:     argv += optind;
                   2319: 
                   2320: }   /* End of options */
                   2321: 
                   2322: /*****************************************************************************/
                   2323: 
                   2324: setpaths(name)
                   2325: 
                   2326:     char       *name;
                   2327: 
                   2328: {
                   2329: 
                   2330:     char       *path;
                   2331: 
                   2332: /*
                   2333:  *
                   2334:  * Extends the -L option to permit modification of more than just the prologue
                   2335:  * file pathname. Syntax is -Lpath or -Lname:path. For debugging and development
                   2336:  * only!
                   2337:  *
                   2338:  */
                   2339: 
                   2340:     for ( path = name; *path; path++ )
                   2341:        if ( *path == ':' || *path == ' ' ) {
                   2342:            while ( *path == ':' || *path == ' ' ) path++;
                   2343:            break;
                   2344:        }   /* End if */
                   2345: 
                   2346:     if ( *path == '\0' )               /* didn't find "name:" prefix */
                   2347:        path = name;
                   2348: 
                   2349:     if ( path == name || strncmp(name, "prologue", strlen("prologue")) == 0 )
                   2350:        prologue = path;
                   2351:     else if ( strncmp(name, "draw", strlen("draw")) == 0 )
                   2352:        drawfile = path;
                   2353:     else if ( strncmp(name, "color", strlen("color")) == 0 )
                   2354:        colorfile = path;
                   2355:     else if ( strncmp(name, "form", strlen("form")) == 0 )
                   2356:        formfile = path;
                   2357:     else if ( strncmp(name, "baseline", strlen("baseline")) == 0 )
                   2358:        baselinefile = path;
                   2359: 
                   2360: }   /* End of setpaths */
                   2361: 
                   2362: /*****************************************************************************/
                   2363: 
                   2364: setup()
                   2365: 
                   2366: {
                   2367: 
                   2368:     double     t;
                   2369: 
                   2370: /*
                   2371:  *
                   2372:  * Job and BoundingBox initialization. Called once from t_init() - must know
                   2373:  * the resolution before generating the PostScript call to setup. dpost only
                   2374:  * includes an encoding file if it's set in the DESC file or requested with
                   2375:  * the -E option.
                   2376:  *
                   2377:  */
                   2378: 
                   2379:     writerequest(0, stdout);           /* global requests e.g. manual feed */
                   2380:     fprintf(stdout, "/resolution %d def\n", res);
                   2381:     if ( useencoding != NULL || fontencoding != NULL )
                   2382:        setencoding((useencoding != NULL) ? useencoding : fontencoding);
                   2383:     fprintf(stdout, "setup\n");
                   2384:     fprintf(stdout, "%d setdecoding\n", realencoding);
                   2385: 
                   2386:     if ( formsperpage > 1 ) {          /* multiple pages */
                   2387:        if ( cat(formfile) == FALSE )
                   2388:            error(FATAL, "can't read %s", formfile);
                   2389:        fprintf(stdout, "%d setupforms\n", formsperpage);
                   2390:     }  /* End if */
                   2391: 
                   2392:     fprintf(stdout, "%s", ENDSETUP);
                   2393: 
                   2394:     if ( dobbox == TRUE ) {            /* ctm[] - must agree with prologue */
                   2395:        translate(pagewidth/2.0, pageheight/2.0);
                   2396:        if ( landscape == TRUE ) {
                   2397:            rotate(90.0);
                   2398:            t = pagewidth;
                   2399:            pagewidth = pageheight;
                   2400:            pageheight = t;
                   2401:        }   /* End if */
                   2402:        translate(-pagewidth/2.0, pageheight/2.0);
                   2403:        translate(72.0 * xoffset, -72.0 * yoffset);
                   2404:        scale(magnification, magnification);
                   2405:        scale(72.0/devres, 72.0/devres);
                   2406:     }  /* End if */
                   2407: 
                   2408: }   /* End of setup */
                   2409: 
                   2410: /*****************************************************************************/
                   2411: 
                   2412: arguments()
                   2413: 
                   2414: {
                   2415: 
                   2416:     FILE       *fp;
                   2417: 
                   2418: /*
                   2419:  *
                   2420:  * Everything else is an input file. No arguments or '-' means stdin.
                   2421:  *
                   2422:  */
                   2423: 
                   2424:     if ( argc < 1 )
                   2425:        conv(stdin);
                   2426:     else
                   2427:        while ( argc > 0 ) {
                   2428:            if ( strcmp(*argv, "-") == 0 )
                   2429:                fp = stdin;
                   2430:            else if ( (fp = fopen(*argv, "r")) == NULL )
                   2431:                error(FATAL, "can't open %s", *argv);
                   2432:            conv(fp);
                   2433:            if ( fp != stdin )
                   2434:                fclose(fp);
                   2435:            argc--;
                   2436:            argv++;
                   2437:        }   /* End while */
                   2438: 
                   2439: }   /* End of arguments */
                   2440: 
                   2441: /*****************************************************************************/
                   2442: 
                   2443: done()
                   2444: 
                   2445: {
                   2446: 
                   2447:     int                i;
                   2448:     int                n;
                   2449: 
                   2450: /*
                   2451:  *
                   2452:  * Force out the last page and add trailing comments.
                   2453:  *
                   2454:  */
                   2455: 
                   2456:     fprintf(stdout, "%s", TRAILER);
                   2457:     fprintf(stdout, "done\n");
                   2458:     fprintf(stdout, "%s %d\n", PAGES, printed);
                   2459: 
                   2460:     for ( i = 0, n = 0; i < MAXFONTS+1; i++ )
                   2461:        if ( (fonts[i].flags & USED) && fonts[i].fontname != NULL ) {
                   2462:            if ( n++ == 0 )
                   2463:                fprintf(stdout, "%s", DOCUMENTFONTS);
                   2464:            else if ( (n - 1) % 8 == 0 )
                   2465:                fprintf(stdout, "\n%s", CONTINUECOMMENT);
                   2466:            fprintf(stdout, " %s", fonts[i].fontname);
                   2467:        }   /* End if */
                   2468:     if ( n > 0 )
                   2469:        putc('\n', stdout);
                   2470: 
                   2471:     if ( dobbox == TRUE )
                   2472:        writebbox(stdout, BOUNDINGBOX, 10);
                   2473: 
                   2474: }   /* End of done */
                   2475: 
                   2476: /*****************************************************************************/
                   2477: 
                   2478: account()
                   2479: 
                   2480: {
                   2481: 
                   2482: /*
                   2483:  *
                   2484:  * Accounting record to fp_acct - provided it's not NULL.
                   2485:  *
                   2486:  */
                   2487: 
                   2488:     if ( fp_acct != NULL )
                   2489:        fprintf(fp_acct, " print %d\n copies %d\n", printed, copies);
                   2490: 
                   2491: }   /* End of account */
                   2492: 
                   2493: /*****************************************************************************/
                   2494: 
                   2495: conv(fp)
                   2496: 
                   2497:     register FILE      *fp;
                   2498: 
                   2499: {
                   2500: 
                   2501:     register int       c;
                   2502:     int                        m, n, n1, m1;
                   2503:     char               str[50];
                   2504: 
                   2505: /*
                   2506:  *
                   2507:  * Read troff output from file fp and translate it into PostScript. The final
                   2508:  * t_page() call means input files start on a new page.
                   2509:  *
                   2510:  */
                   2511: 
                   2512:     redirect(-1);                      /* do output only after a page command */
                   2513:     lineno = 1;
                   2514: 
                   2515:     while ((c = getc(fp)) != EOF) {
                   2516:        switch (c) {
                   2517:            case '\n':                  /* just count this line */
                   2518:                    lineno++;
                   2519:                    break;
                   2520: 
                   2521:            case ' ':                   /* when input is text */
                   2522:            case 0:                     /* occasional noise creeps in */
                   2523:                    break;
                   2524: 
                   2525:            case '0': case '1': case '2': case '3': case '4':
                   2526:            case '5': case '6': case '7': case '8': case '9':
                   2527:                    /* two motion digits plus a character */
                   2528:                    hmot((c-'0')*10 + getc(fp)-'0');
                   2529:                    put1(getc(fp));
                   2530:                    break;
                   2531: 
                   2532:            case 'c':                   /* single ascii character */
                   2533:                    put1(getc(fp));
                   2534:                    break;
                   2535: 
                   2536:            case 'C':                   /* special character */
                   2537:                    fscanf(fp, "%s", str);
                   2538:                    put1(chindex(str));
                   2539:                    break;
                   2540: 
                   2541:            case 'N':                   /* character at position n */
                   2542:                    fscanf(fp, "%d", &m);
                   2543:                    flushtext();
                   2544:                    oput(m);
                   2545:                    break;
                   2546: 
                   2547:            case 'D':                   /* drawing functions */
                   2548:                    flushtext();
                   2549:                    getdraw();
                   2550:                    if ( size != lastsize )
                   2551:                        t_sf();
                   2552:                    switch ((c=getc(fp))) {
                   2553:                        case 'p':       /* draw a path */
                   2554:                            while (fscanf(fp, "%d %d", &n, &m) == 2)
                   2555:                                drawline(n, m);
                   2556:                            lineno++;
                   2557:                            break;
                   2558: 
                   2559:                        case 'l':       /* draw a line */
                   2560:                            fscanf(fp, "%d %d %c", &n, &m, &n1);
                   2561:                            drawline(n, m);
                   2562:                            break;
                   2563: 
                   2564:                        case 'c':       /* circle */
                   2565:                            fscanf(fp, "%d", &n);
                   2566:                            drawcirc(n);
                   2567:                            break;
                   2568: 
                   2569:                        case 'e':       /* ellipse */
                   2570:                            fscanf(fp, "%d %d", &m, &n);
                   2571:                            drawellip(m, n);
                   2572:                            break;
                   2573: 
                   2574:                        case 'a':       /* counter-clockwise arc */
                   2575:                        case 'A':       /* clockwise arc */
                   2576:                            fscanf(fp, "%d %d %d %d", &n, &m, &n1, &m1);
                   2577:                            drawarc(n, m, n1, m1, c);
                   2578:                            break;
                   2579: 
                   2580:                        case 'q':       /* spline without end points */
                   2581:                            drawspline(fp, 1);
                   2582:                            lineno++;
                   2583:                            break;
                   2584: 
                   2585:                        case '~':       /* wiggly line */
                   2586:                            drawspline(fp, 2);
                   2587:                            lineno++;
                   2588:                            break;
                   2589: 
                   2590:                        default:
                   2591:                            error(FATAL, "unknown drawing function %c", c);
                   2592:                            break;
                   2593:                    }   /* End switch */
                   2594:                    break;
                   2595: 
                   2596:            case 's':                   /* use this point size */
                   2597:                    fscanf(fp, "%d", &size);    /* ignore fractional sizes */
                   2598:                    break;
                   2599: 
                   2600:            case 'f':                   /* use font mounted here */
                   2601:                    fscanf(fp, "%s", str);
                   2602:                    setfont(t_font(str));
                   2603:                    break;
                   2604: 
                   2605:            case 'H':                   /* absolute horizontal motion */
                   2606:                    fscanf(fp, "%d", &n);
                   2607:                    hgoto(n);
                   2608:                    break;
                   2609: 
                   2610:            case 'h':                   /* relative horizontal motion */
                   2611:                    fscanf(fp, "%d", &n);
                   2612:                    hmot(n);
                   2613:                    break;
                   2614: 
                   2615:            case 'w':                   /* word space */
                   2616:                    break;
                   2617: 
                   2618:            case 'V':                   /* absolute vertical position */
                   2619:                    fscanf(fp, "%d", &n);
                   2620:                    vgoto(n);
                   2621:                    break;
                   2622: 
                   2623:            case 'v':                   /* relative vertical motion */
                   2624:                    fscanf(fp, "%d", &n);
                   2625:                    vmot(n);
                   2626:                    break;
                   2627: 
                   2628:            case 'p':                   /* new page */
                   2629:                    fscanf(fp, "%d", &n);
                   2630:                    t_page(n);
                   2631:                    break;
                   2632: 
                   2633:            case 'n':                   /* end of line */
                   2634:                    while ( (c = getc(fp)) != '\n' && c != EOF ) ;
                   2635:                    hgoto(0);
                   2636:                    lineno++;
                   2637:                    break;
                   2638: 
                   2639:            case '#':                   /* comment */
                   2640:                    while ( (c = getc(fp)) != '\n' && c != EOF ) ;
                   2641:                    lineno++;
                   2642:                    break;
                   2643: 
                   2644:            case 'x':                   /* device control function */
                   2645:                    devcntrl(fp);
                   2646:                    lineno++;
                   2647:                    break;
                   2648: 
                   2649:            default:
                   2650:                    error(FATAL, "unknown input character %o %c", c, c);
                   2651:                    done();
                   2652:        }   /* End switch */
                   2653:     }  /* End while */
                   2654: 
                   2655:     t_page(-1);                                /* print the last page */
                   2656:     flushtext();
                   2657: 
                   2658: }   /* End of conv */
                   2659: 
                   2660: /*****************************************************************************/
                   2661: 
                   2662: devcntrl(fp)
                   2663: 
                   2664:     FILE       *fp;
                   2665: 
                   2666: {
                   2667: 
                   2668:     char       str[50], buf[256], str1[100];
                   2669:     int                c, n;
                   2670: 
                   2671: /*
                   2672:  *
                   2673:  * Interpret device control commands, ignoring any we don't recognize. The
                   2674:  * "x X ..." commands are a device dependent collection generated by troff's
                   2675:  * \X'...' request.
                   2676:  *
                   2677:  */
                   2678: 
                   2679:     fscanf(fp, "%s", str);
                   2680: 
                   2681:     switch ( str[0] ) {
                   2682:        case 'f':                       /* load font in a position */
                   2683:                fscanf(fp, "%d %s", &n, str);
                   2684:                fgets(buf, sizeof buf, fp);     /* in case there's a filename */
                   2685:                ungetc('\n', fp);       /* fgets() goes too far */
                   2686:                str1[0] = '\0';         /* in case there's nothing to come in */
                   2687:                sscanf(buf, "%s", str1);
                   2688:                loadfont(n, str, str1);
                   2689:                break;
                   2690: 
                   2691:        case 'i':                       /* initialize */
                   2692:                t_init();
                   2693:                break;
                   2694: 
                   2695:        case 'p':                       /* pause */
                   2696:                break;
                   2697: 
                   2698:        case 'r':                       /* resolution assumed when prepared */
                   2699:                fscanf(fp, "%d", &res);
                   2700:                break;
                   2701: 
                   2702:        case 's':                       /* stop */
                   2703:        case 't':                       /* trailer */
                   2704:                flushtext();
                   2705:                break;
                   2706: 
                   2707:        case 'H':                       /* char height */
                   2708:                fscanf(fp, "%d", &n);
                   2709:                t_charht(n);
                   2710:                break;
                   2711: 
                   2712:        case 'S':                       /* slant */
                   2713:                fscanf(fp, "%d", &n);
                   2714:                t_slant(n);
                   2715:                break;
                   2716: 
                   2717:        case 'T':                       /* device name */
                   2718:                fscanf(fp, "%s", devname);
                   2719:                break;
                   2720: 
                   2721:        case 'X':                       /* copy through - from troff */
                   2722:                fscanf(fp, " %[^: \n]:", str);
                   2723:                fgets(buf, sizeof(buf), fp);
                   2724:                ungetc('\n', fp);
                   2725:                if ( strcmp(str, "PI") == 0 || strcmp(str, "PictureInclusion") == 0 )
                   2726:                    picture(buf);
                   2727:                else if ( strcmp(str, "InlinePicture") == 0 )
                   2728:                    inlinepic(fp, buf);
                   2729:                else if ( strcmp(str, "BeginPath") == 0 )
                   2730:                    beginpath(buf, FALSE);
                   2731:                else if ( strcmp(str, "DrawPath") == 0 )
                   2732:                    drawpath(buf, FALSE);
                   2733:                else if ( strcmp(str, "BeginObject") == 0 )
                   2734:                    beginpath(buf, TRUE);
                   2735:                else if ( strcmp(str, "EndObject") == 0 )
                   2736:                    drawpath(buf, TRUE);
                   2737:                else if ( strcmp(str, "NewBaseline") == 0 )
                   2738:                    newbaseline(buf);
                   2739:                else if ( strcmp(str, "DrawText") == 0 )
                   2740:                    drawtext(buf);
                   2741:                else if ( strcmp(str, "SetText") == 0 )
                   2742:                    settext(buf);
                   2743:                else if ( strcmp(str, "SetColor") == 0 ) {
                   2744:                    newcolor(buf);
                   2745:                    setcolor();
                   2746:                } else if ( strcmp(str, "INFO") == 0 ) {
                   2747:                    flushtext();
                   2748:                    fprintf(tf, "%%INFO%s", buf);
                   2749:                } else if ( strcmp(str, "PS") == 0 || strcmp(str, "PostScript") == 0 ) {
                   2750:                    flushtext();
                   2751:                    fprintf(tf, "%s", buf);
                   2752:                } else if ( strcmp(str, "ExportPS") == 0 ) {    /* dangerous!! */
                   2753:                    if ( tf == stdout ) {
                   2754:                        restore();
                   2755:                        fprintf(tf, "%s", buf);
                   2756:                        save();
                   2757:                    }   /* End if */
                   2758:                }   /* End else */
                   2759:                break;
                   2760:     }  /* End switch */
                   2761: 
                   2762:     while ( (c = getc(fp)) != '\n' && c != EOF ) ;
                   2763: 
                   2764: }   /* End of devcntrl */
                   2765: 
                   2766: /*****************************************************************************/
                   2767: 
                   2768: loadfont(m, f, name)
                   2769: 
                   2770:     int                m;
                   2771:     char       *f;
                   2772:     char       *name;
                   2773: 
                   2774: {
                   2775: 
                   2776:     char       path[150];
                   2777: 
                   2778: /*
                   2779:  *
                   2780:  * Load position m with font f. Font file pathname is *fontdir/dev*realdev/*f
                   2781:  * or name, if name isn't empty. Use mapfont() to replace the missing font
                   2782:  * if we're emulating another device, name is empty, and the first mount
                   2783:  * fails.
                   2784:  *
                   2785:  */
                   2786: 
                   2787:     if ( name[0] == '\0' )
                   2788:        sprintf(path, "%s/dev%s/%s", fontdir, realdev, f);
                   2789:     else sprintf(path, "%s", name);
                   2790: 
                   2791:     if ( mountfont(path, m) == -1 ) {
                   2792:        if ( name[0] == '\0' ) {
                   2793:            sprintf(path, "%s/dev%s/%s", fontdir, realdev, mapfont(f));
                   2794:            if ( mountfont(path, m) == -1 ) {
                   2795:                sprintf(path, "%s/dev%s/%s", fontdir, realdev, f);
                   2796:                error(FATAL, "can't load %s at %d", path, m);
                   2797:            }   /* End if */
                   2798:        } else error(FATAL, "can't load %s at %d", path, m);
                   2799:     }  /* End if */
                   2800: 
                   2801:     if ( smnt == 0 && mount[m]->specfont )
                   2802:        smnt = m;
                   2803: 
                   2804:     if ( m == lastfont )               /* force a call to t_sf() */
                   2805:        lastfont = -1;
                   2806: 
                   2807:     if ( m > nfonts ) {                        /* got more positions */
                   2808:        nfonts = m;
                   2809:        gotspecial = FALSE;
                   2810:     }  /* End if */
                   2811: 
                   2812: }   /* End of loadfont */
                   2813: 
                   2814: /*****************************************************************************/
                   2815: 
                   2816: char *mapfont(name)
                   2817: 
                   2818:     char       *name;
                   2819: 
                   2820: {
                   2821: 
                   2822:     int                i;
                   2823: 
                   2824: /*
                   2825:  *
                   2826:  * Map a missing font name into one that should be available. Only used when
                   2827:  * we're emulating another device and the first mount fails. Consider deleting
                   2828:  * this routine.
                   2829:  *
                   2830:  */
                   2831: 
                   2832:     for ( i = 0; fontmap[i].name != NULL; i++ )
                   2833:        if ( strcmp(name, fontmap[i].name) == 0 )
                   2834:            return(fontmap[i].use);
                   2835: 
                   2836:     switch ( *++name ) {
                   2837:        case 'I': return("I");
                   2838:        case 'B': return("B");
                   2839:        case 'X': return("BI");
                   2840:        default:  return("R");
                   2841:     }  /* End switch */
                   2842: 
                   2843: }   /* End of mapfont */
                   2844: 
                   2845: /*****************************************************************************/
                   2846: 
                   2847: loadspecial()
                   2848: 
                   2849: {
                   2850: 
                   2851: /*
                   2852:  *
                   2853:  * Fix - later.
                   2854:  *
                   2855:  */
                   2856: 
                   2857:     gotspecial = TRUE;
                   2858: 
                   2859: }   /* End of loadspecial */
                   2860: 
                   2861: /*****************************************************************************/
                   2862: 
                   2863: t_init()
                   2864: 
                   2865: {
                   2866: 
                   2867:     char       path[150];
                   2868:     static int initialized = FALSE;
                   2869: 
                   2870: /*
                   2871:  *
                   2872:  * Finish initialization - just read an "x init" command. Assumes we already
                   2873:  * know the input file resolution.
                   2874:  *
                   2875:  */
                   2876: 
                   2877:     flushtext();                       /* moved - for cat'ed troff files */
                   2878: 
                   2879:     if ( initialized == FALSE ) {
                   2880:        if ( strcmp(devname, realdev) ) {
                   2881:            sprintf(path, "%s/dev%s/DESC", fontdir, devname);
                   2882:            if ( checkdesc(path) )
                   2883:                realdev = devname;
                   2884:        }   /* End if */
                   2885: 
                   2886:        sprintf(path, "%s/dev%s/DESC", fontdir, realdev);
                   2887:        if ( getdesc(path) == -1 )
                   2888:            error(FATAL, "can't open %s", path);
                   2889:        nfonts = 0;
                   2890:        gotspecial = FALSE;
                   2891:        widthfac = (float) res /devres;
                   2892:        slop = pointslop * res / POINTS + .5;
                   2893:        rvslop = res * .025;
                   2894:        setup();
                   2895:        initialized = TRUE;
                   2896:     }  /* End if */
                   2897: 
                   2898:     hpos = vpos = 0;
                   2899:     size = 10;
                   2900:     reset();
                   2901: 
                   2902: }   /* End of t_init */
                   2903: 
                   2904: /*****************************************************************************/
                   2905: 
                   2906: t_page(pg)
                   2907: 
                   2908:     int                pg;
                   2909: 
                   2910: {
                   2911: 
                   2912:     static int lastpg = 0;
                   2913: 
                   2914: /*
                   2915:  *
                   2916:  * Finish the previous page and get ready for the next one. End page output
                   2917:  * goes to /dev/null at the start of each input file. Start page output goes
                   2918:  * to /dev/null at the end of each input file.
                   2919:  *
                   2920:  * Consider doing showpage after page level restore (as Adobe recommends). If
                   2921:  * the order is changed use restore() and save(). forms.ps will likely also
                   2922:  * need fixing.
                   2923:  *
                   2924:  */
                   2925: 
                   2926:     if ( tf == stdout )
                   2927:        printed++;
                   2928: 
                   2929:     flushtext();                       /* just in case */
                   2930: 
                   2931:     fprintf(tf, "cleartomark\n");
                   2932:     fprintf(tf, "showpage\n");
                   2933:     fprintf(tf, "saveobj restore\n");
                   2934:     if ( dobbox == TRUE )
                   2935:        writebbox(tf, PAGEBOUNDINGBOX, 10);
                   2936:     fprintf(tf, "%s %d %d\n", ENDPAGE, lastpg, printed);
                   2937: 
                   2938:     redirect(pg);
                   2939: 
                   2940:     fprintf(tf, "%s %d %d\n", PAGE, pg, printed+1);
                   2941:     if ( dobbox == TRUE )
                   2942:        fprintf(tf, "%s %s\n", PAGEBOUNDINGBOX, ATEND);
                   2943:     fprintf(tf, "/saveobj save def\n");
                   2944:     fprintf(tf, "mark\n");
                   2945:     writerequest(printed+1, tf);
                   2946:     fprintf(tf, "%d pagesetup\n", printed+1);
                   2947: 
                   2948:     if ( encoding != realencoding )
                   2949:        fprintf(tf, "%d setdecoding\n", encoding);
                   2950: 
                   2951:     if ( gotcolor == TRUE )
                   2952:        setcolor();
                   2953: 
                   2954:     lastpg = pg;                       /* for the next ENDPAGE comment */
                   2955:     hpos = vpos = 0;                   /* get ready for the next page */
                   2956:     reset();                           /* force position and font stuff - later */
                   2957: 
                   2958:     seenpage = TRUE;
                   2959: 
                   2960: }   /* End of t_page */
                   2961: 
                   2962: /*****************************************************************************/
                   2963: 
                   2964: t_font(s)
                   2965: 
                   2966:     char       *s;
                   2967: 
                   2968: {
                   2969: 
                   2970:     int                n;
                   2971: 
                   2972: /*
                   2973:  *
                   2974:  * Converts the string *s into an integer and checks to make sure it's a legal
                   2975:  * font position. Also arranges to mount all the special fonts after the last
                   2976:  * legitimate font (by calling loadspecial()), provided it hasn't already been
                   2977:  * done.
                   2978:  *
                   2979:  */
                   2980: 
                   2981:     n = atoi(s);
                   2982: 
                   2983:     if ( seenpage == TRUE ) {
                   2984:        if ( n < 0 || n > nfonts )
                   2985:            error(FATAL, "illegal font position %d", n);
                   2986: 
                   2987:        if ( gotspecial == FALSE )
                   2988:            loadspecial();
                   2989:     }  /* End if */
                   2990: 
                   2991:     return(n);
                   2992: 
                   2993: }   /* End of t_font */
                   2994: 
                   2995: /*****************************************************************************/
                   2996: 
                   2997: setfont(m)
                   2998: 
                   2999:     int                m;
                   3000: 
                   3001: {
                   3002: 
                   3003: /*
                   3004:  *
                   3005:  * Use the font mounted at position m. Bounds checks are probably unnecessary.
                   3006:  * Changing the font and size used by the printer is handled in t_sf().
                   3007:  *
                   3008:  */
                   3009: 
                   3010:     if ( m < 0 || m > MAXFONTS )
                   3011:        error(FATAL, "illegal font %d", m);
                   3012:     font = m;
                   3013: 
                   3014: }   /* End of setfont */
                   3015: 
                   3016: /*****************************************************************************/
                   3017: 
                   3018: t_sf()
                   3019: 
                   3020: {
                   3021: 
                   3022:     Font       *fpos;
                   3023:     char       temp[150];
                   3024: 
                   3025: /*
                   3026:  *
                   3027:  * Force a new font or size. Generates name definitions for fonts that haven't
                   3028:  * been named, grabs host resident font files and keeps track of the fonts used
                   3029:  * by this job. When necessary also adjusts the font's height and slant. Should
                   3030:  * only be called immediately before printing a character.
                   3031:  *
                   3032:  */
                   3033: 
                   3034:     if ( tf == stdout && mounted(font) ) {
                   3035:        flushtext();
                   3036: 
                   3037:        fpos = mount[font];
                   3038:        if ( (fpos->flags & USED) == 0 ) {
                   3039:            if ( (fpos->flags & NAMED) == 0 && fpos->fontname != NULL ) {
                   3040:                sprintf(temp, "/%s /%s def\n", fpos->name, fpos->fontname);
                   3041:                exportstring(temp);
                   3042:                fpos->flags |= NAMED;           /* unnecessary */
                   3043:            }   /* End if */
                   3044: 
                   3045:            if ( hostfontdir != NULL ) {
                   3046:                sprintf(temp, "%s/%s", hostfontdir, fpos->name);
                   3047:                exportfile(temp);
                   3048:            }   /* End if */
                   3049:        }   /* End if */
                   3050: 
                   3051:        fprintf(tf, "%d %s f\n", size, fpos->name);
                   3052:        if ( fontheight != 0 || fontslant != 0 )
                   3053:            fprintf(tf, "%d %d changefont\n", fontslant, (fontheight != 0) ? fontheight : size);
                   3054: 
                   3055:        lastfont = font;
                   3056:        lastsize = size;
                   3057:        fpos->flags |= USED;
                   3058:     }  /* End if */
                   3059: 
                   3060: }   /* End of t_sf */
                   3061: 
                   3062: /*****************************************************************************/
                   3063: 
                   3064: t_charht(n)
                   3065: 
                   3066:     int                n;
                   3067: 
                   3068: {
                   3069: 
                   3070: /*
                   3071:  *
                   3072:  * Set character height to n points. Disabled if n is 0 or the current size.
                   3073:  *
                   3074:  */
                   3075: 
                   3076:     fontheight = (n == size) ? 0 : n;
                   3077:     lastfont = -1;
                   3078: 
                   3079: }   /* End of t_charht */
                   3080: 
                   3081: /*****************************************************************************/
                   3082: 
                   3083: t_slant(n)
                   3084: 
                   3085:     int                n;
                   3086: 
                   3087: {
                   3088: 
                   3089: /*
                   3090:  *
                   3091:  * Set slant to n degrees. Disable slanting if n is 0.
                   3092:  *
                   3093:  */
                   3094: 
                   3095:     fontslant = n;
                   3096:     lastfont = -1;
                   3097: 
                   3098: }   /* End of t_slant */
                   3099: 
                   3100: /*****************************************************************************/
                   3101: 
                   3102: xymove(x, y)
                   3103: 
                   3104:     int                x, y;
                   3105: 
                   3106: {
                   3107: 
                   3108: /*
                   3109:  *
                   3110:  * Make the the printer and post-processor agree about the current position.
                   3111:  *
                   3112:  */
                   3113: 
                   3114:     flushtext();
                   3115: 
                   3116:     hgoto(x);
                   3117:     vgoto(y);
                   3118: 
                   3119:     fprintf(tf, "%d %d m\n", hpos, vpos);
                   3120: 
                   3121:     lastx = hpos;
                   3122:     lasty = vpos;
                   3123: 
                   3124: }   /* End of xymove */
                   3125: 
                   3126: /*****************************************************************************/
                   3127: 
                   3128: put1(c)
                   3129: 
                   3130:     register int       c;
                   3131: 
                   3132: {
                   3133: 
                   3134:     register int       i;
                   3135:     register int       j;
                   3136:     register int       k;
                   3137:     int                        code;
                   3138:     int                        ofont;
                   3139: 
                   3140: /*
                   3141:  *
                   3142:  * Print character c. ASCII if c < ALPHABET, otherwise it's special. Look for
                   3143:  * c in the current font, then in others starting at the first special font.
                   3144:  * Save c in lastc so it's available when oput() runs. Restore original font
                   3145:  * before leaving.
                   3146:  *
                   3147:  */
                   3148: 
                   3149:     lastc = c;                         /* charlib() needs name not code */
                   3150:     if ( (c -= 32) <= 0 )
                   3151:        return;
                   3152: 
                   3153:     k = ofont = font;
                   3154: 
                   3155:     if ( (i = onfont(lastc, k)) == -1 && smnt > 0 )
                   3156:        for ( k = smnt, j = 0; j < nfonts; j++, k = k % nfonts + 1 ) {
                   3157:            if ( (i = onfont(lastc, k)) != -1 ) {
                   3158:                setfont(k);
                   3159:                break;
                   3160:            }   /* End if */
                   3161:        }   /* End for */
                   3162: 
                   3163:     if ( i != -1 && (code = mount[k]->wp[i].code) != 0 ) {
                   3164:        lastw = widthfac * (((int)mount[k]->wp[i].wid * size + unitwidth/2) / unitwidth);
                   3165:        oput(code);
                   3166:     }  /* End if */
                   3167: 
                   3168:     if ( font != ofont )
                   3169:        setfont(ofont);
                   3170: 
                   3171: }   /* End of put1 */
                   3172: 
                   3173: /*****************************************************************************/
                   3174: 
                   3175: oput(c)
                   3176: 
                   3177:     int                c;
                   3178: 
                   3179: {
                   3180: 
                   3181:     double     llx, lly, urx, ury;     /* boundingbox corners */
                   3182: 
                   3183: /*
                   3184:  *
                   3185:  * Arranges to print the character whose code is c in the current font. All the
                   3186:  * actual positioning is done here, in charlib(), or in the drawing routines.
                   3187:  *
                   3188:  */
                   3189: 
                   3190:     if ( textcount > MAXSTACK )                /* don't put too much on the stack? */
                   3191:        flushtext();
                   3192: 
                   3193:     if ( font != lastfont || size != lastsize )
                   3194:        t_sf();
                   3195: 
                   3196:     if ( vpos != lasty )
                   3197:        endline();
                   3198: 
                   3199:     starttext();
                   3200: 
                   3201:     if ( ABS(hpos - lastx) > slop )
                   3202:        endstring();
                   3203: 
                   3204:     if ( isascii(c) && isprint(c) )
                   3205:        switch ( c ) {
                   3206:            case '(':
                   3207:            case ')':
                   3208:            case '\\':
                   3209:                    addchar('\\');
                   3210: 
                   3211:            default:
                   3212:                    addchar(c);
                   3213:        }   /* End switch */
                   3214:     else if ( c > 040 )
                   3215:        addoctal(c);
                   3216:     else charlib(c);
                   3217: 
                   3218:     if ( dobbox == TRUE ) {
                   3219:        llx = lastx;
                   3220:        lly = -(vpos + 0.5 * (devres * size / 72.0));
                   3221:        urx = lastx + lastw;
                   3222:        ury = -(vpos - (devres * size / 72.0));
                   3223:        cover(llx, lly);
                   3224:        cover(urx, ury);
                   3225:     }  /* End if */
                   3226: 
                   3227:     lastx += lastw;
                   3228: 
                   3229: }   /* End of oput */
                   3230: 
                   3231: /*****************************************************************************/
                   3232: 
                   3233: starttext()
                   3234: 
                   3235: {
                   3236: 
                   3237: /*
                   3238:  * Called whenever we want to be sure we're ready to start collecting characters
                   3239:  * for the next call to PostScript procedure t (ie. the one that prints them). If
                   3240:  * textcount is positive we've already started, so there's nothing to do. The more
                   3241:  * complicated encoding schemes save text strings in the strings[] array and need
                   3242:  * detailed information about the strings when they're written to the output file
                   3243:  * in flushtext().
                   3244:  *
                   3245:  */
                   3246: 
                   3247:     if ( textcount < 1 ) {
                   3248:        switch ( encoding ) {
                   3249:            case 0:
                   3250:            case 1:
                   3251:                putc('(', tf);
                   3252:                break;
                   3253: 
                   3254:            case 2:
                   3255:            case 3:
                   3256:                strptr = strings;
                   3257:                spacecount = 0;
                   3258:                line[1].str = strptr;
                   3259:                line[1].dx = 0;
                   3260:                line[1].spaces = 0;
                   3261:                line[1].start = hpos;
                   3262:                line[1].width = 0;
                   3263:                break;
                   3264: 
                   3265:            case MAXENCODING+1:                 /* reverse video */
                   3266:                if ( lastend == -1 )
                   3267:                    lastend = hpos;
                   3268:                putc('(', tf);
                   3269:                break;
                   3270: 
                   3271:            case MAXENCODING+2:                 /* follow a funny baseline */
                   3272:                putc('(', tf);
                   3273:                break;
                   3274:        }   /* End switch */
                   3275: 
                   3276:        textcount = 1;
                   3277:        lastx = stringstart = hpos;
                   3278:     }  /* End if */
                   3279: 
                   3280: }   /* End of starttext */
                   3281: 
                   3282: /*****************************************************************************/
                   3283: 
                   3284: flushtext()
                   3285: 
                   3286: {
                   3287: 
                   3288:     int                i;
                   3289: 
                   3290: /*
                   3291:  *
                   3292:  * Generates a call to the PostScript procedure that processes all the text we've
                   3293:  * accumulated - provided textcount is positive.
                   3294:  *
                   3295:  */
                   3296: 
                   3297:     if ( textcount > 0 ) {
                   3298:        switch ( encoding ) {
                   3299:            case 0:
                   3300:                fprintf(tf, ")%d t\n", stringstart);
                   3301:                break;
                   3302: 
                   3303:            case 1:
                   3304:                fprintf(tf, ")%d %d t\n", stringstart, lasty);
                   3305:                break;
                   3306: 
                   3307:            case 2:
                   3308:                *strptr = '\0';
                   3309:                line[textcount].width = lastx - line[textcount].start;
                   3310:                if ( spacecount != 0 || textcount != 1 ) {
                   3311:                    for ( i = textcount; i > 0; i-- )
                   3312:                        fprintf(tf, "(%s)%d %d", line[i].str, line[i].spaces, line[i].width);
                   3313:                    fprintf(tf, " %d %d %d t\n", textcount, stringstart, lasty);
                   3314:                } else fprintf(tf, "(%s)%d %d w\n", line[1].str, stringstart, lasty);
                   3315:                break;
                   3316: 
                   3317:            case 3:
                   3318:                *strptr = '\0';
                   3319:                if ( spacecount != 0 || textcount != 1 ) {
                   3320:                    for ( i = textcount; i > 0; i-- )
                   3321:                        fprintf(tf, "(%s)%d", line[i].str, line[i].dx);
                   3322:                    fprintf(tf, " %d %d %d t\n", textcount, stringstart, lasty);
                   3323:                } else fprintf(tf, "(%s)%d %d w\n", line[1].str, stringstart, lasty);
                   3324:                break;
                   3325: 
                   3326:            case MAXENCODING+1:
                   3327:                fprintf(tf, ")%d ", stringstart);
                   3328:                fprintf(tf, "%d %d drawrvbox ", lastend - rvslop, (int)(lastx + .5) + rvslop);
                   3329:                fprintf(tf, "t\n", stringstart);
                   3330:                lastend = (lastx + .5) + 2 * rvslop;
                   3331:                break;
                   3332: 
                   3333:            case MAXENCODING+2:
                   3334:                fprintf(tf, ")%d %d t\n", stringstart, lasty);
                   3335:                break;
                   3336:        }   /* End switch */
                   3337:     }  /* End if */
                   3338: 
                   3339:     textcount = 0;
                   3340: 
                   3341: }   /* End of flushtext */
                   3342: 
                   3343: /*****************************************************************************/
                   3344: 
                   3345: endstring()
                   3346: 
                   3347: {
                   3348: 
                   3349:     int                dx;
                   3350: 
                   3351: /*
                   3352:  *
                   3353:  * Horizontal positions are out of sync. End the last open string, adjust the
                   3354:  * printer's position, and start a new string. Assumes we've already started
                   3355:  * accumulating text.
                   3356:  *
                   3357:  */
                   3358: 
                   3359:     switch ( encoding ) {
                   3360:        case 0:
                   3361:        case 1:
                   3362:            fprintf(tf, ")%d(", stringstart);
                   3363:            textcount++;
                   3364:            lastx = stringstart = hpos;
                   3365:            break;
                   3366: 
                   3367:        case 2:
                   3368:        case 3:
                   3369:            dx = hpos - lastx;
                   3370:            if ( spacecount++ == 0 )
                   3371:                line[textcount].dx = dx;
                   3372:            if ( line[textcount].dx != dx ) {
                   3373:                *strptr++ = '\0';
                   3374:                line[textcount].width = lastx - line[textcount].start;
                   3375:                line[++textcount].str = strptr;
                   3376:                *strptr++ = ' ';
                   3377:                line[textcount].dx = dx;
                   3378:                line[textcount].start = lastx;
                   3379:                line[textcount].width = 0;
                   3380:                line[textcount].spaces = 1;
                   3381:            } else {
                   3382:                *strptr++ = ' ';
                   3383:                line[textcount].spaces++;
                   3384:            }   /* End else */
                   3385:            lastx += dx;
                   3386:            break;
                   3387: 
                   3388:        case MAXENCODING+1:
                   3389:            fprintf(tf, ")%d(", stringstart);
                   3390:            textcount++;
                   3391:            lastx = stringstart = hpos;
                   3392:            break;
                   3393: 
                   3394:        case MAXENCODING+2:
                   3395:            flushtext();
                   3396:            starttext();
                   3397:            break;
                   3398:     }  /* End switch */
                   3399: 
                   3400: }   /* End of endstring */
                   3401: 
                   3402: /*****************************************************************************/
                   3403: 
                   3404: endline()
                   3405: 
                   3406: {
                   3407: 
                   3408: /*
                   3409:  *
                   3410:  * The vertical position has changed. Dump any accumulated text, then adjust
                   3411:  * the printer's vertical position.
                   3412:  *
                   3413:  */
                   3414: 
                   3415:     flushtext();
                   3416: 
                   3417:     if ( encoding == 0 || encoding == MAXENCODING+1 )
                   3418:        fprintf(tf, "%d %d m\n", hpos, vpos);
                   3419: 
                   3420:     lastx = stringstart = lastend = hpos;
                   3421:     lasty = vpos;
                   3422: 
                   3423: }   /* End of endline */
                   3424: 
                   3425: /*****************************************************************************/
                   3426: 
                   3427: addchar(c)
                   3428: 
                   3429:     int                c;
                   3430: 
                   3431: {
                   3432: 
                   3433: /*
                   3434:  *
                   3435:  * Does whatever is needed to add character c to the current string.
                   3436:  *
                   3437:  */
                   3438: 
                   3439:     switch ( encoding ) {
                   3440:        case 0:
                   3441:        case 1:
                   3442:            putc(c, tf);
                   3443:            break;
                   3444: 
                   3445:        case 2:
                   3446:        case 3:
                   3447:            *strptr++ = c;
                   3448:            break;
                   3449: 
                   3450:        case MAXENCODING+1:
                   3451:        case MAXENCODING+2:
                   3452:            putc(c, tf);
                   3453:            break;
                   3454:     }  /* End switch */
                   3455: 
                   3456: }   /* End of addchar */
                   3457: 
                   3458: /*****************************************************************************/
                   3459: 
                   3460: addoctal(c)
                   3461: 
                   3462:     int                c;
                   3463: 
                   3464: {
                   3465: 
                   3466: /*
                   3467:  *
                   3468:  * Add c to the current string as an octal escape.
                   3469:  *
                   3470:  */
                   3471: 
                   3472:     switch ( encoding ) {
                   3473:        case 0:
                   3474:        case 1:
                   3475:            fprintf(tf, "\\%o", c);
                   3476:            break;
                   3477: 
                   3478:        case 2:
                   3479:        case 3:
                   3480:            sprintf(strptr, "\\%o", c);
                   3481:            strptr += strlen(strptr);
                   3482:            break;
                   3483: 
                   3484:        case MAXENCODING+1:
                   3485:        case MAXENCODING+2:
                   3486:            fprintf(tf, "\\%o", c);
                   3487:            break;
                   3488:     }  /* End switch */
                   3489: 
                   3490: }   /* End of addoctal */
                   3491: 
                   3492: /*****************************************************************************/
                   3493: 
                   3494: charlib(code)
                   3495: 
                   3496:     int                code;                   /* either 1 or 2 */
                   3497: 
                   3498: {
                   3499: 
                   3500:     char       *name;                  /* name of the character */
                   3501:     char       tname[10];              /* in case it's a single ASCII character */
                   3502:     char       temp[150];
                   3503: 
                   3504: /*
                   3505:  *
                   3506:  * Called from oput() for characters having codes less than 040. Special files
                   3507:  * that define PostScript procedures for certain characters can be found in
                   3508:  * directory *fontdir/devpost/charlib. If there's a file that has the same name as
                   3509:  * the character we're trying to print it's copied to the output file, otherwise
                   3510:  * nothing, except some positioning, is done.
                   3511:  *
                   3512:  * All character definitions are only made once. Subsequent requests to print the
                   3513:  * character generate a call to a procedure that begins with the prefix build_ and
                   3514:  * ends with the character's name. Special characters that are assigned codes
                   3515:  * other than 1 are assumed to have additional data files that should be copied
                   3516:  * to the output file immediately after the build_ call. Those data files should
                   3517:  * end in the suffix .map, and usually will be a hex representation of a bitmap.
                   3518:  *
                   3519:  */
                   3520: 
                   3521:     flushtext();
                   3522: 
                   3523:     if ( lastc < ALPHABET ) {          /* ASCII character */
                   3524:        sprintf(tname, "%.3o", lastc);
                   3525:        name = tname;
                   3526:     } else name = chname(lastc);
                   3527: 
                   3528:     if ( downloaded[lastc] == 0 ) {
                   3529:        sprintf(temp, "%s/dev%s/charlib/%s", fontdir, realdev, name);
                   3530:        if ( exportfile(temp) == TRUE ) {
                   3531:            downloaded[lastc] = 1;
                   3532:            t_sf();
                   3533:        }   /* End if */
                   3534:     }  /* End if */
                   3535: 
                   3536:     if ( downloaded[lastc] == 1 ) {
                   3537:        xymove(hpos, vpos);
                   3538:        fprintf(tf, "%d build_%s\n", (int) lastw, name);
                   3539:        if ( code != 1 ) {              /* get the bitmap or whatever */
                   3540:            sprintf(temp, "%s/dev%s/charlib/%s.map", fontdir, realdev, name);
                   3541:            if ( access(temp, 04) == 0 && tf == stdout )
                   3542:                cat(temp);
                   3543:        }   /* End if */
                   3544:        fprintf(tf, "%d %d m\n", stringstart = hpos + lastw, vpos);
                   3545:     }  /* End if */
                   3546: 
                   3547: }   /* End of charlib */
                   3548: 
                   3549: /*****************************************************************************/
                   3550: 
                   3551: reset()
                   3552: 
                   3553: {
                   3554: 
                   3555: /*
                   3556:  *
                   3557:  * Reset variables that keep track of the printer's current position, size and
                   3558:  * font. Eventually forces things back in sync before oput() prints the next
                   3559:  * character.
                   3560:  *
                   3561:  */
                   3562: 
                   3563:     lastx = -(slop + 1);
                   3564:     lasty = -1;
                   3565:     lastfont = lastsize = -1;
                   3566: 
                   3567: }   /* End of reset */
                   3568: 
                   3569: /*****************************************************************************/
                   3570: 
                   3571: resetpos()
                   3572: 
                   3573: {
                   3574: 
                   3575: /*
                   3576:  *
                   3577:  * Reset the position tracking variables. Forces oput() to get positions back
                   3578:  * in sync before printing the next character.
                   3579:  *
                   3580:  */
                   3581: 
                   3582:     lastx = -(slop + 1);
                   3583:     lasty = -1;
                   3584: 
                   3585: }   /* End of resetpos */
                   3586: 
                   3587: /*****************************************************************************/
                   3588: 
                   3589: save()
                   3590: 
                   3591: {
                   3592: 
                   3593: /*
                   3594:  *
                   3595:  * Save the current PostScript environment. Initialize things that may have
                   3596:  * disappeared after the preceeding restore.
                   3597:  *
                   3598:  */
                   3599: 
                   3600:     fprintf(tf, "/saveobj save def\n");
                   3601:     fprintf(tf, "mark\n");
                   3602: 
                   3603:     if ( encoding != realencoding )
                   3604:        fprintf(tf, "%d setdecoding\n", encoding);
                   3605: 
                   3606:     if ( gotcolor == TRUE )            /* prevent getcolor() recursion */
                   3607:        setcolor();
                   3608: 
                   3609: }   /* End of save */
                   3610: 
                   3611: /*****************************************************************************/
                   3612: 
                   3613: restore()
                   3614: 
                   3615: {
                   3616: 
                   3617: /*
                   3618:  *
                   3619:  * Restore the previous PostScript environment.
                   3620:  *
                   3621:  */
                   3622: 
                   3623:     flushtext();
                   3624:     fprintf(tf, "cleartomark\n");
                   3625:     fprintf(tf, "saveobj restore\n");
                   3626:     reset();
                   3627: 
                   3628: }   /* End of restore */
                   3629: 
                   3630: /*****************************************************************************/
                   3631: 
                   3632: exportfile(path)
                   3633: 
                   3634:     char       *path;
                   3635: 
                   3636: {
                   3637: 
                   3638:     int                val = FALSE;
                   3639: 
                   3640: /*
                   3641:  *
                   3642:  * Exports the contents of file path to the global environment. Returns TRUE
                   3643:  * if we're doing output (i.e. tf == stdout) and the copy worked.
                   3644:  *
                   3645:  */
                   3646: 
                   3647:     if ( tf == stdout && access(path, 04) == 0 ) {
                   3648:        restore();
                   3649:        fprintf(tf, "%s", BEGINGLOBAL);
                   3650:        val = cat(path);
                   3651:        fprintf(tf, "%s", ENDGLOBAL);
                   3652:        save();
                   3653:     }  /* End if */
                   3654: 
                   3655:     return(val);
                   3656: 
                   3657: }   /* End of exportfile */
                   3658: 
                   3659: /*****************************************************************************/
                   3660: 
                   3661: exportstring(str)
                   3662: 
                   3663:     char       *str;
                   3664: 
                   3665: {
                   3666: 
                   3667: /*
                   3668:  *
                   3669:  * Exports string str to the global environment. No return value needed yet.
                   3670:  *
                   3671:  */
                   3672: 
                   3673:     if ( tf == stdout && str != NULL && *str != '\0' ) {
                   3674:        restore();
                   3675:        fprintf(tf, "%s", BEGINGLOBAL);
                   3676:        fprintf(tf, "%s", str);
                   3677:        fprintf(tf, "%s", ENDGLOBAL);
                   3678:        save();
                   3679:     }  /* End if */
                   3680: 
                   3681: }   /* End of exportstring */
                   3682: 
                   3683: /*****************************************************************************/
                   3684: 
                   3685: redirect(pg)
                   3686: 
                   3687:     int                pg;
                   3688: 
                   3689: {
                   3690: 
                   3691:     static FILE        *fp_null = NULL;
                   3692: 
                   3693: /*
                   3694:  *
                   3695:  * If we're not supposed to print page pg, tf will be directed to /dev/null,
                   3696:  * otherwise output goes to stdout.
                   3697:  *
                   3698:  */
                   3699: 
                   3700:     if ( pg >= 0 && in_olist(pg) == ON )
                   3701:        tf = stdout;
                   3702:     else if ( (tf = fp_null) == NULL )
                   3703:        tf = fp_null = fopen("/dev/null", "w");
                   3704: 
                   3705: }   /* End of redirect */
                   3706: 
                   3707: /*****************************************************************************/
                   3708: 
                   3709: 0707070014231030451006440057030057030000010301400522627500600002700000010457post.src/dpost/dpost.h/*
                   3710:  *
                   3711:  * DEVNAME should be the name of a device whose font files accurately describe
                   3712:  * what's available on the target printer. It's a string that's combined with
                   3713:  * "/usr/lib/font/dev" to locate the final font directory. It can be changed
                   3714:  * using the -T option, but you may end up getting garbage - the character code
                   3715:  * field must agree with PostScript's character encoding scheme for each font and
                   3716:  * troff's one or two character font names must be mapped into the appropriate
                   3717:  * PostScript font names (typically in the prologue)
                   3718:  *
                   3719:  *
                   3720:  */
                   3721: 
                   3722: #define        DEVNAME         "post"          /* name of the target printer */
                   3723: 
                   3724: /*
                   3725:  *
                   3726:  * SLOP controls how much horizontal positioning error we'll accept and primarily
                   3727:  * helps when we're emulating another device. It's used when we output characters
                   3728:  * in oput() to check if troff and the printer have gotten too far out of sync.
                   3729:  * Given in units of points and can be changed using the -S option. Converted to
                   3730:  * machine units in t_init() after the resolution is known.
                   3731:  *
                   3732:  */
                   3733: 
                   3734: #define SLOP           .2              /* horizontal error - in points */
                   3735: 
                   3736: /*
                   3737:  *
                   3738:  * Several different text line encoding schemes are supported. Print time should
                   3739:  * decrease as the value assigned to encoding (in dpost.c) increases, although the
                   3740:  * only encoding that's well tested is the lowest level one, which produces output
                   3741:  * essentially identical to the original version of dpost. Setting DFLTENCODING to
                   3742:  * 0 will give you the most stable (but slowest) encoding. The encoding scheme can
                   3743:  * also be set on the command line using the -e option. Faster methods are based
                   3744:  * on widthshow and may not place words exactly where troff wanted, but errors will
                   3745:  * usually not be noticeable.
                   3746:  *
                   3747:  */
                   3748: 
                   3749: #define MAXENCODING    3
                   3750: 
                   3751: #ifndef DFLTENCODING
                   3752: #define DFLTENCODING   2
                   3753: #endif
                   3754: 
                   3755: /*
                   3756:  *
                   3757:  * The encoding scheme controls how lines of text are output. In the lower level
                   3758:  * schemes words and horizontal positions are put on the stack as they're read and
                   3759:  * when they're printed it's done in reverse order - the first string printed is
                   3760:  * the one on top of the stack and it's the last one on the line. Faster methods
                   3761:  * may be forced to reverse the order of strings on the stack, making the top one
                   3762:  * the first string on the line. STRINGSPACE sets the size of a character array
                   3763:  * that's used to save the strings that make up  a line of text so they can be
                   3764:  * output in reverse order or perhaps combined in groups for widthshow.
                   3765:  *
                   3766:  * MAXSTACK controls how far we let PostScript's operand stack grow and determines
                   3767:  * the number of strings we'll save before printing all or part of a line of text.
                   3768:  * The internal limit in PostScript printers built by Adobe is 500, so MAXSTACK
                   3769:  * should never be bigger than about 240!
                   3770:  *
                   3771:  * Line is a structure used to keep track of the words (or rather strings) on the
                   3772:  * current line that have been read but not printed. dx is the width troff wants
                   3773:  * to use for a space in the current string. start is where the string began, width
                   3774:  * is the total width of the string, and spaces is the number of space characters
                   3775:  * in the current string. *str points to the start of the string in the strings[]
                   3776:  * array. The Line structure is only used in the higher level encoding schemes.
                   3777:  * 
                   3778:  */
                   3779: 
                   3780: #define        MAXSTACK        50              /* most strings we'll save at once */
                   3781: #define        STRINGSPACE     2000            /* bytes available for string storage */
                   3782: 
                   3783: typedef struct {
                   3784:        char    *str;                   /* where the string is stored */
                   3785:        int     dx;                     /* width of a space */
                   3786:        int     spaces;                 /* number of space characters */
                   3787:        int     start;                  /* horizontal starting position */
                   3788:        int     width;                  /* and its total width */
                   3789: } Line;
                   3790: 
                   3791: /*
                   3792:  *
                   3793:  * Simple stuff used to map unrecognized font names into something reasonable. The
                   3794:  * mapping array is initialized using FONTMAP and used in loadfont() whenever the
                   3795:  * job tries to use a font that we don't recognize. Normally only needed when we're
                   3796:  * emulating another device.
                   3797:  *
                   3798:  */
                   3799: 
                   3800: typedef struct {
                   3801:        char    *name;                  /* font name we're looking for */
                   3802:        char    *use;                   /* and this is what we should use */
                   3803: } Fontmap;
                   3804: 
                   3805: #define        FONTMAP                                                         \
                   3806:                                                                        \
                   3807:        {                                                               \
                   3808:            "G", "H",                                                   \
                   3809:            "LO", "S",                                                  \
                   3810:            "S2", "S",                                                  \
                   3811:            "GI", "HI",                                                 \
                   3812:            "HM", "H",                                                  \
                   3813:            "HK", "H",                                                  \
                   3814:            "HL", "H",                                                  \
                   3815:            "PA", "R",                                                  \
                   3816:            "PI", "I",                                                  \
                   3817:            "PB", "B",                                                  \
                   3818:            "PX", "BI",                                                 \
                   3819:            NULL, NULL,                                                 \
                   3820:        }
                   3821: 
                   3822: /*
                   3823:  *
                   3824:  * Non-integer valued functions.
                   3825:  *
                   3826:  */
                   3827: 
                   3828: extern char    *mapfont();
                   3829: 
                   3830: 0707070014231027401006400057030057030000010310030522633100300003000000005210post.src/dpost/dpost.mkMAKE=/bin/make
                   3831: MAKEFILE=dpost.mk
                   3832: 
                   3833: SYSTEM=V9
                   3834: VERSION=3.3.2
                   3835: 
                   3836: GROUP=bin
                   3837: OWNER=bin
                   3838: 
                   3839: FONTDIR=/usr/lib/font
                   3840: MAN1DIR=/tmp
                   3841: POSTBIN=/usr/bin/postscript
                   3842: POSTLIB=/usr/lib/postscript
                   3843: 
                   3844: COMMONDIR=../common
                   3845: 
                   3846: CFLGS=-O
                   3847: LDFLGS=-s
                   3848: 
                   3849: CFLAGS=$(CFLGS) -I$(COMMONDIR)
                   3850: LDFLAGS=$(LDFLGS)
                   3851: 
                   3852: HFILES=dpost.h\
                   3853:        font.h\
                   3854:        motion.h\
                   3855:        ps_include.h\
                   3856:        $(COMMONDIR)/comments.h\
                   3857:        $(COMMONDIR)/ext.h\
                   3858:        $(COMMONDIR)/gen.h\
                   3859:        $(COMMONDIR)/path.h
                   3860: 
                   3861: OFILES=dpost.o\
                   3862:        draw.o\
                   3863:        color.o\
                   3864:        font.o\
                   3865:        pictures.o\
                   3866:        ps_include.o\
                   3867:        $(COMMONDIR)/bbox.o\
                   3868:        $(COMMONDIR)/glob.o\
                   3869:        $(COMMONDIR)/misc.o\
                   3870:        $(COMMONDIR)/request.o\
                   3871:        $(COMMONDIR)/tempnam.o
                   3872: 
                   3873: all : dpost
                   3874: 
                   3875: install : all
                   3876:        @if [ ! -d "$(POSTBIN)" ]; then \
                   3877:            mkdir $(POSTBIN); \
                   3878:            chmod 755 $(POSTBIN); \
                   3879:            chgrp $(GROUP) $(POSTBIN); \
                   3880:            chown $(OWNER) $(POSTBIN); \
                   3881:        fi
                   3882:        @if [ ! -d "$(POSTLIB)" ]; then \
                   3883:            mkdir $(POSTLIB); \
                   3884:            chmod 755 $(POSTLIB); \
                   3885:            chgrp $(GROUP) $(POSTLIB); \
                   3886:            chown $(OWNER) $(POSTLIB); \
                   3887:        fi
                   3888:        cp dpost $(POSTBIN)/dpost
                   3889:        @chmod 755 $(POSTBIN)/dpost
                   3890:        @chgrp $(GROUP) $(POSTBIN)/dpost
                   3891:        @chown $(OWNER) $(POSTBIN)/dpost
                   3892:        cp dpost.ps $(POSTLIB)/dpost.ps
                   3893:        @chmod 644 $(POSTLIB)/dpost.ps
                   3894:        @chgrp $(GROUP) $(POSTLIB)/dpost.ps
                   3895:        @chown $(OWNER) $(POSTLIB)/dpost.ps
                   3896:        cp draw.ps $(POSTLIB)/draw.ps
                   3897:        @chmod 644 $(POSTLIB)/draw.ps
                   3898:        @chgrp $(GROUP) $(POSTLIB)/draw.ps
                   3899:        @chown $(OWNER) $(POSTLIB)/draw.ps
                   3900:        cp dpost.1 $(MAN1DIR)/dpost.1
                   3901:        @chmod 644 $(MAN1DIR)/dpost.1
                   3902:        @chgrp $(GROUP) $(MAN1DIR)/dpost.1
                   3903:        @chown $(OWNER) $(MAN1DIR)/dpost.1
                   3904: 
                   3905: clean :
                   3906:        rm -f *.o
                   3907: 
                   3908: clobber : clean
                   3909:        rm -f dpost
                   3910: 
                   3911: dpost : $(OFILES)
                   3912:        $(CC) $(CFLAGS) $(LDFLAGS) -o dpost $(OFILES) -lm
                   3913: 
                   3914: dpost.o : $(HFILES)
                   3915: color.o : $(COMMONDIR)/ext.h $(COMMONDIR)/gen.h
                   3916: draw.o : motion.h $(COMMONDIR)/ext.h $(COMMONDIR)/gen.h
                   3917: font.o : font.h $(COMMONDIR)/gen.h
                   3918: pictures.o : $(COMMONDIR)/comments.h $(COMMONDIR)/gen.h
                   3919: ps_include.o : ps_include.h
                   3920: 
                   3921: $(COMMONDIR)/bbox.o\
                   3922: $(COMMONDIR)/glob.o\
                   3923: $(COMMONDIR)/misc.o\
                   3924: $(COMMONDIR)/request.o\
                   3925: $(COMMONDIR)/tempnam.o :
                   3926:        @cd $(COMMONDIR); $(MAKE) -f common.mk SYSTEM=$(SYSTEM) `basename $@`
                   3927: 
                   3928: changes :
                   3929:        @trap "" 1 2 3 15; \
                   3930:        sed \
                   3931:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
                   3932:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
                   3933:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
                   3934:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
                   3935:            -e "s'^FONTDIR=.*'FONTDIR=$(FONTDIR)'" \
                   3936:            -e "s'^MAN1DIR=.*'MAN1DIR=$(MAN1DIR)'" \
                   3937:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
                   3938:            -e "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" \
                   3939:        $(MAKEFILE) >XXX.mk; \
                   3940:        mv XXX.mk $(MAKEFILE); \
                   3941:        sed \
                   3942:            -e "s'^.ds dF.*'.ds dF $(FONTDIR)'" \
                   3943:            -e "s'^.ds dQ.*'.ds dQ $(POSTLIB)'" \
                   3944:        dpost.1 >XXX.1; \
                   3945:        mv XXX.1 dpost.1
                   3946: 
                   3947: 0707070014231030471006440057030057030000010301600522627500600003000000011014post.src/dpost/dpost.ps%
                   3948: % Version 3.3.2 prologue for troff files.
                   3949: %
                   3950: 
                   3951: /#copies 1 store
                   3952: /aspectratio 1 def
                   3953: /formsperpage 1 def
                   3954: /landscape false def
                   3955: /linewidth .3 def
                   3956: /magnification 1 def
                   3957: /margin 0 def
                   3958: /orientation 0 def
                   3959: /resolution 720 def
                   3960: /rotation 1 def
                   3961: /xoffset 0 def
                   3962: /yoffset 0 def
                   3963: 
                   3964: /roundpage true def
                   3965: /useclippath true def
                   3966: /pagebbox [0 0 612 792] def
                   3967: 
                   3968: /R  /Times-Roman def
                   3969: /I  /Times-Italic def
                   3970: /B  /Times-Bold def
                   3971: /BI /Times-BoldItalic def
                   3972: /H  /Helvetica def
                   3973: /HI /Helvetica-Oblique def
                   3974: /HB /Helvetica-Bold def
                   3975: /HX /Helvetica-BoldOblique def
                   3976: /CW /Courier def
                   3977: /CO /Courier def
                   3978: /CI /Courier-Oblique def
                   3979: /CB /Courier-Bold def
                   3980: /CX /Courier-BoldOblique def
                   3981: /PA /Palatino-Roman def
                   3982: /PI /Palatino-Italic def
                   3983: /PB /Palatino-Bold def
                   3984: /PX /Palatino-BoldItalic def
                   3985: /Hr /Helvetica-Narrow def
                   3986: /Hi /Helvetica-Narrow-Oblique def
                   3987: /Hb /Helvetica-Narrow-Bold def
                   3988: /Hx /Helvetica-Narrow-BoldOblique def
                   3989: /KR /Bookman-Light def
                   3990: /KI /Bookman-LightItalic def
                   3991: /KB /Bookman-Demi def
                   3992: /KX /Bookman-DemiItalic def
                   3993: /AR /AvantGarde-Book def
                   3994: /AI /AvantGarde-BookOblique def
                   3995: /AB /AvantGarde-Demi def
                   3996: /AX /AvantGarde-DemiOblique def
                   3997: /NR /NewCenturySchlbk-Roman def
                   3998: /NI /NewCenturySchlbk-Italic def
                   3999: /NB /NewCenturySchlbk-Bold def
                   4000: /NX /NewCenturySchlbk-BoldItalic def
                   4001: /ZD /ZapfDingbats def
                   4002: /ZI /ZapfChancery-MediumItalic def
                   4003: /S  /S def
                   4004: /S1 /S1 def
                   4005: /GR /Symbol def
                   4006: 
                   4007: /inch {72 mul} bind def
                   4008: /min {2 copy gt {exch} if pop} bind def
                   4009: 
                   4010: /setup {
                   4011:        counttomark 2 idiv {def} repeat pop
                   4012: 
                   4013:        landscape {/orientation 90 orientation add def} if
                   4014:        /scaling 72 resolution div def
                   4015:        linewidth setlinewidth
                   4016:        1 setlinecap
                   4017: 
                   4018:        pagedimensions
                   4019:        xcenter ycenter translate
                   4020:        orientation rotation mul rotate
                   4021:        width 2 div neg height 2 div translate
                   4022:        xoffset inch yoffset inch neg translate
                   4023:        margin 2 div dup neg translate
                   4024:        magnification dup aspectratio mul scale
                   4025:        scaling scaling scale
                   4026: 
                   4027:        addmetrics
                   4028:        0 0 moveto
                   4029: } def
                   4030: 
                   4031: /pagedimensions {
                   4032:        useclippath userdict /gotpagebbox known not and {
                   4033:                /pagebbox [clippath pathbbox newpath] def
                   4034:                roundpage currentdict /roundpagebbox known and {roundpagebbox} if
                   4035:        } if
                   4036:        pagebbox aload pop
                   4037:        4 -1 roll exch 4 1 roll 4 copy
                   4038:        landscape {4 2 roll} if
                   4039:        sub /width exch def
                   4040:        sub /height exch def
                   4041:        add 2 div /xcenter exch def
                   4042:        add 2 div /ycenter exch def
                   4043:        userdict /gotpagebbox true put
                   4044: } def
                   4045: 
                   4046: /addmetrics {
                   4047:        /Symbol /S null Sdefs cf
                   4048:        /Times-Roman /S1 StandardEncoding dup length array copy S1defs cf
                   4049: } def
                   4050: 
                   4051: /pagesetup {
                   4052:        /page exch def
                   4053:        currentdict /pagedict known currentdict page known and {
                   4054:                page load pagedict exch get cvx exec
                   4055:        } if
                   4056: } def
                   4057: 
                   4058: /decodingdefs [
                   4059:        {counttomark 2 idiv {y moveto show} repeat}
                   4060:        {neg /y exch def counttomark 2 idiv {y moveto show} repeat}
                   4061:        {neg moveto {2 index stringwidth pop sub exch div 0 32 4 -1 roll widthshow} repeat}
                   4062:        {neg moveto {spacewidth sub 0.0 32 4 -1 roll widthshow} repeat}
                   4063:        {counttomark 2 idiv {y moveto show} repeat}
                   4064:        {neg setfunnytext}
                   4065: ] def
                   4066: 
                   4067: /setdecoding {/t decodingdefs 3 -1 roll get bind def} bind def
                   4068: 
                   4069: /w {neg moveto show} bind def
                   4070: /m {neg dup /y exch def moveto} bind def
                   4071: /done {/lastpage where {pop lastpage} if} def
                   4072: 
                   4073: /f {
                   4074:        dup /font exch def findfont exch
                   4075:        dup /ptsize exch def scaling div dup /size exch def scalefont setfont
                   4076:        linewidth ptsize mul scaling 10 mul div setlinewidth
                   4077:        /spacewidth ( ) stringwidth pop def
                   4078: } bind def
                   4079: 
                   4080: /changefont {
                   4081:        /fontheight exch def
                   4082:        /fontslant exch def
                   4083:        currentfont [
                   4084:                1 0
                   4085:                fontheight ptsize div fontslant sin mul fontslant cos div
                   4086:                fontheight ptsize div
                   4087:                0 0
                   4088:        ] makefont setfont
                   4089: } bind def
                   4090: 
                   4091: /sf {f} bind def
                   4092: 
                   4093: /cf {
                   4094:        dup length 2 idiv
                   4095:        /entries exch def
                   4096:        /chtab exch def
                   4097:        /newencoding exch def
                   4098:        /newfont exch def
                   4099: 
                   4100:        findfont dup length 1 add dict
                   4101:        /newdict exch def
                   4102:        {1 index /FID ne {newdict 3 1 roll put}{pop pop} ifelse} forall
                   4103: 
                   4104:        newencoding type /arraytype eq {newdict /Encoding newencoding put} if
                   4105: 
                   4106:        newdict /Metrics entries dict put
                   4107:        newdict /Metrics get
                   4108:        begin
                   4109:                chtab aload pop
                   4110:                1 1 entries {pop def} for
                   4111:                newfont newdict definefont pop
                   4112:        end
                   4113: } bind def
                   4114: 
                   4115: %
                   4116: % A few arrays used to adjust reference points and character widths in some
                   4117: % of the printer resident fonts. If square roots are too high try changing
                   4118: % the lines describing /radical and /radicalex to,
                   4119: %
                   4120: %      /radical        [0 -75 550 0]
                   4121: %      /radicalex      [-50 -75 500 0]
                   4122: %
                   4123: % Move braceleftbt a bit - default PostScript character is off a bit.
                   4124: %
                   4125: 
                   4126: /Sdefs [
                   4127:        /bracketlefttp          [201 500]
                   4128:        /bracketleftbt          [201 500]
                   4129:        /bracketrighttp         [-81 380]
                   4130:        /bracketrightbt         [-83 380]
                   4131:        /braceleftbt            [203 490]
                   4132:        /bracketrightex         [220 -125 500 0]
                   4133:        /radical                [0 0 550 0]
                   4134:        /radicalex              [-50 0 500 0]
                   4135:        /parenleftex            [-20 -170 0 0]
                   4136:        /integral               [100 -50 500 0]
                   4137:        /infinity               [10 -75 730 0]
                   4138: ] def
                   4139: 
                   4140: /S1defs [
                   4141:        /underscore             [0 80 500 0]
                   4142:        /endash                 [7 90 650 0]
                   4143: ] def
                   4144: 0707070014231030501006440057030057030000010302000522627500600002600000061605post.src/dpost/draw.c/*
                   4145:  *
                   4146:  * Drawing routines used by dpost. Almost no real work is done here. Instead
                   4147:  * the required calculations are done in special Postscript procedures that
                   4148:  * include:
                   4149:  *
                   4150:  *
                   4151:  *     Dl
                   4152:  *
                   4153:  *       x1 y1 x y Dl -
                   4154:  *
                   4155:  *         Starts a new path and then draws a line from the current point
                   4156:  *         (x, y) to (x1, y1).
                   4157:  *
                   4158:  *     De
                   4159:  *
                   4160:  *       x y a b De -
                   4161:  *
                   4162:  *         Starts a new path and then draws an ellipse that has its left side
                   4163:  *         at the current point (x, y) and horizontal and vertical axes lengths
                   4164:  *         given by a and b respectively.
                   4165:  *
                   4166:  *     Da
                   4167:  *
                   4168:  *       x y dx1 dy1 dx2 dy2 Da -
                   4169:  *
                   4170:  *         Starts a new segment and then draws a circular arc from the current
                   4171:  *         point (x, y) to (x + dx1 + dx2, y + dy1 + dy2). The center of the
                   4172:  *         circle is at (x + dx1, y + dy1). Arcs always go counter-clockwise
                   4173:  *         from the starting point to the end point.
                   4174:  *
                   4175:  *     DA
                   4176:  *
                   4177:  *       x y dx1 dy1 dx2 dy2 DA -
                   4178:  *
                   4179:  *         Draws a clockwise arc from (x, y) to (x + dx1 + dx2, y + dy1 + dy2)
                   4180:  *         with center at (x + dx1, y + dy1). Only needed when we're building
                   4181:  *         large paths that use arcs and want to control the current point. The
                   4182:  *         arguments passed to drawarc() will be whatever they would have been
                   4183:  *         for a counter-clockwise arc, so we need to map them into appropriate
                   4184:  *         arguments for PostScript's arcn operator. The mapping is,
                   4185:  *
                   4186:  *                     x = hpos + dx1' + dx2'
                   4187:  *                     y = vpos + dy1' + dy2'
                   4188:  *                     dx1 = -dx2'
                   4189:  *                     dy1 = -dy2'
                   4190:  *                     dx2 = -dx1'
                   4191:  *                     dy2 = -dy1'
                   4192:  *
                   4193:  *        where primed values represent the drawarc() arguments and (hpos, vpos)
                   4194:  *        is our current position.
                   4195:  *
                   4196:  *     Ds
                   4197:  *
                   4198:  *       x0 y0 x1 y1 x2 y2 Ds -
                   4199:  *
                   4200:  *         Starts a new segment and then draws a quadratic spline connecting
                   4201:  *         point ((x0 + x1)/2, (y0 + y1)/2) to ((x1 + x2)/2, (y1 + y2)/2).
                   4202:  *         The points used in Postscript's curveto procedure are given by,
                   4203:  *
                   4204:  *             x0' = (x0 + 5 * x1) / 6
                   4205:  *             x1' = (x2 + 5 * x1) / 6
                   4206:  *             x2' = (x1 + x2) / 2
                   4207:  *
                   4208:  *         with similar equations for the y coordinates.
                   4209:  *
                   4210:  * By default all the PostScript drawing procedures begin with a newpath (just to
                   4211:  * be safe) and end with a stroke, which essentially isolates the path elements
                   4212:  * built by the drawing procedures. In order to accommodate big paths built from
                   4213:  * smaller pieces each of the PostScript drawing procedures can forced to retain
                   4214:  * the path that's being built. That's what happens in beginpath() when an "x X
                   4215:  * BeginPath" command is read. beginpath() sets the PostScript variable inpath to
                   4216:  * true, and that essentially eliminates the newpath/stroke pair that bracket the
                   4217:  * individual pieces. In that case the path is terminated and drawn when dpost
                   4218:  * reads an "x X DrawPath" command.
                   4219:  *
                   4220:  * Early versions of dpost included the PostScript drawing procedures as part of
                   4221:  * the prologue, and as a result they were included with every job, even if they
                   4222:  * were never used. This version has separated the drawing procedures from the
                   4223:  * default prologue (they're now in *drawfile) and only includes them if they're
                   4224:  * really needed, which is yet another convenient violation of page independence.
                   4225:  * Routine getdraw() is responsible for adding *drawfile to the output file, and
                   4226:  * if it can't read *drawfile it continues on as if nothing happened. That means
                   4227:  * everything should still work if you append *drawfile to *prologue and then
                   4228:  * delete *drawfile.
                   4229:  *
                   4230:  */
                   4231: 
                   4232: #include <stdio.h>
                   4233: #include <math.h>
                   4234: 
                   4235: #include "gen.h"                       /* general purpose definitions */
                   4236: #include "ext.h"                       /* external variable definitions */
                   4237: #include "motion.h"                    /* positioning macros */
                   4238: 
                   4239: int    gotdraw = FALSE;                /* TRUE when *drawfile has been added */
                   4240: int    gotbaseline = FALSE;            /* TRUE after *baselinefile is added */
                   4241: int    inpath = FALSE;                 /* TRUE if we're putting pieces together */
                   4242: 
                   4243: /*
                   4244:  *
                   4245:  * All these should be defined in file dpost.c.
                   4246:  *
                   4247:  */
                   4248: 
                   4249: extern int             hpos;
                   4250: extern int             vpos;
                   4251: extern int             encoding;
                   4252: extern int             maxencoding;
                   4253: extern int             realencoding;
                   4254: 
                   4255: extern char            *drawfile;
                   4256: extern char            *baselinefile;
                   4257: extern FILE            *tf;
                   4258: 
                   4259: /*****************************************************************************/
                   4260: 
                   4261: getdraw()
                   4262: 
                   4263: {
                   4264: 
                   4265: /*
                   4266:  *
                   4267:  * Responsible for making sure the PostScript drawing procedures are downloaded
                   4268:  * from *drawfile. Stuff is done at most once per job, and only if the job needs
                   4269:  * them. For now I've decided not to quit if we can't read the drawing file. That
                   4270:  * pretty much assumes an old version of prologue is being used that includes all
                   4271:  * the drawing procedures.
                   4272:  *
                   4273:  */
                   4274: 
                   4275:     if ( gotdraw == FALSE )
                   4276:        exportfile(drawfile);
                   4277: 
                   4278:     if ( tf == stdout )
                   4279:        gotdraw = TRUE;
                   4280: 
                   4281: }   /* End of getdraw */
                   4282: 
                   4283: /*****************************************************************************/
                   4284: 
                   4285: drawline(dx, dy)
                   4286: 
                   4287:     int                dx, dy;                 /* endpoint is (hpos+dx, vpos+dy) */
                   4288: 
                   4289: {
                   4290: 
                   4291: /*
                   4292:  *
                   4293:  * Draws a line from (hpos, vpos) to (hpos+dx, vpos+dy), and leaves the current
                   4294:  * position at the endpoint.
                   4295:  *
                   4296:  */
                   4297: 
                   4298:     if ( dx == 0 && dy == 0 )
                   4299:        drawcirc(1);
                   4300:     else fprintf(tf, "%d %d %d %d Dl\n", hpos + dx, vpos + dy, hpos, vpos);
                   4301: 
                   4302:     if ( dobbox == TRUE ) {
                   4303:        cover((double)hpos, (double)-vpos);
                   4304:        cover((double)(hpos + dx), (double)-(vpos + dy));
                   4305:     }  /* End if */
                   4306: 
                   4307:     hgoto(hpos+dx);                    /* where troff expects to be */
                   4308:     vgoto(vpos+dy);
                   4309: 
                   4310:     resetpos();                                /* not sure where the printer is */
                   4311: 
                   4312: }   /* End of drawline */
                   4313: 
                   4314: /*****************************************************************************/
                   4315: 
                   4316: drawcirc(d)
                   4317: 
                   4318:     int                d;                      /* diameter of the circle */
                   4319: 
                   4320: {
                   4321: 
                   4322: /*
                   4323:  *
                   4324:  * Draws a circle of diameter d with the left 'side' of the circle at the
                   4325:  * current point. After we're finished drawing we move the current position
                   4326:  * to the right side.
                   4327:  *
                   4328:  */
                   4329: 
                   4330:     drawellip(d, d);
                   4331: 
                   4332: }   /* End of drawcirc */
                   4333: 
                   4334: /*****************************************************************************/
                   4335: 
                   4336: drawellip(a, b)
                   4337: 
                   4338:     int                a, b;                   /* axes lengths for the ellipse */
                   4339: 
                   4340: {
                   4341: 
                   4342: /*
                   4343:  *
                   4344:  * Draws an ellipse having axes lengths horizontally and vertically of a and
                   4345:  * b. The left side of the ellipse is at the current point. After we're done
                   4346:  * drawing the path we move the current position to the right side.
                   4347:  *
                   4348:  */
                   4349: 
                   4350:     if ( a == 0 && b == 0 )
                   4351:        return;
                   4352: 
                   4353:     fprintf(tf, "%d %d %d %d De\n", hpos, vpos, a, b);
                   4354: 
                   4355:     if ( dobbox == TRUE ) {
                   4356:        cover((double)hpos, (double)-(vpos + b/2));
                   4357:        cover((double)(hpos+a), (double)-(vpos - b/2));
                   4358:     }  /* End if */
                   4359: 
                   4360:     hgoto(hpos + a);                   /* where troff expects to be */
                   4361:     vgoto(vpos);
                   4362: 
                   4363:     resetpos();                                /* not sure where the printer is */
                   4364: 
                   4365: }   /* End of drawellip */
                   4366: 
                   4367: /*****************************************************************************/
                   4368: 
                   4369: drawarc(dx1, dy1, dx2, dy2, c)
                   4370: 
                   4371:     int                dx1, dy1;               /* vector from current pos to center */
                   4372:     int                dx2, dy2;               /* from center to end of the arc */
                   4373:     int                c;                      /* clockwise if c is A */
                   4374: 
                   4375: {
                   4376: 
                   4377: /*
                   4378:  *
                   4379:  * If c isn't set to 'A' a counter-clockwise arc is drawn from the current point
                   4380:  * (hpos, vpos) to (hpos+dx1+dx2, vpos+dy1+dy2). The center of the circle is the
                   4381:  * point (hpos+dx1, vpos+dy1). If c is 'A' the arc goes clockwise from the point
                   4382:  * (hpos+dx1+dx2, vpos+dy1+dy2) to (hpos, vpos). Clockwise arcs are only needed
                   4383:  * if we're building a larger path out of pieces that include arcs, and want to
                   4384:  * have PostScript manage the path for us. Arguments (for a clockwise arc) are
                   4385:  * what would have been supplied if the arc was drawn in a counter-clockwise
                   4386:  * direction, and are converted to values suitable for use with PostScript's arcn
                   4387:  * operator.
                   4388:  *
                   4389:  */
                   4390: 
                   4391:     if ( (dx1 != 0 || dy1 != 0) && (dx2 != 0 || dy2 != 0) ) {
                   4392:        if ( c != 'A' )
                   4393:            fprintf(tf, "%d %d %d %d %d %d Da\n", hpos, vpos, dx1, dy1, dx2, dy2);
                   4394:        else fprintf(tf, "%d %d %d %d %d %d DA\n", hpos+dx1+dx2, vpos+dy1+dy2,
                   4395:                                                -dx2, -dy2, -dx1, -dy1);
                   4396: 
                   4397:        if ( dobbox == TRUE )
                   4398:            arc_extreme(dx1, dy1, dx2, dy2);
                   4399:     }  /* End if */
                   4400: 
                   4401:     hgoto(hpos + dx1 + dx2);           /* where troff expects to be */
                   4402:     vgoto(vpos + dy1 + dy2);
                   4403: 
                   4404:     resetpos();                                /* not sure where the printer is */
                   4405: 
                   4406: }   /* End of drawarc */
                   4407: 
                   4408: /*****************************************************************************/
                   4409: 
                   4410: drawspline(fp, flag)
                   4411: 
                   4412:     FILE       *fp;                    /* input for point list */
                   4413:     int                flag;                   /* flag!=1 connect end points */
                   4414: 
                   4415: {
                   4416: 
                   4417:     int                x[100], y[100];
                   4418:     int                i, N;
                   4419: 
                   4420: /*
                   4421:  *
                   4422:  * Spline drawing routine for Postscript printers. The complicated stuff is
                   4423:  * handled by procedure Ds, which should be defined in the library file. I've
                   4424:  * seen wrong implementations of troff's spline drawing, so fo the record I'll
                   4425:  * write down the parametric equations and the necessary conversions to Bezier
                   4426:  * cubic splines (as used in Postscript).
                   4427:  *
                   4428:  *
                   4429:  * Parametric equation (x coordinate only):
                   4430:  *
                   4431:  *
                   4432:  *         (x2 - 2 * x1 + x0)    2                    (x0 + x1)
                   4433:  *     x = ------------------ * t   + (x1 - x0) * t + ---------
                   4434:  *                 2                                      2
                   4435:  *
                   4436:  *
                   4437:  * The coefficients in the Bezier cubic are,
                   4438:  *
                   4439:  *
                   4440:  *     A = 0
                   4441:  *     B = (x2 - 2 * x1 + x0) / 2
                   4442:  *     C = x1 - x0
                   4443:  *
                   4444:  *
                   4445:  * while the current point is,
                   4446:  *
                   4447:  *     current-point = (x0 + x1) / 2
                   4448:  *
                   4449:  * Using the relationships given in the Postscript manual (page 121) it's easy to
                   4450:  * see that the control points are given by,
                   4451:  *
                   4452:  *
                   4453:  *     x0' = (x0 + 5 * x1) / 6
                   4454:  *     x1' = (x2 + 5 * x1) / 6
                   4455:  *     x2' = (x1 + x2) / 2
                   4456:  *
                   4457:  *
                   4458:  * where the primed variables are the ones used by curveto. The calculations
                   4459:  * shown above are done in procedure Ds using the coordinates set up in both
                   4460:  * the x[] and y[] arrays.
                   4461:  *
                   4462:  * A simple test of whether your spline drawing is correct would be to use cip
                   4463:  * to draw a spline and some tangent lines at appropriate points and then print
                   4464:  * the file.
                   4465:  *
                   4466:  */
                   4467: 
                   4468:     for ( N = 2; N < sizeof(x)/sizeof(x[0]); N++ )
                   4469:        if (fscanf(fp, "%d %d", &x[N], &y[N]) != 2)
                   4470:                break;
                   4471: 
                   4472:     x[0] = x[1] = hpos;
                   4473:     y[0] = y[1] = vpos;
                   4474: 
                   4475:     for (i = 1; i < N; i++) {
                   4476:        x[i+1] += x[i];
                   4477:        y[i+1] += y[i];
                   4478:     }  /* End for */
                   4479: 
                   4480:     x[N] = x[N-1];
                   4481:     y[N] = y[N-1];
                   4482: 
                   4483:     for (i = ((flag!=1)?0:1); i < ((flag!=1)?N-1:N-2); i++) {
                   4484:        fprintf(tf, "%d %d %d %d %d %d Ds\n", x[i], y[i], x[i+1], y[i+1], x[i+2], y[i+2]);
                   4485:        if ( dobbox == TRUE ) {         /* could be better */
                   4486:            cover((double)(x[i] + x[i+1])/2,(double)-(y[i] + y[i+1])/2);
                   4487:            cover((double)x[i+1], (double)-y[i+1]);
                   4488:            cover((double)(x[i+1] + x[i+2])/2, (double)-(y[i+1] + y[i+2])/2);
                   4489:        }   /* End if */
                   4490:     }  /* End for */
                   4491: 
                   4492:     hgoto(x[N]);                       /* where troff expects to be */
                   4493:     vgoto(y[N]);
                   4494: 
                   4495:     resetpos();                                /* not sure where the printer is */
                   4496: 
                   4497: }   /* End of drawspline */
                   4498: 
                   4499: /*****************************************************************************/
                   4500: 
                   4501: arc_extreme(dx1, dy1, dx2, dy2)
                   4502: 
                   4503:     int                dx1, dy1, dx2, dy2;
                   4504: 
                   4505: {
                   4506: 
                   4507:     double     x0, y0, x1, y1, xc, yc;  /* start, end, center */
                   4508:     double     r, xmin, ymin, xmax, ymax;
                   4509:     int                j, k;
                   4510: 
                   4511: /*
                   4512:  *
                   4513:  * bounding box of a circular arc             Eric Grosse  24 May 84
                   4514:  *
                   4515:  * Conceptually, this routine generates a list consisting of the start,
                   4516:  * end, and whichever north, east, south, and west points lie on the arc.
                   4517:  * The bounding box is then the range of this list.
                   4518:  *     list = {start,end}
                   4519:  *     j = quadrant(start)
                   4520:  *     k = quadrant(end)
                   4521:  *     if( j==k && long way 'round )  append north,west,south,east
                   4522:  *     else
                   4523:  *       while( j != k )
                   4524:  *          append center+radius*[j-th of north,west,south,east unit vectors]
                   4525:  *          j += 1  (mod 4)
                   4526:  *     return( bounding box of list )
                   4527:  * The following code implements this, with simple optimizations.
                   4528:  *
                   4529:  */
                   4530: 
                   4531:     x0 = hpos;
                   4532:     y0 = -vpos;
                   4533:     x1 = hpos + dx1 + dx2;
                   4534:     y1 = -(vpos + dy1 + dy2);
                   4535:     xc = hpos + dx1;
                   4536:     yc = -(vpos + dy1);
                   4537: 
                   4538:     x0 -= xc; y0 -= yc;                        /* move to center */
                   4539:     x1 -= xc; y1 -= yc;
                   4540:     xmin = (x0<x1)?x0:x1; ymin = (y0<y1)?y0:y1;
                   4541:     xmax = (x0>x1)?x0:x1; ymax = (y0>y1)?y0:y1;
                   4542:     r = sqrt(x0*x0 + y0*y0);
                   4543:     if (r > 0.0) {
                   4544:        j = quadrant(x0,y0);
                   4545:        k = quadrant(x1,y1);
                   4546:        if (j == k && y1*x0 < x1*y0) {
                   4547:            /* viewed as complex numbers, if Im(z1/z0)<0, arc is big */
                   4548:            if( xmin > -r) xmin = -r; if( ymin > -r) ymin = -r;
                   4549:            if( xmax <  r) xmax =  r; if( ymax <  r) ymax =  r;
                   4550:        } else {
                   4551:            while (j != k) {
                   4552:                switch (j) {
                   4553:                    case 1: if( ymax <  r) ymax =  r; break; /* north */
                   4554:                    case 2: if( xmin > -r) xmin = -r; break; /* west */
                   4555:                    case 3: if( ymin > -r) ymin = -r; break; /* south */
                   4556:                    case 4: if( xmax <  r) xmax =  r; break; /* east */
                   4557:                }   /* End switch */
                   4558:                j = j%4 + 1;
                   4559:            }   /* End while */
                   4560:        }   /* End else */
                   4561:     }  /* End if */
                   4562: 
                   4563:     xmin += xc; ymin += yc;
                   4564:     xmax += xc; ymax += yc;
                   4565:     cover(xmin, ymin);
                   4566:     cover(xmax, ymax);
                   4567: 
                   4568: }   /* End of arc_extreme */
                   4569: 
                   4570: /*****************************************************************************/
                   4571: 
                   4572: quadrant(x,y)
                   4573: 
                   4574:        double x, y;
                   4575: 
                   4576: {
                   4577: 
                   4578:     if (     x>=0.0 && y> 0.0) return(1);
                   4579:     else if( x< 0.0 && y>=0.0) return(2);
                   4580:     else if( x<=0.0 && y< 0.0) return(3);
                   4581:     else if( x> 0.0 && y<=0.0) return(4);
                   4582:     else                      return 0;        /* shut up lint */
                   4583: 
                   4584: }   /* End of quadrant */
                   4585: 
                   4586: /*****************************************************************************/
                   4587: 
                   4588: beginpath(buf, copy)
                   4589: 
                   4590:     char       *buf;                   /* whatever followed "x X BeginPath" */
                   4591:     int                copy;                   /* ignore *buf if FALSE */
                   4592: 
                   4593: {
                   4594: 
                   4595: /*
                   4596:  *
                   4597:  * Called from devcntrl() whenever an "x X BeginPath" command is read. It's used
                   4598:  * to mark the start of a sequence of drawing commands that should be grouped
                   4599:  * together and treated as a single path. By default the drawing procedures in
                   4600:  * *drawfile treat each drawing command as a separate object, and usually start
                   4601:  * with a newpath (just as a precaution) and end with a stroke. The newpath and
                   4602:  * stroke isolate individual drawing commands and make it impossible to deal with
                   4603:  * composite objects. "x X BeginPath" can be used to mark the start of drawing
                   4604:  * commands that should be grouped together and treated as a single object, and
                   4605:  * part of what's done here ensures that the PostScript drawing commands defined
                   4606:  * in *drawfile skip the newpath and stroke, until after the next "x X DrawPath"
                   4607:  * command. At that point the path that's been built up can be manipulated in
                   4608:  * various ways (eg. filled and/or stroked with a different line width).
                   4609:  *
                   4610:  * String *buf is unnecessary and is only included for compatibility with an early
                   4611:  * verion of that's still in use. In that version "x X BeginObject" marked the
                   4612:  * start of a graphical object, and whatever followed it was passed along in *buf
                   4613:  * and copied to the output file. Color selection is one of the options that's
                   4614:  * available in parsebuf(), so if we get here we add *colorfile to the output
                   4615:  * file before doing anything important.
                   4616:  *
                   4617:  */
                   4618: 
                   4619:     if ( inpath == FALSE ) {
                   4620:        flushtext();
                   4621:        getdraw();
                   4622:        getcolor();
                   4623:        fprintf(tf, "gsave\n");
                   4624:        fprintf(tf, "newpath\n");
                   4625:        fprintf(tf, "%d %d m\n", hpos, vpos);
                   4626:        fprintf(tf, "/inpath true def\n");
                   4627:        if ( copy == TRUE )
                   4628:            fprintf(tf, "%s", buf);
                   4629:        inpath = TRUE;
                   4630:     }  /* End if */
                   4631: 
                   4632: }   /* End of beginpath */
                   4633: 
                   4634: /*****************************************************************************/
                   4635: 
                   4636: drawpath(buf, copy)
                   4637: 
                   4638:     char       *buf;
                   4639:     int                copy;
                   4640: 
                   4641: {
                   4642: 
                   4643: /*
                   4644:  *
                   4645:  * Called from devcntrl() whenever an "x X DrawPath" command is read. It marks the
                   4646:  * end of the path started by the last "x X BeginPath" command and uses whatever
                   4647:  * has been passed along in *buf to manipulate the path (eg. fill and/or stroke
                   4648:  * the path). Once that's been done the drawing procedures are restored to their
                   4649:  * default behavior in which each drawing command is treated as an isolated path.
                   4650:  * The new version (called after "x X DrawPath") has copy set to FALSE, and calls
                   4651:  * parsebuf() to figure out what goes in the output file. It's a feeble attempt
                   4652:  * to free users and preprocessors (like pic) from having to know PostScript. The
                   4653:  * comments in parsebuf() describe what's handled.
                   4654:  *
                   4655:  * In the early version a path was started with "x X BeginObject" and ended with
                   4656:  * "x X EndObject". In both cases *buf was just copied to the output file, and
                   4657:  * was expected to be legitimate PostScript that manipulated the current path.
                   4658:  * The old escape sequence will be supported for a while (for Ravi), and always
                   4659:  * call this routine with copy set to TRUE.
                   4660:  * 
                   4661:  *
                   4662:  */
                   4663: 
                   4664:     if ( inpath == TRUE ) {
                   4665:        if ( copy == TRUE )
                   4666:            fprintf(tf, "%s", buf);
                   4667:        else parsebuf(buf);
                   4668:        fprintf(tf, "grestore\n");
                   4669:        fprintf(tf, "/inpath false def\n");
                   4670:        reset();
                   4671:        inpath = FALSE;
                   4672:     }  /* End if */
                   4673: 
                   4674: }   /* End of drawpath */
                   4675: 
                   4676: /*****************************************************************************/
                   4677: 
                   4678: parsebuf(buf)
                   4679: 
                   4680:     char       *buf;                   /* whatever followed "x X DrawPath" */
                   4681: 
                   4682: {
                   4683: 
                   4684:     char       *p;                     /* usually the next token */
                   4685:     char       *p1;                    /* for grabbing arguments */
                   4686:     char       *pend;                  /* end of the original string (ie. *buf) */
                   4687:     int                gsavelevel = 0;         /* non-zero if we've done a gsave */
                   4688: 
                   4689: /*
                   4690:  *
                   4691:  * Simple minded attempt at parsing the string that followed an "x X DrawPath"
                   4692:  * command. Everything not recognized here is simply ignored - there's absolutely
                   4693:  * no error checking and what was originally in buf is clobbered by strtok().
                   4694:  * A typical *buf might look like,
                   4695:  *
                   4696:  *     gray .9 fill stroke
                   4697:  *
                   4698:  * to fill the current path with a gray level of .9 and follow that by stroking the
                   4699:  * outline of the path. Since unrecognized tokens are ignored the last example
                   4700:  * could also be written as,
                   4701:  *
                   4702:  *     with gray .9 fill then stroke
                   4703:  *
                   4704:  * The "with" and "then" strings aren't recognized tokens and are simply discarded.
                   4705:  * The "stroke", "fill", and "wfill" force out appropriate PostScript code and are
                   4706:  * followed by a grestore. In otherwords changes to the grahics state (eg. a gray
                   4707:  * level or color) are reset to default values immediately after the stroke, fill,
                   4708:  * or wfill tokens. For now "fill" gets invokes PostScript's eofill operator and
                   4709:  * "wfill" calls fill (ie. the operator that uses the non-zero winding rule).
                   4710:  *
                   4711:  * The tokens that cause temporary changes to the graphics state are "gray" (for
                   4712:  * setting the gray level), "color" (for selecting a known color from the colordict
                   4713:  * dictionary defined in *colorfile), and "line" (for setting the line width). All
                   4714:  * three tokens can be extended since strncmp() makes the comparison. For example
                   4715:  * the strings "line" and "linewidth" accomplish the same thing. Colors are named
                   4716:  * (eg. "red"), but must be appropriately defined in *colorfile. For now all three
                   4717:  * tokens must be followed immediately by their single argument. The gray level
                   4718:  * (ie. the argument that follows "gray") should be a number between 0 and 1, with
                   4719:  * 0 for black and 1 for white.
                   4720:  *
                   4721:  * To pass straight PostScript through enclose the appropriate commands in double
                   4722:  * quotes. Straight PostScript is only bracketed by the outermost gsave/grestore
                   4723:  * pair (ie. the one from the initial "x X BeginPath") although that's probably
                   4724:  * a mistake. Suspect I may have to change the double quote delimiters.
                   4725:  *
                   4726:  */
                   4727: 
                   4728:     pend = buf + strlen(buf);
                   4729:     p = strtok(buf, " \n");
                   4730: 
                   4731:     while ( p != NULL ) {
                   4732:        if ( gsavelevel == 0 ) {
                   4733:            fprintf(tf, "gsave\n");
                   4734:            gsavelevel++;
                   4735:        }   /* End if */
                   4736:        if ( strcmp(p, "stroke") == 0 ) {
                   4737:            fprintf(tf, "closepath stroke\ngrestore\n");
                   4738:            gsavelevel--;
                   4739:        } else if ( strcmp(p, "openstroke") == 0 ) {
                   4740:            fprintf(tf, "stroke\ngrestore\n");
                   4741:            gsavelevel--;
                   4742:        } else if ( strcmp(p, "fill") == 0 ) {
                   4743:            fprintf(tf, "eofill\ngrestore\n");
                   4744:            gsavelevel--;
                   4745:        } else if ( strcmp(p, "wfill") == 0 ) {
                   4746:            fprintf(tf, "fill\ngrestore\n");
                   4747:            gsavelevel--;
                   4748:        } else if ( strcmp(p, "sfill") == 0 ) {
                   4749:            fprintf(tf, "eofill\ngrestore\ngsave\nstroke\ngrestore\n");
                   4750:            gsavelevel--;
                   4751:        } else if ( strncmp(p, "gray", strlen("gray")) == 0 ) {
                   4752:            p1 = strtok(NULL, " \n");
                   4753:            fprintf(tf, "%s setgray\n", p1);
                   4754:        } else if ( strncmp(p, "color", strlen("color")) == 0 ) {
                   4755:            p1 = strtok(NULL, " \n");
                   4756:            fprintf(tf, "/%s setcolor\n", p1);
                   4757:        } else if ( strncmp(p, "line", strlen("line")) == 0 ) {
                   4758:            p1 = strtok(NULL, " \n");
                   4759:            fprintf(tf, "%s resolution mul 2 div setlinewidth\n", p1);
                   4760:        } else if ( strncmp(p, "reverse", strlen("reverse")) == 0 )
                   4761:            fprintf(tf, "reversepath\n");
                   4762:        else if ( *p == '"' ) {
                   4763:            for ( ; gsavelevel > 0; gsavelevel-- )
                   4764:                fprintf(tf, "grestore\n");
                   4765:            if ( (p1 = p + strlen(p)) < pend )
                   4766:                *p1 = ' ';
                   4767:            p = strtok(p, "\"\n");
                   4768:            fprintf(tf, "%s\n", p);
                   4769:        }   /* End else */
                   4770:        p = strtok(NULL, " \n");
                   4771:     }  /* End while */
                   4772: 
                   4773:     for ( ; gsavelevel > 0; gsavelevel-- )
                   4774:        fprintf(tf, "grestore\n");
                   4775: 
                   4776: }   /* End of parsebuf */
                   4777: 
                   4778: /*****************************************************************************/
                   4779: 
                   4780: getbaseline()
                   4781: 
                   4782: {
                   4783: 
                   4784: /*
                   4785:  *
                   4786:  * Responsible for making sure the PostScript procedures needed for printing text
                   4787:  * along an arbitrary baseline are downloaded from *baselinefile. Done at most
                   4788:  * once per job, and only if the the stuff is really used.
                   4789:  *
                   4790:  */
                   4791: 
                   4792:     if ( gotbaseline == FALSE )
                   4793:        exportfile(baselinefile);
                   4794: 
                   4795:     if ( tf == stdout )
                   4796:        gotbaseline = TRUE;
                   4797: 
                   4798: }   /* End of getbaseline */
                   4799: 
                   4800: /*****************************************************************************/
                   4801: 
                   4802: newbaseline(buf)
                   4803: 
                   4804:     char       *buf;                   /* whatever followed "x X NewBaseline" */
                   4805: 
                   4806: {
                   4807: 
                   4808:     char       *p;                     /* for eliminating white space etc. */
                   4809: 
                   4810: /*
                   4811:  *
                   4812:  * Called from devcntrl() whenever an "x X NewBaseline" command is recognized. We
                   4813:  * assume whatever is in *buf is a set of parametric equations that describe the
                   4814:  * new baseline. Equations for x(t), y(t), dx/dt, and dy/dt must be written in
                   4815:  * PostScript, bracketed by { and } characters, and supplied in exactly that order.
                   4816:  * In particular the equation for x must come first in *buf and it ends up as the
                   4817:  * last one on the stack, while the equation for dy/dt comes last (in *buf) and
                   4818:  * ends up on the top of the PostScript stack. For example if *buf is given by,
                   4819:  *
                   4820:  *     {} {180 mul 3.1416 div cos} {pop 1} {180 mul 3.1416 div sin neg}
                   4821:  *
                   4822:  * text will be printed along the curve y = cos(x).
                   4823:  *
                   4824:  * Angles given in radians must be converted to degrees for the PostScript trig
                   4825:  * functions, and things are scaled so that 1 unit maps into 1 inch. In the last
                   4826:  * example the cosine curve that describes the baseline has an amplitude of 1 inch.
                   4827:  * As another example of this rather confusing syntax if *buf is,
                   4828:  *
                   4829:  *     {} {} {pop 1} {pop 1}
                   4830:  *
                   4831:  * the baseline will be the 45 degree line y = x.
                   4832:  *
                   4833:  * When any of the four functions is used they're called with a single number on
                   4834:  * the stack that's equal to the current value of the parameter t. The coordinate
                   4835:  * system axes run parallel to the PostScript coordinate system that's currently
                   4836:  * being used.
                   4837:  *
                   4838:  */
                   4839: 
                   4840:     for ( p = buf; *p; p++ )           /* eliminate trailing '\n' */
                   4841:        if ( *p == '\n' ) {
                   4842:            *p = '\0';
                   4843:            break;
                   4844:        }   /* End if */
                   4845: 
                   4846:     for ( p = buf; *p && (*p == ' ' || *p == ':'); p++ ) ;
                   4847: 
                   4848:     if ( *p != '\0' ) {                        /* something's there */
                   4849:        flushtext();
                   4850:        getbaseline();
                   4851:        fprintf(tf, "mark resolution %s newbaseline\n", p);
                   4852:        reset();
                   4853:     }  /* End if */
                   4854: 
                   4855: }   /* End of newbaseline */
                   4856: 
                   4857: /*****************************************************************************/
                   4858: 
                   4859: drawtext(buf)
                   4860: 
                   4861:     char       *buf;                   /* whatever followed "x X DrawText */
                   4862: 
                   4863: {
                   4864: 
                   4865:     char       *p;                     /* for eliminating white space etc. */
                   4866: 
                   4867: /*
                   4868:  *
                   4869:  * Called from devcntrl() whenever an "x X DrawText command is recognized. *buf
                   4870:  * should contain three arguments in the following order. First comes the text we
                   4871:  * want to print along the current baseline. Right now the string should be given
                   4872:  * as a PostScript string using characters '(' and ')' as the delimiters. Next in
                   4873:  * *buf comes a justification mode that can be the words left, right, or center.
                   4874:  * Last comes a number that represents the starting value of the parameter t that's
                   4875:  * given as the argument to the parametric equations that describe the current
                   4876:  * baseline. For example if *buf is given by,
                   4877:  *
                   4878:  *     (hello world) left .5
                   4879:  *
                   4880:  * hello world will be printed along the path described by the current baseline
                   4881:  * and left justified at whatever (x(.5), y(.5)) happens to be. Usually will be
                   4882:  * preceeded by an "x X NewBaseline" call that defines the current baseline. The
                   4883:  * origin of the coordinate system used by the parametric equations will be the
                   4884:  * current point.
                   4885:  *
                   4886:  */
                   4887: 
                   4888:     for ( p = buf; *p; p++ )           /* eliminate trailing '\n' */
                   4889:        if ( *p == '\n' ) {
                   4890:            *p = '\0';
                   4891:            break;
                   4892:        }   /* End if */
                   4893: 
                   4894:     for ( p = buf; *p && (*p == ' ' || *p == ':'); p++ ) ;
                   4895: 
                   4896:     if ( *p != '\0' ) {                        /* something's there */
                   4897:        flushtext();
                   4898:        getbaseline();
                   4899:        xymove(hpos, vpos);
                   4900:        fprintf(tf, "mark %s drawfunnytext\n", p);
                   4901:        resetpos();
                   4902:     }  /* End if */
                   4903: 
                   4904: }   /* End of drawtext */
                   4905: 
                   4906: /*****************************************************************************/
                   4907: 
                   4908: settext(buf)
                   4909: 
                   4910:     char       *buf;
                   4911: 
                   4912: {
                   4913: 
                   4914:     char       *p;
                   4915: 
                   4916: /*
                   4917:  *
                   4918:  * Does whatever is needed to ensure any text that follows will be set along the
                   4919:  * curve described by the PostScript procedures listed in *buf. If *buf doesn't
                   4920:  * contain anything useful (eg. just a newline) things are restored to whatever
                   4921:  * they originally were. Doesn't work well if we try to start in the middle of a
                   4922:  * line of text.
                   4923:  *
                   4924:  * The parametric equations needed are,
                   4925:  *
                   4926:  *     x = f(t)
                   4927:  *     y = g(t)
                   4928:  *     dx/dt = f'(t)
                   4929:  *     dy/dt = g'(t)
                   4930:  *
                   4931:  * and must be given as proper PostScript procedures. The equation for x must come
                   4932:  * first (ie. it ends up on the bottom of the stack) and the equation for dy/dt
                   4933:  * must be given last (ie. it ends up on top of the stack). For example if *buf
                   4934:  * is given by,
                   4935:  *
                   4936:  *     {} {180 mul 3.1416 div cos} {pop 1} {180 mul 3.1416 div sin neg}
                   4937:  *
                   4938:  * text will be set along the curve y=cos(x).
                   4939:  *
                   4940:  */
                   4941: 
                   4942:     flushtext();
                   4943:     getbaseline();
                   4944: 
                   4945:     for ( p = buf; *p && *p == ' '; p++ ) ;
                   4946: 
                   4947:     if ( *p && *p != '\n' ) {
                   4948:        encoding = maxencoding + 2;
                   4949:        fprintf(tf, "mark resolution %s newbaseline\n", buf);
                   4950:     } else encoding = realencoding;
                   4951: 
                   4952:     fprintf(tf, "%d setdecoding\n", encoding);
                   4953:     resetpos();
                   4954: 
                   4955: }   /* End of settext */
                   4956: 
                   4957: /*****************************************************************************/
                   4958: 
                   4959: 0707070014231030511006440057030057030000010277260522627500600002700000002363post.src/dpost/draw.ps%
                   4960: % Version 3.3.2 drawing procedures for dpost. Automatically pulled in when
                   4961: % needed.
                   4962: %
                   4963: 
                   4964: /inpath false def
                   4965: /savematrix matrix def
                   4966: 
                   4967: /Dl {
                   4968:        inpath
                   4969:                {pop pop neg lineto}
                   4970:                {newpath neg moveto neg lineto stroke}
                   4971:        ifelse
                   4972: } bind def
                   4973: 
                   4974: /De {
                   4975:        /y1 exch 2 div def
                   4976:        /x1 exch 2 div def
                   4977:        /savematrix savematrix currentmatrix def
                   4978:        neg exch x1 add exch translate
                   4979:        x1 y1 scale
                   4980:        0 0 1 0 360
                   4981:        inpath
                   4982:                {1 0 moveto arc savematrix setmatrix}
                   4983:                {newpath arc savematrix setmatrix stroke}
                   4984:        ifelse
                   4985: } bind def
                   4986: 
                   4987: /Da {
                   4988:        /dy2 exch def
                   4989:        /dx2 exch def
                   4990:        /dy1 exch def
                   4991:        /dx1 exch def
                   4992:        dy1 add neg exch dx1 add exch
                   4993:        dx1 dx1 mul dy1 dy1 mul add sqrt
                   4994:        dy1 dx1 neg atan
                   4995:        dy2 neg dx2 atan
                   4996:        inpath
                   4997:                {arc}
                   4998:                {newpath arc stroke}
                   4999:        ifelse
                   5000: } bind def
                   5001: 
                   5002: /DA {
                   5003:        /dy2 exch def
                   5004:        /dx2 exch def
                   5005:        /dy1 exch def
                   5006:        /dx1 exch def
                   5007:        dy1 add neg exch dx1 add exch
                   5008:        dx1 dx1 mul dy1 dy1 mul add sqrt
                   5009:        dy1 dx1 neg atan
                   5010:        dy2 neg dx2 atan
                   5011:        inpath
                   5012:                {arcn}
                   5013:                {newpath arcn stroke}
                   5014:        ifelse
                   5015: } bind def
                   5016: 
                   5017: /Ds {
                   5018:        /y2 exch def
                   5019:        /x2 exch def
                   5020:        /y1 exch def
                   5021:        /x1 exch def
                   5022:        /y0 exch def
                   5023:        /x0 exch def
                   5024:        x0 5 x1 mul add 6 div
                   5025:        y0 5 y1 mul add -6 div
                   5026:        x2 5 x1 mul add 6 div
                   5027:        y2 5 y1 mul add -6 div
                   5028:        x1 x2 add 2 div
                   5029:        y1 y2 add -2 div
                   5030:        inpath
                   5031:                {curveto}
                   5032:                {newpath x0 x1 add 2 div y0 y1 add -2 div moveto curveto stroke}
                   5033:        ifelse
                   5034: } bind def
                   5035: 0707070014231030521006440057030057030000010302600522627500600002600000030664post.src/dpost/font.c/*
                   5036:  *
                   5037:  * Typesetter font tables routines - for postprocessors.
                   5038:  *
                   5039:  */
                   5040: 
                   5041: #include <stdio.h>
                   5042: #include <ctype.h>
                   5043: 
                   5044: #include "gen.h"
                   5045: #include "ext.h"
                   5046: #include "font.h"
                   5047: 
                   5048: Font   *mount[MAXFONTS+1];             /* mount table - pointers into fonts[] */
                   5049: Font   fonts[MAXFONTS+2];              /* font data - guarantee one empty slot */
                   5050: 
                   5051: int    fcount;                         /* entries in fonts[] */
                   5052: int    mcount;                         /* fonts currently in memory */
                   5053: int    mlimit = MAXFONTS+1;            /* and the most we'll allow */
                   5054: 
                   5055: char   *chnames[MAXCH];                /* special character hash table */
                   5056: int    nchnames;                       /* number of entries in chnames[] */
                   5057: 
                   5058: extern int     devres;
                   5059: extern int     unitwidth;
                   5060: extern int     nfonts;
                   5061: 
                   5062: /*****************************************************************************/
                   5063: 
                   5064: checkdesc(path)
                   5065: 
                   5066:     char       *path;
                   5067: 
                   5068: {
                   5069: 
                   5070:     char       buf[150];
                   5071:     FILE       *fp;
                   5072:     int                val = 0;
                   5073: 
                   5074: /*
                   5075:  *
                   5076:  * Return non-zero if the typesetter description file path includes,
                   5077:  *
                   5078:  *     PDL PostScript
                   5079:  *
                   5080:  * before the charset table.
                   5081:  *
                   5082:  */
                   5083: 
                   5084:     if ( (fp = fopen(path, "r")) != NULL ) {
                   5085:        while ( fscanf(fp, "%s", buf) != EOF ) {
                   5086:            if ( strcmp(buf, "PDL") == 0 ) {
                   5087:                fscanf(fp, "%s", buf);
                   5088:                val = strcmp(buf, "PostScript") == 0;
                   5089:                break;
                   5090:            } else if ( strcmp(buf, "charset") == 0 )
                   5091:                break;
                   5092:            skipline(fp);
                   5093:        }   /* End while */
                   5094:        fclose(fp);
                   5095:     }  /* End if */
                   5096: 
                   5097:     return(val);
                   5098: 
                   5099: }   /* End of checkdesc */
                   5100: 
                   5101: /*****************************************************************************/
                   5102: 
                   5103: getdesc(path)
                   5104: 
                   5105:     char       *path;
                   5106: 
                   5107: {
                   5108: 
                   5109:     char       buf[150];
                   5110:     FILE       *fp;
                   5111:     int                n;
                   5112: 
                   5113: /*
                   5114:  *
                   5115:  * Read a typesetter description file. Font and size lists are discarded. Only
                   5116:  * used to get to the start of the next command.
                   5117:  *
                   5118:  */
                   5119: 
                   5120:     if ( (fp = fopen(path, "r")) == NULL )
                   5121:        return(-1);
                   5122: 
                   5123:     while ( fscanf(fp, "%s", buf) != EOF ) {
                   5124:        if ( strcmp(buf, "res") == 0 )
                   5125:            fscanf(fp, "%d", &devres);
                   5126:        else if ( strcmp(buf, "unitwidth") == 0 )
                   5127:            fscanf(fp, "%d", &unitwidth);
                   5128:        else if ( strcmp(buf, "sizes") == 0 )
                   5129:            while ( fscanf(fp, "%d", &n) != EOF && n != 0 ) ;
                   5130:        else if ( strcmp(buf, "inmemory") == 0 )
                   5131:            fscanf(fp, "%d", &mlimit);
                   5132:        else if ( strcmp(buf, "Encoding") == 0 ) {
                   5133:            fscanf(fp, "%s", buf);
                   5134:            fontencoding = strsave(buf);
                   5135:        } else if ( strcmp(buf, "fonts") == 0 ) {
                   5136:            fscanf(fp, "%d", &nfonts);
                   5137:            for ( n = 0; n < nfonts; n++ )
                   5138:                fscanf(fp, "%s", buf);
                   5139:        } else if ( strcmp(buf, "charset") == 0 ) {
                   5140:            while ( fscanf(fp, "%s", buf) != EOF )
                   5141:                chadd(buf);
                   5142:            break;
                   5143:        }   /* End if */
                   5144:        skipline(fp);
                   5145:     }  /* End while */
                   5146: 
                   5147:     fclose(fp);
                   5148:     return(1);
                   5149: 
                   5150: }   /* End of getdesc */
                   5151: 
                   5152: /*****************************************************************************/
                   5153: 
                   5154: getfont(path, fpos)
                   5155: 
                   5156:     char       *path;
                   5157:     Font       *fpos;
                   5158: 
                   5159: {
                   5160: 
                   5161:     FILE       *fin;
                   5162:     Chwid      chtemp[MAXCH];
                   5163:     static     Chwid chinit;
                   5164:     int                i, nw, n, wid, code;
                   5165:     char       buf[300], ch[100], s1[100], s2[100], s3[100], cmd[100];
                   5166: 
                   5167: 
                   5168: /*
                   5169:  *
                   5170:  * Read a width table from path into *fpos. Skip unnamed characters, spacewidth,
                   5171:  * ligatures, ascender/descender entries, and anything else not recognized. All
                   5172:  * calls should come through mountfont().
                   5173:  *
                   5174:  */
                   5175: 
                   5176:     if ( fpos->state == INMEMORY )
                   5177:        return(1);
                   5178: 
                   5179:     if ( (fin = fopen(path, "r")) == NULL )
                   5180:        return(-1);
                   5181: 
                   5182:     if ( fpos->state == NEWFONT ) {
                   5183:        if ( ++fcount > MAXFONTS+1 )
                   5184:            return(-1);
                   5185:        fpos->path = strsave(path);
                   5186:     }  /* End if */
                   5187: 
                   5188:     if ( ++mcount > mlimit && mcount > nfonts+1 )
                   5189:        freefonts();
                   5190: 
                   5191:     for ( i = 0; i < ALPHABET-32; i++ )
                   5192:        chtemp[i] = chinit;
                   5193: 
                   5194:     while ( fscanf(fin, "%s", cmd) != EOF ) {
                   5195:        if ( strcmp(cmd, "name") == 0 ) {
                   5196:            release(fpos->name);
                   5197:            fscanf(fin, "%s", buf);
                   5198:            fpos->name = strsave(buf);
                   5199:        } else if ( strcmp(cmd, "fontname") == 0 ) {
                   5200:            release(fpos->fontname);
                   5201:            fscanf(fin, "%s", buf);
                   5202:            fpos->fontname = strsave(buf);
                   5203:        } else if ( strcmp(cmd, "special") == 0 )
                   5204:            fpos->specfont = 1;
                   5205:        else if ( strcmp(cmd, "named") == 0 )   /* in prologue or somewhere else */
                   5206:            fpos->flags |= NAMED;
                   5207:        else if ( strcmp(cmd, "charset") == 0 ) {
                   5208:            skipline(fin);
                   5209:            nw = ALPHABET-32;
                   5210:            while ( fgets(buf, sizeof(buf), fin) != NULL ) {
                   5211:                sscanf(buf, "%s %s %s %s", ch, s1, s2, s3);
                   5212:                if ( s1[0] != '"' ) {           /* not a synonym */
                   5213:                    sscanf(s1, "%d", &wid);
                   5214:                    code = strtol(s3, 0, 0);    /* dec/oct/hex */
                   5215:                }   /* End if */
                   5216:                if ( strlen(ch) == 1 ) {        /* it's ascii */
                   5217:                    n = ch[0] - 32;             /* origin omits non-graphics */
                   5218:                    chtemp[n].num = ch[0];
                   5219:                    chtemp[n].wid = wid;
                   5220:                    chtemp[n].code = code;
                   5221:                } else if ( ch[0] == '\\' && ch[1] == '0' ) {
                   5222:                    n = strtol(ch+1, 0, 0) - 32;        /* check against ALPHABET? */
                   5223:                    chtemp[n].num = n + 32;
                   5224:                    chtemp[n].wid = wid;
                   5225:                    chtemp[n].code = code;
                   5226:                } else if ( strcmp(ch, "---") != 0 ) {  /* ignore unnamed chars */
                   5227:                    if ( (n = chindex(ch)) == -1 )      /* global? */
                   5228:                        n = chadd(ch);
                   5229:                    chtemp[nw].num = n;
                   5230:                    chtemp[nw].wid = wid;
                   5231:                    chtemp[nw].code = code;
                   5232:                    nw++;
                   5233:                }   /* End else */
                   5234:            }   /* End while */
                   5235:            break;
                   5236:        }   /* End else */
                   5237:        skipline(fin);
                   5238:     }  /* End while */
                   5239: 
                   5240:     fclose(fin);
                   5241: 
                   5242:     fpos->wp = (Chwid *)allocate(nw * sizeof(Chwid));
                   5243:     for ( i = 0; i < nw; i++ )
                   5244:        fpos->wp[i] = chtemp[i];
                   5245: 
                   5246:     fpos->nchars = nw;
                   5247:     fpos->state = INMEMORY;
                   5248: 
                   5249:     return(1);
                   5250: 
                   5251: }   /* End of getfont */
                   5252: 
                   5253: /*****************************************************************************/
                   5254: 
                   5255: mountfont(path, m)
                   5256: 
                   5257:     char       *path;
                   5258:     int                m;
                   5259: 
                   5260: {
                   5261: 
                   5262:     Font       *fpos;
                   5263: 
                   5264: /*
                   5265:  *
                   5266:  * Mount font table from file path at position m. Mounted fonts are guaranteed
                   5267:  * to be in memory.
                   5268:  *
                   5269:  */
                   5270: 
                   5271:     if ( m < 0 || m > MAXFONTS )
                   5272:        return(-1);
                   5273: 
                   5274:     if ( mount[m] != NULL ) {
                   5275:        if ( mount[m]->path != NULL && strcmp(path, mount[m]->path) == 0 ) {
                   5276:            if ( mount[m]->state == INMEMORY )
                   5277:                return(1);
                   5278:        } else {
                   5279:            mount[m]->mounted--;
                   5280:            mount[m] = NULL;
                   5281:        }   /* End else */
                   5282:     }  /* End if */
                   5283: 
                   5284:     mount[m] = fpos = &fonts[findfont(path)];
                   5285:     mount[m]->mounted++;
                   5286:     return(getfont(path, fpos));
                   5287: 
                   5288: }   /* End of mountfont */
                   5289: 
                   5290: /*****************************************************************************/
                   5291: 
                   5292: freefonts()
                   5293: 
                   5294: {
                   5295: 
                   5296:     int                n;
                   5297: 
                   5298: /*
                   5299:  *
                   5300:  * Release memory used by all unmounted fonts - except for the path string.
                   5301:  *
                   5302:  */
                   5303: 
                   5304:     for ( n = 0; n < MAXFONTS+2; n++ )
                   5305:        if ( fonts[n].state == INMEMORY && fonts[n].mounted == 0 ) {
                   5306:            release(fonts[n].wp);
                   5307:            fonts[n].wp = NULL;
                   5308:            fonts[n].state = RELEASED;
                   5309:            mcount--;
                   5310:        }   /* End if */
                   5311: 
                   5312: }   /* End of freefonts */
                   5313: 
                   5314: /*****************************************************************************/
                   5315: 
                   5316: findfont(path)
                   5317: 
                   5318:     char       *path;
                   5319: 
                   5320: {
                   5321: 
                   5322:     register   n;
                   5323: 
                   5324: /*
                   5325:  *
                   5326:  * Look for path in the fonts table. Returns the index where it was found or can
                   5327:  * be inserted (if not found).
                   5328:  *
                   5329:  */
                   5330: 
                   5331:     for ( n = hash(path, MAXFONTS+2); fonts[n].state != NEWFONT; n = (n+1) % (MAXFONTS+2) )
                   5332:        if ( strcmp(path, fonts[n].path) == 0 )
                   5333:            break;
                   5334:     return(n);
                   5335: 
                   5336: }   /* End of findfont */
                   5337: 
                   5338: /*****************************************************************************/
                   5339: 
                   5340: mounted(m)
                   5341: 
                   5342:     int                m;
                   5343: 
                   5344: {
                   5345: 
                   5346: /*
                   5347:  *
                   5348:  * Return 1 if a font is mounted at position m.
                   5349:  *
                   5350:  */
                   5351: 
                   5352:     return((m >= 0 && m <= MAXFONTS && mount[m] != NULL) ? 1 : 0);
                   5353: 
                   5354: }   /* End of mounted */
                   5355: 
                   5356: /*****************************************************************************/
                   5357: 
                   5358: onfont(c, m)
                   5359: 
                   5360:     int                c;
                   5361:     int                m;
                   5362: 
                   5363: {
                   5364: 
                   5365:     register Font      *fp;
                   5366:     register Chwid     *cp, *ep;
                   5367: 
                   5368: /*
                   5369:  *
                   5370:  * Returns the position of character c in the font mounted at m, or -1 if the
                   5371:  * character is not found.
                   5372:  *
                   5373:  */
                   5374: 
                   5375:     if ( mounted(m) ) {
                   5376:        fp = mount[m];
                   5377:        if ( c < ALPHABET ) {
                   5378:            if ( fp->wp[c-32].num == c )        /* ascii at front */
                   5379:                return c - 32;
                   5380:            else return -1;
                   5381:        }   /* End if */
                   5382: 
                   5383:        cp = &fp->wp[ALPHABET-32];
                   5384:        ep = &fp->wp[fp->nchars];
                   5385:        for ( ; cp < ep; cp++ )                 /* search others */
                   5386:            if ( cp->num == c )
                   5387:                return cp - &fp->wp[0];
                   5388:     }  /* End if */
                   5389: 
                   5390:     return -1;
                   5391: 
                   5392: }   /* End of onfont */
                   5393: 
                   5394: /*****************************************************************************/
                   5395: 
                   5396: chwidth(n, m)
                   5397: 
                   5398:     int                n;
                   5399:     int                m;
                   5400: 
                   5401: {
                   5402: 
                   5403: /*
                   5404:  *
                   5405:  * Return width of the character at position n in the font mounted at m. Skip
                   5406:  * bounds checks - assume it's already been done.
                   5407:  *
                   5408:  */
                   5409: 
                   5410:     return(mount[m]->wp[n].wid);
                   5411: 
                   5412: }   /* End of chwidth */
                   5413: 
                   5414: /*****************************************************************************/
                   5415: 
                   5416: chcode(n, m)
                   5417: 
                   5418:     int                n;
                   5419:     int                m;
                   5420: 
                   5421: {
                   5422: 
                   5423: /*
                   5424:  *
                   5425:  * Return typesetter code for the character at position n in the font mounted
                   5426:  * at m. Skip bounds checks - assume it's already been done. 
                   5427:  *
                   5428:  */
                   5429: 
                   5430:     return(mount[m]->wp[n].code);
                   5431: 
                   5432: }   /* End of chcode */
                   5433: 
                   5434: /*****************************************************************************/
                   5435: 
                   5436: chindex(s)
                   5437: 
                   5438:     char       *s;
                   5439: 
                   5440: {
                   5441: 
                   5442:     register   i;
                   5443: 
                   5444: /*
                   5445:  *
                   5446:  * Look for s in global character name table. Hash table is guaranteed to have
                   5447:  * at least one empty slot (by chadd()) so the loop terminate.
                   5448:  *
                   5449:  */
                   5450: 
                   5451:     for ( i = hash(s, MAXCH); chnames[i] != NULL; i = (i+1) % MAXCH )
                   5452:        if ( strcmp(s, chnames[i]) == 0 )
                   5453:            return(i+ALPHABET);
                   5454:     return(-1);
                   5455: 
                   5456: }   /* End of chindex */
                   5457: 
                   5458: /*****************************************************************************/
                   5459: 
                   5460: chadd(s)
                   5461: 
                   5462:     char       *s;
                   5463: 
                   5464: {
                   5465: 
                   5466:     register   i;
                   5467: 
                   5468: /*
                   5469:  *
                   5470:  * Add s to the global character name table. Leave one empty slot so loops
                   5471:  * terminate.
                   5472:  *
                   5473:  */
                   5474: 
                   5475:     if ( nchnames >= MAXCH - 1 )
                   5476:        error(FATAL, "out of table space adding character %s", s);
                   5477: 
                   5478:     for ( i = hash(s, MAXCH); chnames[i] != NULL; i = (i+1) % MAXCH ) ;
                   5479: 
                   5480:     nchnames++;
                   5481:     chnames[i] = strsave(s);
                   5482: 
                   5483:     return(i+ALPHABET);
                   5484: 
                   5485: }   /* End of chadd */
                   5486: 
                   5487: /*****************************************************************************/
                   5488: 
                   5489: char *chname(n)
                   5490: 
                   5491:     int                n;
                   5492: 
                   5493: {
                   5494: 
                   5495: /*
                   5496:  *
                   5497:  * Returns string for the character with index n.
                   5498:  *
                   5499:  */
                   5500: 
                   5501:     return(chnames[n-ALPHABET]);
                   5502: 
                   5503: }   /* End of chname */
                   5504: 
                   5505: /*****************************************************************************/
                   5506: 
                   5507: hash(s, l)
                   5508: 
                   5509:     char       *s;
                   5510:     int                l;
                   5511: 
                   5512: {
                   5513: 
                   5514:     register   i;
                   5515: 
                   5516: /*
                   5517:  *
                   5518:  * Return the hash index for string s in a table of length l. Probably should
                   5519:  * make i unsigned and mod once at the end.
                   5520:  *
                   5521:  */
                   5522: 
                   5523:     for ( i = 0; *s != '\0'; s++ )
                   5524:        i = (i * 10 + *s) % l;
                   5525:     return(i);
                   5526: 
                   5527: }   /* End of hash */
                   5528: 
                   5529: /*****************************************************************************/
                   5530: 
                   5531: char *strsave(s)
                   5532: 
                   5533:     char       *s;
                   5534: 
                   5535: {
                   5536: 
                   5537:     char       *ptr = NULL;
                   5538: 
                   5539: /*
                   5540:  *
                   5541:  * Make a permanent copy of string s.
                   5542:  *
                   5543:  */
                   5544: 
                   5545:     if ( s != NULL ) {
                   5546:        ptr = (char *)allocate(strlen(s)+1);
                   5547:        strcpy(ptr, s);
                   5548:     }  /* End if */
                   5549:     return(ptr);
                   5550: 
                   5551: }   /* End of strsave */
                   5552: 
                   5553: /*****************************************************************************/
                   5554: 
                   5555: char *allocate(count)
                   5556: 
                   5557:     int                count;
                   5558: 
                   5559: {
                   5560: 
                   5561:     char       *ptr;
                   5562: 
                   5563: /*
                   5564:  *
                   5565:  * Allocates count bytes. Free unmounted fonts if the first attempt fails. To
                   5566:  * be absolutely correct all memory allocation should be done by this routine.
                   5567:  *
                   5568:  */
                   5569: 
                   5570:     if ( (ptr = (char *)malloc(count)) == NULL ) {
                   5571:        freefonts();
                   5572:        if ( (ptr = (char *)malloc(count)) == NULL )
                   5573:            error(FATAL, "no memory");
                   5574:     }  /* End if */
                   5575:     return(ptr);
                   5576: 
                   5577: }   /* End of allocate */
                   5578: 
                   5579: /*****************************************************************************/
                   5580: 
                   5581: release(ptr)
                   5582: 
                   5583:     char       *ptr;
                   5584: 
                   5585: {
                   5586: 
                   5587: /*
                   5588:  *
                   5589:  * Free memory provided ptr isn't NULL.
                   5590:  *
                   5591:  */
                   5592: 
                   5593:     if ( ptr != NULL )
                   5594:        free(ptr);
                   5595: 
                   5596: }   /* End of release */
                   5597: 
                   5598: /*****************************************************************************/
                   5599: 
                   5600: dumpmount(m)
                   5601: 
                   5602:     int                m;
                   5603: 
                   5604: {
                   5605: 
                   5606: /*
                   5607:  *
                   5608:  * Dumps the font mounted at position n.
                   5609:  *
                   5610:  */
                   5611: 
                   5612:     if ( mount[m] != NULL )
                   5613:        dumpfont((mount[m] - &fonts[0]));
                   5614:     else fprintf(stderr, "no font mounted at %d\n", m);
                   5615: 
                   5616: }   /* End of dumpmount */
                   5617: 
                   5618: /*****************************************************************************/
                   5619: 
                   5620: dumpfont(n)
                   5621: 
                   5622:     int                n;
                   5623: 
                   5624: {
                   5625: 
                   5626:     int                i;
                   5627:     Font       *fpos;
                   5628:     char       *str;
                   5629: 
                   5630: /*
                   5631:  *
                   5632:  * Dump of everything known about the font saved at fonts[n].
                   5633:  *
                   5634:  */
                   5635: 
                   5636:     fpos = &fonts[n];
                   5637: 
                   5638:     if ( fpos->state ) {
                   5639:        fprintf(stderr, "path %s\n", fpos->path);
                   5640:        fprintf(stderr, "state %d\n", fpos->state);
                   5641:        fprintf(stderr, "flags %d\n", fpos->flags);
                   5642:        fprintf(stderr, "mounted %d\n", fpos->mounted);
                   5643:        fprintf(stderr, "nchars %d\n", fpos->nchars);
                   5644:        fprintf(stderr, "special %d\n", fpos->specfont);
                   5645:        fprintf(stderr, "name %s\n", fpos->name);
                   5646:        fprintf(stderr, "fontname %s\n", fpos->fontname);
                   5647:        if ( fpos->state == INMEMORY ) {
                   5648:            fprintf(stderr, "charset\n");
                   5649:            for ( i = 0; i < fpos->nchars; i++ ) {
                   5650:                if ( fpos->wp[i].num > 0 ) {
                   5651:                    if ( fpos->wp[i].num < ALPHABET )
                   5652:                        fprintf(stderr, "%c\t%d\t%d\n", fpos->wp[i].num,
                   5653:                                fpos->wp[i].wid, fpos->wp[i].code);
                   5654:                    else {
                   5655:                        str = chname(fpos->wp[i].num);
                   5656:                        if ( *str == '#' && isdigit(*(str+1)) && isdigit(*(str+2)) )
                   5657:                            str = "---";
                   5658:                        fprintf(stderr, "%s\t%d\t%d\n", str, fpos->wp[i].wid,
                   5659:                                fpos->wp[i].code);
                   5660:                    }   /* End else */
                   5661:                }   /* End if */
                   5662:            }   /* End for */
                   5663:        } else fprintf(stderr, "charset: not in memory\n");
                   5664:     } else fprintf(stderr, "empty font: %d\n", n);
                   5665: 
                   5666:     putc('\n', stderr);
                   5667: 
                   5668: }   /* End of dumpfont */
                   5669: 
                   5670: /*****************************************************************************/
                   5671: 
                   5672: 0707070014231030531006440057030057030000010277660522627500700002600000002616post.src/dpost/font.h/*
                   5673:  *
                   5674:  * Characteristics of a font - for postprocessors. Differs some from the troff
                   5675:  * version.
                   5676:  *
                   5677:  */
                   5678: 
                   5679: #define ALPHABET       256             /* characters in basic alphabet */
                   5680: #define MAXCH          512
                   5681: #define MAXFONTS       99
                   5682: 
                   5683: /*
                   5684:  *
                   5685:  * State of a table entry in fonts[].
                   5686:  *
                   5687:  */
                   5688: 
                   5689: #define NEWFONT                0
                   5690: #define RELEASED       1
                   5691: #define INMEMORY       2
                   5692: 
                   5693: /*
                   5694:  *
                   5695:  * Flags - for setting bits in a font's flag field.
                   5696:  *
                   5697:  */
                   5698: 
                   5699: #define USED           1
                   5700: #define NAMED          2
                   5701: 
                   5702: #define skipline(f)    while ( getc(f) != '\n' )
                   5703: 
                   5704: /*
                   5705:  *
                   5706:  * Data about each character on a font. Omitted the ascender/descender field.
                   5707:  * An unsigned char is good enough for the code field on PostScript printers.
                   5708:  *
                   5709:  */
                   5710: 
                   5711: typedef struct {
                   5712:        short           num;    /* 0 means not on this font */
                   5713:        unsigned char   wid;    /* width */
                   5714:        unsigned char   code;   /* code for actual device. */
                   5715: } Chwid;
                   5716: 
                   5717: /*
                   5718:  *
                   5719:  * Font header - one for each available position.
                   5720:  *
                   5721:  */
                   5722: 
                   5723: typedef struct {
                   5724:        char    *path;          /* where it came from */
                   5725:        char    *name;          /* as known to troff */
                   5726:        char    *fontname;      /* real name (e.g. Times-Roman) */
                   5727:        char    state;          /* NEWFONT, RELEASED, or INMEMORY */
                   5728:        char    flags;          /* for now just USED and NAMED */
                   5729:        char    mounted;        /* mounted on this many positions */
                   5730:        char    specfont;       /* 1 == special font */
                   5731:        short   nchars;         /* number of width entries for this font */
                   5732:        Chwid   *wp;            /* widths, etc., of the real characters */
                   5733: } Font;
                   5734: 
                   5735: /*
                   5736:  *
                   5737:  * Non-integer functions.
                   5738:  *
                   5739:  */
                   5740: 
                   5741: extern char    *chname();
                   5742: extern char    *strsave();
                   5743: extern char    *allocate();
                   5744: 
                   5745: 0707070014231030541006440057030057030000010301450522627500700003000000000272post.src/dpost/motion.h/*
                   5746:  *
                   5747:  * Position adjusting macros.
                   5748:  *
                   5749:  */
                   5750: 
                   5751: #define hgoto(n)       hpos = n
                   5752: #define hmot(n)                hpos += n
                   5753: #define vgoto(n)       vpos = n
                   5754: #define vmot(n)                vpos += n
                   5755: 
                   5756: extern int     hpos;
                   5757: extern int     vpos;
                   5758: 
                   5759: 0707070014231030551006440057030057030000010303200522627500700003200000023077post.src/dpost/pictures.c/*
                   5760:  *
                   5761:  * PostScript picture inclusion routines. Support for managing in-line pictures
                   5762:  * has been added, and works in combination with the simple picpack pre-processor
                   5763:  * that's supplied with this package. An in-line picture begins with a special
                   5764:  * device control command that looks like,
                   5765:  *
                   5766:  *             x X InlinPicture name size
                   5767:  *
                   5768:  * where name is the pathname of the original picture file and size is the number
                   5769:  * of bytes in the picture, which begins immediately on the next line. When dpost
                   5770:  * encounters the InlinePicture device control command inlinepic() is called and
                   5771:  * that routine appends the string name and the integer size to a temporary file
                   5772:  * (fp_pic) and then adds the next size bytes read from the current input file to
                   5773:  * file fp_pic. All in-line pictures are saved in fp_pic and located later using
                   5774:  * the name string and picture file size that separate pictures saved in fp_pic.
                   5775:  *
                   5776:  * When a picture request (ie. an "x X PI" command) is encountered picopen() is
                   5777:  * called and it first looks for the picture file in fp_pic. If it's found there
                   5778:  * the entire picture (ie. size bytes) is copied from fp_pic to a new temp file
                   5779:  * and that temp file is used as the picture file. If there's nothing in fp_pic
                   5780:  * or if the lookup failed the original route is taken.
                   5781:  *
                   5782:  * Support for in-line pictures is an attempt to address requirements, expressed
                   5783:  * by several organizations, of being able to store a document as a single file
                   5784:  * (usually troff input) that can then be sent through dpost and ultimately to
                   5785:  * a PostScript printer. The mechanism may help some users, but the are obvious
                   5786:  * disadvantages to this approach, and the original mechanism is the recommended
                   5787:  * approach! Perhaps the most important problem is that troff output, with in-line
                   5788:  * pictures included, doesn't fit the device independent language accepted by
                   5789:  * important post-processors (like proff) and that means you won't be able to
                   5790:  * reliably preview a packed file on your 5620 (or whatever).
                   5791:  *
                   5792:  */
                   5793: 
                   5794: #include <stdio.h>
                   5795: 
                   5796: #include "comments.h"                  /* PostScript file structuring comments */
                   5797: #include "gen.h"                       /* general purpose definitions */
                   5798: #include "path.h"                      /* just for TEMPDIR definition */
                   5799: #include "ext.h"                       /* external variable declarations */
                   5800: 
                   5801: FILE   *fp_pic = NULL;                 /* in-line pictures go here */
                   5802: FILE   *picopen();
                   5803: 
                   5804: extern int     res, hpos, vpos;
                   5805: extern int     picflag;
                   5806: extern FILE    *tf;
                   5807: 
                   5808: /*****************************************************************************/
                   5809: 
                   5810: picture(buf)
                   5811: 
                   5812:     char       *buf;           /* stuff following 'x X PI' command */
                   5813: 
                   5814: {
                   5815: 
                   5816:     int                poffset;        /* page offset */
                   5817:     int                indent;         /* indent */
                   5818:     int                length;         /* line length  */
                   5819:     int                totrap;         /* distance to next trap */
                   5820:     char       name[100];      /* picture file and page string */
                   5821:     char       hwo[40], *p;    /* height, width and offset strings */
                   5822:     char       flags[20];      /* miscellaneous stuff */
                   5823:     int                page = 1;       /* page number pulled from name[] */
                   5824:     double     frame[4];       /* height, width, y, and x offsets from hwo[] */
                   5825:     char       units;          /* scale indicator for frame dimensions */
                   5826:     int                whiteout = 0;   /* white out the box? */
                   5827:     int                outline = 0;    /* draw a box around the picture? */
                   5828:     int                scaleboth = 0;  /* scale both dimensions? */
                   5829:     double     adjx = 0.5;     /* left-right adjustment */
                   5830:     double     adjy = 0.5;     /* top-bottom adjustment */
                   5831:     double     rot = 0;        /* rotation in clockwise degrees */
                   5832:     FILE       *fp_in;         /* for *name */
                   5833:     int                i;              /* loop index */
                   5834: 
                   5835:     char       *strchr();
                   5836: 
                   5837: /*
                   5838:  *
                   5839:  * Called from devcntrl() after an 'x X PI' command is found. The syntax of that
                   5840:  * command is:
                   5841:  *
                   5842:  *     x X PI:args
                   5843:  *
                   5844:  * with args separated by colons and given by:
                   5845:  *
                   5846:  *     poffset
                   5847:  *     indent
                   5848:  *     length
                   5849:  *     totrap
                   5850:  *     file[(page)]
                   5851:  *     height[,width[,yoffset[,xoffset]]]
                   5852:  *     [flags]
                   5853:  *
                   5854:  * poffset, indent, length, and totrap are given in machine units. height, width,
                   5855:  * and offset refer to the picture frame in inches, unless they're followed by
                   5856:  * the u scale indicator. flags is a string that provides a little bit of control
                   5857:  * over the placement of the picture in the frame. Rotation of the picture, in
                   5858:  * clockwise degrees, is set by the a flag. If it's not followed by an angle
                   5859:  * the current rotation angle is incremented by 90 degrees, otherwise the angle
                   5860:  * is set by the number that immediately follows the a.
                   5861:  *
                   5862:  */
                   5863: 
                   5864:     if ( picflag == OFF )              /* skip it */
                   5865:        return;
                   5866: 
                   5867:     flushtext();
                   5868: 
                   5869:     flags[0] = '\0';                   /* just to be safe */
                   5870:     if ( sscanf(buf, "%d:%d:%d:%d:%[^:]:%[^:]:%[^:]", &poffset, &indent,
                   5871:                &length, &totrap, name, hwo, flags) < 6 ) {
                   5872:            error(NON_FATAL, "too few arguments to specify picture");
                   5873:            return;
                   5874:     }  /* End if */
                   5875: 
                   5876:     if ( sscanf(name, "%*[^(](%d", &page) == 1 )       /* grab the page number */
                   5877:        strtok(name, "(");                      /* and separate it from the name */
                   5878: 
                   5879:     if ( (fp_in = picopen(name)) == NULL ) {
                   5880:        error(NON_FATAL, "can't open picture file %s", name);
                   5881:        return;
                   5882:     }  /* End if */
                   5883: 
                   5884:     frame[0] = frame[1] = -1;          /* default frame height, width */
                   5885:     frame[2] = frame[3] = 0;           /* and y and x offsets */
                   5886: 
                   5887:     for ( i = 0, p = hwo-1; i < 4 && p != NULL; i++, p = strchr(p, ',') )
                   5888:        if ( sscanf(++p, "%lf%c", &frame[i], &units) == 2 )
                   5889:            if ( units == 'i' || units == ',' || units == '\0' )
                   5890:                frame[i] *= res;
                   5891: 
                   5892:     if ( frame[0] <= 0 )               /* check what we got for height */
                   5893:        frame[0] = totrap;
                   5894: 
                   5895:     if ( frame[1] <= 0 )               /* and width - check too big?? */
                   5896:        frame[1] = length - indent;
                   5897: 
                   5898:     frame[3] += poffset + indent;      /* real x offset */
                   5899: 
                   5900:     for ( i = 0; flags[i]; i++ )
                   5901:        switch ( flags[i] ) {
                   5902:            case 'c': adjx = adjy = 0.5; break; /* move to the center */
                   5903:            case 'l': adjx = 0; break;          /* left */
                   5904:            case 'r': adjx = 1; break;          /* right */
                   5905:            case 't': adjy = 1; break;          /* top */
                   5906:            case 'b': adjy = 0; break;          /* or bottom justify */
                   5907:            case 'o': outline = 1; break;       /* outline the picture */
                   5908:            case 'w': whiteout = 1; break;      /* white out the box */
                   5909:            case 's': scaleboth = 1; break;     /* scale both dimensions */
                   5910:            case 'a': if ( sscanf(&flags[i+1], "%lf", &rot) != 1 )
                   5911:                          rot += 90;
                   5912:        }   /* End switch */
                   5913: 
                   5914:     restore();
                   5915:     ps_include(fp_in, tf, page, whiteout, outline, scaleboth,
                   5916:                frame[3]+frame[1]/2, -vpos-frame[2]-frame[0]/2, frame[1], frame[0], adjx, adjy, -rot);
                   5917:     save();
                   5918:     fclose(fp_in);
                   5919: 
                   5920: }   /* End of picture */
                   5921: 
                   5922: /*****************************************************************************/
                   5923: 
                   5924: FILE *picopen(path)
                   5925: 
                   5926:     char       *path;                  /* picture file pathname */
                   5927: 
                   5928: {
                   5929: 
                   5930:     char       name[100];              /* pathnames */
                   5931:     long       pos;                    /* current position */
                   5932:     long       total;                  /* and sizes - from *fp_pic */
                   5933:     char       *tname;                 /* pathname */
                   5934:     FILE       *fp;                    /* and pointer for the new temp file */
                   5935: 
                   5936: /*
                   5937:  *
                   5938:  * Responsible for finding and opening the next picture file. If we've accumulated
                   5939:  * any in-line pictures fp_pic won't be NULL and we'll look there first. If *path
                   5940:  * is found in *fp_pic we create another temp file, open it for update, unlink it,
                   5941:  * copy in the picture, seek back to the start of the new temp file, and return
                   5942:  * the file pointer to the caller. If fp_pic is NULL or the lookup fails we just
                   5943:  * open file *path and return the resulting file pointer to the caller.
                   5944:  *
                   5945:  */
                   5946: 
                   5947:     if ( fp_pic != NULL ) {
                   5948:        fseek(fp_pic, 0L, 0);
                   5949:        while ( fscanf(fp_pic, "%s %ld\n", name, &total) != EOF ) {
                   5950:            pos = ftell(fp_pic);
                   5951:            if ( strcmp(path, name) == 0 ) {
                   5952:                if ( (tname = tempnam(TEMPDIR, "dpost")) == NULL )
                   5953:                    error(FATAL, "can't generate temp file name");
                   5954:                if ( (fp = fopen(tname, "w+r")) == NULL )
                   5955:                    error(FATAL, "can't open %s", tname);
                   5956:                unlink(tname);
                   5957:                free(tname);
                   5958:                piccopy(fp_pic, fp, total);
                   5959:                fseek(fp, 0L, 0);
                   5960:                return(fp);
                   5961:            }   /* End if */
                   5962:            fseek(fp_pic, total+pos, 0);
                   5963:        }   /* End while */
                   5964:     }  /* End if */
                   5965: 
                   5966:     return(fopen(path, "r"));
                   5967: 
                   5968: }   /* End of picopen */
                   5969: 
                   5970: /*****************************************************************************/
                   5971: 
                   5972: inlinepic(fp, buf)
                   5973: 
                   5974:     FILE       *fp;                    /* current input file */
                   5975:     char       *buf;                   /* whatever followed "x X InlinePicture" */
                   5976: 
                   5977: {
                   5978: 
                   5979:     char       *tname;                 /* temp file pathname - for *fp_pic */
                   5980:     char       name[100];              /* picture file pathname */
                   5981:     long       total;                  /* and size - both from *buf */
                   5982: 
                   5983: /*
                   5984:  *
                   5985:  * Adds an in-line picture file to the end of temporary file *fp_pic. All pictures
                   5986:  * grabbed from the input file are saved in the same temp file. Each is preceeded
                   5987:  * by a one line header that includes the original picture file pathname and the
                   5988:  * size of the picture in bytes. The in-line picture file is opened for update,
                   5989:  * left open, and unlinked so it disappears when we do.
                   5990:  *
                   5991:  */
                   5992: 
                   5993:     if ( fp_pic == NULL ) {
                   5994:        if ( (tname = tempnam(TEMPDIR, "dpost")) == NULL )
                   5995:            error(FATAL, "can't generate in-line picture file name");
                   5996:        if ( (fp_pic = fopen(tname, "w+r")) == NULL )
                   5997:            error(FATAL, "can't open in-line picture file %s", tname);
                   5998:        unlink(tname);
                   5999:     }  /* End if */
                   6000: 
                   6001:     if ( sscanf(buf, "%s %ld", name, &total) != 2 )
                   6002:        error(FATAL, "in-line picture error");
                   6003: 
                   6004:     fseek(fp_pic, 0L, 2);
                   6005:     fprintf(fp_pic, "%s %ld\n", name, total);
                   6006:     getc(fp);
                   6007:     fflush(fp_pic);
                   6008:     piccopy(fp, fp_pic, total);
                   6009:     ungetc('\n', fp);
                   6010: 
                   6011: }   /* End of inlinepic */
                   6012: 
                   6013: /*****************************************************************************/
                   6014: 
                   6015: piccopy(fp_in, fp_out, total)
                   6016: 
                   6017:     FILE       *fp_in;                 /* input */
                   6018:     FILE       *fp_out;                /* and output file pointers */
                   6019:     long       total;                  /* number of bytes to be copied */
                   6020: 
                   6021: {
                   6022: 
                   6023:     long       i;                      /* loop index */
                   6024: 
                   6025: /*
                   6026:  *
                   6027:  * Copies total bytes from file fp_in to fp_out. Used to append picture files to
                   6028:  * *fp_pic and then copy them to yet another temporary file immediately before
                   6029:  * they're used (in picture()).
                   6030:  *
                   6031:  */
                   6032: 
                   6033:     for ( i = 0; i < total; i++ )
                   6034:        if ( putc(getc(fp_in), fp_out) == EOF )
                   6035:            error(FATAL, "error copying in-line picture file");
                   6036:     fflush(fp_out);
                   6037: 
                   6038: }   /* End of piccopy */
                   6039: 
                   6040: /*****************************************************************************/
                   6041: 
                   6042: 0707070014231030561006440057030057030000010301650522627500700003600000000262post.src/dpost/ps_include.awk/^->/ {
                   6043:        if(ndef)
                   6044:                printf("\t0\n};\n\n")
                   6045:        printf("static char *%s[] = {\n", $2)
                   6046:        ndef++
                   6047:        next
                   6048: }
                   6049: /^#/ {next}
                   6050: $0 != "" {printf("\t\"%s\",\n", $0); next}
                   6051: END {printf("\t0\n};\n")}
                   6052: 0707070014231030571006440057030057030000010303400522627500700003400000012407post.src/dpost/ps_include.c
                   6053: #include <stdio.h>
                   6054: #include "ps_include.h"
                   6055: 
                   6056: #define has(word)      (strncmp(buf, word, strlen(word)) == 0)
                   6057: #define grab(n)                ((Section *)(nglobal \
                   6058:                        ? realloc((char *)global, n*sizeof(Section)) \
                   6059:                        : calloc(n, sizeof(Section))))
                   6060: 
                   6061: char   buf[512];
                   6062: typedef struct {long start, end;} Section;
                   6063: 
                   6064: extern char    *calloc(), *realloc();
                   6065: 
                   6066: 
                   6067: ps_include(fin, fout, page_no, whiteout, outline, scaleboth, cx, cy, sx, sy, ax, ay, rot)
                   6068: 
                   6069: 
                   6070:     FILE       *fin, *fout;            /* input and output files */
                   6071:     int                page_no;                /* physical page number from *fin */
                   6072:     int                whiteout;               /* erase picture area */
                   6073:     int                outline;                /* draw a box around it and */
                   6074:     int                scaleboth;              /* scale both dimensions - if not zero */
                   6075:     double     cx, cy;                 /* center of the picture and */
                   6076:     double     sx, sy;                 /* its size - in current coordinates */
                   6077:     double     ax, ay;                 /* left-right, up-down adjustment */
                   6078:     double     rot;                    /* rotation - in clockwise degrees */
                   6079: 
                   6080: 
                   6081: {
                   6082: 
                   6083: 
                   6084:     int                foundpage = 0;          /* found the page when non zero */
                   6085:     int                foundpbox = 0;          /* found the page bounding box */
                   6086:     int                nglobal = 0;            /* number of global defs so far */
                   6087:     int                maxglobal = 0;          /* and the number we've got room for */
                   6088:     Section    prolog, page, trailer;  /* prologue, page, and trailer offsets */
                   6089:     Section    *global;                /* offsets for all global definitions */
                   6090:     double     llx, lly;               /* lower left and */
                   6091:     double     urx, ury;               /* upper right corners - default coords */
                   6092:     double     w = whiteout != 0;      /* mostly for the var() macro */
                   6093:     double     o = outline != 0;
                   6094:     double     s = scaleboth != 0;
                   6095:     int                i;                      /* loop index */
                   6096: 
                   6097: 
                   6098: /*
                   6099:  *
                   6100:  * Reads a PostScript file (*fin), and uses structuring comments to locate the
                   6101:  * prologue, trailer, global definitions, and the requested page. After the whole
                   6102:  * file is scanned, the  special ps_include PostScript definitions are copied to
                   6103:  * *fout, followed by the prologue, global definitions, the requested page, and
                   6104:  * the trailer. Before returning the initial environment (saved in PS_head) is
                   6105:  * restored.
                   6106:  *
                   6107:  * By default we assume the picture is 8.5 by 11 inches, but the BoundingBox
                   6108:  * comment, if found, takes precedence.
                   6109:  *
                   6110:  */
                   6111: 
                   6112: 
                   6113:        llx = lly = 0;                  /* default BoundingBox - 8.5x11 inches */
                   6114:        urx = 72 * 8.5;
                   6115:        ury = 72 * 11.0;
                   6116: 
                   6117:        /* section boundaries and bounding box */
                   6118: 
                   6119:        prolog.start = prolog.end = 0;
                   6120:        page.start = page.end = 0;
                   6121:        trailer.start = 0;
                   6122:        fseek(fin, 0L, 0);
                   6123: 
                   6124:        while ( fgets(buf, sizeof(buf), fin) != NULL )
                   6125:                if (!has("%%"))
                   6126:                        continue;
                   6127:                else if (has("%%Page: ")) {
                   6128:                        if (!foundpage)
                   6129:                                page.start = ftell(fin);
                   6130:                        sscanf(buf, "%*s %*s %d", &i);
                   6131:                        if (i == page_no)
                   6132:                                foundpage = 1;
                   6133:                        else if (foundpage && page.end <= page.start)
                   6134:                                page.end = ftell(fin);
                   6135:                } else if (has("%%EndPage: ")) {
                   6136:                        sscanf(buf, "%*s %*s %d", &i);
                   6137:                        if (i == page_no) {
                   6138:                                foundpage = 1;
                   6139:                                page.end = ftell(fin);
                   6140:                        }
                   6141:                        if (!foundpage)
                   6142:                                page.start = ftell(fin);
                   6143:                } else if (has("%%PageBoundingBox: ")) {
                   6144:                        if (i == page_no) {
                   6145:                                foundpbox = 1;
                   6146:                                sscanf(buf, "%*s %lf %lf %lf %lf",
                   6147:                                                &llx, &lly, &urx, &ury);
                   6148:                        }
                   6149:                } else if (has("%%BoundingBox: ")) {
                   6150:                        if (!foundpbox)
                   6151:                                sscanf(buf,"%*s %lf %lf %lf %lf",
                   6152:                                                &llx, &lly, &urx, &ury);
                   6153:                } else if (has("%%EndProlog") || has("%%EndSetup") || has("%%EndDocumentSetup"))
                   6154:                        prolog.end = page.start = ftell(fin);
                   6155:                else if (has("%%Trailer"))
                   6156:                        trailer.start = ftell(fin);
                   6157:                else if (has("%%BeginGlobal")) {
                   6158:                        if (page.end <= page.start) {
                   6159:                                if (nglobal >= maxglobal) {
                   6160:                                        maxglobal += 20;
                   6161:                                        global = grab(maxglobal);
                   6162:                                }
                   6163:                                global[nglobal].start = ftell(fin);
                   6164:                        }
                   6165:                } else if (has("%%EndGlobal"))
                   6166:                        if (page.end <= page.start)
                   6167:                                global[nglobal++].end = ftell(fin);
                   6168: 
                   6169:        fseek(fin, 0L, 2);
                   6170:        if (trailer.start == 0)
                   6171:                trailer.start = ftell(fin);
                   6172:        trailer.end = ftell(fin);
                   6173: 
                   6174:        if (page.end <= page.start)
                   6175:                page.end = trailer.start;
                   6176: 
                   6177: /*
                   6178: fprintf(stderr, "prolog=(%d,%d)\n", prolog.start, prolog.end);
                   6179: fprintf(stderr, "page=(%d,%d)\n", page.start, page.end);
                   6180: for(i = 0; i < nglobal; i++)
                   6181:        fprintf(stderr, "global[%d]=(%d,%d)\n", i, global[i].start, global[i].end);
                   6182: fprintf(stderr, "trailer=(%d,%d)\n", trailer.start, trailer.end);
                   6183: */
                   6184: 
                   6185:        /* all output here */
                   6186:        print(fout, PS_head);
                   6187: /*
                   6188:  * Unix 4.0 didn't like the var macro.
                   6189:  *
                   6190:        var(llx); var(lly); var(urx); var(ury); var(w); var(o); var(s);
                   6191:        var(cx); var(cy); var(sx); var(sy); var(ax); var(ay); var(rot);
                   6192:  *
                   6193:  */
                   6194: 
                   6195:        fprintf(fout, "/llx %g def\n", llx);
                   6196:        fprintf(fout, "/lly %g def\n", lly);
                   6197:        fprintf(fout, "/urx %g def\n", urx);
                   6198:        fprintf(fout, "/ury %g def\n", ury);
                   6199:        fprintf(fout, "/w %g def\n", w);
                   6200:        fprintf(fout, "/o %g def\n", o);
                   6201:        fprintf(fout, "/s %g def\n", s);
                   6202:        fprintf(fout, "/cx %g def\n", cx);
                   6203:        fprintf(fout, "/cy %g def\n", cy);
                   6204:        fprintf(fout, "/sx %g def\n", sx);
                   6205:        fprintf(fout, "/sy %g def\n", sy);
                   6206:        fprintf(fout, "/ax %g def\n", ax);
                   6207:        fprintf(fout, "/ay %g def\n", ay);
                   6208:        fprintf(fout, "/rot %g def\n", rot);
                   6209: 
                   6210:        print(fout, PS_setup);
                   6211:        copy(fin, fout, &prolog);
                   6212:        for(i = 0; i < nglobal; i++)
                   6213:                copy(fin, fout, &global[i]);
                   6214:        copy(fin, fout, &page);
                   6215:        copy(fin, fout, &trailer);
                   6216:        print(fout, PS_tail);
                   6217: 
                   6218:        if(nglobal)
                   6219:                free(global);
                   6220: 
                   6221: }
                   6222: 
                   6223: static
                   6224: print(fout, s)
                   6225: FILE *fout;
                   6226: char **s;
                   6227: {
                   6228:        while (*s)
                   6229:                fprintf(fout, "%s\n", *s++);
                   6230: }
                   6231: 
                   6232: static
                   6233: copy(fin, fout, s)
                   6234: FILE *fin, *fout;
                   6235: Section *s;
                   6236: {
                   6237:        if (s->end <= s->start)
                   6238:                return;
                   6239:        fseek(fin, s->start, 0);
                   6240:        while (ftell(fin) < s->end && fgets(buf, sizeof(buf), fin) != NULL)
                   6241:                if (buf[0] != '%')
                   6242:                        fprintf(fout, "%s", buf);
                   6243: }
                   6244: 
                   6245: 0707070014231030601006440057030057030000010301660522627500700003400000003752post.src/dpost/ps_include.hstatic char *PS_head[] = {
                   6246:        "%ps_include: begin",
                   6247:        "save",
                   6248:        "/ed {exch def} def",
                   6249:        "{} /showpage ed",
                   6250:        "{} /copypage ed",
                   6251:        "{} /erasepage ed",
                   6252:        "{} /letter ed",
                   6253:        "currentdict /findfont known systemdict /findfont known and {",
                   6254:        "       /findfont systemdict /findfont get def",
                   6255:        "} if",
                   6256:        "36 dict dup /PS-include-dict-dw ed begin",
                   6257:        "/context ed",
                   6258:        "count array astore /o-stack ed",
                   6259:        "%ps_include: variables begin",
                   6260:        0
                   6261: };
                   6262: 
                   6263: static char *PS_setup[] = {
                   6264:        "%ps_include: variables end",
                   6265:        "{llx lly urx ury} /bbox ed",
                   6266:        "{newpath 2 index exch 2 index exch dup 6 index exch",
                   6267:        " moveto 3 {lineto} repeat closepath} /boxpath ed",
                   6268:        "{dup mul exch dup mul add sqrt} /len ed",
                   6269:        "{2 copy gt {exch} if pop} /min ed",
                   6270:        "{2 copy lt {exch} if pop} /max ed",
                   6271:        "{transform round exch round exch A itransform} /nice ed",
                   6272:        "{6 array} /n ed",
                   6273:        "n defaultmatrix n currentmatrix n invertmatrix n concatmatrix /A ed",
                   6274:        "urx llx sub 0 A dtransform len /Sx ed",
                   6275:        "0 ury lly sub A dtransform len /Sy ed",
                   6276:        "llx urx add 2 div lly ury add 2 div A transform /Cy ed /Cx ed",
                   6277:        "rot dup sin abs /S ed cos abs /C ed",
                   6278:        "Sx S mul Sy C mul add /H ed",
                   6279:        "Sx C mul Sy S mul add /W ed",
                   6280:        "sy H div /Scaley ed",
                   6281:        "sx W div /Scalex ed",
                   6282:        "s 0 eq {Scalex Scaley min dup /Scalex ed /Scaley ed} if",
                   6283:        "sx Scalex W mul sub 0 max ax 0.5 sub mul cx add /cx ed",
                   6284:        "sy Scaley H mul sub 0 max ay 0.5 sub mul cy add /cy ed",
                   6285:        "urx llx sub 0 A dtransform exch atan rot exch sub /rot ed",
                   6286:        "n currentmatrix initgraphics setmatrix",
                   6287:        "cx cy translate",
                   6288:        "Scalex Scaley scale",
                   6289:        "rot rotate",
                   6290:        "Cx neg Cy neg translate",
                   6291:        "A concat",
                   6292:        "bbox boxpath clip newpath",
                   6293:        "w 0 ne {gsave bbox boxpath 1 setgray fill grestore} if",
                   6294:        "end",
                   6295:        "gsave",
                   6296:        "%ps_include: inclusion begin",
                   6297:        0
                   6298: };
                   6299: 
                   6300: static char *PS_tail[] = {
                   6301:        "%ps_include: inclusion end",
                   6302:        "grestore",
                   6303:        "PS-include-dict-dw begin",
                   6304:        "o 0 ne {gsave A defaultmatrix /A ed llx lly nice urx ury nice",
                   6305:        "       initgraphics 0.1 setlinewidth boxpath stroke grestore} if",
                   6306:        "clear o-stack aload pop",
                   6307:        "context end restore",
                   6308:        "%ps_include: end",
                   6309:        0
                   6310: };
                   6311: 0707070014231030611006440057030057030000010303600522627500700003500000007004post.src/dpost/ps_include.ps-> PS_head
                   6312: 
                   6313: %ps_include: begin
                   6314: save
                   6315: /ed {exch def} def
                   6316: 
                   6317: # redefine dangerous operators
                   6318: {} /showpage ed
                   6319: {} /copypage ed
                   6320: {} /erasepage ed
                   6321: {} /letter ed
                   6322: 
                   6323: # restore findfont from systemdict if it looks like it's be redefined
                   6324: currentdict /findfont known systemdict /findfont known and {
                   6325:        /findfont systemdict /findfont get def
                   6326: } if
                   6327: 
                   6328: # computations are done in the context of a new dictionary
                   6329: 36 dict dup /PS-include-dict-dw ed begin
                   6330: 
                   6331: # context holds the save object created earlier
                   6332: /context ed
                   6333: 
                   6334: # save and clear the operand stack
                   6335: count array astore /o-stack ed
                   6336: 
                   6337: # the following variables are now expected:
                   6338: #      llx,lly,urx,ury bounding box of picture to be included
                   6339: #      w               nonzero if space should be painted white to start
                   6340: #      o               nonzero if space should be outlined
                   6341: #      s               nonzero if both dimensions should be scaled
                   6342: #      cx,cy           center of page space in current coordinates
                   6343: #      sx,sy           size of page space in current coordinates
                   6344: #      ax,ay           left-right, up-down adjustment of picture in page space
                   6345: #      rot             rotation of picture in page space
                   6346: %ps_include: variables begin
                   6347: 
                   6348: 
                   6349: 
                   6350: -> PS_setup
                   6351: 
                   6352: %ps_include: variables end
                   6353: 
                   6354: # some routines:
                   6355: # - BBOX llx lly urx ury       put bounding box on stack
                   6356: # llx lly urx ury BOXPATH -    make a path with given box corners
                   6357: # dx dy LEN length             compute length of positionless vector
                   6358: # a b MIN min                  compute minimum of two numbers
                   6359: # a b MAX max                  compute maximum of two numbers
                   6360: # x y NICE x y                 move to pixel boundaries in default coords
                   6361: {llx lly urx ury} /bbox ed
                   6362: {newpath 2 index exch 2 index exch dup 6 index exch
                   6363:  moveto 3 {lineto} repeat closepath} /boxpath ed
                   6364: {dup mul exch dup mul add sqrt} /len ed
                   6365: {2 copy gt {exch} if pop} /min ed
                   6366: {2 copy lt {exch} if pop} /max ed
                   6367: {transform round exch round exch A itransform} /nice ed
                   6368: 
                   6369: # A is the transformation from default to current coordinates
                   6370: {6 array} /n ed
                   6371: n defaultmatrix n currentmatrix n invertmatrix n concatmatrix /A ed
                   6372: 
                   6373: # Sx,Sy and Cx,Cy are dimensions and size of bounding box in current coordinates
                   6374: urx llx sub 0 A dtransform len /Sx ed
                   6375: 0 ury lly sub A dtransform len /Sy ed
                   6376: llx urx add 2 div lly ury add 2 div A transform /Cy ed /Cx ed
                   6377: 
                   6378: # H and W are height and width of rotated box in current coordinates
                   6379: rot dup sin abs /S ed cos abs /C ed
                   6380: Sx S mul Sy C mul add /H ed
                   6381: Sx C mul Sy S mul add /W ed
                   6382: 
                   6383: # Scalex and Scaley are the required horizontal and vertical scaling factors
                   6384: sy H div /Scaley ed
                   6385: sx W div /Scalex ed
                   6386: 
                   6387: # Preserve aspect ratio if we're not scaling both dimensions (ie. s is 0)
                   6388: s 0 eq {Scalex Scaley min dup /Scalex ed /Scaley ed} if
                   6389: 
                   6390: # add to cx,cy the shift needed within the page space
                   6391: sx Scalex W mul sub 0 max ax 0.5 sub mul cx add /cx ed
                   6392: sy Scaley H mul sub 0 max ay 0.5 sub mul cy add /cy ed
                   6393: 
                   6394: # the actual rotation needed is rot less the current rotation
                   6395: urx llx sub 0 A dtransform exch atan rot exch sub /rot ed
                   6396: 
                   6397: # set up the coordinate system
                   6398: n currentmatrix initgraphics setmatrix
                   6399: cx cy translate
                   6400: Scalex Scaley scale
                   6401: rot rotate
                   6402: Cx neg Cy neg translate
                   6403: A concat
                   6404: 
                   6405: # set the clipping region, and conditionally whiteout and outline
                   6406: bbox boxpath clip newpath
                   6407: w 0 ne {gsave bbox boxpath 1 setgray fill grestore} if
                   6408: 
                   6409: # pop local dictionary from the dict stack
                   6410: end
                   6411: 
                   6412: # now begins the actual material extracted from the file
                   6413: gsave
                   6414: %ps_include: inclusion begin
                   6415: 
                   6416: 
                   6417: 
                   6418: -> PS_tail
                   6419: 
                   6420: %ps_include: inclusion end
                   6421: grestore
                   6422: 
                   6423: # within the context of the local dictionary ...
                   6424: PS-include-dict-dw begin
                   6425: 
                   6426: o 0 ne {gsave A defaultmatrix /A ed llx lly nice urx ury nice
                   6427:        initgraphics 0.1 setlinewidth boxpath stroke grestore} if
                   6428: 
                   6429: # ... restore the operand stack and the save context
                   6430: clear o-stack aload pop
                   6431: context end restore
                   6432: %ps_include: end
                   6433: 0707070014231216400407550057030057030000020630640522633076600002300000000000post.src/postprint0707070014231216411006440057030057030000010630650522627500700003200000000175post.src/postprint/README
                   6434: Simple ASCII file to PostScript translator. The -e options is new
                   6435: and allows access to all characters in PostScript fonts.
                   6436: 
                   6437: 0707070014231216421006440057030057030000010636000522627500700003700000051204post.src/postprint/postprint.c/*
                   6438:  *
                   6439:  * postprint - PostScript translator for ASCII files.
                   6440:  *
                   6441:  * A simple program that translates ASCII files into PostScript. All it really
                   6442:  * does is expand tabs and backspaces, handle character quoting, print text lines,
                   6443:  * and control when pages are started based on the requested number of lines per
                   6444:  * page.
                   6445:  *
                   6446:  * The PostScript prologue is copied from *prologue before any of the input files
                   6447:  * are translated. The program expects that the following procedures are defined
                   6448:  * in that file:
                   6449:  *
                   6450:  *     setup
                   6451:  *
                   6452:  *       mark ... setup -
                   6453:  *
                   6454:  *         Handles special initialization stuff that depends on how the program
                   6455:  *         was called. Expects to find a mark followed by key/value pairs on the
                   6456:  *         stack. The def operator is applied to each pair up to the mark, then
                   6457:  *         the default state is set up.
                   6458:  *
                   6459:  *     pagesetup
                   6460:  *
                   6461:  *       page pagesetup -
                   6462:  *
                   6463:  *         Does whatever is needed to set things up for the next page. Expects
                   6464:  *         to find the current page number on the stack.
                   6465:  *
                   6466:  *     l
                   6467:  *
                   6468:  *       string l -
                   6469:  *
                   6470:  *         Prints string starting in the first column and then goes to the next
                   6471:  *         line.
                   6472:  *
                   6473:  *     L
                   6474:  *
                   6475:  *       mark string column string column ... L mark
                   6476:  *
                   6477:  *         Prints each string on the stack starting at the horizontal position
                   6478:  *         selected by column. Used when tabs and spaces can be sufficiently well
                   6479:  *         compressed to make the printer overhead worthwhile. Always used when
                   6480:  *         we have to back up.
                   6481:  *
                   6482:  *     LL
                   6483:  *
                   6484:  *       mark string column string column ... LL mark
                   6485:  *
                   6486:  *         Like L, but only used to prevent potential PostScript stack overflow
                   6487:  *         from too many string/column pairs. Stays on the current line. It will
                   6488:  *         not be needed often!!
                   6489:  *
                   6490:  *     done
                   6491:  *
                   6492:  *       done
                   6493:  *
                   6494:  *         Makes sure the last page is printed. Only needed when we're printing
                   6495:  *         more than one page on each sheet of paper.
                   6496:  *
                   6497:  * Almost everything has been changed in this version of postprint. The program
                   6498:  * is more intelligent, especially about tabs, spaces, and backspacing, and as a
                   6499:  * result output files usually print faster. Output files also now conform to
                   6500:  * Adobe's file structuring conventions, which is undoubtedly something I should
                   6501:  * have done in the first version of the program. If the number of lines per page
                   6502:  * is set to 0, which can be done using the -l option, pointsize will be used to
                   6503:  * guess a reasonable value. The estimate is based on the values of LINESPP,
                   6504:  * POINTSIZE, and pointsize, and assumes LINESPP lines would fit on a page if
                   6505:  * we printed in size POINTSIZE. Selecting a point size using the -s option and
                   6506:  * adding -l0 to the command line forces the guess to be made.
                   6507:  *
                   6508:  * Many default values, like the magnification and orientation, are defined in 
                   6509:  * the prologue, which is where they belong. If they're changed (by options), an
                   6510:  * appropriate definition is made after the prologue is added to the output file.
                   6511:  * The -P option passes arbitrary PostScript through to the output file. Among
                   6512:  * other things it can be used to set (or change) values that can't be accessed by
                   6513:  * other options.
                   6514:  *
                   6515:  */
                   6516: 
                   6517: #include <stdio.h>
                   6518: #include <signal.h>
                   6519: #include <ctype.h>
                   6520: #include <fcntl.h>
                   6521: 
                   6522: #include "comments.h"                  /* PostScript file structuring comments */
                   6523: #include "gen.h"                       /* general purpose definitions */
                   6524: #include "path.h"                      /* for the prologue */
                   6525: #include "ext.h"                       /* external variable declarations */
                   6526: #include "postprint.h"                 /* a few special definitions */
                   6527: 
                   6528: char   *optnames = "a:c:ef:l:m:n:o:p:r:s:t:x:y:A:C:E:J:L:P:R:DI";
                   6529: 
                   6530: char   *prologue = POSTPRINT;          /* default PostScript prologue */
                   6531: char   *formfile = FORMFILE;           /* stuff for multiple pages per sheet */
                   6532: 
                   6533: int    formsperpage = 1;               /* page images on each piece of paper */
                   6534: int    copies = 1;                     /* and this many copies of each sheet */
                   6535: 
                   6536: int    linespp = LINESPP;              /* number of lines per page */
                   6537: int    pointsize = POINTSIZE;          /* in this point size */
                   6538: int    tabstops = TABSTOPS;            /* tabs set at these columns */
                   6539: int    crmode = 0;                     /* carriage return mode - 0, 1, or 2 */
                   6540: int    extended = TRUE;                /* use escapes for unprintable chars */
                   6541: 
                   6542: int    col = 1;                        /* next character goes in this column */
                   6543: int    line = 1;                       /* on this line */
                   6544: 
                   6545: int    stringcount = 0;                /* number of strings on the stack */
                   6546: int    stringstart = 1;                /* column where current one starts */
                   6547: 
                   6548: Fontmap        fontmap[] = FONTMAP;            /* for translating font names */
                   6549: char   *fontname = "Courier";          /* use this PostScript font */
                   6550: 
                   6551: int    page = 0;                       /* page we're working on */
                   6552: int    printed = 0;                    /* printed this many pages */
                   6553: 
                   6554: FILE   *fp_in = stdin;                 /* read from this file */
                   6555: FILE   *fp_out = stdout;               /* and write stuff here */
                   6556: FILE   *fp_acct = NULL;                /* for accounting data */
                   6557: 
                   6558: /*****************************************************************************/
                   6559: 
                   6560: main(agc, agv)
                   6561: 
                   6562:     int                agc;
                   6563:     char       *agv[];
                   6564: 
                   6565: {
                   6566: 
                   6567: /*
                   6568:  *
                   6569:  * A simple program that translates ASCII files into PostScript. If there's more
                   6570:  * than one input file, each begins on a new page.
                   6571:  *
                   6572:  */
                   6573: 
                   6574:     argc = agc;                                /* other routines may want them */
                   6575:     argv = agv;
                   6576: 
                   6577:     prog_name = argv[0];               /* really just for error messages */
                   6578: 
                   6579:     init_signals();                    /* sets up interrupt handling */
                   6580:     header();                          /* PostScript header and prologue */
                   6581:     options();                         /* handle the command line options */
                   6582:     setup();                           /* for PostScript */
                   6583:     arguments();                       /* followed by each input file */
                   6584:     done();                            /* print the last page etc. */
                   6585:     account();                         /* job accounting data */
                   6586: 
                   6587:     exit(x_stat);                      /* not much could be wrong */
                   6588: 
                   6589: }   /* End of main */
                   6590: 
                   6591: /*****************************************************************************/
                   6592: 
                   6593: init_signals()
                   6594: 
                   6595: {
                   6596: 
                   6597: /*
                   6598:  *
                   6599:  * Makes sure we handle interrupts.
                   6600:  *
                   6601:  */
                   6602: 
                   6603:     if ( signal(SIGINT, interrupt) == SIG_IGN ) {
                   6604:        signal(SIGINT, SIG_IGN);
                   6605:        signal(SIGQUIT, SIG_IGN);
                   6606:        signal(SIGHUP, SIG_IGN);
                   6607:     } else {
                   6608:        signal(SIGHUP, interrupt);
                   6609:        signal(SIGQUIT, interrupt);
                   6610:     }   /* End else */
                   6611: 
                   6612:     signal(SIGTERM, interrupt);
                   6613: 
                   6614: }   /* End of init_signals */
                   6615: 
                   6616: /*****************************************************************************/
                   6617: 
                   6618: header()
                   6619: 
                   6620: {
                   6621: 
                   6622:     int                ch;                     /* return value from getopt() */
                   6623:     int                old_optind = optind;    /* for restoring optind - should be 1 */
                   6624: 
                   6625: /*
                   6626:  *
                   6627:  * Scans the option list looking for things, like the prologue file, that we need
                   6628:  * right away but could be changed from the default. Doing things this way is an
                   6629:  * attempt to conform to Adobe's latest file structuring conventions. In particular
                   6630:  * they now say there should be nothing executed in the prologue, and they have
                   6631:  * added two new comments that delimit global initialization calls. Once we know
                   6632:  * where things really are we write out the job header, follow it by the prologue,
                   6633:  * and then add the ENDPROLOG and BEGINSETUP comments.
                   6634:  *
                   6635:  */
                   6636: 
                   6637:     while ( (ch = getopt(argc, argv, optnames)) != EOF )
                   6638:        if ( ch == 'L' )
                   6639:            prologue = optarg;
                   6640:        else if ( ch == '?' )
                   6641:            error(FATAL, "");
                   6642: 
                   6643:     optind = old_optind;               /* get ready for option scanning */
                   6644: 
                   6645:     fprintf(stdout, "%s", CONFORMING);
                   6646:     fprintf(stdout, "%s %s\n", VERSION, PROGRAMVERSION);
                   6647:     fprintf(stdout, "%s %s\n", DOCUMENTFONTS, ATEND);
                   6648:     fprintf(stdout, "%s %s\n", PAGES, ATEND);
                   6649:     fprintf(stdout, "%s", ENDCOMMENTS);
                   6650: 
                   6651:     if ( cat(prologue) == FALSE )
                   6652:        error(FATAL, "can't read %s", prologue);
                   6653: 
                   6654:     if ( DOROUND )
                   6655:        cat(ROUNDPAGE);
                   6656: 
                   6657:     fprintf(stdout, "%s", ENDPROLOG);
                   6658:     fprintf(stdout, "%s", BEGINSETUP);
                   6659:     fprintf(stdout, "mark\n");
                   6660: 
                   6661: }   /* End of header */
                   6662: 
                   6663: /*****************************************************************************/
                   6664: 
                   6665: options()
                   6666: 
                   6667: {
                   6668: 
                   6669:     int                ch;                     /* return value from getopt() */
                   6670: 
                   6671: /*
                   6672:  *
                   6673:  * Reads and processes the command line options. Added the -P option so arbitrary
                   6674:  * PostScript code can be passed through. Expect it could be useful for changing
                   6675:  * definitions in the prologue for which options have not been defined.
                   6676:  *
                   6677:  * Although any PostScript font can be used, things will only work well for
                   6678:  * constant width fonts.
                   6679:  *
                   6680:  */
                   6681: 
                   6682:     while ( (ch = getopt(argc, argv, optnames)) != EOF ) {
                   6683:        switch ( ch ) {
                   6684: 
                   6685:            case 'a':                   /* aspect ratio */
                   6686:                    fprintf(stdout, "/aspectratio %s def\n", optarg);
                   6687:                    break;
                   6688: 
                   6689:            case 'c':                   /* copies */
                   6690:                    copies = atoi(optarg);
                   6691:                    fprintf(stdout, "/#copies %s store\n", optarg);
                   6692:                    break;
                   6693: 
                   6694:            case 'e':                   /* obsolete - it's now always on */
                   6695:                    extended = TRUE;
                   6696:                    break;
                   6697: 
                   6698:            case 'f':                   /* use this PostScript font */
                   6699:                    fontname = get_font(optarg);
                   6700:                    fprintf(stdout, "/font /%s def\n", fontname);
                   6701:                    break;
                   6702: 
                   6703:            case 'l':                   /* lines per page */
                   6704:                    linespp = atoi(optarg);
                   6705:                    break;
                   6706: 
                   6707:            case 'm':                   /* magnification */
                   6708:                    fprintf(stdout, "/magnification %s def\n", optarg);
                   6709:                    break;
                   6710: 
                   6711:            case 'n':                   /* forms per page */
                   6712:                    formsperpage = atoi(optarg);
                   6713:                    fprintf(stdout, "%s %s\n", FORMSPERPAGE, optarg);
                   6714:                    fprintf(stdout, "/formsperpage %s def\n", optarg);
                   6715:                    break;
                   6716: 
                   6717:            case 'o':                   /* output page list */
                   6718:                    out_list(optarg);
                   6719:                    break;
                   6720: 
                   6721:            case 'p':                   /* landscape or portrait mode */
                   6722:                    if ( *optarg == 'l' )
                   6723:                        fprintf(stdout, "/landscape true def\n");
                   6724:                    else fprintf(stdout, "/landscape false def\n");
                   6725:                    break;
                   6726: 
                   6727:            case 'r':                   /* carriage return mode */
                   6728:                    crmode = atoi(optarg);
                   6729:                    break;
                   6730: 
                   6731:            case 's':                   /* point size */
                   6732:                    pointsize = atoi(optarg);
                   6733:                    fprintf(stdout, "/pointsize %s def\n", optarg);
                   6734:                    break;
                   6735: 
                   6736:            case 't':                   /* tabstops */
                   6737:                    tabstops = atoi(optarg);
                   6738:                    break;
                   6739: 
                   6740:            case 'x':                   /* shift things horizontally */
                   6741:                    fprintf(stdout, "/xoffset %s def\n", optarg);
                   6742:                    break;
                   6743: 
                   6744:            case 'y':                   /* and vertically on the page */
                   6745:                    fprintf(stdout, "/yoffset %s def\n", optarg);
                   6746:                    break;
                   6747: 
                   6748:            case 'A':                   /* force job accounting */
                   6749:            case 'J':
                   6750:                    if ( (fp_acct = fopen(optarg, "a")) == NULL )
                   6751:                        error(FATAL, "can't open accounting file %s", optarg);
                   6752:                    break;
                   6753: 
                   6754:            case 'C':                   /* copy file straight to output */
                   6755:                    if ( cat(optarg) == FALSE )
                   6756:                        error(FATAL, "can't read %s", optarg);
                   6757:                    break;
                   6758: 
                   6759:            case 'E':                   /* text font encoding */
                   6760:                    fontencoding = optarg;
                   6761:                    break;
                   6762: 
                   6763:            case 'L':                   /* PostScript prologue file */
                   6764:                    prologue = optarg;
                   6765:                    break;
                   6766: 
                   6767:            case 'P':                   /* PostScript pass through */
                   6768:                    fprintf(stdout, "%s\n", optarg);
                   6769:                    break;
                   6770: 
                   6771:            case 'R':                   /* special global or page level request */
                   6772:                    saverequest(optarg);
                   6773:                    break;
                   6774: 
                   6775:            case 'D':                   /* debug flag */
                   6776:                    debug = ON;
                   6777:                    break;
                   6778: 
                   6779:            case 'I':                   /* ignore FATAL errors */
                   6780:                    ignore = ON;
                   6781:                    break;
                   6782: 
                   6783:            case '?':                   /* don't understand the option */
                   6784:                    error(FATAL, "");
                   6785:                    break;
                   6786: 
                   6787:            default:                    /* don't know what to do for ch */
                   6788:                    error(FATAL, "missing case for option %c\n", ch);
                   6789:                    break;
                   6790:        }   /* End switch */
                   6791:     }   /* End while */
                   6792: 
                   6793:     argc -= optind;                    /* get ready for non-option args */
                   6794:     argv += optind;
                   6795: 
                   6796: }   /* End of options */
                   6797: 
                   6798: /*****************************************************************************/
                   6799: 
                   6800: char *get_font(name)
                   6801: 
                   6802:     char       *name;                  /* name the user asked for */
                   6803: 
                   6804: {
                   6805: 
                   6806:     int                i;                      /* for looking through fontmap[] */
                   6807: 
                   6808: /*
                   6809:  *
                   6810:  * Called from options() to map a user's font name into a legal PostScript name.
                   6811:  * If the lookup fails *name is returned to the caller. That should let you choose
                   6812:  * any PostScript font, although things will only work well for constant width
                   6813:  * fonts.
                   6814:  *
                   6815:  */
                   6816: 
                   6817:     for ( i = 0; fontmap[i].name != NULL; i++ )
                   6818:        if ( strcmp(name, fontmap[i].name) == 0 )
                   6819:            return(fontmap[i].val);
                   6820: 
                   6821:     return(name);
                   6822: 
                   6823: }   /* End of get_font */
                   6824: 
                   6825: /*****************************************************************************/
                   6826: 
                   6827: setup()
                   6828: 
                   6829: {
                   6830: 
                   6831: /*
                   6832:  *
                   6833:  * Handles things that must be done after the options are read but before the
                   6834:  * input files are processed. linespp (lines per page) can be set using the -l
                   6835:  * option. If it's not positive we calculate a reasonable value using the
                   6836:  * requested point size - assuming LINESPP lines fit on a page in point size
                   6837:  * POINTSIZE.
                   6838:  *
                   6839:  */
                   6840: 
                   6841:     writerequest(0, stdout);           /* global requests eg. manual feed */
                   6842:     setencoding(fontencoding);
                   6843:     fprintf(stdout, "setup\n");
                   6844: 
                   6845:     if ( formsperpage > 1 ) {
                   6846:        if ( cat(formfile) == FALSE )
                   6847:            error(FATAL, "can't read %s", formfile);
                   6848:        fprintf(stdout, "%d setupforms\n", formsperpage);
                   6849:     }  /* End if */
                   6850: 
                   6851:     fprintf(stdout, "%s", ENDSETUP);
                   6852: 
                   6853:     if ( linespp <= 0 )
                   6854:        linespp = LINESPP * POINTSIZE / pointsize;
                   6855: 
                   6856: }   /* End of setup */
                   6857: 
                   6858: /*****************************************************************************/
                   6859: 
                   6860: arguments()
                   6861: 
                   6862: {
                   6863: 
                   6864: /*
                   6865:  *
                   6866:  * Makes sure all the non-option command line arguments are processed. If we get
                   6867:  * here and there aren't any arguments left, or if '-' is one of the input files
                   6868:  * we'll translate stdin.
                   6869:  *
                   6870:  */
                   6871: 
                   6872:     if ( argc < 1 )
                   6873:        text();
                   6874:     else {                             /* at least one argument is left */
                   6875:        while ( argc > 0 ) {
                   6876:            if ( strcmp(*argv, "-") == 0 )
                   6877:                fp_in = stdin;
                   6878:            else if ( (fp_in = fopen(*argv, "r")) == NULL )
                   6879:                error(FATAL, "can't open %s", *argv);
                   6880:            text();
                   6881:            if ( fp_in != stdin )
                   6882:                fclose(fp_in);
                   6883:            argc--;
                   6884:            argv++;
                   6885:        }   /* End while */
                   6886:     }   /* End else */
                   6887: 
                   6888: }   /* End of arguments */
                   6889: 
                   6890: /*****************************************************************************/
                   6891: 
                   6892: done()
                   6893: 
                   6894: {
                   6895: 
                   6896: /*
                   6897:  *
                   6898:  * Finished with all the input files, so mark the end of the pages with a TRAILER
                   6899:  * comment, make sure the last page prints, and add things like the PAGES comment
                   6900:  * that can only be determined after all the input files have been read.
                   6901:  *
                   6902:  */
                   6903: 
                   6904:     fprintf(stdout, "%s", TRAILER);
                   6905:     fprintf(stdout, "done\n");
                   6906:     fprintf(stdout, "%s %s\n", DOCUMENTFONTS, fontname);
                   6907:     fprintf(stdout, "%s %d\n", PAGES, printed);
                   6908: 
                   6909: }   /* End of done */
                   6910: 
                   6911: /*****************************************************************************/
                   6912: 
                   6913: account()
                   6914: 
                   6915: {
                   6916: 
                   6917: /*
                   6918:  *
                   6919:  * Writes an accounting record to *fp_acct provided it's not NULL. Accounting is
                   6920:  * requested using the -A or -J options.
                   6921:  *
                   6922:  */
                   6923: 
                   6924:     if ( fp_acct != NULL )
                   6925:        fprintf(fp_acct, " print %d\n copies %d\n", printed, copies);
                   6926: 
                   6927: }   /* End of account */
                   6928: 
                   6929: /*****************************************************************************/
                   6930: 
                   6931: text()
                   6932: 
                   6933: {
                   6934: 
                   6935:     int                ch;                     /* next input character */
                   6936: 
                   6937: /*
                   6938:  *
                   6939:  * Translates *fp_in into PostScript. Intercepts space, tab, backspace, newline,
                   6940:  * return, and formfeed. Everything else goes to oput(), which handles quoting
                   6941:  * (if needed) and escapes for nonascii characters if extended is TRUE. The
                   6942:  * redirect(-1) call forces the initial output to go to /dev/null - so stuff
                   6943:  * that formfeed() does at the end of each page goes to /dev/null rather than
                   6944:  * the real output file.
                   6945:  *
                   6946:  */
                   6947: 
                   6948:     redirect(-1);                      /* get ready for the first page */
                   6949:     formfeed();                                /* force PAGE comment etc. */
                   6950: 
                   6951:     while ( (ch = getc(fp_in)) != EOF )
                   6952:        switch ( ch ) {
                   6953:            case '\n':
                   6954:                    newline();
                   6955:                    break;
                   6956: 
                   6957:            case '\t':
                   6958:            case '\b':
                   6959:            case ' ':
                   6960:                    spaces(ch);
                   6961:                    break;
                   6962: 
                   6963:            case '\014':
                   6964:                    formfeed();
                   6965:                    break;
                   6966: 
                   6967:            case '\r':
                   6968:                    if ( crmode == 1 )
                   6969:                        spaces(ch);
                   6970:                    else if ( crmode == 2 )
                   6971:                        newline();
                   6972:                    break;
                   6973: 
                   6974:            default:
                   6975:                    oput(ch);
                   6976:                    break;
                   6977:        }   /* End switch */
                   6978: 
                   6979:     formfeed();                                /* next file starts on a new page? */
                   6980: 
                   6981: }   /* End of text */
                   6982: 
                   6983: /*****************************************************************************/
                   6984: 
                   6985: formfeed()
                   6986: 
                   6987: {
                   6988: 
                   6989: /*
                   6990:  *
                   6991:  * Called whenever we've finished with the last page and want to get ready for the
                   6992:  * next one. Also used at the beginning and end of each input file, so we have to
                   6993:  * be careful about what's done. The first time through (up to the redirect() call)
                   6994:  * output goes to /dev/null.
                   6995:  *
                   6996:  * Adobe now recommends that the showpage operator occur after the page level
                   6997:  * restore so it can be easily redefined to have side-effects in the printer's VM.
                   6998:  * Although it seems reasonable I haven't implemented it, because it makes other
                   6999:  * things, like selectively setting manual feed or choosing an alternate paper
                   7000:  * tray, clumsy - at least on a per page basis. 
                   7001:  *
                   7002:  */
                   7003: 
                   7004:     if ( fp_out == stdout )            /* count the last page */
                   7005:        printed++;
                   7006: 
                   7007:     endline();                         /* print the last line */
                   7008: 
                   7009:     fprintf(fp_out, "cleartomark\n");
                   7010:     fprintf(fp_out, "showpage\n");
                   7011:     fprintf(fp_out, "saveobj restore\n");
                   7012:     fprintf(fp_out, "%s %d %d\n", ENDPAGE, page, printed);
                   7013: 
                   7014:     if ( ungetc(getc(fp_in), fp_in) == EOF )
                   7015:        redirect(-1);
                   7016:     else redirect(++page);
                   7017: 
                   7018:     fprintf(fp_out, "%s %d %d\n", PAGE, page, printed+1);
                   7019:     fprintf(fp_out, "/saveobj save def\n");
                   7020:     fprintf(fp_out, "mark\n");
                   7021:     writerequest(printed+1, fp_out);
                   7022:     fprintf(fp_out, "%d pagesetup\n", printed+1);
                   7023: 
                   7024:     line = 1;
                   7025: 
                   7026: }   /* End of formfeed */
                   7027: 
                   7028: /*****************************************************************************/
                   7029: 
                   7030: newline()
                   7031: 
                   7032: {
                   7033: 
                   7034: /*
                   7035:  *
                   7036:  * Called when we've read a newline character. The call to startline() ensures
                   7037:  * that at least an empty string is on the stack.
                   7038:  *
                   7039:  */
                   7040: 
                   7041:     startline();
                   7042:     endline();                         /* print the current line */
                   7043: 
                   7044:     if ( ++line > linespp )            /* done with this page */
                   7045:        formfeed();
                   7046: 
                   7047: }   /* End of newline */
                   7048: 
                   7049: /*****************************************************************************/
                   7050: 
                   7051: spaces(ch)
                   7052: 
                   7053:     int                ch;                     /* next input character */
                   7054: 
                   7055: {
                   7056: 
                   7057:     int                endcol;                 /* ending column */
                   7058:     int                i;                      /* final distance - in spaces */
                   7059: 
                   7060: /*
                   7061:  *
                   7062:  * Counts consecutive spaces, tabs, and backspaces and figures out where the next
                   7063:  * string should start. Once that's been done we try to choose an efficient way
                   7064:  * to output the required number of spaces. The choice is between using procedure
                   7065:  * l with a single string on the stack and L with several string and column pairs.
                   7066:  * We usually break even, in terms of the size of the output file, if we need four
                   7067:  * consecutive spaces. More means using L decreases the size of the file. For now
                   7068:  * if there are less than 6 consecutive spaces we just add them to the current
                   7069:  * string, otherwise we end that string, follow it by its starting position, and
                   7070:  * begin a new one that starts at endcol. Backspacing is always handled this way.
                   7071:  *
                   7072:  */
                   7073: 
                   7074:     startline();                       /* so col makes sense */
                   7075:     endcol = col;
                   7076: 
                   7077:     do {
                   7078:        if ( ch == ' ' )
                   7079:            endcol++;
                   7080:        else if ( ch == '\t' )
                   7081:            endcol += tabstops - ((endcol - 1) % tabstops);
                   7082:        else if ( ch == '\b' )
                   7083:            endcol--;
                   7084:        else if ( ch == '\r' )
                   7085:            endcol = 1;
                   7086:        else break;
                   7087:     } while ( ch = getc(fp_in) );      /* if ch is 0 we'd quit anyway */
                   7088: 
                   7089:     ungetc(ch, fp_in);                 /* wasn't a space, tab, or backspace */
                   7090: 
                   7091:     if ( endcol < 1 )                  /* can't move past left edge */
                   7092:        endcol = 1;
                   7093: 
                   7094:     if ( (i = endcol - col) >= 0 && i < 6 )
                   7095:        for ( ; i > 0; i-- )
                   7096:            oput((int)' ');
                   7097:     else {
                   7098:        endstring();
                   7099:        col = stringstart = endcol;
                   7100:     }  /* End else */
                   7101: 
                   7102: }   /* End of spaces */
                   7103: 
                   7104: /*****************************************************************************/
                   7105: 
                   7106: startline()
                   7107: 
                   7108: {
                   7109: 
                   7110: /*
                   7111:  *
                   7112:  * Called whenever we want to be certain we're ready to start pushing characters
                   7113:  * into an open string on the stack. If stringcount is positive we've already
                   7114:  * started, so there's nothing to do. The first string starts in column 1.
                   7115:  *
                   7116:  */
                   7117: 
                   7118:     if ( stringcount < 1 ) {
                   7119:        putc('(', fp_out);
                   7120:        stringstart = col = 1;
                   7121:        stringcount = 1;
                   7122:     }  /* End if */
                   7123: 
                   7124: }   /* End of startline */
                   7125: 
                   7126: /*****************************************************************************/
                   7127: 
                   7128: endstring()
                   7129: 
                   7130: {
                   7131: 
                   7132: /*
                   7133:  *
                   7134:  * End the current string and start a new one.
                   7135:  *
                   7136:  */
                   7137: 
                   7138:     if ( stringcount > 100 ) {         /* don't put too much on the stack */
                   7139:        fprintf(fp_out, ")%d LL\n(", stringstart-1);
                   7140:        stringcount = 2;                /* kludge - don't let endline() use l */
                   7141:     } else {
                   7142:        fprintf(fp_out, ")%d(", stringstart-1);
                   7143:        stringcount++;
                   7144:     }   /* End else */
                   7145: 
                   7146: }   /* End of endstring */
                   7147: 
                   7148: /*****************************************************************************/
                   7149: 
                   7150: endline()
                   7151: 
                   7152: {
                   7153: 
                   7154: /*
                   7155:  *
                   7156:  * Generates a call to the PostScript procedure that processes all the text on
                   7157:  * the stack - provided stringcount is positive. If one string is on the stack
                   7158:  * the fast procedure (ie. l) is used to print the line, otherwise the slower
                   7159:  * one that processes string and column pairs is used.
                   7160:  *
                   7161:  */
                   7162: 
                   7163:     if ( stringcount == 1 )
                   7164:        fprintf(fp_out, ")l\n");
                   7165:     else if ( stringcount > 1 )
                   7166:        fprintf(fp_out, ")%d L\n", stringstart-1);
                   7167: 
                   7168:     stringcount = 0;
                   7169: 
                   7170: }   /* End of endline */
                   7171: 
                   7172: /*****************************************************************************/
                   7173: 
                   7174: oput(ch)
                   7175: 
                   7176:     int                ch;                     /* next output character */
                   7177: 
                   7178: {
                   7179: 
                   7180: /*
                   7181:  *
                   7182:  * Responsible for adding all printing characters from the input file to the
                   7183:  * open string on top of the stack.
                   7184:  *
                   7185:  */
                   7186: 
                   7187:     if ( isascii(ch) && isprint(ch) ) {
                   7188:        startline();
                   7189:        if ( ch == '(' || ch == ')' || ch == '\\' )
                   7190:            putc('\\', fp_out);
                   7191:        putc(ch, fp_out);
                   7192:        col++;
                   7193:     } else if ( extended == TRUE ) {
                   7194:        startline();
                   7195:        fprintf(fp_out, "\\%.3o", ch & 0377);
                   7196:        col++;
                   7197:     }  /* End if */
                   7198: 
                   7199: }   /* End of oput */
                   7200: 
                   7201: /*****************************************************************************/
                   7202: 
                   7203: redirect(pg)
                   7204: 
                   7205:     int                pg;                     /* next page we're printing */
                   7206: 
                   7207: {
                   7208: 
                   7209:     static FILE        *fp_null = NULL;        /* if output is turned off */
                   7210: 
                   7211: /*
                   7212:  *
                   7213:  * If we're not supposed to print page pg, fp_out will be directed to /dev/null,
                   7214:  * otherwise output goes to stdout.
                   7215:  *
                   7216:  */
                   7217: 
                   7218:     if ( pg >= 0 && in_olist(pg) == ON )
                   7219:        fp_out = stdout;
                   7220:     else if ( (fp_out = fp_null) == NULL )
                   7221:        fp_out = fp_null = fopen("/dev/null", "w");
                   7222: 
                   7223: }   /* End of redirect */
                   7224: 
                   7225: /*****************************************************************************/
                   7226: 
                   7227: 0707070014231216431006440057030057030000010636260522627500700003700000002055post.src/postprint/postprint.h/*
                   7228:  *
                   7229:  * Default lines per page, tab stops, and point size.
                   7230:  *
                   7231:  */
                   7232: 
                   7233: #define LINESPP                66
                   7234: #define TABSTOPS       8
                   7235: #define POINTSIZE      10
                   7236: 
                   7237: /*
                   7238:  *
                   7239:  * An array of type Fontmap helps convert font names requested by users into
                   7240:  * legitimate PostScript names. The array is initialized using FONTMAP, which must
                   7241:  * end with an entry that has NULL defined as its name field. The only fonts that
                   7242:  * are guaranteed to work well are the constant width fonts.
                   7243:  *
                   7244:  */
                   7245: 
                   7246: typedef struct {
                   7247:        char    *name;                  /* user's font name */
                   7248:        char    *val;                   /* corresponding PostScript name */
                   7249: } Fontmap;
                   7250: 
                   7251: #define FONTMAP                                                                \
                   7252:                                                                        \
                   7253:        {                                                               \
                   7254:            "R", "Courier",                                             \
                   7255:            "I", "Courier-Oblique",                                     \
                   7256:            "B", "Courier-Bold",                                        \
                   7257:            "CO", "Courier",                                            \
                   7258:            "CI", "Courier-Oblique",                                    \
                   7259:            "CB", "Courier-Bold",                                       \
                   7260:            "CW", "Courier",                                            \
                   7261:            "PO", "Courier",                                            \
                   7262:            "courier", "Courier",                                       \
                   7263:            "cour", "Courier",                                          \
                   7264:            "co", "Courier",                                            \
                   7265:            NULL, NULL                                                  \
                   7266:        }
                   7267: 
                   7268: /*
                   7269:  *
                   7270:  * Some of the non-integer functions in postprint.c.
                   7271:  *
                   7272:  */
                   7273: 
                   7274: char   *get_font();
                   7275: 
                   7276: 0707070014231215121006400057030057030000010637050522633076500004000000004020post.src/postprint/postprint.mkMAKE=/bin/make
                   7277: MAKEFILE=postprint.mk
                   7278: 
                   7279: SYSTEM=V9
                   7280: VERSION=3.3.2
                   7281: 
                   7282: GROUP=bin
                   7283: OWNER=bin
                   7284: 
                   7285: MAN1DIR=/tmp
                   7286: POSTBIN=/usr/bin/postscript
                   7287: POSTLIB=/usr/lib/postscript
                   7288: 
                   7289: COMMONDIR=../common
                   7290: 
                   7291: CFLGS=-O
                   7292: LDFLGS=-s
                   7293: 
                   7294: CFLAGS=$(CFLGS) -I$(COMMONDIR)
                   7295: LDFLAGS=$(LDFLGS)
                   7296: 
                   7297: HFILES=postprint.h\
                   7298:        $(COMMONDIR)/comments.h\
                   7299:        $(COMMONDIR)/ext.h\
                   7300:        $(COMMONDIR)/gen.h\
                   7301:        $(COMMONDIR)/path.h
                   7302: 
                   7303: OFILES=postprint.o\
                   7304:        $(COMMONDIR)/glob.o\
                   7305:        $(COMMONDIR)/misc.o\
                   7306:        $(COMMONDIR)/request.o
                   7307: 
                   7308: all : postprint
                   7309: 
                   7310: install : all
                   7311:        @if [ ! -d "$(POSTBIN)" ]; then \
                   7312:            mkdir $(POSTBIN); \
                   7313:            chmod 755 $(POSTBIN); \
                   7314:            chgrp $(GROUP) $(POSTBIN); \
                   7315:            chown $(OWNER) $(POSTBIN); \
                   7316:        fi
                   7317:        @if [ ! -d "$(POSTLIB)" ]; then \
                   7318:            mkdir $(POSTLIB); \
                   7319:            chmod 755 $(POSTLIB); \
                   7320:            chgrp $(GROUP) $(POSTLIB); \
                   7321:            chown $(OWNER) $(POSTLIB); \
                   7322:        fi
                   7323:        cp postprint $(POSTBIN)/postprint
                   7324:        @chmod 755 $(POSTBIN)/postprint
                   7325:        @chgrp $(GROUP) $(POSTBIN)/postprint
                   7326:        @chown $(OWNER) $(POSTBIN)/postprint
                   7327:        cp postprint.ps $(POSTLIB)/postprint.ps
                   7328:        @chmod 644 $(POSTLIB)/postprint.ps
                   7329:        @chgrp $(GROUP) $(POSTLIB)/postprint.ps
                   7330:        @chown $(OWNER) $(POSTLIB)/postprint.ps
                   7331:        cp postprint.1 $(MAN1DIR)/postprint.1
                   7332:        @chmod 644 $(MAN1DIR)/postprint.1
                   7333:        @chgrp $(GROUP) $(MAN1DIR)/postprint.1
                   7334:        @chown $(OWNER) $(MAN1DIR)/postprint.1
                   7335: 
                   7336: clean :
                   7337:        rm -f *.o
                   7338: 
                   7339: clobber : clean
                   7340:        rm -f postprint
                   7341: 
                   7342: postprint : $(OFILES)
                   7343:        $(CC) $(CFLAGS) $(LDFLAGS) -o postprint $(OFILES)
                   7344: 
                   7345: postprint.o : $(HFILES)
                   7346: 
                   7347: $(COMMONDIR)/glob.o\
                   7348: $(COMMONDIR)/misc.o\
                   7349: $(COMMONDIR)/request.o :
                   7350:        @cd $(COMMONDIR); $(MAKE) -f common.mk `basename $@`
                   7351: 
                   7352: changes :
                   7353:        @trap "" 1 2 3 15; \
                   7354:        sed \
                   7355:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
                   7356:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
                   7357:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
                   7358:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
                   7359:            -e "s'^MAN1DIR=.*'MAN1DIR=$(MAN1DIR)'" \
                   7360:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
                   7361:            -e "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" \
                   7362:        $(MAKEFILE) >XXX.mk; \
                   7363:        mv XXX.mk $(MAKEFILE); \
                   7364:        sed \
                   7365:            -e "s'^.ds dQ.*'.ds dQ $(POSTLIB)'" \
                   7366:        postprint.1 >XXX.1; \
                   7367:        mv XXX.1 postprint.1
                   7368: 
                   7369: 0707070014231215061006400057030057030000010551100522633076600003700000010703post.src/postprint/postprint.1.ds dQ /usr/lib/postscript
                   7370: .TH POSTPRINT 1 "DWB 3.2"
                   7371: .SH NAME
                   7372: .B postprint
                   7373: \- PostScript translator for text files
                   7374: .SH SYNOPSIS
                   7375: \*(mBpostprint\f1
                   7376: .OP "" options []
                   7377: .OP "" files []
                   7378: .SH DESCRIPTION
                   7379: .B postprint
                   7380: translates text
                   7381: .I files
                   7382: into PostScript and writes the results on the
                   7383: standard output.
                   7384: If no
                   7385: .I files
                   7386: are specified, or if
                   7387: .OP \-
                   7388: is one of the input
                   7389: .IR files ,
                   7390: the standard input is read.
                   7391: The following
                   7392: .I options
                   7393: are understood:
                   7394: .TP 0.75i
                   7395: .OP \-c num
                   7396: Print
                   7397: .I num
                   7398: copies of each page.
                   7399: By default only one copy is printed.
                   7400: .TP 
                   7401: .OP \-f name
                   7402: Print
                   7403: .I files
                   7404: using font
                   7405: .IR name .
                   7406: Any PostScript font can be used,
                   7407: although the best results will only be
                   7408: obtained with constant width fonts.
                   7409: The default font is Courier.
                   7410: .TP 
                   7411: .OP \-l num
                   7412: Set the length of a page to
                   7413: .I num
                   7414: lines.
                   7415: By default
                   7416: .I num
                   7417: is 66.
                   7418: Setting
                   7419: .I num
                   7420: to 0 is allowed, and will cause
                   7421: .B postprint
                   7422: to guess a value, based on the point size that is being used.
                   7423: .TP 
                   7424: .OP \-m num
                   7425: Magnify each logical page by the factor
                   7426: .IR num .
                   7427: Pages are scaled uniformly about the origin,
                   7428: which is located near the upper left corner of
                   7429: each page.
                   7430: The default magnification is 1.0.
                   7431: .TP 
                   7432: .OP \-n num
                   7433: Print
                   7434: .I num
                   7435: logical pages on each piece of paper,
                   7436: where
                   7437: .I num
                   7438: can be any positive integer.
                   7439: By default
                   7440: .I num
                   7441: is set to 1.
                   7442: .TP 
                   7443: .OP \-o list
                   7444: Print pages whose numbers are given in the comma-separated
                   7445: .IR list .
                   7446: The list contains single numbers
                   7447: .I N
                   7448: and ranges
                   7449: .IR N1\-\|N2 .
                   7450: A missing
                   7451: .I N1
                   7452: means the lowest numbered page, a missing
                   7453: .I N2
                   7454: means the highest.
                   7455: .TP 
                   7456: .OP \-p mode
                   7457: Print
                   7458: .I files
                   7459: in either \*(mBportrait\fP or \*(mBlandscape\fP
                   7460: .IR mode .
                   7461: Only the first character of
                   7462: .I mode
                   7463: is significant.
                   7464: The default
                   7465: .I mode
                   7466: is \*(mBportrait\fP.
                   7467: .TP 
                   7468: .OP \-r num
                   7469: Selects carriage return behavior.
                   7470: Carriage returns are ignored if
                   7471: .I num
                   7472: is 0,
                   7473: cause a return to column 1 if
                   7474: .I num
                   7475: is 1,
                   7476: and generate a newline if
                   7477: .I num
                   7478: is 2.
                   7479: The default
                   7480: .I num
                   7481: is 0.
                   7482: .TP 
                   7483: .OP \-s num
                   7484: Print
                   7485: .I files
                   7486: using point size
                   7487: .IR num .
                   7488: When printing in landscape mode
                   7489: .I num
                   7490: is scaled by a factor that depends on the
                   7491: imaging area of the device.
                   7492: The default size for portrait mode is 10.
                   7493: .TP 
                   7494: .OP \-t num
                   7495: Assume tabs are set every
                   7496: .I num
                   7497: columns, starting with the first column.
                   7498: By default tabs are set every 8 columns.
                   7499: .TP 
                   7500: .OP \-x num
                   7501: Translate the origin
                   7502: .I num
                   7503: inches along the positive x axis.
                   7504: The default
                   7505: coordinate system has the origin fixed near the
                   7506: upper left corner of the page, with positive
                   7507: x to the right and positive y down the page.
                   7508: Positive
                   7509: .I num
                   7510: moves everything right.
                   7511: The default offset is 0.25 inches.
                   7512: .TP 
                   7513: .OP \-y num
                   7514: Translate the origin
                   7515: .I num
                   7516: inches along the positive y axis.
                   7517: Positive
                   7518: .I num
                   7519: moves text down the page.
                   7520: The default offset is 0.25 inches.
                   7521: .TP 
                   7522: .OP \-E name
                   7523: Set the character encoding for text fonts to
                   7524: .IR name .
                   7525: Requesting
                   7526: .I name
                   7527: means include file
                   7528: .MI \*(dQ/ name .enc \f1.
                   7529: A nonexistent encoding file is silently ignored.
                   7530: The default selects file
                   7531: .MR \*(dQ/Default.enc .
                   7532: .TP 
                   7533: .OP \-L file
                   7534: Use
                   7535: .I file
                   7536: as the PostScript prologue.
                   7537: .br
                   7538: The default is
                   7539: .MR \*(dQ/postprint.ps .
                   7540: .PP
                   7541: Three options allow insertion of arbitrary PostScript
                   7542: at controlled points in the translation process:
                   7543: .TP  0.75i
                   7544: .OP \-C file
                   7545: Copy
                   7546: .I file
                   7547: to the output file;
                   7548: .I file
                   7549: must contain legitimate PostScript.
                   7550: .TP 
                   7551: .OP \-P string
                   7552: Include
                   7553: .I string
                   7554: in the output file;
                   7555: .I string
                   7556: must be legitimate PostScript.
                   7557: .TP 
                   7558: .OP \-R action
                   7559: Requests special
                   7560: .I action
                   7561: (e.g.,
                   7562: .MR manualfeed )
                   7563: on a per page or global basis.
                   7564: The
                   7565: .I action
                   7566: string can be given as
                   7567: .IR request ,
                   7568: .IM request : page\f1\|,
                   7569: or
                   7570: .IM request : page : file\f1\|.
                   7571: If
                   7572: .I page
                   7573: is omitted or given as 0, the request
                   7574: applies to all pages.
                   7575: If
                   7576: .I file
                   7577: is omitted, the request
                   7578: lookup is done in
                   7579: .MR \*(dQ/ps.requests .
                   7580: .PP
                   7581: A new logical page is started after 66 lines have been printed
                   7582: on the current page, or whenever an
                   7583: .SM ASCII
                   7584: form feed character is read.
                   7585: The number of lines per page can be changed using the
                   7586: .OP \-l
                   7587: option.
                   7588: Unprintable
                   7589: .SM ASCII
                   7590: characters are ignored,
                   7591: and lines that are too long are silently truncated
                   7592: by the printer.
                   7593: .SH EXAMPLES
                   7594: .PP
                   7595: Print
                   7596: .I file1
                   7597: and
                   7598: .I file2
                   7599: in landscape mode:
                   7600: .EX
                   7601: postprint -pland \f2file1 file2
                   7602: .EE
                   7603: Print three logical pages on each physical page in portrait mode:
                   7604: .EX
                   7605: postprint -n3 \f2file
                   7606: .EE
                   7607: .SH DIAGNOSTICS
                   7608: A 0 exit status is returned if
                   7609: .I files
                   7610: were successfully processed.
                   7611: .SH FILES
                   7612: .MW \*(dQ/postprint.ps
                   7613: .br
                   7614: .MW \*(dQ/forms.ps
                   7615: .br
                   7616: .MW \*(dQ/ps.requests
                   7617: .SH SEE ALSO
                   7618: .BR dpost (1),
                   7619: .BR postdaisy(1),
                   7620: .BR postdmd(1),
                   7621: .BR postio(1),
                   7622: .BR postmd(1),
                   7623: .BR postreverse(1),
                   7624: .BR posttek(1),
                   7625: .BR psencoding (1)
                   7626: 0707070014231216461006440057030057030000010637200522627500700004000000047760post.src/postprint/Lpostprint.c/*
                   7627:  *
                   7628:  * postprint - PostScript translator for ASCII files.
                   7629:  *
                   7630:  * A simple program that translates ASCII files into PostScript. All it really
                   7631:  * does is expand tabs and backspaces, handle character quoting, print text lines,
                   7632:  * and control when pages are started based on the requested number of lines per
                   7633:  * page.
                   7634:  *
                   7635:  * The PostScript prologue is copied from *prologue before any of the input files
                   7636:  * are translated. The program expects that the following procedures are defined
                   7637:  * in that file:
                   7638:  *
                   7639:  *     setup
                   7640:  *
                   7641:  *       mark ... setup -
                   7642:  *
                   7643:  *         Handles special initialization stuff that depends on how the program
                   7644:  *         was called. Expects to find a mark followed by key/value pairs on the
                   7645:  *         stack. The def operator is applied to each pair up to the mark, then
                   7646:  *         the default state is set up.
                   7647:  *
                   7648:  *     pagesetup
                   7649:  *
                   7650:  *       page pagesetup -
                   7651:  *
                   7652:  *         Does whatever is needed to set things up for the next page. Expects
                   7653:  *         to find the current page number on the stack.
                   7654:  *
                   7655:  *     l
                   7656:  *
                   7657:  *       string l -
                   7658:  *
                   7659:  *         Prints string starting in the first column and then goes to the next
                   7660:  *         line.
                   7661:  *
                   7662:  *     L
                   7663:  *
                   7664:  *       mark string column string column ... L mark
                   7665:  *
                   7666:  *         Prints each string on the stack starting at the horizontal position
                   7667:  *         selected by column. Used when tabs and spaces can be sufficiently well
                   7668:  *         compressed to make the printer overhead worthwhile. Always used when
                   7669:  *         we have to back up.
                   7670:  *
                   7671:  *     done
                   7672:  *
                   7673:  *       done
                   7674:  *
                   7675:  *         Makes sure the last page is printed. Only needed when we're printing
                   7676:  *         more than one page on each sheet of paper.
                   7677:  *
                   7678:  * Almost everything has been changed in this version of postprint. The program
                   7679:  * is more intelligent, especially about tabs, spaces, and backspacing, and as a
                   7680:  * result output files usually print faster. Output files also now conform to
                   7681:  * Adobe's file structuring conventions, which is undoubtedly something I should
                   7682:  * have done in the first version of the program. If the number of lines per page
                   7683:  * is set to 0, which can be done using the -l option, pointsize will be used to
                   7684:  * guess a reasonable value. The estimate is based on the values of LINESPP,
                   7685:  * POINTSIZE, and pointsize, and assumes LINESPP lines would fit on a page if
                   7686:  * we printed in size POINTSIZE. Selecting a point size using the -s option and
                   7687:  * adding -l0 to the command line forces the guess to be made.
                   7688:  *
                   7689:  * Many default values, like the magnification and orientation, are defined in 
                   7690:  * the prologue, which is where they belong. If they're changed (by options), an
                   7691:  * appropriate definition is made after the prologue is added to the output file.
                   7692:  * The -P option passes arbitrary PostScript through to the output file. Among
                   7693:  * other things it can be used to set (or change) values that can't be accessed by
                   7694:  * other options.
                   7695:  *
                   7696:  */
                   7697: 
                   7698: #include <stdio.h>
                   7699: #include <signal.h>
                   7700: #include <ctype.h>
                   7701: #include <fcntl.h>
                   7702: 
                   7703: #include "comments.h"                  /* PostScript file structuring comments */
                   7704: #include "gen.h"                       /* general purpose definitions */
                   7705: #include "path.h"                      /* for the prologue */
                   7706: #include "ext.h"                       /* external variable declarations */
                   7707: #include "postprint.h"                 /* a few special definitions */
                   7708: 
                   7709: char   *optnames = "a:c:ef:l:m:n:o:p:r:s:t:x:y:A:C:E:J:L:P:R:DI";
                   7710: 
                   7711: char   *prologue = POSTPRINT;          /* default PostScript prologue */
                   7712: char   *formfile = FORMFILE;           /* stuff for multiple pages per sheet */
                   7713: 
                   7714: int    formsperpage = 1;               /* page images on each piece of paper */
                   7715: int    copies = 1;                     /* and this many copies of each sheet */
                   7716: 
                   7717: int    linespp = LINESPP;              /* number of lines per page */
                   7718: int    pointsize = POINTSIZE;          /* in this point size */
                   7719: int    tabstops = TABSTOPS;            /* tabs set at these columns */
                   7720: int    crmode = 0;                     /* carriage return mode - 0, 1, or 2 */
                   7721: int    extended = TRUE;                /* use escapes for unprintable chars */
                   7722: 
                   7723: int    col = 1;                        /* next character goes in this column */
                   7724: int    line = 1;                       /* on this line */
                   7725: 
                   7726: int    stringcount = 0;                /* number of strings on the stack */
                   7727: int    stringstart = 1;                /* column where current one starts */
                   7728: 
                   7729: Fontmap        fontmap[] = FONTMAP;            /* for translating font names */
                   7730: char   *fontname = "Courier";          /* use this PostScript font */
                   7731: 
                   7732: int    page = 0;                       /* page we're working on */
                   7733: int    printed = 0;                    /* printed this many pages */
                   7734: 
                   7735: FILE   *fp_in = stdin;                 /* read from this file */
                   7736: FILE   *fp_out = stdout;               /* and write stuff here */
                   7737: FILE   *fp_acct = NULL;                /* for accounting data */
                   7738: 
                   7739: /*****************************************************************************/
                   7740: 
                   7741: main(agc, agv)
                   7742: 
                   7743:     int                agc;
                   7744:     char       *agv[];
                   7745: 
                   7746: {
                   7747: 
                   7748: /*
                   7749:  *
                   7750:  * A simple program that translates ASCII files into PostScript. If there's more
                   7751:  * than one input file, each begins on a new page.
                   7752:  *
                   7753:  */
                   7754: 
                   7755:     argc = agc;                                /* other routines may want them */
                   7756:     argv = agv;
                   7757: 
                   7758:     prog_name = argv[0];               /* really just for error messages */
                   7759: 
                   7760:     init_signals();                    /* sets up interrupt handling */
                   7761:     header();                          /* PostScript header and prologue */
                   7762:     options();                         /* handle the command line options */
                   7763:     setup();                           /* for PostScript */
                   7764:     arguments();                       /* followed by each input file */
                   7765:     done();                            /* print the last page etc. */
                   7766:     account();                         /* job accounting data */
                   7767: 
                   7768:     exit(x_stat);                      /* not much could be wrong */
                   7769: 
                   7770: }   /* End of main */
                   7771: 
                   7772: /*****************************************************************************/
                   7773: 
                   7774: init_signals()
                   7775: 
                   7776: {
                   7777: 
                   7778: /*
                   7779:  *
                   7780:  * Makes sure we handle interrupts.
                   7781:  *
                   7782:  */
                   7783: 
                   7784:     if ( signal(SIGINT, interrupt) == SIG_IGN ) {
                   7785:        signal(SIGINT, SIG_IGN);
                   7786:        signal(SIGQUIT, SIG_IGN);
                   7787:        signal(SIGHUP, SIG_IGN);
                   7788:     } else {
                   7789:        signal(SIGHUP, interrupt);
                   7790:        signal(SIGQUIT, interrupt);
                   7791:     }   /* End else */
                   7792: 
                   7793:     signal(SIGTERM, interrupt);
                   7794: 
                   7795: }   /* End of init_signals */
                   7796: 
                   7797: /*****************************************************************************/
                   7798: 
                   7799: header()
                   7800: 
                   7801: {
                   7802: 
                   7803:     int                ch;                     /* return value from getopt() */
                   7804:     int                old_optind = optind;    /* for restoring optind - should be 1 */
                   7805: 
                   7806: /*
                   7807:  *
                   7808:  * Scans the option list looking for things, like the prologue file, that we need
                   7809:  * right away but could be changed from the default. Doing things this way is an
                   7810:  * attempt to conform to Adobe's latest file structuring conventions. In particular
                   7811:  * they now say there should be nothing executed in the prologue, and they have
                   7812:  * added two new comments that delimit global initialization calls. Once we know
                   7813:  * where things really are we write out the job header, follow it by the prologue,
                   7814:  * and then add the ENDPROLOG and BEGINSETUP comments.
                   7815:  *
                   7816:  */
                   7817: 
                   7818:     while ( (ch = getopt(argc, argv, optnames)) != EOF )
                   7819:        if ( ch == 'L' )
                   7820:            prologue = optarg;
                   7821:        else if ( ch == '?' )
                   7822:            error(FATAL, "");
                   7823: 
                   7824:     optind = old_optind;               /* get ready for option scanning */
                   7825: 
                   7826:     fprintf(stdout, "%s", CONFORMING);
                   7827:     fprintf(stdout, "%s %s\n", VERSION, PROGRAMVERSION);
                   7828:     fprintf(stdout, "%s %s\n", DOCUMENTFONTS, ATEND);
                   7829:     fprintf(stdout, "%s %s\n", PAGES, ATEND);
                   7830:     fprintf(stdout, "%s", ENDCOMMENTS);
                   7831: 
                   7832:     if ( cat(prologue) == FALSE )
                   7833:        error(FATAL, "can't read %s", prologue);
                   7834: 
                   7835:     if ( DOROUND )
                   7836:        cat(ROUNDPAGE);
                   7837: 
                   7838:     fprintf(stdout, "%s", ENDPROLOG);
                   7839:     fprintf(stdout, "%s", BEGINSETUP);
                   7840:     fprintf(stdout, "mark\n");
                   7841: 
                   7842: }   /* End of header */
                   7843: 
                   7844: /*****************************************************************************/
                   7845: 
                   7846: options()
                   7847: 
                   7848: {
                   7849: 
                   7850:     int                ch;                     /* return value from getopt() */
                   7851: 
                   7852: /*
                   7853:  *
                   7854:  * Reads and processes the command line options. Added the -P option so arbitrary
                   7855:  * PostScript code can be passed through. Expect it could be useful for changing
                   7856:  * definitions in the prologue for which options have not been defined.
                   7857:  *
                   7858:  * Although any PostScript font can be used, things will only work well for
                   7859:  * constant width fonts.
                   7860:  *
                   7861:  */
                   7862: 
                   7863:     while ( (ch = getopt(argc, argv, optnames)) != EOF ) {
                   7864:        switch ( ch ) {
                   7865: 
                   7866:            case 'a':                   /* aspect ratio */
                   7867:                    fprintf(stdout, "/aspectratio %s def\n", optarg);
                   7868:                    break;
                   7869: 
                   7870:            case 'c':                   /* copies */
                   7871:                    copies = atoi(optarg);
                   7872:                    fprintf(stdout, "/#copies %s store\n", optarg);
                   7873:                    break;
                   7874: 
                   7875:            case 'e':                   /* obsolete - it's now always on */
                   7876:                    extended = TRUE;
                   7877:                    break;
                   7878: 
                   7879:            case 'f':                   /* use this PostScript font */
                   7880:                    fontname = get_font(optarg);
                   7881:                    fprintf(stdout, "/font /%s def\n", fontname);
                   7882:                    break;
                   7883: 
                   7884:            case 'l':                   /* lines per page */
                   7885:                    linespp = atoi(optarg);
                   7886:                    break;
                   7887: 
                   7888:            case 'm':                   /* magnification */
                   7889:                    fprintf(stdout, "/magnification %s def\n", optarg);
                   7890:                    break;
                   7891: 
                   7892:            case 'n':                   /* forms per page */
                   7893:                    formsperpage = atoi(optarg);
                   7894:                    fprintf(stdout, "%s %s\n", FORMSPERPAGE, optarg);
                   7895:                    fprintf(stdout, "/formsperpage %s def\n", optarg);
                   7896:                    break;
                   7897: 
                   7898:            case 'o':                   /* output page list */
                   7899:                    out_list(optarg);
                   7900:                    break;
                   7901: 
                   7902:            case 'p':                   /* landscape or portrait mode */
                   7903:                    if ( *optarg == 'l' )
                   7904:                        fprintf(stdout, "/landscape true def\n");
                   7905:                    else fprintf(stdout, "/landscape false def\n");
                   7906:                    break;
                   7907: 
                   7908:            case 'r':                   /* carriage return mode */
                   7909:                    crmode = atoi(optarg);
                   7910:                    break;
                   7911: 
                   7912:            case 's':                   /* point size */
                   7913:                    pointsize = atoi(optarg);
                   7914:                    fprintf(stdout, "/pointsize %s def\n", optarg);
                   7915:                    break;
                   7916: 
                   7917:            case 't':                   /* tabstops */
                   7918:                    tabstops = atoi(optarg);
                   7919:                    break;
                   7920: 
                   7921:            case 'x':                   /* shift things horizontally */
                   7922:                    fprintf(stdout, "/xoffset %s def\n", optarg);
                   7923:                    break;
                   7924: 
                   7925:            case 'y':                   /* and vertically on the page */
                   7926:                    fprintf(stdout, "/yoffset %s def\n", optarg);
                   7927:                    break;
                   7928: 
                   7929:            case 'A':                   /* force job accounting */
                   7930:            case 'J':
                   7931:                    if ( (fp_acct = fopen(optarg, "a")) == NULL )
                   7932:                        error(FATAL, "can't open accounting file %s", optarg);
                   7933:                    break;
                   7934: 
                   7935:            case 'C':                   /* copy file straight to output */
                   7936:                    if ( cat(optarg) == FALSE )
                   7937:                        error(FATAL, "can't read %s", optarg);
                   7938:                    break;
                   7939: 
                   7940:            case 'E':                   /* text font encoding */
                   7941:                    fontencoding = optarg;
                   7942:                    break;
                   7943: 
                   7944:            case 'L':                   /* PostScript prologue file */
                   7945:                    prologue = optarg;
                   7946:                    break;
                   7947: 
                   7948:            case 'P':                   /* PostScript pass through */
                   7949:                    fprintf(stdout, "%s\n", optarg);
                   7950:                    break;
                   7951: 
                   7952:            case 'R':                   /* special global or page level request */
                   7953:                    saverequest(optarg);
                   7954:                    break;
                   7955: 
                   7956:            case 'D':                   /* debug flag */
                   7957:                    debug = ON;
                   7958:                    break;
                   7959: 
                   7960:            case 'I':                   /* ignore FATAL errors */
                   7961:                    ignore = ON;
                   7962:                    break;
                   7963: 
                   7964:            case '?':                   /* don't understand the option */
                   7965:                    error(FATAL, "");
                   7966:                    break;
                   7967: 
                   7968:            default:                    /* don't know what to do for ch */
                   7969:                    error(FATAL, "missing case for option %c\n", ch);
                   7970:                    break;
                   7971:        }   /* End switch */
                   7972:     }   /* End while */
                   7973: 
                   7974:     argc -= optind;                    /* get ready for non-option args */
                   7975:     argv += optind;
                   7976: 
                   7977: }   /* End of options */
                   7978: 
                   7979: /*****************************************************************************/
                   7980: 
                   7981: char *get_font(name)
                   7982: 
                   7983:     char       *name;                  /* name the user asked for */
                   7984: 
                   7985: {
                   7986: 
                   7987:     int                i;                      /* for looking through fontmap[] */
                   7988: 
                   7989: /*
                   7990:  *
                   7991:  * Called from options() to map a user's font name into a legal PostScript name.
                   7992:  * If the lookup fails *name is returned to the caller. That should let you choose
                   7993:  * any PostScript font, although things will only work well for constant width
                   7994:  * fonts.
                   7995:  *
                   7996:  */
                   7997: 
                   7998:     for ( i = 0; fontmap[i].name != NULL; i++ )
                   7999:        if ( strcmp(name, fontmap[i].name) == 0 )
                   8000:            return(fontmap[i].val);
                   8001: 
                   8002:     return(name);
                   8003: 
                   8004: }   /* End of get_font */
                   8005: 
                   8006: /*****************************************************************************/
                   8007: 
                   8008: setup()
                   8009: 
                   8010: {
                   8011: 
                   8012: /*
                   8013:  *
                   8014:  * Handles things that must be done after the options are read but before the
                   8015:  * input files are processed. linespp (lines per page) can be set using the -l
                   8016:  * option. If it's not positive we calculate a reasonable value using the
                   8017:  * requested point size - assuming LINESPP lines fit on a page in point size
                   8018:  * POINTSIZE.
                   8019:  *
                   8020:  */
                   8021: 
                   8022:     writerequest(0, stdout);           /* global requests eg. manual feed */
                   8023:     setencoding(fontencoding);
                   8024:     fprintf(stdout, "setup\n");
                   8025: 
                   8026:     if ( formsperpage > 1 ) {
                   8027:        if ( cat(formfile) == FALSE )
                   8028:            error(FATAL, "can't read %s", formfile);
                   8029:        fprintf(stdout, "%d setupforms\n", formsperpage);
                   8030:     }  /* End if */
                   8031: 
                   8032:     fprintf(stdout, "%s", ENDSETUP);
                   8033: 
                   8034:     if ( linespp <= 0 )
                   8035:        linespp = LINESPP * POINTSIZE / pointsize;
                   8036: 
                   8037: }   /* End of setup */
                   8038: 
                   8039: /*****************************************************************************/
                   8040: 
                   8041: arguments()
                   8042: 
                   8043: {
                   8044: 
                   8045: /*
                   8046:  *
                   8047:  * Makes sure all the non-option command line arguments are processed. If we get
                   8048:  * here and there aren't any arguments left, or if '-' is one of the input files
                   8049:  * we'll translate stdin.
                   8050:  *
                   8051:  */
                   8052: 
                   8053:     if ( argc < 1 )
                   8054:        text();
                   8055:     else {                             /* at least one argument is left */
                   8056:        while ( argc > 0 ) {
                   8057:            if ( strcmp(*argv, "-") == 0 )
                   8058:                fp_in = stdin;
                   8059:            else if ( (fp_in = fopen(*argv, "r")) == NULL )
                   8060:                error(FATAL, "can't open %s", *argv);
                   8061:            text();
                   8062:            if ( fp_in != stdin )
                   8063:                fclose(fp_in);
                   8064:            argc--;
                   8065:            argv++;
                   8066:        }   /* End while */
                   8067:     }   /* End else */
                   8068: 
                   8069: }   /* End of arguments */
                   8070: 
                   8071: /*****************************************************************************/
                   8072: 
                   8073: done()
                   8074: 
                   8075: {
                   8076: 
                   8077: /*
                   8078:  *
                   8079:  * Finished with all the input files, so mark the end of the pages with a TRAILER
                   8080:  * comment, make sure the last page prints, and add things like the PAGES comment
                   8081:  * that can only be determined after all the input files have been read.
                   8082:  *
                   8083:  */
                   8084: 
                   8085:     fprintf(stdout, "%s", TRAILER);
                   8086:     fprintf(stdout, "done\n");
                   8087:     fprintf(stdout, "%s %s\n", DOCUMENTFONTS, fontname);
                   8088:     fprintf(stdout, "%s %d\n", PAGES, printed);
                   8089: 
                   8090: }   /* End of done */
                   8091: 
                   8092: /*****************************************************************************/
                   8093: 
                   8094: account()
                   8095: 
                   8096: {
                   8097: 
                   8098: /*
                   8099:  *
                   8100:  * Writes an accounting record to *fp_acct provided it's not NULL. Accounting is
                   8101:  * requested using the -A or -J options.
                   8102:  *
                   8103:  */
                   8104: 
                   8105:     if ( fp_acct != NULL )
                   8106:        fprintf(fp_acct, " print %d\n copies %d\n", printed, copies);
                   8107: 
                   8108: }   /* End of account */
                   8109: 
                   8110: /*****************************************************************************/
                   8111: 
                   8112: text()
                   8113: 
                   8114: {
                   8115: 
                   8116:     int                ch;                     /* next input character */
                   8117: 
                   8118: /*
                   8119:  *
                   8120:  * Translates *fp_in into PostScript. Intercepts space, tab, backspace, newline,
                   8121:  * return, and formfeed. Everything else goes to oput(), which handles quoting
                   8122:  * (if needed) and escapes for nonascii characters if extended is TRUE. The
                   8123:  * redirect(-1) call forces the initial output to go to /dev/null - so stuff
                   8124:  * that formfeed() does at the end of each page goes to /dev/null rather than
                   8125:  * the real output file.
                   8126:  *
                   8127:  */
                   8128: 
                   8129:     redirect(-1);                      /* get ready for the first page */
                   8130:     formfeed();                                /* force PAGE comment etc. */
                   8131: 
                   8132:     while ( (ch = getc(fp_in)) != EOF )
                   8133:        switch ( ch ) {
                   8134:            case '\n':
                   8135:                    newline();
                   8136:                    break;
                   8137: 
                   8138:            case '\t':
                   8139:            case '\b':
                   8140:            case ' ':
                   8141:                    spaces(ch);
                   8142:                    break;
                   8143: 
                   8144:            case '\014':
                   8145:                    formfeed();
                   8146:                    break;
                   8147: 
                   8148:            case '\r':
                   8149:                    if ( crmode == 1 )
                   8150:                        spaces(ch);
                   8151:                    else if ( crmode == 2 )
                   8152:                        newline();
                   8153:                    break;
                   8154: 
                   8155:            default:
                   8156:                    oput(ch);
                   8157:                    break;
                   8158:        }   /* End switch */
                   8159: 
                   8160:     formfeed();                                /* next file starts on a new page? */
                   8161: 
                   8162: }   /* End of text */
                   8163: 
                   8164: /*****************************************************************************/
                   8165: 
                   8166: formfeed()
                   8167: 
                   8168: {
                   8169: 
                   8170: /*
                   8171:  *
                   8172:  * Called whenever we've finished with the last page and want to get ready for the
                   8173:  * next one. Also used at the beginning and end of each input file, so we have to
                   8174:  * be careful about what's done. The first time through (up to the redirect() call)
                   8175:  * output goes to /dev/null.
                   8176:  *
                   8177:  * Adobe now recommends that the showpage operator occur after the page level
                   8178:  * restore so it can be easily redefined to have side-effects in the printer's VM.
                   8179:  * Although it seems reasonable I haven't implemented it, because it makes other
                   8180:  * things, like selectively setting manual feed or choosing an alternate paper
                   8181:  * tray, clumsy - at least on a per page basis. 
                   8182:  *
                   8183:  */
                   8184: 
                   8185:     if ( fp_out == stdout )            /* count the last page */
                   8186:        printed++;
                   8187: 
                   8188:     endline();                         /* print the last line */
                   8189: 
                   8190:     fprintf(fp_out, "cleartomark\n");
                   8191:     fprintf(fp_out, "showpage\n");
                   8192:     fprintf(fp_out, "saveobj restore\n");
                   8193:     fprintf(fp_out, "%s %d %d\n", ENDPAGE, page, printed);
                   8194: 
                   8195:     if ( ungetc(getc(fp_in), fp_in) == EOF )
                   8196:        redirect(-1);
                   8197:     else redirect(++page);
                   8198: 
                   8199:     fprintf(fp_out, "%s %d %d\n", PAGE, page, printed+1);
                   8200:     fprintf(fp_out, "/saveobj save def\n");
                   8201:     fprintf(fp_out, "mark\n");
                   8202:     writerequest(printed+1, fp_out);
                   8203:     fprintf(fp_out, "%d pagesetup\n", printed+1);
                   8204: 
                   8205:     line = 1;
                   8206: 
                   8207: }   /* End of formfeed */
                   8208: 
                   8209: /*****************************************************************************/
                   8210: 
                   8211: newline()
                   8212: 
                   8213: {
                   8214: 
                   8215: /*
                   8216:  *
                   8217:  * Called when we've read a newline character. The call to startline() ensures
                   8218:  * that at least an empty string is on the stack.
                   8219:  *
                   8220:  */
                   8221: 
                   8222:     startline();
                   8223:     endline();                         /* print the current line */
                   8224: 
                   8225:     if ( ++line > linespp )            /* done with this page */
                   8226:        formfeed();
                   8227: 
                   8228: }   /* End of newline */
                   8229: 
                   8230: /*****************************************************************************/
                   8231: 
                   8232: spaces(ch)
                   8233: 
                   8234:     int                ch;                     /* next input character */
                   8235: 
                   8236: {
                   8237: 
                   8238:     int                endcol;                 /* ending column */
                   8239:     int                i;                      /* final distance - in spaces */
                   8240: 
                   8241: /*
                   8242:  *
                   8243:  * Counts consecutive spaces, tabs, and backspaces and figures out where the next
                   8244:  * string should start. Once that's been done we try to choose an efficient way
                   8245:  * to output the required number of spaces. The choice is between using procedure
                   8246:  * l with a single string on the stack and L with several string and column pairs.
                   8247:  * We usually break even, in terms of the size of the output file, if we need four
                   8248:  * consecutive spaces. More means using L decreases the size of the file. For now
                   8249:  * if there are less than 6 consecutive spaces we just add them to the current
                   8250:  * string, otherwise we end that string, follow it by its starting position, and
                   8251:  * begin a new one that starts at endcol. Backspacing is always handled this way.
                   8252:  *
                   8253:  */
                   8254: 
                   8255:     startline();                       /* so col makes sense */
                   8256:     endcol = col;
                   8257: 
                   8258:     do {
                   8259:        if ( ch == ' ' )
                   8260:            endcol++;
                   8261:        else if ( ch == '\t' )
                   8262:            endcol += tabstops - ((endcol - 1) % tabstops);
                   8263:        else if ( ch == '\b' )
                   8264:            endcol--;
                   8265:        else if ( ch == '\r' )
                   8266:            endcol = 1;
                   8267:        else break;
                   8268:     } while ( ch = getc(fp_in) );      /* if ch is 0 we'd quit anyway */
                   8269: 
                   8270:     ungetc(ch, fp_in);                 /* wasn't a space, tab, or backspace */
                   8271: 
                   8272:     if ( endcol < 1 )                  /* can't move past left edge */
                   8273:        endcol = 1;
                   8274: 
                   8275:     if ( (i = endcol - col) >= 0 && i < 6 )
                   8276:        for ( ; i > 0; i-- )
                   8277:            oput((int)' ');
                   8278:     else {
                   8279:        fprintf(fp_out, ")%d(", stringstart-1);
                   8280:        stringcount++;
                   8281:        col = stringstart = endcol;
                   8282:     }  /* End else */
                   8283: 
                   8284: }   /* End of spaces */
                   8285: 
                   8286: /*****************************************************************************/
                   8287: 
                   8288: startline()
                   8289: 
                   8290: {
                   8291: 
                   8292: /*
                   8293:  *
                   8294:  * Called whenever we want to be certain we're ready to start pushing characters
                   8295:  * into an open string on the stack. If stringcount is positive we've already
                   8296:  * started, so there's nothing to do. The first string starts in column 1.
                   8297:  *
                   8298:  */
                   8299: 
                   8300:     if ( stringcount < 1 ) {
                   8301:        putc('(', fp_out);
                   8302:        stringstart = col = 1;
                   8303:        stringcount = 1;
                   8304:     }  /* End if */
                   8305: 
                   8306: }   /* End of startline */
                   8307: 
                   8308: /*****************************************************************************/
                   8309: 
                   8310: endline()
                   8311: 
                   8312: {
                   8313: 
                   8314: /*
                   8315:  *
                   8316:  * Generates a call to the PostScript procedure that processes all the text on
                   8317:  * the stack - provided stringcount is positive. If one string is on the stack
                   8318:  * the fast procedure (ie. l) is used to print the line, otherwise the slower
                   8319:  * one that processes string and column pairs is used.
                   8320:  *
                   8321:  */
                   8322: 
                   8323:     if ( stringcount == 1 )
                   8324:        fprintf(fp_out, ")l\n");
                   8325:     else if ( stringcount > 1 )
                   8326:        fprintf(fp_out, ")%d L\n", stringstart-1);
                   8327: 
                   8328:     stringcount = 0;
                   8329: 
                   8330: }   /* End of endline */
                   8331: 
                   8332: /*****************************************************************************/
                   8333: 
                   8334: oput(ch)
                   8335: 
                   8336:     int                ch;                     /* next output character */
                   8337: 
                   8338: {
                   8339: 
                   8340: /*
                   8341:  *
                   8342:  * Responsible for adding all printing characters from the input file to the
                   8343:  * open string on top of the stack.
                   8344:  *
                   8345:  */
                   8346: 
                   8347:     if ( isascii(ch) && isprint(ch) ) {
                   8348:        startline();
                   8349:        if ( ch == '(' || ch == ')' || ch == '\\' )
                   8350:            putc('\\', fp_out);
                   8351:        putc(ch, fp_out);
                   8352:        col++;
                   8353:     } else if ( extended == TRUE ) {
                   8354:        startline();
                   8355:        fprintf(fp_out, "\\%.3o", ch & 0377);
                   8356:        col++;
                   8357:     }  /* End if */
                   8358: 
                   8359: }   /* End of oput */
                   8360: 
                   8361: /*****************************************************************************/
                   8362: 
                   8363: redirect(pg)
                   8364: 
                   8365:     int                pg;                     /* next page we're printing */
                   8366: 
                   8367: {
                   8368: 
                   8369:     static FILE        *fp_null = NULL;        /* if output is turned off */
                   8370: 
                   8371: /*
                   8372:  *
                   8373:  * If we're not supposed to print page pg, fp_out will be directed to /dev/null,
                   8374:  * otherwise output goes to stdout.
                   8375:  *
                   8376:  */
                   8377: 
                   8378:     if ( pg >= 0 && in_olist(pg) == ON )
                   8379:        fp_out = stdout;
                   8380:     else if ( (fp_out = fp_null) == NULL )
                   8381:        fp_out = fp_null = fopen("/dev/null", "w");
                   8382: 
                   8383: }   /* End of redirect */
                   8384: 
                   8385: /*****************************************************************************/
                   8386: 
                   8387: 0707070014231216471006440057030057030000010643660522630326300004000000003403post.src/postprint/postprint.ps%
                   8388: % Version 3.3.2 prologue for text files.
                   8389: %
                   8390: 
                   8391: /#copies 1 store
                   8392: /aspectratio 1 def
                   8393: /font /Courier def
                   8394: /formsperpage 1 def
                   8395: /landscape false def
                   8396: /magnification 1 def
                   8397: /margin 10 def
                   8398: /orientation 0 def
                   8399: /pointsize 10 def
                   8400: /rotation 1 def
                   8401: /xoffset .25 def
                   8402: /yoffset .25 def
                   8403: 
                   8404: /roundpage true def
                   8405: /useclippath true def
                   8406: /pagebbox [0 0 612 792] def
                   8407: 
                   8408: /inch {72 mul} bind def
                   8409: /min {2 copy gt {exch} if pop} bind def
                   8410: 
                   8411: /show {show} bind def          % so later references don't bind
                   8412: /stringwidth {stringwidth} bind def
                   8413: 
                   8414: /setup {
                   8415:        counttomark 2 idiv {def} repeat pop
                   8416: 
                   8417:        landscape {/orientation 90 orientation add def} if
                   8418:        font findfont pointsize scalefont setfont
                   8419:        /charwidth (M) stringwidth pop def
                   8420:        /linespace pointsize pointsize .10 mul add neg def
                   8421: 
                   8422:        pagedimensions
                   8423:        xcenter ycenter translate
                   8424:        orientation rotation mul rotate
                   8425:        width 2 div neg height 2 div translate
                   8426:        xoffset inch yoffset inch neg translate
                   8427:        margin 2 div dup neg translate
                   8428:        magnification dup aspectratio mul scale
                   8429:        height width div 1 min dup scale
                   8430:        0 linespace translate
                   8431: } def
                   8432: 
                   8433: /pagedimensions {
                   8434:        useclippath userdict /gotpagebbox known not and {
                   8435:                /pagebbox [clippath pathbbox newpath] def
                   8436:                roundpage currentdict /roundpagebbox known and {roundpagebbox} if
                   8437:        } if
                   8438:        pagebbox aload pop
                   8439:        4 -1 roll exch 4 1 roll 4 copy
                   8440:        landscape {4 2 roll} if
                   8441:        sub /width exch def
                   8442:        sub /height exch def
                   8443:        add 2 div /xcenter exch def
                   8444:        add 2 div /ycenter exch def
                   8445:        userdict /gotpagebbox true put
                   8446: } def
                   8447: 
                   8448: /pagesetup {/page exch def 0 0 moveto 0} bind def
                   8449: 
                   8450: /L {
                   8451:        counttomark 2 idiv {charwidth mul currentpoint exch pop moveto show} repeat
                   8452:        linespace add dup 0 exch moveto
                   8453: } bind def
                   8454: 
                   8455: /l {show linespace add dup 0 exch moveto} bind def
                   8456: 
                   8457: /LL {
                   8458:        counttomark 2 idiv {charwidth mul currentpoint exch pop moveto show} repeat
                   8459: } bind def
                   8460: 
                   8461: /done {/lastpage where {pop lastpage} if} def
                   8462: 0707070014231030621006440057030057030000010252400522633110300002700000012724post.src/postscript.mk#
                   8463: # Top level makefile. Instructions are included here and in the README file.
                   8464: #
                   8465: # First save a copy of this file. Then adjust the following definitions (all
                   8466: # come immediatedly after the initial block of comments):
                   8467: #
                   8468: #     MAKE     where make lives
                   8469: #
                   8470: #     MAKEFILE name of this file - for recursive make calls. Must change
                   8471: #              if you rename this file.
                   8472: #
                   8473: #     SYSTEM   best match for your version of Unix. Current choices for
                   8474: #              SYSTEM are:
                   8475: #
                   8476: #                      SYSV    - System V
                   8477: #                      V9      - Ninth Edition
                   8478: #                      BSD4_2  - Berkeley (eg. Sun)
                   8479: #
                   8480: #              Controls conditional compilation in a few places.
                   8481: #
                   8482: #     VERSION  refers to the Version of the DWB package
                   8483: #
                   8484: #     GROUP    group assigned to all installed files
                   8485: #
                   8486: #     OWNER    owner of everything that's installed
                   8487: #
                   8488: #     HOSTDIR  hostresident font directory for PostScript printers. Only
                   8489: #              used in the font download program.
                   8490: #
                   8491: #     FONTDIR  width table directory - for troff and dpost
                   8492: #
                   8493: #     MAN1DIR  command manpages. A command and its manpage are installed
                   8494: #              together - there's no easy way to avoid it. Setting MAN1DIR
                   8495: #              to an existing temporary directory (e.g. /tmp) means an
                   8496: #              install will work but manpages won't go anywhere permanent.
                   8497: #              MAN1DIR must already exist - it will not be created during
                   8498: #              an install.
                   8499: #
                   8500: #     POSTBIN  where most PostScript support programs go. dpost and picpack
                   8501: #              are the exceptions.
                   8502: #
                   8503: #     POSTLIB  prologues and miscellaneous PostScript files. Primarily for
                   8504: #              the programs that live in POSTBIN.
                   8505: #
                   8506: #     CFLGS    common compiler options - used to build CFLAGS in the low
                   8507: #              level makefiles. CFLGS and LDFLGS are best set on the make
                   8508: #              command line.
                   8509: #
                   8510: #     LDFLGS   common link editor options - used to build LDFLAGS in the
                   8511: #              low level makefiles. LDFLGS and CFLGS are best set on the
                   8512: #              make command line.
                   8513: #
                   8514: #     DKHOST   set it to TRUE to compile the DKHOST Datakit support code
                   8515: #              in postio. Temporarily resets SYSTEM to SYSV if DKHOST is
                   8516: #              TRUE and SYSTEM is BSD4_2. Ignored if SYSTEM is not SYSV
                   8517: #              or BSD4_2.
                   8518: #
                   8519: #     DKSTREAMS enables streams based DKHOST support in postio when DKHOST
                   8520: #              is TRUE and SYSTEM is SYSV or BSD4_2. Choices are TRUE,
                   8521: #              FALSE, or a stream module name (e.g. dknetty or dkty). TRUE
                   8522: #              selects dknetty. Newer systems may expect dkty.
                   8523: #
                   8524: #     ROUNDPAGE        must only be set to TRUE or FALSE. TRUE means translators
                   8525: #              include code that maps clipping path dimensions into known
                   8526: #              paper sizes.
                   8527: #
                   8528: #     TARGETS  the default list of what's built by make. Each target must
                   8529: #              be the name of a source directory. A target that names a
                   8530: #              non-existent source directory is ignored. Setting TARGETS
                   8531: #              on the make command line overrides the default list.
                   8532: #
                   8533: # Source files must be updated whenever this file changes. If you change any
                   8534: # definitions type,
                   8535: #
                   8536: #      make -f postscript.mk changes
                   8537: #
                   8538: # to update the source files, man pages, and low level makefiles.
                   8539: #
                   8540: # To build (but not install) the default package (i.e. everything named by
                   8541: # TARGETS) type,
                   8542: #
                   8543: #      make -f postscript.mk all
                   8544: #
                   8545: # The recommended way to build and install the package is,
                   8546: #
                   8547: #      make -f postscript.mk all install
                   8548: #
                   8549: # Although you'll likely have to be root for the install to work.
                   8550: #
                   8551: # After the package is installed use,
                   8552: #
                   8553: #      make -f postscript.mk clobber
                   8554: #
                   8555: # to delete binary files and compiled programs from the source directories.
                   8556: #
                   8557: # Set TARGETS on the command line to select part of the package. For example,
                   8558: #
                   8559: #      make -f postscript.mk TARGETS="dpost devpost" all install
                   8560: #
                   8561: # builds and installs dpsot and the PostScript font tables. Quotes hide white
                   8562: # space from the shell.
                   8563: #
                   8564: 
                   8565: MAKE=/bin/make
                   8566: MAKEFILE=postscript.mk
                   8567: 
                   8568: SYSTEM=V9
                   8569: VERSION=3.3.2
                   8570: 
                   8571: GROUP=bin
                   8572: OWNER=bin
                   8573: 
                   8574: ROOT=
                   8575: FONTDIR=$(ROOT)/usr/lib/font
                   8576: HOSTDIR=$(ROOT)/usr/lib/font/postscript
                   8577: MAN1DIR=$(ROOT)/tmp
                   8578: POSTBIN=$(ROOT)/usr/bin/postscript
                   8579: POSTLIB=$(ROOT)/usr/lib/postscript
                   8580: TMACDIR=$(ROOT)/usr/lib/tmac
                   8581: 
                   8582: COMMONDIR=common
                   8583: CURRENTDIR=.
                   8584: 
                   8585: CFLGS=-O
                   8586: LDFLGS=-s
                   8587: 
                   8588: DKHOST=FALSE
                   8589: DKSTREAMS=FALSE
                   8590: ROUNDPAGE=TRUE
                   8591: 
                   8592: #
                   8593: # $(TARGETS) is the default list of things built by make. Pick dpost or
                   8594: # dpost.utf but not both!
                   8595: #
                   8596: 
                   8597: TARGETS=buildtables\
                   8598:        common\
                   8599:        cropmarks\
                   8600:        devLatin1\
                   8601:        devpost\
                   8602:        download\
                   8603:        dpost.utf\
                   8604:        grabit\
                   8605:        hardcopy\
                   8606:        mpictures\
                   8607:        picpack\
                   8608:         postbgi\
                   8609:         postdaisy\
                   8610:         postdmd\
                   8611:        postgif\
                   8612:        postio\
                   8613:        postmd\
                   8614:         postprint\
                   8615:        postreverse\
                   8616:         posttek\
                   8617:        printfont\
                   8618:        psencoding\
                   8619:        psfiles\
                   8620:        trofftable
                   8621: 
                   8622: ACTION=all
                   8623: 
                   8624: all : $(TARGETS)
                   8625: 
                   8626: clean clobber :
                   8627:        @$(MAKE) -e -f $(MAKEFILE) MAKE=$(MAKE) ACTION=$@ $(TARGETS)
                   8628: 
                   8629: install changes :
                   8630:        @SYSTEM='$(SYSTEM)'; export SYSTEM; \
                   8631:        VERSION='$(VERSION)'; export VERSION; \
                   8632:        GROUP='$(GROUP)'; export GROUP; \
                   8633:        OWNER='$(OWNER)'; export OWNER; \
                   8634:        FONTDIR='$(FONTDIR)'; export FONTDIR; \
                   8635:        HOSTDIR='$(HOSTDIR)'; export HOSTDIR; \
                   8636:        MAN1DIR='$(MAN1DIR)'; export MAN1DIR; \
                   8637:        POSTBIN='$(POSTBIN)'; export POSTBIN; \
                   8638:        POSTLIB='$(POSTLIB)'; export POSTLIB; \
                   8639:        TMACDIR='$(TMACDIR)'; export TMACDIR; \
                   8640:        ROUNDPAGE='$(ROUNDPAGE)'; export ROUNDPAGE; \
                   8641:        $(MAKE) -e -f $(MAKEFILE) MAKE=$(MAKE) ACTION=$@ $(TARGETS)
                   8642: 
                   8643: $(TARGETS) ::
                   8644:        @TARGETS=; unset TARGETS; \
                   8645:        HFILES=; unset HFILES; \
                   8646:        OFILES=; unset OFILES; \
                   8647:        CFLAGS=; unset CFLAGS; \
                   8648:        LDFLAGS=; unset LDFLAGS; \
                   8649:        YFLAGS=; unset YFLAGS; \
                   8650:        SYSTEM='$(SYSTEM)'; export SYSTEM; \
                   8651:        VERSION='$(VERSION)'; export VERSION; \
                   8652:        CFLGS='$(CFLGS)'; export CFLGS; \
                   8653:        LDFLGS='$(LDFLGS)'; export LDFLGS; \
                   8654:        COMMONDIR='../$(COMMONDIR)'; export COMMONDIR; \
                   8655:        DKHOST='$(DKHOST)'; export DKHOST; \
                   8656:        DKSTREAMS='$(DKSTREAMS)'; export DKSTREAMS; \
                   8657:        if [ -d $@ -a -f $@/[email protected] ]; then  \
                   8658:            cd $@; \
                   8659:            echo "---- Making $(ACTION) in directory $(CURRENTDIR)/$@ ----"; \
                   8660:            $(MAKE) -e -f [email protected] MAKE=$(MAKE) $(ACTION); \
                   8661:            echo; \
                   8662:        fi
                   8663: 
                   8664: 0707070014231123300407550057030057030000020437670522633100000002400000000000post.src/psencoding0707070014231123311006440057030057030000010440040522627501000003700000006703post.src/psencoding/Latin1.enc%
                   8665: % Encoding vector and redefinition of findfont for the ISO Latin1 standard.
                   8666: % The 18 characters missing from ROM based fonts on older printers are noted
                   8667: % below.
                   8668: %
                   8669: 
                   8670: /ISOLatin1Encoding [
                   8671:        /.notdef
                   8672:        /.notdef
                   8673:        /.notdef
                   8674:        /.notdef
                   8675:        /.notdef
                   8676:        /.notdef
                   8677:        /.notdef
                   8678:        /.notdef
                   8679:        /.notdef
                   8680:        /.notdef
                   8681:        /.notdef
                   8682:        /.notdef
                   8683:        /.notdef
                   8684:        /.notdef
                   8685:        /.notdef
                   8686:        /.notdef
                   8687:        /.notdef
                   8688:        /.notdef
                   8689:        /.notdef
                   8690:        /.notdef
                   8691:        /.notdef
                   8692:        /.notdef
                   8693:        /.notdef
                   8694:        /.notdef
                   8695:        /.notdef
                   8696:        /.notdef
                   8697:        /.notdef
                   8698:        /.notdef
                   8699:        /.notdef
                   8700:        /.notdef
                   8701:        /.notdef
                   8702:        /.notdef
                   8703:        /space
                   8704:        /exclam
                   8705:        /quotedbl
                   8706:        /numbersign
                   8707:        /dollar
                   8708:        /percent
                   8709:        /ampersand
                   8710:        /quoteright
                   8711:        /parenleft
                   8712:        /parenright
                   8713:        /asterisk
                   8714:        /plus
                   8715:        /comma
                   8716:        /minus
                   8717:        /period
                   8718:        /slash
                   8719:        /zero
                   8720:        /one
                   8721:        /two
                   8722:        /three
                   8723:        /four
                   8724:        /five
                   8725:        /six
                   8726:        /seven
                   8727:        /eight
                   8728:        /nine
                   8729:        /colon
                   8730:        /semicolon
                   8731:        /less
                   8732:        /equal
                   8733:        /greater
                   8734:        /question
                   8735:        /at
                   8736:        /A
                   8737:        /B
                   8738:        /C
                   8739:        /D
                   8740:        /E
                   8741:        /F
                   8742:        /G
                   8743:        /H
                   8744:        /I
                   8745:        /J
                   8746:        /K
                   8747:        /L
                   8748:        /M
                   8749:        /N
                   8750:        /O
                   8751:        /P
                   8752:        /Q
                   8753:        /R
                   8754:        /S
                   8755:        /T
                   8756:        /U
                   8757:        /V
                   8758:        /W
                   8759:        /X
                   8760:        /Y
                   8761:        /Z
                   8762:        /bracketleft
                   8763:        /backslash
                   8764:        /bracketright
                   8765:        /asciicircum
                   8766:        /underscore
                   8767:        /quoteleft
                   8768:        /a
                   8769:        /b
                   8770:        /c
                   8771:        /d
                   8772:        /e
                   8773:        /f
                   8774:        /g
                   8775:        /h
                   8776:        /i
                   8777:        /j
                   8778:        /k
                   8779:        /l
                   8780:        /m
                   8781:        /n
                   8782:        /o
                   8783:        /p
                   8784:        /q
                   8785:        /r
                   8786:        /s
                   8787:        /t
                   8788:        /u
                   8789:        /v
                   8790:        /w
                   8791:        /x
                   8792:        /y
                   8793:        /z
                   8794:        /braceleft
                   8795:        /bar
                   8796:        /braceright
                   8797:        /asciitilde
                   8798:        /.notdef
                   8799:        /.notdef
                   8800:        /.notdef
                   8801:        /.notdef
                   8802:        /.notdef
                   8803:        /.notdef
                   8804:        /.notdef
                   8805:        /.notdef
                   8806:        /.notdef
                   8807:        /.notdef
                   8808:        /.notdef
                   8809:        /.notdef
                   8810:        /.notdef
                   8811:        /.notdef
                   8812:        /.notdef
                   8813:        /.notdef
                   8814:        /.notdef
                   8815:        /dotlessi
                   8816:        /grave
                   8817:        /acute
                   8818:        /circumflex
                   8819:        /tilde
                   8820:        /macron
                   8821:        /breve
                   8822:        /dotaccent
                   8823:        /dieresis
                   8824:        /.notdef
                   8825:        /ring
                   8826:        /cedilla
                   8827:        /.notdef
                   8828:        /hungarumlaut
                   8829:        /ogonek
                   8830:        /caron
                   8831:        /space
                   8832:        /exclamdown
                   8833:        /cent
                   8834:        /sterling
                   8835:        /currency
                   8836:        /yen
                   8837:        /brokenbar              % missing
                   8838:        /section
                   8839:        /dieresis
                   8840:        /copyright
                   8841:        /ordfeminine
                   8842:        /guillemotleft
                   8843:        /logicalnot
                   8844:        /hyphen
                   8845:        /registered
                   8846:        /macron
                   8847:        /degree                 % missing
                   8848:        /plusminus              % missing
                   8849:        /twosuperior            % missing
                   8850:        /threesuperior          % missing
                   8851:        /acute
                   8852:        /mu                     % missing
                   8853:        /paragraph
                   8854:        /periodcentered
                   8855:        /cedilla
                   8856:        /onesuperior            % missing
                   8857:        /ordmasculine
                   8858:        /guillemotright
                   8859:        /onequarter             % missing
                   8860:        /onehalf                % missing
                   8861:        /threequarters          % missing
                   8862:        /questiondown
                   8863:        /Agrave
                   8864:        /Aacute
                   8865:        /Acircumflex
                   8866:        /Atilde
                   8867:        /Adieresis
                   8868:        /Aring
                   8869:        /AE
                   8870:        /Ccedilla
                   8871:        /Egrave
                   8872:        /Eacute
                   8873:        /Ecircumflex
                   8874:        /Edieresis
                   8875:        /Igrave
                   8876:        /Iacute
                   8877:        /Icircumflex
                   8878:        /Idieresis
                   8879:        /Eth                    % missing
                   8880:        /Ntilde
                   8881:        /Ograve
                   8882:        /Oacute
                   8883:        /Ocircumflex
                   8884:        /Otilde
                   8885:        /Odieresis
                   8886:        /multiply               % missing
                   8887:        /Oslash
                   8888:        /Ugrave
                   8889:        /Uacute
                   8890:        /Ucircumflex
                   8891:        /Udieresis
                   8892:        /Yacute                 % missing
                   8893:        /Thorn                  % missing
                   8894:        /germandbls
                   8895:        /agrave
                   8896:        /aacute
                   8897:        /acircumflex
                   8898:        /atilde
                   8899:        /adieresis
                   8900:        /aring
                   8901:        /ae
                   8902:        /ccedilla
                   8903:        /egrave
                   8904:        /eacute
                   8905:        /ecircumflex
                   8906:        /edieresis
                   8907:        /igrave
                   8908:        /iacute
                   8909:        /icircumflex
                   8910:        /idieresis
                   8911:        /eth                    % missing
                   8912:        /ntilde
                   8913:        /ograve
                   8914:        /oacute
                   8915:        /ocircumflex
                   8916:        /otilde
                   8917:        /odieresis
                   8918:        /divide                 % missing
                   8919:        /oslash
                   8920:        /ugrave
                   8921:        /uacute
                   8922:        /ucircumflex
                   8923:        /udieresis
                   8924:        /yacute                 % missing
                   8925:        /thorn                  % missing
                   8926:        /ydieresis
                   8927: ] def
                   8928: 
                   8929: /NewFontDirectory FontDirectory maxlength dict def
                   8930: 
                   8931: %
                   8932: % Apparently no guarantee findfont is defined in systemdict so the obvious
                   8933: %
                   8934: %      systemdict /findfont get exec
                   8935: %
                   8936: % can generate an error. So far the only exception is a VT600 (version 48.0).
                   8937: %
                   8938: 
                   8939: userdict /@RealFindfont known not {
                   8940:        userdict begin
                   8941:                /@RealFindfont systemdict begin /findfont load end def
                   8942:        end
                   8943: } if
                   8944: 
                   8945: /findfont {
                   8946:        dup NewFontDirectory exch known not {
                   8947:                dup
                   8948:                %dup systemdict /findfont get exec      % not always in systemdict
                   8949:                dup userdict /@RealFindfont get exec
                   8950:                dup /Encoding get StandardEncoding eq {
                   8951:                        dup length dict begin
                   8952:                                {1 index /FID ne {def}{pop pop} ifelse} forall
                   8953:                                /Encoding ISOLatin1Encoding def
                   8954:                                currentdict
                   8955:                        end
                   8956:                        /DummyFontName exch definefont
                   8957:                } if
                   8958:                NewFontDirectory 3 1 roll put
                   8959:        } if
                   8960:        NewFontDirectory exch get
                   8961: } bind def
                   8962: 
                   8963: 0707070014231123321006440057030057030000010440200522627501000004200000001523post.src/psencoding/psencoding.sh#
                   8964: # Trivial script for checking and setting the default PostScript font
                   8965: # encoding. Changing the default assumes you can write in $POSTLIB.
                   8966: # Available font encodings are files in $POSTLIB that end in .enc.
                   8967: # The default is $POSTLIB/Default.enc.
                   8968: #
                   8969: 
                   8970: POSTLIB=/usr/lib/postscript
                   8971: DEFAULT=Default.enc
                   8972: CURRENTDEFAULT=
                   8973: 
                   8974: case "$1" in
                   8975:     Default) ;;
                   8976:  
                   8977:     Standard)
                   8978:        rm -f $POSTLIB/$DEFAULT;;
                   8979: 
                   8980:     "") cd $POSTLIB
                   8981:        for i in *.enc; do
                   8982:            if [ -f "$i" -a "$i" != $DEFAULT ]; then
                   8983:                NAME=`echo $i | sed s/\\.enc//`
                   8984:                if cmp $i $DEFAULT >/dev/null 2>/dev/null; then
                   8985:                    CURRENTDEFAULT=$NAME
                   8986:                fi
                   8987:                echo $NAME
                   8988:            fi
                   8989:        done
                   8990:        echo Standard
                   8991:        echo "Default=${CURRENTDEFAULT:-Standard}";;
                   8992: 
                   8993:     *)  if [ -f "$POSTLIB/$1.enc" ]
                   8994:            then rm -f $POSTLIB/$DEFAULT
                   8995:                 ln $POSTLIB/$1.enc $POSTLIB/$DEFAULT
                   8996:            else echo "unrecognized encoding name $1" >&2
                   8997:        fi;;
                   8998: esac
                   8999: 
                   9000: 0707070014231122361006400057030057030000010446000522633077700004200000003265post.src/psencoding/psencoding.mkMAKE=/bin/make
                   9001: MAKEFILE=psencoding.mk
                   9002: 
                   9003: OWNER=bin
                   9004: GROUP=bin
                   9005: 
                   9006: MAN1DIR=/tmp
                   9007: MAN5DIR=/usr/man/p_man/man5
                   9008: POSTLIB=/usr/lib/postscript
                   9009: POSTBIN=/usr/bin/postscript
                   9010: 
                   9011: all : psencoding
                   9012: 
                   9013: install : all
                   9014:        @if [ ! -d "$(POSTBIN)" ]; then \
                   9015:            mkdir $(POSTBIN); \
                   9016:            chmod 755 $(POSTBIN); \
                   9017:            chgrp $(GROUP) $(POSTBIN); \
                   9018:            chown $(OWNER) $(POSTBIN); \
                   9019:        fi
                   9020:        @if [ ! -d "$(POSTLIB)" ]; then \
                   9021:            mkdir $(POSTLIB); \
                   9022:            chmod 755 $(POSTLIB); \
                   9023:            chgrp $(GROUP) $(POSTLIB); \
                   9024:            chown $(OWNER) $(POSTLIB); \
                   9025:        fi
                   9026:        cp psencoding $(POSTBIN)/psencoding
                   9027:        @chmod 755 $(POSTBIN)/psencoding
                   9028:        @chgrp $(GROUP) $(POSTBIN)/psencoding
                   9029:        @chown $(OWNER) $(POSTBIN)/psencoding
                   9030:        cp Latin1.enc $(POSTLIB)/Latin1.enc
                   9031:        @chmod 644 $(POSTLIB)/Latin1.enc
                   9032:        @chgrp $(GROUP) $(POSTLIB)/Latin1.enc
                   9033:        @chown $(OWNER) $(POSTLIB)/Latin1.enc
                   9034:        cp UTF.enc $(POSTLIB)/UTF.enc
                   9035:        @chmod 644 $(POSTLIB)/UTF.enc
                   9036:        @chgrp $(GROUP) $(POSTLIB)/UTF.enc
                   9037:        @chown $(OWNER) $(POSTLIB)/UTF.enc
                   9038:        cp psencoding.1 $(MAN1DIR)/psencoding.1
                   9039:        @chmod 644 $(MAN1DIR)/psencoding.1
                   9040:        @chgrp $(GROUP) $(MAN1DIR)/psencoding.1
                   9041:        @chown $(OWNER) $(MAN1DIR)/psencoding.1
                   9042: 
                   9043: clean :
                   9044: 
                   9045: clobber : clean
                   9046:        rm -f psencoding
                   9047: 
                   9048: psencoding : psencoding.sh
                   9049:        sed "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" psencoding.sh >psencoding
                   9050:        @chmod 755 psencoding
                   9051: 
                   9052: changes :
                   9053:        @trap "" 1 2 3 15; \
                   9054:        sed \
                   9055:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
                   9056:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
                   9057:            -e "s'^MAN1DIR=.*'MAN1DIR=$(MAN1DIR)'" \
                   9058:            -e "s'^MAN5DIR=.*'MAN5DIR=$(MAN5DIR)'" \
                   9059:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
                   9060:            -e "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" \
                   9061:        $(MAKEFILE) >XXX.mk; \
                   9062:        mv XXX.mk $(MAKEFILE); \
                   9063:        sed \
                   9064:            -e "s'^.ds dQ.*'.ds dQ $(POSTLIB)'" \
                   9065:        psencoding.1 >XXX.1; \
                   9066:        mv XXX.1 psencoding.1
                   9067: 
                   9068: 0707070014231122321006400057030057030000010370160522633100000004100000001571post.src/psencoding/psencoding.1.ds dQ /usr/lib/postscript
                   9069: .TH PSENCODING 1 "DWB 3.2"
                   9070: .SH NAME
                   9071: .B psencoding
                   9072: \- check or set the default PostScript font encoding
                   9073: .SH SYNOPSIS
                   9074: \*(mBpsencoding\f1
                   9075: .OP "" encoding []
                   9076: .SH DESCRIPTION
                   9077: .B psencoding
                   9078: sets the default font Encoding used by many PostScript translators to
                   9079: .IR encoding .
                   9080: No arguments means list the available choices and the current default.
                   9081: .PP
                   9082: PostScript encoding files are in directory
                   9083: .MR \*(dQ .
                   9084: Many existing PostScript translators include the encoding file
                   9085: .MR Default.enc ,
                   9086: if it exists, in the output they generate.
                   9087: .PP
                   9088: Requesting
                   9089: .I encoding
                   9090: as the default means link the file
                   9091: .MI \*(dQ/ encoding .enc
                   9092: to the file
                   9093: .MR \*(dQ/Default.enc .
                   9094: Changing the default encoding assumes you can write in directory
                   9095: .MR \*(dQ .
                   9096: .SH FILES
                   9097: .MW \*(dQ/Default.enc
                   9098: .br
                   9099: .MW \*(dQ/*.enc
                   9100: .SH SEE ALSO
                   9101: .BR buildtables (1),
                   9102: .BR dpost (1),
                   9103: .BR postprint (1),
                   9104: .BR trofftable (1)
                   9105: 0707070014231123351006440057030057030000010440400522627501000003400000010340post.src/psencoding/UTF.enc%
                   9106: % Encoding vector, operator and procedure redefinitions for Plan 9 UTF
                   9107: % encoding. Prologues are expected to take steps to ensure operator
                   9108: % redefinitions given here are actually used. Current implementation
                   9109: % assumes UTF byte streams that represent ASCII or Latin1 text.
                   9110: %
                   9111: 
                   9112: /UTFLatin1Encoding [
                   9113:        /.notdef
                   9114:        /.notdef
                   9115:        /.notdef
                   9116:        /.notdef
                   9117:        /.notdef
                   9118:        /.notdef
                   9119:        /.notdef
                   9120:        /.notdef
                   9121:        /.notdef
                   9122:        /.notdef
                   9123:        /.notdef
                   9124:        /.notdef
                   9125:        /.notdef
                   9126:        /.notdef
                   9127:        /.notdef
                   9128:        /.notdef
                   9129:        /.notdef
                   9130:        /.notdef
                   9131:        /.notdef
                   9132:        /.notdef
                   9133:        /.notdef
                   9134:        /.notdef
                   9135:        /.notdef
                   9136:        /.notdef
                   9137:        /.notdef
                   9138:        /.notdef
                   9139:        /.notdef
                   9140:        /.notdef
                   9141:        /.notdef
                   9142:        /.notdef
                   9143:        /.notdef
                   9144:        /.notdef
                   9145:        /space
                   9146:        /exclam
                   9147:        /quotedbl
                   9148:        /numbersign
                   9149:        /dollar
                   9150:        /percent
                   9151:        /ampersand
                   9152:        /quoteright
                   9153:        /parenleft
                   9154:        /parenright
                   9155:        /asterisk
                   9156:        /plus
                   9157:        /comma
                   9158:        /minus
                   9159:        /period
                   9160:        /slash
                   9161:        /zero
                   9162:        /one
                   9163:        /two
                   9164:        /three
                   9165:        /four
                   9166:        /five
                   9167:        /six
                   9168:        /seven
                   9169:        /eight
                   9170:        /nine
                   9171:        /colon
                   9172:        /semicolon
                   9173:        /less
                   9174:        /equal
                   9175:        /greater
                   9176:        /question
                   9177:        /at
                   9178:        /A
                   9179:        /B
                   9180:        /C
                   9181:        /D
                   9182:        /E
                   9183:        /F
                   9184:        /G
                   9185:        /H
                   9186:        /I
                   9187:        /J
                   9188:        /K
                   9189:        /L
                   9190:        /M
                   9191:        /N
                   9192:        /O
                   9193:        /P
                   9194:        /Q
                   9195:        /R
                   9196:        /S
                   9197:        /T
                   9198:        /U
                   9199:        /V
                   9200:        /W
                   9201:        /X
                   9202:        /Y
                   9203:        /Z
                   9204:        /bracketleft
                   9205:        /backslash
                   9206:        /bracketright
                   9207:        /asciicircum
                   9208:        /underscore
                   9209:        /quoteleft
                   9210:        /a
                   9211:        /b
                   9212:        /c
                   9213:        /d
                   9214:        /e
                   9215:        /f
                   9216:        /g
                   9217:        /h
                   9218:        /i
                   9219:        /j
                   9220:        /k
                   9221:        /l
                   9222:        /m
                   9223:        /n
                   9224:        /o
                   9225:        /p
                   9226:        /q
                   9227:        /r
                   9228:        /s
                   9229:        /t
                   9230:        /u
                   9231:        /v
                   9232:        /w
                   9233:        /x
                   9234:        /y
                   9235:        /z
                   9236:        /braceleft
                   9237:        /bar
                   9238:        /braceright
                   9239:        /asciitilde
                   9240:        /.notdef
                   9241:        /.notdef
                   9242:        /.notdef
                   9243:        /.notdef
                   9244:        /.notdef
                   9245:        /.notdef
                   9246:        /.notdef
                   9247:        /.notdef
                   9248:        /.notdef
                   9249:        /.notdef
                   9250:        /.notdef
                   9251:        /.notdef
                   9252:        /.notdef
                   9253:        /.notdef
                   9254:        /.notdef
                   9255:        /.notdef
                   9256:        /.notdef
                   9257:        /dotlessi
                   9258:        /grave
                   9259:        /acute
                   9260:        /circumflex
                   9261:        /tilde
                   9262:        /macron
                   9263:        /breve
                   9264:        /dotaccent
                   9265:        /dieresis
                   9266:        /.notdef
                   9267:        /ring
                   9268:        /cedilla
                   9269:        /.notdef
                   9270:        /hungarumlaut
                   9271:        /ogonek
                   9272:        /caron
                   9273:        /.notdef                % was space
                   9274:        /exclamdown
                   9275:        /cent
                   9276:        /sterling
                   9277:        /currency
                   9278:        /yen
                   9279:        /brokenbar
                   9280:        /section
                   9281:        /dieresis
                   9282:        /copyright
                   9283:        /ordfeminine
                   9284:        /guillemotleft
                   9285:        /logicalnot
                   9286:        /hyphen
                   9287:        /registered
                   9288:        /macron
                   9289:        /degree
                   9290:        /plusminus
                   9291:        /twosuperior
                   9292:        /threesuperior
                   9293:        /acute
                   9294:        /mu
                   9295:        /paragraph
                   9296:        /periodcentered
                   9297:        /cedilla
                   9298:        /onesuperior
                   9299:        /ordmasculine
                   9300:        /guillemotright
                   9301:        /onequarter
                   9302:        /onehalf
                   9303:        /threequarters
                   9304:        /questiondown
                   9305:        /Agrave
                   9306:        /Aacute
                   9307:        /Acircumflex
                   9308:        /Atilde
                   9309:        /Adieresis
                   9310:        /Aring
                   9311:        /AE
                   9312:        /Ccedilla
                   9313:        /Egrave
                   9314:        /Eacute
                   9315:        /Ecircumflex
                   9316:        /Edieresis
                   9317:        /Igrave
                   9318:        /Iacute
                   9319:        /Icircumflex
                   9320:        /Idieresis
                   9321:        /Eth
                   9322:        /Ntilde
                   9323:        /Ograve
                   9324:        /Oacute
                   9325:        /Ocircumflex
                   9326:        /Otilde
                   9327:        /Odieresis
                   9328:        /multiply
                   9329:        /Oslash
                   9330:        /Ugrave
                   9331:        /Uacute
                   9332:        /Ucircumflex
                   9333:        /Udieresis
                   9334:        /Yacute
                   9335:        /Thorn
                   9336:        /germandbls
                   9337:        /agrave
                   9338:        /aacute
                   9339:        /acircumflex
                   9340:        /atilde
                   9341:        /adieresis
                   9342:        /aring
                   9343:        /ae
                   9344:        /ccedilla
                   9345:        /egrave
                   9346:        /eacute
                   9347:        /ecircumflex
                   9348:        /edieresis
                   9349:        /igrave
                   9350:        /iacute
                   9351:        /icircumflex
                   9352:        /idieresis
                   9353:        /eth
                   9354:        /ntilde
                   9355:        /ograve
                   9356:        /oacute
                   9357:        /ocircumflex
                   9358:        /otilde
                   9359:        /odieresis
                   9360:        /divide
                   9361:        /oslash
                   9362:        /ugrave
                   9363:        /uacute
                   9364:        /ucircumflex
                   9365:        /udieresis
                   9366:        /yacute
                   9367:        /thorn
                   9368:        /ydieresis
                   9369: ] def
                   9370: 
                   9371: /NewFontDirectory FontDirectory maxlength dict def
                   9372: 
                   9373: %
                   9374: % Apparently no guarantee findfont is defined in systemdict so the obvious
                   9375: %
                   9376: %      systemdict /findfont get exec
                   9377: %
                   9378: % can generate an error. So far the only exception is a VT600 (version 48.0).
                   9379: %
                   9380: 
                   9381: userdict /@RealFindfont known not {
                   9382:        userdict begin
                   9383:                /@RealFindfont systemdict begin /findfont load end def
                   9384:        end
                   9385: } if
                   9386: 
                   9387: /findfont {
                   9388:        dup NewFontDirectory exch known not {
                   9389:                dup
                   9390:                %dup systemdict /findfont get exec      % not always in systemdict
                   9391:                dup userdict /@RealFindfont get exec
                   9392:                dup /Encoding get StandardEncoding eq {
                   9393:                        dup length 1 add dict begin
                   9394:                                {1 index /FID ne {def}{pop pop} ifelse} forall
                   9395:                                /Encoding UTFLatin1Encoding def
                   9396:                                /Metrics 1 dict def
                   9397:                                Metrics /.notdef 0 put
                   9398:                                currentdict
                   9399:                        end
                   9400:                        /DummyFontName exch definefont
                   9401:                } if
                   9402:                NewFontDirectory 3 1 roll put
                   9403:        } if
                   9404:        NewFontDirectory exch get
                   9405: } bind def
                   9406: 
                   9407: %
                   9408: % Assume A0, except for A0A0 which is replaced by 20A0, can be ignored.
                   9409: % Works with ASCII or Latin1 because A0 has been re-encoded as a zero
                   9410: % width non-printing character. 
                   9411: %
                   9412: 
                   9413: /UTFstring {
                   9414:        dup {
                   9415:                (\240\240) search {
                   9416:                        pop
                   9417:                        0 16#20 put
                   9418:                }{pop exit} ifelse
                   9419:        } loop
                   9420: } bind def
                   9421: 
                   9422: /ashow {mark 4 1 roll UTFstring //ashow cvx exec cleartomark} bind def
                   9423: /awidthshow {mark 7 1 roll UTFstring //awidthshow cvx exec cleartomark} bind def
                   9424: /show {mark exch UTFstring //show cvx exec cleartomark} bind def
                   9425: /stringwidth {UTFstring //stringwidth cvx exec} bind def
                   9426: /widthshow {mark 5 1 roll UTFstring //widthshow cvx exec cleartomark} bind def
                   9427: 
                   9428: %
                   9429: % kshow is harder - stack can't change because of the procedure.
                   9430: %
                   9431: 
                   9432: /kshow dup load type /operatortype eq
                   9433:        {{UTFstring kshow} bind}
                   9434:        {{UTFstring //kshow cvx exec} bind}
                   9435: ifelse def
                   9436: 
                   9437: 0707070014231216500407550057030057030000030636470522633073600002100000000000post.src/devpost0707070014231216511006440057030057030000010637600522627501000002400000003371post.src/devpost/ABname AB
                   9438: fontname AvantGarde-Demi
                   9439: named in prologue
                   9440: ligatures fi fl 0
                   9441: spacewidth 28
                   9442: charset
                   9443: !      28      2       33
                   9444: "      36      2       34
                   9445: dq     "
                   9446: #      60      2       35
                   9447: $      56      2       36
                   9448: %      86      2       37
                   9449: &      68      2       38
                   9450: '      28      2       39
                   9451: (      38      3       40
                   9452: )      38      3       41
                   9453: *      44      2       42
                   9454: +      60      0       43
                   9455: ,      28      1       44
                   9456: hy     42      0       45
                   9457: -      "
                   9458: .      28      0       46
                   9459: /      46      3       47
                   9460: 0      56      2       48
                   9461: 1      56      2       49
                   9462: 2      56      2       50
                   9463: 3      56      2       51
                   9464: 4      56      2       52
                   9465: 5      56      2       53
                   9466: 6      56      2       54
                   9467: 7      56      2       55
                   9468: 8      56      2       56
                   9469: 9      56      2       57
                   9470: :      28      0       58
                   9471: ;      28      1       59
                   9472: ---    60      0       60
                   9473: =      60      0       61
                   9474: ---    60      0       62
                   9475: ?      56      2       63
                   9476: @      74      2       64
                   9477: A      74      2       65
                   9478: B      58      2       66
                   9479: C      78      2       67
                   9480: D      70      2       68
                   9481: E      52      2       69
                   9482: F      48      2       70
                   9483: G      84      2       71
                   9484: H      68      2       72
                   9485: I      28      2       73
                   9486: J      48      2       74
                   9487: K      62      2       75
                   9488: L      44      2       76
                   9489: M      90      2       77
                   9490: N      74      2       78
                   9491: O      84      2       79
                   9492: P      56      2       80
                   9493: Q      84      2       81
                   9494: R      58      2       82
                   9495: S      52      2       83
                   9496: T      42      2       84
                   9497: U      64      2       85
                   9498: V      70      2       86
                   9499: W      90      2       87
                   9500: X      68      2       88
                   9501: Y      62      2       89
                   9502: Z      50      2       90
                   9503: [      32      3       91
                   9504: \      64      2       92
                   9505: bs     "
                   9506: ]      32      3       93
                   9507: ---    60      2       94
                   9508: ---    50      1       95
                   9509: `      28      2       96
                   9510: a      66      0       97
                   9511: b      66      2       98
                   9512: c      64      0       99
                   9513: d      66      2       100
                   9514: e      64      0       101
                   9515: f      28      2       102
                   9516: g      66      1       103
                   9517: h      60      2       104
                   9518: i      24      2       105
                   9519: j      26      3       106
                   9520: k      58      2       107
                   9521: l      24      2       108
                   9522: m      94      0       109
                   9523: n      60      0       110
                   9524: o      64      0       111
                   9525: p      66      1       112
                   9526: q      66      1       113
                   9527: r      32      0       114
                   9528: s      44      0       115
                   9529: t      30      2       116
                   9530: u      60      0       117
                   9531: v      56      0       118
                   9532: w      80      0       119
                   9533: x      56      0       120
                   9534: y      58      1       121
                   9535: z      46      0       122
                   9536: {      34      3       123
                   9537: ---    60      2       124
                   9538: }      34      3       125
                   9539: ---    60      0       126
                   9540: !!     28      1       161
                   9541: ct     56      2       162
                   9542: ps     56      2       163
                   9543: fr     16      2       164
                   9544: yn     56      2       165
                   9545: fn     56      3       166
                   9546: sc     56      3       167
                   9547: cr     60      2       168
                   9548: ---    22      2       169
                   9549: ``     48      2       170
                   9550: ---    46      0       171
                   9551: ---    24      0       172
                   9552: ---    24      0       173
                   9553: fi     52      2       174
                   9554: fl     52      2       175
                   9555: en     50      0       177
                   9556: \-     "
                   9557: dg     56      3       178
                   9558: dd     56      3       179
                   9559: ---    28      0       180
                   9560: pg     60      3       182
                   9561: ---    60      0       183
                   9562: ---    28      1       184
                   9563: ---    48      1       185
                   9564: ''     48      2       186
                   9565: ---    46      0       187
                   9566: ---    100     0       188
                   9567: ---    128     2       189
                   9568: ??     56      1       191
                   9569: ga     42      2       193
                   9570: \`     "
                   9571: aa     42      2       194
                   9572: \'     "
                   9573: ^a     54      2       195
                   9574: ^      "
                   9575: ~a     48      2       196
                   9576: ~      "
                   9577: -a     42      2       197
                   9578: Ua     48      2       198
                   9579: .a     28      2       199
                   9580: :a     50      2       200
                   9581: oa     36      2       202
                   9582: ,a     34      1       203
                   9583: "a     70      2       205
                   9584: Ca     34      1       206
                   9585: va     54      2       207
                   9586: em     100     0       208
                   9587: ---    90      2       225
                   9588: ---    36      2       227
                   9589: ---    48      2       232
                   9590: ---    84      2       233
                   9591: ---    106     2       234
                   9592: ---    36      2       235
                   9593: ---    108     0       241
                   9594: ---    24      0       245
                   9595: ---    32      2       248
                   9596: ---    66      0       249
                   9597: ---    108     0       250
                   9598: ---    60      2       251
                   9599: 0707070014231216521006440057030057030000010637620522627501000002400000003400post.src/devpost/AIname AI
                   9600: fontname AvantGarde-BookOblique
                   9601: named in prologue
                   9602: ligatures fi fl 0
                   9603: spacewidth 28
                   9604: charset
                   9605: !      29      2       33
                   9606: "      31      2       34
                   9607: dq     "
                   9608: #      72      2       35
                   9609: $      55      2       36
                   9610: %      77      2       37
                   9611: &      76      2       38
                   9612: '      35      2       39
                   9613: (      37      3       40
                   9614: )      37      3       41
                   9615: *      42      2       42
                   9616: +      61      0       43
                   9617: ,      28      0       44
                   9618: hy     33      0       45
                   9619: -      "
                   9620: .      28      0       46
                   9621: /      44      3       47
                   9622: 0      55      2       48
                   9623: 1      55      2       49
                   9624: 2      55      2       50
                   9625: 3      55      2       51
                   9626: 4      55      2       52
                   9627: 5      55      2       53
                   9628: 6      55      2       54
                   9629: 7      55      2       55
                   9630: 8      55      2       56
                   9631: 9      55      2       57
                   9632: :      28      0       58
                   9633: ;      28      0       59
                   9634: ---    61      0       60
                   9635: =      61      0       61
                   9636: ---    61      0       62
                   9637: ?      59      2       63
                   9638: @      87      2       64
                   9639: A      74      2       65
                   9640: B      57      2       66
                   9641: C      81      2       67
                   9642: D      74      2       68
                   9643: E      54      2       69
                   9644: F      49      2       70
                   9645: G      87      2       71
                   9646: H      68      2       72
                   9647: I      23      2       73
                   9648: J      48      2       74
                   9649: K      59      2       75
                   9650: L      46      2       76
                   9651: M      92      2       77
                   9652: N      74      2       78
                   9653: O      87      2       79
                   9654: P      59      2       80
                   9655: Q      87      2       81
                   9656: R      61      2       82
                   9657: S      50      2       83
                   9658: T      43      2       84
                   9659: U      66      2       85
                   9660: V      70      2       86
                   9661: W      96      2       87
                   9662: X      61      2       88
                   9663: Y      59      2       89
                   9664: Z      48      2       90
                   9665: [      35      3       91
                   9666: \      61      2       92
                   9667: bs     "
                   9668: ]      35      3       93
                   9669: ---    67      2       94
                   9670: ---    50      1       95
                   9671: `      35      2       96
                   9672: a      68      0       97
                   9673: b      68      2       98
                   9674: c      65      0       99
                   9675: d      69      2       100
                   9676: e      65      0       101
                   9677: f      31      2       102
                   9678: g      67      1       103
                   9679: h      61      2       104
                   9680: i      20      2       105
                   9681: j      20      3       106
                   9682: k      50      2       107
                   9683: l      20      2       108
                   9684: m      94      0       109
                   9685: n      61      0       110
                   9686: o      66      0       111
                   9687: p      68      1       112
                   9688: q      68      1       113
                   9689: r      30      0       114
                   9690: s      39      0       115
                   9691: t      34      2       116
                   9692: u      61      0       117
                   9693: v      55      0       118
                   9694: w      83      0       119
                   9695: x      48      0       120
                   9696: y      54      1       121
                   9697: z      42      0       122
                   9698: {      35      3       123
                   9699: ---    67      2       124
                   9700: }      35      3       125
                   9701: ---    61      0       126
                   9702: !!     29      1       161
                   9703: ct     55      2       162
                   9704: ps     55      2       163
                   9705: fr     17      2       164
                   9706: yn     55      2       165
                   9707: fn     55      3       166
                   9708: sc     61      3       167
                   9709: cr     55      0       168
                   9710: ---    20      2       169
                   9711: ``     50      2       170
                   9712: ---    42      0       171
                   9713: ---    25      0       172
                   9714: ---    25      0       173
                   9715: fi     49      2       174
                   9716: fl     49      2       175
                   9717: en     50      0       177
                   9718: \-     "
                   9719: dg     55      3       178
                   9720: dd     55      3       179
                   9721: ---    28      0       180
                   9722: pg     56      3       182
                   9723: ---    61      0       183
                   9724: ---    35      0       184
                   9725: ---    50      0       185
                   9726: ''     48      2       186
                   9727: ---    42      0       187
                   9728: ---    100     0       188
                   9729: ---    117     2       189
                   9730: ??     59      1       191
                   9731: ga     38      2       193
                   9732: \`     "
                   9733: aa     38      2       194
                   9734: \'     "
                   9735: ^a     50      2       195
                   9736: ^      "
                   9737: ~a     44      2       196
                   9738: ~      "
                   9739: -a     49      2       197
                   9740: Ua     45      2       198
                   9741: .a     22      2       199
                   9742: :a     37      2       200
                   9743: oa     33      2       202
                   9744: ,a     32      1       203
                   9745: "a     55      2       205
                   9746: Ca     30      1       206
                   9747: va     50      2       207
                   9748: em     100     0       208
                   9749: ---    99      2       225
                   9750: ---    37      2       227
                   9751: ---    52      2       232
                   9752: ---    87      2       233
                   9753: ---    119     2       234
                   9754: ---    37      2       235
                   9755: ---    116     0       241
                   9756: ---    20      0       245
                   9757: ---    30      2       248
                   9758: ---    65      0       249
                   9759: ---    114     0       250
                   9760: ---    55      2       251
                   9761: 0707070014231216531006440057030057030000010637640522627501000002400000003371post.src/devpost/ARname AR
                   9762: fontname AvantGarde-Book
                   9763: named in prologue
                   9764: ligatures fi fl 0
                   9765: spacewidth 28
                   9766: charset
                   9767: !      29      2       33
                   9768: "      31      2       34
                   9769: dq     "
                   9770: #      72      2       35
                   9771: $      55      2       36
                   9772: %      77      2       37
                   9773: &      76      2       38
                   9774: '      35      2       39
                   9775: (      37      3       40
                   9776: )      37      3       41
                   9777: *      42      2       42
                   9778: +      61      0       43
                   9779: ,      28      0       44
                   9780: hy     33      0       45
                   9781: -      "
                   9782: .      28      0       46
                   9783: /      44      3       47
                   9784: 0      55      2       48
                   9785: 1      55      2       49
                   9786: 2      55      2       50
                   9787: 3      55      2       51
                   9788: 4      55      2       52
                   9789: 5      55      2       53
                   9790: 6      55      2       54
                   9791: 7      55      2       55
                   9792: 8      55      2       56
                   9793: 9      55      2       57
                   9794: :      28      0       58
                   9795: ;      28      0       59
                   9796: ---    61      0       60
                   9797: =      61      0       61
                   9798: ---    61      0       62
                   9799: ?      59      2       63
                   9800: @      87      2       64
                   9801: A      74      2       65
                   9802: B      57      2       66
                   9803: C      81      2       67
                   9804: D      74      2       68
                   9805: E      54      2       69
                   9806: F      49      2       70
                   9807: G      87      2       71
                   9808: H      68      2       72
                   9809: I      23      2       73
                   9810: J      48      2       74
                   9811: K      59      2       75
                   9812: L      46      2       76
                   9813: M      92      2       77
                   9814: N      74      2       78
                   9815: O      87      2       79
                   9816: P      59      2       80
                   9817: Q      87      2       81
                   9818: R      61      2       82
                   9819: S      50      2       83
                   9820: T      43      2       84
                   9821: U      66      2       85
                   9822: V      70      2       86
                   9823: W      96      2       87
                   9824: X      61      2       88
                   9825: Y      59      2       89
                   9826: Z      48      2       90
                   9827: [      35      3       91
                   9828: \      61      2       92
                   9829: bs     "
                   9830: ]      35      3       93
                   9831: ---    67      2       94
                   9832: ---    50      1       95
                   9833: `      35      2       96
                   9834: a      68      0       97
                   9835: b      68      2       98
                   9836: c      65      0       99
                   9837: d      69      2       100
                   9838: e      65      0       101
                   9839: f      31      2       102
                   9840: g      67      1       103
                   9841: h      61      2       104
                   9842: i      20      2       105
                   9843: j      20      3       106
                   9844: k      50      2       107
                   9845: l      20      2       108
                   9846: m      94      0       109
                   9847: n      61      0       110
                   9848: o      66      0       111
                   9849: p      68      1       112
                   9850: q      68      1       113
                   9851: r      30      0       114
                   9852: s      39      0       115
                   9853: t      34      2       116
                   9854: u      61      0       117
                   9855: v      55      0       118
                   9856: w      83      0       119
                   9857: x      48      0       120
                   9858: y      54      1       121
                   9859: z      42      0       122
                   9860: {      35      3       123
                   9861: ---    67      2       124
                   9862: }      35      3       125
                   9863: ---    61      0       126
                   9864: !!     29      1       161
                   9865: ct     55      2       162
                   9866: ps     55      2       163
                   9867: fr     17      2       164
                   9868: yn     55      2       165
                   9869: fn     55      3       166
                   9870: sc     61      3       167
                   9871: cr     55      0       168
                   9872: ---    20      2       169
                   9873: ``     50      2       170
                   9874: ---    42      0       171
                   9875: ---    25      0       172
                   9876: ---    25      0       173
                   9877: fi     49      2       174
                   9878: fl     49      2       175
                   9879: en     50      0       177
                   9880: \-     "
                   9881: dg     55      3       178
                   9882: dd     55      3       179
                   9883: ---    28      0       180
                   9884: pg     56      3       182
                   9885: ---    61      0       183
                   9886: ---    35      0       184
                   9887: ---    50      0       185
                   9888: ''     48      2       186
                   9889: ---    42      0       187
                   9890: ---    100     0       188
                   9891: ---    117     2       189
                   9892: ??     59      1       191
                   9893: ga     38      2       193
                   9894: \`     "
                   9895: aa     38      2       194
                   9896: \'     "
                   9897: ^a     50      2       195
                   9898: ^      "
                   9899: ~a     44      2       196
                   9900: ~      "
                   9901: -a     49      2       197
                   9902: Ua     45      2       198
                   9903: .a     22      2       199
                   9904: :a     37      2       200
                   9905: oa     33      2       202
                   9906: ,a     32      1       203
                   9907: "a     55      2       205
                   9908: Ca     30      1       206
                   9909: va     50      2       207
                   9910: em     100     0       208
                   9911: ---    99      2       225
                   9912: ---    37      2       227
                   9913: ---    52      2       232
                   9914: ---    87      2       233
                   9915: ---    119     2       234
                   9916: ---    37      2       235
                   9917: ---    116     0       241
                   9918: ---    20      0       245
                   9919: ---    30      2       248
                   9920: ---    65      0       249
                   9921: ---    114     0       250
                   9922: ---    55      2       251
                   9923: 0707070014231216541006440057030057030000010637660522627501000002400000003400post.src/devpost/AXname AX
                   9924: fontname AvantGarde-DemiOblique
                   9925: named in prologue
                   9926: ligatures fi fl 0
                   9927: spacewidth 28
                   9928: charset
                   9929: !      28      2       33
                   9930: "      36      2       34
                   9931: dq     "
                   9932: #      60      2       35
                   9933: $      56      2       36
                   9934: %      86      2       37
                   9935: &      68      2       38
                   9936: '      28      2       39
                   9937: (      38      3       40
                   9938: )      38      3       41
                   9939: *      44      2       42
                   9940: +      60      0       43
                   9941: ,      28      1       44
                   9942: hy     42      0       45
                   9943: -      "
                   9944: .      28      0       46
                   9945: /      46      3       47
                   9946: 0      56      2       48
                   9947: 1      56      2       49
                   9948: 2      56      2       50
                   9949: 3      56      2       51
                   9950: 4      56      2       52
                   9951: 5      56      2       53
                   9952: 6      56      2       54
                   9953: 7      56      2       55
                   9954: 8      56      2       56
                   9955: 9      56      2       57
                   9956: :      28      0       58
                   9957: ;      28      1       59
                   9958: ---    60      0       60
                   9959: =      60      0       61
                   9960: ---    60      0       62
                   9961: ?      56      2       63
                   9962: @      74      2       64
                   9963: A      74      2       65
                   9964: B      58      2       66
                   9965: C      78      2       67
                   9966: D      70      2       68
                   9967: E      52      2       69
                   9968: F      48      2       70
                   9969: G      84      2       71
                   9970: H      68      2       72
                   9971: I      28      2       73
                   9972: J      48      2       74
                   9973: K      62      2       75
                   9974: L      44      2       76
                   9975: M      90      2       77
                   9976: N      74      2       78
                   9977: O      84      2       79
                   9978: P      56      2       80
                   9979: Q      84      2       81
                   9980: R      58      2       82
                   9981: S      52      2       83
                   9982: T      42      2       84
                   9983: U      64      2       85
                   9984: V      70      2       86
                   9985: W      90      2       87
                   9986: X      68      2       88
                   9987: Y      62      2       89
                   9988: Z      50      2       90
                   9989: [      32      3       91
                   9990: \      64      2       92
                   9991: bs     "
                   9992: ]      32      3       93
                   9993: ---    60      2       94
                   9994: ---    50      1       95
                   9995: `      28      2       96
                   9996: a      66      0       97
                   9997: b      66      2       98
                   9998: c      64      0       99
                   9999: d      66      2       100
                   10000: e      64      0       101
                   10001: f      28      2       102
                   10002: g      66      1       103
                   10003: h      60      2       104
                   10004: i      24      2       105
                   10005: j      26      3       106
                   10006: k      58      2       107
                   10007: l      24      2       108
                   10008: m      94      0       109
                   10009: n      60      0       110
                   10010: o      64      0       111
                   10011: p      66      1       112
                   10012: q      66      1       113
                   10013: r      32      0       114
                   10014: s      44      0       115
                   10015: t      30      2       116
                   10016: u      60      0       117
                   10017: v      56      0       118
                   10018: w      80      0       119
                   10019: x      56      0       120
                   10020: y      58      1       121
                   10021: z      46      0       122
                   10022: {      34      3       123
                   10023: ---    60      2       124
                   10024: }      34      3       125
                   10025: ---    60      0       126
                   10026: !!     28      1       161
                   10027: ct     56      2       162
                   10028: ps     56      2       163
                   10029: fr     16      2       164
                   10030: yn     56      2       165
                   10031: fn     56      3       166
                   10032: sc     56      3       167
                   10033: cr     60      2       168
                   10034: ---    22      2       169
                   10035: ``     48      2       170
                   10036: ---    46      0       171
                   10037: ---    24      0       172
                   10038: ---    24      0       173
                   10039: fi     52      2       174
                   10040: fl     52      2       175
                   10041: en     50      0       177
                   10042: \-     "
                   10043: dg     56      3       178
                   10044: dd     56      3       179
                   10045: ---    28      0       180
                   10046: pg     60      3       182
                   10047: ---    60      0       183
                   10048: ---    28      1       184
                   10049: ---    48      1       185
                   10050: ''     48      2       186
                   10051: ---    46      0       187
                   10052: ---    100     0       188
                   10053: ---    128     2       189
                   10054: ??     56      1       191
                   10055: ga     42      2       193
                   10056: \`     "
                   10057: aa     42      2       194
                   10058: \'     "
                   10059: ^a     54      2       195
                   10060: ^      "
                   10061: ~a     48      2       196
                   10062: ~      "
                   10063: -a     42      2       197
                   10064: Ua     48      2       198
                   10065: .a     28      2       199
                   10066: :a     50      2       200
                   10067: oa     36      2       202
                   10068: ,a     34      1       203
                   10069: "a     70      2       205
                   10070: Ca     34      1       206
                   10071: va     54      2       207
                   10072: em     100     0       208
                   10073: ---    90      2       225
                   10074: ---    36      2       227
                   10075: ---    48      2       232
                   10076: ---    84      2       233
                   10077: ---    106     2       234
                   10078: ---    36      2       235
                   10079: ---    108     0       241
                   10080: ---    24      0       245
                   10081: ---    32      2       248
                   10082: ---    66      0       249
                   10083: ---    108     0       250
                   10084: ---    60      2       251
                   10085: 0707070014231216551006440057030057030000010640200522627501000002300000003364post.src/devpost/Bname B
                   10086: fontname Times-Bold
                   10087: named in prologue
                   10088: ligatures fi fl 0
                   10089: spacewidth 25
                   10090: charset
                   10091: !      33      2       33
                   10092: "      56      2       34
                   10093: dq     "
                   10094: #      50      2       35
                   10095: $      50      3       36
                   10096: %      100     2       37
                   10097: &      83      2       38
                   10098: '      33      2       39
                   10099: (      33      3       40
                   10100: )      33      3       41
                   10101: *      50      2       42
                   10102: +      57      0       43
                   10103: ,      25      1       44
                   10104: hy     33      0       45
                   10105: -      "
                   10106: .      25      0       46
                   10107: /      28      2       47
                   10108: 0      50      2       48
                   10109: 1      50      2       49
                   10110: 2      50      2       50
                   10111: 3      50      2       51
                   10112: 4      50      2       52
                   10113: 5      50      2       53
                   10114: 6      50      2       54
                   10115: 7      50      2       55
                   10116: 8      50      2       56
                   10117: 9      50      2       57
                   10118: :      33      0       58
                   10119: ;      33      1       59
                   10120: ---    57      0       60
                   10121: =      57      0       61
                   10122: ---    57      0       62
                   10123: ?      50      2       63
                   10124: @      93      3       64
                   10125: A      72      2       65
                   10126: B      67      2       66
                   10127: C      72      2       67
                   10128: D      72      2       68
                   10129: E      67      2       69
                   10130: F      61      2       70
                   10131: G      78      2       71
                   10132: H      78      2       72
                   10133: I      39      2       73
                   10134: J      50      2       74
                   10135: K      78      2       75
                   10136: L      67      2       76
                   10137: M      94      2       77
                   10138: N      72      2       78
                   10139: O      78      2       79
                   10140: P      61      2       80
                   10141: Q      78      3       81
                   10142: R      72      2       82
                   10143: S      56      2       83
                   10144: T      67      2       84
                   10145: U      72      2       85
                   10146: V      72      2       86
                   10147: W      100     2       87
                   10148: X      72      2       88
                   10149: Y      72      2       89
                   10150: Z      67      2       90
                   10151: [      33      3       91
                   10152: \      28      2       92
                   10153: bs     "
                   10154: ]      33      3       93
                   10155: ---    58      2       94
                   10156: ---    50      1       95
                   10157: `      33      2       96
                   10158: a      50      0       97
                   10159: b      56      2       98
                   10160: c      44      0       99
                   10161: d      56      2       100
                   10162: e      44      0       101
                   10163: f      33      2       102
                   10164: g      50      1       103
                   10165: h      56      2       104
                   10166: i      28      2       105
                   10167: j      33      3       106
                   10168: k      56      2       107
                   10169: l      28      2       108
                   10170: m      83      0       109
                   10171: n      56      0       110
                   10172: o      50      0       111
                   10173: p      56      1       112
                   10174: q      56      1       113
                   10175: r      44      0       114
                   10176: s      39      0       115
                   10177: t      33      2       116
                   10178: u      56      0       117
                   10179: v      50      0       118
                   10180: w      72      0       119
                   10181: x      50      0       120
                   10182: y      50      1       121
                   10183: z      44      0       122
                   10184: {      39      3       123
                   10185: ---    22      3       124
                   10186: }      39      3       125
                   10187: ---    52      0       126
                   10188: !!     33      1       161
                   10189: ct     50      3       162
                   10190: ps     50      2       163
                   10191: fr     17      2       164
                   10192: yn     50      2       165
                   10193: fn     50      3       166
                   10194: sc     50      3       167
                   10195: cr     50      2       168
                   10196: ---    28      2       169
                   10197: ``     50      2       170
                   10198: ---    50      0       171
                   10199: ---    33      0       172
                   10200: ---    33      0       173
                   10201: fi     56      2       174
                   10202: fl     56      2       175
                   10203: en     50      0       177
                   10204: \-     "
                   10205: dg     50      3       178
                   10206: dd     50      3       179
                   10207: ---    25      0       180
                   10208: pg     54      3       182
                   10209: ---    35      0       183
                   10210: ---    33      1       184
                   10211: ---    50      1       185
                   10212: ''     50      2       186
                   10213: ---    50      0       187
                   10214: ---    100     0       188
                   10215: ---    100     2       189
                   10216: ??     50      1       191
                   10217: ga     33      2       193
                   10218: \`     "
                   10219: aa     33      2       194
                   10220: \'     "
                   10221: ^a     33      2       195
                   10222: ^      "
                   10223: ~a     33      2       196
                   10224: ~      "
                   10225: -a     33      2       197
                   10226: Ua     33      2       198
                   10227: .a     33      2       199
                   10228: :a     33      2       200
                   10229: oa     33      2       202
                   10230: ,a     33      1       203
                   10231: "a     33      2       205
                   10232: Ca     33      1       206
                   10233: va     33      2       207
                   10234: em     100     0       208
                   10235: ---    100     2       225
                   10236: ---    30      2       227
                   10237: ---    67      2       232
                   10238: ---    78      2       233
                   10239: ---    100     2       234
                   10240: ---    33      2       235
                   10241: ---    72      0       241
                   10242: ---    28      0       245
                   10243: ---    28      2       248
                   10244: ---    50      2       249
                   10245: ---    72      0       250
                   10246: ---    56      2       251
                   10247: 0707070014231216561006440057030057030000010640220522627501000002400000003367post.src/devpost/BIname BI
                   10248: fontname Times-BoldItalic
                   10249: named in prologue
                   10250: ligatures fi fl 0
                   10251: spacewidth 25
                   10252: charset
                   10253: !      39      2       33
                   10254: "      56      2       34
                   10255: dq     "
                   10256: #      50      2       35
                   10257: $      50      2       36
                   10258: %      83      2       37
                   10259: &      78      2       38
                   10260: '      33      2       39
                   10261: (      33      3       40
                   10262: )      33      3       41
                   10263: *      50      2       42
                   10264: +      57      0       43
                   10265: ,      25      1       44
                   10266: hy     33      0       45
                   10267: -      "
                   10268: .      25      0       46
                   10269: /      28      2       47
                   10270: 0      50      2       48
                   10271: 1      50      2       49
                   10272: 2      50      2       50
                   10273: 3      50      2       51
                   10274: 4      50      2       52
                   10275: 5      50      2       53
                   10276: 6      50      2       54
                   10277: 7      50      2       55
                   10278: 8      50      2       56
                   10279: 9      50      2       57
                   10280: :      33      0       58
                   10281: ;      33      1       59
                   10282: ---    57      2       60
                   10283: =      57      0       61
                   10284: ---    57      2       62
                   10285: ?      50      2       63
                   10286: @      83      3       64
                   10287: A      67      2       65
                   10288: B      67      2       66
                   10289: C      67      2       67
                   10290: D      72      2       68
                   10291: E      67      2       69
                   10292: F      67      2       70
                   10293: G      72      2       71
                   10294: H      78      2       72
                   10295: I      39      2       73
                   10296: J      50      2       74
                   10297: K      67      2       75
                   10298: L      61      2       76
                   10299: M      89      2       77
                   10300: N      72      2       78
                   10301: O      72      2       79
                   10302: P      61      2       80
                   10303: Q      72      3       81
                   10304: R      67      2       82
                   10305: S      56      2       83
                   10306: T      61      2       84
                   10307: U      72      2       85
                   10308: V      67      2       86
                   10309: W      89      2       87
                   10310: X      67      2       88
                   10311: Y      61      2       89
                   10312: Z      61      2       90
                   10313: [      33      3       91
                   10314: \      28      2       92
                   10315: bs     "
                   10316: ]      33      3       93
                   10317: ---    57      2       94
                   10318: ---    50      1       95
                   10319: `      33      2       96
                   10320: a      50      0       97
                   10321: b      50      2       98
                   10322: c      44      0       99
                   10323: d      50      2       100
                   10324: e      44      0       101
                   10325: f      33      3       102
                   10326: g      50      1       103
                   10327: h      56      2       104
                   10328: i      28      2       105
                   10329: j      28      3       106
                   10330: k      50      2       107
                   10331: l      28      2       108
                   10332: m      78      0       109
                   10333: n      56      0       110
                   10334: o      50      0       111
                   10335: p      50      1       112
                   10336: q      50      1       113
                   10337: r      39      0       114
                   10338: s      39      0       115
                   10339: t      28      2       116
                   10340: u      56      0       117
                   10341: v      44      0       118
                   10342: w      67      0       119
                   10343: x      50      0       120
                   10344: y      44      1       121
                   10345: z      39      0       122
                   10346: {      35      3       123
                   10347: ---    22      2       124
                   10348: }      35      3       125
                   10349: ---    57      0       126
                   10350: !!     39      1       161
                   10351: ct     50      3       162
                   10352: ps     50      2       163
                   10353: fr     17      2       164
                   10354: yn     50      2       165
                   10355: fn     50      3       166
                   10356: sc     50      3       167
                   10357: cr     50      2       168
                   10358: ---    28      2       169
                   10359: ``     50      2       170
                   10360: ---    50      0       171
                   10361: ---    33      0       172
                   10362: ---    33      0       173
                   10363: fi     56      3       174
                   10364: fl     56      3       175
                   10365: en     50      0       177
                   10366: \-     "
                   10367: dg     50      3       178
                   10368: dd     50      3       179
                   10369: ---    25      0       180
                   10370: pg     50      3       182
                   10371: ---    35      0       183
                   10372: ---    33      1       184
                   10373: ---    50      1       185
                   10374: ''     50      2       186
                   10375: ---    50      0       187
                   10376: ---    100     0       188
                   10377: ---    100     2       189
                   10378: ??     50      1       191
                   10379: ga     33      2       193
                   10380: \`     "
                   10381: aa     33      2       194
                   10382: \'     "
                   10383: ^a     33      2       195
                   10384: ^      "
                   10385: ~a     33      2       196
                   10386: ~      "
                   10387: -a     33      2       197
                   10388: Ua     33      2       198
                   10389: .a     33      2       199
                   10390: :a     33      2       200
                   10391: oa     33      2       202
                   10392: ,a     33      1       203
                   10393: "a     33      2       205
                   10394: Ca     33      1       206
                   10395: va     33      2       207
                   10396: em     100     0       208
                   10397: ---    94      2       225
                   10398: ---    27      2       227
                   10399: ---    61      2       232
                   10400: ---    72      3       233
                   10401: ---    94      2       234
                   10402: ---    30      2       235
                   10403: ---    72      0       241
                   10404: ---    28      0       245
                   10405: ---    28      2       248
                   10406: ---    50      3       249
                   10407: ---    72      0       250
                   10408: ---    50      3       251
                   10409: 0707070014231216571006440057030057030000010640240522627501000002400000003272post.src/devpost/CBname CB
                   10410: fontname Courier-Bold
                   10411: named in prologue
                   10412: spacewidth 60
                   10413: charset
                   10414: !      60      2       33
                   10415: "      60      2       34
                   10416: dq     "
                   10417: #      60      2       35
                   10418: $      60      2       36
                   10419: %      60      2       37
                   10420: &      60      2       38
                   10421: '      60      2       39
                   10422: (      60      3       40
                   10423: )      60      3       41
                   10424: *      60      2       42
                   10425: +      60      2       43
                   10426: ,      60      1       44
                   10427: hy     60      0       45
                   10428: -      "
                   10429: .      60      0       46
                   10430: /      60      2       47
                   10431: 0      60      2       48
                   10432: 1      60      2       49
                   10433: 2      60      2       50
                   10434: 3      60      2       51
                   10435: 4      60      2       52
                   10436: 5      60      2       53
                   10437: 6      60      2       54
                   10438: 7      60      2       55
                   10439: 8      60      2       56
                   10440: 9      60      2       57
                   10441: :      60      0       58
                   10442: ;      60      0       59
                   10443: <      60      2       60
                   10444: =      60      0       61
                   10445: >      60      2       62
                   10446: ?      60      2       63
                   10447: @      60      2       64
                   10448: A      60      2       65
                   10449: B      60      2       66
                   10450: C      60      2       67
                   10451: D      60      2       68
                   10452: E      60      2       69
                   10453: F      60      2       70
                   10454: G      60      2       71
                   10455: H      60      2       72
                   10456: I      60      2       73
                   10457: J      60      2       74
                   10458: K      60      2       75
                   10459: L      60      2       76
                   10460: M      60      2       77
                   10461: N      60      2       78
                   10462: O      60      2       79
                   10463: P      60      2       80
                   10464: Q      60      3       81
                   10465: R      60      2       82
                   10466: S      60      2       83
                   10467: T      60      2       84
                   10468: U      60      2       85
                   10469: V      60      2       86
                   10470: W      60      2       87
                   10471: X      60      2       88
                   10472: Y      60      2       89
                   10473: Z      60      2       90
                   10474: [      60      3       91
                   10475: \      60      2       92
                   10476: bs     "
                   10477: ]      60      3       93
                   10478: ^      60      2       94
                   10479: _      60      1       95
                   10480: `      60      2       96
                   10481: a      60      0       97
                   10482: b      60      2       98
                   10483: c      60      0       99
                   10484: d      60      2       100
                   10485: e      60      0       101
                   10486: f      60      2       102
                   10487: g      60      1       103
                   10488: h      60      2       104
                   10489: i      60      2       105
                   10490: j      60      3       106
                   10491: k      60      2       107
                   10492: l      60      2       108
                   10493: m      60      0       109
                   10494: n      60      0       110
                   10495: o      60      0       111
                   10496: p      60      1       112
                   10497: q      60      1       113
                   10498: r      60      0       114
                   10499: s      60      0       115
                   10500: t      60      2       116
                   10501: u      60      0       117
                   10502: v      60      0       118
                   10503: w      60      0       119
                   10504: x      60      0       120
                   10505: y      60      1       121
                   10506: z      60      0       122
                   10507: {      60      3       123
                   10508: |      60      3       124
                   10509: }      60      3       125
                   10510: ~      60      0       126
                   10511: !!     60      1       161
                   10512: ct     60      2       162
                   10513: ps     60      2       163
                   10514: fr     60      2       164
                   10515: yn     60      2       165
                   10516: fn     60      2       166
                   10517: sc     60      2       167
                   10518: cr     60      2       168
                   10519: ---    60      2       169
                   10520: ``     60      2       170
                   10521: ---    60      0       171
                   10522: ---    60      0       172
                   10523: ---    60      0       173
                   10524: en     60      0       177
                   10525: \-     "
                   10526: dg     60      2       178
                   10527: dd     60      2       179
                   10528: ---    60      0       180
                   10529: pg     60      2       182
                   10530: ---    60      0       183
                   10531: ---    60      1       184
                   10532: ---    60      1       185
                   10533: ''     60      2       186
                   10534: ---    60      0       187
                   10535: ---    60      0       188
                   10536: ---    60      2       189
                   10537: ??     60      1       191
                   10538: ga     60      2       193
                   10539: \`     "
                   10540: aa     60      2       194
                   10541: \'     "
                   10542: ^a     60      2       195
                   10543: ^      "
                   10544: ~a     60      2       196
                   10545: ~      "
                   10546: -a     60      2       197
                   10547: Ua     60      2       198
                   10548: .a     60      2       199
                   10549: :a     60      2       200
                   10550: oa     60      2       202
                   10551: ,a     60      1       203
                   10552: "a     60      2       205
                   10553: Ca     60      1       206
                   10554: va     60      2       207
                   10555: em     60      0       208
                   10556: ---    60      2       225
                   10557: ---    60      2       227
                   10558: ---    60      2       232
                   10559: ---    60      2       233
                   10560: ---    60      2       234
                   10561: ---    60      2       235
                   10562: ---    60      0       241
                   10563: ---    60      0       245
                   10564: ---    60      2       248
                   10565: ---    60      0       249
                   10566: ---    60      0       250
                   10567: ---    60      2       251
                   10568: 0707070014231216601006440057030057030000010640260522627501000002400000003275post.src/devpost/CIname CI
                   10569: fontname Courier-Oblique
                   10570: named in prologue
                   10571: spacewidth 60
                   10572: charset
                   10573: !      60      2       33
                   10574: "      60      2       34
                   10575: dq     "
                   10576: #      60      2       35
                   10577: $      60      2       36
                   10578: %      60      2       37
                   10579: &      60      2       38
                   10580: '      60      2       39
                   10581: (      60      3       40
                   10582: )      60      3       41
                   10583: *      60      2       42
                   10584: +      60      2       43
                   10585: ,      60      1       44
                   10586: hy     60      0       45
                   10587: -      "
                   10588: .      60      0       46
                   10589: /      60      2       47
                   10590: 0      60      2       48
                   10591: 1      60      2       49
                   10592: 2      60      2       50
                   10593: 3      60      2       51
                   10594: 4      60      2       52
                   10595: 5      60      2       53
                   10596: 6      60      2       54
                   10597: 7      60      2       55
                   10598: 8      60      2       56
                   10599: 9      60      2       57
                   10600: :      60      0       58
                   10601: ;      60      0       59
                   10602: <      60      2       60
                   10603: =      60      0       61
                   10604: >      60      2       62
                   10605: ?      60      2       63
                   10606: @      60      2       64
                   10607: A      60      2       65
                   10608: B      60      2       66
                   10609: C      60      2       67
                   10610: D      60      2       68
                   10611: E      60      2       69
                   10612: F      60      2       70
                   10613: G      60      2       71
                   10614: H      60      2       72
                   10615: I      60      2       73
                   10616: J      60      2       74
                   10617: K      60      2       75
                   10618: L      60      2       76
                   10619: M      60      2       77
                   10620: N      60      2       78
                   10621: O      60      2       79
                   10622: P      60      2       80
                   10623: Q      60      3       81
                   10624: R      60      2       82
                   10625: S      60      2       83
                   10626: T      60      2       84
                   10627: U      60      2       85
                   10628: V      60      2       86
                   10629: W      60      2       87
                   10630: X      60      2       88
                   10631: Y      60      2       89
                   10632: Z      60      2       90
                   10633: [      60      3       91
                   10634: \      60      2       92
                   10635: bs     "
                   10636: ]      60      3       93
                   10637: ^      60      2       94
                   10638: _      60      1       95
                   10639: `      60      2       96
                   10640: a      60      0       97
                   10641: b      60      2       98
                   10642: c      60      0       99
                   10643: d      60      2       100
                   10644: e      60      0       101
                   10645: f      60      2       102
                   10646: g      60      1       103
                   10647: h      60      2       104
                   10648: i      60      2       105
                   10649: j      60      3       106
                   10650: k      60      2       107
                   10651: l      60      2       108
                   10652: m      60      0       109
                   10653: n      60      0       110
                   10654: o      60      0       111
                   10655: p      60      1       112
                   10656: q      60      1       113
                   10657: r      60      0       114
                   10658: s      60      0       115
                   10659: t      60      2       116
                   10660: u      60      0       117
                   10661: v      60      0       118
                   10662: w      60      0       119
                   10663: x      60      0       120
                   10664: y      60      1       121
                   10665: z      60      0       122
                   10666: {      60      3       123
                   10667: |      60      3       124
                   10668: }      60      3       125
                   10669: ~      60      0       126
                   10670: !!     60      1       161
                   10671: ct     60      2       162
                   10672: ps     60      2       163
                   10673: fr     60      2       164
                   10674: yn     60      2       165
                   10675: fn     60      2       166
                   10676: sc     60      2       167
                   10677: cr     60      2       168
                   10678: ---    60      2       169
                   10679: ``     60      2       170
                   10680: ---    60      0       171
                   10681: ---    60      0       172
                   10682: ---    60      0       173
                   10683: en     60      0       177
                   10684: \-     "
                   10685: dg     60      2       178
                   10686: dd     60      2       179
                   10687: ---    60      0       180
                   10688: pg     60      2       182
                   10689: ---    60      0       183
                   10690: ---    60      1       184
                   10691: ---    60      1       185
                   10692: ''     60      2       186
                   10693: ---    60      0       187
                   10694: ---    60      0       188
                   10695: ---    60      2       189
                   10696: ??     60      1       191
                   10697: ga     60      2       193
                   10698: \`     "
                   10699: aa     60      2       194
                   10700: \'     "
                   10701: ^a     60      2       195
                   10702: ^      "
                   10703: ~a     60      2       196
                   10704: ~      "
                   10705: -a     60      2       197
                   10706: Ua     60      2       198
                   10707: .a     60      2       199
                   10708: :a     60      2       200
                   10709: oa     60      2       202
                   10710: ,a     60      1       203
                   10711: "a     60      2       205
                   10712: Ca     60      1       206
                   10713: va     60      2       207
                   10714: em     60      0       208
                   10715: ---    60      2       225
                   10716: ---    60      2       227
                   10717: ---    60      2       232
                   10718: ---    60      2       233
                   10719: ---    60      2       234
                   10720: ---    60      2       235
                   10721: ---    60      0       241
                   10722: ---    60      0       245
                   10723: ---    60      2       248
                   10724: ---    60      0       249
                   10725: ---    60      0       250
                   10726: ---    60      2       251
                   10727: 0707070014231216611006440057030057030000010640400522627501000002400000003265post.src/devpost/COname CO
                   10728: fontname Courier
                   10729: named in prologue
                   10730: spacewidth 60
                   10731: charset
                   10732: !      60      2       33
                   10733: "      60      2       34
                   10734: dq     "
                   10735: #      60      2       35
                   10736: $      60      2       36
                   10737: %      60      2       37
                   10738: &      60      2       38
                   10739: '      60      2       39
                   10740: (      60      3       40
                   10741: )      60      3       41
                   10742: *      60      2       42
                   10743: +      60      2       43
                   10744: ,      60      1       44
                   10745: hy     60      0       45
                   10746: -      "
                   10747: .      60      0       46
                   10748: /      60      2       47
                   10749: 0      60      2       48
                   10750: 1      60      2       49
                   10751: 2      60      2       50
                   10752: 3      60      2       51
                   10753: 4      60      2       52
                   10754: 5      60      2       53
                   10755: 6      60      2       54
                   10756: 7      60      2       55
                   10757: 8      60      2       56
                   10758: 9      60      2       57
                   10759: :      60      0       58
                   10760: ;      60      0       59
                   10761: <      60      2       60
                   10762: =      60      0       61
                   10763: >      60      2       62
                   10764: ?      60      2       63
                   10765: @      60      2       64
                   10766: A      60      2       65
                   10767: B      60      2       66
                   10768: C      60      2       67
                   10769: D      60      2       68
                   10770: E      60      2       69
                   10771: F      60      2       70
                   10772: G      60      2       71
                   10773: H      60      2       72
                   10774: I      60      2       73
                   10775: J      60      2       74
                   10776: K      60      2       75
                   10777: L      60      2       76
                   10778: M      60      2       77
                   10779: N      60      2       78
                   10780: O      60      2       79
                   10781: P      60      2       80
                   10782: Q      60      3       81
                   10783: R      60      2       82
                   10784: S      60      2       83
                   10785: T      60      2       84
                   10786: U      60      2       85
                   10787: V      60      2       86
                   10788: W      60      2       87
                   10789: X      60      2       88
                   10790: Y      60      2       89
                   10791: Z      60      2       90
                   10792: [      60      3       91
                   10793: \      60      2       92
                   10794: bs     "
                   10795: ]      60      3       93
                   10796: ^      60      2       94
                   10797: _      60      1       95
                   10798: `      60      2       96
                   10799: a      60      0       97
                   10800: b      60      2       98
                   10801: c      60      0       99
                   10802: d      60      2       100
                   10803: e      60      0       101
                   10804: f      60      2       102
                   10805: g      60      1       103
                   10806: h      60      2       104
                   10807: i      60      2       105
                   10808: j      60      3       106
                   10809: k      60      2       107
                   10810: l      60      2       108
                   10811: m      60      0       109
                   10812: n      60      0       110
                   10813: o      60      0       111
                   10814: p      60      1       112
                   10815: q      60      1       113
                   10816: r      60      0       114
                   10817: s      60      0       115
                   10818: t      60      2       116
                   10819: u      60      0       117
                   10820: v      60      0       118
                   10821: w      60      0       119
                   10822: x      60      0       120
                   10823: y      60      1       121
                   10824: z      60      0       122
                   10825: {      60      3       123
                   10826: |      60      3       124
                   10827: }      60      3       125
                   10828: ~      60      0       126
                   10829: !!     60      1       161
                   10830: ct     60      2       162
                   10831: ps     60      2       163
                   10832: fr     60      2       164
                   10833: yn     60      2       165
                   10834: fn     60      2       166
                   10835: sc     60      2       167
                   10836: cr     60      2       168
                   10837: ---    60      2       169
                   10838: ``     60      2       170
                   10839: ---    60      0       171
                   10840: ---    60      0       172
                   10841: ---    60      0       173
                   10842: en     60      0       177
                   10843: \-     "
                   10844: dg     60      2       178
                   10845: dd     60      2       179
                   10846: ---    60      0       180
                   10847: pg     60      2       182
                   10848: ---    60      0       183
                   10849: ---    60      1       184
                   10850: ---    60      1       185
                   10851: ''     60      2       186
                   10852: ---    60      0       187
                   10853: ---    60      0       188
                   10854: ---    60      2       189
                   10855: ??     60      1       191
                   10856: ga     60      2       193
                   10857: \`     "
                   10858: aa     60      2       194
                   10859: \'     "
                   10860: ^a     60      2       195
                   10861: ^      "
                   10862: ~a     60      2       196
                   10863: ~      "
                   10864: -a     60      2       197
                   10865: Ua     60      2       198
                   10866: .a     60      2       199
                   10867: :a     60      2       200
                   10868: oa     60      2       202
                   10869: ,a     60      1       203
                   10870: "a     60      2       205
                   10871: Ca     60      1       206
                   10872: va     60      2       207
                   10873: em     60      0       208
                   10874: ---    60      2       225
                   10875: ---    60      2       227
                   10876: ---    60      2       232
                   10877: ---    60      2       233
                   10878: ---    60      2       234
                   10879: ---    60      2       235
                   10880: ---    60      0       241
                   10881: ---    60      0       245
                   10882: ---    60      2       248
                   10883: ---    60      0       249
                   10884: ---    60      0       250
                   10885: ---    60      2       251
                   10886: 0707070014231216621006440057030057030000010640420522627501100002400000003265post.src/devpost/CWname CW
                   10887: fontname Courier
                   10888: named in prologue
                   10889: spacewidth 60
                   10890: charset
                   10891: !      60      2       33
                   10892: "      60      2       34
                   10893: dq     "
                   10894: #      60      2       35
                   10895: $      60      2       36
                   10896: %      60      2       37
                   10897: &      60      2       38
                   10898: '      60      2       39
                   10899: (      60      3       40
                   10900: )      60      3       41
                   10901: *      60      2       42
                   10902: +      60      2       43
                   10903: ,      60      1       44
                   10904: hy     60      0       45
                   10905: -      "
                   10906: .      60      0       46
                   10907: /      60      2       47
                   10908: 0      60      2       48
                   10909: 1      60      2       49
                   10910: 2      60      2       50
                   10911: 3      60      2       51
                   10912: 4      60      2       52
                   10913: 5      60      2       53
                   10914: 6      60      2       54
                   10915: 7      60      2       55
                   10916: 8      60      2       56
                   10917: 9      60      2       57
                   10918: :      60      0       58
                   10919: ;      60      0       59
                   10920: <      60      2       60
                   10921: =      60      0       61
                   10922: >      60      2       62
                   10923: ?      60      2       63
                   10924: @      60      2       64
                   10925: A      60      2       65
                   10926: B      60      2       66
                   10927: C      60      2       67
                   10928: D      60      2       68
                   10929: E      60      2       69
                   10930: F      60      2       70
                   10931: G      60      2       71
                   10932: H      60      2       72
                   10933: I      60      2       73
                   10934: J      60      2       74
                   10935: K      60      2       75
                   10936: L      60      2       76
                   10937: M      60      2       77
                   10938: N      60      2       78
                   10939: O      60      2       79
                   10940: P      60      2       80
                   10941: Q      60      3       81
                   10942: R      60      2       82
                   10943: S      60      2       83
                   10944: T      60      2       84
                   10945: U      60      2       85
                   10946: V      60      2       86
                   10947: W      60      2       87
                   10948: X      60      2       88
                   10949: Y      60      2       89
                   10950: Z      60      2       90
                   10951: [      60      3       91
                   10952: \      60      2       92
                   10953: bs     "
                   10954: ]      60      3       93
                   10955: ^      60      2       94
                   10956: _      60      1       95
                   10957: `      60      2       96
                   10958: a      60      0       97
                   10959: b      60      2       98
                   10960: c      60      0       99
                   10961: d      60      2       100
                   10962: e      60      0       101
                   10963: f      60      2       102
                   10964: g      60      1       103
                   10965: h      60      2       104
                   10966: i      60      2       105
                   10967: j      60      3       106
                   10968: k      60      2       107
                   10969: l      60      2       108
                   10970: m      60      0       109
                   10971: n      60      0       110
                   10972: o      60      0       111
                   10973: p      60      1       112
                   10974: q      60      1       113
                   10975: r      60      0       114
                   10976: s      60      0       115
                   10977: t      60      2       116
                   10978: u      60      0       117
                   10979: v      60      0       118
                   10980: w      60      0       119
                   10981: x      60      0       120
                   10982: y      60      1       121
                   10983: z      60      0       122
                   10984: {      60      3       123
                   10985: |      60      3       124
                   10986: }      60      3       125
                   10987: ~      60      0       126
                   10988: !!     60      1       161
                   10989: ct     60      2       162
                   10990: ps     60      2       163
                   10991: fr     60      2       164
                   10992: yn     60      2       165
                   10993: fn     60      2       166
                   10994: sc     60      2       167
                   10995: cr     60      2       168
                   10996: ---    60      2       169
                   10997: ``     60      2       170
                   10998: ---    60      0       171
                   10999: ---    60      0       172
                   11000: ---    60      0       173
                   11001: en     60      0       177
                   11002: \-     "
                   11003: dg     60      2       178
                   11004: dd     60      2       179
                   11005: ---    60      0       180
                   11006: pg     60      2       182
                   11007: ---    60      0       183
                   11008: ---    60      1       184
                   11009: ---    60      1       185
                   11010: ''     60      2       186
                   11011: ---    60      0       187
                   11012: ---    60      0       188
                   11013: ---    60      2       189
                   11014: ??     60      1       191
                   11015: ga     60      2       193
                   11016: \`     "
                   11017: aa     60      2       194
                   11018: \'     "
                   11019: ^a     60      2       195
                   11020: ^      "
                   11021: ~a     60      2       196
                   11022: ~      "
                   11023: -a     60      2       197
                   11024: Ua     60      2       198
                   11025: .a     60      2       199
                   11026: :a     60      2       200
                   11027: oa     60      2       202
                   11028: ,a     60      1       203
                   11029: "a     60      2       205
                   11030: Ca     60      1       206
                   11031: va     60      2       207
                   11032: em     60      0       208
                   11033: ---    60      2       225
                   11034: ---    60      2       227
                   11035: ---    60      2       232
                   11036: ---    60      2       233
                   11037: ---    60      2       234
                   11038: ---    60      2       235
                   11039: ---    60      0       241
                   11040: ---    60      0       245
                   11041: ---    60      2       248
                   11042: ---    60      0       249
                   11043: ---    60      0       250
                   11044: ---    60      2       251
                   11045: 0707070014231216631006440057030057030000010640440522627501100002400000003301post.src/devpost/CXname CX
                   11046: fontname Courier-BoldOblique
                   11047: named in prologue
                   11048: spacewidth 60
                   11049: charset
                   11050: !      60      2       33
                   11051: "      60      2       34
                   11052: dq     "
                   11053: #      60      2       35
                   11054: $      60      2       36
                   11055: %      60      2       37
                   11056: &      60      2       38
                   11057: '      60      2       39
                   11058: (      60      3       40
                   11059: )      60      3       41
                   11060: *      60      2       42
                   11061: +      60      2       43
                   11062: ,      60      1       44
                   11063: hy     60      0       45
                   11064: -      "
                   11065: .      60      0       46
                   11066: /      60      2       47
                   11067: 0      60      2       48
                   11068: 1      60      2       49
                   11069: 2      60      2       50
                   11070: 3      60      2       51
                   11071: 4      60      2       52
                   11072: 5      60      2       53
                   11073: 6      60      2       54
                   11074: 7      60      2       55
                   11075: 8      60      2       56
                   11076: 9      60      2       57
                   11077: :      60      0       58
                   11078: ;      60      0       59
                   11079: <      60      2       60
                   11080: =      60      0       61
                   11081: >      60      2       62
                   11082: ?      60      2       63
                   11083: @      60      2       64
                   11084: A      60      2       65
                   11085: B      60      2       66
                   11086: C      60      2       67
                   11087: D      60      2       68
                   11088: E      60      2       69
                   11089: F      60      2       70
                   11090: G      60      2       71
                   11091: H      60      2       72
                   11092: I      60      2       73
                   11093: J      60      2       74
                   11094: K      60      2       75
                   11095: L      60      2       76
                   11096: M      60      2       77
                   11097: N      60      2       78
                   11098: O      60      2       79
                   11099: P      60      2       80
                   11100: Q      60      3       81
                   11101: R      60      2       82
                   11102: S      60      2       83
                   11103: T      60      2       84
                   11104: U      60      2       85
                   11105: V      60      2       86
                   11106: W      60      2       87
                   11107: X      60      2       88
                   11108: Y      60      2       89
                   11109: Z      60      2       90
                   11110: [      60      3       91
                   11111: \      60      2       92
                   11112: bs     "
                   11113: ]      60      3       93
                   11114: ^      60      2       94
                   11115: _      60      1       95
                   11116: `      60      2       96
                   11117: a      60      0       97
                   11118: b      60      2       98
                   11119: c      60      0       99
                   11120: d      60      2       100
                   11121: e      60      0       101
                   11122: f      60      2       102
                   11123: g      60      1       103
                   11124: h      60      2       104
                   11125: i      60      2       105
                   11126: j      60      3       106
                   11127: k      60      2       107
                   11128: l      60      2       108
                   11129: m      60      0       109
                   11130: n      60      0       110
                   11131: o      60      0       111
                   11132: p      60      1       112
                   11133: q      60      1       113
                   11134: r      60      0       114
                   11135: s      60      0       115
                   11136: t      60      2       116
                   11137: u      60      0       117
                   11138: v      60      0       118
                   11139: w      60      0       119
                   11140: x      60      0       120
                   11141: y      60      1       121
                   11142: z      60      0       122
                   11143: {      60      3       123
                   11144: |      60      3       124
                   11145: }      60      3       125
                   11146: ~      60      0       126
                   11147: !!     60      1       161
                   11148: ct     60      2       162
                   11149: ps     60      2       163
                   11150: fr     60      2       164
                   11151: yn     60      2       165
                   11152: fn     60      2       166
                   11153: sc     60      2       167
                   11154: cr     60      2       168
                   11155: ---    60      2       169
                   11156: ``     60      2       170
                   11157: ---    60      0       171
                   11158: ---    60      0       172
                   11159: ---    60      0       173
                   11160: en     60      0       177
                   11161: \-     "
                   11162: dg     60      2       178
                   11163: dd     60      2       179
                   11164: ---    60      0       180
                   11165: pg     60      2       182
                   11166: ---    60      0       183
                   11167: ---    60      1       184
                   11168: ---    60      1       185
                   11169: ''     60      2       186
                   11170: ---    60      0       187
                   11171: ---    60      0       188
                   11172: ---    60      2       189
                   11173: ??     60      1       191
                   11174: ga     60      2       193
                   11175: \`     "
                   11176: aa     60      2       194
                   11177: \'     "
                   11178: ^a     60      2       195
                   11179: ^      "
                   11180: ~a     60      2       196
                   11181: ~      "
                   11182: -a     60      2       197
                   11183: Ua     60      2       198
                   11184: .a     60      2       199
                   11185: :a     60      2       200
                   11186: oa     60      2       202
                   11187: ,a     60      1       203
                   11188: "a     60      2       205
                   11189: Ca     60      1       206
                   11190: va     60      2       207
                   11191: em     60      0       208
                   11192: ---    60      2       225
                   11193: ---    60      2       227
                   11194: ---    60      2       232
                   11195: ---    60      2       233
                   11196: ---    60      2       234
                   11197: ---    60      2       235
                   11198: ---    60      0       241
                   11199: ---    60      0       245
                   11200: ---    60      2       248
                   11201: ---    60      0       249
                   11202: ---    60      0       250
                   11203: ---    60      2       251
                   11204: 0707070014231216641006440057030057030000010640460522627501100002600000001740post.src/devpost/DESC#Device Description - original PostScript character set
                   11205: 
                   11206: PDL PostScript
                   11207: 
                   11208: fonts 10 R I B BI CW H HI HB S1 S
                   11209: sizes 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
                   11210: 23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 40 42 44 46
                   11211: 48 50 52 54 56 58 60 64 68 72 78 84 90 96 100 105 110 115
                   11212: 120 125 130 135 140 145 150 155 160 0
                   11213: 
                   11214: res 720
                   11215: hor 1
                   11216: vert 1
                   11217: unitwidth 10
                   11218: 
                   11219: charset
                   11220: dq hy bs !! ct ps fr yn fn sc cr `` fi fl en \- dg dd pg ''
                   11221: ?? ga \` aa \' ^a ~a -a Ua .a :a oa ,a "a Ca va em fa te st
                   11222: ** pl mi sl eq cg *A *B *X *D *E *F *G *Y *I *K *L *M *N *O
                   11223: *P *H *R *S *T *U ts *W *C *Q *Z tf pp ul rn *a *b *x *d *e
                   11224: *f *g *y *i *k *l *m *n *o *p *h *r *s *t *u *w *c *q *z or
                   11225: ap fm <= if ab <- ua -> da de +- >= mu pt pd bu di != == ~~
                   11226: el av ah CR af If Rf ws Ox O+ es ca cu sp ip !b sb ib mo !m
                   11227: an gr rg co tm sr c. no l& l| lz b< RG CO TM LT br LX LB lc
                   11228: lx lf lt lk lb bv b> is RT RX RB rc rx rf rt rk rb ~= ru ff
                   11229: Fi Fl 14 12 34 bx ob ci sq Sl L1 LA LV LH lh rh lH rH PC DG
                   11230: -+ cs cy as os =. ld rd le ge 
                   11231: 0707070014231215101006400057030057030000010554200522633073600003400000003054post.src/devpost/devpost.mkMAKE=/bin/make
                   11232: MAKEFILE=devpost.mk
                   11233: 
                   11234: SYSTEM=V9
                   11235: VERSION=3.3.2
                   11236: 
                   11237: GROUP=bin
                   11238: OWNER=bin
                   11239: 
                   11240: FONTDIR=/usr/lib/font
                   11241: FONTFILES=DESC ? ?? [A-Z]??* shell.lib
                   11242: 
                   11243: all :
                   11244:        @if [ -r LINKFILE ]; then sh LINKFILE; fi;
                   11245: 
                   11246: install : all
                   11247:        @rm -f $(FONTDIR)/devpost/*.out
                   11248:        @if [ ! -d $(FONTDIR) ]; then \
                   11249:            mkdir $(FONTDIR); \
                   11250:            chmod 755 $(FONTDIR); \
                   11251:            chgrp $(GROUP) $(FONTDIR); \
                   11252:            chown $(OWNER) $(FONTDIR); \
                   11253:        fi
                   11254:        @if [ ! -d $(FONTDIR)/devpost ]; then \
                   11255:            mkdir $(FONTDIR)/devpost; \
                   11256:            chmod 755 $(FONTDIR)/devpost; \
                   11257:            chgrp $(GROUP) $(FONTDIR)/devpost; \
                   11258:            chown $(OWNER) $(FONTDIR)/devpost; \
                   11259:        fi
                   11260:        @if [ ! -d $(FONTDIR)/devpost/charlib ]; then \
                   11261:            mkdir $(FONTDIR)/devpost/charlib; \
                   11262:            chmod 755 $(FONTDIR)/devpost/charlib; \
                   11263:            chgrp $(GROUP) $(FONTDIR)/devpost/charlib; \
                   11264:            chown $(OWNER) $(FONTDIR)/devpost/charlib; \
                   11265:        fi
                   11266:        cp $(FONTFILES) $(FONTDIR)/devpost
                   11267:        @for i in $(FONTFILES); do \
                   11268:            chmod 644 $(FONTDIR)/devpost/$$i; \
                   11269:            chgrp $(GROUP) $(FONTDIR)/devpost/$$i; \
                   11270:            chown $(OWNER) $(FONTDIR)/devpost/$$i; \
                   11271:        done
                   11272:        cp charlib/* $(FONTDIR)/devpost/charlib
                   11273:        @for i in charlib/*; do \
                   11274:            chmod 644 $(FONTDIR)/devpost/$$i; \
                   11275:            chgrp $(GROUP) $(FONTDIR)/devpost/$$i; \
                   11276:            chown $(OWNER) $(FONTDIR)/devpost/$$i; \
                   11277:        done
                   11278: 
                   11279: clean :
                   11280: 
                   11281: clobber : clean
                   11282: 
                   11283: changes :
                   11284:        @trap "" 1 2 3 15; \
                   11285:        sed \
                   11286:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
                   11287:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
                   11288:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
                   11289:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
                   11290:            -e "s'^FONTDIR=.*'FONTDIR=$(FONTDIR)'" \
                   11291:        $(MAKEFILE) >XXX.mk; \
                   11292:        mv XXX.mk $(MAKEFILE)
                   11293: 
                   11294: 0707070014231216661006440057030057030000010640470522627501100002400000001145post.src/devpost/GRname GR
                   11295: fontname Symbol
                   11296: named in prologue
                   11297: spacewidth 25
                   11298: charset
                   11299: *A     72      2       65
                   11300: *B     67      2       66
                   11301: *X     72      2       67
                   11302: *D     61      2       68
                   11303: *E     61      2       69
                   11304: *F     76      2       70
                   11305: *G     60      2       71
                   11306: *Y     72      2       72
                   11307: *I     33      2       73
                   11308: *K     72      2       75
                   11309: *L     69      2       76
                   11310: *M     89      2       77
                   11311: *N     72      2       78
                   11312: *O     72      2       79
                   11313: *P     77      2       80
                   11314: *H     74      2       81
                   11315: *R     56      2       82
                   11316: *S     59      2       83
                   11317: *T     61      2       84
                   11318: *U     69      2       85
                   11319: *W     77      2       87
                   11320: *C     65      2       88
                   11321: *Q     80      2       89
                   11322: *Z     61      2       90
                   11323: *a     63      0       97
                   11324: *b     55      3       98
                   11325: *x     55      1       99
                   11326: *d     49      2       100
                   11327: *e     44      0       101
                   11328: *f     52      3       102
                   11329: *g     41      1       103
                   11330: *y     60      1       104
                   11331: *i     33      0       105
                   11332: *k     55      0       107
                   11333: *l     55      2       108
                   11334: *m     58      1       109
                   11335: *n     52      0       110
                   11336: *o     55      0       111
                   11337: *p     55      0       112
                   11338: *h     52      2       113
                   11339: *r     55      1       114
                   11340: *s     60      0       115
                   11341: *t     44      0       116
                   11342: *u     58      0       117
                   11343: *w     69      0       119
                   11344: *c     49      3       120
                   11345: *q     69      1       121
                   11346: *z     49      3       122
                   11347: 0707070014231216671006440057030057030000010641020522627501100002300000003362post.src/devpost/Hname H
                   11348: fontname Helvetica
                   11349: named in prologue
                   11350: ligatures fi fl 0
                   11351: spacewidth 28
                   11352: charset
                   11353: !      28      2       33
                   11354: "      36      2       34
                   11355: dq     "
                   11356: #      56      2       35
                   11357: $      56      3       36
                   11358: %      89      2       37
                   11359: &      67      2       38
                   11360: '      22      2       39
                   11361: (      33      3       40
                   11362: )      33      3       41
                   11363: *      39      2       42
                   11364: +      58      0       43
                   11365: ,      28      1       44
                   11366: hy     33      0       45
                   11367: -      "
                   11368: .      28      0       46
                   11369: /      28      2       47
                   11370: 0      56      2       48
                   11371: 1      56      2       49
                   11372: 2      56      2       50
                   11373: 3      56      2       51
                   11374: 4      56      2       52
                   11375: 5      56      2       53
                   11376: 6      56      2       54
                   11377: 7      56      2       55
                   11378: 8      56      2       56
                   11379: 9      56      2       57
                   11380: :      28      0       58
                   11381: ;      28      1       59
                   11382: ---    58      0       60
                   11383: =      58      0       61
                   11384: ---    58      0       62
                   11385: ?      56      2       63
                   11386: @      102     3       64
                   11387: A      67      2       65
                   11388: B      67      2       66
                   11389: C      72      2       67
                   11390: D      72      2       68
                   11391: E      67      2       69
                   11392: F      61      2       70
                   11393: G      78      2       71
                   11394: H      72      2       72
                   11395: I      28      2       73
                   11396: J      50      2       74
                   11397: K      67      2       75
                   11398: L      56      2       76
                   11399: M      83      2       77
                   11400: N      72      2       78
                   11401: O      78      2       79
                   11402: P      67      2       80
                   11403: Q      78      2       81
                   11404: R      72      2       82
                   11405: S      67      2       83
                   11406: T      61      2       84
                   11407: U      72      2       85
                   11408: V      67      2       86
                   11409: W      94      2       87
                   11410: X      67      2       88
                   11411: Y      67      2       89
                   11412: Z      61      2       90
                   11413: [      28      3       91
                   11414: \      28      2       92
                   11415: bs     "
                   11416: ]      28      3       93
                   11417: ---    47      2       94
                   11418: ---    56      1       95
                   11419: `      22      2       96
                   11420: a      56      0       97
                   11421: b      56      2       98
                   11422: c      50      0       99
                   11423: d      56      2       100
                   11424: e      56      0       101
                   11425: f      28      2       102
                   11426: g      56      1       103
                   11427: h      56      2       104
                   11428: i      22      2       105
                   11429: j      22      3       106
                   11430: k      50      2       107
                   11431: l      22      2       108
                   11432: m      83      0       109
                   11433: n      56      0       110
                   11434: o      56      0       111
                   11435: p      56      1       112
                   11436: q      56      1       113
                   11437: r      33      0       114
                   11438: s      50      0       115
                   11439: t      28      2       116
                   11440: u      56      0       117
                   11441: v      50      0       118
                   11442: w      72      0       119
                   11443: x      50      0       120
                   11444: y      50      1       121
                   11445: z      50      0       122
                   11446: {      33      3       123
                   11447: ---    26      3       124
                   11448: }      33      3       125
                   11449: ---    58      0       126
                   11450: !!     33      1       161
                   11451: ct     56      3       162
                   11452: ps     56      2       163
                   11453: fr     17      2       164
                   11454: yn     56      2       165
                   11455: fn     56      3       166
                   11456: sc     56      3       167
                   11457: cr     56      0       168
                   11458: ---    19      2       169
                   11459: ``     33      2       170
                   11460: ---    56      0       171
                   11461: ---    33      0       172
                   11462: ---    33      0       173
                   11463: fi     50      2       174
                   11464: fl     50      2       175
                   11465: en     56      0       177
                   11466: \-     "
                   11467: dg     56      3       178
                   11468: dd     56      3       179
                   11469: ---    28      0       180
                   11470: pg     54      3       182
                   11471: ---    35      0       183
                   11472: ---    22      1       184
                   11473: ---    33      1       185
                   11474: ''     33      2       186
                   11475: ---    56      0       187
                   11476: ---    100     0       188
                   11477: ---    100     2       189
                   11478: ??     61      1       191
                   11479: ga     33      2       193
                   11480: \`     "
                   11481: aa     33      2       194
                   11482: \'     "
                   11483: ^a     33      2       195
                   11484: ^      "
                   11485: ~a     33      2       196
                   11486: ~      "
                   11487: -a     33      2       197
                   11488: Ua     33      2       198
                   11489: .a     33      2       199
                   11490: :a     33      2       200
                   11491: oa     33      2       202
                   11492: ,a     33      1       203
                   11493: "a     33      2       205
                   11494: Ca     33      1       206
                   11495: va     33      2       207
                   11496: em     100     0       208
                   11497: ---    100     2       225
                   11498: ---    37      2       227
                   11499: ---    56      2       232
                   11500: ---    78      2       233
                   11501: ---    100     2       234
                   11502: ---    36      2       235
                   11503: ---    89      0       241
                   11504: ---    28      0       245
                   11505: ---    22      2       248
                   11506: ---    61      0       249
                   11507: ---    94      0       250
                   11508: ---    61      2       251
                   11509: 0707070014231216701006440057030057030000010641040522627501100002400000003367post.src/devpost/HBname HB
                   11510: fontname Helvetica-Bold
                   11511: named in prologue
                   11512: ligatures fi fl 0
                   11513: spacewidth 28
                   11514: charset
                   11515: !      33      2       33
                   11516: "      47      2       34
                   11517: dq     "
                   11518: #      56      2       35
                   11519: $      56      3       36
                   11520: %      89      2       37
                   11521: &      72      2       38
                   11522: '      28      2       39
                   11523: (      33      3       40
                   11524: )      33      3       41
                   11525: *      39      2       42
                   11526: +      58      0       43
                   11527: ,      28      1       44
                   11528: hy     33      0       45
                   11529: -      "
                   11530: .      28      0       46
                   11531: /      28      2       47
                   11532: 0      56      2       48
                   11533: 1      56      2       49
                   11534: 2      56      2       50
                   11535: 3      56      2       51
                   11536: 4      56      2       52
                   11537: 5      56      2       53
                   11538: 6      56      2       54
                   11539: 7      56      2       55
                   11540: 8      56      2       56
                   11541: 9      56      2       57
                   11542: :      33      0       58
                   11543: ;      33      1       59
                   11544: ---    58      0       60
                   11545: =      58      0       61
                   11546: ---    58      0       62
                   11547: ?      61      2       63
                   11548: @      98      3       64
                   11549: A      72      2       65
                   11550: B      72      2       66
                   11551: C      72      2       67
                   11552: D      72      2       68
                   11553: E      67      2       69
                   11554: F      61      2       70
                   11555: G      78      2       71
                   11556: H      72      2       72
                   11557: I      28      2       73
                   11558: J      56      2       74
                   11559: K      72      2       75
                   11560: L      61      2       76
                   11561: M      83      2       77
                   11562: N      72      2       78
                   11563: O      78      2       79
                   11564: P      67      2       80
                   11565: Q      78      2       81
                   11566: R      72      2       82
                   11567: S      67      2       83
                   11568: T      61      2       84
                   11569: U      72      2       85
                   11570: V      67      2       86
                   11571: W      94      2       87
                   11572: X      67      2       88
                   11573: Y      67      2       89
                   11574: Z      61      2       90
                   11575: [      33      3       91
                   11576: \      28      2       92
                   11577: bs     "
                   11578: ]      33      3       93
                   11579: ---    58      2       94
                   11580: ---    56      1       95
                   11581: `      28      2       96
                   11582: a      56      0       97
                   11583: b      61      2       98
                   11584: c      56      0       99
                   11585: d      61      2       100
                   11586: e      56      0       101
                   11587: f      33      2       102
                   11588: g      61      1       103
                   11589: h      61      2       104
                   11590: i      28      2       105
                   11591: j      28      3       106
                   11592: k      56      2       107
                   11593: l      28      2       108
                   11594: m      89      0       109
                   11595: n      61      0       110
                   11596: o      61      0       111
                   11597: p      61      1       112
                   11598: q      61      1       113
                   11599: r      39      0       114
                   11600: s      56      0       115
                   11601: t      33      2       116
                   11602: u      61      0       117
                   11603: v      56      0       118
                   11604: w      78      0       119
                   11605: x      56      0       120
                   11606: y      56      1       121
                   11607: z      50      0       122
                   11608: {      39      3       123
                   11609: ---    28      3       124
                   11610: }      39      3       125
                   11611: ---    58      0       126
                   11612: !!     33      1       161
                   11613: ct     56      3       162
                   11614: ps     56      2       163
                   11615: fr     17      2       164
                   11616: yn     56      2       165
                   11617: fn     56      3       166
                   11618: sc     56      3       167
                   11619: cr     56      2       168
                   11620: ---    24      2       169
                   11621: ``     50      2       170
                   11622: ---    56      0       171
                   11623: ---    33      0       172
                   11624: ---    33      0       173
                   11625: fi     61      2       174
                   11626: fl     61      2       175
                   11627: en     56      0       177
                   11628: \-     "
                   11629: dg     56      3       178
                   11630: dd     56      3       179
                   11631: ---    28      0       180
                   11632: pg     56      3       182
                   11633: ---    35      0       183
                   11634: ---    28      1       184
                   11635: ---    50      1       185
                   11636: ''     50      2       186
                   11637: ---    56      0       187
                   11638: ---    100     0       188
                   11639: ---    100     2       189
                   11640: ??     61      1       191
                   11641: ga     33      2       193
                   11642: \`     "
                   11643: aa     33      2       194
                   11644: \'     "
                   11645: ^a     33      2       195
                   11646: ^      "
                   11647: ~a     33      2       196
                   11648: ~      "
                   11649: -a     33      2       197
                   11650: Ua     33      2       198
                   11651: .a     33      2       199
                   11652: :a     33      2       200
                   11653: oa     33      2       202
                   11654: ,a     33      1       203
                   11655: "a     33      2       205
                   11656: Ca     33      1       206
                   11657: va     33      2       207
                   11658: em     100     0       208
                   11659: ---    100     2       225
                   11660: ---    37      2       227
                   11661: ---    61      2       232
                   11662: ---    78      2       233
                   11663: ---    100     2       234
                   11664: ---    36      2       235
                   11665: ---    89      0       241
                   11666: ---    28      0       245
                   11667: ---    28      2       248
                   11668: ---    61      0       249
                   11669: ---    94      0       250
                   11670: ---    61      2       251
                   11671: 0707070014231216711006440057030057030000010641060522627501100002400000003373post.src/devpost/HIname HI
                   11672: fontname Helvetica-Oblique
                   11673: named in prologue
                   11674: ligatures fi fl 0
                   11675: spacewidth 28
                   11676: charset
                   11677: !      28      2       33
                   11678: "      36      2       34
                   11679: dq     "
                   11680: #      56      2       35
                   11681: $      56      3       36
                   11682: %      89      2       37
                   11683: &      67      2       38
                   11684: '      22      2       39
                   11685: (      33      3       40
                   11686: )      33      3       41
                   11687: *      39      2       42
                   11688: +      58      0       43
                   11689: ,      28      1       44
                   11690: hy     33      0       45
                   11691: -      "
                   11692: .      28      0       46
                   11693: /      28      2       47
                   11694: 0      56      2       48
                   11695: 1      56      2       49
                   11696: 2      56      2       50
                   11697: 3      56      2       51
                   11698: 4      56      2       52
                   11699: 5      56      2       53
                   11700: 6      56      2       54
                   11701: 7      56      2       55
                   11702: 8      56      2       56
                   11703: 9      56      2       57
                   11704: :      28      0       58
                   11705: ;      28      1       59
                   11706: ---    58      0       60
                   11707: =      58      0       61
                   11708: ---    58      0       62
                   11709: ?      56      2       63
                   11710: @      102     3       64
                   11711: A      67      2       65
                   11712: B      67      2       66
                   11713: C      72      2       67
                   11714: D      72      2       68
                   11715: E      67      2       69
                   11716: F      61      2       70
                   11717: G      78      2       71
                   11718: H      72      2       72
                   11719: I      28      2       73
                   11720: J      50      2       74
                   11721: K      67      2       75
                   11722: L      56      2       76
                   11723: M      83      2       77
                   11724: N      72      2       78
                   11725: O      78      2       79
                   11726: P      67      2       80
                   11727: Q      78      2       81
                   11728: R      72      2       82
                   11729: S      67      2       83
                   11730: T      61      2       84
                   11731: U      72      2       85
                   11732: V      67      2       86
                   11733: W      94      2       87
                   11734: X      67      2       88
                   11735: Y      67      2       89
                   11736: Z      61      2       90
                   11737: [      28      3       91
                   11738: \      28      2       92
                   11739: bs     "
                   11740: ]      28      3       93
                   11741: ---    47      2       94
                   11742: ---    56      1       95
                   11743: `      22      2       96
                   11744: a      56      0       97
                   11745: b      56      2       98
                   11746: c      50      0       99
                   11747: d      56      2       100
                   11748: e      56      0       101
                   11749: f      28      2       102
                   11750: g      56      1       103
                   11751: h      56      2       104
                   11752: i      22      2       105
                   11753: j      22      3       106
                   11754: k      50      2       107
                   11755: l      22      2       108
                   11756: m      83      0       109
                   11757: n      56      0       110
                   11758: o      56      0       111
                   11759: p      56      1       112
                   11760: q      56      1       113
                   11761: r      33      0       114
                   11762: s      50      0       115
                   11763: t      28      2       116
                   11764: u      56      0       117
                   11765: v      50      0       118
                   11766: w      72      0       119
                   11767: x      50      0       120
                   11768: y      50      1       121
                   11769: z      50      0       122
                   11770: {      33      3       123
                   11771: ---    26      3       124
                   11772: }      33      3       125
                   11773: ---    58      0       126
                   11774: !!     33      1       161
                   11775: ct     56      3       162
                   11776: ps     56      2       163
                   11777: fr     17      2       164
                   11778: yn     56      2       165
                   11779: fn     56      3       166
                   11780: sc     56      3       167
                   11781: cr     56      0       168
                   11782: ---    19      2       169
                   11783: ``     33      2       170
                   11784: ---    56      0       171
                   11785: ---    33      0       172
                   11786: ---    33      0       173
                   11787: fi     50      2       174
                   11788: fl     50      2       175
                   11789: en     56      0       177
                   11790: \-     "
                   11791: dg     56      3       178
                   11792: dd     56      3       179
                   11793: ---    28      0       180
                   11794: pg     54      3       182
                   11795: ---    35      0       183
                   11796: ---    22      1       184
                   11797: ---    33      1       185
                   11798: ''     33      2       186
                   11799: ---    56      0       187
                   11800: ---    100     0       188
                   11801: ---    100     2       189
                   11802: ??     61      1       191
                   11803: ga     33      2       193
                   11804: \`     "
                   11805: aa     33      2       194
                   11806: \'     "
                   11807: ^a     33      2       195
                   11808: ^      "
                   11809: ~a     33      2       196
                   11810: ~      "
                   11811: -a     33      2       197
                   11812: Ua     33      2       198
                   11813: .a     33      2       199
                   11814: :a     33      2       200
                   11815: oa     33      2       202
                   11816: ,a     33      1       203
                   11817: "a     33      2       205
                   11818: Ca     33      1       206
                   11819: va     33      2       207
                   11820: em     100     0       208
                   11821: ---    100     2       225
                   11822: ---    37      2       227
                   11823: ---    56      2       232
                   11824: ---    78      2       233
                   11825: ---    100     2       234
                   11826: ---    36      2       235
                   11827: ---    89      0       241
                   11828: ---    28      0       245
                   11829: ---    22      2       248
                   11830: ---    61      0       249
                   11831: ---    94      0       250
                   11832: ---    61      2       251
                   11833: 0707070014231216721006440057030057030000010641400522627501100002400000003376post.src/devpost/HXname HX
                   11834: fontname Helvetica-BoldOblique
                   11835: named in prologue
                   11836: ligatures fi fl 0
                   11837: spacewidth 28
                   11838: charset
                   11839: !      33      2       33
                   11840: "      47      2       34
                   11841: dq     "
                   11842: #      56      2       35
                   11843: $      56      3       36
                   11844: %      89      2       37
                   11845: &      72      2       38
                   11846: '      28      2       39
                   11847: (      33      3       40
                   11848: )      33      3       41
                   11849: *      39      2       42
                   11850: +      58      0       43
                   11851: ,      28      1       44
                   11852: hy     33      0       45
                   11853: -      "
                   11854: .      28      0       46
                   11855: /      28      2       47
                   11856: 0      56      2       48
                   11857: 1      56      2       49
                   11858: 2      56      2       50
                   11859: 3      56      2       51
                   11860: 4      56      2       52
                   11861: 5      56      2       53
                   11862: 6      56      2       54
                   11863: 7      56      2       55
                   11864: 8      56      2       56
                   11865: 9      56      2       57
                   11866: :      33      0       58
                   11867: ;      33      1       59
                   11868: ---    58      0       60
                   11869: =      58      0       61
                   11870: ---    58      0       62
                   11871: ?      61      2       63
                   11872: @      98      3       64
                   11873: A      72      2       65
                   11874: B      72      2       66
                   11875: C      72      2       67
                   11876: D      72      2       68
                   11877: E      67      2       69
                   11878: F      61      2       70
                   11879: G      78      2       71
                   11880: H      72      2       72
                   11881: I      28      2       73
                   11882: J      56      2       74
                   11883: K      72      2       75
                   11884: L      61      2       76
                   11885: M      83      2       77
                   11886: N      72      2       78
                   11887: O      78      2       79
                   11888: P      67      2       80
                   11889: Q      78      2       81
                   11890: R      72      2       82
                   11891: S      67      2       83
                   11892: T      61      2       84
                   11893: U      72      2       85
                   11894: V      67      2       86
                   11895: W      94      2       87
                   11896: X      67      2       88
                   11897: Y      67      2       89
                   11898: Z      61      2       90
                   11899: [      33      3       91
                   11900: \      28      2       92
                   11901: bs     "
                   11902: ]      33      3       93
                   11903: ---    58      2       94
                   11904: ---    56      1       95
                   11905: `      28      2       96
                   11906: a      56      0       97
                   11907: b      61      2       98
                   11908: c      56      0       99
                   11909: d      61      2       100
                   11910: e      56      0       101
                   11911: f      33      2       102
                   11912: g      61      1       103
                   11913: h      61      2       104
                   11914: i      28      2       105
                   11915: j      28      3       106
                   11916: k      56      2       107
                   11917: l      28      2       108
                   11918: m      89      0       109
                   11919: n      61      0       110
                   11920: o      61      0       111
                   11921: p      61      1       112
                   11922: q      61      1       113
                   11923: r      39      0       114
                   11924: s      56      0       115
                   11925: t      33      2       116
                   11926: u      61      0       117
                   11927: v      56      0       118
                   11928: w      78      0       119
                   11929: x      56      0       120
                   11930: y      56      1       121
                   11931: z      50      0       122
                   11932: {      39      3       123
                   11933: ---    28      3       124
                   11934: }      39      3       125
                   11935: ---    58      0       126
                   11936: !!     33      1       161
                   11937: ct     56      3       162
                   11938: ps     56      2       163
                   11939: fr     17      2       164
                   11940: yn     56      2       165
                   11941: fn     56      3       166
                   11942: sc     56      3       167
                   11943: cr     56      2       168
                   11944: ---    24      2       169
                   11945: ``     50      2       170
                   11946: ---    56      0       171
                   11947: ---    33      0       172
                   11948: ---    33      0       173
                   11949: fi     61      2       174
                   11950: fl     61      2       175
                   11951: en     56      0       177
                   11952: \-     "
                   11953: dg     56      3       178
                   11954: dd     56      3       179
                   11955: ---    28      0       180
                   11956: pg     56      3       182
                   11957: ---    35      0       183
                   11958: ---    28      1       184
                   11959: ---    50      1       185
                   11960: ''     50      2       186
                   11961: ---    56      0       187
                   11962: ---    100     0       188
                   11963: ---    100     2       189
                   11964: ??     61      1       191
                   11965: ga     33      2       193
                   11966: \`     "
                   11967: aa     33      2       194
                   11968: \'     "
                   11969: ^a     33      2       195
                   11970: ^      "
                   11971: ~a     33      2       196
                   11972: ~      "
                   11973: -a     33      2       197
                   11974: Ua     33      2       198
                   11975: .a     33      2       199
                   11976: :a     33      2       200
                   11977: oa     33      2       202
                   11978: ,a     33      1       203
                   11979: "a     33      2       205
                   11980: Ca     33      1       206
                   11981: va     33      2       207
                   11982: em     100     0       208
                   11983: ---    100     2       225
                   11984: ---    37      2       227
                   11985: ---    61      2       232
                   11986: ---    78      2       233
                   11987: ---    100     2       234
                   11988: ---    36      2       235
                   11989: ---    89      0       241
                   11990: ---    28      0       245
                   11991: ---    28      2       248
                   11992: ---    61      0       249
                   11993: ---    94      0       250
                   11994: ---    61      2       251
                   11995: 0707070014231216731006440057030057030000010641420522627501100002400000003371post.src/devpost/Hbname Hb
                   11996: fontname Helvetica-Narrow-Bold
                   11997: named in prologue
                   11998: ligatures fi fl 0
                   11999: spacewidth 23
                   12000: charset
                   12001: !      27      2       33
                   12002: "      39      2       34
                   12003: dq     "
                   12004: #      46      2       35
                   12005: $      46      3       36
                   12006: %      73      2       37
                   12007: &      59      2       38
                   12008: '      23      2       39
                   12009: (      27      3       40
                   12010: )      27      3       41
                   12011: *      32      2       42
                   12012: +      48      0       43
                   12013: ,      23      1       44
                   12014: hy     27      0       45
                   12015: -      "
                   12016: .      23      0       46
                   12017: /      23      2       47
                   12018: 0      46      2       48
                   12019: 1      46      2       49
                   12020: 2      46      2       50
                   12021: 3      46      2       51
                   12022: 4      46      2       52
                   12023: 5      46      2       53
                   12024: 6      46      2       54
                   12025: 7      46      2       55
                   12026: 8      46      2       56
                   12027: 9      46      2       57
                   12028: :      27      0       58
                   12029: ;      27      1       59
                   12030: ---    48      0       60
                   12031: =      48      0       61
                   12032: ---    48      0       62
                   12033: ?      50      2       63
                   12034: @      80      3       64
                   12035: A      59      2       65
                   12036: B      59      2       66
                   12037: C      59      2       67
                   12038: D      59      2       68
                   12039: E      55      2       69
                   12040: F      50      2       70
                   12041: G      64      2       71
                   12042: H      59      2       72
                   12043: I      23      2       73
                   12044: J      46      2       74
                   12045: K      59      2       75
                   12046: L      50      2       76
                   12047: M      68      2       77
                   12048: N      59      2       78
                   12049: O      64      2       79
                   12050: P      55      2       80
                   12051: Q      64      2       81
                   12052: R      59      2       82
                   12053: S      55      2       83
                   12054: T      50      2       84
                   12055: U      59      2       85
                   12056: V      55      2       86
                   12057: W      77      2       87
                   12058: X      55      2       88
                   12059: Y      55      2       89
                   12060: Z      50      2       90
                   12061: [      27      3       91
                   12062: \      23      2       92
                   12063: bs     "
                   12064: ]      27      3       93
                   12065: ---    48      2       94
                   12066: ---    46      1       95
                   12067: `      23      2       96
                   12068: a      46      0       97
                   12069: b      50      2       98
                   12070: c      46      0       99
                   12071: d      50      2       100
                   12072: e      46      0       101
                   12073: f      27      2       102
                   12074: g      50      1       103
                   12075: h      50      2       104
                   12076: i      23      2       105
                   12077: j      23      3       106
                   12078: k      46      2       107
                   12079: l      23      2       108
                   12080: m      73      0       109
                   12081: n      50      0       110
                   12082: o      50      0       111
                   12083: p      50      1       112
                   12084: q      50      1       113
                   12085: r      32      0       114
                   12086: s      46      0       115
                   12087: t      27      2       116
                   12088: u      50      0       117
                   12089: v      46      0       118
                   12090: w      64      0       119
                   12091: x      46      0       120
                   12092: y      46      1       121
                   12093: z      41      0       122
                   12094: {      32      3       123
                   12095: ---    23      3       124
                   12096: }      32      3       125
                   12097: ---    48      0       126
                   12098: !!     27      1       161
                   12099: ct     46      3       162
                   12100: ps     46      2       163
                   12101: fr     14      2       164
                   12102: yn     46      2       165
                   12103: fn     46      3       166
                   12104: sc     46      3       167
                   12105: cr     46      2       168
                   12106: ---    20      2       169
                   12107: ``     41      2       170
                   12108: ---    46      0       171
                   12109: ---    27      0       172
                   12110: ---    27      0       173
                   12111: fi     50      2       174
                   12112: fl     50      2       175
                   12113: en     46      0       177
                   12114: \-     "
                   12115: dg     46      3       178
                   12116: dd     46      3       179
                   12117: ---    23      0       180
                   12118: pg     46      3       182
                   12119: ---    29      0       183
                   12120: ---    23      1       184
                   12121: ---    41      1       185
                   12122: ''     41      2       186
                   12123: ---    46      0       187
                   12124: ---    82      0       188
                   12125: ---    82      2       189
                   12126: ??     50      1       191
                   12127: ga     27      2       193
                   12128: \`     "
                   12129: aa     27      2       194
                   12130: \'     "
                   12131: ^a     27      2       195
                   12132: ^      "
                   12133: ~a     27      2       196
                   12134: ~      "
                   12135: -a     27      2       197
                   12136: Ua     27      2       198
                   12137: .a     27      2       199
                   12138: :a     27      2       200
                   12139: oa     27      2       202
                   12140: ,a     27      1       203
                   12141: "a     27      2       205
                   12142: Ca     27      1       206
                   12143: va     27      2       207
                   12144: em     82      0       208
                   12145: ---    82      2       225
                   12146: ---    30      2       227
                   12147: ---    50      2       232
                   12148: ---    64      2       233
                   12149: ---    82      2       234
                   12150: ---    30      2       235
                   12151: ---    73      0       241
                   12152: ---    23      0       245
                   12153: ---    23      2       248
                   12154: ---    50      0       249
                   12155: ---    77      0       250
                   12156: ---    50      2       251
                   12157: 0707070014231216741006440057030057030000010641440522627501100002400000003374post.src/devpost/Hiname Hi
                   12158: fontname Helvetica-Narrow-Oblique
                   12159: named in prologue
                   12160: ligatures fi fl 0
                   12161: spacewidth 23
                   12162: charset
                   12163: !      23      2       33
                   12164: "      29      2       34
                   12165: dq     "
                   12166: #      46      2       35
                   12167: $      46      3       36
                   12168: %      73      2       37
                   12169: &      55      2       38
                   12170: '      18      2       39
                   12171: (      27      3       40
                   12172: )      27      3       41
                   12173: *      32      2       42
                   12174: +      48      0       43
                   12175: ,      23      1       44
                   12176: hy     27      0       45
                   12177: -      "
                   12178: .      23      0       46
                   12179: /      23      2       47
                   12180: 0      46      2       48
                   12181: 1      46      2       49
                   12182: 2      46      2       50
                   12183: 3      46      2       51
                   12184: 4      46      2       52
                   12185: 5      46      2       53
                   12186: 6      46      2       54
                   12187: 7      46      2       55
                   12188: 8      46      2       56
                   12189: 9      46      2       57
                   12190: :      23      0       58
                   12191: ;      23      1       59
                   12192: ---    48      0       60
                   12193: =      48      0       61
                   12194: ---    48      0       62
                   12195: ?      46      2       63
                   12196: @      83      3       64
                   12197: A      55      2       65
                   12198: B      55      2       66
                   12199: C      59      2       67
                   12200: D      59      2       68
                   12201: E      55      2       69
                   12202: F      50      2       70
                   12203: G      64      2       71
                   12204: H      59      2       72
                   12205: I      23      2       73
                   12206: J      41      2       74
                   12207: K      55      2       75
                   12208: L      46      2       76
                   12209: M      68      2       77
                   12210: N      59      2       78
                   12211: O      64      2       79
                   12212: P      55      2       80
                   12213: Q      64      2       81
                   12214: R      59      2       82
                   12215: S      55      2       83
                   12216: T      50      2       84
                   12217: U      59      2       85
                   12218: V      55      2       86
                   12219: W      77      2       87
                   12220: X      55      2       88
                   12221: Y      55      2       89
                   12222: Z      50      2       90
                   12223: [      23      3       91
                   12224: \      23      2       92
                   12225: bs     "
                   12226: ]      23      3       93
                   12227: ---    38      2       94
                   12228: ---    46      1       95
                   12229: `      18      2       96
                   12230: a      46      0       97
                   12231: b      46      2       98
                   12232: c      41      0       99
                   12233: d      46      2       100
                   12234: e      46      0       101
                   12235: f      23      2       102
                   12236: g      46      1       103
                   12237: h      46      2       104
                   12238: i      18      2       105
                   12239: j      18      3       106
                   12240: k      41      2       107
                   12241: l      18      2       108
                   12242: m      68      0       109
                   12243: n      46      0       110
                   12244: o      46      0       111
                   12245: p      46      1       112
                   12246: q      46      1       113
                   12247: r      27      0       114
                   12248: s      41      0       115
                   12249: t      23      2       116
                   12250: u      46      0       117
                   12251: v      41      0       118
                   12252: w      59      0       119
                   12253: x      41      0       120
                   12254: y      41      1       121
                   12255: z      41      0       122
                   12256: {      27      3       123
                   12257: ---    21      3       124
                   12258: }      27      3       125
                   12259: ---    48      0       126
                   12260: !!     27      1       161
                   12261: ct     46      3       162
                   12262: ps     46      2       163
                   12263: fr     14      2       164
                   12264: yn     46      2       165
                   12265: fn     46      3       166
                   12266: sc     46      3       167
                   12267: cr     46      0       168
                   12268: ---    16      2       169
                   12269: ``     27      2       170
                   12270: ---    46      0       171
                   12271: ---    27      0       172
                   12272: ---    27      0       173
                   12273: fi     41      2       174
                   12274: fl     41      2       175
                   12275: en     46      0       177
                   12276: \-     "
                   12277: dg     46      3       178
                   12278: dd     46      3       179
                   12279: ---    23      0       180
                   12280: pg     44      3       182
                   12281: ---    29      0       183
                   12282: ---    18      1       184
                   12283: ---    27      1       185
                   12284: ''     27      2       186
                   12285: ---    46      0       187
                   12286: ---    82      0       188
                   12287: ---    82      2       189
                   12288: ??     50      1       191
                   12289: ga     27      2       193
                   12290: \`     "
                   12291: aa     27      2       194
                   12292: \'     "
                   12293: ^a     27      2       195
                   12294: ^      "
                   12295: ~a     27      2       196
                   12296: ~      "
                   12297: -a     27      2       197
                   12298: Ua     27      2       198
                   12299: .a     27      2       199
                   12300: :a     27      2       200
                   12301: oa     27      2       202
                   12302: ,a     27      1       203
                   12303: "a     27      2       205
                   12304: Ca     27      1       206
                   12305: va     27      2       207
                   12306: em     82      0       208
                   12307: ---    82      2       225
                   12308: ---    30      2       227
                   12309: ---    46      2       232
                   12310: ---    64      2       233
                   12311: ---    82      2       234
                   12312: ---    30      2       235
                   12313: ---    73      0       241
                   12314: ---    23      0       245
                   12315: ---    18      2       248
                   12316: ---    50      0       249
                   12317: ---    77      0       250
                   12318: ---    50      2       251
                   12319: 0707070014231216751006440057030057030000010641460522627501100002400000003364post.src/devpost/Hrname Hr
                   12320: fontname Helvetica-Narrow
                   12321: named in prologue
                   12322: ligatures fi fl 0
                   12323: spacewidth 23
                   12324: charset
                   12325: !      23      2       33
                   12326: "      29      2       34
                   12327: dq     "
                   12328: #      46      2       35
                   12329: $      46      3       36
                   12330: %      73      2       37
                   12331: &      55      2       38
                   12332: '      18      2       39
                   12333: (      27      3       40
                   12334: )      27      3       41
                   12335: *      32      2       42
                   12336: +      48      0       43
                   12337: ,      23      1       44
                   12338: hy     27      0       45
                   12339: -      "
                   12340: .      23      0       46
                   12341: /      23      2       47
                   12342: 0      46      2       48
                   12343: 1      46      2       49
                   12344: 2      46      2       50
                   12345: 3      46      2       51
                   12346: 4      46      2       52
                   12347: 5      46      2       53
                   12348: 6      46      2       54
                   12349: 7      46      2       55
                   12350: 8      46      2       56
                   12351: 9      46      2       57
                   12352: :      23      0       58
                   12353: ;      23      1       59
                   12354: ---    48      0       60
                   12355: =      48      0       61
                   12356: ---    48      0       62
                   12357: ?      46      2       63
                   12358: @      83      3       64
                   12359: A      55      2       65
                   12360: B      55      2       66
                   12361: C      59      2       67
                   12362: D      59      2       68
                   12363: E      55      2       69
                   12364: F      50      2       70
                   12365: G      64      2       71
                   12366: H      59      2       72
                   12367: I      23      2       73
                   12368: J      41      2       74
                   12369: K      55      2       75
                   12370: L      46      2       76
                   12371: M      68      2       77
                   12372: N      59      2       78
                   12373: O      64      2       79
                   12374: P      55      2       80
                   12375: Q      64      2       81
                   12376: R      59      2       82
                   12377: S      55      2       83
                   12378: T      50      2       84
                   12379: U      59      2       85
                   12380: V      55      2       86
                   12381: W      77      2       87
                   12382: X      55      2       88
                   12383: Y      55      2       89
                   12384: Z      50      2       90
                   12385: [      23      3       91
                   12386: \      23      2       92
                   12387: bs     "
                   12388: ]      23      3       93
                   12389: ---    38      2       94
                   12390: ---    46      1       95
                   12391: `      18      2       96
                   12392: a      46      0       97
                   12393: b      46      2       98
                   12394: c      41      0       99
                   12395: d      46      2       100
                   12396: e      46      0       101
                   12397: f      23      2       102
                   12398: g      46      1       103
                   12399: h      46      2       104
                   12400: i      18      2       105
                   12401: j      18      3       106
                   12402: k      41      2       107
                   12403: l      18      2       108
                   12404: m      68      0       109
                   12405: n      46      0       110
                   12406: o      46      0       111
                   12407: p      46      1       112
                   12408: q      46      1       113
                   12409: r      27      0       114
                   12410: s      41      0       115
                   12411: t      23      2       116
                   12412: u      46      0       117
                   12413: v      41      0       118
                   12414: w      59      0       119
                   12415: x      41      0       120
                   12416: y      41      1       121
                   12417: z      41      0       122
                   12418: {      27      3       123
                   12419: ---    21      3       124
                   12420: }      27      3       125
                   12421: ---    48      0       126
                   12422: !!     27      1       161
                   12423: ct     46      3       162
                   12424: ps     46      2       163
                   12425: fr     14      2       164
                   12426: yn     46      2       165
                   12427: fn     46      3       166
                   12428: sc     46      3       167
                   12429: cr     46      0       168
                   12430: ---    16      2       169
                   12431: ``     27      2       170
                   12432: ---    46      0       171
                   12433: ---    27      0       172
                   12434: ---    27      0       173
                   12435: fi     41      2       174
                   12436: fl     41      2       175
                   12437: en     46      0       177
                   12438: \-     "
                   12439: dg     46      3       178
                   12440: dd     46      3       179
                   12441: ---    23      0       180
                   12442: pg     44      3       182
                   12443: ---    29      0       183
                   12444: ---    18      1       184
                   12445: ---    27      1       185
                   12446: ''     27      2       186
                   12447: ---    46      0       187
                   12448: ---    82      0       188
                   12449: ---    82      2       189
                   12450: ??     50      1       191
                   12451: ga     27      2       193
                   12452: \`     "
                   12453: aa     27      2       194
                   12454: \'     "
                   12455: ^a     27      2       195
                   12456: ^      "
                   12457: ~a     27      2       196
                   12458: ~      "
                   12459: -a     27      2       197
                   12460: Ua     27      2       198
                   12461: .a     27      2       199
                   12462: :a     27      2       200
                   12463: oa     27      2       202
                   12464: ,a     27      1       203
                   12465: "a     27      2       205
                   12466: Ca     27      1       206
                   12467: va     27      2       207
                   12468: em     82      0       208
                   12469: ---    82      2       225
                   12470: ---    30      2       227
                   12471: ---    46      2       232
                   12472: ---    64      2       233
                   12473: ---    82      2       234
                   12474: ---    30      2       235
                   12475: ---    73      0       241
                   12476: ---    23      0       245
                   12477: ---    18      2       248
                   12478: ---    50      0       249
                   12479: ---    77      0       250
                   12480: ---    50      2       251
                   12481: 0707070014231216761006440057030057030000010641600522627501100002400000003400post.src/devpost/Hxname Hx
                   12482: fontname Helvetica-Narrow-BoldOblique
                   12483: named in prologue
                   12484: ligatures fi fl 0
                   12485: spacewidth 23
                   12486: charset
                   12487: !      27      2       33
                   12488: "      39      2       34
                   12489: dq     "
                   12490: #      46      2       35
                   12491: $      46      3       36
                   12492: %      73      2       37
                   12493: &      59      2       38
                   12494: '      23      2       39
                   12495: (      27      3       40
                   12496: )      27      3       41
                   12497: *      32      2       42
                   12498: +      48      0       43
                   12499: ,      23      1       44
                   12500: hy     27      0       45
                   12501: -      "
                   12502: .      23      0       46
                   12503: /      23      2       47
                   12504: 0      46      2       48
                   12505: 1      46      2       49
                   12506: 2      46      2       50
                   12507: 3      46      2       51
                   12508: 4      46      2       52
                   12509: 5      46      2       53
                   12510: 6      46      2       54
                   12511: 7      46      2       55
                   12512: 8      46      2       56
                   12513: 9      46      2       57
                   12514: :      27      0       58
                   12515: ;      27      1       59
                   12516: ---    48      0       60
                   12517: =      48      0       61
                   12518: ---    48      0       62
                   12519: ?      50      2       63
                   12520: @      80      3       64
                   12521: A      59      2       65
                   12522: B      59      2       66
                   12523: C      59      2       67
                   12524: D      59      2       68
                   12525: E      55      2       69
                   12526: F      50      2       70
                   12527: G      64      2       71
                   12528: H      59      2       72
                   12529: I      23      2       73
                   12530: J      46      2       74
                   12531: K      59      2       75
                   12532: L      50      2       76
                   12533: M      68      2       77
                   12534: N      59      2       78
                   12535: O      64      2       79
                   12536: P      55      2       80
                   12537: Q      64      2       81
                   12538: R      59      2       82
                   12539: S      55      2       83
                   12540: T      50      2       84
                   12541: U      59      2       85
                   12542: V      55      2       86
                   12543: W      77      2       87
                   12544: X      55      2       88
                   12545: Y      55      2       89
                   12546: Z      50      2       90
                   12547: [      27      3       91
                   12548: \      23      2       92
                   12549: bs     "
                   12550: ]      27      3       93
                   12551: ---    48      2       94
                   12552: ---    46      1       95
                   12553: `      23      2       96
                   12554: a      46      0       97
                   12555: b      50      2       98
                   12556: c      46      0       99
                   12557: d      50      2       100
                   12558: e      46      0       101
                   12559: f      27      2       102
                   12560: g      50      1       103
                   12561: h      50      2       104
                   12562: i      23      2       105
                   12563: j      23      3       106
                   12564: k      46      2       107
                   12565: l      23      2       108
                   12566: m      73      0       109
                   12567: n      50      0       110
                   12568: o      50      0       111
                   12569: p      50      1       112
                   12570: q      50      1       113
                   12571: r      32      0       114
                   12572: s      46      0       115
                   12573: t      27      2       116
                   12574: u      50      0       117
                   12575: v      46      0       118
                   12576: w      64      0       119
                   12577: x      46      0       120
                   12578: y      46      1       121
                   12579: z      41      0       122
                   12580: {      32      3       123
                   12581: ---    23      3       124
                   12582: }      32      3       125
                   12583: ---    48      0       126
                   12584: !!     27      1       161
                   12585: ct     46      3       162
                   12586: ps     46      2       163
                   12587: fr     14      2       164
                   12588: yn     46      2       165
                   12589: fn     46      3       166
                   12590: sc     46      3       167
                   12591: cr     46      2       168
                   12592: ---    20      2       169
                   12593: ``     41      2       170
                   12594: ---    46      0       171
                   12595: ---    27      0       172
                   12596: ---    27      0       173
                   12597: fi     50      2       174
                   12598: fl     50      2       175
                   12599: en     46      0       177
                   12600: \-     "
                   12601: dg     46      3       178
                   12602: dd     46      3       179
                   12603: ---    23      0       180
                   12604: pg     46      3       182
                   12605: ---    29      0       183
                   12606: ---    23      1       184
                   12607: ---    41      1       185
                   12608: ''     41      2       186
                   12609: ---    46      0       187
                   12610: ---    82      0       188
                   12611: ---    82      2       189
                   12612: ??     50      1       191
                   12613: ga     27      2       193
                   12614: \`     "
                   12615: aa     27      2       194
                   12616: \'     "
                   12617: ^a     27      2       195
                   12618: ^      "
                   12619: ~a     27      2       196
                   12620: ~      "
                   12621: -a     27      2       197
                   12622: Ua     27      2       198
                   12623: .a     27      2       199
                   12624: :a     27      2       200
                   12625: oa     27      2       202
                   12626: ,a     27      1       203
                   12627: "a     27      2       205
                   12628: Ca     27      1       206
                   12629: va     27      2       207
                   12630: em     82      0       208
                   12631: ---    82      2       225
                   12632: ---    30      2       227
                   12633: ---    50      2       232
                   12634: ---    64      2       233
                   12635: ---    82      2       234
                   12636: ---    30      2       235
                   12637: ---    73      0       241
                   12638: ---    23      0       245
                   12639: ---    23      2       248
                   12640: ---    50      0       249
                   12641: ---    77      0       250
                   12642: ---    50      2       251
                   12643: 0707070014231216771006440057030057030000010641620522627501100002300000003360post.src/devpost/Iname I
                   12644: fontname Times-Italic
                   12645: named in prologue
                   12646: ligatures fi fl 0
                   12647: spacewidth 25
                   12648: charset
                   12649: !      33      2       33
                   12650: "      42      2       34
                   12651: dq     "
                   12652: #      50      2       35
                   12653: $      50      2       36
                   12654: %      83      2       37
                   12655: &      78      2       38
                   12656: '      33      2       39
                   12657: (      33      3       40
                   12658: )      33      3       41
                   12659: *      50      2       42
                   12660: +      68      2       43
                   12661: ,      25      1       44
                   12662: hy     33      0       45
                   12663: -      "
                   12664: .      25      0       46
                   12665: /      28      2       47
                   12666: 0      50      2       48
                   12667: 1      50      2       49
                   12668: 2      50      2       50
                   12669: 3      50      2       51
                   12670: 4      50      2       52
                   12671: 5      50      2       53
                   12672: 6      50      2       54
                   12673: 7      50      2       55
                   12674: 8      50      2       56
                   12675: 9      50      2       57
                   12676: :      33      0       58
                   12677: ;      33      1       59
                   12678: ---    68      2       60
                   12679: =      68      0       61
                   12680: ---    68      2       62
                   12681: ?      50      2       63
                   12682: @      92      3       64
                   12683: A      61      2       65
                   12684: B      61      2       66
                   12685: C      67      2       67
                   12686: D      72      2       68
                   12687: E      61      2       69
                   12688: F      61      2       70
                   12689: G      72      2       71
                   12690: H      72      2       72
                   12691: I      33      2       73
                   12692: J      44      2       74
                   12693: K      67      2       75
                   12694: L      56      2       76
                   12695: M      83      2       77
                   12696: N      67      2       78
                   12697: O      72      2       79
                   12698: P      61      2       80
                   12699: Q      72      3       81
                   12700: R      61      2       82
                   12701: S      50      2       83
                   12702: T      56      2       84
                   12703: U      72      2       85
                   12704: V      61      2       86
                   12705: W      83      2       87
                   12706: X      61      2       88
                   12707: Y      56      2       89
                   12708: Z      56      2       90
                   12709: [      39      3       91
                   12710: \      28      2       92
                   12711: bs     "
                   12712: ]      39      3       93
                   12713: ---    42      2       94
                   12714: ---    50      1       95
                   12715: `      33      2       96
                   12716: a      50      0       97
                   12717: b      50      2       98
                   12718: c      44      0       99
                   12719: d      50      2       100
                   12720: e      44      0       101
                   12721: f      28      3       102
                   12722: g      50      1       103
                   12723: h      50      2       104
                   12724: i      28      2       105
                   12725: j      28      3       106
                   12726: k      44      2       107
                   12727: l      28      2       108
                   12728: m      72      0       109
                   12729: n      50      0       110
                   12730: o      50      0       111
                   12731: p      50      1       112
                   12732: q      50      1       113
                   12733: r      39      0       114
                   12734: s      39      0       115
                   12735: t      28      2       116
                   12736: u      50      0       117
                   12737: v      44      0       118
                   12738: w      67      0       119
                   12739: x      44      0       120
                   12740: y      44      1       121
                   12741: z      39      0       122
                   12742: {      40      3       123
                   12743: ---    27      3       124
                   12744: }      40      3       125
                   12745: ---    54      0       126
                   12746: !!     39      1       161
                   12747: ct     50      3       162
                   12748: ps     50      2       163
                   12749: fr     17      2       164
                   12750: yn     50      2       165
                   12751: fn     50      3       166
                   12752: sc     50      2       167
                   12753: cr     50      2       168
                   12754: ---    21      2       169
                   12755: ``     56      2       170
                   12756: ---    50      0       171
                   12757: ---    33      0       172
                   12758: ---    33      0       173
                   12759: fi     50      3       174
                   12760: fl     50      3       175
                   12761: en     50      0       177
                   12762: \-     "
                   12763: dg     50      2       178
                   12764: dd     50      2       179
                   12765: ---    25      0       180
                   12766: pg     52      3       182
                   12767: ---    35      0       183
                   12768: ---    33      1       184
                   12769: ---    56      1       185
                   12770: ''     56      2       186
                   12771: ---    50      0       187
                   12772: ---    89      0       188
                   12773: ---    100     2       189
                   12774: ??     50      1       191
                   12775: ga     33      2       193
                   12776: \`     "
                   12777: aa     33      2       194
                   12778: \'     "
                   12779: ^a     33      2       195
                   12780: ^      "
                   12781: ~a     33      2       196
                   12782: ~      "
                   12783: -a     33      2       197
                   12784: Ua     33      2       198
                   12785: .a     33      2       199
                   12786: :a     33      2       200
                   12787: oa     33      2       202
                   12788: ,a     33      1       203
                   12789: "a     33      2       205
                   12790: Ca     33      1       206
                   12791: va     33      2       207
                   12792: em     89      0       208
                   12793: ---    89      2       225
                   12794: ---    28      2       227
                   12795: ---    56      2       232
                   12796: ---    72      3       233
                   12797: ---    94      2       234
                   12798: ---    31      2       235
                   12799: ---    67      0       241
                   12800: ---    28      0       245
                   12801: ---    28      2       248
                   12802: ---    50      3       249
                   12803: ---    67      0       250
                   12804: ---    50      3       251
                   12805: 0707070014231217001006440057030057030000010641640522627501100002400000003366post.src/devpost/KBname KB
                   12806: fontname Bookman-Demi
                   12807: named in prologue
                   12808: ligatures fi fl 0
                   12809: spacewidth 34
                   12810: charset
                   12811: !      36      2       33
                   12812: "      42      2       34
                   12813: dq     "
                   12814: #      60      2       35
                   12815: $      66      3       36
                   12816: %      94      2       37
                   12817: &      80      2       38
                   12818: '      32      2       39
                   12819: (      32      3       40
                   12820: )      32      3       41
                   12821: *      46      2       42
                   12822: +      60      0       43
                   12823: ,      34      1       44
                   12824: hy     36      0       45
                   12825: -      "
                   12826: .      34      0       46
                   12827: /      60      3       47
                   12828: 0      66      2       48
                   12829: 1      66      2       49
                   12830: 2      66      2       50
                   12831: 3      66      2       51
                   12832: 4      66      2       52
                   12833: 5      66      2       53
                   12834: 6      66      2       54
                   12835: 7      66      2       55
                   12836: 8      66      2       56
                   12837: 9      66      2       57
                   12838: :      34      0       58
                   12839: ;      34      1       59
                   12840: ---    60      0       60
                   12841: =      60      0       61
                   12842: ---    60      0       62
                   12843: ?      66      2       63
                   12844: @      82      2       64
                   12845: A      72      2       65
                   12846: B      72      2       66
                   12847: C      74      2       67
                   12848: D      78      2       68
                   12849: E      72      2       69
                   12850: F      68      2       70
                   12851: G      78      2       71
                   12852: H      82      2       72
                   12853: I      40      2       73
                   12854: J      64      2       74
                   12855: K      80      2       75
                   12856: L      64      2       76
                   12857: M      94      2       77
                   12858: N      74      2       78
                   12859: O      80      2       79
                   12860: P      66      2       80
                   12861: Q      80      3       81
                   12862: R      78      2       82
                   12863: S      66      2       83
                   12864: T      70      2       84
                   12865: U      74      2       85
                   12866: V      72      2       86
                   12867: W      94      2       87
                   12868: X      78      2       88
                   12869: Y      70      2       89
                   12870: Z      64      2       90
                   12871: [      30      3       91
                   12872: \      60      2       92
                   12873: bs     "
                   12874: ]      30      3       93
                   12875: ---    60      2       94
                   12876: ---    50      1       95
                   12877: `      32      2       96
                   12878: a      58      0       97
                   12879: b      60      2       98
                   12880: c      58      0       99
                   12881: d      64      2       100
                   12882: e      58      0       101
                   12883: f      38      2       102
                   12884: g      58      3       103
                   12885: h      68      2       104
                   12886: i      36      2       105
                   12887: j      34      3       106
                   12888: k      66      2       107
                   12889: l      34      2       108
                   12890: m      100     0       109
                   12891: n      68      0       110
                   12892: o      62      0       111
                   12893: p      64      1       112
                   12894: q      62      1       113
                   12895: r      46      0       114
                   12896: s      52      0       115
                   12897: t      46      2       116
                   12898: u      66      0       117
                   12899: v      60      0       118
                   12900: w      80      0       119
                   12901: x      60      0       120
                   12902: y      62      1       121
                   12903: z      56      0       122
                   12904: {      32      3       123
                   12905: ---    60      2       124
                   12906: }      32      3       125
                   12907: ---    60      0       126
                   12908: !!     36      1       161
                   12909: ct     66      2       162
                   12910: ps     66      2       163
                   12911: fr     12      2       164
                   12912: yn     66      2       165
                   12913: fn     66      3       166
                   12914: sc     60      3       167
                   12915: cr     60      2       168
                   12916: ---    24      2       169
                   12917: ``     54      2       170
                   12918: ---    40      0       171
                   12919: ---    22      0       172
                   12920: ---    22      0       173
                   12921: fi     74      2       174
                   12922: fl     74      2       175
                   12923: en     50      0       177
                   12924: \-     "
                   12925: dg     44      3       178
                   12926: dd     38      3       179
                   12927: ---    34      0       180
                   12928: pg     80      2       182
                   12929: ---    46      0       183
                   12930: ---    32      1       184
                   12931: ---    54      1       185
                   12932: ''     54      2       186
                   12933: ---    40      0       187
                   12934: ---    100     0       188
                   12935: ---    136     2       189
                   12936: ??     66      1       191
                   12937: ga     40      2       193
                   12938: \`     "
                   12939: aa     40      2       194
                   12940: \'     "
                   12941: ^a     50      2       195
                   12942: ^      "
                   12943: ~a     48      2       196
                   12944: ~      "
                   12945: -a     46      2       197
                   12946: Ua     50      2       198
                   12947: .a     32      2       199
                   12948: :a     50      2       200
                   12949: oa     34      2       202
                   12950: ,a     36      1       203
                   12951: "a     44      2       205
                   12952: Ca     32      1       206
                   12953: va     50      2       207
                   12954: em     100     0       208
                   12955: ---    114     2       225
                   12956: ---    40      2       227
                   12957: ---    64      2       232
                   12958: ---    80      3       233
                   12959: ---    122     2       234
                   12960: ---    40      2       235
                   12961: ---    88      0       241
                   12962: ---    36      0       245
                   12963: ---    34      2       248
                   12964: ---    62      0       249
                   12965: ---    94      0       250
                   12966: ---    66      2       251
                   12967: 0707070014231217011006440057030057030000010641660522627501100002400000003373post.src/devpost/KIname KI
                   12968: fontname Bookman-LightItalic
                   12969: named in prologue
                   12970: ligatures fi fl 0
                   12971: spacewidth 30
                   12972: charset
                   12973: !      32      2       33
                   12974: "      36      2       34
                   12975: dq     "
                   12976: #      60      2       35
                   12977: $      62      2       36
                   12978: %      80      2       37
                   12979: &      82      2       38
                   12980: '      28      2       39
                   12981: (      28      3       40
                   12982: )      28      3       41
                   12983: *      44      2       42
                   12984: +      60      2       43
                   12985: ,      30      1       44
                   12986: hy     32      0       45
                   12987: -      "
                   12988: .      30      0       46
                   12989: /      60      3       47
                   12990: 0      62      2       48
                   12991: 1      62      2       49
                   12992: 2      62      2       50
                   12993: 3      62      2       51
                   12994: 4      62      2       52
                   12995: 5      62      2       53
                   12996: 6      62      2       54
                   12997: 7      62      2       55
                   12998: 8      62      2       56
                   12999: 9      62      2       57
                   13000: :      30      0       58
                   13001: ;      30      1       59
                   13002: ---    60      2       60
                   13003: =      60      0       61
                   13004: ---    60      2       62
                   13005: ?      54      2       63
                   13006: @      78      2       64
                   13007: A      70      2       65
                   13008: B      72      2       66
                   13009: C      72      2       67
                   13010: D      74      2       68
                   13011: E      68      2       69
                   13012: F      62      2       70
                   13013: G      76      2       71
                   13014: H      80      2       72
                   13015: I      32      2       73
                   13016: J      56      2       74
                   13017: K      72      2       75
                   13018: L      58      2       76
                   13019: M      86      2       77
                   13020: N      72      2       78
                   13021: O      76      2       79
                   13022: P      60      2       80
                   13023: Q      78      3       81
                   13024: R      70      2       82
                   13025: S      64      2       83
                   13026: T      60      2       84
                   13027: U      72      2       85
                   13028: V      68      2       86
                   13029: W      96      2       87
                   13030: X      70      2       88
                   13031: Y      66      2       89
                   13032: Z      58      2       90
                   13033: [      26      3       91
                   13034: \      60      2       92
                   13035: bs     "
                   13036: ]      26      3       93
                   13037: ---    60      2       94
                   13038: ---    50      1       95
                   13039: `      28      2       96
                   13040: a      62      0       97
                   13041: b      60      2       98
                   13042: c      48      0       99
                   13043: d      64      2       100
                   13044: e      54      0       101
                   13045: f      34      3       102
                   13046: g      56      1       103
                   13047: h      62      2       104
                   13048: i      28      2       105
                   13049: j      28      3       106
                   13050: k      60      2       107
                   13051: l      28      2       108
                   13052: m      88      0       109
                   13053: n      62      0       110
                   13054: o      54      0       111
                   13055: p      60      1       112
                   13056: q      56      1       113
                   13057: r      40      0       114
                   13058: s      54      0       115
                   13059: t      34      2       116
                   13060: u      62      0       117
                   13061: v      54      0       118
                   13062: w      88      0       119
                   13063: x      54      0       120
                   13064: y      60      1       121
                   13065: z      52      0       122
                   13066: {      36      3       123
                   13067: ---    60      2       124
                   13068: }      38      3       125
                   13069: ---    60      0       126
                   13070: !!     32      1       161
                   13071: ct     62      2       162
                   13072: ps     62      2       163
                   13073: fr     2       2       164
                   13074: yn     62      2       165
                   13075: fn     62      3       166
                   13076: sc     62      3       167
                   13077: cr     60      2       168
                   13078: ---    20      2       169
                   13079: ``     44      2       170
                   13080: ---    30      0       171
                   13081: ---    18      0       172
                   13082: ---    18      0       173
                   13083: fi     64      3       174
                   13084: fl     66      3       175
                   13085: en     50      0       177
                   13086: \-     "
                   13087: dg     62      3       178
                   13088: dd     62      3       179
                   13089: ---    30      0       180
                   13090: pg     62      2       182
                   13091: ---    46      0       183
                   13092: ---    32      1       184
                   13093: ---    48      1       185
                   13094: ''     44      2       186
                   13095: ---    30      0       187
                   13096: ---    100     0       188
                   13097: ---    118     2       189
                   13098: ??     54      1       191
                   13099: ga     34      2       193
                   13100: \`     "
                   13101: aa     32      2       194
                   13102: \'     "
                   13103: ^a     44      2       195
                   13104: ^      "
                   13105: ~a     44      2       196
                   13106: ~      "
                   13107: -a     44      2       197
                   13108: Ua     44      2       198
                   13109: .a     26      2       199
                   13110: :a     42      2       200
                   13111: oa     30      2       202
                   13112: ,a     32      1       203
                   13113: "a     34      2       205
                   13114: Ca     26      1       206
                   13115: va     44      2       207
                   13116: em     100     0       208
                   13117: ---    122     2       225
                   13118: ---    44      2       227
                   13119: ---    58      2       232
                   13120: ---    76      2       233
                   13121: ---    118     2       234
                   13122: ---    40      2       235
                   13123: ---    88      0       241
                   13124: ---    28      0       245
                   13125: ---    34      2       248
                   13126: ---    54      0       249
                   13127: ---    90      0       250
                   13128: ---    62      3       251
                   13129: 0707070014231217021006440057030057030000010642000522627501100002400000003366post.src/devpost/KRname KR
                   13130: fontname Bookman-Light
                   13131: named in prologue
                   13132: ligatures fi fl 0
                   13133: spacewidth 32
                   13134: charset
                   13135: !      30      2       33
                   13136: "      38      2       34
                   13137: dq     "
                   13138: #      60      2       35
                   13139: $      62      2       36
                   13140: %      90      2       37
                   13141: &      80      2       38
                   13142: '      22      2       39
                   13143: (      30      3       40
                   13144: )      30      3       41
                   13145: *      44      2       42
                   13146: +      60      0       43
                   13147: ,      32      1       44
                   13148: hy     40      0       45
                   13149: -      "
                   13150: .      32      0       46
                   13151: /      60      3       47
                   13152: 0      62      2       48
                   13153: 1      62      2       49
                   13154: 2      62      2       50
                   13155: 3      62      2       51
                   13156: 4      62      2       52
                   13157: 5      62      2       53
                   13158: 6      62      2       54
                   13159: 7      62      2       55
                   13160: 8      62      2       56
                   13161: 9      62      2       57
                   13162: :      32      0       58
                   13163: ;      32      1       59
                   13164: ---    60      0       60
                   13165: =      60      0       61
                   13166: ---    60      0       62
                   13167: ?      54      2       63
                   13168: @      82      2       64
                   13169: A      68      2       65
                   13170: B      74      2       66
                   13171: C      74      2       67
                   13172: D      80      2       68
                   13173: E      72      2       69
                   13174: F      64      2       70
                   13175: G      80      2       71
                   13176: H      80      2       72
                   13177: I      34      2       73
                   13178: J      60      2       74
                   13179: K      72      2       75
                   13180: L      60      2       76
                   13181: M      92      2       77
                   13182: N      74      2       78
                   13183: O      80      2       79
                   13184: P      62      2       80
                   13185: Q      82      3       81
                   13186: R      72      2       82
                   13187: S      66      2       83
                   13188: T      62      2       84
                   13189: U      78      2       85
                   13190: V      70      2       86
                   13191: W      96      2       87
                   13192: X      72      2       88
                   13193: Y      64      2       89
                   13194: Z      64      2       90
                   13195: [      30      3       91
                   13196: \      60      2       92
                   13197: bs     "
                   13198: ]      30      3       93
                   13199: ---    60      2       94
                   13200: ---    50      1       95
                   13201: `      22      2       96
                   13202: a      58      0       97
                   13203: b      62      2       98
                   13204: c      52      0       99
                   13205: d      62      2       100
                   13206: e      52      0       101
                   13207: f      32      2       102
                   13208: g      54      3       103
                   13209: h      66      2       104
                   13210: i      30      2       105
                   13211: j      30      3       106
                   13212: k      62      2       107
                   13213: l      30      2       108
                   13214: m      94      0       109
                   13215: n      66      0       110
                   13216: o      56      0       111
                   13217: p      62      1       112
                   13218: q      58      1       113
                   13219: r      44      0       114
                   13220: s      52      0       115
                   13221: t      38      2       116
                   13222: u      68      0       117
                   13223: v      52      0       118
                   13224: w      78      0       119
                   13225: x      56      0       120
                   13226: y      54      1       121
                   13227: z      48      0       122
                   13228: {      28      3       123
                   13229: ---    60      2       124
                   13230: }      28      3       125
                   13231: ---    60      0       126
                   13232: !!     30      1       161
                   13233: ct     62      2       162
                   13234: ps     62      2       163
                   13235: fr     14      2       164
                   13236: yn     62      2       165
                   13237: fn     62      3       166
                   13238: sc     52      3       167
                   13239: cr     60      2       168
                   13240: ---    22      2       169
                   13241: ``     40      2       170
                   13242: ---    36      0       171
                   13243: ---    24      0       172
                   13244: ---    24      0       173
                   13245: fi     62      2       174
                   13246: fl     62      2       175
                   13247: en     50      0       177
                   13248: \-     "
                   13249: dg     54      3       178
                   13250: dd     54      3       179
                   13251: ---    32      0       180
                   13252: pg     60      2       182
                   13253: ---    46      0       183
                   13254: ---    22      0       184
                   13255: ---    40      0       185
                   13256: ''     40      2       186
                   13257: ---    36      0       187
                   13258: ---    100     0       188
                   13259: ---    128     2       189
                   13260: ??     54      1       191
                   13261: ga     34      2       193
                   13262: \`     "
                   13263: aa     34      2       194
                   13264: \'     "
                   13265: ^a     42      2       195
                   13266: ^      "
                   13267: ~a     44      2       196
                   13268: ~      "
                   13269: -a     44      2       197
                   13270: Ua     46      2       198
                   13271: .a     26      2       199
                   13272: :a     42      2       200
                   13273: oa     32      2       202
                   13274: ,a     32      1       203
                   13275: "a     38      2       205
                   13276: Ca     32      1       206
                   13277: va     42      2       207
                   13278: em     100     0       208
                   13279: ---    126     2       225
                   13280: ---    42      2       227
                   13281: ---    60      2       232
                   13282: ---    80      2       233
                   13283: ---    124     2       234
                   13284: ---    42      2       235
                   13285: ---    86      0       241
                   13286: ---    30      0       245
                   13287: ---    32      2       248
                   13288: ---    56      0       249
                   13289: ---    90      0       250
                   13290: ---    66      2       251
                   13291: 0707070014231217031006440057030057030000010642020522627501100002400000003374post.src/devpost/KXname KX
                   13292: fontname Bookman-DemiItalic
                   13293: named in prologue
                   13294: ligatures fi fl 0
                   13295: spacewidth 34
                   13296: charset
                   13297: !      32      2       33
                   13298: "      38      2       34
                   13299: dq     "
                   13300: #      60      2       35
                   13301: $      68      3       36
                   13302: %      88      2       37
                   13303: &      98      2       38
                   13304: '      32      2       39
                   13305: (      26      3       40
                   13306: )      26      3       41
                   13307: *      46      2       42
                   13308: +      60      0       43
                   13309: ,      34      1       44
                   13310: hy     28      0       45
                   13311: -      "
                   13312: .      34      0       46
                   13313: /      36      2       47
                   13314: 0      68      2       48
                   13315: 1      68      2       49
                   13316: 2      68      2       50
                   13317: 3      68      2       51
                   13318: 4      68      2       52
                   13319: 5      68      2       53
                   13320: 6      68      2       54
                   13321: 7      68      2       55
                   13322: 8      68      2       56
                   13323: 9      68      2       57
                   13324: :      34      0       58
                   13325: ;      34      1       59
                   13326: ---    62      0       60
                   13327: =      60      0       61
                   13328: ---    62      0       62
                   13329: ?      62      2       63
                   13330: @      78      2       64
                   13331: A      72      2       65
                   13332: B      72      2       66
                   13333: C      70      2       67
                   13334: D      76      2       68
                   13335: E      72      2       69
                   13336: F      66      2       70
                   13337: G      76      2       71
                   13338: H      80      2       72
                   13339: I      38      2       73
                   13340: J      62      2       74
                   13341: K      78      2       75
                   13342: L      64      2       76
                   13343: M      86      2       77
                   13344: N      74      2       78
                   13345: O      76      2       79
                   13346: P      64      2       80
                   13347: Q      76      3       81
                   13348: R      74      2       82
                   13349: S      70      2       83
                   13350: T      70      2       84
                   13351: U      74      2       85
                   13352: V      66      2       86
                   13353: W      100     2       87
                   13354: X      74      2       88
                   13355: Y      66      2       89
                   13356: Z      68      2       90
                   13357: [      26      3       91
                   13358: \      58      2       92
                   13359: bs     "
                   13360: ]      26      3       93
                   13361: ---    62      2       94
                   13362: ---    50      1       95
                   13363: `      32      2       96
                   13364: a      68      0       97
                   13365: b      60      2       98
                   13366: c      56      0       99
                   13367: d      68      2       100
                   13368: e      56      0       101
                   13369: f      42      3       102
                   13370: g      62      1       103
                   13371: h      70      2       104
                   13372: i      38      2       105
                   13373: j      32      3       106
                   13374: k      70      2       107
                   13375: l      38      2       108
                   13376: m      96      0       109
                   13377: n      68      0       110
                   13378: o      60      0       111
                   13379: p      66      1       112
                   13380: q      62      1       113
                   13381: r      50      0       114
                   13382: s      54      0       115
                   13383: t      44      2       116
                   13384: u      68      0       117
                   13385: v      54      0       118
                   13386: w      86      0       119
                   13387: x      62      0       120
                   13388: y      60      1       121
                   13389: z      56      0       122
                   13390: {      30      3       123
                   13391: ---    62      2       124
                   13392: }      30      3       125
                   13393: ---    62      0       126
                   13394: !!     32      1       161
                   13395: ct     68      2       162
                   13396: ps     68      2       163
                   13397: fr     12      2       164
                   13398: yn     68      2       165
                   13399: fn     68      3       166
                   13400: sc     62      3       167
                   13401: cr     68      2       168
                   13402: ---    18      2       169
                   13403: ``     52      2       170
                   13404: ---    38      0       171
                   13405: ---    22      0       172
                   13406: ---    22      0       173
                   13407: fi     82      3       174
                   13408: fl     82      3       175
                   13409: en     50      0       177
                   13410: \-     "
                   13411: dg     42      3       178
                   13412: dd     42      3       179
                   13413: ---    34      0       180
                   13414: pg     68      3       182
                   13415: ---    36      0       183
                   13416: ---    30      1       184
                   13417: ---    52      1       185
                   13418: ''     52      2       186
                   13419: ---    38      0       187
                   13420: ---    100     0       188
                   13421: ---    136     2       189
                   13422: ??     62      1       191
                   13423: ga     38      2       193
                   13424: \`     "
                   13425: aa     34      2       194
                   13426: \'     "
                   13427: ^a     48      2       195
                   13428: ^      "
                   13429: ~a     48      2       196
                   13430: ~      "
                   13431: -a     48      2       197
                   13432: Ua     46      2       198
                   13433: .a     38      2       199
                   13434: :a     52      2       200
                   13435: oa     36      2       202
                   13436: ,a     36      1       203
                   13437: "a     56      2       205
                   13438: Ca     32      1       206
                   13439: va     48      2       207
                   13440: em     100     0       208
                   13441: ---    114     2       225
                   13442: ---    44      2       227
                   13443: ---    64      2       232
                   13444: ---    76      2       233
                   13445: ---    118     2       234
                   13446: ---    44      2       235
                   13447: ---    88      0       241
                   13448: ---    38      0       245
                   13449: ---    38      2       248
                   13450: ---    60      2       249
                   13451: ---    92      0       250
                   13452: ---    66      3       251
                   13453: 0707070014231217041006440057030057030000010642040522627501100002300000003242post.src/devpost/Cname C
                   13454: fontname Courier
                   13455: spacewidth 60
                   13456: charset
                   13457: !      60      2       33
                   13458: "      60      2       34
                   13459: dq     "
                   13460: #      60      2       35
                   13461: $      60      2       36
                   13462: %      60      2       37
                   13463: &      60      2       38
                   13464: '      60      2       39
                   13465: (      60      3       40
                   13466: )      60      3       41
                   13467: *      60      2       42
                   13468: +      60      2       43
                   13469: ,      60      1       44
                   13470: hy     60      0       45
                   13471: -      "
                   13472: .      60      0       46
                   13473: /      60      2       47
                   13474: 0      60      2       48
                   13475: 1      60      2       49
                   13476: 2      60      2       50
                   13477: 3      60      2       51
                   13478: 4      60      2       52
                   13479: 5      60      2       53
                   13480: 6      60      2       54
                   13481: 7      60      2       55
                   13482: 8      60      2       56
                   13483: 9      60      2       57
                   13484: :      60      0       58
                   13485: ;      60      0       59
                   13486: <      60      2       60
                   13487: =      60      0       61
                   13488: >      60      2       62
                   13489: ?      60      2       63
                   13490: @      60      2       64
                   13491: A      60      2       65
                   13492: B      60      2       66
                   13493: C      60      2       67
                   13494: D      60      2       68
                   13495: E      60      2       69
                   13496: F      60      2       70
                   13497: G      60      2       71
                   13498: H      60      2       72
                   13499: I      60      2       73
                   13500: J      60      2       74
                   13501: K      60      2       75
                   13502: L      60      2       76
                   13503: M      60      2       77
                   13504: N      60      2       78
                   13505: O      60      2       79
                   13506: P      60      2       80
                   13507: Q      60      3       81
                   13508: R      60      2       82
                   13509: S      60      2       83
                   13510: T      60      2       84
                   13511: U      60      2       85
                   13512: V      60      2       86
                   13513: W      60      2       87
                   13514: X      60      2       88
                   13515: Y      60      2       89
                   13516: Z      60      2       90
                   13517: [      60      3       91
                   13518: \      60      2       92
                   13519: bs     "
                   13520: ]      60      3       93
                   13521: ^      60      2       94
                   13522: _      60      1       95
                   13523: `      60      2       96
                   13524: a      60      0       97
                   13525: b      60      2       98
                   13526: c      60      0       99
                   13527: d      60      2       100
                   13528: e      60      0       101
                   13529: f      60      2       102
                   13530: g      60      1       103
                   13531: h      60      2       104
                   13532: i      60      2       105
                   13533: j      60      3       106
                   13534: k      60      2       107
                   13535: l      60      2       108
                   13536: m      60      0       109
                   13537: n      60      0       110
                   13538: o      60      0       111
                   13539: p      60      1       112
                   13540: q      60      1       113
                   13541: r      60      0       114
                   13542: s      60      0       115
                   13543: t      60      2       116
                   13544: u      60      0       117
                   13545: v      60      0       118
                   13546: w      60      0       119
                   13547: x      60      0       120
                   13548: y      60      1       121
                   13549: z      60      0       122
                   13550: {      60      3       123
                   13551: |      60      3       124
                   13552: }      60      3       125
                   13553: ~      60      0       126
                   13554: !!     60      1       161
                   13555: ct     60      2       162
                   13556: ps     60      2       163
                   13557: fr     60      2       164
                   13558: yn     60      2       165
                   13559: fn     60      2       166
                   13560: sc     60      2       167
                   13561: cr     60      2       168
                   13562: ---    60      2       169
                   13563: ``     60      2       170
                   13564: ---    60      0       171
                   13565: ---    60      0       172
                   13566: ---    60      0       173
                   13567: en     60      0       177
                   13568: \-     "
                   13569: dg     60      2       178
                   13570: dd     60      2       179
                   13571: ---    60      0       180
                   13572: pg     60      2       182
                   13573: ---    60      0       183
                   13574: ---    60      1       184
                   13575: ---    60      1       185
                   13576: ''     60      2       186
                   13577: ---    60      0       187
                   13578: ---    60      0       188
                   13579: ---    60      2       189
                   13580: ??     60      1       191
                   13581: ga     60      2       193
                   13582: \`     "
                   13583: aa     60      2       194
                   13584: \'     "
                   13585: ^a     60      2       195
                   13586: ^      "
                   13587: ~a     60      2       196
                   13588: ~      "
                   13589: -a     60      2       197
                   13590: Ua     60      2       198
                   13591: .a     60      2       199
                   13592: :a     60      2       200
                   13593: oa     60      2       202
                   13594: ,a     60      1       203
                   13595: "a     60      2       205
                   13596: Ca     60      1       206
                   13597: va     60      2       207
                   13598: em     60      0       208
                   13599: ---    60      2       225
                   13600: ---    60      2       227
                   13601: ---    60      2       232
                   13602: ---    60      2       233
                   13603: ---    60      2       234
                   13604: ---    60      2       235
                   13605: ---    60      0       241
                   13606: ---    60      0       245
                   13607: ---    60      2       248
                   13608: ---    60      0       249
                   13609: ---    60      0       250
                   13610: ---    60      2       251
                   13611: 0707070014231217051006440057030057030000010642060522627501200002400000003375post.src/devpost/NBname NB
                   13612: fontname NewCenturySchlbk-Bold
                   13613: named in prologue
                   13614: ligatures fi fl 0
                   13615: spacewidth 29
                   13616: charset
                   13617: !      30      2       33
                   13618: "      33      2       34
                   13619: dq     "
                   13620: #      57      2       35
                   13621: $      57      3       36
                   13622: %      83      2       37
                   13623: &      85      2       38
                   13624: '      24      2       39
                   13625: (      39      3       40
                   13626: )      39      3       41
                   13627: *      50      2       42
                   13628: +      61      0       43
                   13629: ,      28      1       44
                   13630: hy     33      0       45
                   13631: -      "
                   13632: .      28      0       46
                   13633: /      28      2       47
                   13634: 0      57      2       48
                   13635: 1      57      2       49
                   13636: 2      57      2       50
                   13637: 3      57      2       51
                   13638: 4      57      2       52
                   13639: 5      57      2       53
                   13640: 6      57      2       54
                   13641: 7      57      2       55
                   13642: 8      57      2       56
                   13643: 9      57      2       57
                   13644: :      28      0       58
                   13645: ;      28      1       59
                   13646: ---    61      0       60
                   13647: =      61      0       61
                   13648: ---    61      0       62
                   13649: ?      50      2       63
                   13650: @      75      2       64
                   13651: A      76      2       65
                   13652: B      78      2       66
                   13653: C      78      2       67
                   13654: D      83      2       68
                   13655: E      76      2       69
                   13656: F      72      2       70
                   13657: G      83      2       71
                   13658: H      87      2       72
                   13659: I      44      2       73
                   13660: J      65      2       74
                   13661: K      81      2       75
                   13662: L      72      2       76
                   13663: M      98      2       77
                   13664: N      83      2       78
                   13665: O      83      2       79
                   13666: P      76      2       80
                   13667: Q      83      3       81
                   13668: R      81      2       82
                   13669: S      67      2       83
                   13670: T      72      2       84
                   13671: U      83      2       85
                   13672: V      76      2       86
                   13673: W      98      2       87
                   13674: X      72      2       88
                   13675: Y      72      2       89
                   13676: Z      67      2       90
                   13677: [      39      3       91
                   13678: \      61      2       92
                   13679: bs     "
                   13680: ]      39      3       93
                   13681: ---    61      2       94
                   13682: ---    50      1       95
                   13683: `      24      2       96
                   13684: a      61      0       97
                   13685: b      65      2       98
                   13686: c      56      0       99
                   13687: d      67      2       100
                   13688: e      57      0       101
                   13689: f      39      2       102
                   13690: g      61      1       103
                   13691: h      69      2       104
                   13692: i      37      2       105
                   13693: j      35      3       106
                   13694: k      67      2       107
                   13695: l      35      2       108
                   13696: m      96      0       109
                   13697: n      69      0       110
                   13698: o      61      0       111
                   13699: p      67      1       112
                   13700: q      65      1       113
                   13701: r      52      0       114
                   13702: s      50      0       115
                   13703: t      43      2       116
                   13704: u      69      0       117
                   13705: v      61      0       118
                   13706: w      89      0       119
                   13707: x      61      0       120
                   13708: y      61      1       121
                   13709: z      54      0       122
                   13710: {      39      3       123
                   13711: ---    61      2       124
                   13712: }      39      3       125
                   13713: ---    61      0       126
                   13714: !!     30      1       161
                   13715: ct     57      3       162
                   13716: ps     57      2       163
                   13717: fr     17      2       164
                   13718: yn     72      2       165
                   13719: fn     57      3       166
                   13720: sc     50      2       167
                   13721: cr     61      2       168
                   13722: ---    24      2       169
                   13723: ``     48      2       170
                   13724: ---    50      0       171
                   13725: ---    33      0       172
                   13726: ---    33      0       173
                   13727: fi     69      2       174
                   13728: fl     69      2       175
                   13729: en     50      0       177
                   13730: \-     "
                   13731: dg     50      2       178
                   13732: dd     50      2       179
                   13733: ---    28      0       180
                   13734: pg     75      2       182
                   13735: ---    61      0       183
                   13736: ---    24      1       184
                   13737: ---    48      1       185
                   13738: ''     48      2       186
                   13739: ---    50      0       187
                   13740: ---    100     0       188
                   13741: ---    100     2       189
                   13742: ??     50      1       191
                   13743: ga     33      2       193
                   13744: \`     "
                   13745: aa     33      2       194
                   13746: \'     "
                   13747: ^a     33      2       195
                   13748: ^      "
                   13749: ~a     33      2       196
                   13750: ~      "
                   13751: -a     33      2       197
                   13752: Ua     33      2       198
                   13753: .a     33      2       199
                   13754: :a     33      2       200
                   13755: oa     33      2       202
                   13756: ,a     33      1       203
                   13757: "a     33      2       205
                   13758: Ca     33      1       206
                   13759: va     33      2       207
                   13760: em     100     0       208
                   13761: ---    98      2       225
                   13762: ---    37      2       227
                   13763: ---    72      2       232
                   13764: ---    83      2       233
                   13765: ---    100     2       234
                   13766: ---    37      2       235
                   13767: ---    87      0       241
                   13768: ---    37      0       245
                   13769: ---    35      2       248
                   13770: ---    61      3       249
                   13771: ---    91      0       250
                   13772: ---    61      2       251
                   13773: 0707070014231217061006440057030057030000010642400522627501200002400000003376post.src/devpost/NIname NI
                   13774: fontname NewCenturySchlbk-Italic
                   13775: named in prologue
                   13776: ligatures fi fl 0
                   13777: spacewidth 28
                   13778: charset
                   13779: !      33      2       33
                   13780: "      40      2       34
                   13781: dq     "
                   13782: #      61      2       35
                   13783: $      56      3       36
                   13784: %      83      2       37
                   13785: &      85      2       38
                   13786: '      20      2       39
                   13787: (      33      3       40
                   13788: )      33      3       41
                   13789: *      50      2       42
                   13790: +      61      0       43
                   13791: ,      28      1       44
                   13792: hy     33      0       45
                   13793: -      "
                   13794: .      28      0       46
                   13795: /      61      2       47
                   13796: 0      56      2       48
                   13797: 1      56      2       49
                   13798: 2      56      2       50
                   13799: 3      56      2       51
                   13800: 4      56      2       52
                   13801: 5      56      2       53
                   13802: 6      56      2       54
                   13803: 7      56      2       55
                   13804: 8      56      2       56
                   13805: 9      56      2       57
                   13806: :      28      0       58
                   13807: ;      28      1       59
                   13808: ---    61      0       60
                   13809: =      61      0       61
                   13810: ---    61      0       62
                   13811: ?      44      2       63
                   13812: @      75      2       64
                   13813: A      70      2       65
                   13814: B      72      2       66
                   13815: C      72      2       67
                   13816: D      78      2       68
                   13817: E      72      2       69
                   13818: F      67      2       70
                   13819: G      78      2       71
                   13820: H      83      2       72
                   13821: I      41      2       73
                   13822: J      61      2       74
                   13823: K      74      2       75
                   13824: L      67      2       76
                   13825: M      94      2       77
                   13826: N      81      2       78
                   13827: O      78      2       79
                   13828: P      67      2       80
                   13829: Q      78      3       81
                   13830: R      74      2       82
                   13831: S      67      2       83
                   13832: T      69      2       84
                   13833: U      81      2       85
                   13834: V      70      2       86
                   13835: W      93      2       87
                   13836: X      70      2       88
                   13837: Y      69      2       89
                   13838: Z      67      2       90
                   13839: [      33      3       91
                   13840: \      61      2       92
                   13841: bs     "
                   13842: ]      33      3       93
                   13843: ---    61      2       94
                   13844: ---    50      1       95
                   13845: `      20      2       96
                   13846: a      57      0       97
                   13847: b      56      2       98
                   13848: c      44      0       99
                   13849: d      61      2       100
                   13850: e      44      0       101
                   13851: f      33      3       102
                   13852: g      54      1       103
                   13853: h      61      2       104
                   13854: i      33      2       105
                   13855: j      32      3       106
                   13856: k      56      2       107
                   13857: l      33      2       108
                   13858: m      89      0       109
                   13859: n      61      0       110
                   13860: o      50      0       111
                   13861: p      57      1       112
                   13862: q      56      1       113
                   13863: r      44      0       114
                   13864: s      44      0       115
                   13865: t      35      2       116
                   13866: u      61      0       117
                   13867: v      52      0       118
                   13868: w      78      0       119
                   13869: x      50      0       120
                   13870: y      50      1       121
                   13871: z      46      0       122
                   13872: {      33      3       123
                   13873: ---    61      2       124
                   13874: }      33      3       125
                   13875: ---    61      0       126
                   13876: !!     33      3       161
                   13877: ct     56      3       162
                   13878: ps     56      2       163
                   13879: fr     17      2       164
                   13880: yn     56      2       165
                   13881: fn     56      3       166
                   13882: sc     50      3       167
                   13883: cr     61      2       168
                   13884: ---    28      2       169
                   13885: ``     39      2       170
                   13886: ---    43      0       171
                   13887: ---    33      0       172
                   13888: ---    33      0       173
                   13889: fi     61      3       174
                   13890: fl     61      3       175
                   13891: en     50      0       177
                   13892: \-     "
                   13893: dg     50      3       178
                   13894: dd     50      3       179
                   13895: ---    28      0       180
                   13896: pg     65      2       182
                   13897: ---    61      2       183
                   13898: ---    20      1       184
                   13899: ---    39      1       185
                   13900: ''     39      2       186
                   13901: ---    43      0       187
                   13902: ---    100     0       188
                   13903: ---    100     2       189
                   13904: ??     44      3       191
                   13905: ga     33      2       193
                   13906: \`     "
                   13907: aa     33      2       194
                   13908: \'     "
                   13909: ^a     33      2       195
                   13910: ^      "
                   13911: ~a     33      2       196
                   13912: ~      "
                   13913: -a     33      2       197
                   13914: Ua     33      2       198
                   13915: .a     33      2       199
                   13916: :a     33      2       200
                   13917: oa     33      2       202
                   13918: ,a     33      1       203
                   13919: "a     33      2       205
                   13920: Ca     33      1       206
                   13921: va     33      2       207
                   13922: em     100     0       208
                   13923: ---    87      2       225
                   13924: ---    42      2       227
                   13925: ---    67      2       232
                   13926: ---    78      2       233
                   13927: ---    98      2       234
                   13928: ---    37      2       235
                   13929: ---    72      0       241
                   13930: ---    33      0       245
                   13931: ---    33      2       248
                   13932: ---    50      3       249
                   13933: ---    78      0       250
                   13934: ---    56      3       251
                   13935: 0707070014231217071006440057030057030000010642420522627501200002400000003377post.src/devpost/NRname NR
                   13936: fontname NewCenturySchlbk-Roman
                   13937: named in prologue
                   13938: ligatures fi fl 0
                   13939: spacewidth 28
                   13940: charset
                   13941: !      30      2       33
                   13942: "      39      2       34
                   13943: dq     "
                   13944: #      56      2       35
                   13945: $      56      3       36
                   13946: %      83      2       37
                   13947: &      81      2       38
                   13948: '      20      2       39
                   13949: (      33      3       40
                   13950: )      33      3       41
                   13951: *      50      2       42
                   13952: +      61      0       43
                   13953: ,      28      1       44
                   13954: hy     33      0       45
                   13955: -      "
                   13956: .      28      0       46
                   13957: /      28      2       47
                   13958: 0      56      2       48
                   13959: 1      56      2       49
                   13960: 2      56      2       50
                   13961: 3      56      2       51
                   13962: 4      56      2       52
                   13963: 5      56      2       53
                   13964: 6      56      2       54
                   13965: 7      56      2       55
                   13966: 8      56      2       56
                   13967: 9      56      2       57
                   13968: :      28      0       58
                   13969: ;      28      1       59
                   13970: ---    61      0       60
                   13971: =      61      0       61
                   13972: ---    61      0       62
                   13973: ?      44      2       63
                   13974: @      74      2       64
                   13975: A      72      2       65
                   13976: B      72      2       66
                   13977: C      72      2       67
                   13978: D      78      2       68
                   13979: E      72      2       69
                   13980: F      67      2       70
                   13981: G      78      2       71
                   13982: H      83      2       72
                   13983: I      41      2       73
                   13984: J      56      2       74
                   13985: K      78      2       75
                   13986: L      67      2       76
                   13987: M      94      2       77
                   13988: N      81      2       78
                   13989: O      78      2       79
                   13990: P      67      2       80
                   13991: Q      78      3       81
                   13992: R      72      2       82
                   13993: S      63      2       83
                   13994: T      67      2       84
                   13995: U      81      2       85
                   13996: V      72      2       86
                   13997: W      98      2       87
                   13998: X      70      2       88
                   13999: Y      70      2       89
                   14000: Z      61      2       90
                   14001: [      33      3       91
                   14002: \      61      2       92
                   14003: bs     "
                   14004: ]      33      3       93
                   14005: ---    61      2       94
                   14006: ---    50      1       95
                   14007: `      20      2       96
                   14008: a      56      0       97
                   14009: b      56      2       98
                   14010: c      44      0       99
                   14011: d      57      2       100
                   14012: e      50      0       101
                   14013: f      33      2       102
                   14014: g      54      1       103
                   14015: h      61      2       104
                   14016: i      32      2       105
                   14017: j      30      3       106
                   14018: k      59      2       107
                   14019: l      32      2       108
                   14020: m      89      0       109
                   14021: n      61      0       110
                   14022: o      50      0       111
                   14023: p      57      1       112
                   14024: q      56      1       113
                   14025: r      44      0       114
                   14026: s      46      0       115
                   14027: t      39      2       116
                   14028: u      61      0       117
                   14029: v      54      0       118
                   14030: w      78      0       119
                   14031: x      54      0       120
                   14032: y      54      1       121
                   14033: z      48      0       122
                   14034: {      33      3       123
                   14035: ---    61      2       124
                   14036: }      33      3       125
                   14037: ---    61      0       126
                   14038: !!     30      3       161
                   14039: ct     56      3       162
                   14040: ps     56      2       163
                   14041: fr     17      2       164
                   14042: yn     70      2       165
                   14043: fn     56      3       166
                   14044: sc     50      3       167
                   14045: cr     61      2       168
                   14046: ---    20      2       169
                   14047: ``     39      2       170
                   14048: ---    43      0       171
                   14049: ---    26      0       172
                   14050: ---    26      0       173
                   14051: fi     61      2       174
                   14052: fl     61      2       175
                   14053: en     56      0       177
                   14054: \-     "
                   14055: dg     50      3       178
                   14056: dd     50      3       179
                   14057: ---    28      0       180
                   14058: pg     61      3       182
                   14059: ---    61      2       183
                   14060: ---    20      1       184
                   14061: ---    39      1       185
                   14062: ''     39      2       186
                   14063: ---    43      0       187
                   14064: ---    100     0       188
                   14065: ---    100     2       189
                   14066: ??     44      3       191
                   14067: ga     33      2       193
                   14068: \`     "
                   14069: aa     33      2       194
                   14070: \'     "
                   14071: ^a     33      2       195
                   14072: ^      "
                   14073: ~a     33      2       196
                   14074: ~      "
                   14075: -a     33      2       197
                   14076: Ua     33      2       198
                   14077: .a     33      2       199
                   14078: :a     33      2       200
                   14079: oa     33      2       202
                   14080: ,a     33      1       203
                   14081: "a     33      2       205
                   14082: Ca     33      1       206
                   14083: va     33      2       207
                   14084: em     100     0       208
                   14085: ---    100     2       225
                   14086: ---    33      2       227
                   14087: ---    67      2       232
                   14088: ---    78      2       233
                   14089: ---    100     2       234
                   14090: ---    30      2       235
                   14091: ---    80      0       241
                   14092: ---    32      0       245
                   14093: ---    32      2       248
                   14094: ---    50      2       249
                   14095: ---    83      0       250
                   14096: ---    57      2       251
                   14097: 0707070014231217101006440057030057030000010642440522627501200002400000003402post.src/devpost/NXname NX
                   14098: fontname NewCenturySchlbk-BoldItalic
                   14099: named in prologue
                   14100: ligatures fi fl 0
                   14101: spacewidth 29
                   14102: charset
                   14103: !      33      2       33
                   14104: "      40      2       34
                   14105: dq     "
                   14106: #      61      2       35
                   14107: $      57      3       36
                   14108: %      89      2       37
                   14109: &      89      2       38
                   14110: '      26      2       39
                   14111: (      41      3       40
                   14112: )      41      3       41
                   14113: *      50      2       42
                   14114: +      61      0       43
                   14115: ,      29      1       44
                   14116: hy     33      0       45
                   14117: -      "
                   14118: .      29      0       46
                   14119: /      28      2       47
                   14120: 0      57      2       48
                   14121: 1      57      2       49
                   14122: 2      57      2       50
                   14123: 3      57      2       51
                   14124: 4      57      2       52
                   14125: 5      57      2       53
                   14126: 6      57      2       54
                   14127: 7      57      2       55
                   14128: 8      57      2       56
                   14129: 9      57      2       57
                   14130: :      29      0       58
                   14131: ;      29      1       59
                   14132: ---    61      0       60
                   14133: =      61      0       61
                   14134: ---    61      0       62
                   14135: ?      48      2       63
                   14136: @      75      2       64
                   14137: A      74      2       65
                   14138: B      76      2       66
                   14139: C      76      2       67
                   14140: D      83      2       68
                   14141: E      74      2       69
                   14142: F      70      2       70
                   14143: G      81      2       71
                   14144: H      87      2       72
                   14145: I      44      2       73
                   14146: J      67      2       74
                   14147: K      78      2       75
                   14148: L      70      2       76
                   14149: M      94      2       77
                   14150: N      85      2       78
                   14151: O      83      2       79
                   14152: P      74      2       80
                   14153: Q      83      3       81
                   14154: R      80      2       82
                   14155: S      69      2       83
                   14156: T      72      2       84
                   14157: U      83      2       85
                   14158: V      74      2       86
                   14159: W      94      2       87
                   14160: X      74      2       88
                   14161: Y      70      2       89
                   14162: Z      70      2       90
                   14163: [      41      3       91
                   14164: \      61      2       92
                   14165: bs     "
                   14166: ]      41      3       93
                   14167: ---    61      2       94
                   14168: ---    50      1       95
                   14169: `      26      2       96
                   14170: a      67      0       97
                   14171: b      61      2       98
                   14172: c      54      0       99
                   14173: d      67      2       100
                   14174: e      52      0       101
                   14175: f      39      3       102
                   14176: g      61      1       103
                   14177: h      69      2       104
                   14178: i      39      2       105
                   14179: j      37      3       106
                   14180: k      65      2       107
                   14181: l      39      2       108
                   14182: m      94      0       109
                   14183: n      69      0       110
                   14184: o      57      0       111
                   14185: p      65      1       112
                   14186: q      63      1       113
                   14187: r      52      0       114
                   14188: s      48      0       115
                   14189: t      41      2       116
                   14190: u      69      0       117
                   14191: v      56      0       118
                   14192: w      83      0       119
                   14193: x      57      0       120
                   14194: y      52      1       121
                   14195: z      52      0       122
                   14196: {      41      3       123
                   14197: ---    61      2       124
                   14198: }      41      3       125
                   14199: ---    61      0       126
                   14200: !!     33      3       161
                   14201: ct     57      3       162
                   14202: ps     57      2       163
                   14203: fr     17      2       164
                   14204: yn     57      2       165
                   14205: fn     57      3       166
                   14206: sc     50      3       167
                   14207: cr     57      2       168
                   14208: ---    29      2       169
                   14209: ``     48      2       170
                   14210: ---    48      0       171
                   14211: ---    28      0       172
                   14212: ---    28      0       173
                   14213: fi     69      3       174
                   14214: fl     69      3       175
                   14215: en     50      0       177
                   14216: \-     "
                   14217: dg     50      3       178
                   14218: dd     50      3       179
                   14219: ---    29      0       180
                   14220: pg     65      2       182
                   14221: ---    61      0       183
                   14222: ---    26      1       184
                   14223: ---    48      1       185
                   14224: ''     48      2       186
                   14225: ---    48      0       187
                   14226: ---    100     0       188
                   14227: ---    117     2       189
                   14228: ??     48      3       191
                   14229: ga     33      2       193
                   14230: \`     "
                   14231: aa     33      2       194
                   14232: \'     "
                   14233: ^a     33      2       195
                   14234: ^      "
                   14235: ~a     33      2       196
                   14236: ~      "
                   14237: -a     33      2       197
                   14238: Ua     33      2       198
                   14239: .a     33      2       199
                   14240: :a     33      2       200
                   14241: oa     33      2       202
                   14242: ,a     33      1       203
                   14243: "a     33      2       205
                   14244: Ca     33      1       206
                   14245: va     33      2       207
                   14246: em     100     0       208
                   14247: ---    89      2       225
                   14248: ---    41      2       227
                   14249: ---    70      2       232
                   14250: ---    83      2       233
                   14251: ---    96      2       234
                   14252: ---    36      2       235
                   14253: ---    81      0       241
                   14254: ---    39      0       245
                   14255: ---    39      2       248
                   14256: ---    57      3       249
                   14257: ---    85      0       250
                   14258: ---    57      3       251
                   14259: 0707070014231217111006440057030057030000010642460522627501200002400000003367post.src/devpost/PAname PA
                   14260: fontname Palatino-Roman
                   14261: named in prologue
                   14262: ligatures fi fl 0
                   14263: spacewidth 25
                   14264: charset
                   14265: !      28      2       33
                   14266: "      37      2       34
                   14267: dq     "
                   14268: #      50      2       35
                   14269: $      50      2       36
                   14270: %      84      2       37
                   14271: &      78      2       38
                   14272: '      28      2       39
                   14273: (      33      2       40
                   14274: )      33      2       41
                   14275: *      39      2       42
                   14276: +      61      0       43
                   14277: ,      25      1       44
                   14278: hy     33      0       45
                   14279: -      "
                   14280: .      25      0       46
                   14281: /      61      2       47
                   14282: 0      50      2       48
                   14283: 1      50      2       49
                   14284: 2      50      2       50
                   14285: 3      50      2       51
                   14286: 4      50      2       52
                   14287: 5      50      2       53
                   14288: 6      50      2       54
                   14289: 7      50      2       55
                   14290: 8      50      2       56
                   14291: 9      50      2       57
                   14292: :      25      0       58
                   14293: ;      25      1       59
                   14294: ---    61      0       60
                   14295: =      61      0       61
                   14296: ---    61      0       62
                   14297: ?      44      2       63
                   14298: @      75      2       64
                   14299: A      78      2       65
                   14300: B      61      2       66
                   14301: C      71      2       67
                   14302: D      77      2       68
                   14303: E      61      2       69
                   14304: F      56      2       70
                   14305: G      76      2       71
                   14306: H      83      2       72
                   14307: I      34      2       73
                   14308: J      33      3       74
                   14309: K      73      2       75
                   14310: L      61      2       76
                   14311: M      95      2       77
                   14312: N      83      2       78
                   14313: O      79      2       79
                   14314: P      60      2       80
                   14315: Q      79      3       81
                   14316: R      67      2       82
                   14317: S      53      2       83
                   14318: T      61      2       84
                   14319: U      78      2       85
                   14320: V      72      2       86
                   14321: W      100     2       87
                   14322: X      67      2       88
                   14323: Y      67      2       89
                   14324: Z      67      2       90
                   14325: [      33      2       91
                   14326: \      61      2       92
                   14327: bs     "
                   14328: ]      33      2       93
                   14329: ---    61      2       94
                   14330: ---    50      1       95
                   14331: `      28      2       96
                   14332: a      50      0       97
                   14333: b      55      2       98
                   14334: c      44      0       99
                   14335: d      61      2       100
                   14336: e      48      0       101
                   14337: f      33      2       102
                   14338: g      56      1       103
                   14339: h      58      2       104
                   14340: i      29      2       105
                   14341: j      23      3       106
                   14342: k      56      2       107
                   14343: l      29      2       108
                   14344: m      88      0       109
                   14345: n      58      0       110
                   14346: o      55      0       111
                   14347: p      60      1       112
                   14348: q      56      1       113
                   14349: r      40      0       114
                   14350: s      42      0       115
                   14351: t      33      2       116
                   14352: u      60      0       117
                   14353: v      56      0       118
                   14354: w      83      0       119
                   14355: x      52      0       120
                   14356: y      56      1       121
                   14357: z      50      0       122
                   14358: {      33      2       123
                   14359: ---    61      2       124
                   14360: }      33      2       125
                   14361: ---    61      0       126
                   14362: !!     28      1       161
                   14363: ct     50      2       162
                   14364: ps     50      2       163
                   14365: fr     17      2       164
                   14366: yn     50      2       165
                   14367: fn     50      3       166
                   14368: sc     50      3       167
                   14369: cr     50      2       168
                   14370: ---    21      2       169
                   14371: ``     50      2       170
                   14372: ---    50      0       171
                   14373: ---    33      0       172
                   14374: ---    33      0       173
                   14375: fi     61      2       174
                   14376: fl     61      2       175
                   14377: en     50      0       177
                   14378: \-     "
                   14379: dg     50      2       178
                   14380: dd     50      3       179
                   14381: ---    25      0       180
                   14382: pg     63      3       182
                   14383: ---    61      0       183
                   14384: ---    28      1       184
                   14385: ---    50      1       185
                   14386: ''     50      2       186
                   14387: ---    50      0       187
                   14388: ---    100     0       188
                   14389: ---    114     2       189
                   14390: ??     44      1       191
                   14391: ga     33      2       193
                   14392: \`     "
                   14393: aa     33      2       194
                   14394: \'     "
                   14395: ^a     33      2       195
                   14396: ^      "
                   14397: ~a     33      2       196
                   14398: ~      "
                   14399: -a     33      2       197
                   14400: Ua     33      2       198
                   14401: .a     25      2       199
                   14402: :a     33      2       200
                   14403: oa     33      2       202
                   14404: ,a     33      1       203
                   14405: "a     38      2       205
                   14406: Ca     31      1       206
                   14407: va     33      2       207
                   14408: em     100     0       208
                   14409: ---    94      2       225
                   14410: ---    33      2       227
                   14411: ---    61      2       232
                   14412: ---    83      2       233
                   14413: ---    100     2       234
                   14414: ---    33      2       235
                   14415: ---    76      0       241
                   14416: ---    29      0       245
                   14417: ---    29      2       248
                   14418: ---    56      0       249
                   14419: ---    83      0       250
                   14420: ---    56      2       251
                   14421: 0707070014231217121006440057030057030000010643200522627501200002400000003370post.src/devpost/PBname PB
                   14422: fontname Palatino-Bold
                   14423: named in prologue
                   14424: ligatures fi fl 0
                   14425: spacewidth 25
                   14426: charset
                   14427: !      28      2       33
                   14428: "      40      2       34
                   14429: dq     "
                   14430: #      50      2       35
                   14431: $      50      2       36
                   14432: %      89      2       37
                   14433: &      83      2       38
                   14434: '      28      2       39
                   14435: (      33      2       40
                   14436: )      33      2       41
                   14437: *      44      2       42
                   14438: +      61      0       43
                   14439: ,      25      1       44
                   14440: hy     33      0       45
                   14441: -      "
                   14442: .      25      0       46
                   14443: /      30      2       47
                   14444: 0      50      2       48
                   14445: 1      50      2       49
                   14446: 2      50      2       50
                   14447: 3      50      2       51
                   14448: 4      50      2       52
                   14449: 5      50      2       53
                   14450: 6      50      2       54
                   14451: 7      50      2       55
                   14452: 8      50      2       56
                   14453: 9      50      2       57
                   14454: :      25      0       58
                   14455: ;      25      1       59
                   14456: ---    61      0       60
                   14457: =      61      0       61
                   14458: ---    61      0       62
                   14459: ?      44      2       63
                   14460: @      75      2       64
                   14461: A      78      2       65
                   14462: B      67      2       66
                   14463: C      72      2       67
                   14464: D      83      2       68
                   14465: E      61      2       69
                   14466: F      56      2       70
                   14467: G      83      2       71
                   14468: H      83      2       72
                   14469: I      39      2       73
                   14470: J      39      3       74
                   14471: K      78      2       75
                   14472: L      61      2       76
                   14473: M      100     2       77
                   14474: N      83      2       78
                   14475: O      83      2       79
                   14476: P      61      2       80
                   14477: Q      83      3       81
                   14478: R      72      2       82
                   14479: S      61      2       83
                   14480: T      67      2       84
                   14481: U      78      2       85
                   14482: V      78      2       86
                   14483: W      100     2       87
                   14484: X      67      2       88
                   14485: Y      67      2       89
                   14486: Z      67      2       90
                   14487: [      33      2       91
                   14488: \      61      2       92
                   14489: bs     "
                   14490: ]      33      2       93
                   14491: ---    61      2       94
                   14492: ---    50      1       95
                   14493: `      28      2       96
                   14494: a      50      0       97
                   14495: b      61      2       98
                   14496: c      44      0       99
                   14497: d      61      2       100
                   14498: e      50      0       101
                   14499: f      39      2       102
                   14500: g      56      1       103
                   14501: h      61      2       104
                   14502: i      33      2       105
                   14503: j      33      3       106
                   14504: k      61      2       107
                   14505: l      33      2       108
                   14506: m      89      0       109
                   14507: n      61      0       110
                   14508: o      56      0       111
                   14509: p      61      1       112
                   14510: q      61      1       113
                   14511: r      39      0       114
                   14512: s      44      0       115
                   14513: t      33      2       116
                   14514: u      61      0       117
                   14515: v      56      0       118
                   14516: w      83      0       119
                   14517: x      50      0       120
                   14518: y      56      1       121
                   14519: z      50      0       122
                   14520: {      31      2       123
                   14521: ---    61      2       124
                   14522: }      31      2       125
                   14523: ---    61      0       126
                   14524: !!     28      1       161
                   14525: ct     50      2       162
                   14526: ps     50      2       163
                   14527: fr     17      2       164
                   14528: yn     50      2       165
                   14529: fn     50      3       166
                   14530: sc     50      3       167
                   14531: cr     50      2       168
                   14532: ---    23      2       169
                   14533: ``     50      2       170
                   14534: ---    50      0       171
                   14535: ---    39      0       172
                   14536: ---    39      0       173
                   14537: fi     61      2       174
                   14538: fl     61      2       175
                   14539: en     50      0       177
                   14540: \-     "
                   14541: dg     50      2       178
                   14542: dd     50      3       179
                   14543: ---    25      0       180
                   14544: pg     64      3       182
                   14545: ---    61      0       183
                   14546: ---    33      1       184
                   14547: ---    50      1       185
                   14548: ''     50      2       186
                   14549: ---    50      0       187
                   14550: ---    100     0       188
                   14551: ---    100     2       189
                   14552: ??     44      1       191
                   14553: ga     33      2       193
                   14554: \`     "
                   14555: aa     33      2       194
                   14556: \'     "
                   14557: ^a     33      2       195
                   14558: ^      "
                   14559: ~a     33      2       196
                   14560: ~      "
                   14561: -a     33      2       197
                   14562: Ua     33      2       198
                   14563: .a     33      2       199
                   14564: :a     33      2       200
                   14565: oa     33      2       202
                   14566: ,a     33      1       203
                   14567: "a     33      2       205
                   14568: Ca     33      1       206
                   14569: va     33      2       207
                   14570: em     100     0       208
                   14571: ---    100     2       225
                   14572: ---    44      2       227
                   14573: ---    61      2       232
                   14574: ---    83      2       233
                   14575: ---    100     2       234
                   14576: ---    49      2       235
                   14577: ---    78      0       241
                   14578: ---    33      0       245
                   14579: ---    33      2       248
                   14580: ---    56      0       249
                   14581: ---    83      0       250
                   14582: ---    61      2       251
                   14583: 0707070014231217131006440057030057030000010643220522627501200002400000003367post.src/devpost/PIname PI
                   14584: fontname Palatino-Italic
                   14585: named in prologue
                   14586: ligatures fi fl 0
                   14587: spacewidth 25
                   14588: charset
                   14589: !      33      2       33
                   14590: "      50      2       34
                   14591: dq     "
                   14592: #      50      2       35
                   14593: $      50      2       36
                   14594: %      89      2       37
                   14595: &      78      2       38
                   14596: '      28      2       39
                   14597: (      33      2       40
                   14598: )      33      2       41
                   14599: *      39      2       42
                   14600: +      61      0       43
                   14601: ,      25      1       44
                   14602: hy     33      0       45
                   14603: -      "
                   14604: .      25      0       46
                   14605: /      30      3       47
                   14606: 0      50      2       48
                   14607: 1      50      2       49
                   14608: 2      50      2       50
                   14609: 3      50      2       51
                   14610: 4      50      2       52
                   14611: 5      50      2       53
                   14612: 6      50      2       54
                   14613: 7      50      2       55
                   14614: 8      50      2       56
                   14615: 9      50      2       57
                   14616: :      25      0       58
                   14617: ;      25      1       59
                   14618: ---    61      0       60
                   14619: =      61      0       61
                   14620: ---    61      0       62
                   14621: ?      50      2       63
                   14622: @      75      2       64
                   14623: A      72      2       65
                   14624: B      61      2       66
                   14625: C      67      2       67
                   14626: D      78      2       68
                   14627: E      61      2       69
                   14628: F      56      2       70
                   14629: G      72      2       71
                   14630: H      78      2       72
                   14631: I      33      2       73
                   14632: J      33      3       74
                   14633: K      67      2       75
                   14634: L      56      2       76
                   14635: M      94      2       77
                   14636: N      78      2       78
                   14637: O      78      2       79
                   14638: P      61      2       80
                   14639: Q      78      3       81
                   14640: R      67      2       82
                   14641: S      56      2       83
                   14642: T      61      2       84
                   14643: U      78      2       85
                   14644: V      72      2       86
                   14645: W      94      2       87
                   14646: X      72      2       88
                   14647: Y      67      2       89
                   14648: Z      67      2       90
                   14649: [      33      2       91
                   14650: \      61      2       92
                   14651: bs     "
                   14652: ]      33      2       93
                   14653: ---    61      2       94
                   14654: ---    50      1       95
                   14655: `      28      2       96
                   14656: a      44      0       97
                   14657: b      46      2       98
                   14658: c      41      0       99
                   14659: d      50      2       100
                   14660: e      39      0       101
                   14661: f      28      3       102
                   14662: g      50      1       103
                   14663: h      50      2       104
                   14664: i      28      2       105
                   14665: j      28      3       106
                   14666: k      44      2       107
                   14667: l      28      2       108
                   14668: m      78      0       109
                   14669: n      56      0       110
                   14670: o      44      0       111
                   14671: p      50      1       112
                   14672: q      46      1       113
                   14673: r      39      0       114
                   14674: s      39      0       115
                   14675: t      33      2       116
                   14676: u      56      0       117
                   14677: v      50      0       118
                   14678: w      72      0       119
                   14679: x      50      0       120
                   14680: y      50      1       121
                   14681: z      44      0       122
                   14682: {      33      2       123
                   14683: ---    61      2       124
                   14684: }      33      2       125
                   14685: ---    61      0       126
                   14686: !!     33      1       161
                   14687: ct     50      2       162
                   14688: ps     50      2       163
                   14689: fr     17      2       164
                   14690: yn     50      2       165
                   14691: fn     50      3       166
                   14692: sc     50      3       167
                   14693: cr     50      2       168
                   14694: ---    33      2       169
                   14695: ``     50      2       170
                   14696: ---    50      0       171
                   14697: ---    33      0       172
                   14698: ---    33      0       173
                   14699: fi     53      3       174
                   14700: fl     54      3       175
                   14701: en     50      0       177
                   14702: \-     "
                   14703: dg     50      2       178
                   14704: dd     50      3       179
                   14705: ---    25      0       180
                   14706: pg     50      3       182
                   14707: ---    50      0       183
                   14708: ---    28      0       184
                   14709: ---    50      0       185
                   14710: ''     50      2       186
                   14711: ---    50      0       187
                   14712: ---    100     0       188
                   14713: ---    100     2       189
                   14714: ??     50      1       191
                   14715: ga     33      2       193
                   14716: \`     "
                   14717: aa     33      2       194
                   14718: \'     "
                   14719: ^a     33      2       195
                   14720: ^      "
                   14721: ~a     33      2       196
                   14722: ~      "
                   14723: -a     33      2       197
                   14724: Ua     33      2       198
                   14725: .a     33      2       199
                   14726: :a     33      2       200
                   14727: oa     33      2       202
                   14728: ,a     33      1       203
                   14729: "a     33      2       205
                   14730: Ca     33      1       206
                   14731: va     33      2       207
                   14732: em     100     0       208
                   14733: ---    94      2       225
                   14734: ---    33      2       227
                   14735: ---    56      2       232
                   14736: ---    78      2       233
                   14737: ---    103     2       234
                   14738: ---    33      2       235
                   14739: ---    64      0       241
                   14740: ---    28      0       245
                   14741: ---    28      2       248
                   14742: ---    44      0       249
                   14743: ---    67      0       250
                   14744: ---    50      3       251
                   14745: 0707070014231217141006440057030057030000010643240522627501200002400000003373post.src/devpost/PXname PX
                   14746: fontname Palatino-BoldItalic
                   14747: named in prologue
                   14748: ligatures fi fl 0
                   14749: spacewidth 25
                   14750: charset
                   14751: !      33      2       33
                   14752: "      50      2       34
                   14753: dq     "
                   14754: #      50      2       35
                   14755: $      50      2       36
                   14756: %      89      2       37
                   14757: &      83      2       38
                   14758: '      28      2       39
                   14759: (      33      2       40
                   14760: )      33      2       41
                   14761: *      44      2       42
                   14762: +      61      0       43
                   14763: ,      25      1       44
                   14764: hy     39      0       45
                   14765: -      "
                   14766: .      25      0       46
                   14767: /      32      2       47
                   14768: 0      50      2       48
                   14769: 1      50      2       49
                   14770: 2      50      2       50
                   14771: 3      50      2       51
                   14772: 4      50      2       52
                   14773: 5      50      2       53
                   14774: 6      50      2       54
                   14775: 7      50      2       55
                   14776: 8      50      2       56
                   14777: 9      50      2       57
                   14778: :      25      0       58
                   14779: ;      25      1       59
                   14780: ---    61      0       60
                   14781: =      61      0       61
                   14782: ---    61      0       62
                   14783: ?      44      2       63
                   14784: @      83      2       64
                   14785: A      72      2       65
                   14786: B      67      2       66
                   14787: C      69      2       67
                   14788: D      78      2       68
                   14789: E      61      2       69
                   14790: F      56      2       70
                   14791: G      78      2       71
                   14792: H      78      2       72
                   14793: I      39      2       73
                   14794: J      39      3       74
                   14795: K      72      2       75
                   14796: L      61      2       76
                   14797: M      94      2       77
                   14798: N      78      2       78
                   14799: O      83      2       79
                   14800: P      67      2       80
                   14801: Q      83      3       81
                   14802: R      72      2       82
                   14803: S      56      2       83
                   14804: T      61      2       84
                   14805: U      78      2       85
                   14806: V      67      2       86
                   14807: W      100     2       87
                   14808: X      72      2       88
                   14809: Y      61      2       89
                   14810: Z      67      2       90
                   14811: [      33      2       91
                   14812: \      61      2       92
                   14813: bs     "
                   14814: ]      33      2       93
                   14815: ---    61      2       94
                   14816: ---    50      1       95
                   14817: `      28      2       96
                   14818: a      56      0       97
                   14819: b      54      2       98
                   14820: c      44      0       99
                   14821: d      56      2       100
                   14822: e      44      0       101
                   14823: f      33      3       102
                   14824: g      50      1       103
                   14825: h      56      2       104
                   14826: i      33      2       105
                   14827: j      33      3       106
                   14828: k      56      2       107
                   14829: l      33      2       108
                   14830: m      83      0       109
                   14831: n      56      0       110
                   14832: o      56      0       111
                   14833: p      56      1       112
                   14834: q      54      1       113
                   14835: r      39      0       114
                   14836: s      44      0       115
                   14837: t      39      2       116
                   14838: u      56      0       117
                   14839: v      56      0       118
                   14840: w      83      0       119
                   14841: x      50      0       120
                   14842: y      56      1       121
                   14843: z      50      0       122
                   14844: {      33      2       123
                   14845: ---    61      2       124
                   14846: }      33      2       125
                   14847: ---    61      0       126
                   14848: !!     33      1       161
                   14849: ct     50      2       162
                   14850: ps     50      2       163
                   14851: fr     17      2       164
                   14852: yn     50      2       165
                   14853: fn     50      3       166
                   14854: sc     56      3       167
                   14855: cr     50      2       168
                   14856: ---    25      2       169
                   14857: ``     50      2       170
                   14858: ---    50      0       171
                   14859: ---    33      0       172
                   14860: ---    33      0       173
                   14861: fi     61      3       174
                   14862: fl     61      3       175
                   14863: en     50      0       177
                   14864: \-     "
                   14865: dg     56      2       178
                   14866: dd     56      3       179
                   14867: ---    25      0       180
                   14868: pg     56      3       182
                   14869: ---    61      0       183
                   14870: ---    25      1       184
                   14871: ---    50      1       185
                   14872: ''     50      2       186
                   14873: ---    50      0       187
                   14874: ---    100     0       188
                   14875: ---    100     2       189
                   14876: ??     44      1       191
                   14877: ga     33      2       193
                   14878: \`     "
                   14879: aa     33      2       194
                   14880: \'     "
                   14881: ^a     33      2       195
                   14882: ^      "
                   14883: ~a     33      2       196
                   14884: ~      "
                   14885: -a     33      2       197
                   14886: Ua     33      2       198
                   14887: .a     33      2       199
                   14888: :a     33      2       200
                   14889: oa     56      2       202
                   14890: ,a     33      1       203
                   14891: "a     33      2       205
                   14892: Ca     33      1       206
                   14893: va     33      2       207
                   14894: em     100     0       208
                   14895: ---    94      2       225
                   14896: ---    33      2       227
                   14897: ---    61      2       232
                   14898: ---    83      2       233
                   14899: ---    94      2       234
                   14900: ---    33      2       235
                   14901: ---    74      0       241
                   14902: ---    33      0       245
                   14903: ---    33      2       248
                   14904: ---    56      0       249
                   14905: ---    78      0       250
                   14906: ---    56      3       251
                   14907: 0707070014231217151006440057030057030000010643260522627501200002300000003361post.src/devpost/Rname R
                   14908: fontname Times-Roman
                   14909: named in prologue
                   14910: ligatures fi fl 0
                   14911: spacewidth 25
                   14912: charset
                   14913: !      33      2       33
                   14914: "      41      2       34
                   14915: dq     "
                   14916: #      50      2       35
                   14917: $      50      2       36
                   14918: %      83      2       37
                   14919: &      78      2       38
                   14920: '      33      2       39
                   14921: (      33      3       40
                   14922: )      33      3       41
                   14923: *      50      2       42
                   14924: +      56      0       43
                   14925: ,      25      1       44
                   14926: hy     33      0       45
                   14927: -      "
                   14928: .      25      0       46
                   14929: /      28      2       47
                   14930: 0      50      2       48
                   14931: 1      50      2       49
                   14932: 2      50      2       50
                   14933: 3      50      2       51
                   14934: 4      50      2       52
                   14935: 5      50      2       53
                   14936: 6      50      2       54
                   14937: 7      50      2       55
                   14938: 8      50      2       56
                   14939: 9      50      2       57
                   14940: :      28      0       58
                   14941: ;      28      1       59
                   14942: ---    56      2       60
                   14943: =      56      0       61
                   14944: ---    56      2       62
                   14945: ?      44      2       63
                   14946: @      92      3       64
                   14947: A      72      2       65
                   14948: B      67      2       66
                   14949: C      67      2       67
                   14950: D      72      2       68
                   14951: E      61      2       69
                   14952: F      56      2       70
                   14953: G      72      2       71
                   14954: H      72      2       72
                   14955: I      33      2       73
                   14956: J      39      2       74
                   14957: K      72      2       75
                   14958: L      61      2       76
                   14959: M      89      2       77
                   14960: N      72      2       78
                   14961: O      72      2       79
                   14962: P      56      2       80
                   14963: Q      72      3       81
                   14964: R      67      2       82
                   14965: S      56      2       83
                   14966: T      61      2       84
                   14967: U      72      2       85
                   14968: V      72      2       86
                   14969: W      94      2       87
                   14970: X      72      2       88
                   14971: Y      72      2       89
                   14972: Z      61      2       90
                   14973: [      33      3       91
                   14974: \      28      2       92
                   14975: bs     "
                   14976: ]      33      3       93
                   14977: ---    47      2       94
                   14978: ---    50      1       95
                   14979: `      33      2       96
                   14980: a      44      0       97
                   14981: b      50      2       98
                   14982: c      44      0       99
                   14983: d      50      2       100
                   14984: e      44      0       101
                   14985: f      33      2       102
                   14986: g      50      1       103
                   14987: h      50      2       104
                   14988: i      28      2       105
                   14989: j      28      3       106
                   14990: k      50      2       107
                   14991: l      28      2       108
                   14992: m      78      0       109
                   14993: n      50      0       110
                   14994: o      50      0       111
                   14995: p      50      1       112
                   14996: q      50      1       113
                   14997: r      33      0       114
                   14998: s      39      0       115
                   14999: t      28      2       116
                   15000: u      50      0       117
                   15001: v      50      0       118
                   15002: w      72      0       119
                   15003: x      50      0       120
                   15004: y      50      1       121
                   15005: z      44      0       122
                   15006: {      48      3       123
                   15007: ---    20      2       124
                   15008: }      48      3       125
                   15009: ---    54      0       126
                   15010: !!     33      1       161
                   15011: ct     50      3       162
                   15012: ps     50      2       163
                   15013: fr     17      2       164
                   15014: yn     50      2       165
                   15015: fn     50      3       166
                   15016: sc     50      3       167
                   15017: cr     50      2       168
                   15018: ---    18      2       169
                   15019: ``     44      2       170
                   15020: ---    50      0       171
                   15021: ---    33      0       172
                   15022: ---    33      0       173
                   15023: fi     56      2       174
                   15024: fl     56      2       175
                   15025: en     50      0       177
                   15026: \-     "
                   15027: dg     50      3       178
                   15028: dd     50      3       179
                   15029: ---    25      0       180
                   15030: pg     45      3       182
                   15031: ---    35      0       183
                   15032: ---    33      1       184
                   15033: ---    44      1       185
                   15034: ''     44      2       186
                   15035: ---    50      0       187
                   15036: ---    100     0       188
                   15037: ---    100     2       189
                   15038: ??     44      1       191
                   15039: ga     33      2       193
                   15040: \`     "
                   15041: aa     33      2       194
                   15042: \'     "
                   15043: ^a     33      2       195
                   15044: ^      "
                   15045: ~a     33      2       196
                   15046: ~      "
                   15047: -a     33      2       197
                   15048: Ua     33      2       198
                   15049: .a     33      2       199
                   15050: :a     33      2       200
                   15051: oa     33      2       202
                   15052: ,a     33      1       203
                   15053: "a     33      2       205
                   15054: Ca     33      1       206
                   15055: va     33      2       207
                   15056: em     100     0       208
                   15057: ---    89      2       225
                   15058: ---    28      2       227
                   15059: ---    61      2       232
                   15060: ---    72      2       233
                   15061: ---    89      2       234
                   15062: ---    31      2       235
                   15063: ---    67      0       241
                   15064: ---    28      0       245
                   15065: ---    28      2       248
                   15066: ---    50      2       249
                   15067: ---    72      0       250
                   15068: ---    50      2       251
                   15069: 0707070014231217161006440057030057030000010643400522627501200002300000004400post.src/devpost/Sname S
                   15070: fontname Symbol
                   15071: named in prologue
                   15072: special
                   15073: charset
                   15074: ---    33      2       33
                   15075: fa     71      2       34
                   15076: ---    50      2       35
                   15077: te     55      2       36
                   15078: ---    83      2       37
                   15079: ---    78      2       38
                   15080: st     44      0       39
                   15081: ---    33      3       40
                   15082: ---    33      3       41
                   15083: **     50      2       42
                   15084: pl     55      0       43
                   15085: ---    25      1       44
                   15086: mi     55      0       45
                   15087: ---    25      0       46
                   15088: sl     28      2       47
                   15089: ---    50      2       48
                   15090: ---    50      2       49
                   15091: ---    50      2       50
                   15092: ---    50      2       51
                   15093: ---    50      2       52
                   15094: ---    50      2       53
                   15095: ---    50      2       54
                   15096: ---    50      2       55
                   15097: ---    50      2       56
                   15098: ---    50      2       57
                   15099: ---    28      0       58
                   15100: ---    28      1       59
                   15101: <      55      0       60
                   15102: eq     55      0       61
                   15103: >      55      0       62
                   15104: ---    44      2       63
                   15105: cg     55      0       64
                   15106: *A     72      2       65
                   15107: *B     67      2       66
                   15108: *X     72      2       67
                   15109: *D     61      2       68
                   15110: *E     61      2       69
                   15111: *F     76      2       70
                   15112: *G     60      2       71
                   15113: *Y     72      2       72
                   15114: *I     33      2       73
                   15115: ---    63      2       74
                   15116: *K     72      2       75
                   15117: *L     69      2       76
                   15118: *M     89      2       77
                   15119: *N     72      2       78
                   15120: *O     72      2       79
                   15121: *P     77      2       80
                   15122: *H     74      2       81
                   15123: *R     56      2       82
                   15124: *S     59      2       83
                   15125: *T     61      2       84
                   15126: *U     69      2       85
                   15127: ts     44      1       86
                   15128: *W     77      2       87
                   15129: *C     65      2       88
                   15130: *Q     80      2       89
                   15131: *Z     61      2       90
                   15132: ---    33      3       91
                   15133: tf     86      0       92
                   15134: ---    33      3       93
                   15135: pp     66      2       94
                   15136: ul     50      1       95
                   15137: _      "
                   15138: rn     50      2       96
                   15139: *a     63      0       97
                   15140: *b     55      3       98
                   15141: *x     55      1       99
                   15142: *d     49      2       100
                   15143: *e     44      0       101
                   15144: *f     52      3       102
                   15145: *g     41      1       103
                   15146: *y     60      1       104
                   15147: *i     33      0       105
                   15148: ---    60      1       106
                   15149: *k     55      0       107
                   15150: *l     55      2       108
                   15151: *m     58      1       109
                   15152: *n     52      0       110
                   15153: *o     55      0       111
                   15154: *p     55      0       112
                   15155: *h     52      2       113
                   15156: *r     55      1       114
                   15157: *s     60      0       115
                   15158: *t     44      0       116
                   15159: *u     58      0       117
                   15160: ---    71      2       118
                   15161: *w     69      0       119
                   15162: *c     49      3       120
                   15163: *q     69      1       121
                   15164: *z     49      3       122
                   15165: ---    48      3       123
                   15166: or     20      3       124
                   15167: ---    48      3       125
                   15168: ap     55      0       126
                   15169: ---    62      2       161
                   15170: fm     25      2       162
                   15171: <=     55      2       163
                   15172: ---    17      2       164
                   15173: if     73      0       165
                   15174: ---    50      3       166
                   15175: ---    75      0       167
                   15176: ---    75      2       168
                   15177: ---    75      0       169
                   15178: ---    75      2       170
                   15179: ab     104     0       171
                   15180: <-     99      0       172
                   15181: ua     60      2       173
                   15182: ->     99      0       174
                   15183: da     60      2       175
                   15184: de     40      2       176
                   15185: +-     55      2       177
                   15186: ---    41      2       178
                   15187: >=     55      2       179
                   15188: mu     55      0       180
                   15189: pt     71      0       181
                   15190: pd     49      2       182
                   15191: bu     46      0       183
                   15192: di     55      0       184
                   15193: !=     55      2       185
                   15194: ==     55      0       186
                   15195: ~~     55      0       187
                   15196: el     100     0       188
                   15197: av     60      3       189
                   15198: ah     100     0       190
                   15199: CR     66      2       191
                   15200: af     82      2       192
                   15201: If     69      2       193
                   15202: Rf     80      2       194
                   15203: ws     99      3       195
                   15204: Ox     77      2       196
                   15205: O+     77      2       197
                   15206: es     82      2       198
                   15207: ca     77      0       199
                   15208: cu     77      0       200
                   15209: sp     71      0       201
                   15210: ip     71      1       202
                   15211: !b     71      0       203
                   15212: sb     71      0       204
                   15213: ib     71      1       205
                   15214: mo     71      0       206
                   15215: !m     71      2       207
                   15216: an     77      2       208
                   15217: gr     71      2       209
                   15218: rg     79      2       210
                   15219: co     79      2       211
                   15220: tm     89      2       212
                   15221: ---    82      2       213
                   15222: sr     55      2       214
                   15223: c.     25      0       215
                   15224: no     71      0       216
                   15225: l&     60      0       217
                   15226: l|     60      0       218
                   15227: ---    104     0       219
                   15228: ---    99      0       220
                   15229: ---    60      2       221
                   15230: ---    99      0       222
                   15231: ---    60      2       223
                   15232: lz     49      2       224
                   15233: b<     33      3       225
                   15234: RG     79      2       226
                   15235: CO     79      2       227
                   15236: TM     79      2       228
                   15237: ---    71      2       229
                   15238: LT     38      3       230
                   15239: br     0       3       231
                   15240: LX     "
                   15241: LB     38      3       232
                   15242: lc     50      2       233
                   15243: lx     38      2       234
                   15244: lf     50      2       235
                   15245: lt     49      2       236
                   15246: lk     49      2       237
                   15247: lb     49      2       238
                   15248: bv     49      2       239
                   15249: |      "
                   15250: b>     33      3       241
                   15251: is     50      3       242
                   15252: ---    69      2       243
                   15253: ---    69      2       244
                   15254: ---    69      2       245
                   15255: RT     38      3       246
                   15256: RX     38      2       247
                   15257: RB     38      3       248
                   15258: rc     38      2       249
                   15259: rx     50      3       250
                   15260: rf     38      2       251
                   15261: rt     49      2       252
                   15262: rk     49      2       253
                   15263: rb     49      2       254
                   15264: ~=     55      0       1
                   15265: 0707070014231217171006440057030057030000010643430522627501200002400000000501post.src/devpost/S1# Times-Roman special font
                   15266: name S1
                   15267: fontname Times-Roman
                   15268: named in prologue
                   15269: special
                   15270: charset
                   15271: ru     50      0       95
                   15272: ff     60      2       1
                   15273: Fi     84      2       1
                   15274: Fl     84      2       1
                   15275: 14     75      2       1
                   15276: 12     75      2       1
                   15277: 34     75      2       1
                   15278: bx     50      2       1
                   15279: ob     38      2       1
                   15280: ci     75      0       1
                   15281: sq     50      2       1
                   15282: Sl     50      2       1
                   15283: L1     110     1       1
                   15284: LA     110     1       1
                   15285: LV     110     3       1
                   15286: LH     210     1       1
                   15287: lh     100     0       1
                   15288: rh     100     0       1
                   15289: lH     100     0       1
                   15290: rH     100     0       1
                   15291: PC     220     2       1
                   15292: DG     185     2       1
                   15293: 0707070014231217201006440057030057030000010643440522627501200002400000004134post.src/devpost/ZDname ZD
                   15294: fontname ZapfDingbats
                   15295: named in prologue
                   15296: charset
                   15297: !      97      2       33
                   15298: "      96      2       34
                   15299: #      97      2       35
                   15300: $      98      3       36
                   15301: %      72      2       37
                   15302: &      79      3       38
                   15303: '      79      3       39
                   15304: (      79      3       40
                   15305: )      69      2       41
                   15306: *      96      2       42
                   15307: +      94      2       43
                   15308: ,      55      3       44
                   15309: -      86      2       45
                   15310: .      91      2       46
                   15311: /      93      2       47
                   15312: 0      91      2       48
                   15313: 1      94      2       49
                   15314: 2      97      2       50
                   15315: 3      76      3       51
                   15316: 4      85      3       52
                   15317: 5      76      2       53
                   15318: 6      76      2       54
                   15319: 7      57      3       55
                   15320: 8      68      3       56
                   15321: 9      76      2       57
                   15322: :      76      2       58
                   15323: ;      76      2       59
                   15324: <      75      3       60
                   15325: =      49      2       61
                   15326: >      55      2       62
                   15327: ?      54      3       63
                   15328: @      58      2       64
                   15329: A      69      3       65
                   15330: B      79      3       66
                   15331: C      79      3       67
                   15332: D      79      3       68
                   15333: E      79      3       69
                   15334: F      79      3       70
                   15335: G      79      3       71
                   15336: H      82      3       72
                   15337: I      82      3       73
                   15338: J      79      3       74
                   15339: K      84      3       75
                   15340: L      82      3       76
                   15341: M      83      3       77
                   15342: N      82      3       78
                   15343: O      83      3       79
                   15344: P      92      3       80
                   15345: Q      74      2       81
                   15346: R      72      2       82
                   15347: S      75      2       83
                   15348: T      79      3       84
                   15349: U      79      3       85
                   15350: V      69      3       86
                   15351: W      78      3       87
                   15352: X      77      3       88
                   15353: Y      79      3       89
                   15354: Z      76      2       90
                   15355: [      71      3       91
                   15356: \      71      3       92
                   15357: ]      68      3       93
                   15358: ^      70      3       94
                   15359: _      83      3       95
                   15360: `      81      3       96
                   15361: a      79      3       97
                   15362: b      79      3       98
                   15363: c      71      3       99
                   15364: d      69      2       100
                   15365: e      70      2       101
                   15366: f      69      2       102
                   15367: g      79      3       103
                   15368: h      79      3       104
                   15369: i      71      3       105
                   15370: j      79      3       106
                   15371: k      78      3       107
                   15372: l      79      3       108
                   15373: m      87      3       109
                   15374: n      76      2       110
                   15375: o      76      2       111
                   15376: p      76      2       112
                   15377: q      76      3       113
                   15378: r      76      3       114
                   15379: s      89      2       115
                   15380: t      89      3       116
                   15381: u      79      3       117
                   15382: v      78      3       118
                   15383: w      44      3       119
                   15384: x      14      2       120
                   15385: y      28      2       121
                   15386: z      41      2       122
                   15387: {      39      2       123
                   15388: |      39      2       124
                   15389: }      67      2       125
                   15390: ~      67      2       126
                   15391: hy     73      3       161
                   15392: em     54      3       162
                   15393: de     54      3       163
                   15394: \-     91      2       164
                   15395: en     67      3       165
                   15396: ff     76      3       166
                   15397: fi     76      2       167
                   15398: fl     78      2       168
                   15399: Fi     60      3       169
                   15400: Fl     69      3       170
                   15401: fm     63      3       171
                   15402: ru     79      3       172
                   15403: dg     79      3       173
                   15404: bu     79      3       174
                   15405: 14     79      3       175
                   15406: 34     79      3       176
                   15407: 12     79      3       177
                   15408: ct     79      3       178
                   15409: rg     79      3       179
                   15410: sq     79      3       180
                   15411: sl     79      3       181
                   15412: ul     79      3       182
                   15413: or     79      3       183
                   15414: no     79      3       184
                   15415: ->     79      3       185
                   15416: <-     79      3       186
                   15417: da     79      3       187
                   15418: lh     79      3       188
                   15419: ua     79      3       189
                   15420: ab     79      3       190
                   15421: !b     79      3       191
                   15422: aa     79      3       192
                   15423: !m     79      3       193
                   15424: ga     79      3       194
                   15425: pl     79      3       195
                   15426: mi     79      3       196
                   15427: mu     79      3       197
                   15428: di     79      3       198
                   15429: eq     79      3       199
                   15430: ==     79      3       200
                   15431: >=     79      3       201
                   15432: <=     79      3       202
                   15433: !=     79      3       203
                   15434: +-     79      3       204
                   15435: -+     79      3       205
                   15436: ap     79      3       206
                   15437: ~=     79      3       207
                   15438: gr     79      3       208
                   15439: is     79      3       209
                   15440: pd     79      3       210
                   15441: if     79      3       211
                   15442: sr     89      2       212
                   15443: rn     84      2       213
                   15444: sb     102     2       214
                   15445: sp     46      3       215
                   15446: cu     75      2       216
                   15447: ca     92      2       217
                   15448: ib     75      2       218
                   15449: ip     92      2       219
                   15450: mo     93      2       220
                   15451: es     93      2       221
                   15452: sc     93      2       222
                   15453: dd     83      2       223
                   15454: lc     87      2       224
                   15455: rc     83      2       225
                   15456: lf     92      2       226
                   15457: rf     92      2       227
                   15458: bv     92      2       228
                   15459: **     93      2       229
                   15460: br     93      2       230
                   15461: ci     46      3       231
                   15462: ts     88      2       232
                   15463: co     84      2       233
                   15464: lt     84      2       234
                   15465: rt     87      2       235
                   15466: lb     87      2       236
                   15467: rb     70      2       237
                   15468: lk     70      2       238
                   15469: rk     87      2       239
                   15470: rh     87      2       241
                   15471: tm     76      2       242
                   15472: Sl     95      2       243
                   15473: ps     77      2       244
                   15474: cs     86      2       245
                   15475: cy     77      2       246
                   15476: as     89      3       247
                   15477: os     97      2       248
                   15478: =.     89      3       249
                   15479: ld     83      2       250
                   15480: rd     87      2       251
                   15481: le     93      2       252
                   15482: ge     97      2       253
                   15483: pp     92      2       254
                   15484: 0707070014231217211006440057030057030000010643600522627501200002400000003376post.src/devpost/ZIname ZI
                   15485: fontname ZapfChancery-MediumItalic
                   15486: named in prologue
                   15487: ligatures fi fl 0
                   15488: spacewidth 22
                   15489: charset
                   15490: !      28      2       33
                   15491: "      22      2       34
                   15492: dq     "
                   15493: #      68      2       35
                   15494: $      44      3       36
                   15495: %      68      2       37
                   15496: &      78      2       38
                   15497: '      24      2       39
                   15498: (      26      3       40
                   15499: )      22      3       41
                   15500: *      42      2       42
                   15501: +      52      0       43
                   15502: ,      22      0       44
                   15503: hy     28      0       45
                   15504: -      "
                   15505: .      22      0       46
                   15506: /      34      3       47
                   15507: 0      44      2       48
                   15508: 1      44      2       49
                   15509: 2      44      2       50
                   15510: 3      44      2       51
                   15511: 4      44      2       52
                   15512: 5      44      2       53
                   15513: 6      44      2       54
                   15514: 7      44      2       55
                   15515: 8      44      2       56
                   15516: 9      44      2       57
                   15517: :      26      0       58
                   15518: ;      24      0       59
                   15519: ---    52      0       60
                   15520: =      52      0       61
                   15521: ---    52      0       62
                   15522: ?      38      2       63
                   15523: @      70      2       64
                   15524: A      62      2       65
                   15525: B      60      2       66
                   15526: C      52      2       67
                   15527: D      70      2       68
                   15528: E      62      2       69
                   15529: F      58      2       70
                   15530: G      62      3       71
                   15531: H      68      2       72
                   15532: I      38      2       73
                   15533: J      40      2       74
                   15534: K      66      3       75
                   15535: L      58      2       76
                   15536: M      84      2       77
                   15537: N      70      3       78
                   15538: O      60      2       79
                   15539: P      54      2       80
                   15540: Q      60      3       81
                   15541: R      60      3       82
                   15542: S      46      2       83
                   15543: T      50      2       84
                   15544: U      74      2       85
                   15545: V      64      2       86
                   15546: W      88      2       87
                   15547: X      56      2       88
                   15548: Y      56      3       89
                   15549: Z      62      2       90
                   15550: [      24      3       91
                   15551: \      48      2       92
                   15552: bs     "
                   15553: ]      32      3       93
                   15554: ---    52      2       94
                   15555: ---    50      1       95
                   15556: `      24      2       96
                   15557: a      42      0       97
                   15558: b      42      2       98
                   15559: c      34      0       99
                   15560: d      44      2       100
                   15561: e      34      0       101
                   15562: f      32      3       102
                   15563: g      40      1       103
                   15564: h      44      2       104
                   15565: i      24      2       105
                   15566: j      22      3       106
                   15567: k      44      3       107
                   15568: l      24      2       108
                   15569: m      62      0       109
                   15570: n      46      0       110
                   15571: o      40      0       111
                   15572: p      44      1       112
                   15573: q      40      3       113
                   15574: r      30      0       114
                   15575: s      32      0       115
                   15576: t      32      2       116
                   15577: u      46      0       117
                   15578: v      44      0       118
                   15579: w      68      0       119
                   15580: x      42      1       120
                   15581: y      40      1       121
                   15582: z      44      0       122
                   15583: {      24      3       123
                   15584: ---    52      2       124
                   15585: }      24      3       125
                   15586: ---    52      0       126
                   15587: !!     28      1       161
                   15588: ct     44      2       162
                   15589: ps     48      2       163
                   15590: fr     6       2       164
                   15591: yn     72      3       165
                   15592: fn     40      3       166
                   15593: sc     42      3       167
                   15594: cr     60      2       168
                   15595: ---    16      2       169
                   15596: ``     34      2       170
                   15597: ---    34      0       171
                   15598: ---    24      0       172
                   15599: ---    26      0       173
                   15600: fi     52      3       174
                   15601: fl     52      3       175
                   15602: en     50      0       177
                   15603: \-     "
                   15604: dg     46      3       178
                   15605: dd     48      3       179
                   15606: ---    22      0       180
                   15607: pg     50      3       182
                   15608: ---    60      2       183
                   15609: ---    18      0       184
                   15610: ---    28      0       185
                   15611: ''     36      2       186
                   15612: ---    38      0       187
                   15613: ---    100     0       188
                   15614: ---    96      2       189
                   15615: ??     40      1       191
                   15616: ga     22      2       193
                   15617: \`     "
                   15618: aa     30      2       194
                   15619: \'     "
                   15620: ^a     34      2       195
                   15621: ^      "
                   15622: ~a     44      2       196
                   15623: ~      "
                   15624: -a     44      2       197
                   15625: Ua     44      2       198
                   15626: .a     22      2       199
                   15627: :a     36      2       200
                   15628: oa     30      2       202
                   15629: ,a     30      1       203
                   15630: "a     40      2       205
                   15631: Ca     28      1       206
                   15632: va     34      2       207
                   15633: em     100     0       208
                   15634: ---    74      2       225
                   15635: ---    26      2       227
                   15636: ---    58      2       232
                   15637: ---    66      3       233
                   15638: ---    82      2       234
                   15639: ---    26      2       235
                   15640: ---    54      0       241
                   15641: ---    24      0       245
                   15642: ---    30      2       248
                   15643: ---    44      3       249
                   15644: ---    56      0       250
                   15645: ---    42      3       251
                   15646: 0707070014230000050407550057030057030000020036570522627501400003100000000000post.src/devpost/charlib0707070014230001611006440057030057030000010072070522627501200003400000000421post.src/devpost/charlib/12/build_12 {
                   15647:     pop
                   15648:     /optsize ptsize def
                   15649:     /osize size def
                   15650:     /ofont font def
                   15651: 
                   15652:     optsize 2 div dup R exch R f
                   15653:     0 size 2 mul 3 div dup neg exch 0 exch rmoveto
                   15654: 
                   15655:     (1) show
                   15656:     rmoveto
                   15657:     optsize R f
                   15658:     (\244) show
                   15659:     f
                   15660:     (2) show
                   15661: 
                   15662:     optsize ofont f
                   15663: } def
                   15664: 0707070014230001731006440057030057030000010032400522627501200003400000000421post.src/devpost/charlib/14/build_14 {
                   15665:     pop
                   15666:     /optsize ptsize def
                   15667:     /osize size def
                   15668:     /ofont font def
                   15669: 
                   15670:     optsize 2 div dup R exch R f
                   15671:     0 size 2 mul 3 div dup neg exch 0 exch rmoveto
                   15672: 
                   15673:     (1) show
                   15674:     rmoveto
                   15675:     optsize R f
                   15676:     (\244) show
                   15677:     f
                   15678:     (4) show
                   15679: 
                   15680:     optsize ofont f
                   15681: } def
                   15682: 0707070014230001741006440057030057030000010032410522627501200003400000000421post.src/devpost/charlib/34/build_34 {
                   15683:     pop
                   15684:     /optsize ptsize def
                   15685:     /osize size def
                   15686:     /ofont font def
                   15687: 
                   15688:     optsize 2 div dup R exch R f
                   15689:     0 size 2 mul 3 div dup neg exch 0 exch rmoveto
                   15690: 
                   15691:     (3) show
                   15692:     rmoveto
                   15693:     optsize R f
                   15694:     (\244) show
                   15695:     f
                   15696:     (4) show
                   15697: 
                   15698:     optsize ofont f
                   15699: } def
                   15700: 0707070014230005521006440057030057030000010073200522627501300003400000014726post.src/devpost/charlib/LV%
                   15701: % PostScript 12 and 8 line logos - vertical configuration. Switch occurs
                   15702: % automatically below point size 29. Code from Matthijs Melchior.
                   15703: %
                   15704: 
                   15705: /LOGO-dict-mm where not {
                   15706:        64 dict /LOGO-dict-mm exch def
                   15707: }{pop} ifelse
                   15708: LOGO-dict-mm begin             % initialize dictionary
                   15709: 
                   15710: 
                   15711: /globesetup {
                   15712: /r exch def
                   15713: /N exch def
                   15714: /d 2 N r mul N 1 sub add div def
                   15715: /h d r mul def
                   15716: } def
                   15717: /mkabs {
                   15718: /yp exch def
                   15719: /xl exch def
                   15720: dup dup 0 get xl mul 0 exch put
                   15721: dup dup 1 get h mul yp add 1 exch put
                   15722: dup dup 2 get xl mul 2 exch put
                   15723: dup dup 3 get h mul yp add 3 exch put
                   15724: dup dup 4 get xl mul 4 exch put
                   15725: dup dup 5 get h mul yp add 5 exch put
                   15726: } def
                   15727: /topsegment {
                   15728: /n exch def
                   15729: /y n r mul n .5 add add d mul def
                   15730: /a y 1 y dup mul sub sqrt atan def
                   15731: /x a cos def
                   15732: /c2 exch x y mkabs def
                   15733: /ly1 exch h mul y add def
                   15734: /lx1 exch x abs mul def
                   15735: /c1 exch x y mkabs def
                   15736: x y /moveto load
                   15737: 0 0 1 a 180 a sub /arc load
                   15738: c1 aload pop /curveto load
                   15739: lx1 ly1 /lineto load
                   15740: c2 aload pop /curveto load
                   15741: /closepath load
                   15742: } def
                   15743: /botsegment {
                   15744: /n exch 1 add def
                   15745: /y n r mul n .5 sub add d mul def
                   15746: /a y 1 y dup mul sub sqrt atan def
                   15747: /x a cos def
                   15748: /c2 exch x y mkabs def
                   15749: /ly1 exch h mul y add def
                   15750: /lx1 exch x abs mul def
                   15751: /c1 exch x y mkabs def
                   15752: x y /moveto load
                   15753: 0 0 1 a 540 a sub /arcn load
                   15754: c1 aload pop /curveto load
                   15755: lx1 ly1 /lineto load
                   15756: c2 aload pop /curveto load
                   15757: /closepath load
                   15758: } def
                   15759: /segment {
                   15760: /n exch def
                   15761: /dh exch 1 exch sub 2 div def
                   15762: /ylb n r mul n 0.5 add add d mul def
                   15763: /ylt ylb h add def
                   15764: /yrb ylb h dh mul add def
                   15765: /yrt ylt h dh mul sub def
                   15766: /alb ylb 1 ylb dup mul sub sqrt atan def
                   15767: /alt ylt 1 ylt dup mul sub sqrt atan def
                   15768: /arb yrb 1 yrb dup mul sub sqrt atan 180 exch sub def
                   15769: /art yrt 1 yrt dup mul sub sqrt atan 180 exch sub def
                   15770: /xlb alb cos def
                   15771: /xlt alt cos def
                   15772: /xrb arb cos def
                   15773: /xrt art cos def
                   15774: /c4 exch xrb abs ylb mkabs def
                   15775: /ly2 exch h mul ylb add def
                   15776: /lx2 exch xrb abs mul def
                   15777: /c3 exch xrb abs ylb mkabs def
                   15778: /c2 exch xrt abs ylt mkabs def
                   15779: /ly1 exch h mul ylt add def
                   15780: /lx1 exch xrt abs mul def
                   15781: /c1 exch xrt abs ylt mkabs def
                   15782: xlb ylb /moveto load
                   15783: 0 0 1 alb alt /arc load
                   15784: c2 4 get c2 5 get /lineto load
                   15785: c2 2 get c2 3 get
                   15786: c2 0 get c2 1 get
                   15787: lx1 ly1        /curveto load
                   15788: c1 4 get c1 5 get /lineto load
                   15789: c1 2 get c1 3 get
                   15790: c1 0 get c1 1 get
                   15791: xrt yrt /curveto load
                   15792: 0 0 1 art arb /arc load
                   15793: c3 aload pop /curveto load
                   15794: lx2 ly2 /lineto load
                   15795: c4 aload pop /curveto load
                   15796: /closepath load
                   15797: } def
                   15798: 8 2.5 globesetup
                   15799: /globe8 [
                   15800: /newpath load
                   15801: [ -.9   .1  -.6   .2  -.5   .2  ] -.5   .2  [ -.4   .2   .0  .0  .4  .0 ] 3 topsegment
                   15802: [ -.9  -.35 -.85 -.35 -.8  -.35 ] -.1  -.35 [  .1  -.35  .3  .0  .5  .0 ]
                   15803: [ -.8   .35 -.75  .35 -.7   .35 ] -.1   .35 [  .1   .35  .4  .0  .55 .0 ] .55 2 segment
                   15804: [ -.8  -.35 -.75 -.35 -.7  -.35 ]  .05 -.35 [  .2  -.35  .4  .0  .55 .0 ]
                   15805: [ -.8   .35 -.75  .35 -.7   .35 ]  .05  .35 [  .2   .35  .45 .0  .6  .0 ] .7  1 segment
                   15806: [ -.8  -.35 -.75 -.35 -.7  -.35 ]  .0  -.35 [  .15 -.35  .4  .0  .6  .0 ]
                   15807: [ -.8   .35 -.75  .35 -.7   .35 ]  .0   .35 [  .15  .35  .4  .0  .6  .0 ] .7  0 segment
                   15808: [ -.7  -.35 -.65 -.35 -.6  -.35 ] -.1  -.35 [  .05 -.35  .35 .0  .55 .0 ]
                   15809: [ -.7   .35 -.65  .35 -.6   .35 ] -.1   .35 [  .05  .35  .25 .0  .4  .0 ] .8 -1 segment
                   15810: [ -.65 -.2  -.55 -.2 -.45  -.2  ] -.3   -.2 [ -.2  -.2   .2  .0  .3  .0 ]
                   15811: [ -.65  .1  -.55  .1 -.45   .1  ] -.45  .1  [ -.3   .1  -.1  .0  .0  .0 ] .96 -2 segment
                   15812: [  .0   .0   .0   .0  .0    .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]
                   15813: [  .0   .0   .0   .0  .0    .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]  1 -3 segment
                   15814: [  .0   .0   .0   .0  .0    .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] -4 botsegment
                   15815: ] cvx def
                   15816: 12 3 globesetup
                   15817: /globe12 [
                   15818: /newpath load
                   15819: [ -.8   .2  -.7  .25 -.5   .25 ] -.4  .25 [ -.2   .25  .0  .0  .2  .0 ] 5 topsegment
                   15820: [ -.7  -.35 -.7 -.35 -.6  -.35 ] -.3 -.35 [ -.1  -.35  .3  .0  .55 .0 ]
                   15821: [ -.7   .35 -.7  .35 -.6   .35 ] -.25 .35 [ -.05  .35  .4  .0  .55 .0 ] .6  4 segment
                   15822: [ -.8  -.35 -.7 -.35 -.6  -.35 ] -.1 -.35 [  .1  -.35  .4  .0  .5  .0 ]
                   15823: [ -.8   .35 -.7  .35 -.6   .35 ] -.1  .35 [  .1   .35  .4  .0  .5  .0 ] .7  3 segment
                   15824: [ -.8  -.35 -.7 -.35 -.6  -.35 ]  .0 -.35 [  .1  -.35  .45 .0  .55 .0 ]
                   15825: [ -.8   .35 -.7  .35 -.6   .35 ]  .0  .35 [  .15  .35  .4  .0  .5  .0 ] .8  2 segment
                   15826: [ -.75 -.35 -.7 -.35 -.6  -.35 ]  .0 -.35 [  .2  -.35  .4  .0  .5  .0 ]
                   15827: [ -.75  .35 -.7  .35 -.6   .35 ]  .0  .35 [  .2   .35  .45 .0  .55 .0 ] .9  1 segment
                   15828: [ -.7  -.35 -.6 -.35 -.55 -.35 ]  .0 -.35 [  .1  -.35  .45 .0  .55 .0 ]
                   15829: [ -.7   .35 -.6  .35 -.55  .35 ]  .0  .35 [  .1   .35  .5  .0  .6  .0 ] .9  0 segment
                   15830: ] cvx
                   15831: [
                   15832: [ -.7 -.35 -.6 -.35 -.5  -.35 ] -.15 -.35 [  .0  -.35  .4  .0  .5  .0 ]
                   15833: [ -.65 .35 -.55 .35 -.45  .35 ] -.15  .35 [  .0   .35  .35 .0  .45 .0 ] .9 -1 segment
                   15834: [ -.8 -.1  -.5 -.3  -.4  -.3  ] -.2  -.3  [  .0  -.3   .3  .0  .4  .0 ]
                   15835: [ -.8  .1  -.5  .3  -.4   .3  ] -.2   .3  [  .0   .3   .2  .0  .3  .0 ] 1 -2 segment
                   15836: [ -.7 -.1  -.5 -.15 -.4  -.15 ] -.3  -.15 [ -.2  -.15  .0  .0  .2  .0 ]
                   15837: [ -.7  .05 -.5  .1  -.4   .1  ] -.4   .1  [ -.3   .1   .0  .0  .2  .0 ] 1 -3 segment
                   15838: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]
                   15839: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] 1 -4 segment
                   15840: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]
                   15841: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] 1 -5 segment
                   15842: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] -6 botsegment
                   15843: ] cvx
                   15844: 4 array cvx
                   15845: dup 0 5 -1 roll put
                   15846: dup 1 /exec load put
                   15847: dup 2 4 -1 roll put
                   15848: dup 3 /exec load put
                   15849: def
                   15850: 
                   15851: /l {  lineto } def
                   15852: /rl {  rlineto } def
                   15853: /m {  moveto } def
                   15854: /rm {  rmoveto } def
                   15855: /C { closepath } def
                   15856: /c {  curveto } def
                   15857: /rc {  rcurveto } def
                   15858: /T { m 0 29 rl -9.5 0 rl 0 7 rl 29 0 rl 0 -7 rl -9.5 0 rl 0 -29 rl C } def
                   15859: /ATT {
                   15860: newpath
                   15861: 1 36 div dup scale
                   15862: 0  0 m  12 36 rl  8 0 rl -11 -36 rl C
                   15863: 25  0 m -11 36 rl  8 0 rl  12 -36 rl C
                   15864: 10  7 m   0  7 rl 14 0 rl   0  -7 rl C
                   15865: 36  0 T
                   15866: 80  6 m -3 0 -5 1.2 -6 2 rc -12 10 rl -2.4 2 -2.7 6 0 6 rc
                   15867: 1 0 2 -1 2 -2 rc 0 -4 rl 7 0 rl 0 4 rl
                   15868: 0 5 -3 7 -9 7 rc -6 0 -9 -3 -9 -7 rc
                   15869: 0 -2 0 -3.6 2 -6 rc 12 -10 rl 6 -5 10 -6 13 -6 rc C
                   15870: 71 18 m 0 -6 rl 0 -5 -3 -7 -7 -7 rc -3 0 -5 2 -5 4 rc 0 1 0 3 2 4 rc
                   15871: -4 5 rl -4 -2 -6 -6 -6 -9 rc 0 -7 6 -10 13 -10 rc
                   15872: 9 0 14 6 14 11 rc 0 8 rl C
                   15873: 82  0 T
                   15874: 36 dup scale
                   15875: } def
                   15876: 
                   15877: end
                   15878: 
                   15879: /build_LV { % standard ATT logo
                   15880:     LOGO-dict-mm begin
                   15881:        /w exch def
                   15882:        ptsize 29 lt    % select globe, # lines depends on point size
                   15883:                { /globe /globe8 load def }
                   15884:                { /globe /globe12 load def } ifelse
                   15885:        gsave
                   15886:         currentpoint translate
                   15887:         size 2 div dup scale
                   15888:         gsave
                   15889:          1.02 1 transform round exch round exch itransform
                   15890:          translate
                   15891:          globe fill
                   15892:         grestore
                   15893:         gsave
                   15894:          %2.15 .62 translate
                   15895:          -0.1 -1.0 translate
                   15896:          .78 dup scale
                   15897:          ATT fill
                   15898:         grestore
                   15899:        grestore
                   15900:     end
                   15901: } def
                   15902: 0707070014230005531006440057030057030000010073270522627501300003400000000075post.src/devpost/charlib/Fi/build_Fi {
                   15903:     pop
                   15904:     size .05 mul neg 0 (ffi) ashow
                   15905: } def
                   15906: 0707070014230005541006440057030057030000010041550522627501300003400000000075post.src/devpost/charlib/Fl/build_Fl {
                   15907:     pop
                   15908:     size .05 mul neg 0 (ffl) ashow
                   15909: } def
                   15910: 0707070014230005551006440057030057030000010110620522627501300003400000012536post.src/devpost/charlib/L1/LOGO-dict-mm dup where not
                   15911: { dup 64 dict def currentdict } if
                   15912: exch get
                   15913: begin
                   15914: /globesetup {
                   15915: /r exch def
                   15916: /N exch def
                   15917: /d 2 N r mul N 1 sub add div def
                   15918: /h d r mul def
                   15919: } def
                   15920: /mkabs {
                   15921: /yp exch def
                   15922: /xl exch def
                   15923: dup dup 0 get xl mul 0 exch put
                   15924: dup dup 1 get h mul yp add 1 exch put
                   15925: dup dup 2 get xl mul 2 exch put
                   15926: dup dup 3 get h mul yp add 3 exch put
                   15927: dup dup 4 get xl mul 4 exch put
                   15928: dup dup 5 get h mul yp add 5 exch put
                   15929: } def
                   15930: /topsegment {
                   15931: /n exch def
                   15932: /y n r mul n .5 add add d mul def
                   15933: /a y 1 y dup mul sub sqrt atan def
                   15934: /x a cos def
                   15935: /c2 exch x y mkabs def
                   15936: /ly1 exch h mul y add def
                   15937: /lx1 exch x abs mul def
                   15938: /c1 exch x y mkabs def
                   15939: x y /moveto load
                   15940: 0 0 1 a 180 a sub /arc load
                   15941: c1 aload pop /curveto load
                   15942: lx1 ly1 /lineto load
                   15943: c2 aload pop /curveto load
                   15944: /closepath load
                   15945: } def
                   15946: /botsegment {
                   15947: /n exch 1 add def
                   15948: /y n r mul n .5 sub add d mul def
                   15949: /a y 1 y dup mul sub sqrt atan def
                   15950: /x a cos def
                   15951: /c2 exch x y mkabs def
                   15952: /ly1 exch h mul y add def
                   15953: /lx1 exch x abs mul def
                   15954: /c1 exch x y mkabs def
                   15955: x y /moveto load
                   15956: 0 0 1 a 540 a sub /arcn load
                   15957: c1 aload pop /curveto load
                   15958: lx1 ly1 /lineto load
                   15959: c2 aload pop /curveto load
                   15960: /closepath load
                   15961: } def
                   15962: /segment {
                   15963: /n exch def
                   15964: /dh exch 1 exch sub 2 div def
                   15965: /ylb n r mul n 0.5 add add d mul def
                   15966: /ylt ylb h add def
                   15967: /yrb ylb h dh mul add def
                   15968: /yrt ylt h dh mul sub def
                   15969: /alb ylb 1 ylb dup mul sub sqrt atan def
                   15970: /alt ylt 1 ylt dup mul sub sqrt atan def
                   15971: /arb yrb 1 yrb dup mul sub sqrt atan 180 exch sub def
                   15972: /art yrt 1 yrt dup mul sub sqrt atan 180 exch sub def
                   15973: /xlb alb cos def
                   15974: /xlt alt cos def
                   15975: /xrb arb cos def
                   15976: /xrt art cos def
                   15977: /c4 exch xrb abs ylb mkabs def
                   15978: /ly2 exch h mul ylb add def
                   15979: /lx2 exch xrb abs mul def
                   15980: /c3 exch xrb abs ylb mkabs def
                   15981: /c2 exch xrt abs ylt mkabs def
                   15982: /ly1 exch h mul ylt add def
                   15983: /lx1 exch xrt abs mul def
                   15984: /c1 exch xrt abs ylt mkabs def
                   15985: xlb ylb /moveto load
                   15986: 0 0 1 alb alt /arc load
                   15987: c2 4 get c2 5 get /lineto load
                   15988: c2 2 get c2 3 get
                   15989: c2 0 get c2 1 get
                   15990: lx1 ly1        /curveto load
                   15991: c1 4 get c1 5 get /lineto load
                   15992: c1 2 get c1 3 get
                   15993: c1 0 get c1 1 get
                   15994: xrt yrt /curveto load
                   15995: 0 0 1 art arb /arc load
                   15996: c3 aload pop /curveto load
                   15997: lx2 ly2 /lineto load
                   15998: c4 aload pop /curveto load
                   15999: /closepath load
                   16000: } def
                   16001: 8 2.5 globesetup
                   16002: /globe8 [
                   16003: /newpath load
                   16004: [ -.9   .1  -.6   .2  -.5   .2  ] -.5   .2  [ -.4   .2   .0  .0  .4  .0 ] 3 topsegment
                   16005: [ -.9  -.35 -.85 -.35 -.8  -.35 ] -.1  -.35 [  .1  -.35  .3  .0  .5  .0 ]
                   16006: [ -.8   .35 -.75  .35 -.7   .35 ] -.1   .35 [  .1   .35  .4  .0  .55 .0 ] .55 2 segment
                   16007: [ -.8  -.35 -.75 -.35 -.7  -.35 ]  .05 -.35 [  .2  -.35  .4  .0  .55 .0 ]
                   16008: [ -.8   .35 -.75  .35 -.7   .35 ]  .05  .35 [  .2   .35  .45 .0  .6  .0 ] .7  1 segment
                   16009: [ -.8  -.35 -.75 -.35 -.7  -.35 ]  .0  -.35 [  .15 -.35  .4  .0  .6  .0 ]
                   16010: [ -.8   .35 -.75  .35 -.7   .35 ]  .0   .35 [  .15  .35  .4  .0  .6  .0 ] .7  0 segment
                   16011: [ -.7  -.35 -.65 -.35 -.6  -.35 ] -.1  -.35 [  .05 -.35  .35 .0  .55 .0 ]
                   16012: [ -.7   .35 -.65  .35 -.6   .35 ] -.1   .35 [  .05  .35  .25 .0  .4  .0 ] .8 -1 segment
                   16013: [ -.65 -.2  -.55 -.2 -.45  -.2  ] -.3   -.2 [ -.2  -.2   .2  .0  .3  .0 ]
                   16014: [ -.65  .1  -.55  .1 -.45   .1  ] -.45  .1  [ -.3   .1  -.1  .0  .0  .0 ] .96 -2 segment
                   16015: [  .0   .0   .0   .0  .0    .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]
                   16016: [  .0   .0   .0   .0  .0    .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]  1 -3 segment
                   16017: [  .0   .0   .0   .0  .0    .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] -4 botsegment
                   16018: ] cvx def
                   16019: 12 3 globesetup
                   16020: /globe12 [
                   16021: /newpath load
                   16022: [ -.8   .2  -.7  .25 -.5   .25 ] -.4  .25 [ -.2   .25  .0  .0  .2  .0 ] 5 topsegment
                   16023: [ -.7  -.35 -.7 -.35 -.6  -.35 ] -.3 -.35 [ -.1  -.35  .3  .0  .55 .0 ]
                   16024: [ -.7   .35 -.7  .35 -.6   .35 ] -.25 .35 [ -.05  .35  .4  .0  .55 .0 ] .6  4 segment
                   16025: [ -.8  -.35 -.7 -.35 -.6  -.35 ] -.1 -.35 [  .1  -.35  .4  .0  .5  .0 ]
                   16026: [ -.8   .35 -.7  .35 -.6   .35 ] -.1  .35 [  .1   .35  .4  .0  .5  .0 ] .7  3 segment
                   16027: [ -.8  -.35 -.7 -.35 -.6  -.35 ]  .0 -.35 [  .1  -.35  .45 .0  .55 .0 ]
                   16028: [ -.8   .35 -.7  .35 -.6   .35 ]  .0  .35 [  .15  .35  .4  .0  .5  .0 ] .8  2 segment
                   16029: [ -.75 -.35 -.7 -.35 -.6  -.35 ]  .0 -.35 [  .2  -.35  .4  .0  .5  .0 ]
                   16030: [ -.75  .35 -.7  .35 -.6   .35 ]  .0  .35 [  .2   .35  .45 .0  .55 .0 ] .9  1 segment
                   16031: [ -.7  -.35 -.6 -.35 -.55 -.35 ]  .0 -.35 [  .1  -.35  .45 .0  .55 .0 ]
                   16032: [ -.7   .35 -.6  .35 -.55  .35 ]  .0  .35 [  .1   .35  .5  .0  .6  .0 ] .9  0 segment
                   16033: ] cvx
                   16034: [
                   16035: [ -.7 -.35 -.6 -.35 -.5  -.35 ] -.15 -.35 [  .0  -.35  .4  .0  .5  .0 ]
                   16036: [ -.65 .35 -.55 .35 -.45  .35 ] -.15  .35 [  .0   .35  .35 .0  .45 .0 ] .9 -1 segment
                   16037: [ -.8 -.1  -.5 -.3  -.4  -.3  ] -.2  -.3  [  .0  -.3   .3  .0  .4  .0 ]
                   16038: [ -.8  .1  -.5  .3  -.4   .3  ] -.2   .3  [  .0   .3   .2  .0  .3  .0 ] 1 -2 segment
                   16039: [ -.7 -.1  -.5 -.15 -.4  -.15 ] -.3  -.15 [ -.2  -.15  .0  .0  .2  .0 ]
                   16040: [ -.7  .05 -.5  .1  -.4   .1  ] -.4   .1  [ -.3   .1   .0  .0  .2  .0 ] 1 -3 segment
                   16041: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]
                   16042: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] 1 -4 segment
                   16043: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]
                   16044: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] 1 -5 segment
                   16045: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] -6 botsegment
                   16046: ] cvx
                   16047: 4 array cvx
                   16048: dup 0 5 -1 roll put
                   16049: dup 1 /exec load put
                   16050: dup 2 4 -1 roll put
                   16051: dup 3 /exec load put
                   16052: def
                   16053: end
                   16054: /build_L1 {
                   16055: pop
                   16056: LOGO-dict-mm begin
                   16057: ptsize 29 lt
                   16058: { /globe /globe8 load def }
                   16059: { /globe /globe12 load def } ifelse
                   16060: gsave
                   16061: currentpoint translate
                   16062: size 2 div dup scale
                   16063: 1.02 1 transform round exch round exch itransform
                   16064: translate
                   16065: globe fill
                   16066: grestore
                   16067: end
                   16068: } def
                   16069: 0707070014230005561006440057030057030000010073400522627501300003400000014673post.src/devpost/charlib/LH%
                   16070: % PostScript 12 and 8 line logos - horizontal configuration. Switch occurs
                   16071: % automatically below point size 29. Code from Matthijs Melchior.
                   16072: %
                   16073: 
                   16074: /LOGO-dict-mm where not {
                   16075:        64 dict /LOGO-dict-mm exch def
                   16076: }{pop} ifelse
                   16077: LOGO-dict-mm begin             % initialize dictionary
                   16078: 
                   16079: 
                   16080: /globesetup {
                   16081: /r exch def
                   16082: /N exch def
                   16083: /d 2 N r mul N 1 sub add div def
                   16084: /h d r mul def
                   16085: } def
                   16086: /mkabs {
                   16087: /yp exch def
                   16088: /xl exch def
                   16089: dup dup 0 get xl mul 0 exch put
                   16090: dup dup 1 get h mul yp add 1 exch put
                   16091: dup dup 2 get xl mul 2 exch put
                   16092: dup dup 3 get h mul yp add 3 exch put
                   16093: dup dup 4 get xl mul 4 exch put
                   16094: dup dup 5 get h mul yp add 5 exch put
                   16095: } def
                   16096: /topsegment {
                   16097: /n exch def
                   16098: /y n r mul n .5 add add d mul def
                   16099: /a y 1 y dup mul sub sqrt atan def
                   16100: /x a cos def
                   16101: /c2 exch x y mkabs def
                   16102: /ly1 exch h mul y add def
                   16103: /lx1 exch x abs mul def
                   16104: /c1 exch x y mkabs def
                   16105: x y /moveto load
                   16106: 0 0 1 a 180 a sub /arc load
                   16107: c1 aload pop /curveto load
                   16108: lx1 ly1 /lineto load
                   16109: c2 aload pop /curveto load
                   16110: /closepath load
                   16111: } def
                   16112: /botsegment {
                   16113: /n exch 1 add def
                   16114: /y n r mul n .5 sub add d mul def
                   16115: /a y 1 y dup mul sub sqrt atan def
                   16116: /x a cos def
                   16117: /c2 exch x y mkabs def
                   16118: /ly1 exch h mul y add def
                   16119: /lx1 exch x abs mul def
                   16120: /c1 exch x y mkabs def
                   16121: x y /moveto load
                   16122: 0 0 1 a 540 a sub /arcn load
                   16123: c1 aload pop /curveto load
                   16124: lx1 ly1 /lineto load
                   16125: c2 aload pop /curveto load
                   16126: /closepath load
                   16127: } def
                   16128: /segment {
                   16129: /n exch def
                   16130: /dh exch 1 exch sub 2 div def
                   16131: /ylb n r mul n 0.5 add add d mul def
                   16132: /ylt ylb h add def
                   16133: /yrb ylb h dh mul add def
                   16134: /yrt ylt h dh mul sub def
                   16135: /alb ylb 1 ylb dup mul sub sqrt atan def
                   16136: /alt ylt 1 ylt dup mul sub sqrt atan def
                   16137: /arb yrb 1 yrb dup mul sub sqrt atan 180 exch sub def
                   16138: /art yrt 1 yrt dup mul sub sqrt atan 180 exch sub def
                   16139: /xlb alb cos def
                   16140: /xlt alt cos def
                   16141: /xrb arb cos def
                   16142: /xrt art cos def
                   16143: /c4 exch xrb abs ylb mkabs def
                   16144: /ly2 exch h mul ylb add def
                   16145: /lx2 exch xrb abs mul def
                   16146: /c3 exch xrb abs ylb mkabs def
                   16147: /c2 exch xrt abs ylt mkabs def
                   16148: /ly1 exch h mul ylt add def
                   16149: /lx1 exch xrt abs mul def
                   16150: /c1 exch xrt abs ylt mkabs def
                   16151: xlb ylb /moveto load
                   16152: 0 0 1 alb alt /arc load
                   16153: c2 4 get c2 5 get /lineto load
                   16154: c2 2 get c2 3 get
                   16155: c2 0 get c2 1 get
                   16156: lx1 ly1        /curveto load
                   16157: c1 4 get c1 5 get /lineto load
                   16158: c1 2 get c1 3 get
                   16159: c1 0 get c1 1 get
                   16160: xrt yrt /curveto load
                   16161: 0 0 1 art arb /arc load
                   16162: c3 aload pop /curveto load
                   16163: lx2 ly2 /lineto load
                   16164: c4 aload pop /curveto load
                   16165: /closepath load
                   16166: } def
                   16167: 8 2.5 globesetup
                   16168: /globe8 [
                   16169: /newpath load
                   16170: [ -.9   .1  -.6   .2  -.5   .2  ] -.5   .2  [ -.4   .2   .0  .0  .4  .0 ] 3 topsegment
                   16171: [ -.9  -.35 -.85 -.35 -.8  -.35 ] -.1  -.35 [  .1  -.35  .3  .0  .5  .0 ]
                   16172: [ -.8   .35 -.75  .35 -.7   .35 ] -.1   .35 [  .1   .35  .4  .0  .55 .0 ] .55 2 segment
                   16173: [ -.8  -.35 -.75 -.35 -.7  -.35 ]  .05 -.35 [  .2  -.35  .4  .0  .55 .0 ]
                   16174: [ -.8   .35 -.75  .35 -.7   .35 ]  .05  .35 [  .2   .35  .45 .0  .6  .0 ] .7  1 segment
                   16175: [ -.8  -.35 -.75 -.35 -.7  -.35 ]  .0  -.35 [  .15 -.35  .4  .0  .6  .0 ]
                   16176: [ -.8   .35 -.75  .35 -.7   .35 ]  .0   .35 [  .15  .35  .4  .0  .6  .0 ] .7  0 segment
                   16177: [ -.7  -.35 -.65 -.35 -.6  -.35 ] -.1  -.35 [  .05 -.35  .35 .0  .55 .0 ]
                   16178: [ -.7   .35 -.65  .35 -.6   .35 ] -.1   .35 [  .05  .35  .25 .0  .4  .0 ] .8 -1 segment
                   16179: [ -.65 -.2  -.55 -.2 -.45  -.2  ] -.3   -.2 [ -.2  -.2   .2  .0  .3  .0 ]
                   16180: [ -.65  .1  -.55  .1 -.45   .1  ] -.45  .1  [ -.3   .1  -.1  .0  .0  .0 ] .96 -2 segment
                   16181: [  .0   .0   .0   .0  .0    .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]
                   16182: [  .0   .0   .0   .0  .0    .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]  1 -3 segment
                   16183: [  .0   .0   .0   .0  .0    .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] -4 botsegment
                   16184: ] cvx def
                   16185: 12 3 globesetup
                   16186: /globe12 [
                   16187: /newpath load
                   16188: [ -.8   .2  -.7  .25 -.5   .25 ] -.4  .25 [ -.2   .25  .0  .0  .2  .0 ] 5 topsegment
                   16189: [ -.7  -.35 -.7 -.35 -.6  -.35 ] -.3 -.35 [ -.1  -.35  .3  .0  .55 .0 ]
                   16190: [ -.7   .35 -.7  .35 -.6   .35 ] -.25 .35 [ -.05  .35  .4  .0  .55 .0 ] .6  4 segment
                   16191: [ -.8  -.35 -.7 -.35 -.6  -.35 ] -.1 -.35 [  .1  -.35  .4  .0  .5  .0 ]
                   16192: [ -.8   .35 -.7  .35 -.6   .35 ] -.1  .35 [  .1   .35  .4  .0  .5  .0 ] .7  3 segment
                   16193: [ -.8  -.35 -.7 -.35 -.6  -.35 ]  .0 -.35 [  .1  -.35  .45 .0  .55 .0 ]
                   16194: [ -.8   .35 -.7  .35 -.6   .35 ]  .0  .35 [  .15  .35  .4  .0  .5  .0 ] .8  2 segment
                   16195: [ -.75 -.35 -.7 -.35 -.6  -.35 ]  .0 -.35 [  .2  -.35  .4  .0  .5  .0 ]
                   16196: [ -.75  .35 -.7  .35 -.6   .35 ]  .0  .35 [  .2   .35  .45 .0  .55 .0 ] .9  1 segment
                   16197: [ -.7  -.35 -.6 -.35 -.55 -.35 ]  .0 -.35 [  .1  -.35  .45 .0  .55 .0 ]
                   16198: [ -.7   .35 -.6  .35 -.55  .35 ]  .0  .35 [  .1   .35  .5  .0  .6  .0 ] .9  0 segment
                   16199: ] cvx
                   16200: [
                   16201: [ -.7 -.35 -.6 -.35 -.5  -.35 ] -.15 -.35 [  .0  -.35  .4  .0  .5  .0 ]
                   16202: [ -.65 .35 -.55 .35 -.45  .35 ] -.15  .35 [  .0   .35  .35 .0  .45 .0 ] .9 -1 segment
                   16203: [ -.8 -.1  -.5 -.3  -.4  -.3  ] -.2  -.3  [  .0  -.3   .3  .0  .4  .0 ]
                   16204: [ -.8  .1  -.5  .3  -.4   .3  ] -.2   .3  [  .0   .3   .2  .0  .3  .0 ] 1 -2 segment
                   16205: [ -.7 -.1  -.5 -.15 -.4  -.15 ] -.3  -.15 [ -.2  -.15  .0  .0  .2  .0 ]
                   16206: [ -.7  .05 -.5  .1  -.4   .1  ] -.4   .1  [ -.3   .1   .0  .0  .2  .0 ] 1 -3 segment
                   16207: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]
                   16208: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] 1 -4 segment
                   16209: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]
                   16210: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] 1 -5 segment
                   16211: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] -6 botsegment
                   16212: ] cvx
                   16213: 4 array cvx
                   16214: dup 0 5 -1 roll put
                   16215: dup 1 /exec load put
                   16216: dup 2 4 -1 roll put
                   16217: dup 3 /exec load put
                   16218: def
                   16219: 
                   16220: /l {  lineto } def
                   16221: /rl {  rlineto } def
                   16222: /m {  moveto } def
                   16223: /rm {  rmoveto } def
                   16224: /C { closepath } def
                   16225: /c {  curveto } def
                   16226: /rc {  rcurveto } def
                   16227: /T { m 0 29 rl -9.5 0 rl 0 7 rl 29 0 rl 0 -7 rl -9.5 0 rl 0 -29 rl C } def
                   16228: /ATT {
                   16229: newpath
                   16230: 1 36 div dup scale
                   16231: 0  0 m  12 36 rl  8 0 rl -11 -36 rl C
                   16232: 25  0 m -11 36 rl  8 0 rl  12 -36 rl C
                   16233: 10  7 m   0  7 rl 14 0 rl   0  -7 rl C
                   16234: 36  0 T
                   16235: 80  6 m -3 0 -5 1.2 -6 2 rc -12 10 rl -2.4 2 -2.7 6 0 6 rc
                   16236: 1 0 2 -1 2 -2 rc 0 -4 rl 7 0 rl 0 4 rl
                   16237: 0 5 -3 7 -9 7 rc -6 0 -9 -3 -9 -7 rc
                   16238: 0 -2 0 -3.6 2 -6 rc 12 -10 rl 6 -5 10 -6 13 -6 rc C
                   16239: 71 18 m 0 -6 rl 0 -5 -3 -7 -7 -7 rc -3 0 -5 2 -5 4 rc 0 1 0 3 2 4 rc
                   16240: -4 5 rl -4 -2 -6 -6 -6 -9 rc 0 -7 6 -10 13 -10 rc
                   16241: 9 0 14 6 14 11 rc 0 8 rl C
                   16242: 82  0 T
                   16243: 36 dup scale
                   16244: } def
                   16245: 
                   16246: end
                   16247: 
                   16248: /build_LH { % standard ATT logo
                   16249:     LOGO-dict-mm begin
                   16250:        /w exch def
                   16251:        ptsize 29 lt    % select globe, # lines depends on point size
                   16252:                { /globe /globe8 load def }
                   16253:                { /globe /globe12 load def } ifelse
                   16254:        gsave
                   16255:         currentpoint translate
                   16256:         size 2 div dup scale
                   16257:         gsave
                   16258:          1.02 1 transform round exch round exch itransform
                   16259:          translate
                   16260:          globe fill
                   16261:         grestore
                   16262:         gsave
                   16263:          2.15 .62 translate
                   16264:          .78 dup scale
                   16265:          ATT fill
                   16266:         grestore
                   16267:        grestore
                   16268:     end
                   16269: } def
                   16270: 0707070014230005571006440057030057030000010041560522627501300004000000001173post.src/devpost/charlib/READMEPostscript definitions for special troff characters. File names are
                   16271: the two character troff names. Each defines a PostScript procedure
                   16272: that begins with build_ and ends with the character's name. The
                   16273: build_?? procedure is called with the character width as it's only
                   16274: argument. The .map files contain extra character data (e.g. image
                   16275: data) that dpost downloads immediately after the build_?? call,
                   16276: if the character's font table code field is 2 (rather than 1).
                   16277: 
                   16278: The following PostScript variables are available:
                   16279: 
                   16280:        font            current font
                   16281:        ptsize          current point size
                   16282:        size            actual font size - scaled up from ptsize
                   16283: 
                   16284: Don't overuse this stuff!
                   16285: 
                   16286: 0707070014230005601006440057030057030000010041760522627501300003400000002631post.src/devpost/charlib/Sl/build_Sl {
                   16287: pop
                   16288: gsave
                   16289: size .0022 mul dup scale
                   16290: currentpoint translate
                   16291: 14 93 moveto
                   16292: 14 96 lineto
                   16293: 29 110 lineto
                   16294: 44 121 lineto
                   16295: 54 127 lineto
                   16296: 55 132 lineto
                   16297: 57 146 lineto
                   16298: 59 157 lineto
                   16299: 62 171 lineto
                   16300: 66 186 lineto
                   16301: 70 199 lineto
                   16302: 75 213 lineto
                   16303: 81 228 lineto
                   16304: 88 243 lineto
                   16305: 96 257 lineto
                   16306: 106 272 lineto
                   16307: 118 287 lineto
                   16308: 133 300 lineto
                   16309: 148 307 lineto
                   16310: 163 308 lineto
                   16311: 178 304 lineto
                   16312: 191 293 lineto
                   16313: 197 281 lineto
                   16314: 198 277 lineto
                   16315: 198 260 lineto
                   16316: 194 246 lineto
                   16317: 187 231 lineto
                   16318: 179 217 lineto
                   16319: 168 202 lineto
                   16320: 155 187 lineto
                   16321: 141 172 lineto
                   16322: 126 158 lineto
                   16323: 111 146 lineto
                   16324: 96 136 lineto
                   16325: 94 131 lineto
                   16326: 93 123 lineto
                   16327: 92 112 lineto
                   16328: 91 103 lineto
                   16329: 90 93 lineto
                   16330: 89 81 lineto
                   16331: 89 40 lineto
                   16332: 92 28 lineto
                   16333: 97 18 lineto
                   16334: 108 10 lineto
                   16335: 122 10 lineto
                   16336: 134 18 lineto
                   16337: 145 33 lineto
                   16338: 152 48 lineto
                   16339: 158 62 lineto
                   16340: 168 58 lineto
                   16341: 168 59 lineto
                   16342: 163 45 lineto
                   16343: 157 31 lineto
                   16344: 148 16 lineto
                   16345: 133 3 lineto
                   16346: 118 -1 lineto
                   16347: 103 0 lineto
                   16348: 88 5 lineto
                   16349: 73 18 lineto
                   16350: 64 31 lineto
                   16351: 58 46 lineto
                   16352: 55 59 lineto
                   16353: 53 73 lineto
                   16354: 52 111 lineto
                   16355: 37 101 lineto
                   16356: 22 86 lineto
                   16357: 14 93 lineto
                   16358: 
                   16359: 97 152 moveto
                   16360: 97 153 lineto
                   16361: 99 166 lineto
                   16362: 101 178 lineto
                   16363: 103 190 lineto
                   16364: 106 205 lineto
                   16365: 109 218 lineto
                   16366: 113 232 lineto
                   16367: 118 246 lineto
                   16368: 124 261 lineto
                   16369: 132 275 lineto
                   16370: 144 290 lineto
                   16371: 157 298 lineto
                   16372: 171 298 lineto
                   16373: 181 291 lineto
                   16374: 186 283 lineto
                   16375: 187 279 lineto
                   16376: 187 264 lineto
                   16377: 186 260 lineto
                   16378: 181 246 lineto
                   16379: 174 233 lineto
                   16380: 165 218 lineto
                   16381: 155 204 lineto
                   16382: 142 190 lineto
                   16383: 127 175 lineto
                   16384: 112 162 lineto
                   16385: 97 152 lineto
                   16386: 
                   16387: eofill
                   16388: grestore
                   16389: } def
                   16390: 0707070014230005611006440057030057030000010073470522627501300003400000000264post.src/devpost/charlib/bx/build_bx {
                   16391:     pop
                   16392:     size 2 div /side exch def
                   16393:     currentpoint
                   16394:     newpath
                   16395:     moveto
                   16396:     0 side rlineto
                   16397:     side 0 rlineto
                   16398:     0 side neg rlineto
                   16399:     closepath
                   16400:     fill
                   16401: } def
                   16402: 0707070014230005621006440057030057030000010044040522627501300003400000000221post.src/devpost/charlib/ci/build_ci {
                   16403:     pop
                   16404:     size 3 mul 8 div /rad exch def
                   16405:     currentpoint
                   16406:     newpath
                   16407:     rad add exch rad add exch rad 0 360 arc
                   16408:     stroke
                   16409: } def
                   16410: 0707070014230005631006440057030057030000010044050522627501300003400000000074post.src/devpost/charlib/ff/build_ff {
                   16411:     pop
                   16412:     size .05 mul neg 0 (ff) ashow
                   16413: } def
                   16414: 0707070014230005641006440057030057030000010073050522627501300003400000001716post.src/devpost/charlib/lc%
                   16415: % This stuff has gotten terribly complicated - sorry.
                   16416: %
                   16417: 
                   16418: currentdict /bvbbox known not {/bvbbox [0 0 0 0 0 0 0] def} if
                   16419: 
                   16420: /build_lc {
                   16421:     pop
                   16422:     gsave
                   16423:        currentpoint translate newpath
                   16424:        bvbbox 6 get size ne {
                   16425:            gsave
                   16426:                initgraphics
                   16427:                scaling scaling scale
                   16428:                0 0 moveto
                   16429:                (\357) false charpath flattenpath pathbbox 0 0 size bvbbox astore pop
                   16430:                0 1 idtransform dup mul exch dup mul add sqrt dup
                   16431:                bvbbox 1 get add bvbbox 1 3 -1 roll put
                   16432:                bvbbox 3 get exch sub bvbbox 3 3 -1 roll put
                   16433:                bvbbox 2 get bvbbox 0 get sub bvbbox 4 3 -1 roll put
                   16434:                bvbbox 2 get bvbbox 0 get add 2 div bvbbox 5 3 -1 roll put
                   16435:            grestore
                   16436:        } if
                   16437:        bvbbox 0 get bvbbox 1 get moveto
                   16438:        bvbbox 0 get bvbbox 3 get lineto
                   16439:        bvbbox 5 get bvbbox 4 get 8 mul add dup bvbbox 3 get lineto
                   16440:        bvbbox 1 get lineto closepath clip newpath
                   16441:        0 0 moveto (\357) show
                   16442:        bvbbox 5 get bvbbox 3 get moveto
                   16443:        bvbbox 4 get dup dup
                   16444:        8 mul 0 rlineto
                   16445:        0 exch neg rlineto
                   16446:        8 mul neg 0 rlineto
                   16447:        closepath clip eofill
                   16448:     grestore
                   16449: } def
                   16450: 0707070014230005651006440057030057030000010073060522627501300003400000001712post.src/devpost/charlib/lf%
                   16451: % This stuff has gotten terribly complicated - sorry.
                   16452: %
                   16453: 
                   16454: currentdict /bvbbox known not {/bvbbox [0 0 0 0 0 0 0] def} if
                   16455: 
                   16456: /build_lf {
                   16457:     pop
                   16458:     gsave
                   16459:        currentpoint translate newpath
                   16460:        bvbbox 6 get size ne {
                   16461:            gsave
                   16462:                initgraphics
                   16463:                scaling scaling scale
                   16464:                0 0 moveto
                   16465:                (\357) false charpath flattenpath pathbbox 0 0 size bvbbox astore pop
                   16466:                0 1 idtransform dup mul exch dup mul add sqrt dup
                   16467:                bvbbox 1 get add bvbbox 1 3 -1 roll put
                   16468:                bvbbox 3 get exch sub bvbbox 3 3 -1 roll put
                   16469:                bvbbox 2 get bvbbox 0 get sub bvbbox 4 3 -1 roll put
                   16470:                bvbbox 2 get bvbbox 0 get add 2 div bvbbox 5 3 -1 roll put
                   16471:            grestore
                   16472:        } if
                   16473:        bvbbox 0 get bvbbox 1 get moveto
                   16474:        bvbbox 0 get bvbbox 3 get lineto
                   16475:        bvbbox 5 get bvbbox 4 get 8 mul add dup bvbbox 3 get lineto
                   16476:        bvbbox 1 get lineto closepath clip newpath
                   16477:        0 0 moveto (\357) show
                   16478:        bvbbox 5 get bvbbox 1 get moveto
                   16479:        bvbbox 4 get dup dup
                   16480:        8 mul 0 rlineto
                   16481:        0 exch rlineto
                   16482:        8 mul neg 0 rlineto
                   16483:        closepath clip eofill
                   16484:     grestore
                   16485: } def
                   16486: 0707070014230005661006440057030057030000010073600522627501300003400000004412post.src/devpost/charlib/lh/build_lh {
                   16487: pop
                   16488: gsave
                   16489: size .0022 mul dup scale
                   16490: currentpoint translate
                   16491: 
                   16492: 16 177 moveto
                   16493: 16 188 lineto
                   16494: 21 193 lineto
                   16495: 30 193 lineto
                   16496: 34 189 lineto
                   16497: 36 183 lineto
                   16498: 36 180 lineto
                   16499: 34 174 lineto
                   16500: 27 170 lineto
                   16501: 19 172 lineto
                   16502: 16 177 lineto
                   16503: stroke
                   16504: 
                   16505: 38 194 moveto
                   16506: 38 196 lineto
                   16507: 53 199 lineto
                   16508: 68 201 lineto
                   16509: 83 202 lineto
                   16510: 98 203 lineto
                   16511: 113 204 lineto
                   16512: 128 204 lineto
                   16513: 143 205 lineto
                   16514: 158 205 lineto
                   16515: 173 205 lineto
                   16516: 188 204 lineto
                   16517: 203 203 lineto
                   16518: 218 202 lineto
                   16519: 233 200 lineto
                   16520: 248 198 lineto
                   16521: 263 196 lineto
                   16522: 278 194 lineto
                   16523: 293 190 lineto
                   16524: 308 186 lineto
                   16525: 323 181 lineto
                   16526: 338 176 lineto
                   16527: 353 168 lineto
                   16528: 361 162 lineto
                   16529: 364 153 lineto
                   16530: 366 138 lineto
                   16531: 367 126 lineto
                   16532: 368 106 lineto
                   16533: 369 80 lineto
                   16534: 369 74 lineto
                   16535: 368 60 lineto
                   16536: 367 54 lineto
                   16537: 362 43 lineto
                   16538: 348 34 lineto
                   16539: 333 28 lineto
                   16540: 318 25 lineto
                   16541: 303 26 lineto
                   16542: 288 29 lineto
                   16543: 273 31 lineto
                   16544: 258 32 lineto
                   16545: 243 32 lineto
                   16546: 228 30 lineto
                   16547: 213 27 lineto
                   16548: 198 24 lineto
                   16549: 183 23 lineto
                   16550: 168 23 lineto
                   16551: 153 27 lineto
                   16552: 148 34 lineto
                   16553: 148 47 lineto
                   16554: 153 54 lineto
                   16555: 168 58 lineto
                   16556: 183 58 lineto
                   16557: 198 58 lineto
                   16558: 213 59 lineto
                   16559: 226 60 lineto
                   16560: 228 62 lineto
                   16561: 228 67 lineto
                   16562: 223 71 lineto
                   16563: 208 71 lineto
                   16564: 193 70 lineto
                   16565: 178 70 lineto
                   16566: 163 70 lineto
                   16567: 148 70 lineto
                   16568: 133 71 lineto
                   16569: 123 76 lineto
                   16570: 120 84 lineto
                   16571: 120 91 lineto
                   16572: 122 98 lineto
                   16573: 129 104 lineto
                   16574: 144 106 lineto
                   16575: 159 107 lineto
                   16576: 174 107 lineto
                   16577: 189 107 lineto
                   16578: 202 108 lineto
                   16579: 204 110 lineto
                   16580: 204 117 lineto
                   16581: 201 119 lineto
                   16582: 186 119 lineto
                   16583: 171 119 lineto
                   16584: 156 119 lineto
                   16585: 141 119 lineto
                   16586: 126 119 lineto
                   16587: 111 121 lineto
                   16588: 103 128 lineto
                   16589: 101 137 lineto
                   16590: 101 142 lineto
                   16591: 103 150 lineto
                   16592: 111 158 lineto
                   16593: 126 161 lineto
                   16594: 141 161 lineto
                   16595: 156 162 lineto
                   16596: 171 163 lineto
                   16597: 186 163 lineto
                   16598: 191 165 lineto
                   16599: 192 167 lineto
                   16600: 192 171 lineto
                   16601: 190 174 lineto
                   16602: 176 175 lineto
                   16603: 161 175 lineto
                   16604: 146 175 lineto
                   16605: 131 174 lineto
                   16606: 116 174 lineto
                   16607: 101 174 lineto
                   16608: 86 173 lineto
                   16609: 71 172 lineto
                   16610: 56 171 lineto
                   16611: 41 171 lineto
                   16612: 41 174 lineto
                   16613: 43 178 lineto
                   16614: 43 187 lineto
                   16615: 38 194 lineto
                   16616: stroke
                   16617: 
                   16618: 373 169 moveto
                   16619: 373 176 lineto
                   16620: 375 182 lineto
                   16621: 386 190 lineto
                   16622: 401 193 lineto
                   16623: 408 191 lineto
                   16624: 411 185 lineto
                   16625: 412 181 lineto
                   16626: 414 167 lineto
                   16627: 415 158 lineto
                   16628: 416 144 lineto
                   16629: 417 128 lineto
                   16630: 418 110 lineto
                   16631: 418 60 lineto
                   16632: 417 45 lineto
                   16633: 415 37 lineto
                   16634: 409 34 lineto
                   16635: 394 31 lineto
                   16636: 381 35 lineto
                   16637: 379 42 lineto
                   16638: 379 52 lineto
                   16639: 380 67 lineto
                   16640: 380 77 lineto
                   16641: 379 77 lineto
                   16642: 378 106 lineto
                   16643: 377 121 lineto
                   16644: 376 133 lineto
                   16645: 375 147 lineto
                   16646: 374 158 lineto
                   16647: 373 169 lineto
                   16648: 
                   16649: stroke
                   16650: grestore
                   16651: } def
                   16652: 0707070014230005671006440057030057030000010073070522627501300003400000000222post.src/devpost/charlib/ob/build_ob {
                   16653:     pop
                   16654:     size 3 mul 16 div /rad exch def
                   16655:     currentpoint
                   16656:     newpath
                   16657:     rad add exch rad add exch rad 0 360 arc
                   16658:     stroke
                   16659: } def
                   16660: 0707070014230005701006440057030057030000010073630522627501300003400000001716post.src/devpost/charlib/rc%
                   16661: % This stuff has gotten terribly complicated - sorry.
                   16662: %
                   16663: 
                   16664: currentdict /bvbbox known not {/bvbbox [0 0 0 0 0 0 0] def} if
                   16665: 
                   16666: /build_rc {
                   16667:     pop
                   16668:     gsave
                   16669:        currentpoint translate newpath
                   16670:        bvbbox 6 get size ne {
                   16671:            gsave
                   16672:                initgraphics
                   16673:                scaling scaling scale
                   16674:                0 0 moveto
                   16675:                (\357) false charpath flattenpath pathbbox 0 0 size bvbbox astore pop
                   16676:                0 1 idtransform dup mul exch dup mul add sqrt dup
                   16677:                bvbbox 1 get add bvbbox 1 3 -1 roll put
                   16678:                bvbbox 3 get exch sub bvbbox 3 3 -1 roll put
                   16679:                bvbbox 2 get bvbbox 0 get sub bvbbox 4 3 -1 roll put
                   16680:                bvbbox 2 get bvbbox 0 get add 2 div bvbbox 5 3 -1 roll put
                   16681:            grestore
                   16682:        } if
                   16683:        bvbbox 2 get bvbbox 1 get moveto
                   16684:        bvbbox 2 get bvbbox 3 get lineto
                   16685:        bvbbox 5 get bvbbox 4 get 8 mul sub dup bvbbox 3 get lineto
                   16686:        bvbbox 1 get lineto closepath clip newpath
                   16687:        0 0 moveto (\357) show
                   16688:        bvbbox 5 get bvbbox 3 get moveto
                   16689:        bvbbox 4 get dup dup
                   16690:        8 mul neg 0 rlineto
                   16691:        0 exch neg rlineto
                   16692:        8 mul 0 rlineto
                   16693:        closepath clip eofill
                   16694:     grestore
                   16695: } def
                   16696: 0707070014230005711006440057030057030000010073640522627501300003400000001712post.src/devpost/charlib/rf%
                   16697: % This stuff has gotten terribly complicated - sorry.
                   16698: %
                   16699: 
                   16700: currentdict /bvbbox known not {/bvbbox [0 0 0 0 0 0 0] def} if
                   16701: 
                   16702: /build_rf {
                   16703:     pop
                   16704:     gsave
                   16705:        currentpoint translate newpath
                   16706:        bvbbox 6 get size ne {
                   16707:            gsave
                   16708:                initgraphics
                   16709:                scaling scaling scale
                   16710:                0 0 moveto
                   16711:                (\357) false charpath flattenpath pathbbox 0 0 size bvbbox astore pop
                   16712:                0 1 idtransform dup mul exch dup mul add sqrt dup
                   16713:                bvbbox 1 get add bvbbox 1 3 -1 roll put
                   16714:                bvbbox 3 get exch sub bvbbox 3 3 -1 roll put
                   16715:                bvbbox 2 get bvbbox 0 get sub bvbbox 4 3 -1 roll put
                   16716:                bvbbox 2 get bvbbox 0 get add 2 div bvbbox 5 3 -1 roll put
                   16717:            grestore
                   16718:        } if
                   16719:        bvbbox 2 get bvbbox 1 get moveto
                   16720:        bvbbox 2 get bvbbox 3 get lineto
                   16721:        bvbbox 5 get bvbbox 4 get 8 mul sub dup bvbbox 3 get lineto
                   16722:        bvbbox 1 get lineto closepath clip newpath
                   16723:        0 0 moveto (\357) show
                   16724:        bvbbox 5 get bvbbox 1 get moveto
                   16725:        bvbbox 4 get dup dup
                   16726:        8 mul neg 0 rlineto
                   16727:        0 exch rlineto
                   16728:        8 mul 0 rlineto
                   16729:        closepath clip eofill
                   16730:     grestore
                   16731: } def
                   16732: 0707070014230005721006440057030057030000010073650522627501300003400000004171post.src/devpost/charlib/rh/build_rh {
                   16733: pop
                   16734: gsave
                   16735: size .0022 mul dup scale
                   16736: currentpoint translate
                   16737: 
                   16738: 15 66 moveto
                   16739: 15 86 lineto
                   16740: 16 131 lineto
                   16741: 17 146 lineto
                   16742: 18 158 lineto
                   16743: 19 167 lineto
                   16744: 21 181 lineto
                   16745: 24 190 lineto
                   16746: 34 193 lineto
                   16747: 49 189 lineto
                   16748: 58 182 lineto
                   16749: 60 177 lineto
                   16750: 60 166 lineto
                   16751: 59 156 lineto
                   16752: 58 143 lineto
                   16753: 57 130 lineto
                   16754: 56 117 lineto
                   16755: 55 102 lineto
                   16756: 54 42 lineto
                   16757: 53 39 lineto
                   16758: 49 35 lineto
                   16759: 34 34 lineto
                   16760: 19 39 lineto
                   16761: 16 47 lineto
                   16762: 15 66 lineto
                   16763: stroke
                   16764: 
                   16765: 65 60 moveto
                   16766: 65 111 lineto
                   16767: 66 127 lineto
                   16768: 67 139 lineto
                   16769: 69 153 lineto
                   16770: 72 163 lineto
                   16771: 83 171 lineto
                   16772: 98 177 lineto
                   16773: 113 182 lineto
                   16774: 128 187 lineto
                   16775: 143 190 lineto
                   16776: 158 194 lineto
                   16777: 173 196 lineto
                   16778: 188 199 lineto
                   16779: 203 201 lineto
                   16780: 218 203 lineto
                   16781: 233 205 lineto
                   16782: 248 205 lineto
                   16783: 263 206 lineto
                   16784: 278 206 lineto
                   16785: 293 206 lineto
                   16786: 308 206 lineto
                   16787: 323 206 lineto
                   16788: 338 205 lineto
                   16789: 353 203 lineto
                   16790: 368 202 lineto
                   16791: 383 200 lineto
                   16792: 394 197 lineto
                   16793: 389 190 lineto
                   16794: 389 180 lineto
                   16795: 391 176 lineto
                   16796: 391 173 lineto
                   16797: 380 173 lineto
                   16798: 365 173 lineto
                   16799: 350 174 lineto
                   16800: 335 175 lineto
                   16801: 320 176 lineto
                   16802: 305 176 lineto
                   16803: 290 176 lineto
                   16804: 275 177 lineto
                   16805: 260 177 lineto
                   16806: 245 177 lineto
                   16807: 240 173 lineto
                   16808: 240 170 lineto
                   16809: 245 165 lineto
                   16810: 260 164 lineto
                   16811: 275 164 lineto
                   16812: 290 164 lineto
                   16813: 305 163 lineto
                   16814: 320 160 lineto
                   16815: 327 155 lineto
                   16816: 330 149 lineto
                   16817: 330 134 lineto
                   16818: 328 129 lineto
                   16819: 323 124 lineto
                   16820: 309 121 lineto
                   16821: 294 121 lineto
                   16822: 279 121 lineto
                   16823: 264 121 lineto
                   16824: 249 121 lineto
                   16825: 234 121 lineto
                   16826: 228 118 lineto
                   16827: 228 112 lineto
                   16828: 234 109 lineto
                   16829: 249 109 lineto
                   16830: 264 109 lineto
                   16831: 279 108 lineto
                   16832: 294 108 lineto
                   16833: 306 104 lineto
                   16834: 311 97 lineto
                   16835: 312 91 lineto
                   16836: 312 88 lineto
                   16837: 311 82 lineto
                   16838: 305 74 lineto
                   16839: 290 72 lineto
                   16840: 275 72 lineto
                   16841: 260 72 lineto
                   16842: 245 73 lineto
                   16843: 230 73 lineto
                   16844: 215 73 lineto
                   16845: 205 70 lineto
                   16846: 205 63 lineto
                   16847: 217 60 lineto
                   16848: 232 60 lineto
                   16849: 247 60 lineto
                   16850: 262 60 lineto
                   16851: 277 57 lineto
                   16852: 283 52 lineto
                   16853: 285 44 lineto
                   16854: 285 41 lineto
                   16855: 284 35 lineto
                   16856: 280 30 lineto
                   16857: 268 26 lineto
                   16858: 253 25 lineto
                   16859: 238 26 lineto
                   16860: 223 28 lineto
                   16861: 208 31 lineto
                   16862: 193 33 lineto
                   16863: 178 34 lineto
                   16864: 163 33 lineto
                   16865: 148 31 lineto
                   16866: 133 28 lineto
                   16867: 118 27 lineto
                   16868: 103 28 lineto
                   16869: 88 34 lineto
                   16870: 73 43 lineto
                   16871: 67 52 lineto
                   16872: 65 60 lineto
                   16873: stroke
                   16874: 
                   16875: 396 180 moveto
                   16876: 396 188 lineto
                   16877: 399 194 lineto
                   16878: 410 196 lineto
                   16879: 416 190 lineto
                   16880: 416 180 lineto
                   16881: 415 177 lineto
                   16882: 411 173 lineto
                   16883: 400 173 lineto
                   16884: 396 180 lineto
                   16885: stroke
                   16886: 
                   16887: grestore
                   16888: } def
                   16889: 0707070014230005731006440057030057030000010074000522627501300003400000000320post.src/devpost/charlib/sq/build_sq {
                   16890:     pop
                   16891:     size 2 div /side exch def
                   16892:     currentpoint
                   16893:     newpath
                   16894:     moveto
                   16895:     0 side rlineto
                   16896:     side 0 rlineto
                   16897:     0 side neg rlineto
                   16898:     closepath
                   16899:     font B eq {fill} {stroke} ifelse
                   16900: } def
                   16901: 0707070014230005741006440057030057030000010074010522627501400003400000000130post.src/devpost/charlib/~=/build_~= {
                   16902:     pop
                   16903:     (\176) stringwidth pop neg size -.15 mul (\176\055) ashow
                   16904: } def
                   16905: 0707070014230005751006440057030057030000010074020522627501400003400000000327post.src/devpost/charlib/RC/build_RC {
                   16906:     pop
                   16907:     size 4 div /side exch def
                   16908:     currentpoint
                   16909:     newpath
                   16910:     moveto
                   16911:     0 side 1.5 mul rmoveto
                   16912:     0 side rlineto
                   16913:     side 2.5 mul 0 rlineto
                   16914:     0 side neg rlineto
                   16915:     closepath
                   16916:     fill
                   16917: } def
                   16918: 0707070014230005761006440057030057030000010074030522627501400003400000001051post.src/devpost/charlib/DG%
                   16919: % UMDS danger sign - needs to be cleaned up!
                   16920: %
                   16921: 
                   16922: /build_DG {
                   16923:     /x0 1.5 6 div 72 mul def   % triangle length
                   16924:     pop
                   16925:     gsave
                   16926:        currentpoint translate
                   16927:        1 scaling div ptsize 10 div mul dup scale
                   16928:        2 setlinewidth
                   16929:        0 setlinecap
                   16930:        newpath
                   16931:        0 0 moveto
                   16932:        x0 0 lineto
                   16933:        x0 2 div x0 3 sqrt 2 div mul lineto
                   16934:        closepath fill
                   16935:        1 setgray
                   16936:        /Helvetica-Bold findfont 12 scalefont setfont
                   16937:        0 0 moveto
                   16938:        (!) false charpath pathbbox
                   16939:        exch 4 -1 roll add 2 div x0 2 div exch sub 0 moveto
                   16940:        exch sub x0 3 sqrt 2 div mul exch sub 3 div 0 exch rmoveto
                   16941:        (!) show
                   16942:     grestore
                   16943: } def
                   16944: 
                   16945: 0707070014230005771006440057030057030000010074040522627501400003400000000735post.src/devpost/charlib/PC%
                   16946: % UMDS pencil - needs to be cleaned up.
                   16947: %
                   16948: 
                   16949: /build_PC {
                   16950:     pop
                   16951:     gsave
                   16952:        currentpoint translate
                   16953:        1 scaling div ptsize 10 div mul dup scale
                   16954:        newpath
                   16955:        0 setlinecap
                   16956:        1 setlinejoin
                   16957:        2 setlinewidth
                   16958:        0 1 moveto 12 0 rlineto stroke
                   16959:        0 5 moveto 12 0 rlineto stroke
                   16960:        0 9 moveto 12 0 rlineto stroke
                   16961:        1 setlinewidth
                   16962:        12 .5 moveto 21.27362 5 lineto 12 9.5 lineto stroke
                   16963:        21.27362 5 moveto
                   16964:        .4 9.27362 mul neg .4 4 mul rlineto
                   16965:        0 .8 4 mul neg rlineto
                   16966:        closepath fill
                   16967:     grestore
                   16968: } def
                   16969: 
                   16970: 0707070014230006001006440057030057030000010074050522627501400003400000004404post.src/devpost/charlib/lH/build_lH {
                   16971: pop
                   16972: gsave
                   16973: size .0022 mul dup scale
                   16974: currentpoint translate
                   16975: 
                   16976: 16 177 moveto
                   16977: 16 188 lineto
                   16978: 21 193 lineto
                   16979: 30 193 lineto
                   16980: 34 189 lineto
                   16981: 36 183 lineto
                   16982: 36 180 lineto
                   16983: 34 174 lineto
                   16984: 27 170 lineto
                   16985: 19 172 lineto
                   16986: 16 177 lineto
                   16987: fill
                   16988: 
                   16989: 38 194 moveto
                   16990: 38 196 lineto
                   16991: 53 199 lineto
                   16992: 68 201 lineto
                   16993: 83 202 lineto
                   16994: 98 203 lineto
                   16995: 113 204 lineto
                   16996: 128 204 lineto
                   16997: 143 205 lineto
                   16998: 158 205 lineto
                   16999: 173 205 lineto
                   17000: 188 204 lineto
                   17001: 203 203 lineto
                   17002: 218 202 lineto
                   17003: 233 200 lineto
                   17004: 248 198 lineto
                   17005: 263 196 lineto
                   17006: 278 194 lineto
                   17007: 293 190 lineto
                   17008: 308 186 lineto
                   17009: 323 181 lineto
                   17010: 338 176 lineto
                   17011: 353 168 lineto
                   17012: 361 162 lineto
                   17013: 364 153 lineto
                   17014: 366 138 lineto
                   17015: 367 126 lineto
                   17016: 368 106 lineto
                   17017: 369 80 lineto
                   17018: 369 74 lineto
                   17019: 368 60 lineto
                   17020: 367 54 lineto
                   17021: 362 43 lineto
                   17022: 348 34 lineto
                   17023: 333 28 lineto
                   17024: 318 25 lineto
                   17025: 303 26 lineto
                   17026: 288 29 lineto
                   17027: 273 31 lineto
                   17028: 258 32 lineto
                   17029: 243 32 lineto
                   17030: 228 30 lineto
                   17031: 213 27 lineto
                   17032: 198 24 lineto
                   17033: 183 23 lineto
                   17034: 168 23 lineto
                   17035: 153 27 lineto
                   17036: 148 34 lineto
                   17037: 148 47 lineto
                   17038: 153 54 lineto
                   17039: 168 58 lineto
                   17040: 183 58 lineto
                   17041: 198 58 lineto
                   17042: 213 59 lineto
                   17043: 226 60 lineto
                   17044: 228 62 lineto
                   17045: 228 67 lineto
                   17046: 223 71 lineto
                   17047: 208 71 lineto
                   17048: 193 70 lineto
                   17049: 178 70 lineto
                   17050: 163 70 lineto
                   17051: 148 70 lineto
                   17052: 133 71 lineto
                   17053: 123 76 lineto
                   17054: 120 84 lineto
                   17055: 120 91 lineto
                   17056: 122 98 lineto
                   17057: 129 104 lineto
                   17058: 144 106 lineto
                   17059: 159 107 lineto
                   17060: 174 107 lineto
                   17061: 189 107 lineto
                   17062: 202 108 lineto
                   17063: 204 110 lineto
                   17064: 204 117 lineto
                   17065: 201 119 lineto
                   17066: 186 119 lineto
                   17067: 171 119 lineto
                   17068: 156 119 lineto
                   17069: 141 119 lineto
                   17070: 126 119 lineto
                   17071: 111 121 lineto
                   17072: 103 128 lineto
                   17073: 101 137 lineto
                   17074: 101 142 lineto
                   17075: 103 150 lineto
                   17076: 111 158 lineto
                   17077: 126 161 lineto
                   17078: 141 161 lineto
                   17079: 156 162 lineto
                   17080: 171 163 lineto
                   17081: 186 163 lineto
                   17082: 191 165 lineto
                   17083: 192 167 lineto
                   17084: 192 171 lineto
                   17085: 190 174 lineto
                   17086: 176 175 lineto
                   17087: 161 175 lineto
                   17088: 146 175 lineto
                   17089: 131 174 lineto
                   17090: 116 174 lineto
                   17091: 101 174 lineto
                   17092: 86 173 lineto
                   17093: 71 172 lineto
                   17094: 56 171 lineto
                   17095: 41 171 lineto
                   17096: 41 174 lineto
                   17097: 43 178 lineto
                   17098: 43 187 lineto
                   17099: 38 194 lineto
                   17100: fill
                   17101: 
                   17102: 373 169 moveto
                   17103: 373 176 lineto
                   17104: 375 182 lineto
                   17105: 386 190 lineto
                   17106: 401 193 lineto
                   17107: 408 191 lineto
                   17108: 411 185 lineto
                   17109: 412 181 lineto
                   17110: 414 167 lineto
                   17111: 415 158 lineto
                   17112: 416 144 lineto
                   17113: 417 128 lineto
                   17114: 418 110 lineto
                   17115: 418 60 lineto
                   17116: 417 45 lineto
                   17117: 415 37 lineto
                   17118: 409 34 lineto
                   17119: 394 31 lineto
                   17120: 381 35 lineto
                   17121: 379 42 lineto
                   17122: 379 52 lineto
                   17123: 380 67 lineto
                   17124: 380 77 lineto
                   17125: 379 77 lineto
                   17126: 378 106 lineto
                   17127: 377 121 lineto
                   17128: 376 133 lineto
                   17129: 375 147 lineto
                   17130: 374 158 lineto
                   17131: 373 169 lineto
                   17132: 
                   17133: fill
                   17134: grestore
                   17135: } def
                   17136: 0707070014230006011006440057030057030000010074200522627501400003400000004163post.src/devpost/charlib/rH/build_rH {
                   17137: pop
                   17138: gsave
                   17139: size .0022 mul dup scale
                   17140: currentpoint translate
                   17141: 
                   17142: 15 66 moveto
                   17143: 15 86 lineto
                   17144: 16 131 lineto
                   17145: 17 146 lineto
                   17146: 18 158 lineto
                   17147: 19 167 lineto
                   17148: 21 181 lineto
                   17149: 24 190 lineto
                   17150: 34 193 lineto
                   17151: 49 189 lineto
                   17152: 58 182 lineto
                   17153: 60 177 lineto
                   17154: 60 166 lineto
                   17155: 59 156 lineto
                   17156: 58 143 lineto
                   17157: 57 130 lineto
                   17158: 56 117 lineto
                   17159: 55 102 lineto
                   17160: 54 42 lineto
                   17161: 53 39 lineto
                   17162: 49 35 lineto
                   17163: 34 34 lineto
                   17164: 19 39 lineto
                   17165: 16 47 lineto
                   17166: 15 66 lineto
                   17167: fill
                   17168: 
                   17169: 65 60 moveto
                   17170: 65 111 lineto
                   17171: 66 127 lineto
                   17172: 67 139 lineto
                   17173: 69 153 lineto
                   17174: 72 163 lineto
                   17175: 83 171 lineto
                   17176: 98 177 lineto
                   17177: 113 182 lineto
                   17178: 128 187 lineto
                   17179: 143 190 lineto
                   17180: 158 194 lineto
                   17181: 173 196 lineto
                   17182: 188 199 lineto
                   17183: 203 201 lineto
                   17184: 218 203 lineto
                   17185: 233 205 lineto
                   17186: 248 205 lineto
                   17187: 263 206 lineto
                   17188: 278 206 lineto
                   17189: 293 206 lineto
                   17190: 308 206 lineto
                   17191: 323 206 lineto
                   17192: 338 205 lineto
                   17193: 353 203 lineto
                   17194: 368 202 lineto
                   17195: 383 200 lineto
                   17196: 394 197 lineto
                   17197: 389 190 lineto
                   17198: 389 180 lineto
                   17199: 391 176 lineto
                   17200: 391 173 lineto
                   17201: 380 173 lineto
                   17202: 365 173 lineto
                   17203: 350 174 lineto
                   17204: 335 175 lineto
                   17205: 320 176 lineto
                   17206: 305 176 lineto
                   17207: 290 176 lineto
                   17208: 275 177 lineto
                   17209: 260 177 lineto
                   17210: 245 177 lineto
                   17211: 240 173 lineto
                   17212: 240 170 lineto
                   17213: 245 165 lineto
                   17214: 260 164 lineto
                   17215: 275 164 lineto
                   17216: 290 164 lineto
                   17217: 305 163 lineto
                   17218: 320 160 lineto
                   17219: 327 155 lineto
                   17220: 330 149 lineto
                   17221: 330 134 lineto
                   17222: 328 129 lineto
                   17223: 323 124 lineto
                   17224: 309 121 lineto
                   17225: 294 121 lineto
                   17226: 279 121 lineto
                   17227: 264 121 lineto
                   17228: 249 121 lineto
                   17229: 234 121 lineto
                   17230: 228 118 lineto
                   17231: 228 112 lineto
                   17232: 234 109 lineto
                   17233: 249 109 lineto
                   17234: 264 109 lineto
                   17235: 279 108 lineto
                   17236: 294 108 lineto
                   17237: 306 104 lineto
                   17238: 311 97 lineto
                   17239: 312 91 lineto
                   17240: 312 88 lineto
                   17241: 311 82 lineto
                   17242: 305 74 lineto
                   17243: 290 72 lineto
                   17244: 275 72 lineto
                   17245: 260 72 lineto
                   17246: 245 73 lineto
                   17247: 230 73 lineto
                   17248: 215 73 lineto
                   17249: 205 70 lineto
                   17250: 205 63 lineto
                   17251: 217 60 lineto
                   17252: 232 60 lineto
                   17253: 247 60 lineto
                   17254: 262 60 lineto
                   17255: 277 57 lineto
                   17256: 283 52 lineto
                   17257: 285 44 lineto
                   17258: 285 41 lineto
                   17259: 284 35 lineto
                   17260: 280 30 lineto
                   17261: 268 26 lineto
                   17262: 253 25 lineto
                   17263: 238 26 lineto
                   17264: 223 28 lineto
                   17265: 208 31 lineto
                   17266: 193 33 lineto
                   17267: 178 34 lineto
                   17268: 163 33 lineto
                   17269: 148 31 lineto
                   17270: 133 28 lineto
                   17271: 118 27 lineto
                   17272: 103 28 lineto
                   17273: 88 34 lineto
                   17274: 73 43 lineto
                   17275: 67 52 lineto
                   17276: 65 60 lineto
                   17277: fill
                   17278: 
                   17279: 396 180 moveto
                   17280: 396 188 lineto
                   17281: 399 194 lineto
                   17282: 410 196 lineto
                   17283: 416 190 lineto
                   17284: 416 180 lineto
                   17285: 415 177 lineto
                   17286: 411 173 lineto
                   17287: 400 173 lineto
                   17288: 396 180 lineto
                   17289: fill
                   17290: 
                   17291: grestore
                   17292: } def
                   17293: 0707070014230006021006440057030057030000010074230522627501400004400000010521post.src/devpost/charlib/LH.example%
                   17294: % An example logo character. Building the PostScript program that prints
                   17295: % your company logo is not addressed here; we assume you already have
                   17296: % such a program, that it's relatively simple, and that it prints the
                   17297: % logo by itself on a page. What you'll find here are instructions for
                   17298: % converting that logo program into a character that can be accessed by
                   17299: % troff and dpost.
                   17300: %
                   17301: % Building a new charlib character involves some PostScript programming.
                   17302: % We've tried to isolate parameters that you'll need to change (Xoffset,
                   17303: % Yoffset, and Scaling), but we can't guarantee things will work properly
                   17304: % with every logo program. PostScript is a complex language and subtle
                   17305: % interactions between your logo program and what we've done here can
                   17306: % cause problems.
                   17307: %
                   17308: % Tuning the new character is an iterative process. You may want to adjust
                   17309: % the size of the logo (via Scaling), it's position relative to adjacent
                   17310: % characters and the baseline (Xoffset and Yoffset), and the distance troff
                   17311: % moves after printing the character (width field in file ../S1). The steps
                   17312: % to follow are:
                   17313: %
                   17314: %      1: Create a simple troff test file for the new character. Something
                   17315: %         like,
                   17316: %
                   17317: %              .sp 1i
                   17318: %              .ps 10
                   17319: %              size 10: \(LH
                   17320: %              .sp 1i
                   17321: %              .ps 18
                   17322: %              size 18: \(LH
                   17323: %              .sp 1i
                   17324: %              .ps 36
                   17325: %              size 36: \(LH
                   17326: %              .sp 1i
                   17327: %              .ps 10
                   17328: %              four logo characters: \(LH\(LH\(LH\(LH
                   17329: %
                   17330: %         is sufficient. The test file can go anywhere.
                   17331: % 
                   17332: %      2: Change into directory /usr/lib/font/devpost/charlib. All file
                   17333: %         pathnames will be relative to that directory.
                   17334: %
                   17335: %      3: Save a copy of the working LH logo file. Then replace LH with
                   17336: %         this file (i.e. LH.example). Changes described below should be
                   17337: %         be made in the new LH file (not in LH.example).
                   17338: %
                   17339: %      4: Your PostScript logo program will eventually replace whatever
                   17340: %         you find between the <<StartLogo>> and <<EndLogo>> comment lines
                   17341: %         in the PostScript build_LH procedure (below). What's there now
                   17342: %         prints an example logo that you can use until you understand the
                   17343: %         remaining steps.
                   17344: %
                   17345: %      5: Print your troff test file using (assuming your making changes
                   17346: %         in the devpost charlib directory),
                   17347: %
                   17348: %              troff -Tpost testfile | dpost | lp ...
                   17349: %
                   17350: %      6: Adjust the logo positioning by changing the numbers assigned to
                   17351: %         Xoffset and Yoffset (below). Both are in units of 72 per inch.
                   17352: %         Positive offsets should move the logo to the right and up the
                   17353: %         page.
                   17354: %
                   17355: %      7: Adjust the logo size by changing the the number assigned to
                   17356: %         Scaling. Unitsize also controls scaling, but there's no good
                   17357: %         reason to change both Scaling and Unitsize.
                   17358: %
                   17359: %      8: Control the horizontal distance troff moves after printing the
                   17360: %         new LH character by changing the width (i.e. the number in the
                   17361: %         second column) assigned to LH in file ../S1. Character width
                   17362: %         adjustments should probably wait until you're satisfied with
                   17363: %         the Scaling set in step 7.
                   17364: %
                   17365: %      9: Back to step 5 until your satisfied with the output.
                   17366: %
                   17367: % The remaining steps are suggested but not required:
                   17368: %
                   17369: %      10: Delete PostScript comments in your new LH charlib file - comments
                   17370: %         start with % and go to the end of the line.
                   17371: %
                   17372: %      11: Update the width field assigned to LH in file ../shell.lib. The
                   17373: %         new width should reflect what's currently in your S1 font file.
                   17374: %
                   17375: %      12: Make a similiar set of changes in /usr/lib/font/devLatin1/charlib.
                   17376: %         You can use the devpost version of LH to devLatin1/charlib/LH,
                   17377: %         but changes to files devLatin1/S1 and devLatin1/shell.lib must be
                   17378: %         entered by hand.
                   17379: %
                   17380: 
                   17381: /Logo_Dict 100 dict dup begin
                   17382:        /Xoffset 0 def                  % 72 dpi with positive to the right
                   17383:        /Yoffset 0 def                  % 72 dpi with positive up the page
                   17384:        /Scaling 1.0 def                % adjust this number to change the size
                   17385:        /Unitsize 36 def                % for point size scaling - leave it be
                   17386:        /showpage {} def
                   17387: end def
                   17388: 
                   17389: /build_LH {                            % don't bind this procedure
                   17390:        Logo_Dict begin
                   17391:                gsave
                   17392:                /charwidth exch def
                   17393:                currentpoint translate
                   17394:                resolution 72 div dup scale
                   17395:                Xoffset Yoffset translate
                   17396:                Scaling Scaling scale
                   17397:                ptsize Unitsize div dup scale
                   17398: 
                   17399:                %% Replace everything between the <<StartLogo>> and <<EndLogo>>
                   17400:                %% comment lines by the PostScript program that prints your
                   17401:                %% logo.
                   17402: 
                   17403:                %% <<StartLogo>>
                   17404:                        newpath
                   17405:                        .5 .5 scale
                   17406:                        0 0 moveto
                   17407:                        100 0 lineto
                   17408:                        100 100 lineto
                   17409:                        closepath
                   17410:                        .5 setgray
                   17411:                        fill
                   17412:                        0 setgray
                   17413:                        10 10 translate
                   17414:                        45 rotate
                   17415:                        0 5 moveto
                   17416:                        /Helvetica findfont 18 scalefont setfont
                   17417:                        (Example Logo) show
                   17418:                %% <<EndLogo>>
                   17419: 
                   17420:                grestore
                   17421:        end
                   17422: } def
                   17423: 
                   17424: 0707070014230006031006440057030057030000010074400522627501400003400000001725post.src/devpost/charlib/LA/LOGO-dict-mm dup where not
                   17425: { dup 64 dict def currentdict } if
                   17426: exch get
                   17427: begin
                   17428: /l {  lineto } def
                   17429: /rl {  rlineto } def
                   17430: /m {  moveto } def
                   17431: /rm {  rmoveto } def
                   17432: /C { closepath } def
                   17433: /c {  curveto } def
                   17434: /rc {  rcurveto } def
                   17435: /T { m 0 29 rl -9.5 0 rl 0 7 rl 29 0 rl 0 -7 rl -9.5 0 rl 0 -29 rl C } def
                   17436: /ATT {
                   17437: newpath
                   17438: 1 36 div dup scale
                   17439: 0  0 m  12 36 rl  8 0 rl -11 -36 rl C
                   17440: 25  0 m -11 36 rl  8 0 rl  12 -36 rl C
                   17441: 10  7 m   0  7 rl 14 0 rl   0  -7 rl C
                   17442: 36  0 T
                   17443: 80  6 m -3 0 -5 1.2 -6 2 rc -12 10 rl -2.4 2 -2.7 6 0 6 rc
                   17444: 1 0 2 -1 2 -2 rc 0 -4 rl 7 0 rl 0 4 rl
                   17445: 0 5 -3 7 -9 7 rc -6 0 -9 -3 -9 -7 rc
                   17446: 0 -2 0 -3.6 2 -6 rc 12 -10 rl 6 -5 10 -6 13 -6 rc C
                   17447: 71 18 m 0 -6 rl 0 -5 -3 -7 -7 -7 rc -3 0 -5 2 -5 4 rc 0 1 0 3 2 4 rc
                   17448: -4 5 rl -4 -2 -6 -6 -6 -9 rc 0 -7 6 -10 13 -10 rc
                   17449: 9 0 14 6 14 11 rc 0 8 rl C
                   17450: 82  0 T
                   17451: 36 dup scale
                   17452: } def
                   17453: end
                   17454: /build_LA {
                   17455: pop
                   17456: LOGO-dict-mm begin
                   17457: gsave
                   17458: currentpoint translate
                   17459: size 2.56 div dup scale                % was size 2.75 div dup scale
                   17460: .02 0 translate
                   17461: ATT fill
                   17462: grestore
                   17463: end
                   17464: } def
                   17465: 0707070014231217221006440057030057030000010644200522627501400003300000035321post.src/devpost/shell.lib#
                   17466: # Shell library - for building devpost tables. Original collection was
                   17467: # built on a Version 47.0 PS-810.
                   17468: #
                   17469: 
                   17470: RESOLUTION=720
                   17471: UNITWIDTH=10
                   17472: 
                   17473: #
                   17474: # BuiltinTables returns command lines that generate PostScript programs
                   17475: # for building a typesetter description file and font width tables for
                   17476: # a relatively standard collection of fonts. Use awk to select a command
                   17477: # line or modify an existing command to build a width table for a new
                   17478: # font.
                   17479: #
                   17480: 
                   17481: BuiltinTables() {
                   17482:        cat <<-'//End of BuiltinTables'
                   17483:                Proportional    R       Times-Roman
                   17484:                Proportional    I       Times-Italic
                   17485:                Proportional    B       Times-Bold
                   17486:                Proportional    BI      Times-BoldItalic
                   17487:                Proportional    AB      AvantGarde-Demi
                   17488:                Proportional    AI      AvantGarde-BookOblique
                   17489:                Proportional    AR      AvantGarde-Book
                   17490:                Proportional    AX      AvantGarde-DemiOblique
                   17491:                Proportional    H       Helvetica
                   17492:                Proportional    HB      Helvetica-Bold
                   17493:                Proportional    HI      Helvetica-Oblique
                   17494:                Proportional    HX      Helvetica-BoldOblique
                   17495:                Proportional    Hb      Helvetica-Narrow-Bold
                   17496:                Proportional    Hi      Helvetica-Narrow-Oblique
                   17497:                Proportional    Hr      Helvetica-Narrow
                   17498:                Proportional    Hx      Helvetica-Narrow-BoldOblique
                   17499:                Proportional    KB      Bookman-Demi
                   17500:                Proportional    KI      Bookman-LightItalic
                   17501:                Proportional    KR      Bookman-Light
                   17502:                Proportional    KX      Bookman-DemiItalic
                   17503:                Proportional    NB      NewCenturySchlbk-Bold
                   17504:                Proportional    NI      NewCenturySchlbk-Italic
                   17505:                Proportional    NR      NewCenturySchlbk-Roman
                   17506:                Proportional    NX      NewCenturySchlbk-BoldItalic
                   17507:                Proportional    PA      Palatino-Roman
                   17508:                Proportional    PB      Palatino-Bold
                   17509:                Proportional    PI      Palatino-Italic
                   17510:                Proportional    PX      Palatino-BoldItalic
                   17511:                Proportional    ZI      ZapfChancery-MediumItalic
                   17512:                FixedWidth      C       Courier
                   17513:                FixedWidth      CB      Courier-Bold
                   17514:                FixedWidth      CI      Courier-Oblique
                   17515:                FixedWidth      CO      Courier
                   17516:                FixedWidth      CW      Courier
                   17517:                FixedWidth      CX      Courier-BoldOblique
                   17518:                Dingbats        ZD      ZapfDingbats
                   17519:                Greek           GR      Symbol
                   17520:                Symbol          S       Symbol
                   17521:                Special         S1      Times-Roman
                   17522:                Description     DESC    ---
                   17523:        //End of BuiltinTables
                   17524: }
                   17525: 
                   17526: #
                   17527: # AllTables prints the complete list of builtin font names.
                   17528: #
                   17529: 
                   17530: AllTables() {
                   17531:        BuiltinTables | awk '{print $2}'
                   17532: }
                   17533: 
                   17534: #
                   17535: # Charset functions generate keyword/value pairs (as PostScript objects)
                   17536: # that describe the character set available in a font. The keyword is a
                   17537: # PostScript string that represents troff's name for the character. The
                   17538: # value is usually the literal name (i.e. begins with a /) assigned to
                   17539: # the character in the PostScript font. The value can also be an integer
                   17540: # or a PostScript string. An integer value is used as an index in the
                   17541: # current font's Encoding array. A string value is returned to the host
                   17542: # unchanged when the entry for the character is constructed. Entries that
                   17543: # have (") as their value are synonyms for the preceeding character.
                   17544: #
                   17545: 
                   17546: StandardCharset() {
                   17547:        cat <<-'//End of StandardCharset'
                   17548:                (!)     /exclam
                   17549:                (")     /quotedbl
                   17550:                (dq)    (")
                   17551:                (#)     /numbersign
                   17552:                ($)     /dollar
                   17553:                (%)     /percent
                   17554:                (&)     /ampersand
                   17555:                (')     /quoteright
                   17556:                (\()    /parenleft
                   17557:                (\))    /parenright
                   17558:                (*)     /asterisk
                   17559:                (+)     /plus
                   17560:                (,)     /comma
                   17561:                (hy)    /hyphen
                   17562:                (-)     (")                     % synonym
                   17563:                (.)     /period
                   17564:                (/)     /slash
                   17565:                (0)     /zero
                   17566:                (1)     /one
                   17567:                (2)     /two
                   17568:                (3)     /three
                   17569:                (4)     /four
                   17570:                (5)     /five
                   17571:                (6)     /six
                   17572:                (7)     /seven
                   17573:                (8)     /eight
                   17574:                (9)     /nine
                   17575:                (:)     /colon
                   17576:                (;)     /semicolon
                   17577:                (<)     /less
                   17578:                (=)     /equal
                   17579:                (>)     /greater
                   17580:                (?)     /question
                   17581:                (@)     /at
                   17582:                (A)     /A
                   17583:                (B)     /B
                   17584:                (C)     /C
                   17585:                (D)     /D
                   17586:                (E)     /E
                   17587:                (F)     /F
                   17588:                (G)     /G
                   17589:                (H)     /H
                   17590:                (I)     /I
                   17591:                (J)     /J
                   17592:                (K)     /K
                   17593:                (L)     /L
                   17594:                (M)     /M
                   17595:                (N)     /N
                   17596:                (O)     /O
                   17597:                (P)     /P
                   17598:                (Q)     /Q
                   17599:                (R)     /R
                   17600:                (S)     /S
                   17601:                (T)     /T
                   17602:                (U)     /U
                   17603:                (V)     /V
                   17604:                (W)     /W
                   17605:                (X)     /X
                   17606:                (Y)     /Y
                   17607:                (Z)     /Z
                   17608:                ([)     /bracketleft
                   17609:                (\\)    /backslash
                   17610:                (bs)    (")
                   17611:                (])     /bracketright
                   17612:                (^)     /asciicircum
                   17613:                (_)     /underscore
                   17614:                (`)     /quoteleft
                   17615:                (a)     /a
                   17616:                (b)     /b
                   17617:                (c)     /c
                   17618:                (d)     /d
                   17619:                (e)     /e
                   17620:                (f)     /f
                   17621:                (g)     /g
                   17622:                (h)     /h
                   17623:                (i)     /i
                   17624:                (j)     /j
                   17625:                (k)     /k
                   17626:                (l)     /l
                   17627:                (m)     /m
                   17628:                (n)     /n
                   17629:                (o)     /o
                   17630:                (p)     /p
                   17631:                (q)     /q
                   17632:                (r)     /r
                   17633:                (s)     /s
                   17634:                (t)     /t
                   17635:                (u)     /u
                   17636:                (v)     /v
                   17637:                (w)     /w
                   17638:                (x)     /x
                   17639:                (y)     /y
                   17640:                (z)     /z
                   17641:                ({)     /braceleft
                   17642:                (|)     /bar
                   17643:                (})     /braceright
                   17644:                (~)     /asciitilde
                   17645:                (!!)    /exclamdown
                   17646:                (ct)    /cent
                   17647:                (ps)    /sterling
                   17648:                (fr)    /fraction
                   17649:                (yn)    /yen
                   17650:                (fn)    /florin
                   17651:                (sc)    /section
                   17652:                (cr)    /currency
                   17653:                (---)   /quotesingle
                   17654:                (``)    /quotedblleft
                   17655:                (---)   /guillemotleft
                   17656:                (---)   /guilsinglleft
                   17657:                (---)   /guilsinglright
                   17658:                (fi)    /fi
                   17659:                (fl)    /fl
                   17660:                (en)    /endash
                   17661:                (\\-)   (")
                   17662:                (dg)    /dagger
                   17663:                (dd)    /daggerdbl
                   17664:                (---)   /periodcentered
                   17665:                (pg)    /paragraph
                   17666:                (---)   /bullet
                   17667:                (---)   /quotesinglbase
                   17668:                (---)   /quotedblbase
                   17669:                ('')    /quotedblright
                   17670:                (---)   /guillemotright
                   17671:                (---)   /ellipsis
                   17672:                (---)   /perthousand
                   17673:                (??)    /questiondown
                   17674:                (ga)    /grave
                   17675:                (\\`)   (")
                   17676:                (aa)    /acute
                   17677:                (\\')   (")
                   17678:                (^a)    /circumflex
                   17679:                (~a)    /tilde
                   17680:                (-a)    /macron
                   17681:                (Ua)    /breve
                   17682:                (.a)    /dotaccent
                   17683:                (:a)    /dieresis
                   17684:                (oa)    /ring
                   17685:                (,a)    /cedilla
                   17686:                ("a)    /hungarumlaut
                   17687:                (Ca)    /ogonek
                   17688:                (va)    /caron
                   17689:                (em)    /emdash
                   17690:                (---)   /AE
                   17691:                (---)   /ordfeminine
                   17692:                (---)   /Lslash
                   17693:                (---)   /Oslash
                   17694:                (---)   /OE
                   17695:                (---)   /ordmasculine
                   17696:                (---)   /ae
                   17697:                (---)   /dotlessi
                   17698:                (---)   /lslash
                   17699:                (---)   /oslash
                   17700:                (---)   /oe
                   17701:                (---)   /germandbls
                   17702:        //End of StandardCharset
                   17703: }
                   17704: 
                   17705: SymbolCharset() {
                   17706:        cat <<-'//End of SymbolCharset'
                   17707:                (---)   /exclam
                   17708:                (fa)    /universal
                   17709:                (---)   /numbersign
                   17710:                (te)    /existential
                   17711:                (---)   /percent
                   17712:                (---)   /ampersand
                   17713:                (st)    /suchthat
                   17714:                (---)   /parenleft
                   17715:                (---)   /parenright
                   17716:                (**)    /asteriskmath
                   17717:                (pl)    /plus
                   17718:                (---)   /comma
                   17719:                (mi)    /minus
                   17720:                (---)   /period
                   17721:                (sl)    /slash
                   17722:                (---)   /zero
                   17723:                (---)   /one
                   17724:                (---)   /two
                   17725:                (---)   /three
                   17726:                (---)   /four
                   17727:                (---)   /five
                   17728:                (---)   /six
                   17729:                (---)   /seven
                   17730:                (---)   /eight
                   17731:                (---)   /nine
                   17732:                (---)   /colon
                   17733:                (---)   /semicolon
                   17734:                (<)     /less
                   17735:                (eq)    /equal
                   17736:                (>)     /greater
                   17737:                (---)   /question
                   17738:                (cg)    /congruent
                   17739:                (*A)    /Alpha
                   17740:                (*B)    /Beta
                   17741:                (*X)    /Chi
                   17742:                (*D)    /Delta
                   17743:                (*E)    /Epsilon
                   17744:                (*F)    /Phi
                   17745:                (*G)    /Gamma
                   17746:                (*Y)    /Eta
                   17747:                (*I)    /Iota
                   17748:                (---)   /theta1
                   17749:                (*K)    /Kappa
                   17750:                (*L)    /Lambda
                   17751:                (*M)    /Mu
                   17752:                (*N)    /Nu
                   17753:                (*O)    /Omicron
                   17754:                (*P)    /Pi
                   17755:                (*H)    /Theta
                   17756:                (*R)    /Rho
                   17757:                (*S)    /Sigma
                   17758:                (*T)    /Tau
                   17759:                (*U)    /Upsilon
                   17760:                (ts)    /sigma1
                   17761:                (*W)    /Omega
                   17762:                (*C)    /Xi
                   17763:                (*Q)    /Psi
                   17764:                (*Z)    /Zeta
                   17765:                (---)   /bracketleft
                   17766:                (tf)    /therefore
                   17767:                (---)   /bracketright
                   17768:                (pp)    /perpendicular
                   17769:                (ul)    /underscore
                   17770:                (_)     (")                     % synonym
                   17771:                (rn)    /radicalex
                   17772:                (*a)    /alpha
                   17773:                (*b)    /beta
                   17774:                (*x)    /chi
                   17775:                (*d)    /delta
                   17776:                (*e)    /epsilon
                   17777:                (*f)    /phi
                   17778:                (*g)    /gamma
                   17779:                (*y)    /eta
                   17780:                (*i)    /iota
                   17781:                (---)   /phi1
                   17782:                (*k)    /kappa
                   17783:                (*l)    /lambda
                   17784:                (*m)    /mu
                   17785:                (*n)    /nu
                   17786:                (*o)    /omicron
                   17787:                (*p)    /pi
                   17788:                (*h)    /theta
                   17789:                (*r)    /rho
                   17790:                (*s)    /sigma
                   17791:                (*t)    /tau
                   17792:                (*u)    /upsilon
                   17793:                (---)   /omega1
                   17794:                (*w)    /omega
                   17795:                (*c)    /xi
                   17796:                (*q)    /psi
                   17797:                (*z)    /zeta
                   17798:                (---)   /braceleft
                   17799:                (or)    /bar
                   17800:                (---)   /braceright
                   17801:                (ap)    /similar
                   17802:                (---)   /Upsilon1
                   17803:                (fm)    /minute
                   17804:                (<=)    /lessequal
                   17805:                (---)   /fraction
                   17806:                (if)    /infinity
                   17807:                (---)   /florin
                   17808:                (---)   /club
                   17809:                (---)   /diamond
                   17810:                (---)   /heart
                   17811:                (---)   /spade
                   17812:                (ab)    /arrowboth
                   17813:                (<-)    /arrowleft
                   17814:                (ua)    /arrowup
                   17815:                (->)    /arrowright
                   17816:                (da)    /arrowdown
                   17817:                (de)    /degree
                   17818:                (+-)    /plusminus
                   17819:                (---)   /second
                   17820:                (>=)    /greaterequal
                   17821:                (mu)    /multiply
                   17822:                (pt)    /proportional
                   17823:                (pd)    /partialdiff
                   17824:                (bu)    /bullet
                   17825:                (di)    /divide
                   17826:                (!=)    /notequal
                   17827:                (==)    /equivalence
                   17828:                (~~)    /approxequal
                   17829:                (el)    /ellipsis
                   17830:                (av)    /arrowvertex
                   17831:                (ah)    /arrowhorizex
                   17832:                (CR)    /carriagereturn
                   17833:                (af)    /aleph
                   17834:                (If)    /Ifraktur
                   17835:                (Rf)    /Rfraktur
                   17836:                (ws)    /weierstrass
                   17837:                (Ox)    /circlemultiply
                   17838:                (O+)    /circleplus
                   17839:                (es)    /emptyset
                   17840:                (ca)    /intersection
                   17841:                (cu)    /union
                   17842:                (sp)    /propersuperset
                   17843:                (ip)    /reflexsuperset
                   17844:                (!b)    /notsubset
                   17845:                (sb)    /propersubset
                   17846:                (ib)    /reflexsubset
                   17847:                (mo)    /element
                   17848:                (!m)    /notelement
                   17849:                (an)    /angle
                   17850:                (gr)    /gradient
                   17851:                (rg)    /registerserif
                   17852:                (co)    /copyrightserif
                   17853:                (tm)    /trademarkserif
                   17854:                (---)   /product
                   17855:                (sr)    /radical
                   17856:                (c.)    /dotmath
                   17857:                (no)    /logicalnot
                   17858:                (l&)    /logicaland
                   17859:                (l|)    /logicalor
                   17860:                (---)   /arrowdblboth
                   17861:                (---)   /arrowdblleft
                   17862:                (---)   /arrowdblup
                   17863:                (---)   /arrowdblright
                   17864:                (---)   /arrowdbldown
                   17865:                (lz)    /lozenge
                   17866:                (b<)    /angleleft
                   17867:                (RG)    /registersans
                   17868:                (CO)    /copyrightsans
                   17869:                (TM)    /trademarksans
                   17870:                (---)   /summation
                   17871:                (LT)    /parenlefttp
                   17872:                (br)    /parenleftex
                   17873:                (LX)    (")                     % synonym
                   17874:                (LB)    /parenleftbt
                   17875:                (lc)    /bracketlefttp
                   17876:                (lx)    /bracketleftex
                   17877:                (lf)    /bracketleftbt
                   17878:                (lt)    /bracelefttp
                   17879:                (lk)    /braceleftmid
                   17880:                (lb)    /braceleftbt
                   17881:                (bv)    /braceex
                   17882:                (|)     (")                     % synonym
                   17883:                (b>)    /angleright
                   17884:                (is)    /integral
                   17885:                (---)   /integraltp
                   17886:                (---)   /integralex
                   17887:                (---)   /integralbt
                   17888:                (RT)    /parenrighttp
                   17889:                (RX)    /parenrightex
                   17890:                (RB)    /parenrightbt
                   17891:                (rc)    /bracketrighttp
                   17892:                (rx)    /bracketrightex
                   17893:                (rf)    /bracketrightbt
                   17894:                (rt)    /bracerighttp
                   17895:                (rk)    /bracerightmid
                   17896:                (rb)    /bracerightbt
                   17897:                (~=)    (55     0       1)      % charlib
                   17898:        //End of SymbolCharset
                   17899: }
                   17900: 
                   17901: SpecialCharset() {
                   17902:        cat <<-'//End of SpecialCharset'
                   17903:                (ru)    /underscore
                   17904:                (ff)    (60     2       1)      % charlib
                   17905:                (Fi)    (84     2       1)      % charlib
                   17906:                (Fl)    (84     2       1)      % charlib
                   17907:                (14)    (75     2       1)      % charlib
                   17908:                (12)    (75     2       1)      % charlib
                   17909:                (34)    (75     2       1)      % charlib
                   17910:                (bx)    (50     2       1)      % charlib
                   17911:                (ob)    (38     2       1)      % charlib
                   17912:                (ci)    (75     0       1)      % charlib
                   17913:                (sq)    (50     2       1)      % charlib
                   17914:                (Sl)    (50     2       1)      % charlib
                   17915:                (L1)    (110    1       1)      % charlib
                   17916:                (LA)    (110    1       1)      % charlib
                   17917:                (LV)    (110    3       1)      % charlib
                   17918:                (LH)    (210    1       1)      % charlib
                   17919:                (lh)    (100    0       1)      % charlib
                   17920:                (rh)    (100    0       1)      % charlib
                   17921:                (lH)    (100    0       1)      % charlib
                   17922:                (rH)    (100    0       1)      % charlib
                   17923:                (PC)    (220    2       1)      % charlib
                   17924:                (DG)    (185    2       1)      % charlib
                   17925:        //End of SpecialCharset
                   17926: }
                   17927: 
                   17928: DingbatsCharset() {
                   17929:        cat <<-'//End of DingbatsCharset'
                   17930:                (!)     33
                   17931:                (")     34
                   17932:                (#)     35
                   17933:                ($)     36
                   17934:                (%)     37
                   17935:                (&)     38
                   17936:                (')     39
                   17937:                (\()    40
                   17938:                (\))    41
                   17939:                (*)     42
                   17940:                (+)     43
                   17941:                (,)     44
                   17942:                (-)     45
                   17943:                (.)     46
                   17944:                (/)     47
                   17945:                (0)     48
                   17946:                (1)     49
                   17947:                (2)     50
                   17948:                (3)     51
                   17949:                (4)     52
                   17950:                (5)     53
                   17951:                (6)     54
                   17952:                (7)     55
                   17953:                (8)     56
                   17954:                (9)     57
                   17955:                (:)     58
                   17956:                (;)     59
                   17957:                (<)     60
                   17958:                (=)     61
                   17959:                (>)     62
                   17960:                (?)     63
                   17961:                (@)     64
                   17962:                (A)     65
                   17963:                (B)     66
                   17964:                (C)     67
                   17965:                (D)     68
                   17966:                (E)     69
                   17967:                (F)     70
                   17968:                (G)     71
                   17969:                (H)     72
                   17970:                (I)     73
                   17971:                (J)     74
                   17972:                (K)     75
                   17973:                (L)     76
                   17974:                (M)     77
                   17975:                (N)     78
                   17976:                (O)     79
                   17977:                (P)     80
                   17978:                (Q)     81
                   17979:                (R)     82
                   17980:                (S)     83
                   17981:                (T)     84
                   17982:                (U)     85
                   17983:                (V)     86
                   17984:                (W)     87
                   17985:                (X)     88
                   17986:                (Y)     89
                   17987:                (Z)     90
                   17988:                ([)     91
                   17989:                (\\)    92
                   17990:                (])     93
                   17991:                (^)     94
                   17992:                (_)     95
                   17993:                (`)     96
                   17994:                (a)     97
                   17995:                (b)     98
                   17996:                (c)     99
                   17997:                (d)     100
                   17998:                (e)     101
                   17999:                (f)     102
                   18000:                (g)     103
                   18001:                (h)     104
                   18002:                (i)     105
                   18003:                (j)     106
                   18004:                (k)     107
                   18005:                (l)     108
                   18006:                (m)     109
                   18007:                (n)     110
                   18008:                (o)     111
                   18009:                (p)     112
                   18010:                (q)     113
                   18011:                (r)     114
                   18012:                (s)     115
                   18013:                (t)     116
                   18014:                (u)     117
                   18015:                (v)     118
                   18016:                (w)     119
                   18017:                (x)     120
                   18018:                (y)     121
                   18019:                (z)     122
                   18020:                ({)     123
                   18021:                (|)     124
                   18022:                (})     125
                   18023:                (~)     126
                   18024:                (hy)    161
                   18025:                (em)    162
                   18026:                (de)    163
                   18027:                (\\-)   164
                   18028:                (en)    165
                   18029:                (ff)    166
                   18030:                (fi)    167
                   18031:                (fl)    168
                   18032:                (Fi)    169
                   18033:                (Fl)    170
                   18034:                (fm)    171
                   18035:                (ru)    172
                   18036:                (dg)    173
                   18037:                (bu)    174
                   18038:                (14)    175
                   18039:                (34)    176
                   18040:                (12)    177
                   18041:                (ct)    178
                   18042:                (rg)    179
                   18043:                (sq)    180
                   18044:                (sl)    181
                   18045:                (ul)    182
                   18046:                (or)    183
                   18047:                (no)    184
                   18048:                (->)    185
                   18049:                (<-)    186
                   18050:                (da)    187
                   18051:                (lh)    188
                   18052:                (ua)    189
                   18053:                (ab)    190
                   18054:                (!b)    191
                   18055:                (aa)    192
                   18056:                (!m)    193
                   18057:                (ga)    194
                   18058:                (pl)    195
                   18059:                (mi)    196
                   18060:                (mu)    197
                   18061:                (di)    198
                   18062:                (eq)    199
                   18063:                (==)    200
                   18064:                (>=)    201
                   18065:                (<=)    202
                   18066:                (!=)    203
                   18067:                (+-)    204
                   18068:                (-+)    205
                   18069:                (ap)    206
                   18070:                (~=)    207
                   18071:                (gr)    208
                   18072:                (is)    209
                   18073:                (pd)    210
                   18074:                (if)    211
                   18075:                (sr)    212
                   18076:                (rn)    213
                   18077:                (sb)    214
                   18078:                (sp)    215
                   18079:                (cu)    216
                   18080:                (ca)    217
                   18081:                (ib)    218
                   18082:                (ip)    219
                   18083:                (mo)    220
                   18084:                (es)    221
                   18085:                (sc)    222
                   18086:                (dd)    223
                   18087:                (lc)    224
                   18088:                (rc)    225
                   18089:                (lf)    226
                   18090:                (rf)    227
                   18091:                (bv)    228
                   18092:                (**)    229
                   18093:                (br)    230
                   18094:                (ci)    231
                   18095:                (ts)    232
                   18096:                (co)    233
                   18097:                (lt)    234
                   18098:                (rt)    235
                   18099:                (lb)    236
                   18100:                (rb)    237
                   18101:                (lk)    238
                   18102:                (rk)    239
                   18103:                (rh)    241
                   18104:                (tm)    242
                   18105:                (Sl)    243
                   18106:                (ps)    244
                   18107:                (cs)    245
                   18108:                (cy)    246
                   18109:                (as)    247
                   18110:                (os)    248
                   18111:                (=.)    249
                   18112:                (ld)    250
                   18113:                (rd)    251
                   18114:                (le)    252
                   18115:                (ge)    253
                   18116:                (pp)    254
                   18117:        //End of DingbatsCharset
                   18118: }
                   18119: 
                   18120: #
                   18121: # Generating functions output PostScript programs that build font width
                   18122: # tables or a typesetter description file. Send the program to a printer
                   18123: # and the complete table will come back on the serial port. All write on
                   18124: # stdout and assume the prologue and other required PostScript files are
                   18125: # all available.
                   18126: #
                   18127: 
                   18128: Proportional() {
                   18129:        echo "/unitwidth $UNITWIDTH def"
                   18130:        echo "/resolution $RESOLUTION def"
                   18131:        echo "/charset ["
                   18132:                # Get <>_ and | from S. Use accents for ascii ^ and ~.
                   18133:                StandardCharset | awk '
                   18134:                        $1 == "(<)" && $2 == "/less" {$1 = "(---)"}
                   18135:                        $1 == "(>)" && $2 == "/greater" {$1 = "(---)"}
                   18136:                        $1 == "(_)" && $2 == "/underscore" {$1 = "(---)"}
                   18137:                        $1 == "(|)" && $2 == "/bar" {$1 = "(---)"}
                   18138:                        $1 == "(^)" && $2 == "/asciicircum" {$1 = "(---)"}
                   18139:                        $1 == "(~)" && $2 == "/asciitilde" {$1 = "(---)"}
                   18140:                        {printf "%s\t%s\n", $1, $2}
                   18141:                        $2 == "/circumflex" {printf "(^)\t(\")\n"}
                   18142:                        $2 == "/tilde" {printf "(~)\t(\")\n"}
                   18143:                '
                   18144:        echo "] def"
                   18145: 
                   18146:        echo "/$2 SelectFont"
                   18147:        echo "(opO) SetAscender"
                   18148: 
                   18149:        echo "(name $1\\\\n) Print"
                   18150:        echo "(fontname $2\\\\n) Print"
                   18151:        echo "/$1 NamedInPrologue"
                   18152:        echo "(ligatures fi fl 0\\\\n) Print"
                   18153:        echo "(spacewidth ) Print 32 GetWidth Print (\n) Print"
                   18154:        echo "(charset\\\\n) Print"
                   18155:        echo "BuildFontCharset"
                   18156: }
                   18157: 
                   18158: FixedWidth() {
                   18159:        echo "/unitwidth $UNITWIDTH def"
                   18160:        echo "/resolution $RESOLUTION def"
                   18161:        echo "/charset ["
                   18162:                # awk is not important - it's only here for compatibility
                   18163:                StandardCharset | awk '
                   18164:                        $1 == "(fi)" || $1 == "(fl)" {next}
                   18165:                        {printf "%s\t%s\n", $1, $2}
                   18166:                        $2 == "/circumflex" {printf "(^)\t(\")\n"}
                   18167:                        $2 == "/tilde" {printf "(~)\t(\")\n"}
                   18168:        '
                   18169:        echo "] def"
                   18170: 
                   18171:        echo "/$2 SelectFont"
                   18172:        echo "(opO) SetAscender"
                   18173: 
                   18174:        echo "(name $1\\\\n) Print"
                   18175:        echo "(fontname $2\\\\n) Print"
                   18176:        echo "/$1 NamedInPrologue"
                   18177:        echo "(spacewidth ) Print 32 GetWidth Print (\n) Print"
                   18178:        echo "(charset\\\\n) Print"
                   18179:        echo "BuildFontCharset"
                   18180: }
                   18181: 
                   18182: Dingbats() {
                   18183:        echo "/unitwidth $UNITWIDTH def"
                   18184:        echo "/resolution $RESOLUTION def"
                   18185:        echo "/charset ["
                   18186:                DingbatsCharset
                   18187:        echo "] def"
                   18188: 
                   18189:        echo "/$2 SelectFont"
                   18190:        echo "(   ) SetAscender"
                   18191: 
                   18192:        echo "(name $1\\\\n) Print"
                   18193:        echo "(fontname $2\\\\n) Print"
                   18194:        echo "/$1 NamedInPrologue"
                   18195:        echo "(charset\\\\n) Print"
                   18196:        echo "BuildFontCharset"
                   18197: }
                   18198: 
                   18199: Greek() {
                   18200:        echo "/unitwidth $UNITWIDTH def"
                   18201:        echo "/resolution $RESOLUTION def"
                   18202:        echo "/charset ["
                   18203:                SymbolCharset | awk '$1 ~ /\(\*[a-zA-Z]\)/'
                   18204:        echo "] def"
                   18205: 
                   18206:        echo "/$2 SelectFont"
                   18207:        echo "(orO) SetAscender"
                   18208: 
                   18209:        echo "(name $1\\\\n) Print"
                   18210:        echo "(fontname $2\\\\n) Print"
                   18211:        echo "/$1 NamedInPrologue"
                   18212:        echo "(spacewidth ) Print 32 GetWidth Print (\n) Print"
                   18213:        echo "(charset\\\\n) Print"
                   18214:        echo "BuildFontCharset"
                   18215: }
                   18216: 
                   18217: Symbol() {
                   18218:        echo "/unitwidth $UNITWIDTH def"
                   18219:        echo "/resolution $RESOLUTION def"
                   18220:        echo "/charset ["
                   18221:                SymbolCharset
                   18222:        echo "] def"
                   18223: 
                   18224:        echo "ChangeMetrics"
                   18225:        echo "/S SelectFont"
                   18226:        echo "(orO) SetAscender"
                   18227: 
                   18228:        echo "(name $1\\\\n) Print"
                   18229:        echo "(fontname $2\\\\n) Print"
                   18230:        echo "/$1 NamedInPrologue"
                   18231:        echo "(special\\\\n) Print"
                   18232:        echo "(charset\\\\n) Print"
                   18233:        echo "BuildFontCharset"
                   18234: }
                   18235: 
                   18236: Special() {
                   18237:        echo "/unitwidth $UNITWIDTH def"
                   18238:        echo "/resolution $RESOLUTION def"
                   18239:        echo "/charset ["
                   18240:                SpecialCharset
                   18241:        echo "] def"
                   18242: 
                   18243:        echo "ChangeMetrics"
                   18244:        echo "/S1 SelectFont"
                   18245: 
                   18246:        echo "(# Times-Roman special font\\\\n) Print"
                   18247:        echo "(name $1\\\\n) Print"
                   18248:        echo "(fontname $2\\\\n) Print"
                   18249:        echo "/$1 NamedInPrologue"
                   18250:        echo "(special\\\\n) Print"
                   18251:        echo "(charset\\\\n) Print"
                   18252:        echo "BuildFontCharset"
                   18253: }
                   18254: 
                   18255: #
                   18256: # The DESC file doesn't have to be built on a printer. It's only here for
                   18257: # consistency.
                   18258: #
                   18259: 
                   18260: Description() {
                   18261:        echo "/charset ["       # awk - so the stack doesn't overflow
                   18262:                StandardCharset | awk '$1 != "(---)" {print $1}'
                   18263:                SymbolCharset | awk '$1 != "(---)" {print $1}'
                   18264:                SpecialCharset | awk '$1 != "(---)" {print $1}'
                   18265:                DingbatsCharset | awk '$1 != "(---)" {print $1}'
                   18266:        echo "] def"
                   18267: 
                   18268:        cat <<-//DESC
                   18269:                (#Device Description - original PostScript character set
                   18270: 
                   18271:                PDL PostScript
                   18272: 
                   18273:                fonts 10 R I B BI CW H HI HB S1 S
                   18274:                sizes 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
                   18275:                23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 40 42 44 46
                   18276:                48 50 52 54 56 58 60 64 68 72 78 84 90 96 100 105 110 115
                   18277:                120 125 130 135 140 145 150 155 160 0
                   18278: 
                   18279:                res $RESOLUTION
                   18280:                hor 1
                   18281:                vert 1
                   18282:                unitwidth $UNITWIDTH
                   18283: 
                   18284:                ) Print
                   18285:        //DESC
                   18286:        echo "(charset\\\\n) Print"
                   18287:        echo "BuildDescCharset"
                   18288:        echo "(\\\\n) Print"
                   18289: }
                   18290: 
                   18291: 0707070014231217231006440057030057030000010643620522627501400002400000003355post.src/devpost/HKname HK
                   18292: fontname Helvetica-LightOblique
                   18293: ligatures fi fl 0
                   18294: spacewidth 28
                   18295: charset
                   18296: !      33      2       33
                   18297: "      28      2       34
                   18298: dq     "
                   18299: #      56      2       35
                   18300: $      56      2       36
                   18301: %      89      2       37
                   18302: &      67      2       38
                   18303: '      22      2       39
                   18304: (      33      3       40
                   18305: )      33      3       41
                   18306: *      39      2       42
                   18307: +      66      0       43
                   18308: ,      28      1       44
                   18309: hy     33      0       45
                   18310: -      "
                   18311: .      28      0       46
                   18312: /      28      2       47
                   18313: 0      56      2       48
                   18314: 1      56      2       49
                   18315: 2      56      2       50
                   18316: 3      56      2       51
                   18317: 4      56      2       52
                   18318: 5      56      2       53
                   18319: 6      56      2       54
                   18320: 7      56      2       55
                   18321: 8      56      2       56
                   18322: 9      56      2       57
                   18323: :      28      0       58
                   18324: ;      28      1       59
                   18325: ---    66      0       60
                   18326: =      66      0       61
                   18327: ---    66      0       62
                   18328: ?      50      2       63
                   18329: @      80      2       64
                   18330: A      67      2       65
                   18331: B      67      2       66
                   18332: C      72      2       67
                   18333: D      72      2       68
                   18334: E      61      2       69
                   18335: F      56      2       70
                   18336: G      78      2       71
                   18337: H      72      2       72
                   18338: I      28      2       73
                   18339: J      50      2       74
                   18340: K      67      2       75
                   18341: L      56      2       76
                   18342: M      83      2       77
                   18343: N      72      2       78
                   18344: O      78      2       79
                   18345: P      61      2       80
                   18346: Q      78      2       81
                   18347: R      67      2       82
                   18348: S      61      2       83
                   18349: T      56      2       84
                   18350: U      72      2       85
                   18351: V      61      2       86
                   18352: W      89      2       87
                   18353: X      61      2       88
                   18354: Y      61      2       89
                   18355: Z      61      2       90
                   18356: [      33      3       91
                   18357: \      28      2       92
                   18358: bs     "
                   18359: ]      33      3       93
                   18360: ---    66      2       94
                   18361: ---    50      1       95
                   18362: `      22      2       96
                   18363: a      56      0       97
                   18364: b      61      2       98
                   18365: c      56      0       99
                   18366: d      61      2       100
                   18367: e      56      0       101
                   18368: f      28      2       102
                   18369: g      61      1       103
                   18370: h      56      2       104
                   18371: i      22      2       105
                   18372: j      22      3       106
                   18373: k      50      2       107
                   18374: l      22      2       108
                   18375: m      83      0       109
                   18376: n      56      0       110
                   18377: o      56      0       111
                   18378: p      61      1       112
                   18379: q      61      1       113
                   18380: r      33      0       114
                   18381: s      50      0       115
                   18382: t      28      2       116
                   18383: u      56      0       117
                   18384: v      50      0       118
                   18385: w      72      0       119
                   18386: x      50      0       120
                   18387: y      50      1       121
                   18388: z      50      0       122
                   18389: {      33      3       123
                   18390: ---    22      2       124
                   18391: }      33      3       125
                   18392: ---    66      0       126
                   18393: !!     33      1       161
                   18394: ct     56      3       162
                   18395: ps     56      2       163
                   18396: fr     17      2       164
                   18397: yn     56      2       165
                   18398: fn     56      3       166
                   18399: sc     56      3       167
                   18400: cr     56      0       168
                   18401: ---    22      2       169
                   18402: ``     39      2       170
                   18403: ---    56      0       171
                   18404: ---    39      0       172
                   18405: ---    39      0       173
                   18406: fi     50      2       174
                   18407: fl     50      2       175
                   18408: en     50      0       177
                   18409: \-     "
                   18410: dg     56      3       178
                   18411: dd     56      3       179
                   18412: ---    28      0       180
                   18413: pg     65      3       182
                   18414: ---    50      0       183
                   18415: ---    22      1       184
                   18416: ---    39      1       185
                   18417: ''     39      2       186
                   18418: ---    56      0       187
                   18419: ---    100     0       188
                   18420: ---    100     2       189
                   18421: ??     50      1       191
                   18422: ga     33      2       193
                   18423: \`     "
                   18424: aa     33      2       194
                   18425: \'     "
                   18426: ^a     33      2       195
                   18427: ^      "
                   18428: ~a     33      2       196
                   18429: ~      "
                   18430: -a     33      2       197
                   18431: Ua     33      2       198
                   18432: .a     33      2       199
                   18433: :a     33      2       200
                   18434: oa     33      2       202
                   18435: ,a     33      1       203
                   18436: "a     33      2       205
                   18437: Ca     33      1       206
                   18438: va     33      2       207
                   18439: em     100     0       208
                   18440: ---    100     2       225
                   18441: ---    33      2       227
                   18442: ---    56      2       232
                   18443: ---    78      2       233
                   18444: ---    100     2       234
                   18445: ---    33      2       235
                   18446: ---    89      0       241
                   18447: ---    22      0       245
                   18448: ---    22      2       248
                   18449: ---    56      0       249
                   18450: ---    94      0       250
                   18451: ---    50      2       251
                   18452: 0707070014231217241006440057030057030000010643640522627501400002400000003346post.src/devpost/HLname HL
                   18453: fontname Helvetica-Light
                   18454: ligatures fi fl 0
                   18455: spacewidth 28
                   18456: charset
                   18457: !      33      2       33
                   18458: "      28      2       34
                   18459: dq     "
                   18460: #      56      2       35
                   18461: $      56      2       36
                   18462: %      89      2       37
                   18463: &      67      2       38
                   18464: '      22      2       39
                   18465: (      33      3       40
                   18466: )      33      3       41
                   18467: *      39      2       42
                   18468: +      66      0       43
                   18469: ,      28      1       44
                   18470: hy     33      0       45
                   18471: -      "
                   18472: .      28      0       46
                   18473: /      28      2       47
                   18474: 0      56      2       48
                   18475: 1      56      2       49
                   18476: 2      56      2       50
                   18477: 3      56      2       51
                   18478: 4      56      2       52
                   18479: 5      56      2       53
                   18480: 6      56      2       54
                   18481: 7      56      2       55
                   18482: 8      56      2       56
                   18483: 9      56      2       57
                   18484: :      28      0       58
                   18485: ;      28      1       59
                   18486: ---    66      0       60
                   18487: =      66      0       61
                   18488: ---    66      0       62
                   18489: ?      50      2       63
                   18490: @      80      2       64
                   18491: A      67      2       65
                   18492: B      67      2       66
                   18493: C      72      2       67
                   18494: D      72      2       68
                   18495: E      61      2       69
                   18496: F      56      2       70
                   18497: G      78      2       71
                   18498: H      72      2       72
                   18499: I      28      2       73
                   18500: J      50      2       74
                   18501: K      67      2       75
                   18502: L      56      2       76
                   18503: M      83      2       77
                   18504: N      72      2       78
                   18505: O      78      2       79
                   18506: P      61      2       80
                   18507: Q      78      2       81
                   18508: R      67      2       82
                   18509: S      61      2       83
                   18510: T      56      2       84
                   18511: U      72      2       85
                   18512: V      61      2       86
                   18513: W      89      2       87
                   18514: X      61      2       88
                   18515: Y      61      2       89
                   18516: Z      61      2       90
                   18517: [      33      3       91
                   18518: \      28      2       92
                   18519: bs     "
                   18520: ]      33      3       93
                   18521: ---    66      2       94
                   18522: ---    50      1       95
                   18523: `      22      2       96
                   18524: a      56      0       97
                   18525: b      61      2       98
                   18526: c      56      0       99
                   18527: d      61      2       100
                   18528: e      56      0       101
                   18529: f      28      2       102
                   18530: g      61      1       103
                   18531: h      56      2       104
                   18532: i      22      2       105
                   18533: j      22      3       106
                   18534: k      50      2       107
                   18535: l      22      2       108
                   18536: m      83      0       109
                   18537: n      56      0       110
                   18538: o      56      0       111
                   18539: p      61      1       112
                   18540: q      61      1       113
                   18541: r      33      0       114
                   18542: s      50      0       115
                   18543: t      28      2       116
                   18544: u      56      0       117
                   18545: v      50      0       118
                   18546: w      72      0       119
                   18547: x      50      0       120
                   18548: y      50      1       121
                   18549: z      50      0       122
                   18550: {      33      3       123
                   18551: ---    22      2       124
                   18552: }      33      3       125
                   18553: ---    66      0       126
                   18554: !!     33      1       161
                   18555: ct     56      3       162
                   18556: ps     56      2       163
                   18557: fr     17      2       164
                   18558: yn     56      2       165
                   18559: fn     56      3       166
                   18560: sc     56      3       167
                   18561: cr     56      0       168
                   18562: ---    22      2       169
                   18563: ``     39      2       170
                   18564: ---    56      0       171
                   18565: ---    39      0       172
                   18566: ---    39      0       173
                   18567: fi     50      2       174
                   18568: fl     50      2       175
                   18569: en     50      0       177
                   18570: \-     "
                   18571: dg     56      3       178
                   18572: dd     56      3       179
                   18573: ---    28      0       180
                   18574: pg     65      3       182
                   18575: ---    50      0       183
                   18576: ---    22      1       184
                   18577: ---    39      1       185
                   18578: ''     39      2       186
                   18579: ---    56      0       187
                   18580: ---    100     0       188
                   18581: ---    100     2       189
                   18582: ??     50      1       191
                   18583: ga     33      2       193
                   18584: \`     "
                   18585: aa     33      2       194
                   18586: \'     "
                   18587: ^a     33      2       195
                   18588: ^      "
                   18589: ~a     33      2       196
                   18590: ~      "
                   18591: -a     33      2       197
                   18592: Ua     33      2       198
                   18593: .a     33      2       199
                   18594: :a     33      2       200
                   18595: oa     33      2       202
                   18596: ,a     33      1       203
                   18597: "a     33      2       205
                   18598: Ca     33      1       206
                   18599: va     33      2       207
                   18600: em     100     0       208
                   18601: ---    100     2       225
                   18602: ---    33      2       227
                   18603: ---    56      2       232
                   18604: ---    78      2       233
                   18605: ---    100     2       234
                   18606: ---    33      2       235
                   18607: ---    89      0       241
                   18608: ---    22      0       245
                   18609: ---    22      2       248
                   18610: ---    56      0       249
                   18611: ---    94      0       250
                   18612: ---    50      2       251
                   18613: 0707070014231215111006400057030057030000010554220522632552300002400000003362post.src/devpost/HMname H
                   18614: fontname Helvetica
                   18615: named in prologue
                   18616: ligatures fi fl 0
                   18617: spacewidth 28
                   18618: charset
                   18619: !      28      2       33
                   18620: "      36      2       34
                   18621: dq     "
                   18622: #      56      2       35
                   18623: $      56      3       36
                   18624: %      89      2       37
                   18625: &      67      2       38
                   18626: '      22      2       39
                   18627: (      33      3       40
                   18628: )      33      3       41
                   18629: *      39      2       42
                   18630: +      58      0       43
                   18631: ,      28      1       44
                   18632: hy     33      0       45
                   18633: -      "
                   18634: .      28      0       46
                   18635: /      28      2       47
                   18636: 0      56      2       48
                   18637: 1      56      2       49
                   18638: 2      56      2       50
                   18639: 3      56      2       51
                   18640: 4      56      2       52
                   18641: 5      56      2       53
                   18642: 6      56      2       54
                   18643: 7      56      2       55
                   18644: 8      56      2       56
                   18645: 9      56      2       57
                   18646: :      28      0       58
                   18647: ;      28      1       59
                   18648: ---    58      0       60
                   18649: =      58      0       61
                   18650: ---    58      0       62
                   18651: ?      56      2       63
                   18652: @      102     3       64
                   18653: A      67      2       65
                   18654: B      67      2       66
                   18655: C      72      2       67
                   18656: D      72      2       68
                   18657: E      67      2       69
                   18658: F      61      2       70
                   18659: G      78      2       71
                   18660: H      72      2       72
                   18661: I      28      2       73
                   18662: J      50      2       74
                   18663: K      67      2       75
                   18664: L      56      2       76
                   18665: M      83      2       77
                   18666: N      72      2       78
                   18667: O      78      2       79
                   18668: P      67      2       80
                   18669: Q      78      2       81
                   18670: R      72      2       82
                   18671: S      67      2       83
                   18672: T      61      2       84
                   18673: U      72      2       85
                   18674: V      67      2       86
                   18675: W      94      2       87
                   18676: X      67      2       88
                   18677: Y      67      2       89
                   18678: Z      61      2       90
                   18679: [      28      3       91
                   18680: \      28      2       92
                   18681: bs     "
                   18682: ]      28      3       93
                   18683: ---    47      2       94
                   18684: ---    56      1       95
                   18685: `      22      2       96
                   18686: a      56      0       97
                   18687: b      56      2       98
                   18688: c      50      0       99
                   18689: d      56      2       100
                   18690: e      56      0       101
                   18691: f      28      2       102
                   18692: g      56      1       103
                   18693: h      56      2       104
                   18694: i      22      2       105
                   18695: j      22      3       106
                   18696: k      50      2       107
                   18697: l      22      2       108
                   18698: m      83      0       109
                   18699: n      56      0       110
                   18700: o      56      0       111
                   18701: p      56      1       112
                   18702: q      56      1       113
                   18703: r      33      0       114
                   18704: s      50      0       115
                   18705: t      28      2       116
                   18706: u      56      0       117
                   18707: v      50      0       118
                   18708: w      72      0       119
                   18709: x      50      0       120
                   18710: y      50      1       121
                   18711: z      50      0       122
                   18712: {      33      3       123
                   18713: ---    26      3       124
                   18714: }      33      3       125
                   18715: ---    58      0       126
                   18716: !!     33      1       161
                   18717: ct     56      3       162
                   18718: ps     56      2       163
                   18719: fr     17      2       164
                   18720: yn     56      2       165
                   18721: fn     56      3       166
                   18722: sc     56      3       167
                   18723: cr     56      0       168
                   18724: ---    19      2       169
                   18725: ``     33      2       170
                   18726: ---    56      0       171
                   18727: ---    33      0       172
                   18728: ---    33      0       173
                   18729: fi     50      2       174
                   18730: fl     50      2       175
                   18731: en     56      0       177
                   18732: \-     "
                   18733: dg     56      3       178
                   18734: dd     56      3       179
                   18735: ---    28      0       180
                   18736: pg     54      3       182
                   18737: ---    35      0       183
                   18738: ---    22      1       184
                   18739: ---    33      1       185
                   18740: ''     33      2       186
                   18741: ---    56      0       187
                   18742: ---    100     0       188
                   18743: ---    100     2       189
                   18744: ??     61      1       191
                   18745: ga     33      2       193
                   18746: \`     "
                   18747: aa     33      2       194
                   18748: \'     "
                   18749: ^a     33      2       195
                   18750: ^      "
                   18751: ~a     33      2       196
                   18752: ~      "
                   18753: -a     33      2       197
                   18754: Ua     33      2       198
                   18755: .a     33      2       199
                   18756: :a     33      2       200
                   18757: oa     33      2       202
                   18758: ,a     33      1       203
                   18759: "a     33      2       205
                   18760: Ca     33      1       206
                   18761: va     33      2       207
                   18762: em     100     0       208
                   18763: ---    100     2       225
                   18764: ---    37      2       227
                   18765: ---    56      2       232
                   18766: ---    78      2       233
                   18767: ---    100     2       234
                   18768: ---    36      2       235
                   18769: ---    89      0       241
                   18770: ---    28      0       245
                   18771: ---    22      2       248
                   18772: ---    61      0       249
                   18773: ---    94      0       250
                   18774: ---    61      2       251
                   18775: 0707070014231217261006440057030057030000010644600522627501400003700000035275post.src/devpost/shell.lib.bak#
                   18776: # Shell library - for building devpost tables. Original collection was
                   18777: # built on a Version 47.0 PS-810.
                   18778: #
                   18779: 
                   18780: RESOLUTION=720
                   18781: UNITWIDTH=10
                   18782: 
                   18783: #
                   18784: # BuiltinTables returns command lines that generate PostScript programs
                   18785: # for building a typesetter description file and font width tables for
                   18786: # a relatively standard collection of fonts. Use awk to select a command
                   18787: # line or modify an existing command to build a width table for a new
                   18788: # font.
                   18789: #
                   18790: 
                   18791: BuiltinTables() {
                   18792:        cat <<-'//End of BuiltinTables'
                   18793:                Proportional    R       Times-Roman
                   18794:                Proportional    I       Times-Italic
                   18795:                Proportional    B       Times-Bold
                   18796:                Proportional    BI      Times-BoldItalic
                   18797:                Proportional    AB      AvantGarde-Demi
                   18798:                Proportional    AI      AvantGarde-BookOblique
                   18799:                Proportional    AR      AvantGarde-Book
                   18800:                Proportional    AX      AvantGarde-DemiOblique
                   18801:                Proportional    H       Helvetica
                   18802:                Proportional    HB      Helvetica-Bold
                   18803:                Proportional    HI      Helvetica-Oblique
                   18804:                Proportional    HX      Helvetica-BoldOblique
                   18805:                Proportional    Hb      Helvetica-Narrow-Bold
                   18806:                Proportional    Hi      Helvetica-Narrow-Oblique
                   18807:                Proportional    Hr      Helvetica-Narrow
                   18808:                Proportional    Hx      Helvetica-Narrow-BoldOblique
                   18809:                Proportional    KB      Bookman-Demi
                   18810:                Proportional    KI      Bookman-LightItalic
                   18811:                Proportional    KR      Bookman-Light
                   18812:                Proportional    KX      Bookman-DemiItalic
                   18813:                Proportional    NB      NewCenturySchlbk-Bold
                   18814:                Proportional    NI      NewCenturySchlbk-Italic
                   18815:                Proportional    NR      NewCenturySchlbk-Roman
                   18816:                Proportional    NX      NewCenturySchlbk-BoldItalic
                   18817:                Proportional    PA      Palatino-Roman
                   18818:                Proportional    PB      Palatino-Bold
                   18819:                Proportional    PI      Palatino-Italic
                   18820:                Proportional    PX      Palatino-BoldItalic
                   18821:                Proportional    ZI      ZapfChancery-MediumItalic
                   18822:                FixedWidth      C       Courier
                   18823:                FixedWidth      CB      Courier-Bold
                   18824:                FixedWidth      CI      Courier-Oblique
                   18825:                FixedWidth      CO      Courier
                   18826:                FixedWidth      CW      Courier
                   18827:                FixedWidth      CX      Courier-BoldOblique
                   18828:                Dingbats        ZD      ZapfDingbats
                   18829:                Greek           GR      Symbol
                   18830:                Symbol          S       Symbol
                   18831:                Special         S1      Times-Roman
                   18832:                Description     DESC    ---
                   18833:        //End of BuiltinTables
                   18834: }
                   18835: 
                   18836: #
                   18837: # AllTables prints the complete list of builtin font names.
                   18838: #
                   18839: 
                   18840: AllTables() {
                   18841:        BuiltinTables | awk '{print $2}'
                   18842: }
                   18843: 
                   18844: #
                   18845: # Charset functions generate keyword/value pairs (as PostScript objects)
                   18846: # that describe the character set available in a font. The keyword is a
                   18847: # PostScript string that represents troff's name for the character. The
                   18848: # value is usually the literal name (i.e. begins with a /) assigned to
                   18849: # the character in the PostScript font. The value can also be an integer
                   18850: # or a PostScript string. An integer value is used as an index in the
                   18851: # current font's Encoding array. A string value is returned to the host
                   18852: # unchanged when the entry for the character is constructed. Entries that
                   18853: # have (") as their value are synonyms for the preceeding character.
                   18854: #
                   18855: 
                   18856: StandardCharset() {
                   18857:        cat <<-'//End of StandardCharset'
                   18858:                (!)     /exclam
                   18859:                (")     /quotedbl
                   18860:                (#)     /numbersign
                   18861:                ($)     /dollar
                   18862:                (%)     /percent
                   18863:                (&)     /ampersand
                   18864:                (')     /quoteright
                   18865:                (\()    /parenleft
                   18866:                (\))    /parenright
                   18867:                (*)     /asterisk
                   18868:                (+)     /plus
                   18869:                (,)     /comma
                   18870:                (hy)    /hyphen
                   18871:                (-)     (")                     % synonym
                   18872:                (.)     /period
                   18873:                (/)     /slash
                   18874:                (0)     /zero
                   18875:                (1)     /one
                   18876:                (2)     /two
                   18877:                (3)     /three
                   18878:                (4)     /four
                   18879:                (5)     /five
                   18880:                (6)     /six
                   18881:                (7)     /seven
                   18882:                (8)     /eight
                   18883:                (9)     /nine
                   18884:                (:)     /colon
                   18885:                (;)     /semicolon
                   18886:                (<)     /less
                   18887:                (=)     /equal
                   18888:                (>)     /greater
                   18889:                (?)     /question
                   18890:                (@)     /at
                   18891:                (A)     /A
                   18892:                (B)     /B
                   18893:                (C)     /C
                   18894:                (D)     /D
                   18895:                (E)     /E
                   18896:                (F)     /F
                   18897:                (G)     /G
                   18898:                (H)     /H
                   18899:                (I)     /I
                   18900:                (J)     /J
                   18901:                (K)     /K
                   18902:                (L)     /L
                   18903:                (M)     /M
                   18904:                (N)     /N
                   18905:                (O)     /O
                   18906:                (P)     /P
                   18907:                (Q)     /Q
                   18908:                (R)     /R
                   18909:                (S)     /S
                   18910:                (T)     /T
                   18911:                (U)     /U
                   18912:                (V)     /V
                   18913:                (W)     /W
                   18914:                (X)     /X
                   18915:                (Y)     /Y
                   18916:                (Z)     /Z
                   18917:                ([)     /bracketleft
                   18918:                (\\)    /backslash
                   18919:                (])     /bracketright
                   18920:                (^)     /asciicircum
                   18921:                (_)     /underscore
                   18922:                (`)     /quoteleft
                   18923:                (a)     /a
                   18924:                (b)     /b
                   18925:                (c)     /c
                   18926:                (d)     /d
                   18927:                (e)     /e
                   18928:                (f)     /f
                   18929:                (g)     /g
                   18930:                (h)     /h
                   18931:                (i)     /i
                   18932:                (j)     /j
                   18933:                (k)     /k
                   18934:                (l)     /l
                   18935:                (m)     /m
                   18936:                (n)     /n
                   18937:                (o)     /o
                   18938:                (p)     /p
                   18939:                (q)     /q
                   18940:                (r)     /r
                   18941:                (s)     /s
                   18942:                (t)     /t
                   18943:                (u)     /u
                   18944:                (v)     /v
                   18945:                (w)     /w
                   18946:                (x)     /x
                   18947:                (y)     /y
                   18948:                (z)     /z
                   18949:                ({)     /braceleft
                   18950:                (|)     /bar
                   18951:                (})     /braceright
                   18952:                (~)     /asciitilde
                   18953:                (---)   /exclamdown
                   18954:                (ct)    /cent
                   18955:                (ps)    /sterling
                   18956:                (fr)    /fraction
                   18957:                (yn)    /yen
                   18958:                (fn)    /florin
                   18959:                (sc)    /section
                   18960:                (cr)    /currency
                   18961:                (---)   /quotesingle
                   18962:                (``)    /quotedblleft
                   18963:                (---)   /guillemotleft
                   18964:                (---)   /guilsinglleft
                   18965:                (---)   /guilsinglright
                   18966:                (fi)    /fi
                   18967:                (fl)    /fl
                   18968:                (en)    /endash
                   18969:                (\\-)   (")
                   18970:                (dg)    /dagger
                   18971:                (dd)    /daggerdbl
                   18972:                (---)   /periodcentered
                   18973:                (pg)    /paragraph
                   18974:                (---)   /bullet
                   18975:                (---)   /quotesinglbase
                   18976:                (---)   /quotedblbase
                   18977:                ('')    /quotedblright
                   18978:                (---)   /guillemotright
                   18979:                (---)   /ellipsis
                   18980:                (---)   /perthousand
                   18981:                (---)   /questiondown
                   18982:                (ga)    /grave
                   18983:                (\\`)   (")
                   18984:                (aa)    /acute
                   18985:                (\\')   (")
                   18986:                (^a)    /circumflex
                   18987:                (~a)    /tilde
                   18988:                (-a)    /macron
                   18989:                (Ua)    /breve
                   18990:                (.a)    /dotaccent
                   18991:                (:a)    /dieresis
                   18992:                (oa)    /ring
                   18993:                (,a)    /cedilla
                   18994:                ("a)    /hungarumlaut
                   18995:                (Ca)    /ogonek
                   18996:                (va)    /caron
                   18997:                (em)    /emdash
                   18998:                (---)   /AE
                   18999:                (---)   /ordfeminine
                   19000:                (---)   /Lslash
                   19001:                (---)   /Oslash
                   19002:                (---)   /OE
                   19003:                (---)   /ordmasculine
                   19004:                (---)   /ae
                   19005:                (---)   /dotlessi
                   19006:                (---)   /lslash
                   19007:                (---)   /oslash
                   19008:                (---)   /oe
                   19009:                (---)   /germandbls
                   19010:        //End of StandardCharset
                   19011: }
                   19012: 
                   19013: SymbolCharset() {
                   19014:        cat <<-'//End of SymbolCharset'
                   19015:                (---)   /exclam
                   19016:                (fa)    /universal
                   19017:                (---)   /numbersign
                   19018:                (te)    /existential
                   19019:                (---)   /percent
                   19020:                (---)   /ampersand
                   19021:                (st)    /suchthat
                   19022:                (---)   /parenleft
                   19023:                (---)   /parenright
                   19024:                (**)    /asteriskmath
                   19025:                (pl)    /plus
                   19026:                (---)   /comma
                   19027:                (mi)    /minus
                   19028:                (---)   /period
                   19029:                (sl)    /slash
                   19030:                (---)   /zero
                   19031:                (---)   /one
                   19032:                (---)   /two
                   19033:                (---)   /three
                   19034:                (---)   /four
                   19035:                (---)   /five
                   19036:                (---)   /six
                   19037:                (---)   /seven
                   19038:                (---)   /eight
                   19039:                (---)   /nine
                   19040:                (---)   /colon
                   19041:                (---)   /semicolon
                   19042:                (<)     /less
                   19043:                (eq)    /equal
                   19044:                (>)     /greater
                   19045:                (---)   /question
                   19046:                (cg)    /congruent
                   19047:                (*A)    /Alpha
                   19048:                (*B)    /Beta
                   19049:                (*X)    /Chi
                   19050:                (*D)    /Delta
                   19051:                (*E)    /Epsilon
                   19052:                (*F)    /Phi
                   19053:                (*G)    /Gamma
                   19054:                (*Y)    /Eta
                   19055:                (*I)    /Iota
                   19056:                (---)   /theta1
                   19057:                (*K)    /Kappa
                   19058:                (*L)    /Lambda
                   19059:                (*M)    /Mu
                   19060:                (*N)    /Nu
                   19061:                (*O)    /Omicron
                   19062:                (*P)    /Pi
                   19063:                (*H)    /Theta
                   19064:                (*R)    /Rho
                   19065:                (*S)    /Sigma
                   19066:                (*T)    /Tau
                   19067:                (*U)    /Upsilon
                   19068:                (ts)    /sigma1
                   19069:                (*W)    /Omega
                   19070:                (*C)    /Xi
                   19071:                (*Q)    /Psi
                   19072:                (*Z)    /Zeta
                   19073:                (---)   /bracketleft
                   19074:                (tf)    /therefore
                   19075:                (---)   /bracketright
                   19076:                (pp)    /perpendicular
                   19077:                (ul)    /underscore
                   19078:                (_)     (")                     % synonym
                   19079:                (rn)    /radicalex
                   19080:                (*a)    /alpha
                   19081:                (*b)    /beta
                   19082:                (*x)    /chi
                   19083:                (*d)    /delta
                   19084:                (*e)    /epsilon
                   19085:                (*f)    /phi
                   19086:                (*g)    /gamma
                   19087:                (*y)    /eta
                   19088:                (*i)    /iota
                   19089:                (---)   /phi1
                   19090:                (*k)    /kappa
                   19091:                (*l)    /lambda
                   19092:                (*m)    /mu
                   19093:                (*n)    /nu
                   19094:                (*o)    /omicron
                   19095:                (*p)    /pi
                   19096:                (*h)    /theta
                   19097:                (*r)    /rho
                   19098:                (*s)    /sigma
                   19099:                (*t)    /tau
                   19100:                (*u)    /upsilon
                   19101:                (---)   /omega1
                   19102:                (*w)    /omega
                   19103:                (*c)    /xi
                   19104:                (*q)    /psi
                   19105:                (*z)    /zeta
                   19106:                (---)   /braceleft
                   19107:                (or)    /bar
                   19108:                (---)   /braceright
                   19109:                (ap)    /similar
                   19110:                (---)   /Upsilon1
                   19111:                (fm)    /minute
                   19112:                (<=)    /lessequal
                   19113:                (---)   /fraction
                   19114:                (if)    /infinity
                   19115:                (---)   /florin
                   19116:                (---)   /club
                   19117:                (---)   /diamond
                   19118:                (---)   /heart
                   19119:                (---)   /spade
                   19120:                (ab)    /arrowboth
                   19121:                (<-)    /arrowleft
                   19122:                (ua)    /arrowup
                   19123:                (->)    /arrowright
                   19124:                (da)    /arrowdown
                   19125:                (de)    /degree
                   19126:                (+-)    /plusminus
                   19127:                (---)   /second
                   19128:                (>=)    /greaterequal
                   19129:                (mu)    /multiply
                   19130:                (pt)    /proportional
                   19131:                (pd)    /partialdiff
                   19132:                (bu)    /bullet
                   19133:                (di)    /divide
                   19134:                (!=)    /notequal
                   19135:                (==)    /equivalence
                   19136:                (~~)    /approxequal
                   19137:                (el)    /ellipsis
                   19138:                (av)    /arrowvertex
                   19139:                (ah)    /arrowhorizex
                   19140:                (CR)    /carriagereturn
                   19141:                (af)    /aleph
                   19142:                (If)    /Ifraktur
                   19143:                (Rf)    /Rfraktur
                   19144:                (ws)    /weierstrass
                   19145:                (Ox)    /circlemultiply
                   19146:                (O+)    /circleplus
                   19147:                (es)    /emptyset
                   19148:                (ca)    /intersection
                   19149:                (cu)    /union
                   19150:                (sp)    /propersuperset
                   19151:                (ip)    /reflexsuperset
                   19152:                (!b)    /notsubset
                   19153:                (sb)    /propersubset
                   19154:                (ib)    /reflexsubset
                   19155:                (mo)    /element
                   19156:                (!m)    /notelement
                   19157:                (an)    /angle
                   19158:                (gr)    /gradient
                   19159:                (rg)    /registerserif
                   19160:                (co)    /copyrightserif
                   19161:                (tm)    /trademarkserif
                   19162:                (---)   /product
                   19163:                (sr)    /radical
                   19164:                (c.)    /dotmath
                   19165:                (no)    /logicalnot
                   19166:                (l&)    /logicaland
                   19167:                (l|)    /logicalor
                   19168:                (---)   /arrowdblboth
                   19169:                (---)   /arrowdblleft
                   19170:                (---)   /arrowdblup
                   19171:                (---)   /arrowdblright
                   19172:                (---)   /arrowdbldown
                   19173:                (lz)    /lozenge
                   19174:                (b<)    /angleleft
                   19175:                (RG)    /registersans
                   19176:                (CO)    /copyrightsans
                   19177:                (TM)    /trademarksans
                   19178:                (---)   /summation
                   19179:                (LT)    /parenlefttp
                   19180:                (br)    /parenleftex
                   19181:                (LX)    (")                     % synonym
                   19182:                (LB)    /parenleftbt
                   19183:                (lc)    /bracketlefttp
                   19184:                (lx)    /bracketleftex
                   19185:                (lf)    /bracketleftbt
                   19186:                (lt)    /bracelefttp
                   19187:                (lk)    /braceleftmid
                   19188:                (lb)    /braceleftbt
                   19189:                (bv)    /braceex
                   19190:                (|)     (")                     % synonym
                   19191:                (b>)    /angleright
                   19192:                (is)    /integral
                   19193:                (---)   /integraltp
                   19194:                (---)   /integralex
                   19195:                (---)   /integralbt
                   19196:                (RT)    /parenrighttp
                   19197:                (RX)    /parenrightex
                   19198:                (RB)    /parenrightbt
                   19199:                (rc)    /bracketrighttp
                   19200:                (rx)    /bracketrightex
                   19201:                (rf)    /bracketrightbt
                   19202:                (rt)    /bracerighttp
                   19203:                (rk)    /bracerightmid
                   19204:                (rb)    /bracerightbt
                   19205:                (~=)    (55     0       1)      % charlib
                   19206:        //End of SymbolCharset
                   19207: }
                   19208: 
                   19209: SpecialCharset() {
                   19210:        cat <<-'//End of SpecialCharset'
                   19211:                (ru)    /underscore
                   19212:                (ff)    (60     2       1)      % charlib
                   19213:                (Fi)    (84     2       1)      % charlib
                   19214:                (Fl)    (84     2       1)      % charlib
                   19215:                (14)    (75     2       1)      % charlib
                   19216:                (12)    (75     2       1)      % charlib
                   19217:                (34)    (75     2       1)      % charlib
                   19218:                (bx)    (50     2       1)      % charlib
                   19219:                (ob)    (38     2       1)      % charlib
                   19220:                (ci)    (75     0       1)      % charlib
                   19221:                (sq)    (50     2       1)      % charlib
                   19222:                (Sl)    (50     2       1)      % charlib
                   19223:                (L1)    (110    1       2)      % charlib
                   19224:                (LA)    (110    1       2)      % charlib
                   19225:                (LV)    (110    3       1)      % charlib
                   19226:                (LH)    (210    1       1)      % charlib
                   19227:                (lh)    (100    0       1)      % charlib
                   19228:                (rh)    (100    0       1)      % charlib
                   19229:                (lH)    (100    0       1)      % charlib
                   19230:                (rH)    (100    0       1)      % charlib
                   19231:                (PC)    (220    2       1)      % charlib
                   19232:                (DG)    (185    2       1)      % charlib
                   19233:        //End of SpecialCharset
                   19234: }
                   19235: 
                   19236: DingbatsCharset() {
                   19237:        cat <<-'//End of DingbatsCharset'
                   19238:                (!)     33
                   19239:                (")     34
                   19240:                (#)     35
                   19241:                ($)     36
                   19242:                (%)     37
                   19243:                (&)     38
                   19244:                (')     39
                   19245:                (\()    40
                   19246:                (\))    41
                   19247:                (*)     42
                   19248:                (+)     43
                   19249:                (,)     44
                   19250:                (-)     45
                   19251:                (.)     46
                   19252:                (/)     47
                   19253:                (0)     48
                   19254:                (1)     49
                   19255:                (2)     50
                   19256:                (3)     51
                   19257:                (4)     52
                   19258:                (5)     53
                   19259:                (6)     54
                   19260:                (7)     55
                   19261:                (8)     56
                   19262:                (9)     57
                   19263:                (:)     58
                   19264:                (;)     59
                   19265:                (<)     60
                   19266:                (=)     61
                   19267:                (>)     62
                   19268:                (?)     63
                   19269:                (@)     64
                   19270:                (A)     65
                   19271:                (B)     66
                   19272:                (C)     67
                   19273:                (D)     68
                   19274:                (E)     69
                   19275:                (F)     70
                   19276:                (G)     71
                   19277:                (H)     72
                   19278:                (I)     73
                   19279:                (J)     74
                   19280:                (K)     75
                   19281:                (L)     76
                   19282:                (M)     77
                   19283:                (N)     78
                   19284:                (O)     79
                   19285:                (P)     80
                   19286:                (Q)     81
                   19287:                (R)     82
                   19288:                (S)     83
                   19289:                (T)     84
                   19290:                (U)     85
                   19291:                (V)     86
                   19292:                (W)     87
                   19293:                (X)     88
                   19294:                (Y)     89
                   19295:                (Z)     90
                   19296:                ([)     91
                   19297:                (\\)    92
                   19298:                (])     93
                   19299:                (^)     94
                   19300:                (_)     95
                   19301:                (`)     96
                   19302:                (a)     97
                   19303:                (b)     98
                   19304:                (c)     99
                   19305:                (d)     100
                   19306:                (e)     101
                   19307:                (f)     102
                   19308:                (g)     103
                   19309:                (h)     104
                   19310:                (i)     105
                   19311:                (j)     106
                   19312:                (k)     107
                   19313:                (l)     108
                   19314:                (m)     109
                   19315:                (n)     110
                   19316:                (o)     111
                   19317:                (p)     112
                   19318:                (q)     113
                   19319:                (r)     114
                   19320:                (s)     115
                   19321:                (t)     116
                   19322:                (u)     117
                   19323:                (v)     118
                   19324:                (w)     119
                   19325:                (x)     120
                   19326:                (y)     121
                   19327:                (z)     122
                   19328:                ({)     123
                   19329:                (|)     124
                   19330:                (})     125
                   19331:                (~)     126
                   19332:                (hy)    161
                   19333:                (em)    162
                   19334:                (de)    163
                   19335:                (\\-)   164
                   19336:                (en)    165
                   19337:                (ff)    166
                   19338:                (fi)    167
                   19339:                (fl)    168
                   19340:                (Fi)    169
                   19341:                (Fl)    170
                   19342:                (fm)    171
                   19343:                (ru)    172
                   19344:                (dg)    173
                   19345:                (bu)    174
                   19346:                (14)    175
                   19347:                (34)    176
                   19348:                (12)    177
                   19349:                (ct)    178
                   19350:                (rg)    179
                   19351:                (sq)    180
                   19352:                (sl)    181
                   19353:                (ul)    182
                   19354:                (or)    183
                   19355:                (no)    184
                   19356:                (->)    185
                   19357:                (<-)    186
                   19358:                (da)    187
                   19359:                (lh)    188
                   19360:                (ua)    189
                   19361:                (ab)    190
                   19362:                (!b)    191
                   19363:                (aa)    192
                   19364:                (!m)    193
                   19365:                (ga)    194
                   19366:                (pl)    195
                   19367:                (mi)    196
                   19368:                (mu)    197
                   19369:                (di)    198
                   19370:                (eq)    199
                   19371:                (==)    200
                   19372:                (>=)    201
                   19373:                (<=)    202
                   19374:                (!=)    203
                   19375:                (+-)    204
                   19376:                (-+)    205
                   19377:                (ap)    206
                   19378:                (~=)    207
                   19379:                (gr)    208
                   19380:                (is)    209
                   19381:                (pd)    210
                   19382:                (if)    211
                   19383:                (sr)    212
                   19384:                (rn)    213
                   19385:                (sb)    214
                   19386:                (sp)    215
                   19387:                (cu)    216
                   19388:                (ca)    217
                   19389:                (ib)    218
                   19390:                (ip)    219
                   19391:                (mo)    220
                   19392:                (es)    221
                   19393:                (sc)    222
                   19394:                (dd)    223
                   19395:                (lc)    224
                   19396:                (rc)    225
                   19397:                (lf)    226
                   19398:                (rf)    227
                   19399:                (bv)    228
                   19400:                (**)    229
                   19401:                (br)    230
                   19402:                (ci)    231
                   19403:                (ts)    232
                   19404:                (co)    233
                   19405:                (lt)    234
                   19406:                (rt)    235
                   19407:                (lb)    236
                   19408:                (rb)    237
                   19409:                (lk)    238
                   19410:                (rk)    239
                   19411:                (rh)    241
                   19412:                (tm)    242
                   19413:                (Sl)    243
                   19414:                (ps)    244
                   19415:                (cs)    245
                   19416:                (cy)    246
                   19417:                (as)    247
                   19418:                (os)    248
                   19419:                (=.)    249
                   19420:                (ld)    250
                   19421:                (rd)    251
                   19422:                (le)    252
                   19423:                (ge)    253
                   19424:                (pp)    254
                   19425:        //End of DingbatsCharset
                   19426: }
                   19427: 
                   19428: #
                   19429: # Generating functions output PostScript programs that build font width
                   19430: # tables or a typesetter description file. Send the program to a printer
                   19431: # and the complete table will come back on the serial port. All write on
                   19432: # stdout and assume the prologue and other required PostScript files are
                   19433: # all available.
                   19434: #
                   19435: 
                   19436: Proportional() {
                   19437:        echo "/unitwidth $UNITWIDTH def"
                   19438:        echo "/resolution $RESOLUTION def"
                   19439:        echo "/charset ["
                   19440:                # Get <>_ and | from S. Use accents for ascii ^ and ~.
                   19441:                StandardCharset | awk '
                   19442:                        $1 == "(<)" && $2 == "/less" {$1 = "(---)"}
                   19443:                        $1 == "(>)" && $2 == "/greater" {$1 = "(---)"}
                   19444:                        $1 == "(_)" && $2 == "/underscore" {$1 = "(---)"}
                   19445:                        $1 == "(|)" && $2 == "/bar" {$1 = "(---)"}
                   19446:                        $1 == "(^)" && $2 == "/asciicircum" {$1 = "(---)"}
                   19447:                        $1 == "(~)" && $2 == "/asciitilde" {$1 = "(---)"}
                   19448:                        {printf "%s\t%s\n", $1, $2}
                   19449:                        $2 == "/circumflex" {printf "(^)\t(\")\n"}
                   19450:                        $2 == "/tilde" {printf "(~)\t(\")\n"}
                   19451:                '
                   19452:        echo "] def"
                   19453: 
                   19454:        echo "/$2 SelectFont"
                   19455:        echo "(opO) SetAscender"
                   19456: 
                   19457:        echo "(name $1\\\\n) Print"
                   19458:        echo "(fontname $2\\\\n) Print"
                   19459:        echo "/$1 NamedInPrologue"
                   19460:        echo "(ligatures fi fl 0\\\\n) Print"
                   19461:        echo "(spacewidth ) Print 32 GetWidth Print (\n) Print"
                   19462:        echo "(charset\\\\n) Print"
                   19463:        echo "BuildFontCharset"
                   19464: }
                   19465: 
                   19466: FixedWidth() {
                   19467:        echo "/unitwidth $UNITWIDTH def"
                   19468:        echo "/resolution $RESOLUTION def"
                   19469:        echo "/charset ["
                   19470:                # awk is not important - it's only here for compatibility
                   19471:                StandardCharset | awk '
                   19472:                        $1 == "(fi)" || $1 == "(fl)" {next}
                   19473:                        {printf "%s\t%s\n", $1, $2}
                   19474:                        $2 == "/circumflex" {printf "(^)\t(\")\n"}
                   19475:                        $2 == "/tilde" {printf "(~)\t(\")\n"}
                   19476:        '
                   19477:        echo "] def"
                   19478: 
                   19479:        echo "/$2 SelectFont"
                   19480:        echo "(opO) SetAscender"
                   19481: 
                   19482:        echo "(name $1\\\\n) Print"
                   19483:        echo "(fontname $2\\\\n) Print"
                   19484:        echo "/$1 NamedInPrologue"
                   19485:        echo "(spacewidth ) Print 32 GetWidth Print (\n) Print"
                   19486:        echo "(charset\\\\n) Print"
                   19487:        echo "BuildFontCharset"
                   19488: }
                   19489: 
                   19490: Dingbats() {
                   19491:        echo "/unitwidth $UNITWIDTH def"
                   19492:        echo "/resolution $RESOLUTION def"
                   19493:        echo "/charset ["
                   19494:                DingbatsCharset
                   19495:        echo "] def"
                   19496: 
                   19497:        echo "/$2 SelectFont"
                   19498:        echo "(   ) SetAscender"
                   19499: 
                   19500:        echo "(name $1\\\\n) Print"
                   19501:        echo "(fontname $2\\\\n) Print"
                   19502:        echo "/$1 NamedInPrologue"
                   19503:        echo "(charset\\\\n) Print"
                   19504:        echo "BuildFontCharset"
                   19505: }
                   19506: 
                   19507: Greek() {
                   19508:        echo "/unitwidth $UNITWIDTH def"
                   19509:        echo "/resolution $RESOLUTION def"
                   19510:        echo "/charset ["
                   19511:                SymbolCharset | awk '$1 ~ /\(\*[a-zA-Z]\)/'
                   19512:        echo "] def"
                   19513: 
                   19514:        echo "/$2 SelectFont"
                   19515:        echo "(orO) SetAscender"
                   19516: 
                   19517:        echo "(name $1\\\\n) Print"
                   19518:        echo "(fontname $2\\\\n) Print"
                   19519:        echo "/$1 NamedInPrologue"
                   19520:        echo "(spacewidth ) Print 32 GetWidth Print (\n) Print"
                   19521:        echo "(charset\\\\n) Print"
                   19522:        echo "BuildFontCharset"
                   19523: }
                   19524: 
                   19525: Symbol() {
                   19526:        echo "/unitwidth $UNITWIDTH def"
                   19527:        echo "/resolution $RESOLUTION def"
                   19528:        echo "/charset ["
                   19529:                SymbolCharset
                   19530:        echo "] def"
                   19531: 
                   19532:        echo "ChangeMetrics"
                   19533:        echo "/S SelectFont"
                   19534:        echo "(orO) SetAscender"
                   19535: 
                   19536:        echo "(name $1\\\\n) Print"
                   19537:        echo "(fontname $2\\\\n) Print"
                   19538:        echo "/$1 NamedInPrologue"
                   19539:        echo "(special\\\\n) Print"
                   19540:        echo "(charset\\\\n) Print"
                   19541:        echo "BuildFontCharset"
                   19542: }
                   19543: 
                   19544: Special() {
                   19545:        echo "/unitwidth $UNITWIDTH def"
                   19546:        echo "/resolution $RESOLUTION def"
                   19547:        echo "/charset ["
                   19548:                SpecialCharset
                   19549:        echo "] def"
                   19550: 
                   19551:        echo "ChangeMetrics"
                   19552:        echo "/S1 SelectFont"
                   19553: 
                   19554:        echo "(# Times-Roman special font\\\\n) Print"
                   19555:        echo "(name $1\\\\n) Print"
                   19556:        echo "(fontname $2\\\\n) Print"
                   19557:        echo "/$1 NamedInPrologue"
                   19558:        echo "(special\\\\n) Print"
                   19559:        echo "(charset\\\\n) Print"
                   19560:        echo "BuildFontCharset"
                   19561: }
                   19562: 
                   19563: #
                   19564: # The DESC file doesn't have to be built on a printer. It's only here for
                   19565: # consistency.
                   19566: #
                   19567: 
                   19568: Description() {
                   19569:        echo "/charset ["       # awk - so the stack doesn't overflow
                   19570:                StandardCharset | awk '$1 != "(---)" {print $1}'
                   19571:                SymbolCharset | awk '$1 != "(---)" {print $1}'
                   19572:                SpecialCharset | awk '$1 != "(---)" {print $1}'
                   19573:                DingbatsCharset | awk '$1 != "(---)" {print $1}'
                   19574:        echo "] def"
                   19575: 
                   19576:        cat <<-//DESC
                   19577:                (#Device Description - original PostScript character set
                   19578: 
                   19579:                PDL PostScript
                   19580: 
                   19581:                fonts 10 R I B BI CW H HI HB S1 S
                   19582:                sizes 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
                   19583:                23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 40 42 44 46
                   19584:                48 50 52 54 56 58 60 64 68 72 78 84 90 96 100 105 110 115
                   19585:                120 125 130 135 140 145 150 155 160 0
                   19586: 
                   19587:                res $RESOLUTION
                   19588:                hor 1
                   19589:                vert 1
                   19590:                unitwidth $UNITWIDTH
                   19591: 
                   19592:                ) Print
                   19593:        //DESC
                   19594:        echo "(charset\\\\n) Print"
                   19595:        echo "BuildDescCharset"
                   19596:        echo "(\\\\n) Print"
                   19597: }
                   19598: 
                   19599: 0707070014231217271006440057030057030000010643470522627501400003200000000111post.src/devpost/LINKFILE#
                   19600: # Creates missing width tables from existing ones.
                   19601: #
                   19602: 
                   19603: rm -f HM
                   19604: cp H HM
                   19605: 0707070014231123360407550057030057030000030440450522633073400002300000000000post.src/devLatin10707070014231123371006440057030057030000010440600522627501500003500000053076post.src/devLatin1/shell.lib#
                   19606: # Shell library - for building devLatin1 tables.
                   19607: #
                   19608: # The full ISO Latin1 alphabet appeared in Adobe's interpreter sometime
                   19609: # around Version 50.0. Prior to that ROM resident Type 1 text fonts were
                   19610: # missing 18 characters that are now part of the Latin1 standard. Width
                   19611: # tables will not build on printers that lack full Latin1 support. Error
                   19612: # message will likely reflect a missing ISOLatin1Encoding array.
                   19613: #
                   19614: 
                   19615: RESOLUTION=720
                   19616: UNITWIDTH=10
                   19617: 
                   19618: OCTALESCAPES=${OCTALESCAPES:-160}      # <= code means add \0ddd names
                   19619: DOWNLOADVECTOR=FALSE                   # TRUE can mean incomplete tables
                   19620: 
                   19621: #
                   19622: # BuiltinTables returns command lines that generate PostScript programs
                   19623: # for building a typesetter description file and font width tables for
                   19624: # a relatively standard collection of fonts. Use awk to select a command
                   19625: # line or modify an existing command to build a width table for a new
                   19626: # font.
                   19627: #
                   19628: 
                   19629: BuiltinTables() {
                   19630:        cat <<-'//End of BuiltinTables'
                   19631:                Proportional    R       Times-Roman
                   19632:                Proportional    I       Times-Italic
                   19633:                Proportional    B       Times-Bold
                   19634:                Proportional    BI      Times-BoldItalic
                   19635:                Proportional    AB      AvantGarde-Demi
                   19636:                Proportional    AI      AvantGarde-BookOblique
                   19637:                Proportional    AR      AvantGarde-Book
                   19638:                Proportional    AX      AvantGarde-DemiOblique
                   19639:                Proportional    H       Helvetica
                   19640:                Proportional    HB      Helvetica-Bold
                   19641:                Proportional    HI      Helvetica-Oblique
                   19642:                Proportional    HX      Helvetica-BoldOblique
                   19643:                Proportional    Hb      Helvetica-Narrow-Bold
                   19644:                Proportional    Hi      Helvetica-Narrow-Oblique
                   19645:                Proportional    Hr      Helvetica-Narrow
                   19646:                Proportional    Hx      Helvetica-Narrow-BoldOblique
                   19647:                Proportional    KB      Bookman-Demi
                   19648:                Proportional    KI      Bookman-LightItalic
                   19649:                Proportional    KR      Bookman-Light
                   19650:                Proportional    KX      Bookman-DemiItalic
                   19651:                Proportional    NB      NewCenturySchlbk-Bold
                   19652:                Proportional    NI      NewCenturySchlbk-Italic
                   19653:                Proportional    NR      NewCenturySchlbk-Roman
                   19654:                Proportional    NX      NewCenturySchlbk-BoldItalic
                   19655:                Proportional    PA      Palatino-Roman
                   19656:                Proportional    PB      Palatino-Bold
                   19657:                Proportional    PI      Palatino-Italic
                   19658:                Proportional    PX      Palatino-BoldItalic
                   19659:                Proportional    ZI      ZapfChancery-MediumItalic
                   19660:                FixedWidth      C       Courier
                   19661:                FixedWidth      CB      Courier-Bold
                   19662:                FixedWidth      CI      Courier-Oblique
                   19663:                FixedWidth      CO      Courier
                   19664:                FixedWidth      CW      Courier
                   19665:                FixedWidth      CX      Courier-BoldOblique
                   19666:                Dingbats        ZD      ZapfDingbats
                   19667:                Greek           GR      Symbol
                   19668:                Symbol          S       Symbol
                   19669:                Special         S1      Times-Roman
                   19670:                Description     DESC    ---
                   19671:        //End of BuiltinTables
                   19672: }
                   19673: 
                   19674: #
                   19675: # AllTables prints the complete list of builtin font names.
                   19676: #
                   19677: 
                   19678: AllTables() {
                   19679:        BuiltinTables | awk '{print $2}'
                   19680: }
                   19681: 
                   19682: #
                   19683: # Charset functions generate keyword/value pairs (as PostScript objects)
                   19684: # that describe the character set available in a font. The keyword is a
                   19685: # PostScript string that represents troff's name for the character. The
                   19686: # value is usually the literal name (i.e. begins with a /) assigned to
                   19687: # the character in the PostScript font. The value can also be an integer
                   19688: # or a PostScript string. An integer value is used as an index in the
                   19689: # current font's Encoding array. A string value is returned to the host
                   19690: # unchanged when the entry for the character is constructed. Entries that
                   19691: # have (") as their value are synonyms for the preceeding character.
                   19692: #
                   19693: # The 18 characters missing from ROM resident fonts on older printers are
                   19694: # flagged with the PostScript comment "% missing".
                   19695: #
                   19696: 
                   19697: StandardCharset() {
                   19698:        cat <<-'//End of StandardCharset'
                   19699:                (!)     /exclam
                   19700:                (")     /quotedbl
                   19701:                (dq)    (")                     % synonym
                   19702:                (#)     /numbersign
                   19703:                ($)     /dollar
                   19704:                (%)     /percent
                   19705:                (&)     /ampersand
                   19706:                (')     /quoteright
                   19707:                (\()    /parenleft
                   19708:                (\))    /parenright
                   19709:                (*)     /asterisk
                   19710:                (+)     /plus
                   19711:                (,)     /comma
                   19712:                (-)     /hyphen                 % changed from minus by request
                   19713:                (.)     /period
                   19714:                (/)     /slash
                   19715:                (0)     /zero
                   19716:                (1)     /one
                   19717:                (2)     /two
                   19718:                (3)     /three
                   19719:                (4)     /four
                   19720:                (5)     /five
                   19721:                (6)     /six
                   19722:                (7)     /seven
                   19723:                (8)     /eight
                   19724:                (9)     /nine
                   19725:                (:)     /colon
                   19726:                (;)     /semicolon
                   19727:                (<)     /less
                   19728:                (=)     /equal
                   19729:                (>)     /greater
                   19730:                (?)     /question
                   19731:                (@)     /at
                   19732:                (A)     /A
                   19733:                (B)     /B
                   19734:                (C)     /C
                   19735:                (D)     /D
                   19736:                (E)     /E
                   19737:                (F)     /F
                   19738:                (G)     /G
                   19739:                (H)     /H
                   19740:                (I)     /I
                   19741:                (J)     /J
                   19742:                (K)     /K
                   19743:                (L)     /L
                   19744:                (M)     /M
                   19745:                (N)     /N
                   19746:                (O)     /O
                   19747:                (P)     /P
                   19748:                (Q)     /Q
                   19749:                (R)     /R
                   19750:                (S)     /S
                   19751:                (T)     /T
                   19752:                (U)     /U
                   19753:                (V)     /V
                   19754:                (W)     /W
                   19755:                (X)     /X
                   19756:                (Y)     /Y
                   19757:                (Z)     /Z
                   19758:                ([)     /bracketleft
                   19759:                (\\)    /backslash
                   19760:                (bs)    (")                     % synonym
                   19761:                (])     /bracketright
                   19762:                (^)     /asciicircum
                   19763:                (_)     /underscore
                   19764:                (`)     /quoteleft
                   19765:                (a)     /a
                   19766:                (b)     /b
                   19767:                (c)     /c
                   19768:                (d)     /d
                   19769:                (e)     /e
                   19770:                (f)     /f
                   19771:                (g)     /g
                   19772:                (h)     /h
                   19773:                (i)     /i
                   19774:                (j)     /j
                   19775:                (k)     /k
                   19776:                (l)     /l
                   19777:                (m)     /m
                   19778:                (n)     /n
                   19779:                (o)     /o
                   19780:                (p)     /p
                   19781:                (q)     /q
                   19782:                (r)     /r
                   19783:                (s)     /s
                   19784:                (t)     /t
                   19785:                (u)     /u
                   19786:                (v)     /v
                   19787:                (w)     /w
                   19788:                (x)     /x
                   19789:                (y)     /y
                   19790:                (z)     /z
                   19791:                ({)     /braceleft
                   19792:                (|)     /bar
                   19793:                (})     /braceright
                   19794:                (~)     /asciitilde
                   19795:                (\\`)   /grave                  % devpost character
                   19796:                (ga)    (")                     % synonym
                   19797:                (!!)    /exclamdown
                   19798:                (c|)    /cent
                   19799:                (ct)    (")                     % devpost synonym
                   19800:                (L-)    /sterling
                   19801:                (ps)    (")                     % devpost synonym
                   19802:                (xo)    /currency
                   19803:                (cr)    (")                     % devpost synonym
                   19804:                (Y-)    /yen
                   19805:                (yn)    (")                     % devpost synonym
                   19806:                (||)    /brokenbar              % missing
                   19807:                (so)    /section
                   19808:                (sc)    (")                     % devpost synonym
                   19809:                ("")    /dieresis
                   19810:                (:a)    (")                     % devpost synonym
                   19811:                (co)    /copyright
                   19812:                (a_)    /ordfeminine
                   19813:                (<<)    /guillemotleft
                   19814:                (-,)    /logicalnot
                   19815:                (hy)    /hyphen
                   19816:                (--)    /minus
                   19817:                (ro)    /registered
                   19818:                (rg)    (")                     % devpost synonym
                   19819:                (-^)    /macron
                   19820:                (-a)    (")                     % devpost synonym
                   19821:                (0^)    /degree                 % missing
                   19822:                (+-)    /plusminus              % missing
                   19823:                (2^)    /twosuperior            % missing
                   19824:                (3^)    /threesuperior          % missing
                   19825:                (\\')   /acute
                   19826:                (aa)    (")                     % devpost synonym
                   19827:                (/u)    /mu                     % missing
                   19828:                (P!)    /paragraph
                   19829:                (pg)    (")                     % devpost synonym
                   19830:                (.^)    /periodcentered
                   19831:                (,,)    /cedilla
                   19832:                (,a)    (")                     % devpost synonym
                   19833:                (1^)    /onesuperior            % missing
                   19834:                (o_)    /ordmasculine
                   19835:                (>>)    /guillemotright
                   19836:                (14)    /onequarter             % missing
                   19837:                (12)    /onehalf                % missing
                   19838:                (34)    /threequarters          % missing
                   19839:                (??)    /questiondown
                   19840:                (A`)    /Agrave
                   19841:                (A')    /Aacute
                   19842:                (A^)    /Acircumflex
                   19843:                (A~)    /Atilde
                   19844:                (A")    /Adieresis
                   19845:                (A*)    /Aring
                   19846:                (AE)    /AE
                   19847:                (C,)    /Ccedilla
                   19848:                (E`)    /Egrave
                   19849:                (E')    /Eacute
                   19850:                (E^)    /Ecircumflex
                   19851:                (E")    /Edieresis
                   19852:                (I`)    /Igrave
                   19853:                (I')    /Iacute
                   19854:                (I^)    /Icircumflex
                   19855:                (I")    /Idieresis
                   19856:                (D-)    /Eth                    % missing
                   19857:                (N~)    /Ntilde
                   19858:                (O`)    /Ograve
                   19859:                (O')    /Oacute
                   19860:                (O^)    /Ocircumflex
                   19861:                (O~)    /Otilde
                   19862:                (O")    /Odieresis
                   19863:                (xx)    /multiply               % missing
                   19864:                (O/)    /Oslash
                   19865:                (U`)    /Ugrave
                   19866:                (U')    /Uacute
                   19867:                (U^)    /Ucircumflex
                   19868:                (U")    /Udieresis
                   19869:                (Y')    /Yacute                 % missing
                   19870:                (TH)    /Thorn                  % missing
                   19871:                (ss)    /germandbls
                   19872:                (a`)    /agrave
                   19873:                (a')    /aacute
                   19874:                (a^)    /acircumflex
                   19875:                (a~)    /atilde
                   19876:                (a")    /adieresis
                   19877:                (a*)    /aring
                   19878:                (ae)    /ae
                   19879:                (c,)    /ccedilla
                   19880:                (e`)    /egrave
                   19881:                (e')    /eacute
                   19882:                (e^)    /ecircumflex
                   19883:                (e")    /edieresis
                   19884:                (i`)    /igrave
                   19885:                (i')    /iacute
                   19886:                (i^)    /icircumflex
                   19887:                (i")    /idieresis
                   19888:                (d-)    /eth                    % missing
                   19889:                (n~)    /ntilde
                   19890:                (o`)    /ograve
                   19891:                (o')    /oacute
                   19892:                (o^)    /ocircumflex
                   19893:                (o~)    /otilde
                   19894:                (o")    /odieresis
                   19895:                (-:)    /divide                 % missing
                   19896:                (o/)    /oslash
                   19897:                (u`)    /ugrave
                   19898:                (u')    /uacute
                   19899:                (u^)    /ucircumflex
                   19900:                (u")    /udieresis
                   19901:                (y')    /yacute                 % missing
                   19902:                (th)    /thorn                  % missing
                   19903:                (y")    /ydieresis
                   19904:                (^a)    /circumflex             % devpost accent
                   19905:                (~a)    /tilde                  % devpost accent
                   19906:                (Ua)    /breve                  % devpost accent
                   19907:                (.a)    /dotaccent              % devpost accent
                   19908:                (oa)    /ring                   % devpost accent
                   19909:                ("a)    /hungarumlaut           % devpost accent
                   19910:                (Ca)    /ogonek                 % devpost accent
                   19911:                (va)    /caron                  % devpost accent
                   19912:        //End of StandardCharset
                   19913: }
                   19914: 
                   19915: #
                   19916: # DingbatsCharset guarantees changes in StandardCharset don't show up in ZD.
                   19917: #
                   19918: 
                   19919: DingbatsCharset() {
                   19920:        cat <<-'//End of DingbatsCharset'
                   19921:                (!)     /exclam
                   19922:                (")     /quotedbl
                   19923:                (#)     /numbersign
                   19924:                ($)     /dollar
                   19925:                (%)     /percent
                   19926:                (&)     /ampersand
                   19927:                (')     /quoteright
                   19928:                (\()    /parenleft
                   19929:                (\))    /parenright
                   19930:                (*)     /asterisk
                   19931:                (+)     /plus
                   19932:                (,)     /comma
                   19933:                (-)     /minus          % also hyphen in devpost
                   19934:                (.)     /period
                   19935:                (/)     /slash
                   19936:                (0)     /zero
                   19937:                (1)     /one
                   19938:                (2)     /two
                   19939:                (3)     /three
                   19940:                (4)     /four
                   19941:                (5)     /five
                   19942:                (6)     /six
                   19943:                (7)     /seven
                   19944:                (8)     /eight
                   19945:                (9)     /nine
                   19946:                (:)     /colon
                   19947:                (;)     /semicolon
                   19948:                (<)     /less
                   19949:                (=)     /equal
                   19950:                (>)     /greater
                   19951:                (?)     /question
                   19952:                (@)     /at
                   19953:                (A)     /A
                   19954:                (B)     /B
                   19955:                (C)     /C
                   19956:                (D)     /D
                   19957:                (E)     /E
                   19958:                (F)     /F
                   19959:                (G)     /G
                   19960:                (H)     /H
                   19961:                (I)     /I
                   19962:                (J)     /J
                   19963:                (K)     /K
                   19964:                (L)     /L
                   19965:                (M)     /M
                   19966:                (N)     /N
                   19967:                (O)     /O
                   19968:                (P)     /P
                   19969:                (Q)     /Q
                   19970:                (R)     /R
                   19971:                (S)     /S
                   19972:                (T)     /T
                   19973:                (U)     /U
                   19974:                (V)     /V
                   19975:                (W)     /W
                   19976:                (X)     /X
                   19977:                (Y)     /Y
                   19978:                (Z)     /Z
                   19979:                ([)     /bracketleft
                   19980:                (\\)    /backslash
                   19981:                (])     /bracketright
                   19982:                (^)     /asciicircum
                   19983:                (_)     /underscore
                   19984:                (`)     /quoteleft
                   19985:                (a)     /a
                   19986:                (b)     /b
                   19987:                (c)     /c
                   19988:                (d)     /d
                   19989:                (e)     /e
                   19990:                (f)     /f
                   19991:                (g)     /g
                   19992:                (h)     /h
                   19993:                (i)     /i
                   19994:                (j)     /j
                   19995:                (k)     /k
                   19996:                (l)     /l
                   19997:                (m)     /m
                   19998:                (n)     /n
                   19999:                (o)     /o
                   20000:                (p)     /p
                   20001:                (q)     /q
                   20002:                (r)     /r
                   20003:                (s)     /s
                   20004:                (t)     /t
                   20005:                (u)     /u
                   20006:                (v)     /v
                   20007:                (w)     /w
                   20008:                (x)     /x
                   20009:                (y)     /y
                   20010:                (z)     /z
                   20011:                ({)     /braceleft
                   20012:                (|)     /bar
                   20013:                (})     /braceright
                   20014:                (~)     /asciitilde
                   20015:                (\\`)   /grave                  % devpost character
                   20016:                (!!)    /exclamdown
                   20017:                (c|)    /cent
                   20018:                (L-)    /sterling
                   20019:                (xo)    /currency
                   20020:                (Y-)    /yen
                   20021:                (||)    /brokenbar              % missing
                   20022:                (so)    /section
                   20023:                ("")    /dieresis
                   20024:                (co)    /copyright
                   20025:                (a_)    /ordfeminine
                   20026:                (<<)    /guillemotleft
                   20027:                (-,)    /logicalnot
                   20028:                (hy)    /hyphen
                   20029:                (ro)    /registered
                   20030:                (-^)    /macron
                   20031:                (0^)    /degree                 % missing
                   20032:                (+-)    /plusminus              % missing
                   20033:                (2^)    /twosuperior            % missing
                   20034:                (3^)    /threesuperior          % missing
                   20035:                (\\')   /acute
                   20036:                (/u)    /mu                     % missing
                   20037:                (P!)    /paragraph
                   20038:                (.^)    /periodcentered
                   20039:                (,,)    /cedilla
                   20040:                (1^)    /onesuperior            % missing
                   20041:                (o_)    /ordmasculine
                   20042:                (>>)    /guillemotright
                   20043:                (14)    /onequarter             % missing
                   20044:                (12)    /onehalf                % missing
                   20045:                (34)    /threequarters          % missing
                   20046:                (??)    /questiondown
                   20047:                (A`)    /Agrave
                   20048:                (A')    /Aacute
                   20049:                (A^)    /Acircumflex
                   20050:                (A~)    /Atilde
                   20051:                (A")    /Adieresis
                   20052:                (A*)    /Aring
                   20053:                (AE)    /AE
                   20054:                (C,)    /Ccedilla
                   20055:                (E`)    /Egrave
                   20056:                (E')    /Eacute
                   20057:                (E^)    /Ecircumflex
                   20058:                (E")    /Edieresis
                   20059:                (I`)    /Igrave
                   20060:                (I')    /Iacute
                   20061:                (I^)    /Icircumflex
                   20062:                (I")    /Idieresis
                   20063:                (D-)    /Eth                    % missing
                   20064:                (N~)    /Ntilde
                   20065:                (O`)    /Ograve
                   20066:                (O')    /Oacute
                   20067:                (O^)    /Ocircumflex
                   20068:                (O~)    /Otilde
                   20069:                (O")    /Odieresis
                   20070:                (xx)    /multiply               % missing
                   20071:                (O/)    /Oslash
                   20072:                (U`)    /Ugrave
                   20073:                (U')    /Uacute
                   20074:                (U^)    /Ucircumflex
                   20075:                (U")    /Udieresis
                   20076:                (Y')    /Yacute                 % missing
                   20077:                (TH)    /Thorn                  % missing
                   20078:                (ss)    /germandbls
                   20079:                (a`)    /agrave
                   20080:                (a')    /aacute
                   20081:                (a^)    /acircumflex
                   20082:                (a~)    /atilde
                   20083:                (a")    /adieresis
                   20084:                (a*)    /aring
                   20085:                (ae)    /ae
                   20086:                (c,)    /ccedilla
                   20087:                (e`)    /egrave
                   20088:                (e')    /eacute
                   20089:                (e^)    /ecircumflex
                   20090:                (e")    /edieresis
                   20091:                (i`)    /igrave
                   20092:                (i')    /iacute
                   20093:                (i^)    /icircumflex
                   20094:                (i")    /idieresis
                   20095:                (d-)    /eth                    % missing
                   20096:                (n~)    /ntilde
                   20097:                (o`)    /ograve
                   20098:                (o')    /oacute
                   20099:                (o^)    /ocircumflex
                   20100:                (o~)    /otilde
                   20101:                (o")    /odieresis
                   20102:                (-:)    /divide                 % missing
                   20103:                (o/)    /oslash
                   20104:                (u`)    /ugrave
                   20105:                (u')    /uacute
                   20106:                (u^)    /ucircumflex
                   20107:                (u")    /udieresis
                   20108:                (y')    /yacute                 % missing
                   20109:                (th)    /thorn                  % missing
                   20110:                (y")    /ydieresis
                   20111:        //End of DingbatsCharset
                   20112: }
                   20113: 
                   20114: SymbolCharset() {
                   20115:        cat <<-'//End of SymbolCharset'
                   20116:                (---)   /exclam
                   20117:                (fa)    /universal
                   20118:                (---)   /numbersign
                   20119:                (te)    /existential
                   20120:                (---)   /percent
                   20121:                (---)   /ampersand
                   20122:                (st)    /suchthat
                   20123:                (---)   /parenleft
                   20124:                (---)   /parenright
                   20125:                (**)    /asteriskmath
                   20126:                (pl)    /plus
                   20127:                (---)   /comma
                   20128:                (mi)    /minus
                   20129:                (---)   /period
                   20130:                (sl)    /slash
                   20131:                (---)   /zero
                   20132:                (---)   /one
                   20133:                (---)   /two
                   20134:                (---)   /three
                   20135:                (---)   /four
                   20136:                (---)   /five
                   20137:                (---)   /six
                   20138:                (---)   /seven
                   20139:                (---)   /eight
                   20140:                (---)   /nine
                   20141:                (---)   /colon
                   20142:                (---)   /semicolon
                   20143:                (<)     /less
                   20144:                (eq)    /equal
                   20145:                (>)     /greater
                   20146:                (---)   /question
                   20147:                (cg)    /congruent
                   20148:                (*A)    /Alpha
                   20149:                (*B)    /Beta
                   20150:                (*X)    /Chi
                   20151:                (*D)    /Delta
                   20152:                (*E)    /Epsilon
                   20153:                (*F)    /Phi
                   20154:                (*G)    /Gamma
                   20155:                (*Y)    /Eta
                   20156:                (*I)    /Iota
                   20157:                (---)   /theta1
                   20158:                (*K)    /Kappa
                   20159:                (*L)    /Lambda
                   20160:                (*M)    /Mu
                   20161:                (*N)    /Nu
                   20162:                (*O)    /Omicron
                   20163:                (*P)    /Pi
                   20164:                (*H)    /Theta
                   20165:                (*R)    /Rho
                   20166:                (*S)    /Sigma
                   20167:                (*T)    /Tau
                   20168:                (*U)    /Upsilon
                   20169:                (ts)    /sigma1
                   20170:                (*W)    /Omega
                   20171:                (*C)    /Xi
                   20172:                (*Q)    /Psi
                   20173:                (*Z)    /Zeta
                   20174:                (---)   /bracketleft
                   20175:                (tf)    /therefore
                   20176:                (---)   /bracketright
                   20177:                (pp)    /perpendicular
                   20178:                (ul)    /underscore
                   20179:                (_)     (")                     % synonym
                   20180:                (rn)    /radicalex
                   20181:                (*a)    /alpha
                   20182:                (*b)    /beta
                   20183:                (*x)    /chi
                   20184:                (*d)    /delta
                   20185:                (*e)    /epsilon
                   20186:                (*f)    /phi
                   20187:                (*g)    /gamma
                   20188:                (*y)    /eta
                   20189:                (*i)    /iota
                   20190:                (---)   /phi1
                   20191:                (*k)    /kappa
                   20192:                (*l)    /lambda
                   20193:                (*m)    /mu
                   20194:                (*n)    /nu
                   20195:                (*o)    /omicron
                   20196:                (*p)    /pi
                   20197:                (*h)    /theta
                   20198:                (*r)    /rho
                   20199:                (*s)    /sigma
                   20200:                (*t)    /tau
                   20201:                (*u)    /upsilon
                   20202:                (---)   /omega1
                   20203:                (*w)    /omega
                   20204:                (*c)    /xi
                   20205:                (*q)    /psi
                   20206:                (*z)    /zeta
                   20207:                (---)   /braceleft
                   20208:                (or)    /bar
                   20209:                (---)   /braceright
                   20210:                (ap)    /similar
                   20211:                (---)   /Upsilon1
                   20212:                (fm)    /minute
                   20213:                (<=)    /lessequal
                   20214:                (fr)    /fraction               % devpost character
                   20215:                (if)    /infinity
                   20216:                (fn)    /florin                 % devpost character
                   20217:                (---)   /club
                   20218:                (---)   /diamond
                   20219:                (---)   /heart
                   20220:                (---)   /spade
                   20221:                (ab)    /arrowboth
                   20222:                (<-)    /arrowleft
                   20223:                (ua)    /arrowup
                   20224:                (->)    /arrowright
                   20225:                (da)    /arrowdown
                   20226:                (de)    /degree
                   20227:                (+-)    /plusminus
                   20228:                (---)   /second
                   20229:                (>=)    /greaterequal
                   20230:                (mu)    /multiply
                   20231:                (pt)    /proportional
                   20232:                (pd)    /partialdiff
                   20233:                (bu)    /bullet
                   20234:                (di)    /divide
                   20235:                (!=)    /notequal
                   20236:                (==)    /equivalence
                   20237:                (~~)    /approxequal
                   20238:                (el)    /ellipsis
                   20239:                (av)    /arrowvertex
                   20240:                (ah)    /arrowhorizex
                   20241:                (CR)    /carriagereturn
                   20242:                (af)    /aleph
                   20243:                (If)    /Ifraktur
                   20244:                (Rf)    /Rfraktur
                   20245:                (ws)    /weierstrass
                   20246:                (Ox)    /circlemultiply
                   20247:                (O+)    /circleplus
                   20248:                (es)    /emptyset
                   20249:                (ca)    /intersection
                   20250:                (cu)    /union
                   20251:                (sp)    /propersuperset
                   20252:                (ip)    /reflexsuperset
                   20253:                (!b)    /notsubset
                   20254:                (sb)    /propersubset
                   20255:                (ib)    /reflexsubset
                   20256:                (mo)    /element
                   20257:                (!m)    /notelement
                   20258:                (an)    /angle
                   20259:                (gr)    /gradient
                   20260:                (rg)    /registerserif
                   20261:                (co)    /copyrightserif
                   20262:                (tm)    /trademarkserif
                   20263:                (---)   /product
                   20264:                (sr)    /radical
                   20265:                (c.)    /dotmath
                   20266:                (no)    /logicalnot
                   20267:                (l&)    /logicaland
                   20268:                (l|)    /logicalor
                   20269:                (---)   /arrowdblboth
                   20270:                (---)   /arrowdblleft
                   20271:                (---)   /arrowdblup
                   20272:                (---)   /arrowdblright
                   20273:                (---)   /arrowdbldown
                   20274:                (lz)    /lozenge
                   20275:                (b<)    /angleleft
                   20276:                (RG)    /registersans
                   20277:                (CO)    /copyrightsans
                   20278:                (TM)    /trademarksans
                   20279:                (---)   /summation
                   20280:                (LT)    /parenlefttp
                   20281:                (br)    /parenleftex
                   20282:                (LX)    (")                     % synonym
                   20283:                (LB)    /parenleftbt
                   20284:                (lc)    /bracketlefttp
                   20285:                (lx)    /bracketleftex
                   20286:                (lf)    /bracketleftbt
                   20287:                (lt)    /bracelefttp
                   20288:                (lk)    /braceleftmid
                   20289:                (lb)    /braceleftbt
                   20290:                (bv)    /braceex
                   20291:                (|)     (")                     % synonym
                   20292:                (b>)    /angleright
                   20293:                (is)    /integral
                   20294:                (---)   /integraltp
                   20295:                (---)   /integralex
                   20296:                (---)   /integralbt
                   20297:                (RT)    /parenrighttp
                   20298:                (RX)    /parenrightex
                   20299:                (RB)    /parenrightbt
                   20300:                (rc)    /bracketrighttp
                   20301:                (rx)    /bracketrightex
                   20302:                (rf)    /bracketrightbt
                   20303:                (rt)    /bracerighttp
                   20304:                (rk)    /bracerightmid
                   20305:                (rb)    /bracerightbt
                   20306:                (~=)    (55     0       1)      % charlib
                   20307:        //End of SymbolCharset
                   20308: }
                   20309: 
                   20310: SpecialCharset() {
                   20311:        cat <<-'//End of SpecialCharset'
                   20312:                (ru)    /underscore
                   20313:                ('')    /quotedblright          % devpost character
                   20314:                (``)    /quotedblleft           % devpost character
                   20315:                (dg)    /dagger                 % devpost character
                   20316:                (dd)    /daggerdbl              % devpost character
                   20317:                (en)    /endash                 % devpost character
                   20318:                (\\-)   (")                     % synonym
                   20319:                (em)    /emdash
                   20320: %              (ff)    (60     2       1)      % charlib
                   20321: %              (Fi)    (84     2       1)      % charlib
                   20322: %              (Fl)    (84     2       1)      % charlib
                   20323:                (14)    (75     2       1)      % charlib
                   20324:                (12)    (75     2       1)      % charlib
                   20325:                (34)    (75     2       1)      % charlib
                   20326:                (bx)    (50     2       1)      % charlib
                   20327:                (ob)    (38     2       1)      % charlib
                   20328:                (ci)    (75     0       1)      % charlib
                   20329:                (sq)    (50     2       1)      % charlib
                   20330:                (Sl)    (50     2       1)      % charlib
                   20331:                (L1)    (110    1       1)      % charlib
                   20332:                (LA)    (110    1       1)      % charlib
                   20333:                (LV)    (110    3       1)      % charlib
                   20334:                (LH)    (210    1       1)      % charlib
                   20335:                (lh)    (100    0       1)      % charlib
                   20336:                (rh)    (100    0       1)      % charlib
                   20337:                (lH)    (100    0       1)      % charlib
                   20338:                (rH)    (100    0       1)      % charlib
                   20339:                (PC)    (220    2       1)      % charlib
                   20340:                (DG)    (185    2       1)      % charlib
                   20341:        //End of SpecialCharset
                   20342: }
                   20343: 
                   20344: #
                   20345: # Latin1 ensures a font uses the ISOLatin1Encoding vector, although only
                   20346: # text fonts should be re-encoded. Downloading the Encoding vector doesn't
                   20347: # often make sense. No ISOLatin1Encoding array likely means ROM based fonts
                   20348: # on your printer are incomplete. Type 1 fonts with a full Latin1 character
                   20349: # set appeared sometime after Version 50.0.
                   20350: #
                   20351: 
                   20352: Latin1() {
                   20353:        if [ "$DOWNLOADVECTOR" = TRUE ]; then
                   20354:                cat <<-'//End of ISOLatin1Encoding'
                   20355:                        /ISOLatin1Encoding [
                   20356:                                /.notdef
                   20357:                                /.notdef
                   20358:                                /.notdef
                   20359:                                /.notdef
                   20360:                                /.notdef
                   20361:                                /.notdef
                   20362:                                /.notdef
                   20363:                                /.notdef
                   20364:                                /.notdef
                   20365:                                /.notdef
                   20366:                                /.notdef
                   20367:                                /.notdef
                   20368:                                /.notdef
                   20369:                                /.notdef
                   20370:                                /.notdef
                   20371:                                /.notdef
                   20372:                                /.notdef
                   20373:                                /.notdef
                   20374:                                /.notdef
                   20375:                                /.notdef
                   20376:                                /.notdef
                   20377:                                /.notdef
                   20378:                                /.notdef
                   20379:                                /.notdef
                   20380:                                /.notdef
                   20381:                                /.notdef
                   20382:                                /.notdef
                   20383:                                /.notdef
                   20384:                                /.notdef
                   20385:                                /.notdef
                   20386:                                /.notdef
                   20387:                                /.notdef
                   20388:                                /space
                   20389:                                /exclam
                   20390:                                /quotedbl
                   20391:                                /numbersign
                   20392:                                /dollar
                   20393:                                /percent
                   20394:                                /ampersand
                   20395:                                /quoteright
                   20396:                                /parenleft
                   20397:                                /parenright
                   20398:                                /asterisk
                   20399:                                /plus
                   20400:                                /comma
                   20401:                                /minus
                   20402:                                /period
                   20403:                                /slash
                   20404:                                /zero
                   20405:                                /one
                   20406:                                /two
                   20407:                                /three
                   20408:                                /four
                   20409:                                /five
                   20410:                                /six
                   20411:                                /seven
                   20412:                                /eight
                   20413:                                /nine
                   20414:                                /colon
                   20415:                                /semicolon
                   20416:                                /less
                   20417:                                /equal
                   20418:                                /greater
                   20419:                                /question
                   20420:                                /at
                   20421:                                /A
                   20422:                                /B
                   20423:                                /C
                   20424:                                /D
                   20425:                                /E
                   20426:                                /F
                   20427:                                /G
                   20428:                                /H
                   20429:                                /I
                   20430:                                /J
                   20431:                                /K
                   20432:                                /L
                   20433:                                /M
                   20434:                                /N
                   20435:                                /O
                   20436:                                /P
                   20437:                                /Q
                   20438:                                /R
                   20439:                                /S
                   20440:                                /T
                   20441:                                /U
                   20442:                                /V
                   20443:                                /W
                   20444:                                /X
                   20445:                                /Y
                   20446:                                /Z
                   20447:                                /bracketleft
                   20448:                                /backslash
                   20449:                                /bracketright
                   20450:                                /asciicircum
                   20451:                                /underscore
                   20452:                                /quoteleft
                   20453:                                /a
                   20454:                                /b
                   20455:                                /c
                   20456:                                /d
                   20457:                                /e
                   20458:                                /f
                   20459:                                /g
                   20460:                                /h
                   20461:                                /i
                   20462:                                /j
                   20463:                                /k
                   20464:                                /l
                   20465:                                /m
                   20466:                                /n
                   20467:                                /o
                   20468:                                /p
                   20469:                                /q
                   20470:                                /r
                   20471:                                /s
                   20472:                                /t
                   20473:                                /u
                   20474:                                /v
                   20475:                                /w
                   20476:                                /x
                   20477:                                /y
                   20478:                                /z
                   20479:                                /braceleft
                   20480:                                /bar
                   20481:                                /braceright
                   20482:                                /asciitilde
                   20483:                                /.notdef
                   20484:                                /.notdef
                   20485:                                /.notdef
                   20486:                                /.notdef
                   20487:                                /.notdef
                   20488:                                /.notdef
                   20489:                                /.notdef
                   20490:                                /.notdef
                   20491:                                /.notdef
                   20492:                                /.notdef
                   20493:                                /.notdef
                   20494:                                /.notdef
                   20495:                                /.notdef
                   20496:                                /.notdef
                   20497:                                /.notdef
                   20498:                                /.notdef
                   20499:                                /.notdef
                   20500:                                /dotlessi
                   20501:                                /grave
                   20502:                                /acute
                   20503:                                /circumflex
                   20504:                                /tilde
                   20505:                                /macron
                   20506:                                /breve
                   20507:                                /dotaccent
                   20508:                                /dieresis
                   20509:                                /.notdef
                   20510:                                /ring
                   20511:                                /cedilla
                   20512:                                /.notdef
                   20513:                                /hungarumlaut
                   20514:                                /ogonek
                   20515:                                /caron
                   20516:                                /space
                   20517:                                /exclamdown
                   20518:                                /cent
                   20519:                                /sterling
                   20520:                                /currency
                   20521:                                /yen
                   20522:                                /brokenbar
                   20523:                                /section
                   20524:                                /dieresis
                   20525:                                /copyright
                   20526:                                /ordfeminine
                   20527:                                /guillemotleft
                   20528:                                /logicalnot
                   20529:                                /hyphen
                   20530:                                /registered
                   20531:                                /macron
                   20532:                                /degree
                   20533:                                /plusminus
                   20534:                                /twosuperior
                   20535:                                /threesuperior
                   20536:                                /acute
                   20537:                                /mu
                   20538:                                /paragraph
                   20539:                                /periodcentered
                   20540:                                /cedilla
                   20541:                                /onesuperior
                   20542:                                /ordmasculine
                   20543:                                /guillemotright
                   20544:                                /onequarter
                   20545:                                /onehalf
                   20546:                                /threequarters
                   20547:                                /questiondown
                   20548:                                /Agrave
                   20549:                                /Aacute
                   20550:                                /Acircumflex
                   20551:                                /Atilde
                   20552:                                /Adieresis
                   20553:                                /Aring
                   20554:                                /AE
                   20555:                                /Ccedilla
                   20556:                                /Egrave
                   20557:                                /Eacute
                   20558:                                /Ecircumflex
                   20559:                                /Edieresis
                   20560:                                /Igrave
                   20561:                                /Iacute
                   20562:                                /Icircumflex
                   20563:                                /Idieresis
                   20564:                                /Eth
                   20565:                                /Ntilde
                   20566:                                /Ograve
                   20567:                                /Oacute
                   20568:                                /Ocircumflex
                   20569:                                /Otilde
                   20570:                                /Odieresis
                   20571:                                /multiply
                   20572:                                /Oslash
                   20573:                                /Ugrave
                   20574:                                /Uacute
                   20575:                                /Ucircumflex
                   20576:                                /Udieresis
                   20577:                                /Yacute
                   20578:                                /Thorn
                   20579:                                /germandbls
                   20580:                                /agrave
                   20581:                                /aacute
                   20582:                                /acircumflex
                   20583:                                /atilde
                   20584:                                /adieresis
                   20585:                                /aring
                   20586:                                /ae
                   20587:                                /ccedilla
                   20588:                                /egrave
                   20589:                                /eacute
                   20590:                                /ecircumflex
                   20591:                                /edieresis
                   20592:                                /igrave
                   20593:                                /iacute
                   20594:                                /icircumflex
                   20595:                                /idieresis
                   20596:                                /eth
                   20597:                                /ntilde
                   20598:                                /ograve
                   20599:                                /oacute
                   20600:                                /ocircumflex
                   20601:                                /otilde
                   20602:                                /odieresis
                   20603:                                /divide
                   20604:                                /oslash
                   20605:                                /ugrave
                   20606:                                /uacute
                   20607:                                /ucircumflex
                   20608:                                /udieresis
                   20609:                                /yacute
                   20610:                                /thorn
                   20611:                                /ydieresis
                   20612:                        ] def
                   20613:                //End of ISOLatin1Encoding
                   20614:        fi
                   20615: 
                   20616:        echo "ISOLatin1Encoding /$1 ReEncode"
                   20617: }
                   20618: 
                   20619: #
                   20620: # Generating functions output PostScript programs that build font width
                   20621: # tables or a typesetter description file. Send the program to a printer
                   20622: # and the complete table will come back on the serial port. All write on
                   20623: # stdout and assume the prologue and other required PostScript files are
                   20624: # all available.
                   20625: #
                   20626: 
                   20627: Proportional() {
                   20628:        echo "/unitwidth $UNITWIDTH def"
                   20629:        echo "/resolution $RESOLUTION def"
                   20630:        echo "/octalescapes $OCTALESCAPES def"
                   20631:        echo "/charset ["
                   20632:                # Get <>_ and | from S. Use accents for ascii ^ and ~.
                   20633:                StandardCharset | awk '
                   20634:                        $1 == "(<)" && $2 == "/less" {$1 = "(---)"}
                   20635:                        $1 == "(>)" && $2 == "/greater" {$1 = "(---)"}
                   20636:                        $1 == "(_)" && $2 == "/underscore" {$1 = "(---)"}
                   20637:                        $1 == "(|)" && $2 == "/bar" {$1 = "(---)"}
                   20638:                        $1 == "(^)" && $2 == "/asciicircum" {
                   20639:                                printf "(^)\t/circumflex\n"
                   20640:                                $1 = "(---)"
                   20641:                        }
                   20642:                        $1 == "(~)" && $2 == "/asciitilde" {
                   20643:                                printf "(~)\t/tilde\n"
                   20644:                                $1 = "(---)"
                   20645:                        }
                   20646:                        {printf "%s\t%s\n", $1, $2}
                   20647:                '
                   20648:        echo "] def"
                   20649: 
                   20650:        Latin1 $2
                   20651:        echo "/$2 SelectFont"
                   20652:        echo "(opO) SetAscender"
                   20653: 
                   20654:        echo "(name $1\\\\n) Print"
                   20655:        echo "(fontname $2\\\\n) Print"
                   20656:        echo "/$1 NamedInPrologue"
                   20657:        echo "(spacewidth ) Print 32 GetWidth Print (\n) Print"
                   20658:        echo "(charset\\\\n) Print"
                   20659:        echo "BuildFontCharset"
                   20660: }
                   20661: 
                   20662: FixedWidth() {
                   20663:        echo "/unitwidth $UNITWIDTH def"
                   20664:        echo "/resolution $RESOLUTION def"
                   20665:        echo "/octalescapes $OCTALESCAPES def"
                   20666:        echo "/charset ["
                   20667:                StandardCharset
                   20668:        echo "] def"
                   20669: 
                   20670:        Latin1 $2
                   20671:        echo "/$2 SelectFont"
                   20672:        echo "(opO) SetAscender"
                   20673: 
                   20674:        echo "(name $1\\\\n) Print"
                   20675:        echo "(fontname $2\\\\n) Print"
                   20676:        echo "/$1 NamedInPrologue"
                   20677:        echo "(spacewidth ) Print 32 GetWidth Print (\n) Print"
                   20678:        echo "(charset\\\\n) Print"
                   20679:        echo "BuildFontCharset"
                   20680: }
                   20681: 
                   20682: Dingbats() {
                   20683:        echo "/unitwidth $UNITWIDTH def"
                   20684:        echo "/resolution $RESOLUTION def"
                   20685:        echo "/octalescapes $OCTALESCAPES def"
                   20686:        echo "/charset ["
                   20687:                DingbatsCharset | awk '$1 != "(---)" && $2 ~ /^\/[a-zA-Z]/ {
                   20688:                        printf "%s\tISOLatin1Encoding %s GetCode\n", $1, $2
                   20689:                }'
                   20690:        echo "] def"
                   20691: 
                   20692:        echo "/$2 SelectFont"
                   20693:        echo "(   ) SetAscender"
                   20694: 
                   20695:        echo "(name $1\\\\n) Print"
                   20696:        echo "(fontname $2\\\\n) Print"
                   20697:        echo "/$1 NamedInPrologue"
                   20698:        echo "(charset\\\\n) Print"
                   20699:        echo "BuildFontCharset"
                   20700: }
                   20701: 
                   20702: Greek() {
                   20703:        echo "/unitwidth $UNITWIDTH def"
                   20704:        echo "/resolution $RESOLUTION def"
                   20705:        echo "/charset ["
                   20706:                SymbolCharset | awk '$1 ~ /\(\*[a-zA-Z]\)/'
                   20707:        echo "] def"
                   20708: 
                   20709:        echo "/$2 SelectFont"
                   20710:        echo "(orO) SetAscender"
                   20711: 
                   20712:        echo "(name $1\\\\n) Print"
                   20713:        echo "(fontname $2\\\\n) Print"
                   20714:        echo "/$1 NamedInPrologue"
                   20715:        echo "(spacewidth ) Print 32 GetWidth Print (\n) Print"
                   20716:        echo "(charset\\\\n) Print"
                   20717:        echo "BuildFontCharset"
                   20718: }
                   20719: 
                   20720: Symbol() {
                   20721:        echo "/unitwidth $UNITWIDTH def"
                   20722:        echo "/resolution $RESOLUTION def"
                   20723:        echo "/charset ["
                   20724:                SymbolCharset
                   20725:        echo "] def"
                   20726: 
                   20727:        echo "ChangeMetrics"
                   20728:        echo "/S SelectFont"
                   20729:        echo "(orO) SetAscender"
                   20730: 
                   20731:        echo "(name $1\\\\n) Print"
                   20732:        echo "(fontname $2\\\\n) Print"
                   20733:        echo "/$1 NamedInPrologue"
                   20734:        echo "(special\\\\n) Print"
                   20735:        echo "(charset\\\\n) Print"
                   20736:        echo "BuildFontCharset"
                   20737: }
                   20738: 
                   20739: Special() {
                   20740:        echo "/unitwidth $UNITWIDTH def"
                   20741:        echo "/resolution $RESOLUTION def"
                   20742:        echo "/charset ["
                   20743:                SpecialCharset
                   20744:        echo "] def"
                   20745: 
                   20746:        echo "ChangeMetrics"
                   20747:        echo "/S1 SelectFont"
                   20748: 
                   20749:        echo "(# Times-Roman special font\\\\n) Print"
                   20750:        echo "(name $1\\\\n) Print"
                   20751:        echo "(fontname $2\\\\n) Print"
                   20752:        echo "/$1 NamedInPrologue"
                   20753:        echo "(special\\\\n) Print"
                   20754:        echo "(charset\\\\n) Print"
                   20755:        echo "BuildFontCharset"
                   20756: }
                   20757: 
                   20758: #
                   20759: # The DESC file doesn't have to be built on a printer. It's only here for
                   20760: # consistency.
                   20761: #
                   20762: 
                   20763: Description() {
                   20764:        echo "/charset ["       # awk - so the stack doesn't overflow
                   20765:                StandardCharset | awk '{print $1}'
                   20766:                SymbolCharset | awk '{print $1}'
                   20767:                SpecialCharset | awk '{print $1}'
                   20768:        echo "] def"
                   20769: 
                   20770:        cat <<-//DESC
                   20771:                (#Device Description - Latin1 character set
                   20772: 
                   20773:                PDL PostScript
                   20774:                Encoding Latin1
                   20775: 
                   20776:                fonts 10 R I B BI CW H HI HB S1 S
                   20777:                sizes 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
                   20778:                23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 40 42 44 46
                   20779:                48 50 52 54 56 58 60 64 68 72 78 84 90 96 100 105 110 115
                   20780:                120 125 130 135 140 145 150 155 160 0
                   20781:                res $RESOLUTION
                   20782:                hor 1
                   20783:                vert 1
                   20784:                unitwidth $UNITWIDTH
                   20785: 
                   20786:                ) Print
                   20787:        //DESC
                   20788:        echo "(charset\\\\n) Print"
                   20789:        echo "BuildDescCharset"
                   20790:        echo "(\\\\n) Print"
                   20791: }
                   20792: 
                   20793: 0707070014231123401006440057030057030000010440460522627501500003400000000111post.src/devLatin1/LINKFILE#
                   20794: # Creates missing width tables from existing ones.
                   20795: #
                   20796: 
                   20797: rm -f HM
                   20798: cp H HM
                   20799: 0707070014231123411006440057030057030000010440240522627501500002500000006137post.src/devLatin1/Rname R
                   20800: fontname Times-Roman
                   20801: named in prologue
                   20802: spacewidth 25
                   20803: charset
                   20804: !      33      2       33
                   20805: "      41      2       34
                   20806: dq     "
                   20807: #      50      2       35
                   20808: $      50      2       36
                   20809: %      83      2       37
                   20810: &      78      2       38
                   20811: '      33      2       39
                   20812: (      33      3       40
                   20813: )      33      3       41
                   20814: *      50      2       42
                   20815: +      56      0       43
                   20816: ,      25      1       44
                   20817: -      33      0       173
                   20818: \0255  "
                   20819: .      25      0       46
                   20820: /      28      2       47
                   20821: 0      50      2       48
                   20822: 1      50      2       49
                   20823: 2      50      2       50
                   20824: 3      50      2       51
                   20825: 4      50      2       52
                   20826: 5      50      2       53
                   20827: 6      50      2       54
                   20828: 7      50      2       55
                   20829: 8      50      2       56
                   20830: 9      50      2       57
                   20831: :      28      0       58
                   20832: ;      28      1       59
                   20833: ---    56      2       60
                   20834: =      56      0       61
                   20835: ---    56      2       62
                   20836: ?      44      2       63
                   20837: @      92      3       64
                   20838: A      72      2       65
                   20839: B      67      2       66
                   20840: C      67      2       67
                   20841: D      72      2       68
                   20842: E      61      2       69
                   20843: F      56      2       70
                   20844: G      72      2       71
                   20845: H      72      2       72
                   20846: I      33      2       73
                   20847: J      39      2       74
                   20848: K      72      2       75
                   20849: L      61      2       76
                   20850: M      89      2       77
                   20851: N      72      2       78
                   20852: O      72      2       79
                   20853: P      56      2       80
                   20854: Q      72      3       81
                   20855: R      67      2       82
                   20856: S      56      2       83
                   20857: T      61      2       84
                   20858: U      72      2       85
                   20859: V      72      2       86
                   20860: W      94      2       87
                   20861: X      72      2       88
                   20862: Y      72      2       89
                   20863: Z      61      2       90
                   20864: [      33      3       91
                   20865: \      28      2       92
                   20866: bs     "
                   20867: ]      33      3       93
                   20868: ^      33      2       147
                   20869: ---    47      2       94
                   20870: ---    50      1       95
                   20871: `      33      2       96
                   20872: a      44      0       97
                   20873: b      50      2       98
                   20874: c      44      0       99
                   20875: d      50      2       100
                   20876: e      44      0       101
                   20877: f      33      2       102
                   20878: g      50      1       103
                   20879: h      50      2       104
                   20880: i      28      2       105
                   20881: j      28      3       106
                   20882: k      50      2       107
                   20883: l      28      2       108
                   20884: m      78      0       109
                   20885: n      50      0       110
                   20886: o      50      0       111
                   20887: p      50      1       112
                   20888: q      50      1       113
                   20889: r      33      0       114
                   20890: s      39      0       115
                   20891: t      28      2       116
                   20892: u      50      0       117
                   20893: v      50      0       118
                   20894: w      72      0       119
                   20895: x      50      0       120
                   20896: y      50      1       121
                   20897: z      44      0       122
                   20898: {      48      3       123
                   20899: ---    20      2       124
                   20900: }      48      3       125
                   20901: ~      33      2       148
                   20902: ---    54      0       126
                   20903: \`     33      2       145
                   20904: ga     "
                   20905: !!     33      1       161
                   20906: \0241  "
                   20907: c|     50      3       162
                   20908: \0242  "
                   20909: ct     "
                   20910: L-     50      2       163
                   20911: \0243  "
                   20912: ps     "
                   20913: xo     50      2       164
                   20914: \0244  "
                   20915: cr     "
                   20916: Y-     50      2       165
                   20917: \0245  "
                   20918: yn     "
                   20919: ||     20      2       166
                   20920: \0246  "
                   20921: so     50      3       167
                   20922: \0247  "
                   20923: sc     "
                   20924: ""     33      2       168
                   20925: \0250  "
                   20926: :a     "
                   20927: co     76      2       169
                   20928: \0251  "
                   20929: a_     28      2       170
                   20930: \0252  "
                   20931: <<     50      0       171
                   20932: \0253  "
                   20933: -,     56      0       172
                   20934: \0254  "
                   20935: hy     33      0       173
                   20936: \0255  "
                   20937: --     56      0       45
                   20938: ro     76      2       174
                   20939: \0256  "
                   20940: rg     "
                   20941: -^     33      2       175
                   20942: \0257  "
                   20943: -a     "
                   20944: 0^     40      2       176
                   20945: \0260  "
                   20946: +-     56      2       177
                   20947: \0261  "
                   20948: 2^     30      2       178
                   20949: \0262  "
                   20950: 3^     30      2       179
                   20951: \0263  "
                   20952: \'     33      2       180
                   20953: \0264  "
                   20954: aa     "
                   20955: /u     50      1       181
                   20956: \0265  "
                   20957: P!     45      3       182
                   20958: \0266  "
                   20959: pg     "
                   20960: .^     25      0       183
                   20961: \0267  "
                   20962: ,,     33      1       184
                   20963: \0270  "
                   20964: ,a     "
                   20965: 1^     30      2       185
                   20966: \0271  "
                   20967: o_     31      2       186
                   20968: \0272  "
                   20969: >>     50      0       187
                   20970: \0273  "
                   20971: 14     75      2       188
                   20972: \0274  "
                   20973: 12     75      2       189
                   20974: \0275  "
                   20975: 34     75      2       190
                   20976: \0276  "
                   20977: ??     44      1       191
                   20978: \0277  "
                   20979: A`     72      2       192
                   20980: \0300  "
                   20981: A'     72      2       193
                   20982: \0301  "
                   20983: A^     72      2       194
                   20984: \0302  "
                   20985: A~     72      2       195
                   20986: \0303  "
                   20987: A"     72      2       196
                   20988: \0304  "
                   20989: A*     72      2       197
                   20990: \0305  "
                   20991: AE     89      2       198
                   20992: \0306  "
                   20993: C,     67      3       199
                   20994: \0307  "
                   20995: E`     61      2       200
                   20996: \0310  "
                   20997: E'     61      2       201
                   20998: \0311  "
                   20999: E^     61      2       202
                   21000: \0312  "
                   21001: E"     61      2       203
                   21002: \0313  "
                   21003: I`     33      2       204
                   21004: \0314  "
                   21005: I'     33      2       205
                   21006: \0315  "
                   21007: I^     33      2       206
                   21008: \0316  "
                   21009: I"     33      2       207
                   21010: \0317  "
                   21011: D-     72      2       208
                   21012: \0320  "
                   21013: N~     72      2       209
                   21014: \0321  "
                   21015: O`     72      2       210
                   21016: \0322  "
                   21017: O'     72      2       211
                   21018: \0323  "
                   21019: O^     72      2       212
                   21020: \0324  "
                   21021: O~     72      2       213
                   21022: \0325  "
                   21023: O"     72      2       214
                   21024: \0326  "
                   21025: xx     56      0       215
                   21026: \0327  "
                   21027: O/     72      2       216
                   21028: \0330  "
                   21029: U`     72      2       217
                   21030: \0331  "
                   21031: U'     72      2       218
                   21032: \0332  "
                   21033: U^     72      2       219
                   21034: \0333  "
                   21035: U"     72      2       220
                   21036: \0334  "
                   21037: Y'     72      2       221
                   21038: \0335  "
                   21039: TH     56      2       222
                   21040: \0336  "
                   21041: ss     50      2       223
                   21042: \0337  "
                   21043: a`     44      2       224
                   21044: \0340  "
                   21045: a'     44      2       225
                   21046: \0341  "
                   21047: a^     44      2       226
                   21048: \0342  "
                   21049: a~     44      2       227
                   21050: \0343  "
                   21051: a"     44      2       228
                   21052: \0344  "
                   21053: a*     44      2       229
                   21054: \0345  "
                   21055: ae     67      0       230
                   21056: \0346  "
                   21057: c,     44      1       231
                   21058: \0347  "
                   21059: e`     44      2       232
                   21060: \0350  "
                   21061: e'     44      2       233
                   21062: \0351  "
                   21063: e^     44      2       234
                   21064: \0352  "
                   21065: e"     44      2       235
                   21066: \0353  "
                   21067: i`     28      2       236
                   21068: \0354  "
                   21069: i'     28      2       237
                   21070: \0355  "
                   21071: i^     28      2       238
                   21072: \0356  "
                   21073: i"     28      2       239
                   21074: \0357  "
                   21075: d-     50      2       240
                   21076: \0360  "
                   21077: n~     50      2       241
                   21078: \0361  "
                   21079: o`     50      2       242
                   21080: \0362  "
                   21081: o'     50      2       243
                   21082: \0363  "
                   21083: o^     50      2       244
                   21084: \0364  "
                   21085: o~     50      2       245
                   21086: \0365  "
                   21087: o"     50      2       246
                   21088: \0366  "
                   21089: -:     56      0       247
                   21090: \0367  "
                   21091: o/     50      2       248
                   21092: \0370  "
                   21093: u`     50      2       249
                   21094: \0371  "
                   21095: u'     50      2       250
                   21096: \0372  "
                   21097: u^     50      2       251
                   21098: \0373  "
                   21099: u"     50      2       252
                   21100: \0374  "
                   21101: y'     50      3       253
                   21102: \0375  "
                   21103: th     50      3       254
                   21104: \0376  "
                   21105: y"     50      3       255
                   21106: \0377  "
                   21107: ^a     33      2       147
                   21108: ~a     33      2       148
                   21109: Ua     33      2       150
                   21110: .a     33      2       151
                   21111: oa     33      2       154
                   21112: "a     33      2       157
                   21113: Ca     33      1       158
                   21114: va     33      2       159
                   21115: 0707070014231123421006440057030057030000010441400522627501500002500000006140post.src/devLatin1/Iname I
                   21116: fontname Times-Italic
                   21117: named in prologue
                   21118: spacewidth 25
                   21119: charset
                   21120: !      33      2       33
                   21121: "      42      2       34
                   21122: dq     "
                   21123: #      50      2       35
                   21124: $      50      2       36
                   21125: %      83      2       37
                   21126: &      78      2       38
                   21127: '      33      2       39
                   21128: (      33      3       40
                   21129: )      33      3       41
                   21130: *      50      2       42
                   21131: +      68      2       43
                   21132: ,      25      1       44
                   21133: -      33      0       173
                   21134: \0255  "
                   21135: .      25      0       46
                   21136: /      28      2       47
                   21137: 0      50      2       48
                   21138: 1      50      2       49
                   21139: 2      50      2       50
                   21140: 3      50      2       51
                   21141: 4      50      2       52
                   21142: 5      50      2       53
                   21143: 6      50      2       54
                   21144: 7      50      2       55
                   21145: 8      50      2       56
                   21146: 9      50      2       57
                   21147: :      33      0       58
                   21148: ;      33      1       59
                   21149: ---    68      2       60
                   21150: =      68      0       61
                   21151: ---    68      2       62
                   21152: ?      50      2       63
                   21153: @      92      3       64
                   21154: A      61      2       65
                   21155: B      61      2       66
                   21156: C      67      2       67
                   21157: D      72      2       68
                   21158: E      61      2       69
                   21159: F      61      2       70
                   21160: G      72      2       71
                   21161: H      72      2       72
                   21162: I      33      2       73
                   21163: J      44      2       74
                   21164: K      67      2       75
                   21165: L      56      2       76
                   21166: M      83      2       77
                   21167: N      67      2       78
                   21168: O      72      2       79
                   21169: P      61      2       80
                   21170: Q      72      3       81
                   21171: R      61      2       82
                   21172: S      50      2       83
                   21173: T      56      2       84
                   21174: U      72      2       85
                   21175: V      61      2       86
                   21176: W      83      2       87
                   21177: X      61      2       88
                   21178: Y      56      2       89
                   21179: Z      56      2       90
                   21180: [      39      3       91
                   21181: \      28      2       92
                   21182: bs     "
                   21183: ]      39      3       93
                   21184: ^      33      2       147
                   21185: ---    42      2       94
                   21186: ---    50      1       95
                   21187: `      33      2       96
                   21188: a      50      0       97
                   21189: b      50      2       98
                   21190: c      44      0       99
                   21191: d      50      2       100
                   21192: e      44      0       101
                   21193: f      28      3       102
                   21194: g      50      1       103
                   21195: h      50      2       104
                   21196: i      28      2       105
                   21197: j      28      3       106
                   21198: k      44      2       107
                   21199: l      28      2       108
                   21200: m      72      0       109
                   21201: n      50      0       110
                   21202: o      50      0       111
                   21203: p      50      1       112
                   21204: q      50      1       113
                   21205: r      39      0       114
                   21206: s      39      0       115
                   21207: t      28      2       116
                   21208: u      50      0       117
                   21209: v      44      0       118
                   21210: w      67      0       119
                   21211: x      44      0       120
                   21212: y      44      1       121
                   21213: z      39      0       122
                   21214: {      40      3       123
                   21215: ---    28      3       124
                   21216: }      40      3       125
                   21217: ~      33      2       148
                   21218: ---    54      0       126
                   21219: \`     33      2       145
                   21220: ga     "
                   21221: !!     39      1       161
                   21222: \0241  "
                   21223: c|     50      3       162
                   21224: \0242  "
                   21225: ct     "
                   21226: L-     50      2       163
                   21227: \0243  "
                   21228: ps     "
                   21229: xo     50      2       164
                   21230: \0244  "
                   21231: cr     "
                   21232: Y-     50      2       165
                   21233: \0245  "
                   21234: yn     "
                   21235: ||     28      3       166
                   21236: \0246  "
                   21237: so     50      2       167
                   21238: \0247  "
                   21239: sc     "
                   21240: ""     33      2       168
                   21241: \0250  "
                   21242: :a     "
                   21243: co     76      2       169
                   21244: \0251  "
                   21245: a_     28      2       170
                   21246: \0252  "
                   21247: <<     50      0       171
                   21248: \0253  "
                   21249: -,     68      0       172
                   21250: \0254  "
                   21251: hy     33      0       173
                   21252: \0255  "
                   21253: --     68      0       45
                   21254: ro     76      2       174
                   21255: \0256  "
                   21256: rg     "
                   21257: -^     33      2       175
                   21258: \0257  "
                   21259: -a     "
                   21260: 0^     40      2       176
                   21261: \0260  "
                   21262: +-     68      2       177
                   21263: \0261  "
                   21264: 2^     30      2       178
                   21265: \0262  "
                   21266: 3^     30      2       179
                   21267: \0263  "
                   21268: \'     33      2       180
                   21269: \0264  "
                   21270: aa     "
                   21271: /u     50      1       181
                   21272: \0265  "
                   21273: P!     52      3       182
                   21274: \0266  "
                   21275: pg     "
                   21276: .^     25      0       183
                   21277: \0267  "
                   21278: ,,     33      1       184
                   21279: \0270  "
                   21280: ,a     "
                   21281: 1^     30      2       185
                   21282: \0271  "
                   21283: o_     31      2       186
                   21284: \0272  "
                   21285: >>     50      0       187
                   21286: \0273  "
                   21287: 14     75      2       188
                   21288: \0274  "
                   21289: 12     75      2       189
                   21290: \0275  "
                   21291: 34     75      2       190
                   21292: \0276  "
                   21293: ??     50      1       191
                   21294: \0277  "
                   21295: A`     61      2       192
                   21296: \0300  "
                   21297: A'     61      2       193
                   21298: \0301  "
                   21299: A^     61      2       194
                   21300: \0302  "
                   21301: A~     61      2       195
                   21302: \0303  "
                   21303: A"     61      2       196
                   21304: \0304  "
                   21305: A*     61      2       197
                   21306: \0305  "
                   21307: AE     89      2       198
                   21308: \0306  "
                   21309: C,     67      3       199
                   21310: \0307  "
                   21311: E`     61      2       200
                   21312: \0310  "
                   21313: E'     61      2       201
                   21314: \0311  "
                   21315: E^     61      2       202
                   21316: \0312  "
                   21317: E"     61      2       203
                   21318: \0313  "
                   21319: I`     33      2       204
                   21320: \0314  "
                   21321: I'     33      2       205
                   21322: \0315  "
                   21323: I^     33      2       206
                   21324: \0316  "
                   21325: I"     33      2       207
                   21326: \0317  "
                   21327: D-     72      2       208
                   21328: \0320  "
                   21329: N~     67      2       209
                   21330: \0321  "
                   21331: O`     72      2       210
                   21332: \0322  "
                   21333: O'     72      2       211
                   21334: \0323  "
                   21335: O^     72      2       212
                   21336: \0324  "
                   21337: O~     72      2       213
                   21338: \0325  "
                   21339: O"     72      2       214
                   21340: \0326  "
                   21341: xx     68      0       215
                   21342: \0327  "
                   21343: O/     72      3       216
                   21344: \0330  "
                   21345: U`     72      2       217
                   21346: \0331  "
                   21347: U'     72      2       218
                   21348: \0332  "
                   21349: U^     72      2       219
                   21350: \0333  "
                   21351: U"     72      2       220
                   21352: \0334  "
                   21353: Y'     56      2       221
                   21354: \0335  "
                   21355: TH     61      2       222
                   21356: \0336  "
                   21357: ss     50      3       223
                   21358: \0337  "
                   21359: a`     50      2       224
                   21360: \0340  "
                   21361: a'     50      2       225
                   21362: \0341  "
                   21363: a^     50      2       226
                   21364: \0342  "
                   21365: a~     50      2       227
                   21366: \0343  "
                   21367: a"     50      2       228
                   21368: \0344  "
                   21369: a*     50      2       229
                   21370: \0345  "
                   21371: ae     67      0       230
                   21372: \0346  "
                   21373: c,     44      1       231
                   21374: \0347  "
                   21375: e`     44      2       232
                   21376: \0350  "
                   21377: e'     44      2       233
                   21378: \0351  "
                   21379: e^     44      2       234
                   21380: \0352  "
                   21381: e"     44      2       235
                   21382: \0353  "
                   21383: i`     28      2       236
                   21384: \0354  "
                   21385: i'     28      2       237
                   21386: \0355  "
                   21387: i^     28      2       238
                   21388: \0356  "
                   21389: i"     28      2       239
                   21390: \0357  "
                   21391: d-     50      2       240
                   21392: \0360  "
                   21393: n~     50      2       241
                   21394: \0361  "
                   21395: o`     50      2       242
                   21396: \0362  "
                   21397: o'     50      2       243
                   21398: \0363  "
                   21399: o^     50      2       244
                   21400: \0364  "
                   21401: o~     50      2       245
                   21402: \0365  "
                   21403: o"     50      2       246
                   21404: \0366  "
                   21405: -:     68      2       247
                   21406: \0367  "
                   21407: o/     50      3       248
                   21408: \0370  "
                   21409: u`     50      2       249
                   21410: \0371  "
                   21411: u'     50      2       250
                   21412: \0372  "
                   21413: u^     50      2       251
                   21414: \0373  "
                   21415: u"     50      2       252
                   21416: \0374  "
                   21417: y'     44      3       253
                   21418: \0375  "
                   21419: th     50      3       254
                   21420: \0376  "
                   21421: y"     44      3       255
                   21422: \0377  "
                   21423: ^a     33      2       147
                   21424: ~a     33      2       148
                   21425: Ua     33      2       150
                   21426: .a     33      2       151
                   21427: oa     33      2       154
                   21428: "a     33      2       157
                   21429: Ca     33      1       158
                   21430: va     33      2       159
                   21431: 0707070014231123431006440057030057030000010441440522627501500002500000006141post.src/devLatin1/Bname B
                   21432: fontname Times-Bold
                   21433: named in prologue
                   21434: spacewidth 25
                   21435: charset
                   21436: !      33      2       33
                   21437: "      56      2       34
                   21438: dq     "
                   21439: #      50      2       35
                   21440: $      50      3       36
                   21441: %      100     2       37
                   21442: &      83      2       38
                   21443: '      33      2       39
                   21444: (      33      3       40
                   21445: )      33      3       41
                   21446: *      50      2       42
                   21447: +      57      0       43
                   21448: ,      25      1       44
                   21449: -      33      0       173
                   21450: \0255  "
                   21451: .      25      0       46
                   21452: /      28      2       47
                   21453: 0      50      2       48
                   21454: 1      50      2       49
                   21455: 2      50      2       50
                   21456: 3      50      2       51
                   21457: 4      50      2       52
                   21458: 5      50      2       53
                   21459: 6      50      2       54
                   21460: 7      50      2       55
                   21461: 8      50      2       56
                   21462: 9      50      2       57
                   21463: :      33      0       58
                   21464: ;      33      1       59
                   21465: ---    57      0       60
                   21466: =      57      0       61
                   21467: ---    57      0       62
                   21468: ?      50      2       63
                   21469: @      93      3       64
                   21470: A      72      2       65
                   21471: B      67      2       66
                   21472: C      72      2       67
                   21473: D      72      2       68
                   21474: E      67      2       69
                   21475: F      61      2       70
                   21476: G      78      2       71
                   21477: H      78      2       72
                   21478: I      39      2       73
                   21479: J      50      2       74
                   21480: K      78      2       75
                   21481: L      67      2       76
                   21482: M      94      2       77
                   21483: N      72      2       78
                   21484: O      78      2       79
                   21485: P      61      2       80
                   21486: Q      78      3       81
                   21487: R      72      2       82
                   21488: S      56      2       83
                   21489: T      67      2       84
                   21490: U      72      2       85
                   21491: V      72      2       86
                   21492: W      100     2       87
                   21493: X      72      2       88
                   21494: Y      72      2       89
                   21495: Z      67      2       90
                   21496: [      33      3       91
                   21497: \      28      2       92
                   21498: bs     "
                   21499: ]      33      3       93
                   21500: ^      33      2       147
                   21501: ---    58      2       94
                   21502: ---    50      1       95
                   21503: `      33      2       96
                   21504: a      50      0       97
                   21505: b      56      2       98
                   21506: c      44      0       99
                   21507: d      56      2       100
                   21508: e      44      0       101
                   21509: f      33      2       102
                   21510: g      50      1       103
                   21511: h      56      2       104
                   21512: i      28      2       105
                   21513: j      33      3       106
                   21514: k      56      2       107
                   21515: l      28      2       108
                   21516: m      83      0       109
                   21517: n      56      0       110
                   21518: o      50      0       111
                   21519: p      56      1       112
                   21520: q      56      1       113
                   21521: r      44      0       114
                   21522: s      39      0       115
                   21523: t      33      2       116
                   21524: u      56      0       117
                   21525: v      50      0       118
                   21526: w      72      0       119
                   21527: x      50      0       120
                   21528: y      50      1       121
                   21529: z      44      0       122
                   21530: {      39      3       123
                   21531: ---    22      3       124
                   21532: }      39      3       125
                   21533: ~      33      2       148
                   21534: ---    52      0       126
                   21535: \`     33      2       145
                   21536: ga     "
                   21537: !!     33      1       161
                   21538: \0241  "
                   21539: c|     50      3       162
                   21540: \0242  "
                   21541: ct     "
                   21542: L-     50      2       163
                   21543: \0243  "
                   21544: ps     "
                   21545: xo     50      2       164
                   21546: \0244  "
                   21547: cr     "
                   21548: Y-     50      2       165
                   21549: \0245  "
                   21550: yn     "
                   21551: ||     22      3       166
                   21552: \0246  "
                   21553: so     50      3       167
                   21554: \0247  "
                   21555: sc     "
                   21556: ""     33      2       168
                   21557: \0250  "
                   21558: :a     "
                   21559: co     75      2       169
                   21560: \0251  "
                   21561: a_     30      2       170
                   21562: \0252  "
                   21563: <<     50      0       171
                   21564: \0253  "
                   21565: -,     57      0       172
                   21566: \0254  "
                   21567: hy     33      0       173
                   21568: \0255  "
                   21569: --     57      0       45
                   21570: ro     75      2       174
                   21571: \0256  "
                   21572: rg     "
                   21573: -^     33      2       175
                   21574: \0257  "
                   21575: -a     "
                   21576: 0^     40      2       176
                   21577: \0260  "
                   21578: +-     57      2       177
                   21579: \0261  "
                   21580: 2^     30      2       178
                   21581: \0262  "
                   21582: 3^     30      2       179
                   21583: \0263  "
                   21584: \'     33      2       180
                   21585: \0264  "
                   21586: aa     "
                   21587: /u     56      1       181
                   21588: \0265  "
                   21589: P!     54      3       182
                   21590: \0266  "
                   21591: pg     "
                   21592: .^     25      0       183
                   21593: \0267  "
                   21594: ,,     33      1       184
                   21595: \0270  "
                   21596: ,a     "
                   21597: 1^     30      2       185
                   21598: \0271  "
                   21599: o_     33      2       186
                   21600: \0272  "
                   21601: >>     50      0       187
                   21602: \0273  "
                   21603: 14     75      2       188
                   21604: \0274  "
                   21605: 12     75      2       189
                   21606: \0275  "
                   21607: 34     75      2       190
                   21608: \0276  "
                   21609: ??     50      1       191
                   21610: \0277  "
                   21611: A`     72      2       192
                   21612: \0300  "
                   21613: A'     72      2       193
                   21614: \0301  "
                   21615: A^     72      2       194
                   21616: \0302  "
                   21617: A~     72      2       195
                   21618: \0303  "
                   21619: A"     72      2       196
                   21620: \0304  "
                   21621: A*     72      2       197
                   21622: \0305  "
                   21623: AE     100     2       198
                   21624: \0306  "
                   21625: C,     72      3       199
                   21626: \0307  "
                   21627: E`     67      2       200
                   21628: \0310  "
                   21629: E'     67      2       201
                   21630: \0311  "
                   21631: E^     67      2       202
                   21632: \0312  "
                   21633: E"     67      2       203
                   21634: \0313  "
                   21635: I`     39      2       204
                   21636: \0314  "
                   21637: I'     39      2       205
                   21638: \0315  "
                   21639: I^     39      2       206
                   21640: \0316  "
                   21641: I"     39      2       207
                   21642: \0317  "
                   21643: D-     72      2       208
                   21644: \0320  "
                   21645: N~     72      2       209
                   21646: \0321  "
                   21647: O`     78      2       210
                   21648: \0322  "
                   21649: O'     78      2       211
                   21650: \0323  "
                   21651: O^     78      2       212
                   21652: \0324  "
                   21653: O~     78      2       213
                   21654: \0325  "
                   21655: O"     78      2       214
                   21656: \0326  "
                   21657: xx     57      0       215
                   21658: \0327  "
                   21659: O/     78      2       216
                   21660: \0330  "
                   21661: U`     72      2       217
                   21662: \0331  "
                   21663: U'     72      2       218
                   21664: \0332  "
                   21665: U^     72      2       219
                   21666: \0333  "
                   21667: U"     72      2       220
                   21668: \0334  "
                   21669: Y'     72      2       221
                   21670: \0335  "
                   21671: TH     61      2       222
                   21672: \0336  "
                   21673: ss     56      2       223
                   21674: \0337  "
                   21675: a`     50      2       224
                   21676: \0340  "
                   21677: a'     50      2       225
                   21678: \0341  "
                   21679: a^     50      2       226
                   21680: \0342  "
                   21681: a~     50      2       227
                   21682: \0343  "
                   21683: a"     50      2       228
                   21684: \0344  "
                   21685: a*     50      2       229
                   21686: \0345  "
                   21687: ae     72      0       230
                   21688: \0346  "
                   21689: c,     44      1       231
                   21690: \0347  "
                   21691: e`     44      2       232
                   21692: \0350  "
                   21693: e'     44      2       233
                   21694: \0351  "
                   21695: e^     44      2       234
                   21696: \0352  "
                   21697: e"     44      2       235
                   21698: \0353  "
                   21699: i`     28      2       236
                   21700: \0354  "
                   21701: i'     28      2       237
                   21702: \0355  "
                   21703: i^     28      2       238
                   21704: \0356  "
                   21705: i"     28      2       239
                   21706: \0357  "
                   21707: d-     50      2       240
                   21708: \0360  "
                   21709: n~     56      2       241
                   21710: \0361  "
                   21711: o`     50      2       242
                   21712: \0362  "
                   21713: o'     50      2       243
                   21714: \0363  "
                   21715: o^     50      2       244
                   21716: \0364  "
                   21717: o~     50      2       245
                   21718: \0365  "
                   21719: o"     50      2       246
                   21720: \0366  "
                   21721: -:     57      0       247
                   21722: \0367  "
                   21723: o/     50      2       248
                   21724: \0370  "
                   21725: u`     56      2       249
                   21726: \0371  "
                   21727: u'     56      2       250
                   21728: \0372  "
                   21729: u^     56      2       251
                   21730: \0373  "
                   21731: u"     56      2       252
                   21732: \0374  "
                   21733: y'     50      3       253
                   21734: \0375  "
                   21735: th     56      3       254
                   21736: \0376  "
                   21737: y"     50      3       255
                   21738: \0377  "
                   21739: ^a     33      2       147
                   21740: ~a     33      2       148
                   21741: Ua     33      2       150
                   21742: .a     33      2       151
                   21743: oa     33      2       154
                   21744: "a     33      2       157
                   21745: Ca     33      1       158
                   21746: va     33      2       159
                   21747: 0707070014231123441006440057030057030000010441600522627501500002600000006145post.src/devLatin1/BIname BI
                   21748: fontname Times-BoldItalic
                   21749: named in prologue
                   21750: spacewidth 25
                   21751: charset
                   21752: !      39      2       33
                   21753: "      56      2       34
                   21754: dq     "
                   21755: #      50      2       35
                   21756: $      50      2       36
                   21757: %      83      2       37
                   21758: &      78      2       38
                   21759: '      33      2       39
                   21760: (      33      3       40
                   21761: )      33      3       41
                   21762: *      50      2       42
                   21763: +      57      0       43
                   21764: ,      25      1       44
                   21765: -      33      0       173
                   21766: \0255  "
                   21767: .      25      0       46
                   21768: /      28      2       47
                   21769: 0      50      2       48
                   21770: 1      50      2       49
                   21771: 2      50      2       50
                   21772: 3      50      2       51
                   21773: 4      50      2       52
                   21774: 5      50      2       53
                   21775: 6      50      2       54
                   21776: 7      50      2       55
                   21777: 8      50      2       56
                   21778: 9      50      2       57
                   21779: :      33      0       58
                   21780: ;      33      1       59
                   21781: ---    57      2       60
                   21782: =      57      0       61
                   21783: ---    57      2       62
                   21784: ?      50      2       63
                   21785: @      83      3       64
                   21786: A      67      2       65
                   21787: B      67      2       66
                   21788: C      67      2       67
                   21789: D      72      2       68
                   21790: E      67      2       69
                   21791: F      67      2       70
                   21792: G      72      2       71
                   21793: H      78      2       72
                   21794: I      39      2       73
                   21795: J      50      2       74
                   21796: K      67      2       75
                   21797: L      61      2       76
                   21798: M      89      2       77
                   21799: N      72      2       78
                   21800: O      72      2       79
                   21801: P      61      2       80
                   21802: Q      72      3       81
                   21803: R      67      2       82
                   21804: S      56      2       83
                   21805: T      61      2       84
                   21806: U      72      2       85
                   21807: V      67      2       86
                   21808: W      89      2       87
                   21809: X      67      2       88
                   21810: Y      61      2       89
                   21811: Z      61      2       90
                   21812: [      33      3       91
                   21813: \      28      2       92
                   21814: bs     "
                   21815: ]      33      3       93
                   21816: ^      33      2       147
                   21817: ---    57      2       94
                   21818: ---    50      1       95
                   21819: `      33      2       96
                   21820: a      50      0       97
                   21821: b      50      2       98
                   21822: c      44      0       99
                   21823: d      50      2       100
                   21824: e      44      0       101
                   21825: f      33      3       102
                   21826: g      50      1       103
                   21827: h      56      2       104
                   21828: i      28      2       105
                   21829: j      28      3       106
                   21830: k      50      2       107
                   21831: l      28      2       108
                   21832: m      78      0       109
                   21833: n      56      0       110
                   21834: o      50      0       111
                   21835: p      50      1       112
                   21836: q      50      1       113
                   21837: r      39      0       114
                   21838: s      39      0       115
                   21839: t      28      2       116
                   21840: u      56      0       117
                   21841: v      44      0       118
                   21842: w      67      0       119
                   21843: x      50      0       120
                   21844: y      44      1       121
                   21845: z      39      0       122
                   21846: {      35      3       123
                   21847: ---    22      2       124
                   21848: }      35      3       125
                   21849: ~      33      2       148
                   21850: ---    57      0       126
                   21851: \`     33      2       145
                   21852: ga     "
                   21853: !!     39      1       161
                   21854: \0241  "
                   21855: c|     50      3       162
                   21856: \0242  "
                   21857: ct     "
                   21858: L-     50      2       163
                   21859: \0243  "
                   21860: ps     "
                   21861: xo     50      2       164
                   21862: \0244  "
                   21863: cr     "
                   21864: Y-     50      2       165
                   21865: \0245  "
                   21866: yn     "
                   21867: ||     22      2       166
                   21868: \0246  "
                   21869: so     50      3       167
                   21870: \0247  "
                   21871: sc     "
                   21872: ""     33      2       168
                   21873: \0250  "
                   21874: :a     "
                   21875: co     75      2       169
                   21876: \0251  "
                   21877: a_     27      2       170
                   21878: \0252  "
                   21879: <<     50      0       171
                   21880: \0253  "
                   21881: -,     61      0       172
                   21882: \0254  "
                   21883: hy     33      0       173
                   21884: \0255  "
                   21885: --     61      0       45
                   21886: ro     75      2       174
                   21887: \0256  "
                   21888: rg     "
                   21889: -^     33      2       175
                   21890: \0257  "
                   21891: -a     "
                   21892: 0^     40      2       176
                   21893: \0260  "
                   21894: +-     57      2       177
                   21895: \0261  "
                   21896: 2^     30      2       178
                   21897: \0262  "
                   21898: 3^     30      2       179
                   21899: \0263  "
                   21900: \'     33      2       180
                   21901: \0264  "
                   21902: aa     "
                   21903: /u     58      1       181
                   21904: \0265  "
                   21905: P!     50      3       182
                   21906: \0266  "
                   21907: pg     "
                   21908: .^     25      0       183
                   21909: \0267  "
                   21910: ,,     33      1       184
                   21911: \0270  "
                   21912: ,a     "
                   21913: 1^     30      2       185
                   21914: \0271  "
                   21915: o_     30      2       186
                   21916: \0272  "
                   21917: >>     50      0       187
                   21918: \0273  "
                   21919: 14     75      2       188
                   21920: \0274  "
                   21921: 12     75      2       189
                   21922: \0275  "
                   21923: 34     75      2       190
                   21924: \0276  "
                   21925: ??     50      1       191
                   21926: \0277  "
                   21927: A`     67      2       192
                   21928: \0300  "
                   21929: A'     67      2       193
                   21930: \0301  "
                   21931: A^     67      2       194
                   21932: \0302  "
                   21933: A~     67      2       195
                   21934: \0303  "
                   21935: A"     67      2       196
                   21936: \0304  "
                   21937: A*     67      2       197
                   21938: \0305  "
                   21939: AE     94      2       198
                   21940: \0306  "
                   21941: C,     67      3       199
                   21942: \0307  "
                   21943: E`     67      2       200
                   21944: \0310  "
                   21945: E'     67      2       201
                   21946: \0311  "
                   21947: E^     67      2       202
                   21948: \0312  "
                   21949: E"     67      2       203
                   21950: \0313  "
                   21951: I`     39      2       204
                   21952: \0314  "
                   21953: I'     39      2       205
                   21954: \0315  "
                   21955: I^     39      2       206
                   21956: \0316  "
                   21957: I"     39      2       207
                   21958: \0317  "
                   21959: D-     72      2       208
                   21960: \0320  "
                   21961: N~     72      2       209
                   21962: \0321  "
                   21963: O`     72      2       210
                   21964: \0322  "
                   21965: O'     72      2       211
                   21966: \0323  "
                   21967: O^     72      2       212
                   21968: \0324  "
                   21969: O~     72      2       213
                   21970: \0325  "
                   21971: O"     72      2       214
                   21972: \0326  "
                   21973: xx     57      0       215
                   21974: \0327  "
                   21975: O/     72      3       216
                   21976: \0330  "
                   21977: U`     72      2       217
                   21978: \0331  "
                   21979: U'     72      2       218
                   21980: \0332  "
                   21981: U^     72      2       219
                   21982: \0333  "
                   21983: U"     72      2       220
                   21984: \0334  "
                   21985: Y'     61      2       221
                   21986: \0335  "
                   21987: TH     61      2       222
                   21988: \0336  "
                   21989: ss     50      3       223
                   21990: \0337  "
                   21991: a`     50      2       224
                   21992: \0340  "
                   21993: a'     50      2       225
                   21994: \0341  "
                   21995: a^     50      2       226
                   21996: \0342  "
                   21997: a~     50      2       227
                   21998: \0343  "
                   21999: a"     50      2       228
                   22000: \0344  "
                   22001: a*     50      2       229
                   22002: \0345  "
                   22003: ae     72      0       230
                   22004: \0346  "
                   22005: c,     44      1       231
                   22006: \0347  "
                   22007: e`     44      2       232
                   22008: \0350  "
                   22009: e'     44      2       233
                   22010: \0351  "
                   22011: e^     44      2       234
                   22012: \0352  "
                   22013: e"     44      2       235
                   22014: \0353  "
                   22015: i`     28      2       236
                   22016: \0354  "
                   22017: i'     28      2       237
                   22018: \0355  "
                   22019: i^     28      2       238
                   22020: \0356  "
                   22021: i"     28      2       239
                   22022: \0357  "
                   22023: d-     50      2       240
                   22024: \0360  "
                   22025: n~     56      2       241
                   22026: \0361  "
                   22027: o`     50      2       242
                   22028: \0362  "
                   22029: o'     50      2       243
                   22030: \0363  "
                   22031: o^     50      2       244
                   22032: \0364  "
                   22033: o~     50      2       245
                   22034: \0365  "
                   22035: o"     50      2       246
                   22036: \0366  "
                   22037: -:     57      0       247
                   22038: \0367  "
                   22039: o/     50      3       248
                   22040: \0370  "
                   22041: u`     56      2       249
                   22042: \0371  "
                   22043: u'     56      2       250
                   22044: \0372  "
                   22045: u^     56      2       251
                   22046: \0373  "
                   22047: u"     56      2       252
                   22048: \0374  "
                   22049: y'     44      3       253
                   22050: \0375  "
                   22051: th     50      3       254
                   22052: \0376  "
                   22053: y"     44      3       255
                   22054: \0377  "
                   22055: ^a     33      2       147
                   22056: ~a     33      2       148
                   22057: Ua     33      2       150
                   22058: .a     33      2       151
                   22059: oa     33      2       154
                   22060: "a     33      2       157
                   22061: Ca     33      1       158
                   22062: va     33      2       159
                   22063: 0707070014231123451006440057030057030000010441640522627501500002600000006145post.src/devLatin1/ABname AB
                   22064: fontname AvantGarde-Demi
                   22065: named in prologue
                   22066: spacewidth 28
                   22067: charset
                   22068: !      28      2       33
                   22069: "      36      2       34
                   22070: dq     "
                   22071: #      56      2       35
                   22072: $      56      2       36
                   22073: %      86      2       37
                   22074: &      68      2       38
                   22075: '      28      2       39
                   22076: (      38      3       40
                   22077: )      38      3       41
                   22078: *      44      2       42
                   22079: +      60      0       43
                   22080: ,      28      1       44
                   22081: -      42      0       173
                   22082: \0255  "
                   22083: .      28      0       46
                   22084: /      46      3       47
                   22085: 0      56      2       48
                   22086: 1      56      2       49
                   22087: 2      56      2       50
                   22088: 3      56      2       51
                   22089: 4      56      2       52
                   22090: 5      56      2       53
                   22091: 6      56      2       54
                   22092: 7      56      2       55
                   22093: 8      56      2       56
                   22094: 9      56      2       57
                   22095: :      28      0       58
                   22096: ;      28      1       59
                   22097: ---    60      0       60
                   22098: =      60      0       61
                   22099: ---    60      0       62
                   22100: ?      56      2       63
                   22101: @      74      2       64
                   22102: A      74      2       65
                   22103: B      58      2       66
                   22104: C      78      2       67
                   22105: D      70      2       68
                   22106: E      52      2       69
                   22107: F      48      2       70
                   22108: G      84      2       71
                   22109: H      68      2       72
                   22110: I      28      2       73
                   22111: J      48      2       74
                   22112: K      62      2       75
                   22113: L      44      2       76
                   22114: M      90      2       77
                   22115: N      74      2       78
                   22116: O      84      2       79
                   22117: P      56      2       80
                   22118: Q      84      2       81
                   22119: R      58      2       82
                   22120: S      52      2       83
                   22121: T      42      2       84
                   22122: U      64      2       85
                   22123: V      70      2       86
                   22124: W      90      2       87
                   22125: X      68      2       88
                   22126: Y      62      2       89
                   22127: Z      50      2       90
                   22128: [      32      3       91
                   22129: \      64      2       92
                   22130: bs     "
                   22131: ]      32      3       93
                   22132: ^      54      2       147
                   22133: ---    60      2       94
                   22134: ---    50      1       95
                   22135: `      28      2       96
                   22136: a      66      0       97
                   22137: b      66      2       98
                   22138: c      64      0       99
                   22139: d      66      2       100
                   22140: e      64      0       101
                   22141: f      28      2       102
                   22142: g      66      1       103
                   22143: h      60      2       104
                   22144: i      24      2       105
                   22145: j      26      3       106
                   22146: k      58      2       107
                   22147: l      24      2       108
                   22148: m      94      0       109
                   22149: n      60      0       110
                   22150: o      64      0       111
                   22151: p      66      1       112
                   22152: q      66      1       113
                   22153: r      32      0       114
                   22154: s      44      0       115
                   22155: t      30      2       116
                   22156: u      60      0       117
                   22157: v      56      0       118
                   22158: w      80      0       119
                   22159: x      56      0       120
                   22160: y      58      1       121
                   22161: z      46      0       122
                   22162: {      34      3       123
                   22163: ---    60      2       124
                   22164: }      34      3       125
                   22165: ~      48      2       148
                   22166: ---    60      0       126
                   22167: \`     42      2       145
                   22168: ga     "
                   22169: !!     28      1       161
                   22170: \0241  "
                   22171: c|     56      2       162
                   22172: \0242  "
                   22173: ct     "
                   22174: L-     56      2       163
                   22175: \0243  "
                   22176: ps     "
                   22177: xo     56      2       164
                   22178: \0244  "
                   22179: cr     "
                   22180: Y-     56      2       165
                   22181: \0245  "
                   22182: yn     "
                   22183: ||     60      2       166
                   22184: \0246  "
                   22185: so     56      3       167
                   22186: \0247  "
                   22187: sc     "
                   22188: ""     50      2       168
                   22189: \0250  "
                   22190: :a     "
                   22191: co     74      2       169
                   22192: \0251  "
                   22193: a_     36      2       170
                   22194: \0252  "
                   22195: <<     46      0       171
                   22196: \0253  "
                   22197: -,     60      0       172
                   22198: \0254  "
                   22199: hy     42      0       173
                   22200: \0255  "
                   22201: --     60      0       45
                   22202: ro     74      2       174
                   22203: \0256  "
                   22204: rg     "
                   22205: -^     42      2       175
                   22206: \0257  "
                   22207: -a     "
                   22208: 0^     40      2       176
                   22209: \0260  "
                   22210: +-     60      0       177
                   22211: \0261  "
                   22212: 2^     34      2       178
                   22213: \0262  "
                   22214: 3^     34      2       179
                   22215: \0263  "
                   22216: \'     42      2       180
                   22217: \0264  "
                   22218: aa     "
                   22219: /u     58      1       181
                   22220: \0265  "
                   22221: P!     60      3       182
                   22222: \0266  "
                   22223: pg     "
                   22224: .^     28      0       183
                   22225: \0267  "
                   22226: ,,     34      1       184
                   22227: \0270  "
                   22228: ,a     "
                   22229: 1^     34      2       185
                   22230: \0271  "
                   22231: o_     36      2       186
                   22232: \0272  "
                   22233: >>     46      0       187
                   22234: \0273  "
                   22235: 14     84      2       188
                   22236: \0274  "
                   22237: 12     84      2       189
                   22238: \0275  "
                   22239: 34     84      2       190
                   22240: \0276  "
                   22241: ??     56      1       191
                   22242: \0277  "
                   22243: A`     74      2       192
                   22244: \0300  "
                   22245: A'     74      2       193
                   22246: \0301  "
                   22247: A^     74      2       194
                   22248: \0302  "
                   22249: A~     74      2       195
                   22250: \0303  "
                   22251: A"     74      2       196
                   22252: \0304  "
                   22253: A*     74      2       197
                   22254: \0305  "
                   22255: AE     90      2       198
                   22256: \0306  "
                   22257: C,     78      3       199
                   22258: \0307  "
                   22259: E`     52      2       200
                   22260: \0310  "
                   22261: E'     52      2       201
                   22262: \0311  "
                   22263: E^     52      2       202
                   22264: \0312  "
                   22265: E"     52      2       203
                   22266: \0313  "
                   22267: I`     28      2       204
                   22268: \0314  "
                   22269: I'     28      2       205
                   22270: \0315  "
                   22271: I^     28      2       206
                   22272: \0316  "
                   22273: I"     28      2       207
                   22274: \0317  "
                   22275: D-     74      2       208
                   22276: \0320  "
                   22277: N~     74      2       209
                   22278: \0321  "
                   22279: O`     84      2       210
                   22280: \0322  "
                   22281: O'     84      2       211
                   22282: \0323  "
                   22283: O^     84      2       212
                   22284: \0324  "
                   22285: O~     84      2       213
                   22286: \0325  "
                   22287: O"     84      2       214
                   22288: \0326  "
                   22289: xx     60      0       215
                   22290: \0327  "
                   22291: O/     84      2       216
                   22292: \0330  "
                   22293: U`     64      2       217
                   22294: \0331  "
                   22295: U'     64      2       218
                   22296: \0332  "
                   22297: U^     64      2       219
                   22298: \0333  "
                   22299: U"     64      2       220
                   22300: \0334  "
                   22301: Y'     62      2       221
                   22302: \0335  "
                   22303: TH     56      2       222
                   22304: \0336  "
                   22305: ss     60      2       223
                   22306: \0337  "
                   22307: a`     66      2       224
                   22308: \0340  "
                   22309: a'     66      2       225
                   22310: \0341  "
                   22311: a^     66      2       226
                   22312: \0342  "
                   22313: a~     66      2       227
                   22314: \0343  "
                   22315: a"     66      2       228
                   22316: \0344  "
                   22317: a*     66      2       229
                   22318: \0345  "
                   22319: ae     108     0       230
                   22320: \0346  "
                   22321: c,     64      1       231
                   22322: \0347  "
                   22323: e`     64      2       232
                   22324: \0350  "
                   22325: e'     64      2       233
                   22326: \0351  "
                   22327: e^     64      2       234
                   22328: \0352  "
                   22329: e"     64      2       235
                   22330: \0353  "
                   22331: i`     24      2       236
                   22332: \0354  "
                   22333: i'     24      2       237
                   22334: \0355  "
                   22335: i^     24      2       238
                   22336: \0356  "
                   22337: i"     24      2       239
                   22338: \0357  "
                   22339: d-     64      2       240
                   22340: \0360  "
                   22341: n~     60      2       241
                   22342: \0361  "
                   22343: o`     64      2       242
                   22344: \0362  "
                   22345: o'     64      2       243
                   22346: \0363  "
                   22347: o^     64      2       244
                   22348: \0364  "
                   22349: o~     64      2       245
                   22350: \0365  "
                   22351: o"     64      2       246
                   22352: \0366  "
                   22353: -:     60      0       247
                   22354: \0367  "
                   22355: o/     66      0       248
                   22356: \0370  "
                   22357: u`     60      2       249
                   22358: \0371  "
                   22359: u'     60      2       250
                   22360: \0372  "
                   22361: u^     60      2       251
                   22362: \0373  "
                   22363: u"     60      2       252
                   22364: \0374  "
                   22365: y'     58      3       253
                   22366: \0375  "
                   22367: th     66      3       254
                   22368: \0376  "
                   22369: y"     58      3       255
                   22370: \0377  "
                   22371: ^a     54      2       147
                   22372: ~a     48      2       148
                   22373: Ua     48      2       150
                   22374: .a     28      2       151
                   22375: oa     36      2       154
                   22376: "a     70      2       157
                   22377: Ca     34      1       158
                   22378: va     54      2       159
                   22379: 0707070014231123461006440057030057030000010442000522627501500002600000006154post.src/devLatin1/AIname AI
                   22380: fontname AvantGarde-BookOblique
                   22381: named in prologue
                   22382: spacewidth 28
                   22383: charset
                   22384: !      29      2       33
                   22385: "      31      2       34
                   22386: dq     "
                   22387: #      55      2       35
                   22388: $      55      2       36
                   22389: %      78      2       37
                   22390: &      76      2       38
                   22391: '      35      2       39
                   22392: (      37      3       40
                   22393: )      37      3       41
                   22394: *      43      2       42
                   22395: +      61      0       43
                   22396: ,      28      0       44
                   22397: -      33      0       173
                   22398: \0255  "
                   22399: .      28      0       46
                   22400: /      44      3       47
                   22401: 0      55      2       48
                   22402: 1      55      2       49
                   22403: 2      55      2       50
                   22404: 3      55      2       51
                   22405: 4      55      2       52
                   22406: 5      55      2       53
                   22407: 6      55      2       54
                   22408: 7      55      2       55
                   22409: 8      55      2       56
                   22410: 9      55      2       57
                   22411: :      28      0       58
                   22412: ;      28      0       59
                   22413: ---    61      0       60
                   22414: =      61      0       61
                   22415: ---    61      0       62
                   22416: ?      59      2       63
                   22417: @      87      2       64
                   22418: A      74      2       65
                   22419: B      57      2       66
                   22420: C      81      2       67
                   22421: D      74      2       68
                   22422: E      54      2       69
                   22423: F      49      2       70
                   22424: G      87      2       71
                   22425: H      68      2       72
                   22426: I      23      2       73
                   22427: J      48      2       74
                   22428: K      59      2       75
                   22429: L      46      2       76
                   22430: M      92      2       77
                   22431: N      74      2       78
                   22432: O      87      2       79
                   22433: P      59      2       80
                   22434: Q      87      2       81
                   22435: R      61      2       82
                   22436: S      50      2       83
                   22437: T      43      2       84
                   22438: U      66      2       85
                   22439: V      70      2       86
                   22440: W      96      2       87
                   22441: X      61      2       88
                   22442: Y      59      2       89
                   22443: Z      48      2       90
                   22444: [      35      3       91
                   22445: \      61      2       92
                   22446: bs     "
                   22447: ]      35      3       93
                   22448: ^      50      2       147
                   22449: ---    61      2       94
                   22450: ---    50      1       95
                   22451: `      35      2       96
                   22452: a      68      0       97
                   22453: b      68      2       98
                   22454: c      65      0       99
                   22455: d      69      2       100
                   22456: e      65      0       101
                   22457: f      31      2       102
                   22458: g      67      1       103
                   22459: h      61      2       104
                   22460: i      20      2       105
                   22461: j      20      3       106
                   22462: k      50      2       107
                   22463: l      20      2       108
                   22464: m      94      0       109
                   22465: n      61      0       110
                   22466: o      66      0       111
                   22467: p      68      1       112
                   22468: q      68      1       113
                   22469: r      30      0       114
                   22470: s      39      0       115
                   22471: t      34      2       116
                   22472: u      61      0       117
                   22473: v      55      0       118
                   22474: w      83      0       119
                   22475: x      48      0       120
                   22476: y      54      1       121
                   22477: z      43      0       122
                   22478: {      35      3       123
                   22479: ---    67      2       124
                   22480: }      35      3       125
                   22481: ~      44      2       148
                   22482: ---    61      0       126
                   22483: \`     38      2       145
                   22484: ga     "
                   22485: !!     29      1       161
                   22486: \0241  "
                   22487: c|     55      2       162
                   22488: \0242  "
                   22489: ct     "
                   22490: L-     55      2       163
                   22491: \0243  "
                   22492: ps     "
                   22493: xo     55      0       164
                   22494: \0244  "
                   22495: cr     "
                   22496: Y-     55      2       165
                   22497: \0245  "
                   22498: yn     "
                   22499: ||     67      2       166
                   22500: \0246  "
                   22501: so     62      3       167
                   22502: \0247  "
                   22503: sc     "
                   22504: ""     37      2       168
                   22505: \0250  "
                   22506: :a     "
                   22507: co     75      2       169
                   22508: \0251  "
                   22509: a_     37      2       170
                   22510: \0252  "
                   22511: <<     43      0       171
                   22512: \0253  "
                   22513: -,     61      0       172
                   22514: \0254  "
                   22515: hy     33      0       173
                   22516: \0255  "
                   22517: --     61      0       45
                   22518: ro     75      2       174
                   22519: \0256  "
                   22520: rg     "
                   22521: -^     49      2       175
                   22522: \0257  "
                   22523: -a     "
                   22524: 0^     40      2       176
                   22525: \0260  "
                   22526: +-     61      0       177
                   22527: \0261  "
                   22528: 2^     33      2       178
                   22529: \0262  "
                   22530: 3^     33      2       179
                   22531: \0263  "
                   22532: \'     38      2       180
                   22533: \0264  "
                   22534: aa     "
                   22535: /u     61      1       181
                   22536: \0265  "
                   22537: P!     56      3       182
                   22538: \0266  "
                   22539: pg     "
                   22540: .^     28      0       183
                   22541: \0267  "
                   22542: ,,     32      1       184
                   22543: \0270  "
                   22544: ,a     "
                   22545: 1^     33      2       185
                   22546: \0271  "
                   22547: o_     37      2       186
                   22548: \0272  "
                   22549: >>     43      0       187
                   22550: \0273  "
                   22551: 14     83      2       188
                   22552: \0274  "
                   22553: 12     83      2       189
                   22554: \0275  "
                   22555: 34     83      2       190
                   22556: \0276  "
                   22557: ??     59      1       191
                   22558: \0277  "
                   22559: A`     74      2       192
                   22560: \0300  "
                   22561: A'     74      2       193
                   22562: \0301  "
                   22563: A^     74      2       194
                   22564: \0302  "
                   22565: A~     74      2       195
                   22566: \0303  "
                   22567: A"     74      2       196
                   22568: \0304  "
                   22569: A*     74      2       197
                   22570: \0305  "
                   22571: AE     99      2       198
                   22572: \0306  "
                   22573: C,     81      3       199
                   22574: \0307  "
                   22575: E`     54      2       200
                   22576: \0310  "
                   22577: E'     54      2       201
                   22578: \0311  "
                   22579: E^     54      2       202
                   22580: \0312  "
                   22581: E"     54      2       203
                   22582: \0313  "
                   22583: I`     23      2       204
                   22584: \0314  "
                   22585: I'     23      2       205
                   22586: \0315  "
                   22587: I^     23      2       206
                   22588: \0316  "
                   22589: I"     23      2       207
                   22590: \0317  "
                   22591: D-     79      2       208
                   22592: \0320  "
                   22593: N~     74      2       209
                   22594: \0321  "
                   22595: O`     87      2       210
                   22596: \0322  "
                   22597: O'     87      2       211
                   22598: \0323  "
                   22599: O^     87      2       212
                   22600: \0324  "
                   22601: O~     87      2       213
                   22602: \0325  "
                   22603: O"     87      2       214
                   22604: \0326  "
                   22605: xx     61      0       215
                   22606: \0327  "
                   22607: O/     87      2       216
                   22608: \0330  "
                   22609: U`     66      2       217
                   22610: \0331  "
                   22611: U'     66      2       218
                   22612: \0332  "
                   22613: U^     66      2       219
                   22614: \0333  "
                   22615: U"     66      2       220
                   22616: \0334  "
                   22617: Y'     59      2       221
                   22618: \0335  "
                   22619: TH     59      2       222
                   22620: \0336  "
                   22621: ss     55      2       223
                   22622: \0337  "
                   22623: a`     68      2       224
                   22624: \0340  "
                   22625: a'     68      2       225
                   22626: \0341  "
                   22627: a^     68      2       226
                   22628: \0342  "
                   22629: a~     68      2       227
                   22630: \0343  "
                   22631: a"     68      2       228
                   22632: \0344  "
                   22633: a*     68      2       229
                   22634: \0345  "
                   22635: ae     116     0       230
                   22636: \0346  "
                   22637: c,     65      1       231
                   22638: \0347  "
                   22639: e`     65      2       232
                   22640: \0350  "
                   22641: e'     65      2       233
                   22642: \0351  "
                   22643: e^     65      2       234
                   22644: \0352  "
                   22645: e"     65      2       235
                   22646: \0353  "
                   22647: i`     20      2       236
                   22648: \0354  "
                   22649: i'     20      2       237
                   22650: \0355  "
                   22651: i^     20      2       238
                   22652: \0356  "
                   22653: i"     20      2       239
                   22654: \0357  "
                   22655: d-     66      2       240
                   22656: \0360  "
                   22657: n~     61      2       241
                   22658: \0361  "
                   22659: o`     66      2       242
                   22660: \0362  "
                   22661: o'     66      2       243
                   22662: \0363  "
                   22663: o^     66      2       244
                   22664: \0364  "
                   22665: o~     66      2       245
                   22666: \0365  "
                   22667: o"     66      2       246
                   22668: \0366  "
                   22669: -:     61      0       247
                   22670: \0367  "
                   22671: o/     65      0       248
                   22672: \0370  "
                   22673: u`     61      2       249
                   22674: \0371  "
                   22675: u'     61      2       250
                   22676: \0372  "
                   22677: u^     61      2       251
                   22678: \0373  "
                   22679: u"     61      2       252
                   22680: \0374  "
                   22681: y'     54      3       253
                   22682: \0375  "
                   22683: th     68      3       254
                   22684: \0376  "
                   22685: y"     54      3       255
                   22686: \0377  "
                   22687: ^a     50      2       147
                   22688: ~a     44      2       148
                   22689: Ua     45      2       150
                   22690: .a     22      2       151
                   22691: oa     33      2       154
                   22692: "a     55      2       157
                   22693: Ca     30      1       158
                   22694: va     50      2       159
                   22695: 0707070014231123471006440057030057030000010442040522627501500002600000006145post.src/devLatin1/ARname AR
                   22696: fontname AvantGarde-Book
                   22697: named in prologue
                   22698: spacewidth 28
                   22699: charset
                   22700: !      29      2       33
                   22701: "      31      2       34
                   22702: dq     "
                   22703: #      55      2       35
                   22704: $      55      2       36
                   22705: %      78      2       37
                   22706: &      76      2       38
                   22707: '      35      2       39
                   22708: (      37      3       40
                   22709: )      37      3       41
                   22710: *      43      2       42
                   22711: +      61      0       43
                   22712: ,      28      0       44
                   22713: -      33      0       173
                   22714: \0255  "
                   22715: .      28      0       46
                   22716: /      44      3       47
                   22717: 0      55      2       48
                   22718: 1      55      2       49
                   22719: 2      55      2       50
                   22720: 3      55      2       51
                   22721: 4      55      2       52
                   22722: 5      55      2       53
                   22723: 6      55      2       54
                   22724: 7      55      2       55
                   22725: 8      55      2       56
                   22726: 9      55      2       57
                   22727: :      28      0       58
                   22728: ;      28      0       59
                   22729: ---    61      0       60
                   22730: =      61      0       61
                   22731: ---    61      0       62
                   22732: ?      59      2       63
                   22733: @      87      2       64
                   22734: A      74      2       65
                   22735: B      57      2       66
                   22736: C      81      2       67
                   22737: D      74      2       68
                   22738: E      54      2       69
                   22739: F      49      2       70
                   22740: G      87      2       71
                   22741: H      68      2       72
                   22742: I      23      2       73
                   22743: J      48      2       74
                   22744: K      59      2       75
                   22745: L      46      2       76
                   22746: M      92      2       77
                   22747: N      74      2       78
                   22748: O      87      2       79
                   22749: P      59      2       80
                   22750: Q      87      2       81
                   22751: R      61      2       82
                   22752: S      50      2       83
                   22753: T      43      2       84
                   22754: U      66      2       85
                   22755: V      70      2       86
                   22756: W      96      2       87
                   22757: X      61      2       88
                   22758: Y      59      2       89
                   22759: Z      48      2       90
                   22760: [      35      3       91
                   22761: \      61      2       92
                   22762: bs     "
                   22763: ]      35      3       93
                   22764: ^      50      2       147
                   22765: ---    61      2       94
                   22766: ---    50      1       95
                   22767: `      35      2       96
                   22768: a      68      0       97
                   22769: b      68      2       98
                   22770: c      65      0       99
                   22771: d      69      2       100
                   22772: e      65      0       101
                   22773: f      31      2       102
                   22774: g      67      1       103
                   22775: h      61      2       104
                   22776: i      20      2       105
                   22777: j      20      3       106
                   22778: k      50      2       107
                   22779: l      20      2       108
                   22780: m      94      0       109
                   22781: n      61      0       110
                   22782: o      66      0       111
                   22783: p      68      1       112
                   22784: q      68      1       113
                   22785: r      30      0       114
                   22786: s      39      0       115
                   22787: t      34      2       116
                   22788: u      61      0       117
                   22789: v      55      0       118
                   22790: w      83      0       119
                   22791: x      48      0       120
                   22792: y      54      1       121
                   22793: z      43      0       122
                   22794: {      35      3       123
                   22795: ---    67      2       124
                   22796: }      35      3       125
                   22797: ~      44      2       148
                   22798: ---    61      0       126
                   22799: \`     38      2       145
                   22800: ga     "
                   22801: !!     29      1       161
                   22802: \0241  "
                   22803: c|     55      2       162
                   22804: \0242  "
                   22805: ct     "
                   22806: L-     55      2       163
                   22807: \0243  "
                   22808: ps     "
                   22809: xo     55      0       164
                   22810: \0244  "
                   22811: cr     "
                   22812: Y-     55      2       165
                   22813: \0245  "
                   22814: yn     "
                   22815: ||     67      2       166
                   22816: \0246  "
                   22817: so     62      3       167
                   22818: \0247  "
                   22819: sc     "
                   22820: ""     37      2       168
                   22821: \0250  "
                   22822: :a     "
                   22823: co     75      2       169
                   22824: \0251  "
                   22825: a_     37      2       170
                   22826: \0252  "
                   22827: <<     43      0       171
                   22828: \0253  "
                   22829: -,     61      0       172
                   22830: \0254  "
                   22831: hy     33      0       173
                   22832: \0255  "
                   22833: --     61      0       45
                   22834: ro     75      2       174
                   22835: \0256  "
                   22836: rg     "
                   22837: -^     49      2       175
                   22838: \0257  "
                   22839: -a     "
                   22840: 0^     40      2       176
                   22841: \0260  "
                   22842: +-     61      0       177
                   22843: \0261  "
                   22844: 2^     33      2       178
                   22845: \0262  "
                   22846: 3^     33      2       179
                   22847: \0263  "
                   22848: \'     38      2       180
                   22849: \0264  "
                   22850: aa     "
                   22851: /u     61      1       181
                   22852: \0265  "
                   22853: P!     56      3       182
                   22854: \0266  "
                   22855: pg     "
                   22856: .^     28      0       183
                   22857: \0267  "
                   22858: ,,     32      1       184
                   22859: \0270  "
                   22860: ,a     "
                   22861: 1^     33      2       185
                   22862: \0271  "
                   22863: o_     37      2       186
                   22864: \0272  "
                   22865: >>     43      0       187
                   22866: \0273  "
                   22867: 14     83      2       188
                   22868: \0274  "
                   22869: 12     83      2       189
                   22870: \0275  "
                   22871: 34     83      2       190
                   22872: \0276  "
                   22873: ??     59      1       191
                   22874: \0277  "
                   22875: A`     74      2       192
                   22876: \0300  "
                   22877: A'     74      2       193
                   22878: \0301  "
                   22879: A^     74      2       194
                   22880: \0302  "
                   22881: A~     74      2       195
                   22882: \0303  "
                   22883: A"     74      2       196
                   22884: \0304  "
                   22885: A*     74      2       197
                   22886: \0305  "
                   22887: AE     99      2       198
                   22888: \0306  "
                   22889: C,     81      3       199
                   22890: \0307  "
                   22891: E`     54      2       200
                   22892: \0310  "
                   22893: E'     54      2       201
                   22894: \0311  "
                   22895: E^     54      2       202
                   22896: \0312  "
                   22897: E"     54      2       203
                   22898: \0313  "
                   22899: I`     23      2       204
                   22900: \0314  "
                   22901: I'     23      2       205
                   22902: \0315  "
                   22903: I^     23      2       206
                   22904: \0316  "
                   22905: I"     23      2       207
                   22906: \0317  "
                   22907: D-     79      2       208
                   22908: \0320  "
                   22909: N~     74      2       209
                   22910: \0321  "
                   22911: O`     87      2       210
                   22912: \0322  "
                   22913: O'     87      2       211
                   22914: \0323  "
                   22915: O^     87      2       212
                   22916: \0324  "
                   22917: O~     87      2       213
                   22918: \0325  "
                   22919: O"     87      2       214
                   22920: \0326  "
                   22921: xx     61      0       215
                   22922: \0327  "
                   22923: O/     87      2       216
                   22924: \0330  "
                   22925: U`     66      2       217
                   22926: \0331  "
                   22927: U'     66      2       218
                   22928: \0332  "
                   22929: U^     66      2       219
                   22930: \0333  "
                   22931: U"     66      2       220
                   22932: \0334  "
                   22933: Y'     59      2       221
                   22934: \0335  "
                   22935: TH     59      2       222
                   22936: \0336  "
                   22937: ss     55      2       223
                   22938: \0337  "
                   22939: a`     68      2       224
                   22940: \0340  "
                   22941: a'     68      2       225
                   22942: \0341  "
                   22943: a^     68      2       226
                   22944: \0342  "
                   22945: a~     68      2       227
                   22946: \0343  "
                   22947: a"     68      2       228
                   22948: \0344  "
                   22949: a*     68      2       229
                   22950: \0345  "
                   22951: ae     116     0       230
                   22952: \0346  "
                   22953: c,     65      1       231
                   22954: \0347  "
                   22955: e`     65      2       232
                   22956: \0350  "
                   22957: e'     65      2       233
                   22958: \0351  "
                   22959: e^     65      2       234
                   22960: \0352  "
                   22961: e"     65      2       235
                   22962: \0353  "
                   22963: i`     20      2       236
                   22964: \0354  "
                   22965: i'     20      2       237
                   22966: \0355  "
                   22967: i^     20      2       238
                   22968: \0356  "
                   22969: i"     20      2       239
                   22970: \0357  "
                   22971: d-     66      2       240
                   22972: \0360  "
                   22973: n~     61      2       241
                   22974: \0361  "
                   22975: o`     66      2       242
                   22976: \0362  "
                   22977: o'     66      2       243
                   22978: \0363  "
                   22979: o^     66      2       244
                   22980: \0364  "
                   22981: o~     66      2       245
                   22982: \0365  "
                   22983: o"     66      2       246
                   22984: \0366  "
                   22985: -:     61      0       247
                   22986: \0367  "
                   22987: o/     65      0       248
                   22988: \0370  "
                   22989: u`     61      2       249
                   22990: \0371  "
                   22991: u'     61      2       250
                   22992: \0372  "
                   22993: u^     61      2       251
                   22994: \0373  "
                   22995: u"     61      2       252
                   22996: \0374  "
                   22997: y'     54      3       253
                   22998: \0375  "
                   22999: th     68      3       254
                   23000: \0376  "
                   23001: y"     54      3       255
                   23002: \0377  "
                   23003: ^a     50      2       147
                   23004: ~a     44      2       148
                   23005: Ua     45      2       150
                   23006: .a     22      2       151
                   23007: oa     33      2       154
                   23008: "a     55      2       157
                   23009: Ca     30      1       158
                   23010: va     50      2       159
                   23011: 0707070014231123501006440057030057030000010442200522627501500002600000006154post.src/devLatin1/AXname AX
                   23012: fontname AvantGarde-DemiOblique
                   23013: named in prologue
                   23014: spacewidth 28
                   23015: charset
                   23016: !      28      2       33
                   23017: "      36      2       34
                   23018: dq     "
                   23019: #      56      2       35
                   23020: $      56      2       36
                   23021: %      86      2       37
                   23022: &      68      2       38
                   23023: '      28      2       39
                   23024: (      38      3       40
                   23025: )      38      3       41
                   23026: *      44      2       42
                   23027: +      60      0       43
                   23028: ,      28      1       44
                   23029: -      42      0       173
                   23030: \0255  "
                   23031: .      28      0       46
                   23032: /      46      3       47
                   23033: 0      56      2       48
                   23034: 1      56      2       49
                   23035: 2      56      2       50
                   23036: 3      56      2       51
                   23037: 4      56      2       52
                   23038: 5      56      2       53
                   23039: 6      56      2       54
                   23040: 7      56      2       55
                   23041: 8      56      2       56
                   23042: 9      56      2       57
                   23043: :      28      0       58
                   23044: ;      28      1       59
                   23045: ---    60      0       60
                   23046: =      60      0       61
                   23047: ---    60      0       62
                   23048: ?      56      2       63
                   23049: @      74      2       64
                   23050: A      74      2       65
                   23051: B      58      2       66
                   23052: C      78      2       67
                   23053: D      70      2       68
                   23054: E      52      2       69
                   23055: F      48      2       70
                   23056: G      84      2       71
                   23057: H      68      2       72
                   23058: I      28      2       73
                   23059: J      48      2       74
                   23060: K      62      2       75
                   23061: L      44      2       76
                   23062: M      90      2       77
                   23063: N      74      2       78
                   23064: O      84      2       79
                   23065: P      56      2       80
                   23066: Q      84      2       81
                   23067: R      58      2       82
                   23068: S      52      2       83
                   23069: T      42      2       84
                   23070: U      64      2       85
                   23071: V      70      2       86
                   23072: W      90      2       87
                   23073: X      68      2       88
                   23074: Y      62      2       89
                   23075: Z      50      2       90
                   23076: [      32      3       91
                   23077: \      64      2       92
                   23078: bs     "
                   23079: ]      32      3       93
                   23080: ^      54      2       147
                   23081: ---    60      2       94
                   23082: ---    50      1       95
                   23083: `      28      2       96
                   23084: a      66      0       97
                   23085: b      66      2       98
                   23086: c      64      0       99
                   23087: d      66      2       100
                   23088: e      64      0       101
                   23089: f      28      2       102
                   23090: g      66      1       103
                   23091: h      60      2       104
                   23092: i      24      2       105
                   23093: j      26      3       106
                   23094: k      58      2       107
                   23095: l      24      2       108
                   23096: m      94      0       109
                   23097: n      60      0       110
                   23098: o      64      0       111
                   23099: p      66      1       112
                   23100: q      66      1       113
                   23101: r      32      0       114
                   23102: s      44      0       115
                   23103: t      30      2       116
                   23104: u      60      0       117
                   23105: v      56      0       118
                   23106: w      80      0       119
                   23107: x      56      0       120
                   23108: y      58      1       121
                   23109: z      46      0       122
                   23110: {      34      3       123
                   23111: ---    60      2       124
                   23112: }      34      3       125
                   23113: ~      48      2       148
                   23114: ---    60      0       126
                   23115: \`     42      2       145
                   23116: ga     "
                   23117: !!     28      1       161
                   23118: \0241  "
                   23119: c|     56      2       162
                   23120: \0242  "
                   23121: ct     "
                   23122: L-     56      2       163
                   23123: \0243  "
                   23124: ps     "
                   23125: xo     56      2       164
                   23126: \0244  "
                   23127: cr     "
                   23128: Y-     56      2       165
                   23129: \0245  "
                   23130: yn     "
                   23131: ||     60      2       166
                   23132: \0246  "
                   23133: so     56      3       167
                   23134: \0247  "
                   23135: sc     "
                   23136: ""     50      2       168
                   23137: \0250  "
                   23138: :a     "
                   23139: co     74      2       169
                   23140: \0251  "
                   23141: a_     36      2       170
                   23142: \0252  "
                   23143: <<     46      0       171
                   23144: \0253  "
                   23145: -,     60      0       172
                   23146: \0254  "
                   23147: hy     42      0       173
                   23148: \0255  "
                   23149: --     60      0       45
                   23150: ro     74      2       174
                   23151: \0256  "
                   23152: rg     "
                   23153: -^     42      2       175
                   23154: \0257  "
                   23155: -a     "
                   23156: 0^     40      2       176
                   23157: \0260  "
                   23158: +-     60      0       177
                   23159: \0261  "
                   23160: 2^     34      2       178
                   23161: \0262  "
                   23162: 3^     34      2       179
                   23163: \0263  "
                   23164: \'     42      2       180
                   23165: \0264  "
                   23166: aa     "
                   23167: /u     58      1       181
                   23168: \0265  "
                   23169: P!     60      3       182
                   23170: \0266  "
                   23171: pg     "
                   23172: .^     28      0       183
                   23173: \0267  "
                   23174: ,,     34      1       184
                   23175: \0270  "
                   23176: ,a     "
                   23177: 1^     34      2       185
                   23178: \0271  "
                   23179: o_     36      2       186
                   23180: \0272  "
                   23181: >>     46      0       187
                   23182: \0273  "
                   23183: 14     84      2       188
                   23184: \0274  "
                   23185: 12     84      2       189
                   23186: \0275  "
                   23187: 34     84      2       190
                   23188: \0276  "
                   23189: ??     56      1       191
                   23190: \0277  "
                   23191: A`     74      2       192
                   23192: \0300  "
                   23193: A'     74      2       193
                   23194: \0301  "
                   23195: A^     74      2       194
                   23196: \0302  "
                   23197: A~     74      2       195
                   23198: \0303  "
                   23199: A"     74      2       196
                   23200: \0304  "
                   23201: A*     74      2       197
                   23202: \0305  "
                   23203: AE     90      2       198
                   23204: \0306  "
                   23205: C,     78      3       199
                   23206: \0307  "
                   23207: E`     52      2       200
                   23208: \0310  "
                   23209: E'     52      2       201
                   23210: \0311  "
                   23211: E^     52      2       202
                   23212: \0312  "
                   23213: E"     52      2       203
                   23214: \0313  "
                   23215: I`     28      2       204
                   23216: \0314  "
                   23217: I'     28      2       205
                   23218: \0315  "
                   23219: I^     28      2       206
                   23220: \0316  "
                   23221: I"     28      2       207
                   23222: \0317  "
                   23223: D-     74      2       208
                   23224: \0320  "
                   23225: N~     74      2       209
                   23226: \0321  "
                   23227: O`     84      2       210
                   23228: \0322  "
                   23229: O'     84      2       211
                   23230: \0323  "
                   23231: O^     84      2       212
                   23232: \0324  "
                   23233: O~     84      2       213
                   23234: \0325  "
                   23235: O"     84      2       214
                   23236: \0326  "
                   23237: xx     60      0       215
                   23238: \0327  "
                   23239: O/     84      2       216
                   23240: \0330  "
                   23241: U`     64      2       217
                   23242: \0331  "
                   23243: U'     64      2       218
                   23244: \0332  "
                   23245: U^     64      2       219
                   23246: \0333  "
                   23247: U"     64      2       220
                   23248: \0334  "
                   23249: Y'     62      2       221
                   23250: \0335  "
                   23251: TH     56      2       222
                   23252: \0336  "
                   23253: ss     60      2       223
                   23254: \0337  "
                   23255: a`     66      2       224
                   23256: \0340  "
                   23257: a'     66      2       225
                   23258: \0341  "
                   23259: a^     66      2       226
                   23260: \0342  "
                   23261: a~     66      2       227
                   23262: \0343  "
                   23263: a"     66      2       228
                   23264: \0344  "
                   23265: a*     66      2       229
                   23266: \0345  "
                   23267: ae     108     0       230
                   23268: \0346  "
                   23269: c,     64      1       231
                   23270: \0347  "
                   23271: e`     64      2       232
                   23272: \0350  "
                   23273: e'     64      2       233
                   23274: \0351  "
                   23275: e^     64      2       234
                   23276: \0352  "
                   23277: e"     64      2       235
                   23278: \0353  "
                   23279: i`     24      2       236
                   23280: \0354  "
                   23281: i'     24      2       237
                   23282: \0355  "
                   23283: i^     24      2       238
                   23284: \0356  "
                   23285: i"     24      2       239
                   23286: \0357  "
                   23287: d-     64      2       240
                   23288: \0360  "
                   23289: n~     60      2       241
                   23290: \0361  "
                   23291: o`     64      2       242
                   23292: \0362  "
                   23293: o'     64      2       243
                   23294: \0363  "
                   23295: o^     64      2       244
                   23296: \0364  "
                   23297: o~     64      2       245
                   23298: \0365  "
                   23299: o"     64      2       246
                   23300: \0366  "
                   23301: -:     60      0       247
                   23302: \0367  "
                   23303: o/     66      0       248
                   23304: \0370  "
                   23305: u`     60      2       249
                   23306: \0371  "
                   23307: u'     60      2       250
                   23308: \0372  "
                   23309: u^     60      2       251
                   23310: \0373  "
                   23311: u"     60      2       252
                   23312: \0374  "
                   23313: y'     58      3       253
                   23314: \0375  "
                   23315: th     66      3       254
                   23316: \0376  "
                   23317: y"     58      3       255
                   23318: \0377  "
                   23319: ^a     54      2       147
                   23320: ~a     48      2       148
                   23321: Ua     48      2       150
                   23322: .a     28      2       151
                   23323: oa     36      2       154
                   23324: "a     70      2       157
                   23325: Ca     34      1       158
                   23326: va     54      2       159
                   23327: 0707070014231123511006440057030057030000010442240522627501500002500000006137post.src/devLatin1/Hname H
                   23328: fontname Helvetica
                   23329: named in prologue
                   23330: spacewidth 28
                   23331: charset
                   23332: !      28      2       33
                   23333: "      36      2       34
                   23334: dq     "
                   23335: #      56      2       35
                   23336: $      56      3       36
                   23337: %      89      2       37
                   23338: &      67      2       38
                   23339: '      22      2       39
                   23340: (      33      3       40
                   23341: )      33      3       41
                   23342: *      39      2       42
                   23343: +      58      0       43
                   23344: ,      28      1       44
                   23345: -      33      0       173
                   23346: \0255  "
                   23347: .      28      0       46
                   23348: /      28      2       47
                   23349: 0      56      2       48
                   23350: 1      56      2       49
                   23351: 2      56      2       50
                   23352: 3      56      2       51
                   23353: 4      56      2       52
                   23354: 5      56      2       53
                   23355: 6      56      2       54
                   23356: 7      56      2       55
                   23357: 8      56      2       56
                   23358: 9      56      2       57
                   23359: :      28      0       58
                   23360: ;      28      1       59
                   23361: ---    58      0       60
                   23362: =      58      0       61
                   23363: ---    58      0       62
                   23364: ?      56      2       63
                   23365: @      102     3       64
                   23366: A      67      2       65
                   23367: B      67      2       66
                   23368: C      72      2       67
                   23369: D      72      2       68
                   23370: E      67      2       69
                   23371: F      61      2       70
                   23372: G      78      2       71
                   23373: H      72      2       72
                   23374: I      28      2       73
                   23375: J      50      2       74
                   23376: K      67      2       75
                   23377: L      56      2       76
                   23378: M      83      2       77
                   23379: N      72      2       78
                   23380: O      78      2       79
                   23381: P      67      2       80
                   23382: Q      78      2       81
                   23383: R      72      2       82
                   23384: S      67      2       83
                   23385: T      61      2       84
                   23386: U      72      2       85
                   23387: V      67      2       86
                   23388: W      94      2       87
                   23389: X      67      2       88
                   23390: Y      67      2       89
                   23391: Z      61      2       90
                   23392: [      28      3       91
                   23393: \      28      2       92
                   23394: bs     "
                   23395: ]      28      3       93
                   23396: ^      33      2       147
                   23397: ---    47      2       94
                   23398: ---    56      1       95
                   23399: `      22      2       96
                   23400: a      56      0       97
                   23401: b      56      2       98
                   23402: c      50      0       99
                   23403: d      56      2       100
                   23404: e      56      0       101
                   23405: f      28      2       102
                   23406: g      56      1       103
                   23407: h      56      2       104
                   23408: i      22      2       105
                   23409: j      22      3       106
                   23410: k      50      2       107
                   23411: l      22      2       108
                   23412: m      83      0       109
                   23413: n      56      0       110
                   23414: o      56      0       111
                   23415: p      56      1       112
                   23416: q      56      1       113
                   23417: r      33      0       114
                   23418: s      50      0       115
                   23419: t      28      2       116
                   23420: u      56      0       117
                   23421: v      50      0       118
                   23422: w      72      0       119
                   23423: x      50      0       120
                   23424: y      50      1       121
                   23425: z      50      0       122
                   23426: {      33      3       123
                   23427: ---    26      3       124
                   23428: }      33      3       125
                   23429: ~      33      2       148
                   23430: ---    58      0       126
                   23431: \`     33      2       145
                   23432: ga     "
                   23433: !!     33      1       161
                   23434: \0241  "
                   23435: c|     56      3       162
                   23436: \0242  "
                   23437: ct     "
                   23438: L-     56      2       163
                   23439: \0243  "
                   23440: ps     "
                   23441: xo     56      0       164
                   23442: \0244  "
                   23443: cr     "
                   23444: Y-     56      2       165
                   23445: \0245  "
                   23446: yn     "
                   23447: ||     26      3       166
                   23448: \0246  "
                   23449: so     56      3       167
                   23450: \0247  "
                   23451: sc     "
                   23452: ""     33      2       168
                   23453: \0250  "
                   23454: :a     "
                   23455: co     74      2       169
                   23456: \0251  "
                   23457: a_     37      2       170
                   23458: \0252  "
                   23459: <<     56      0       171
                   23460: \0253  "
                   23461: -,     58      0       172
                   23462: \0254  "
                   23463: hy     33      0       173
                   23464: \0255  "
                   23465: --     58      0       45
                   23466: ro     74      2       174
                   23467: \0256  "
                   23468: rg     "
                   23469: -^     33      2       175
                   23470: \0257  "
                   23471: -a     "
                   23472: 0^     40      2       176
                   23473: \0260  "
                   23474: +-     58      2       177
                   23475: \0261  "
                   23476: 2^     33      2       178
                   23477: \0262  "
                   23478: 3^     33      2       179
                   23479: \0263  "
                   23480: \'     33      2       180
                   23481: \0264  "
                   23482: aa     "
                   23483: /u     56      1       181
                   23484: \0265  "
                   23485: P!     54      3       182
                   23486: \0266  "
                   23487: pg     "
                   23488: .^     28      0       183
                   23489: \0267  "
                   23490: ,,     33      1       184
                   23491: \0270  "
                   23492: ,a     "
                   23493: 1^     33      2       185
                   23494: \0271  "
                   23495: o_     37      2       186
                   23496: \0272  "
                   23497: >>     56      0       187
                   23498: \0273  "
                   23499: 14     83      2       188
                   23500: \0274  "
                   23501: 12     83      2       189
                   23502: \0275  "
                   23503: 34     83      2       190
                   23504: \0276  "
                   23505: ??     61      1       191
                   23506: \0277  "
                   23507: A`     67      2       192
                   23508: \0300  "
                   23509: A'     67      2       193
                   23510: \0301  "
                   23511: A^     67      2       194
                   23512: \0302  "
                   23513: A~     67      2       195
                   23514: \0303  "
                   23515: A"     67      2       196
                   23516: \0304  "
                   23517: A*     67      2       197
                   23518: \0305  "
                   23519: AE     100     2       198
                   23520: \0306  "
                   23521: C,     72      3       199
                   23522: \0307  "
                   23523: E`     67      2       200
                   23524: \0310  "
                   23525: E'     67      2       201
                   23526: \0311  "
                   23527: E^     67      2       202
                   23528: \0312  "
                   23529: E"     67      2       203
                   23530: \0313  "
                   23531: I`     28      2       204
                   23532: \0314  "
                   23533: I'     28      2       205
                   23534: \0315  "
                   23535: I^     28      2       206
                   23536: \0316  "
                   23537: I"     28      2       207
                   23538: \0317  "
                   23539: D-     72      2       208
                   23540: \0320  "
                   23541: N~     72      2       209
                   23542: \0321  "
                   23543: O`     78      2       210
                   23544: \0322  "
                   23545: O'     78      2       211
                   23546: \0323  "
                   23547: O^     78      2       212
                   23548: \0324  "
                   23549: O~     78      2       213
                   23550: \0325  "
                   23551: O"     78      2       214
                   23552: \0326  "
                   23553: xx     58      0       215
                   23554: \0327  "
                   23555: O/     78      2       216
                   23556: \0330  "
                   23557: U`     72      2       217
                   23558: \0331  "
                   23559: U'     72      2       218
                   23560: \0332  "
                   23561: U^     72      2       219
                   23562: \0333  "
                   23563: U"     72      2       220
                   23564: \0334  "
                   23565: Y'     67      2       221
                   23566: \0335  "
                   23567: TH     67      2       222
                   23568: \0336  "
                   23569: ss     61      2       223
                   23570: \0337  "
                   23571: a`     56      2       224
                   23572: \0340  "
                   23573: a'     56      2       225
                   23574: \0341  "
                   23575: a^     56      2       226
                   23576: \0342  "
                   23577: a~     56      2       227
                   23578: \0343  "
                   23579: a"     56      2       228
                   23580: \0344  "
                   23581: a*     56      2       229
                   23582: \0345  "
                   23583: ae     89      0       230
                   23584: \0346  "
                   23585: c,     50      1       231
                   23586: \0347  "
                   23587: e`     56      2       232
                   23588: \0350  "
                   23589: e'     56      2       233
                   23590: \0351  "
                   23591: e^     56      2       234
                   23592: \0352  "
                   23593: e"     56      2       235
                   23594: \0353  "
                   23595: i`     28      2       236
                   23596: \0354  "
                   23597: i'     28      2       237
                   23598: \0355  "
                   23599: i^     28      2       238
                   23600: \0356  "
                   23601: i"     28      2       239
                   23602: \0357  "
                   23603: d-     56      2       240
                   23604: \0360  "
                   23605: n~     56      2       241
                   23606: \0361  "
                   23607: o`     56      2       242
                   23608: \0362  "
                   23609: o'     56      2       243
                   23610: \0363  "
                   23611: o^     56      2       244
                   23612: \0364  "
                   23613: o~     56      2       245
                   23614: \0365  "
                   23615: o"     56      2       246
                   23616: \0366  "
                   23617: -:     58      0       247
                   23618: \0367  "
                   23619: o/     61      0       248
                   23620: \0370  "
                   23621: u`     56      2       249
                   23622: \0371  "
                   23623: u'     56      2       250
                   23624: \0372  "
                   23625: u^     56      2       251
                   23626: \0373  "
                   23627: u"     56      2       252
                   23628: \0374  "
                   23629: y'     50      3       253
                   23630: \0375  "
                   23631: th     56      3       254
                   23632: \0376  "
                   23633: y"     50      3       255
                   23634: \0377  "
                   23635: ^a     33      2       147
                   23636: ~a     33      2       148
                   23637: Ua     33      2       150
                   23638: .a     33      2       151
                   23639: oa     33      2       154
                   23640: "a     33      2       157
                   23641: Ca     33      1       158
                   23642: va     33      2       159
                   23643: 0707070014231123521006440057030057030000010442400522627501500002600000006144post.src/devLatin1/HBname HB
                   23644: fontname Helvetica-Bold
                   23645: named in prologue
                   23646: spacewidth 28
                   23647: charset
                   23648: !      33      2       33
                   23649: "      47      2       34
                   23650: dq     "
                   23651: #      56      2       35
                   23652: $      56      3       36
                   23653: %      89      2       37
                   23654: &      72      2       38
                   23655: '      28      2       39
                   23656: (      33      3       40
                   23657: )      33      3       41
                   23658: *      39      2       42
                   23659: +      58      0       43
                   23660: ,      28      1       44
                   23661: -      33      0       173
                   23662: \0255  "
                   23663: .      28      0       46
                   23664: /      28      2       47
                   23665: 0      56      2       48
                   23666: 1      56      2       49
                   23667: 2      56      2       50
                   23668: 3      56      2       51
                   23669: 4      56      2       52
                   23670: 5      56      2       53
                   23671: 6      56      2       54
                   23672: 7      56      2       55
                   23673: 8      56      2       56
                   23674: 9      56      2       57
                   23675: :      33      0       58
                   23676: ;      33      1       59
                   23677: ---    58      0       60
                   23678: =      58      0       61
                   23679: ---    58      0       62
                   23680: ?      61      2       63
                   23681: @      98      3       64
                   23682: A      72      2       65
                   23683: B      72      2       66
                   23684: C      72      2       67
                   23685: D      72      2       68
                   23686: E      67      2       69
                   23687: F      61      2       70
                   23688: G      78      2       71
                   23689: H      72      2       72
                   23690: I      28      2       73
                   23691: J      56      2       74
                   23692: K      72      2       75
                   23693: L      61      2       76
                   23694: M      83      2       77
                   23695: N      72      2       78
                   23696: O      78      2       79
                   23697: P      67      2       80
                   23698: Q      78      2       81
                   23699: R      72      2       82
                   23700: S      67      2       83
                   23701: T      61      2       84
                   23702: U      72      2       85
                   23703: V      67      2       86
                   23704: W      94      2       87
                   23705: X      67      2       88
                   23706: Y      67      2       89
                   23707: Z      61      2       90
                   23708: [      33      3       91
                   23709: \      28      2       92
                   23710: bs     "
                   23711: ]      33      3       93
                   23712: ^      33      2       147
                   23713: ---    58      2       94
                   23714: ---    56      1       95
                   23715: `      28      2       96
                   23716: a      56      0       97
                   23717: b      61      2       98
                   23718: c      56      0       99
                   23719: d      61      2       100
                   23720: e      56      0       101
                   23721: f      33      2       102
                   23722: g      61      1       103
                   23723: h      61      2       104
                   23724: i      28      2       105
                   23725: j      28      3       106
                   23726: k      56      2       107
                   23727: l      28      2       108
                   23728: m      89      0       109
                   23729: n      61      0       110
                   23730: o      61      0       111
                   23731: p      61      1       112
                   23732: q      61      1       113
                   23733: r      39      0       114
                   23734: s      56      0       115
                   23735: t      33      2       116
                   23736: u      61      0       117
                   23737: v      56      0       118
                   23738: w      78      0       119
                   23739: x      56      0       120
                   23740: y      56      1       121
                   23741: z      50      0       122
                   23742: {      39      3       123
                   23743: ---    28      3       124
                   23744: }      39      3       125
                   23745: ~      33      2       148
                   23746: ---    58      0       126
                   23747: \`     33      2       145
                   23748: ga     "
                   23749: !!     33      1       161
                   23750: \0241  "
                   23751: c|     56      3       162
                   23752: \0242  "
                   23753: ct     "
                   23754: L-     56      2       163
                   23755: \0243  "
                   23756: ps     "
                   23757: xo     56      2       164
                   23758: \0244  "
                   23759: cr     "
                   23760: Y-     56      2       165
                   23761: \0245  "
                   23762: yn     "
                   23763: ||     28      3       166
                   23764: \0246  "
                   23765: so     56      3       167
                   23766: \0247  "
                   23767: sc     "
                   23768: ""     33      2       168
                   23769: \0250  "
                   23770: :a     "
                   23771: co     74      2       169
                   23772: \0251  "
                   23773: a_     37      2       170
                   23774: \0252  "
                   23775: <<     56      0       171
                   23776: \0253  "
                   23777: -,     58      0       172
                   23778: \0254  "
                   23779: hy     33      0       173
                   23780: \0255  "
                   23781: --     58      0       45
                   23782: ro     74      2       174
                   23783: \0256  "
                   23784: rg     "
                   23785: -^     33      2       175
                   23786: \0257  "
                   23787: -a     "
                   23788: 0^     40      2       176
                   23789: \0260  "
                   23790: +-     58      2       177
                   23791: \0261  "
                   23792: 2^     33      2       178
                   23793: \0262  "
                   23794: 3^     33      2       179
                   23795: \0263  "
                   23796: \'     33      2       180
                   23797: \0264  "
                   23798: aa     "
                   23799: /u     61      1       181
                   23800: \0265  "
                   23801: P!     56      3       182
                   23802: \0266  "
                   23803: pg     "
                   23804: .^     28      0       183
                   23805: \0267  "
                   23806: ,,     33      1       184
                   23807: \0270  "
                   23808: ,a     "
                   23809: 1^     33      2       185
                   23810: \0271  "
                   23811: o_     37      2       186
                   23812: \0272  "
                   23813: >>     56      0       187
                   23814: \0273  "
                   23815: 14     83      2       188
                   23816: \0274  "
                   23817: 12     83      2       189
                   23818: \0275  "
                   23819: 34     83      2       190
                   23820: \0276  "
                   23821: ??     61      1       191
                   23822: \0277  "
                   23823: A`     72      2       192
                   23824: \0300  "
                   23825: A'     72      2       193
                   23826: \0301  "
                   23827: A^     72      2       194
                   23828: \0302  "
                   23829: A~     72      2       195
                   23830: \0303  "
                   23831: A"     72      2       196
                   23832: \0304  "
                   23833: A*     72      2       197
                   23834: \0305  "
                   23835: AE     100     2       198
                   23836: \0306  "
                   23837: C,     72      3       199
                   23838: \0307  "
                   23839: E`     67      2       200
                   23840: \0310  "
                   23841: E'     67      2       201
                   23842: \0311  "
                   23843: E^     67      2       202
                   23844: \0312  "
                   23845: E"     67      2       203
                   23846: \0313  "
                   23847: I`     28      2       204
                   23848: \0314  "
                   23849: I'     28      2       205
                   23850: \0315  "
                   23851: I^     28      2       206
                   23852: \0316  "
                   23853: I"     28      2       207
                   23854: \0317  "
                   23855: D-     72      2       208
                   23856: \0320  "
                   23857: N~     72      2       209
                   23858: \0321  "
                   23859: O`     78      2       210
                   23860: \0322  "
                   23861: O'     78      2       211
                   23862: \0323  "
                   23863: O^     78      2       212
                   23864: \0324  "
                   23865: O~     78      2       213
                   23866: \0325  "
                   23867: O"     78      2       214
                   23868: \0326  "
                   23869: xx     58      0       215
                   23870: \0327  "
                   23871: O/     78      2       216
                   23872: \0330  "
                   23873: U`     72      2       217
                   23874: \0331  "
                   23875: U'     72      2       218
                   23876: \0332  "
                   23877: U^     72      2       219
                   23878: \0333  "
                   23879: U"     72      2       220
                   23880: \0334  "
                   23881: Y'     67      2       221
                   23882: \0335  "
                   23883: TH     67      2       222
                   23884: \0336  "
                   23885: ss     61      2       223
                   23886: \0337  "
                   23887: a`     56      2       224
                   23888: \0340  "
                   23889: a'     56      2       225
                   23890: \0341  "
                   23891: a^     56      2       226
                   23892: \0342  "
                   23893: a~     56      2       227
                   23894: \0343  "
                   23895: a"     56      2       228
                   23896: \0344  "
                   23897: a*     56      2       229
                   23898: \0345  "
                   23899: ae     89      0       230
                   23900: \0346  "
                   23901: c,     56      1       231
                   23902: \0347  "
                   23903: e`     56      2       232
                   23904: \0350  "
                   23905: e'     56      2       233
                   23906: \0351  "
                   23907: e^     56      2       234
                   23908: \0352  "
                   23909: e"     56      2       235
                   23910: \0353  "
                   23911: i`     28      2       236
                   23912: \0354  "
                   23913: i'     28      2       237
                   23914: \0355  "
                   23915: i^     28      2       238
                   23916: \0356  "
                   23917: i"     28      2       239
                   23918: \0357  "
                   23919: d-     61      2       240
                   23920: \0360  "
                   23921: n~     61      2       241
                   23922: \0361  "
                   23923: o`     61      2       242
                   23924: \0362  "
                   23925: o'     61      2       243
                   23926: \0363  "
                   23927: o^     61      2       244
                   23928: \0364  "
                   23929: o~     61      2       245
                   23930: \0365  "
                   23931: o"     61      2       246
                   23932: \0366  "
                   23933: -:     58      0       247
                   23934: \0367  "
                   23935: o/     61      0       248
                   23936: \0370  "
                   23937: u`     61      2       249
                   23938: \0371  "
                   23939: u'     61      2       250
                   23940: \0372  "
                   23941: u^     61      2       251
                   23942: \0373  "
                   23943: u"     61      2       252
                   23944: \0374  "
                   23945: y'     56      3       253
                   23946: \0375  "
                   23947: th     61      3       254
                   23948: \0376  "
                   23949: y"     56      3       255
                   23950: \0377  "
                   23951: ^a     33      2       147
                   23952: ~a     33      2       148
                   23953: Ua     33      2       150
                   23954: .a     33      2       151
                   23955: oa     33      2       154
                   23956: "a     33      2       157
                   23957: Ca     33      1       158
                   23958: va     33      2       159
                   23959: 0707070014231123531006440057030057030000010442440522627501500002600000006150post.src/devLatin1/HIname HI
                   23960: fontname Helvetica-Oblique
                   23961: named in prologue
                   23962: spacewidth 28
                   23963: charset
                   23964: !      28      2       33
                   23965: "      36      2       34
                   23966: dq     "
                   23967: #      56      2       35
                   23968: $      56      3       36
                   23969: %      89      2       37
                   23970: &      67      2       38
                   23971: '      22      2       39
                   23972: (      33      3       40
                   23973: )      33      3       41
                   23974: *      39      2       42
                   23975: +      58      0       43
                   23976: ,      28      1       44
                   23977: -      33      0       173
                   23978: \0255  "
                   23979: .      28      0       46
                   23980: /      28      2       47
                   23981: 0      56      2       48
                   23982: 1      56      2       49
                   23983: 2      56      2       50
                   23984: 3      56      2       51
                   23985: 4      56      2       52
                   23986: 5      56      2       53
                   23987: 6      56      2       54
                   23988: 7      56      2       55
                   23989: 8      56      2       56
                   23990: 9      56      2       57
                   23991: :      28      0       58
                   23992: ;      28      1       59
                   23993: ---    58      0       60
                   23994: =      58      0       61
                   23995: ---    58      0       62
                   23996: ?      56      2       63
                   23997: @      102     3       64
                   23998: A      67      2       65
                   23999: B      67      2       66
                   24000: C      72      2       67
                   24001: D      72      2       68
                   24002: E      67      2       69
                   24003: F      61      2       70
                   24004: G      78      2       71
                   24005: H      72      2       72
                   24006: I      28      2       73
                   24007: J      50      2       74
                   24008: K      67      2       75
                   24009: L      56      2       76
                   24010: M      83      2       77
                   24011: N      72      2       78
                   24012: O      78      2       79
                   24013: P      67      2       80
                   24014: Q      78      2       81
                   24015: R      72      2       82
                   24016: S      67      2       83
                   24017: T      61      2       84
                   24018: U      72      2       85
                   24019: V      67      2       86
                   24020: W      94      2       87
                   24021: X      67      2       88
                   24022: Y      67      2       89
                   24023: Z      61      2       90
                   24024: [      28      3       91
                   24025: \      28      2       92
                   24026: bs     "
                   24027: ]      28      3       93
                   24028: ^      33      2       147
                   24029: ---    47      2       94
                   24030: ---    56      1       95
                   24031: `      22      2       96
                   24032: a      56      0       97
                   24033: b      56      2       98
                   24034: c      50      0       99
                   24035: d      56      2       100
                   24036: e      56      0       101
                   24037: f      28      2       102
                   24038: g      56      1       103
                   24039: h      56      2       104
                   24040: i      22      2       105
                   24041: j      22      3       106
                   24042: k      50      2       107
                   24043: l      22      2       108
                   24044: m      83      0       109
                   24045: n      56      0       110
                   24046: o      56      0       111
                   24047: p      56      1       112
                   24048: q      56      1       113
                   24049: r      33      0       114
                   24050: s      50      0       115
                   24051: t      28      2       116
                   24052: u      56      0       117
                   24053: v      50      0       118
                   24054: w      72      0       119
                   24055: x      50      0       120
                   24056: y      50      1       121
                   24057: z      50      0       122
                   24058: {      33      3       123
                   24059: ---    26      3       124
                   24060: }      33      3       125
                   24061: ~      33      2       148
                   24062: ---    58      0       126
                   24063: \`     33      2       145
                   24064: ga     "
                   24065: !!     33      1       161
                   24066: \0241  "
                   24067: c|     56      3       162
                   24068: \0242  "
                   24069: ct     "
                   24070: L-     56      2       163
                   24071: \0243  "
                   24072: ps     "
                   24073: xo     56      0       164
                   24074: \0244  "
                   24075: cr     "
                   24076: Y-     56      2       165
                   24077: \0245  "
                   24078: yn     "
                   24079: ||     26      3       166
                   24080: \0246  "
                   24081: so     56      3       167
                   24082: \0247  "
                   24083: sc     "
                   24084: ""     33      2       168
                   24085: \0250  "
                   24086: :a     "
                   24087: co     74      2       169
                   24088: \0251  "
                   24089: a_     37      2       170
                   24090: \0252  "
                   24091: <<     56      0       171
                   24092: \0253  "
                   24093: -,     58      0       172
                   24094: \0254  "
                   24095: hy     33      0       173
                   24096: \0255  "
                   24097: --     58      0       45
                   24098: ro     74      2       174
                   24099: \0256  "
                   24100: rg     "
                   24101: -^     33      2       175
                   24102: \0257  "
                   24103: -a     "
                   24104: 0^     40      2       176
                   24105: \0260  "
                   24106: +-     58      2       177
                   24107: \0261  "
                   24108: 2^     33      2       178
                   24109: \0262  "
                   24110: 3^     33      2       179
                   24111: \0263  "
                   24112: \'     33      2       180
                   24113: \0264  "
                   24114: aa     "
                   24115: /u     56      1       181
                   24116: \0265  "
                   24117: P!     54      3       182
                   24118: \0266  "
                   24119: pg     "
                   24120: .^     28      0       183
                   24121: \0267  "
                   24122: ,,     33      1       184
                   24123: \0270  "
                   24124: ,a     "
                   24125: 1^     33      2       185
                   24126: \0271  "
                   24127: o_     37      2       186
                   24128: \0272  "
                   24129: >>     56      0       187
                   24130: \0273  "
                   24131: 14     83      2       188
                   24132: \0274  "
                   24133: 12     83      2       189
                   24134: \0275  "
                   24135: 34     83      2       190
                   24136: \0276  "
                   24137: ??     61      1       191
                   24138: \0277  "
                   24139: A`     67      2       192
                   24140: \0300  "
                   24141: A'     67      2       193
                   24142: \0301  "
                   24143: A^     67      2       194
                   24144: \0302  "
                   24145: A~     67      2       195
                   24146: \0303  "
                   24147: A"     67      2       196
                   24148: \0304  "
                   24149: A*     67      2       197
                   24150: \0305  "
                   24151: AE     100     2       198
                   24152: \0306  "
                   24153: C,     72      3       199
                   24154: \0307  "
                   24155: E`     67      2       200
                   24156: \0310  "
                   24157: E'     67      2       201
                   24158: \0311  "
                   24159: E^     67      2       202
                   24160: \0312  "
                   24161: E"     67      2       203
                   24162: \0313  "
                   24163: I`     28      2       204
                   24164: \0314  "
                   24165: I'     28      2       205
                   24166: \0315  "
                   24167: I^     28      2       206
                   24168: \0316  "
                   24169: I"     28      2       207
                   24170: \0317  "
                   24171: D-     72      2       208
                   24172: \0320  "
                   24173: N~     72      2       209
                   24174: \0321  "
                   24175: O`     78      2       210
                   24176: \0322  "
                   24177: O'     78      2       211
                   24178: \0323  "
                   24179: O^     78      2       212
                   24180: \0324  "
                   24181: O~     78      2       213
                   24182: \0325  "
                   24183: O"     78      2       214
                   24184: \0326  "
                   24185: xx     58      0       215
                   24186: \0327  "
                   24187: O/     78      2       216
                   24188: \0330  "
                   24189: U`     72      2       217
                   24190: \0331  "
                   24191: U'     72      2       218
                   24192: \0332  "
                   24193: U^     72      2       219
                   24194: \0333  "
                   24195: U"     72      2       220
                   24196: \0334  "
                   24197: Y'     67      2       221
                   24198: \0335  "
                   24199: TH     67      2       222
                   24200: \0336  "
                   24201: ss     61      2       223
                   24202: \0337  "
                   24203: a`     56      2       224
                   24204: \0340  "
                   24205: a'     56      2       225
                   24206: \0341  "
                   24207: a^     56      2       226
                   24208: \0342  "
                   24209: a~     56      2       227
                   24210: \0343  "
                   24211: a"     56      2       228
                   24212: \0344  "
                   24213: a*     56      2       229
                   24214: \0345  "
                   24215: ae     89      0       230
                   24216: \0346  "
                   24217: c,     50      1       231
                   24218: \0347  "
                   24219: e`     56      2       232
                   24220: \0350  "
                   24221: e'     56      2       233
                   24222: \0351  "
                   24223: e^     56      2       234
                   24224: \0352  "
                   24225: e"     56      2       235
                   24226: \0353  "
                   24227: i`     28      2       236
                   24228: \0354  "
                   24229: i'     28      2       237
                   24230: \0355  "
                   24231: i^     28      2       238
                   24232: \0356  "
                   24233: i"     28      2       239
                   24234: \0357  "
                   24235: d-     56      2       240
                   24236: \0360  "
                   24237: n~     56      2       241
                   24238: \0361  "
                   24239: o`     56      2       242
                   24240: \0362  "
                   24241: o'     56      2       243
                   24242: \0363  "
                   24243: o^     56      2       244
                   24244: \0364  "
                   24245: o~     56      2       245
                   24246: \0365  "
                   24247: o"     56      2       246
                   24248: \0366  "
                   24249: -:     58      0       247
                   24250: \0367  "
                   24251: o/     61      0       248
                   24252: \0370  "
                   24253: u`     56      2       249
                   24254: \0371  "
                   24255: u'     56      2       250
                   24256: \0372  "
                   24257: u^     56      2       251
                   24258: \0373  "
                   24259: u"     56      2       252
                   24260: \0374  "
                   24261: y'     50      3       253
                   24262: \0375  "
                   24263: th     56      3       254
                   24264: \0376  "
                   24265: y"     50      3       255
                   24266: \0377  "
                   24267: ^a     33      2       147
                   24268: ~a     33      2       148
                   24269: Ua     33      2       150
                   24270: .a     33      2       151
                   24271: oa     33      2       154
                   24272: "a     33      2       157
                   24273: Ca     33      1       158
                   24274: va     33      2       159
                   24275: 0707070014231123541006440057030057030000010442600522627501500002600000006153post.src/devLatin1/HXname HX
                   24276: fontname Helvetica-BoldOblique
                   24277: named in prologue
                   24278: spacewidth 28
                   24279: charset
                   24280: !      33      2       33
                   24281: "      47      2       34
                   24282: dq     "
                   24283: #      56      2       35
                   24284: $      56      3       36
                   24285: %      89      2       37
                   24286: &      72      2       38
                   24287: '      28      2       39
                   24288: (      33      3       40
                   24289: )      33      3       41
                   24290: *      39      2       42
                   24291: +      58      0       43
                   24292: ,      28      1       44
                   24293: -      33      0       173
                   24294: \0255  "
                   24295: .      28      0       46
                   24296: /      28      2       47
                   24297: 0      56      2       48
                   24298: 1      56      2       49
                   24299: 2      56      2       50
                   24300: 3      56      2       51
                   24301: 4      56      2       52
                   24302: 5      56      2       53
                   24303: 6      56      2       54
                   24304: 7      56      2       55
                   24305: 8      56      2       56
                   24306: 9      56      2       57
                   24307: :      33      0       58
                   24308: ;      33      1       59
                   24309: ---    58      0       60
                   24310: =      58      0       61
                   24311: ---    58      0       62
                   24312: ?      61      2       63
                   24313: @      98      3       64
                   24314: A      72      2       65
                   24315: B      72      2       66
                   24316: C      72      2       67
                   24317: D      72      2       68
                   24318: E      67      2       69
                   24319: F      61      2       70
                   24320: G      78      2       71
                   24321: H      72      2       72
                   24322: I      28      2       73
                   24323: J      56      2       74
                   24324: K      72      2       75
                   24325: L      61      2       76
                   24326: M      83      2       77
                   24327: N      72      2       78
                   24328: O      78      2       79
                   24329: P      67      2       80
                   24330: Q      78      2       81
                   24331: R      72      2       82
                   24332: S      67      2       83
                   24333: T      61      2       84
                   24334: U      72      2       85
                   24335: V      67      2       86
                   24336: W      94      2       87
                   24337: X      67      2       88
                   24338: Y      67      2       89
                   24339: Z      61      2       90
                   24340: [      33      3       91
                   24341: \      28      2       92
                   24342: bs     "
                   24343: ]      33      3       93
                   24344: ^      33      2       147
                   24345: ---    58      2       94
                   24346: ---    56      1       95
                   24347: `      28      2       96
                   24348: a      56      0       97
                   24349: b      61      2       98
                   24350: c      56      0       99
                   24351: d      61      2       100
                   24352: e      56      0       101
                   24353: f      33      2       102
                   24354: g      61      1       103
                   24355: h      61      2       104
                   24356: i      28      2       105
                   24357: j      28      3       106
                   24358: k      56      2       107
                   24359: l      28      2       108
                   24360: m      89      0       109
                   24361: n      61      0       110
                   24362: o      61      0       111
                   24363: p      61      1       112
                   24364: q      61      1       113
                   24365: r      39      0       114
                   24366: s      56      0       115
                   24367: t      33      2       116
                   24368: u      61      0       117
                   24369: v      56      0       118
                   24370: w      78      0       119
                   24371: x      56      0       120
                   24372: y      56      1       121
                   24373: z      50      0       122
                   24374: {      39      3       123
                   24375: ---    28      3       124
                   24376: }      39      3       125
                   24377: ~      33      2       148
                   24378: ---    58      0       126
                   24379: \`     33      2       145
                   24380: ga     "
                   24381: !!     33      1       161
                   24382: \0241  "
                   24383: c|     56      3       162
                   24384: \0242  "
                   24385: ct     "
                   24386: L-     56      2       163
                   24387: \0243  "
                   24388: ps     "
                   24389: xo     56      2       164
                   24390: \0244  "
                   24391: cr     "
                   24392: Y-     56      2       165
                   24393: \0245  "
                   24394: yn     "
                   24395: ||     28      3       166
                   24396: \0246  "
                   24397: so     56      3       167
                   24398: \0247  "
                   24399: sc     "
                   24400: ""     33      2       168
                   24401: \0250  "
                   24402: :a     "
                   24403: co     74      2       169
                   24404: \0251  "
                   24405: a_     37      2       170
                   24406: \0252  "
                   24407: <<     56      0       171
                   24408: \0253  "
                   24409: -,     58      0       172
                   24410: \0254  "
                   24411: hy     33      0       173
                   24412: \0255  "
                   24413: --     58      0       45
                   24414: ro     74      2       174
                   24415: \0256  "
                   24416: rg     "
                   24417: -^     33      2       175
                   24418: \0257  "
                   24419: -a     "
                   24420: 0^     40      2       176
                   24421: \0260  "
                   24422: +-     58      2       177
                   24423: \0261  "
                   24424: 2^     33      2       178
                   24425: \0262  "
                   24426: 3^     33      2       179
                   24427: \0263  "
                   24428: \'     33      2       180
                   24429: \0264  "
                   24430: aa     "
                   24431: /u     61      1       181
                   24432: \0265  "
                   24433: P!     56      3       182
                   24434: \0266  "
                   24435: pg     "
                   24436: .^     28      0       183
                   24437: \0267  "
                   24438: ,,     33      1       184
                   24439: \0270  "
                   24440: ,a     "
                   24441: 1^     33      2       185
                   24442: \0271  "
                   24443: o_     37      2       186
                   24444: \0272  "
                   24445: >>     56      0       187
                   24446: \0273  "
                   24447: 14     83      2       188
                   24448: \0274  "
                   24449: 12     83      2       189
                   24450: \0275  "
                   24451: 34     83      2       190
                   24452: \0276  "
                   24453: ??     61      1       191
                   24454: \0277  "
                   24455: A`     72      2       192
                   24456: \0300  "
                   24457: A'     72      2       193
                   24458: \0301  "
                   24459: A^     72      2       194
                   24460: \0302  "
                   24461: A~     72      2       195
                   24462: \0303  "
                   24463: A"     72      2       196
                   24464: \0304  "
                   24465: A*     72      2       197
                   24466: \0305  "
                   24467: AE     100     2       198
                   24468: \0306  "
                   24469: C,     72      3       199
                   24470: \0307  "
                   24471: E`     67      2       200
                   24472: \0310  "
                   24473: E'     67      2       201
                   24474: \0311  "
                   24475: E^     67      2       202
                   24476: \0312  "
                   24477: E"     67      2       203
                   24478: \0313  "
                   24479: I`     28      2       204
                   24480: \0314  "
                   24481: I'     28      2       205
                   24482: \0315  "
                   24483: I^     28      2       206
                   24484: \0316  "
                   24485: I"     28      2       207
                   24486: \0317  "
                   24487: D-     72      2       208
                   24488: \0320  "
                   24489: N~     72      2       209
                   24490: \0321  "
                   24491: O`     78      2       210
                   24492: \0322  "
                   24493: O'     78      2       211
                   24494: \0323  "
                   24495: O^     78      2       212
                   24496: \0324  "
                   24497: O~     78      2       213
                   24498: \0325  "
                   24499: O"     78      2       214
                   24500: \0326  "
                   24501: xx     58      0       215
                   24502: \0327  "
                   24503: O/     78      2       216
                   24504: \0330  "
                   24505: U`     72      2       217
                   24506: \0331  "
                   24507: U'     72      2       218
                   24508: \0332  "
                   24509: U^     72      2       219
                   24510: \0333  "
                   24511: U"     72      2       220
                   24512: \0334  "
                   24513: Y'     67      2       221
                   24514: \0335  "
                   24515: TH     67      2       222
                   24516: \0336  "
                   24517: ss     61      2       223
                   24518: \0337  "
                   24519: a`     56      2       224
                   24520: \0340  "
                   24521: a'     56      2       225
                   24522: \0341  "
                   24523: a^     56      2       226
                   24524: \0342  "
                   24525: a~     56      2       227
                   24526: \0343  "
                   24527: a"     56      2       228
                   24528: \0344  "
                   24529: a*     56      2       229
                   24530: \0345  "
                   24531: ae     89      0       230
                   24532: \0346  "
                   24533: c,     56      1       231
                   24534: \0347  "
                   24535: e`     56      2       232
                   24536: \0350  "
                   24537: e'     56      2       233
                   24538: \0351  "
                   24539: e^     56      2       234
                   24540: \0352  "
                   24541: e"     56      2       235
                   24542: \0353  "
                   24543: i`     28      2       236
                   24544: \0354  "
                   24545: i'     28      2       237
                   24546: \0355  "
                   24547: i^     28      2       238
                   24548: \0356  "
                   24549: i"     28      2       239
                   24550: \0357  "
                   24551: d-     61      2       240
                   24552: \0360  "
                   24553: n~     61      2       241
                   24554: \0361  "
                   24555: o`     61      2       242
                   24556: \0362  "
                   24557: o'     61      2       243
                   24558: \0363  "
                   24559: o^     61      2       244
                   24560: \0364  "
                   24561: o~     61      2       245
                   24562: \0365  "
                   24563: o"     61      2       246
                   24564: \0366  "
                   24565: -:     58      0       247
                   24566: \0367  "
                   24567: o/     61      0       248
                   24568: \0370  "
                   24569: u`     61      2       249
                   24570: \0371  "
                   24571: u'     61      2       250
                   24572: \0372  "
                   24573: u^     61      2       251
                   24574: \0373  "
                   24575: u"     61      2       252
                   24576: \0374  "
                   24577: y'     56      3       253
                   24578: \0375  "
                   24579: th     61      3       254
                   24580: \0376  "
                   24581: y"     56      3       255
                   24582: \0377  "
                   24583: ^a     33      2       147
                   24584: ~a     33      2       148
                   24585: Ua     33      2       150
                   24586: .a     33      2       151
                   24587: oa     33      2       154
                   24588: "a     33      2       157
                   24589: Ca     33      1       158
                   24590: va     33      2       159
                   24591: 0707070014231123551006440057030057030000010442640522627501600002600000006152post.src/devLatin1/Hbname Hb
                   24592: fontname Helvetica-Narrow-Bold
                   24593: named in prologue
                   24594: spacewidth 23
                   24595: charset
                   24596: !      27      2       33
                   24597: "      39      2       34
                   24598: dq     "
                   24599: #      46      2       35
                   24600: $      46      3       36
                   24601: %      73      2       37
                   24602: &      59      2       38
                   24603: '      23      2       39
                   24604: (      27      3       40
                   24605: )      27      3       41
                   24606: *      32      2       42
                   24607: +      48      0       43
                   24608: ,      23      1       44
                   24609: -      27      0       173
                   24610: \0255  "
                   24611: .      23      0       46
                   24612: /      23      2       47
                   24613: 0      46      2       48
                   24614: 1      46      2       49
                   24615: 2      46      2       50
                   24616: 3      46      2       51
                   24617: 4      46      2       52
                   24618: 5      46      2       53
                   24619: 6      46      2       54
                   24620: 7      46      2       55
                   24621: 8      46      2       56
                   24622: 9      46      2       57
                   24623: :      27      0       58
                   24624: ;      27      1       59
                   24625: ---    48      0       60
                   24626: =      48      0       61
                   24627: ---    48      0       62
                   24628: ?      50      2       63
                   24629: @      80      3       64
                   24630: A      59      2       65
                   24631: B      59      2       66
                   24632: C      59      2       67
                   24633: D      59      2       68
                   24634: E      55      2       69
                   24635: F      50      2       70
                   24636: G      64      2       71
                   24637: H      59      2       72
                   24638: I      23      2       73
                   24639: J      46      2       74
                   24640: K      59      2       75
                   24641: L      50      2       76
                   24642: M      68      2       77
                   24643: N      59      2       78
                   24644: O      64      2       79
                   24645: P      55      2       80
                   24646: Q      64      2       81
                   24647: R      59      2       82
                   24648: S      55      2       83
                   24649: T      50      2       84
                   24650: U      59      2       85
                   24651: V      55      2       86
                   24652: W      77      2       87
                   24653: X      55      2       88
                   24654: Y      55      2       89
                   24655: Z      50      2       90
                   24656: [      27      3       91
                   24657: \      23      2       92
                   24658: bs     "
                   24659: ]      27      3       93
                   24660: ^      27      2       147
                   24661: ---    48      2       94
                   24662: ---    46      1       95
                   24663: `      23      2       96
                   24664: a      46      0       97
                   24665: b      50      2       98
                   24666: c      46      0       99
                   24667: d      50      2       100
                   24668: e      46      0       101
                   24669: f      27      2       102
                   24670: g      50      1       103
                   24671: h      50      2       104
                   24672: i      23      2       105
                   24673: j      23      3       106
                   24674: k      46      2       107
                   24675: l      23      2       108
                   24676: m      73      0       109
                   24677: n      50      0       110
                   24678: o      50      0       111
                   24679: p      50      1       112
                   24680: q      50      1       113
                   24681: r      32      0       114
                   24682: s      46      0       115
                   24683: t      27      2       116
                   24684: u      50      0       117
                   24685: v      46      0       118
                   24686: w      64      0       119
                   24687: x      46      0       120
                   24688: y      46      1       121
                   24689: z      41      0       122
                   24690: {      32      3       123
                   24691: ---    23      3       124
                   24692: }      32      3       125
                   24693: ~      27      2       148
                   24694: ---    48      0       126
                   24695: \`     27      2       145
                   24696: ga     "
                   24697: !!     27      1       161
                   24698: \0241  "
                   24699: c|     46      3       162
                   24700: \0242  "
                   24701: ct     "
                   24702: L-     46      2       163
                   24703: \0243  "
                   24704: ps     "
                   24705: xo     46      2       164
                   24706: \0244  "
                   24707: cr     "
                   24708: Y-     46      2       165
                   24709: \0245  "
                   24710: yn     "
                   24711: ||     23      3       166
                   24712: \0246  "
                   24713: so     46      3       167
                   24714: \0247  "
                   24715: sc     "
                   24716: ""     27      2       168
                   24717: \0250  "
                   24718: :a     "
                   24719: co     60      2       169
                   24720: \0251  "
                   24721: a_     30      2       170
                   24722: \0252  "
                   24723: <<     46      0       171
                   24724: \0253  "
                   24725: -,     48      0       172
                   24726: \0254  "
                   24727: hy     27      0       173
                   24728: \0255  "
                   24729: --     48      0       45
                   24730: ro     60      2       174
                   24731: \0256  "
                   24732: rg     "
                   24733: -^     27      2       175
                   24734: \0257  "
                   24735: -a     "
                   24736: 0^     33      2       176
                   24737: \0260  "
                   24738: +-     48      2       177
                   24739: \0261  "
                   24740: 2^     27      2       178
                   24741: \0262  "
                   24742: 3^     27      2       179
                   24743: \0263  "
                   24744: \'     27      2       180
                   24745: \0264  "
                   24746: aa     "
                   24747: /u     50      1       181
                   24748: \0265  "
                   24749: P!     46      3       182
                   24750: \0266  "
                   24751: pg     "
                   24752: .^     23      0       183
                   24753: \0267  "
                   24754: ,,     27      1       184
                   24755: \0270  "
                   24756: ,a     "
                   24757: 1^     27      2       185
                   24758: \0271  "
                   24759: o_     30      2       186
                   24760: \0272  "
                   24761: >>     46      0       187
                   24762: \0273  "
                   24763: 14     68      2       188
                   24764: \0274  "
                   24765: 12     68      2       189
                   24766: \0275  "
                   24767: 34     68      2       190
                   24768: \0276  "
                   24769: ??     50      1       191
                   24770: \0277  "
                   24771: A`     59      2       192
                   24772: \0300  "
                   24773: A'     59      2       193
                   24774: \0301  "
                   24775: A^     59      2       194
                   24776: \0302  "
                   24777: A~     59      2       195
                   24778: \0303  "
                   24779: A"     59      2       196
                   24780: \0304  "
                   24781: A*     59      2       197
                   24782: \0305  "
                   24783: AE     82      2       198
                   24784: \0306  "
                   24785: C,     59      3       199
                   24786: \0307  "
                   24787: E`     55      2       200
                   24788: \0310  "
                   24789: E'     55      2       201
                   24790: \0311  "
                   24791: E^     55      2       202
                   24792: \0312  "
                   24793: E"     55      2       203
                   24794: \0313  "
                   24795: I`     23      2       204
                   24796: \0314  "
                   24797: I'     23      2       205
                   24798: \0315  "
                   24799: I^     23      2       206
                   24800: \0316  "
                   24801: I"     23      2       207
                   24802: \0317  "
                   24803: D-     59      2       208
                   24804: \0320  "
                   24805: N~     59      2       209
                   24806: \0321  "
                   24807: O`     64      2       210
                   24808: \0322  "
                   24809: O'     64      2       211
                   24810: \0323  "
                   24811: O^     64      2       212
                   24812: \0324  "
                   24813: O~     64      2       213
                   24814: \0325  "
                   24815: O"     64      2       214
                   24816: \0326  "
                   24817: xx     48      0       215
                   24818: \0327  "
                   24819: O/     64      2       216
                   24820: \0330  "
                   24821: U`     59      2       217
                   24822: \0331  "
                   24823: U'     59      2       218
                   24824: \0332  "
                   24825: U^     59      2       219
                   24826: \0333  "
                   24827: U"     59      2       220
                   24828: \0334  "
                   24829: Y'     55      2       221
                   24830: \0335  "
                   24831: TH     55      2       222
                   24832: \0336  "
                   24833: ss     50      2       223
                   24834: \0337  "
                   24835: a`     46      2       224
                   24836: \0340  "
                   24837: a'     46      2       225
                   24838: \0341  "
                   24839: a^     46      2       226
                   24840: \0342  "
                   24841: a~     46      2       227
                   24842: \0343  "
                   24843: a"     46      2       228
                   24844: \0344  "
                   24845: a*     46      2       229
                   24846: \0345  "
                   24847: ae     73      0       230
                   24848: \0346  "
                   24849: c,     46      1       231
                   24850: \0347  "
                   24851: e`     46      2       232
                   24852: \0350  "
                   24853: e'     46      2       233
                   24854: \0351  "
                   24855: e^     46      2       234
                   24856: \0352  "
                   24857: e"     46      2       235
                   24858: \0353  "
                   24859: i`     23      2       236
                   24860: \0354  "
                   24861: i'     23      2       237
                   24862: \0355  "
                   24863: i^     23      2       238
                   24864: \0356  "
                   24865: i"     23      2       239
                   24866: \0357  "
                   24867: d-     50      2       240
                   24868: \0360  "
                   24869: n~     50      2       241
                   24870: \0361  "
                   24871: o`     50      2       242
                   24872: \0362  "
                   24873: o'     50      2       243
                   24874: \0363  "
                   24875: o^     50      2       244
                   24876: \0364  "
                   24877: o~     50      2       245
                   24878: \0365  "
                   24879: o"     50      2       246
                   24880: \0366  "
                   24881: -:     48      0       247
                   24882: \0367  "
                   24883: o/     50      0       248
                   24884: \0370  "
                   24885: u`     50      2       249
                   24886: \0371  "
                   24887: u'     50      2       250
                   24888: \0372  "
                   24889: u^     50      2       251
                   24890: \0373  "
                   24891: u"     50      2       252
                   24892: \0374  "
                   24893: y'     46      3       253
                   24894: \0375  "
                   24895: th     50      3       254
                   24896: \0376  "
                   24897: y"     46      3       255
                   24898: \0377  "
                   24899: ^a     27      2       147
                   24900: ~a     27      2       148
                   24901: Ua     27      2       150
                   24902: .a     27      2       151
                   24903: oa     27      2       154
                   24904: "a     27      2       157
                   24905: Ca     27      1       158
                   24906: va     27      2       159
                   24907: 0707070014231123561006440057030057030000010443000522627501600002600000006155post.src/devLatin1/Hiname Hi
                   24908: fontname Helvetica-Narrow-Oblique
                   24909: named in prologue
                   24910: spacewidth 23
                   24911: charset
                   24912: !      23      2       33
                   24913: "      29      2       34
                   24914: dq     "
                   24915: #      46      2       35
                   24916: $      46      3       36
                   24917: %      73      2       37
                   24918: &      55      2       38
                   24919: '      18      2       39
                   24920: (      27      3       40
                   24921: )      27      3       41
                   24922: *      32      2       42
                   24923: +      48      0       43
                   24924: ,      23      1       44
                   24925: -      27      0       173
                   24926: \0255  "
                   24927: .      23      0       46
                   24928: /      23      2       47
                   24929: 0      46      2       48
                   24930: 1      46      2       49
                   24931: 2      46      2       50
                   24932: 3      46      2       51
                   24933: 4      46      2       52
                   24934: 5      46      2       53
                   24935: 6      46      2       54
                   24936: 7      46      2       55
                   24937: 8      46      2       56
                   24938: 9      46      2       57
                   24939: :      23      0       58
                   24940: ;      23      1       59
                   24941: ---    48      0       60
                   24942: =      48      0       61
                   24943: ---    48      0       62
                   24944: ?      46      2       63
                   24945: @      83      3       64
                   24946: A      55      2       65
                   24947: B      55      2       66
                   24948: C      59      2       67
                   24949: D      59      2       68
                   24950: E      55      2       69
                   24951: F      50      2       70
                   24952: G      64      2       71
                   24953: H      59      2       72
                   24954: I      23      2       73
                   24955: J      41      2       74
                   24956: K      55      2       75
                   24957: L      46      2       76
                   24958: M      68      2       77
                   24959: N      59      2       78
                   24960: O      64      2       79
                   24961: P      55      2       80
                   24962: Q      64      2       81
                   24963: R      59      2       82
                   24964: S      55      2       83
                   24965: T      50      2       84
                   24966: U      59      2       85
                   24967: V      55      2       86
                   24968: W      77      2       87
                   24969: X      55      2       88
                   24970: Y      55      2       89
                   24971: Z      50      2       90
                   24972: [      23      3       91
                   24973: \      23      2       92
                   24974: bs     "
                   24975: ]      23      3       93
                   24976: ^      27      2       147
                   24977: ---    38      2       94
                   24978: ---    46      1       95
                   24979: `      18      2       96
                   24980: a      46      0       97
                   24981: b      46      2       98
                   24982: c      41      0       99
                   24983: d      46      2       100
                   24984: e      46      0       101
                   24985: f      23      2       102
                   24986: g      46      1       103
                   24987: h      46      2       104
                   24988: i      18      2       105
                   24989: j      18      3       106
                   24990: k      41      2       107
                   24991: l      18      2       108
                   24992: m      68      0       109
                   24993: n      46      0       110
                   24994: o      46      0       111
                   24995: p      46      1       112
                   24996: q      46      1       113
                   24997: r      27      0       114
                   24998: s      41      0       115
                   24999: t      23      2       116
                   25000: u      46      0       117
                   25001: v      41      0       118
                   25002: w      59      0       119
                   25003: x      41      0       120
                   25004: y      41      1       121
                   25005: z      41      0       122
                   25006: {      27      3       123
                   25007: ---    21      3       124
                   25008: }      27      3       125
                   25009: ~      27      2       148
                   25010: ---    48      0       126
                   25011: \`     27      2       145
                   25012: ga     "
                   25013: !!     27      1       161
                   25014: \0241  "
                   25015: c|     46      3       162
                   25016: \0242  "
                   25017: ct     "
                   25018: L-     46      2       163
                   25019: \0243  "
                   25020: ps     "
                   25021: xo     46      0       164
                   25022: \0244  "
                   25023: cr     "
                   25024: Y-     46      2       165
                   25025: \0245  "
                   25026: yn     "
                   25027: ||     21      3       166
                   25028: \0246  "
                   25029: so     46      3       167
                   25030: \0247  "
                   25031: sc     "
                   25032: ""     27      2       168
                   25033: \0250  "
                   25034: :a     "
                   25035: co     60      2       169
                   25036: \0251  "
                   25037: a_     30      2       170
                   25038: \0252  "
                   25039: <<     46      0       171
                   25040: \0253  "
                   25041: -,     48      0       172
                   25042: \0254  "
                   25043: hy     27      0       173
                   25044: \0255  "
                   25045: --     48      0       45
                   25046: ro     60      2       174
                   25047: \0256  "
                   25048: rg     "
                   25049: -^     27      2       175
                   25050: \0257  "
                   25051: -a     "
                   25052: 0^     33      2       176
                   25053: \0260  "
                   25054: +-     48      2       177
                   25055: \0261  "
                   25056: 2^     27      2       178
                   25057: \0262  "
                   25058: 3^     27      2       179
                   25059: \0263  "
                   25060: \'     27      2       180
                   25061: \0264  "
                   25062: aa     "
                   25063: /u     46      1       181
                   25064: \0265  "
                   25065: P!     44      3       182
                   25066: \0266  "
                   25067: pg     "
                   25068: .^     23      0       183
                   25069: \0267  "
                   25070: ,,     27      1       184
                   25071: \0270  "
                   25072: ,a     "
                   25073: 1^     27      2       185
                   25074: \0271  "
                   25075: o_     30      2       186
                   25076: \0272  "
                   25077: >>     46      0       187
                   25078: \0273  "
                   25079: 14     68      2       188
                   25080: \0274  "
                   25081: 12     68      2       189
                   25082: \0275  "
                   25083: 34     68      2       190
                   25084: \0276  "
                   25085: ??     50      1       191
                   25086: \0277  "
                   25087: A`     55      2       192
                   25088: \0300  "
                   25089: A'     55      2       193
                   25090: \0301  "
                   25091: A^     55      2       194
                   25092: \0302  "
                   25093: A~     55      2       195
                   25094: \0303  "
                   25095: A"     55      2       196
                   25096: \0304  "
                   25097: A*     55      2       197
                   25098: \0305  "
                   25099: AE     82      2       198
                   25100: \0306  "
                   25101: C,     59      3       199
                   25102: \0307  "
                   25103: E`     55      2       200
                   25104: \0310  "
                   25105: E'     55      2       201
                   25106: \0311  "
                   25107: E^     55      2       202
                   25108: \0312  "
                   25109: E"     55      2       203
                   25110: \0313  "
                   25111: I`     23      2       204
                   25112: \0314  "
                   25113: I'     23      2       205
                   25114: \0315  "
                   25115: I^     23      2       206
                   25116: \0316  "
                   25117: I"     23      2       207
                   25118: \0317  "
                   25119: D-     59      2       208
                   25120: \0320  "
                   25121: N~     59      2       209
                   25122: \0321  "
                   25123: O`     64      2       210
                   25124: \0322  "
                   25125: O'     64      2       211
                   25126: \0323  "
                   25127: O^     64      2       212
                   25128: \0324  "
                   25129: O~     64      2       213
                   25130: \0325  "
                   25131: O"     64      2       214
                   25132: \0326  "
                   25133: xx     48      0       215
                   25134: \0327  "
                   25135: O/     64      2       216
                   25136: \0330  "
                   25137: U`     59      2       217
                   25138: \0331  "
                   25139: U'     59      2       218
                   25140: \0332  "
                   25141: U^     59      2       219
                   25142: \0333  "
                   25143: U"     59      2       220
                   25144: \0334  "
                   25145: Y'     55      2       221
                   25146: \0335  "
                   25147: TH     55      2       222
                   25148: \0336  "
                   25149: ss     50      2       223
                   25150: \0337  "
                   25151: a`     46      2       224
                   25152: \0340  "
                   25153: a'     46      2       225
                   25154: \0341  "
                   25155: a^     46      2       226
                   25156: \0342  "
                   25157: a~     46      2       227
                   25158: \0343  "
                   25159: a"     46      2       228
                   25160: \0344  "
                   25161: a*     46      2       229
                   25162: \0345  "
                   25163: ae     73      0       230
                   25164: \0346  "
                   25165: c,     41      1       231
                   25166: \0347  "
                   25167: e`     46      2       232
                   25168: \0350  "
                   25169: e'     46      2       233
                   25170: \0351  "
                   25171: e^     46      2       234
                   25172: \0352  "
                   25173: e"     46      2       235
                   25174: \0353  "
                   25175: i`     23      2       236
                   25176: \0354  "
                   25177: i'     23      2       237
                   25178: \0355  "
                   25179: i^     23      2       238
                   25180: \0356  "
                   25181: i"     23      2       239
                   25182: \0357  "
                   25183: d-     46      2       240
                   25184: \0360  "
                   25185: n~     46      2       241
                   25186: \0361  "
                   25187: o`     46      2       242
                   25188: \0362  "
                   25189: o'     46      2       243
                   25190: \0363  "
                   25191: o^     46      2       244
                   25192: \0364  "
                   25193: o~     46      2       245
                   25194: \0365  "
                   25195: o"     46      2       246
                   25196: \0366  "
                   25197: -:     48      0       247
                   25198: \0367  "
                   25199: o/     50      0       248
                   25200: \0370  "
                   25201: u`     46      2       249
                   25202: \0371  "
                   25203: u'     46      2       250
                   25204: \0372  "
                   25205: u^     46      2       251
                   25206: \0373  "
                   25207: u"     46      2       252
                   25208: \0374  "
                   25209: y'     41      3       253
                   25210: \0375  "
                   25211: th     46      3       254
                   25212: \0376  "
                   25213: y"     41      3       255
                   25214: \0377  "
                   25215: ^a     27      2       147
                   25216: ~a     27      2       148
                   25217: Ua     27      2       150
                   25218: .a     27      2       151
                   25219: oa     27      2       154
                   25220: "a     27      2       157
                   25221: Ca     27      1       158
                   25222: va     27      2       159
                   25223: 0707070014231123571006440057030057030000010443040522627501600002600000006145post.src/devLatin1/Hrname Hr
                   25224: fontname Helvetica-Narrow
                   25225: named in prologue
                   25226: spacewidth 23
                   25227: charset
                   25228: !      23      2       33
                   25229: "      29      2       34
                   25230: dq     "
                   25231: #      46      2       35
                   25232: $      46      3       36
                   25233: %      73      2       37
                   25234: &      55      2       38
                   25235: '      18      2       39
                   25236: (      27      3       40
                   25237: )      27      3       41
                   25238: *      32      2       42
                   25239: +      48      0       43
                   25240: ,      23      1       44
                   25241: -      27      0       173
                   25242: \0255  "
                   25243: .      23      0       46
                   25244: /      23      2       47
                   25245: 0      46      2       48
                   25246: 1      46      2       49
                   25247: 2      46      2       50
                   25248: 3      46      2       51
                   25249: 4      46      2       52
                   25250: 5      46      2       53
                   25251: 6      46      2       54
                   25252: 7      46      2       55
                   25253: 8      46      2       56
                   25254: 9      46      2       57
                   25255: :      23      0       58
                   25256: ;      23      1       59
                   25257: ---    48      0       60
                   25258: =      48      0       61
                   25259: ---    48      0       62
                   25260: ?      46      2       63
                   25261: @      83      3       64
                   25262: A      55      2       65
                   25263: B      55      2       66
                   25264: C      59      2       67
                   25265: D      59      2       68
                   25266: E      55      2       69
                   25267: F      50      2       70
                   25268: G      64      2       71
                   25269: H      59      2       72
                   25270: I      23      2       73
                   25271: J      41      2       74
                   25272: K      55      2       75
                   25273: L      46      2       76
                   25274: M      68      2       77
                   25275: N      59      2       78
                   25276: O      64      2       79
                   25277: P      55      2       80
                   25278: Q      64      2       81
                   25279: R      59      2       82
                   25280: S      55      2       83
                   25281: T      50      2       84
                   25282: U      59      2       85
                   25283: V      55      2       86
                   25284: W      77      2       87
                   25285: X      55      2       88
                   25286: Y      55      2       89
                   25287: Z      50      2       90
                   25288: [      23      3       91
                   25289: \      23      2       92
                   25290: bs     "
                   25291: ]      23      3       93
                   25292: ^      27      2       147
                   25293: ---    38      2       94
                   25294: ---    46      1       95
                   25295: `      18      2       96
                   25296: a      46      0       97
                   25297: b      46      2       98
                   25298: c      41      0       99
                   25299: d      46      2       100
                   25300: e      46      0       101
                   25301: f      23      2       102
                   25302: g      46      1       103
                   25303: h      46      2       104
                   25304: i      18      2       105
                   25305: j      18      3       106
                   25306: k      41      2       107
                   25307: l      18      2       108
                   25308: m      68      0       109
                   25309: n      46      0       110
                   25310: o      46      0       111
                   25311: p      46      1       112
                   25312: q      46      1       113
                   25313: r      27      0       114
                   25314: s      41      0       115
                   25315: t      23      2       116
                   25316: u      46      0       117
                   25317: v      41      0       118
                   25318: w      59      0       119
                   25319: x      41      0       120
                   25320: y      41      1       121
                   25321: z      41      0       122
                   25322: {      27      3       123
                   25323: ---    21      3       124
                   25324: }      27      3       125
                   25325: ~      27      2       148
                   25326: ---    48      0       126
                   25327: \`     27      2       145
                   25328: ga     "
                   25329: !!     27      1       161
                   25330: \0241  "
                   25331: c|     46      3       162
                   25332: \0242  "
                   25333: ct     "
                   25334: L-     46      2       163
                   25335: \0243  "
                   25336: ps     "
                   25337: xo     46      0       164
                   25338: \0244  "
                   25339: cr     "
                   25340: Y-     46      2       165
                   25341: \0245  "
                   25342: yn     "
                   25343: ||     21      3       166
                   25344: \0246  "
                   25345: so     46      3       167
                   25346: \0247  "
                   25347: sc     "
                   25348: ""     27      2       168
                   25349: \0250  "
                   25350: :a     "
                   25351: co     60      2       169
                   25352: \0251  "
                   25353: a_     30      2       170
                   25354: \0252  "
                   25355: <<     46      0       171
                   25356: \0253  "
                   25357: -,     48      0       172
                   25358: \0254  "
                   25359: hy     27      0       173
                   25360: \0255  "
                   25361: --     48      0       45
                   25362: ro     60      2       174
                   25363: \0256  "
                   25364: rg     "
                   25365: -^     27      2       175
                   25366: \0257  "
                   25367: -a     "
                   25368: 0^     33      2       176
                   25369: \0260  "
                   25370: +-     48      2       177
                   25371: \0261  "
                   25372: 2^     27      2       178
                   25373: \0262  "
                   25374: 3^     27      2       179
                   25375: \0263  "
                   25376: \'     27      2       180
                   25377: \0264  "
                   25378: aa     "
                   25379: /u     46      1       181
                   25380: \0265  "
                   25381: P!     44      3       182
                   25382: \0266  "
                   25383: pg     "
                   25384: .^     23      0       183
                   25385: \0267  "
                   25386: ,,     27      1       184
                   25387: \0270  "
                   25388: ,a     "
                   25389: 1^     27      2       185
                   25390: \0271  "
                   25391: o_     30      2       186
                   25392: \0272  "
                   25393: >>     46      0       187
                   25394: \0273  "
                   25395: 14     68      2       188
                   25396: \0274  "
                   25397: 12     68      2       189
                   25398: \0275  "
                   25399: 34     68      2       190
                   25400: \0276  "
                   25401: ??     50      1       191
                   25402: \0277  "
                   25403: A`     55      2       192
                   25404: \0300  "
                   25405: A'     55      2       193
                   25406: \0301  "
                   25407: A^     55      2       194
                   25408: \0302  "
                   25409: A~     55      2       195
                   25410: \0303  "
                   25411: A"     55      2       196
                   25412: \0304  "
                   25413: A*     55      2       197
                   25414: \0305  "
                   25415: AE     82      2       198
                   25416: \0306  "
                   25417: C,     59      3       199
                   25418: \0307  "
                   25419: E`     55      2       200
                   25420: \0310  "
                   25421: E'     55      2       201
                   25422: \0311  "
                   25423: E^     55      2       202
                   25424: \0312  "
                   25425: E"     55      2       203
                   25426: \0313  "
                   25427: I`     23      2       204
                   25428: \0314  "
                   25429: I'     23      2       205
                   25430: \0315  "
                   25431: I^     23      2       206
                   25432: \0316  "
                   25433: I"     23      2       207
                   25434: \0317  "
                   25435: D-     59      2       208
                   25436: \0320  "
                   25437: N~     59      2       209
                   25438: \0321  "
                   25439: O`     64      2       210
                   25440: \0322  "
                   25441: O'     64      2       211
                   25442: \0323  "
                   25443: O^     64      2       212
                   25444: \0324  "
                   25445: O~     64      2       213
                   25446: \0325  "
                   25447: O"     64      2       214
                   25448: \0326  "
                   25449: xx     48      0       215
                   25450: \0327  "
                   25451: O/     64      2       216
                   25452: \0330  "
                   25453: U`     59      2       217
                   25454: \0331  "
                   25455: U'     59      2       218
                   25456: \0332  "
                   25457: U^     59      2       219
                   25458: \0333  "
                   25459: U"     59      2       220
                   25460: \0334  "
                   25461: Y'     55      2       221
                   25462: \0335  "
                   25463: TH     55      2       222
                   25464: \0336  "
                   25465: ss     50      2       223
                   25466: \0337  "
                   25467: a`     46      2       224
                   25468: \0340  "
                   25469: a'     46      2       225
                   25470: \0341  "
                   25471: a^     46      2       226
                   25472: \0342  "
                   25473: a~     46      2       227
                   25474: \0343  "
                   25475: a"     46      2       228
                   25476: \0344  "
                   25477: a*     46      2       229
                   25478: \0345  "
                   25479: ae     73      0       230
                   25480: \0346  "
                   25481: c,     41      1       231
                   25482: \0347  "
                   25483: e`     46      2       232
                   25484: \0350  "
                   25485: e'     46      2       233
                   25486: \0351  "
                   25487: e^     46      2       234
                   25488: \0352  "
                   25489: e"     46      2       235
                   25490: \0353  "
                   25491: i`     23      2       236
                   25492: \0354  "
                   25493: i'     23      2       237
                   25494: \0355  "
                   25495: i^     23      2       238
                   25496: \0356  "
                   25497: i"     23      2       239
                   25498: \0357  "
                   25499: d-     46      2       240
                   25500: \0360  "
                   25501: n~     46      2       241
                   25502: \0361  "
                   25503: o`     46      2       242
                   25504: \0362  "
                   25505: o'     46      2       243
                   25506: \0363  "
                   25507: o^     46      2       244
                   25508: \0364  "
                   25509: o~     46      2       245
                   25510: \0365  "
                   25511: o"     46      2       246
                   25512: \0366  "
                   25513: -:     48      0       247
                   25514: \0367  "
                   25515: o/     50      0       248
                   25516: \0370  "
                   25517: u`     46      2       249
                   25518: \0371  "
                   25519: u'     46      2       250
                   25520: \0372  "
                   25521: u^     46      2       251
                   25522: \0373  "
                   25523: u"     46      2       252
                   25524: \0374  "
                   25525: y'     41      3       253
                   25526: \0375  "
                   25527: th     46      3       254
                   25528: \0376  "
                   25529: y"     41      3       255
                   25530: \0377  "
                   25531: ^a     27      2       147
                   25532: ~a     27      2       148
                   25533: Ua     27      2       150
                   25534: .a     27      2       151
                   25535: oa     27      2       154
                   25536: "a     27      2       157
                   25537: Ca     27      1       158
                   25538: va     27      2       159
                   25539: 0707070014231123601006440057030057030000010443200522627501600002600000006161post.src/devLatin1/Hxname Hx
                   25540: fontname Helvetica-Narrow-BoldOblique
                   25541: named in prologue
                   25542: spacewidth 23
                   25543: charset
                   25544: !      27      2       33
                   25545: "      39      2       34
                   25546: dq     "
                   25547: #      46      2       35
                   25548: $      46      3       36
                   25549: %      73      2       37
                   25550: &      59      2       38
                   25551: '      23      2       39
                   25552: (      27      3       40
                   25553: )      27      3       41
                   25554: *      32      2       42
                   25555: +      48      0       43
                   25556: ,      23      1       44
                   25557: -      27      0       173
                   25558: \0255  "
                   25559: .      23      0       46
                   25560: /      23      2       47
                   25561: 0      46      2       48
                   25562: 1      46      2       49
                   25563: 2      46      2       50
                   25564: 3      46      2       51
                   25565: 4      46      2       52
                   25566: 5      46      2       53
                   25567: 6      46      2       54
                   25568: 7      46      2       55
                   25569: 8      46      2       56
                   25570: 9      46      2       57
                   25571: :      27      0       58
                   25572: ;      27      1       59
                   25573: ---    48      0       60
                   25574: =      48      0       61
                   25575: ---    48      0       62
                   25576: ?      50      2       63
                   25577: @      80      3       64
                   25578: A      59      2       65
                   25579: B      59      2       66
                   25580: C      59      2       67
                   25581: D      59      2       68
                   25582: E      55      2       69
                   25583: F      50      2       70
                   25584: G      64      2       71
                   25585: H      59      2       72
                   25586: I      23      2       73
                   25587: J      46      2       74
                   25588: K      59      2       75
                   25589: L      50      2       76
                   25590: M      68      2       77
                   25591: N      59      2       78
                   25592: O      64      2       79
                   25593: P      55      2       80
                   25594: Q      64      2       81
                   25595: R      59      2       82
                   25596: S      55      2       83
                   25597: T      50      2       84
                   25598: U      59      2       85
                   25599: V      55      2       86
                   25600: W      77      2       87
                   25601: X      55      2       88
                   25602: Y      55      2       89
                   25603: Z      50      2       90
                   25604: [      27      3       91
                   25605: \      23      2       92
                   25606: bs     "
                   25607: ]      27      3       93
                   25608: ^      27      2       147
                   25609: ---    48      2       94
                   25610: ---    46      1       95
                   25611: `      23      2       96
                   25612: a      46      0       97
                   25613: b      50      2       98
                   25614: c      46      0       99
                   25615: d      50      2       100
                   25616: e      46      0       101
                   25617: f      27      2       102
                   25618: g      50      1       103
                   25619: h      50      2       104
                   25620: i      23      2       105
                   25621: j      23      3       106
                   25622: k      46      2       107
                   25623: l      23      2       108
                   25624: m      73      0       109
                   25625: n      50      0       110
                   25626: o      50      0       111
                   25627: p      50      1       112
                   25628: q      50      1       113
                   25629: r      32      0       114
                   25630: s      46      0       115
                   25631: t      27      2       116
                   25632: u      50      0       117
                   25633: v      46      0       118
                   25634: w      64      0       119
                   25635: x      46      0       120
                   25636: y      46      1       121
                   25637: z      41      0       122
                   25638: {      32      3       123
                   25639: ---    23      3       124
                   25640: }      32      3       125
                   25641: ~      27      2       148
                   25642: ---    48      0       126
                   25643: \`     27      2       145
                   25644: ga     "
                   25645: !!     27      1       161
                   25646: \0241  "
                   25647: c|     46      3       162
                   25648: \0242  "
                   25649: ct     "
                   25650: L-     46      2       163
                   25651: \0243  "
                   25652: ps     "
                   25653: xo     46      2       164
                   25654: \0244  "
                   25655: cr     "
                   25656: Y-     46      2       165
                   25657: \0245  "
                   25658: yn     "
                   25659: ||     23      3       166
                   25660: \0246  "
                   25661: so     46      3       167
                   25662: \0247  "
                   25663: sc     "
                   25664: ""     27      2       168
                   25665: \0250  "
                   25666: :a     "
                   25667: co     60      2       169
                   25668: \0251  "
                   25669: a_     30      2       170
                   25670: \0252  "
                   25671: <<     46      0       171
                   25672: \0253  "
                   25673: -,     48      0       172
                   25674: \0254  "
                   25675: hy     27      0       173
                   25676: \0255  "
                   25677: --     48      0       45
                   25678: ro     60      2       174
                   25679: \0256  "
                   25680: rg     "
                   25681: -^     27      2       175
                   25682: \0257  "
                   25683: -a     "
                   25684: 0^     33      2       176
                   25685: \0260  "
                   25686: +-     48      2       177
                   25687: \0261  "
                   25688: 2^     27      2       178
                   25689: \0262  "
                   25690: 3^     27      2       179
                   25691: \0263  "
                   25692: \'     27      2       180
                   25693: \0264  "
                   25694: aa     "
                   25695: /u     50      1       181
                   25696: \0265  "
                   25697: P!     46      3       182
                   25698: \0266  "
                   25699: pg     "
                   25700: .^     23      0       183
                   25701: \0267  "
                   25702: ,,     27      1       184
                   25703: \0270  "
                   25704: ,a     "
                   25705: 1^     27      2       185
                   25706: \0271  "
                   25707: o_     30      2       186
                   25708: \0272  "
                   25709: >>     46      0       187
                   25710: \0273  "
                   25711: 14     68      2       188
                   25712: \0274  "
                   25713: 12     68      2       189
                   25714: \0275  "
                   25715: 34     68      2       190
                   25716: \0276  "
                   25717: ??     50      1       191
                   25718: \0277  "
                   25719: A`     59      2       192
                   25720: \0300  "
                   25721: A'     59      2       193
                   25722: \0301  "
                   25723: A^     59      2       194
                   25724: \0302  "
                   25725: A~     59      2       195
                   25726: \0303  "
                   25727: A"     59      2       196
                   25728: \0304  "
                   25729: A*     59      2       197
                   25730: \0305  "
                   25731: AE     82      2       198
                   25732: \0306  "
                   25733: C,     59      3       199
                   25734: \0307  "
                   25735: E`     55      2       200
                   25736: \0310  "
                   25737: E'     55      2       201
                   25738: \0311  "
                   25739: E^     55      2       202
                   25740: \0312  "
                   25741: E"     55      2       203
                   25742: \0313  "
                   25743: I`     23      2       204
                   25744: \0314  "
                   25745: I'     23      2       205
                   25746: \0315  "
                   25747: I^     23      2       206
                   25748: \0316  "
                   25749: I"     23      2       207
                   25750: \0317  "
                   25751: D-     59      2       208
                   25752: \0320  "
                   25753: N~     59      2       209
                   25754: \0321  "
                   25755: O`     64      2       210
                   25756: \0322  "
                   25757: O'     64      2       211
                   25758: \0323  "
                   25759: O^     64      2       212
                   25760: \0324  "
                   25761: O~     64      2       213
                   25762: \0325  "
                   25763: O"     64      2       214
                   25764: \0326  "
                   25765: xx     48      0       215
                   25766: \0327  "
                   25767: O/     64      2       216
                   25768: \0330  "
                   25769: U`     59      2       217
                   25770: \0331  "
                   25771: U'     59      2       218
                   25772: \0332  "
                   25773: U^     59      2       219
                   25774: \0333  "
                   25775: U"     59      2       220
                   25776: \0334  "
                   25777: Y'     55      2       221
                   25778: \0335  "
                   25779: TH     55      2       222
                   25780: \0336  "
                   25781: ss     50      2       223
                   25782: \0337  "
                   25783: a`     46      2       224
                   25784: \0340  "
                   25785: a'     46      2       225
                   25786: \0341  "
                   25787: a^     46      2       226
                   25788: \0342  "
                   25789: a~     46      2       227
                   25790: \0343  "
                   25791: a"     46      2       228
                   25792: \0344  "
                   25793: a*     46      2       229
                   25794: \0345  "
                   25795: ae     73      0       230
                   25796: \0346  "
                   25797: c,     46      1       231
                   25798: \0347  "
                   25799: e`     46      2       232
                   25800: \0350  "
                   25801: e'     46      2       233
                   25802: \0351  "
                   25803: e^     46      2       234
                   25804: \0352  "
                   25805: e"     46      2       235
                   25806: \0353  "
                   25807: i`     23      2       236
                   25808: \0354  "
                   25809: i'     23      2       237
                   25810: \0355  "
                   25811: i^     23      2       238
                   25812: \0356  "
                   25813: i"     23      2       239
                   25814: \0357  "
                   25815: d-     50      2       240
                   25816: \0360  "
                   25817: n~     50      2       241
                   25818: \0361  "
                   25819: o`     50      2       242
                   25820: \0362  "
                   25821: o'     50      2       243
                   25822: \0363  "
                   25823: o^     50      2       244
                   25824: \0364  "
                   25825: o~     50      2       245
                   25826: \0365  "
                   25827: o"     50      2       246
                   25828: \0366  "
                   25829: -:     48      0       247
                   25830: \0367  "
                   25831: o/     50      0       248
                   25832: \0370  "
                   25833: u`     50      2       249
                   25834: \0371  "
                   25835: u'     50      2       250
                   25836: \0372  "
                   25837: u^     50      2       251
                   25838: \0373  "
                   25839: u"     50      2       252
                   25840: \0374  "
                   25841: y'     46      3       253
                   25842: \0375  "
                   25843: th     50      3       254
                   25844: \0376  "
                   25845: y"     46      3       255
                   25846: \0377  "
                   25847: ^a     27      2       147
                   25848: ~a     27      2       148
                   25849: Ua     27      2       150
                   25850: .a     27      2       151
                   25851: oa     27      2       154
                   25852: "a     27      2       157
                   25853: Ca     27      1       158
                   25854: va     27      2       159
                   25855: 0707070014231123611006440057030057030000010443240522627501600002600000006143post.src/devLatin1/KBname KB
                   25856: fontname Bookman-Demi
                   25857: named in prologue
                   25858: spacewidth 34
                   25859: charset
                   25860: !      36      2       33
                   25861: "      42      2       34
                   25862: dq     "
                   25863: #      60      2       35
                   25864: $      66      3       36
                   25865: %      94      2       37
                   25866: &      80      2       38
                   25867: '      32      2       39
                   25868: (      32      3       40
                   25869: )      32      3       41
                   25870: *      46      2       42
                   25871: +      60      0       43
                   25872: ,      34      1       44
                   25873: -      36      0       173
                   25874: \0255  "
                   25875: .      34      0       46
                   25876: /      60      3       47
                   25877: 0      66      2       48
                   25878: 1      66      2       49
                   25879: 2      66      2       50
                   25880: 3      66      2       51
                   25881: 4      66      2       52
                   25882: 5      66      2       53
                   25883: 6      66      2       54
                   25884: 7      66      2       55
                   25885: 8      66      2       56
                   25886: 9      66      2       57
                   25887: :      34      0       58
                   25888: ;      34      1       59
                   25889: ---    60      0       60
                   25890: =      60      0       61
                   25891: ---    60      0       62
                   25892: ?      66      2       63
                   25893: @      82      2       64
                   25894: A      72      2       65
                   25895: B      72      2       66
                   25896: C      74      2       67
                   25897: D      78      2       68
                   25898: E      72      2       69
                   25899: F      68      2       70
                   25900: G      78      2       71
                   25901: H      82      2       72
                   25902: I      40      2       73
                   25903: J      64      2       74
                   25904: K      80      2       75
                   25905: L      64      2       76
                   25906: M      94      2       77
                   25907: N      74      2       78
                   25908: O      80      2       79
                   25909: P      66      2       80
                   25910: Q      80      3       81
                   25911: R      78      2       82
                   25912: S      66      2       83
                   25913: T      70      2       84
                   25914: U      74      2       85
                   25915: V      72      2       86
                   25916: W      94      2       87
                   25917: X      78      2       88
                   25918: Y      70      2       89
                   25919: Z      64      2       90
                   25920: [      30      3       91
                   25921: \      60      2       92
                   25922: bs     "
                   25923: ]      30      3       93
                   25924: ^      50      2       147
                   25925: ---    60      2       94
                   25926: ---    50      1       95
                   25927: `      32      2       96
                   25928: a      58      0       97
                   25929: b      60      2       98
                   25930: c      58      0       99
                   25931: d      64      2       100
                   25932: e      58      0       101
                   25933: f      38      2       102
                   25934: g      58      3       103
                   25935: h      68      2       104
                   25936: i      36      2       105
                   25937: j      34      3       106
                   25938: k      66      2       107
                   25939: l      34      2       108
                   25940: m      100     0       109
                   25941: n      68      0       110
                   25942: o      62      0       111
                   25943: p      64      1       112
                   25944: q      62      1       113
                   25945: r      46      0       114
                   25946: s      52      0       115
                   25947: t      46      2       116
                   25948: u      66      0       117
                   25949: v      60      0       118
                   25950: w      80      0       119
                   25951: x      60      0       120
                   25952: y      62      1       121
                   25953: z      56      0       122
                   25954: {      32      3       123
                   25955: ---    60      2       124
                   25956: }      32      3       125
                   25957: ~      48      2       148
                   25958: ---    60      0       126
                   25959: \`     40      2       145
                   25960: ga     "
                   25961: !!     36      1       161
                   25962: \0241  "
                   25963: c|     66      2       162
                   25964: \0242  "
                   25965: ct     "
                   25966: L-     66      2       163
                   25967: \0243  "
                   25968: ps     "
                   25969: xo     60      2       164
                   25970: \0244  "
                   25971: cr     "
                   25972: Y-     66      2       165
                   25973: \0245  "
                   25974: yn     "
                   25975: ||     60      2       166
                   25976: \0246  "
                   25977: so     60      3       167
                   25978: \0247  "
                   25979: sc     "
                   25980: ""     50      2       168
                   25981: \0250  "
                   25982: :a     "
                   25983: co     74      2       169
                   25984: \0251  "
                   25985: a_     40      2       170
                   25986: \0252  "
                   25987: <<     40      0       171
                   25988: \0253  "
                   25989: -,     60      0       172
                   25990: \0254  "
                   25991: hy     36      0       173
                   25992: \0255  "
                   25993: --     60      0       45
                   25994: ro     74      2       174
                   25995: \0256  "
                   25996: rg     "
                   25997: -^     46      2       175
                   25998: \0257  "
                   25999: -a     "
                   26000: 0^     40      2       176
                   26001: \0260  "
                   26002: +-     60      0       177
                   26003: \0261  "
                   26004: 2^     40      2       178
                   26005: \0262  "
                   26006: 3^     40      2       179
                   26007: \0263  "
                   26008: \'     40      2       180
                   26009: \0264  "
                   26010: aa     "
                   26011: /u     66      1       181
                   26012: \0265  "
                   26013: P!     80      2       182
                   26014: \0266  "
                   26015: pg     "
                   26016: .^     34      0       183
                   26017: \0267  "
                   26018: ,,     36      1       184
                   26019: \0270  "
                   26020: ,a     "
                   26021: 1^     40      2       185
                   26022: \0271  "
                   26023: o_     40      2       186
                   26024: \0272  "
                   26025: >>     40      0       187
                   26026: \0273  "
                   26027: 14     99      2       188
                   26028: \0274  "
                   26029: 12     99      2       189
                   26030: \0275  "
                   26031: 34     99      2       190
                   26032: \0276  "
                   26033: ??     66      1       191
                   26034: \0277  "
                   26035: A`     72      2       192
                   26036: \0300  "
                   26037: A'     72      2       193
                   26038: \0301  "
                   26039: A^     72      2       194
                   26040: \0302  "
                   26041: A~     72      2       195
                   26042: \0303  "
                   26043: A"     72      2       196
                   26044: \0304  "
                   26045: A*     72      2       197
                   26046: \0305  "
                   26047: AE     114     2       198
                   26048: \0306  "
                   26049: C,     74      3       199
                   26050: \0307  "
                   26051: E`     72      2       200
                   26052: \0310  "
                   26053: E'     72      2       201
                   26054: \0311  "
                   26055: E^     72      2       202
                   26056: \0312  "
                   26057: E"     72      2       203
                   26058: \0313  "
                   26059: I`     40      2       204
                   26060: \0314  "
                   26061: I'     40      2       205
                   26062: \0315  "
                   26063: I^     40      2       206
                   26064: \0316  "
                   26065: I"     40      2       207
                   26066: \0317  "
                   26067: D-     78      2       208
                   26068: \0320  "
                   26069: N~     74      2       209
                   26070: \0321  "
                   26071: O`     80      2       210
                   26072: \0322  "
                   26073: O'     80      2       211
                   26074: \0323  "
                   26075: O^     80      2       212
                   26076: \0324  "
                   26077: O~     80      2       213
                   26078: \0325  "
                   26079: O"     80      2       214
                   26080: \0326  "
                   26081: xx     60      0       215
                   26082: \0327  "
                   26083: O/     80      3       216
                   26084: \0330  "
                   26085: U`     74      2       217
                   26086: \0331  "
                   26087: U'     74      2       218
                   26088: \0332  "
                   26089: U^     74      2       219
                   26090: \0333  "
                   26091: U"     74      2       220
                   26092: \0334  "
                   26093: Y'     70      2       221
                   26094: \0335  "
                   26095: TH     66      2       222
                   26096: \0336  "
                   26097: ss     66      2       223
                   26098: \0337  "
                   26099: a`     58      2       224
                   26100: \0340  "
                   26101: a'     58      2       225
                   26102: \0341  "
                   26103: a^     58      2       226
                   26104: \0342  "
                   26105: a~     58      2       227
                   26106: \0343  "
                   26107: a"     58      2       228
                   26108: \0344  "
                   26109: a*     58      2       229
                   26110: \0345  "
                   26111: ae     88      0       230
                   26112: \0346  "
                   26113: c,     58      1       231
                   26114: \0347  "
                   26115: e`     58      2       232
                   26116: \0350  "
                   26117: e'     58      2       233
                   26118: \0351  "
                   26119: e^     58      2       234
                   26120: \0352  "
                   26121: e"     58      2       235
                   26122: \0353  "
                   26123: i`     36      2       236
                   26124: \0354  "
                   26125: i'     36      2       237
                   26126: \0355  "
                   26127: i^     36      2       238
                   26128: \0356  "
                   26129: i"     36      2       239
                   26130: \0357  "
                   26131: d-     62      2       240
                   26132: \0360  "
                   26133: n~     68      2       241
                   26134: \0361  "
                   26135: o`     62      2       242
                   26136: \0362  "
                   26137: o'     62      2       243
                   26138: \0363  "
                   26139: o^     62      2       244
                   26140: \0364  "
                   26141: o~     62      2       245
                   26142: \0365  "
                   26143: o"     62      2       246
                   26144: \0366  "
                   26145: -:     60      0       247
                   26146: \0367  "
                   26147: o/     62      0       248
                   26148: \0370  "
                   26149: u`     66      2       249
                   26150: \0371  "
                   26151: u'     66      2       250
                   26152: \0372  "
                   26153: u^     66      2       251
                   26154: \0373  "
                   26155: u"     66      2       252
                   26156: \0374  "
                   26157: y'     62      3       253
                   26158: \0375  "
                   26159: th     64      3       254
                   26160: \0376  "
                   26161: y"     62      3       255
                   26162: \0377  "
                   26163: ^a     50      2       147
                   26164: ~a     48      2       148
                   26165: Ua     50      2       150
                   26166: .a     32      2       151
                   26167: oa     34      2       154
                   26168: "a     44      2       157
                   26169: Ca     32      1       158
                   26170: va     50      2       159
                   26171: 0707070014231123621006440057030057030000010443400522627501600002600000006151post.src/devLatin1/KIname KI
                   26172: fontname Bookman-LightItalic
                   26173: named in prologue
                   26174: spacewidth 30
                   26175: charset
                   26176: !      32      2       33
                   26177: "      36      2       34
                   26178: dq     "
                   26179: #      60      2       35
                   26180: $      62      2       36
                   26181: %      80      2       37
                   26182: &      82      2       38
                   26183: '      28      2       39
                   26184: (      28      3       40
                   26185: )      28      3       41
                   26186: *      44      2       42
                   26187: +      60      2       43
                   26188: ,      30      1       44
                   26189: -      32      0       173
                   26190: \0255  "
                   26191: .      30      0       46
                   26192: /      60      3       47
                   26193: 0      62      2       48
                   26194: 1      62      2       49
                   26195: 2      62      2       50
                   26196: 3      62      2       51
                   26197: 4      62      2       52
                   26198: 5      62      2       53
                   26199: 6      62      2       54
                   26200: 7      62      2       55
                   26201: 8      62      2       56
                   26202: 9      62      2       57
                   26203: :      30      0       58
                   26204: ;      30      1       59
                   26205: ---    60      2       60
                   26206: =      60      0       61
                   26207: ---    60      2       62
                   26208: ?      54      2       63
                   26209: @      78      2       64
                   26210: A      70      2       65
                   26211: B      72      2       66
                   26212: C      72      2       67
                   26213: D      74      2       68
                   26214: E      68      2       69
                   26215: F      62      2       70
                   26216: G      76      2       71
                   26217: H      80      2       72
                   26218: I      32      2       73
                   26219: J      56      2       74
                   26220: K      72      2       75
                   26221: L      58      2       76
                   26222: M      86      2       77
                   26223: N      72      2       78
                   26224: O      76      2       79
                   26225: P      60      2       80
                   26226: Q      78      3       81
                   26227: R      70      2       82
                   26228: S      64      2       83
                   26229: T      60      2       84
                   26230: U      72      2       85
                   26231: V      68      2       86
                   26232: W      96      2       87
                   26233: X      70      2       88
                   26234: Y      66      2       89
                   26235: Z      58      2       90
                   26236: [      26      3       91
                   26237: \      60      2       92
                   26238: bs     "
                   26239: ]      26      3       93
                   26240: ^      44      2       147
                   26241: ---    60      2       94
                   26242: ---    50      1       95
                   26243: `      28      2       96
                   26244: a      62      0       97
                   26245: b      60      2       98
                   26246: c      48      0       99
                   26247: d      64      2       100
                   26248: e      54      0       101
                   26249: f      34      3       102
                   26250: g      56      1       103
                   26251: h      62      2       104
                   26252: i      28      2       105
                   26253: j      28      3       106
                   26254: k      60      2       107
                   26255: l      28      2       108
                   26256: m      88      0       109
                   26257: n      62      0       110
                   26258: o      54      0       111
                   26259: p      60      1       112
                   26260: q      56      1       113
                   26261: r      40      0       114
                   26262: s      54      0       115
                   26263: t      34      2       116
                   26264: u      62      0       117
                   26265: v      54      0       118
                   26266: w      88      0       119
                   26267: x      54      0       120
                   26268: y      60      1       121
                   26269: z      52      0       122
                   26270: {      36      3       123
                   26271: ---    60      2       124
                   26272: }      38      3       125
                   26273: ~      44      2       148
                   26274: ---    60      0       126
                   26275: \`     34      2       145
                   26276: ga     "
                   26277: !!     32      1       161
                   26278: \0241  "
                   26279: c|     62      2       162
                   26280: \0242  "
                   26281: ct     "
                   26282: L-     62      2       163
                   26283: \0243  "
                   26284: ps     "
                   26285: xo     60      2       164
                   26286: \0244  "
                   26287: cr     "
                   26288: Y-     62      2       165
                   26289: \0245  "
                   26290: yn     "
                   26291: ||     60      2       166
                   26292: \0246  "
                   26293: so     62      3       167
                   26294: \0247  "
                   26295: sc     "
                   26296: ""     42      2       168
                   26297: \0250  "
                   26298: :a     "
                   26299: co     74      2       169
                   26300: \0251  "
                   26301: a_     44      2       170
                   26302: \0252  "
                   26303: <<     30      0       171
                   26304: \0253  "
                   26305: -,     60      0       172
                   26306: \0254  "
                   26307: hy     32      0       173
                   26308: \0255  "
                   26309: --     60      0       45
                   26310: ro     74      2       174
                   26311: \0256  "
                   26312: rg     "
                   26313: -^     44      2       175
                   26314: \0257  "
                   26315: -a     "
                   26316: 0^     40      2       176
                   26317: \0260  "
                   26318: +-     60      2       177
                   26319: \0261  "
                   26320: 2^     37      2       178
                   26321: \0262  "
                   26322: 3^     37      2       179
                   26323: \0263  "
                   26324: \'     32      2       180
                   26325: \0264  "
                   26326: aa     "
                   26327: /u     62      1       181
                   26328: \0265  "
                   26329: P!     62      2       182
                   26330: \0266  "
                   26331: pg     "
                   26332: .^     30      0       183
                   26333: \0267  "
                   26334: ,,     32      1       184
                   26335: \0270  "
                   26336: ,a     "
                   26337: 1^     37      2       185
                   26338: \0271  "
                   26339: o_     40      2       186
                   26340: \0272  "
                   26341: >>     30      0       187
                   26342: \0273  "
                   26343: 14     93      2       188
                   26344: \0274  "
                   26345: 12     93      2       189
                   26346: \0275  "
                   26347: 34     93      2       190
                   26348: \0276  "
                   26349: ??     54      1       191
                   26350: \0277  "
                   26351: A`     70      2       192
                   26352: \0300  "
                   26353: A'     70      2       193
                   26354: \0301  "
                   26355: A^     70      2       194
                   26356: \0302  "
                   26357: A~     70      2       195
                   26358: \0303  "
                   26359: A"     70      2       196
                   26360: \0304  "
                   26361: A*     70      2       197
                   26362: \0305  "
                   26363: AE     122     2       198
                   26364: \0306  "
                   26365: C,     72      3       199
                   26366: \0307  "
                   26367: E`     68      2       200
                   26368: \0310  "
                   26369: E'     68      2       201
                   26370: \0311  "
                   26371: E^     68      2       202
                   26372: \0312  "
                   26373: E"     68      2       203
                   26374: \0313  "
                   26375: I`     32      2       204
                   26376: \0314  "
                   26377: I'     32      2       205
                   26378: \0315  "
                   26379: I^     32      2       206
                   26380: \0316  "
                   26381: I"     32      2       207
                   26382: \0317  "
                   26383: D-     74      2       208
                   26384: \0320  "
                   26385: N~     72      2       209
                   26386: \0321  "
                   26387: O`     76      2       210
                   26388: \0322  "
                   26389: O'     76      2       211
                   26390: \0323  "
                   26391: O^     76      2       212
                   26392: \0324  "
                   26393: O~     76      2       213
                   26394: \0325  "
                   26395: O"     76      2       214
                   26396: \0326  "
                   26397: xx     60      2       215
                   26398: \0327  "
                   26399: O/     76      2       216
                   26400: \0330  "
                   26401: U`     72      2       217
                   26402: \0331  "
                   26403: U'     72      2       218
                   26404: \0332  "
                   26405: U^     72      2       219
                   26406: \0333  "
                   26407: U"     72      2       220
                   26408: \0334  "
                   26409: Y'     66      2       221
                   26410: \0335  "
                   26411: TH     60      2       222
                   26412: \0336  "
                   26413: ss     62      3       223
                   26414: \0337  "
                   26415: a`     62      2       224
                   26416: \0340  "
                   26417: a'     62      2       225
                   26418: \0341  "
                   26419: a^     62      2       226
                   26420: \0342  "
                   26421: a~     62      2       227
                   26422: \0343  "
                   26423: a"     62      2       228
                   26424: \0344  "
                   26425: a*     62      2       229
                   26426: \0345  "
                   26427: ae     88      0       230
                   26428: \0346  "
                   26429: c,     48      1       231
                   26430: \0347  "
                   26431: e`     54      2       232
                   26432: \0350  "
                   26433: e'     54      2       233
                   26434: \0351  "
                   26435: e^     54      2       234
                   26436: \0352  "
                   26437: e"     54      2       235
                   26438: \0353  "
                   26439: i`     28      2       236
                   26440: \0354  "
                   26441: i'     28      2       237
                   26442: \0355  "
                   26443: i^     28      2       238
                   26444: \0356  "
                   26445: i"     28      2       239
                   26446: \0357  "
                   26447: d-     54      2       240
                   26448: \0360  "
                   26449: n~     62      2       241
                   26450: \0361  "
                   26451: o`     54      2       242
                   26452: \0362  "
                   26453: o'     54      2       243
                   26454: \0363  "
                   26455: o^     54      2       244
                   26456: \0364  "
                   26457: o~     54      2       245
                   26458: \0365  "
                   26459: o"     54      2       246
                   26460: \0366  "
                   26461: -:     60      2       247
                   26462: \0367  "
                   26463: o/     54      0       248
                   26464: \0370  "
                   26465: u`     62      2       249
                   26466: \0371  "
                   26467: u'     62      2       250
                   26468: \0372  "
                   26469: u^     62      2       251
                   26470: \0373  "
                   26471: u"     62      2       252
                   26472: \0374  "
                   26473: y'     60      3       253
                   26474: \0375  "
                   26475: th     60      3       254
                   26476: \0376  "
                   26477: y"     60      3       255
                   26478: \0377  "
                   26479: ^a     44      2       147
                   26480: ~a     44      2       148
                   26481: Ua     44      2       150
                   26482: .a     26      2       151
                   26483: oa     30      2       154
                   26484: "a     34      2       157
                   26485: Ca     26      1       158
                   26486: va     44      2       159
                   26487: 0707070014231123631006440057030057030000010443440522627501600002600000006143post.src/devLatin1/KRname KR
                   26488: fontname Bookman-Light
                   26489: named in prologue
                   26490: spacewidth 32
                   26491: charset
                   26492: !      30      2       33
                   26493: "      38      2       34
                   26494: dq     "
                   26495: #      60      2       35
                   26496: $      62      2       36
                   26497: %      90      2       37
                   26498: &      80      2       38
                   26499: '      22      2       39
                   26500: (      30      3       40
                   26501: )      30      3       41
                   26502: *      44      2       42
                   26503: +      60      0       43
                   26504: ,      32      1       44
                   26505: -      40      0       173
                   26506: \0255  "
                   26507: .      32      0       46
                   26508: /      60      3       47
                   26509: 0      62      2       48
                   26510: 1      62      2       49
                   26511: 2      62      2       50
                   26512: 3      62      2       51
                   26513: 4      62      2       52
                   26514: 5      62      2       53
                   26515: 6      62      2       54
                   26516: 7      62      2       55
                   26517: 8      62      2       56
                   26518: 9      62      2       57
                   26519: :      32      0       58
                   26520: ;      32      1       59
                   26521: ---    60      0       60
                   26522: =      60      0       61
                   26523: ---    60      0       62
                   26524: ?      54      2       63
                   26525: @      82      2       64
                   26526: A      68      2       65
                   26527: B      74      2       66
                   26528: C      74      2       67
                   26529: D      80      2       68
                   26530: E      72      2       69
                   26531: F      64      2       70
                   26532: G      80      2       71
                   26533: H      80      2       72
                   26534: I      34      2       73
                   26535: J      60      2       74
                   26536: K      72      2       75
                   26537: L      60      2       76
                   26538: M      92      2       77
                   26539: N      74      2       78
                   26540: O      80      2       79
                   26541: P      62      2       80
                   26542: Q      82      3       81
                   26543: R      72      2       82
                   26544: S      66      2       83
                   26545: T      62      2       84
                   26546: U      78      2       85
                   26547: V      70      2       86
                   26548: W      96      2       87
                   26549: X      72      2       88
                   26550: Y      64      2       89
                   26551: Z      64      2       90
                   26552: [      30      3       91
                   26553: \      60      2       92
                   26554: bs     "
                   26555: ]      30      3       93
                   26556: ^      42      2       147
                   26557: ---    60      2       94
                   26558: ---    50      1       95
                   26559: `      22      2       96
                   26560: a      58      0       97
                   26561: b      62      2       98
                   26562: c      52      0       99
                   26563: d      62      2       100
                   26564: e      52      0       101
                   26565: f      32      2       102
                   26566: g      54      3       103
                   26567: h      66      2       104
                   26568: i      30      2       105
                   26569: j      30      3       106
                   26570: k      62      2       107
                   26571: l      30      2       108
                   26572: m      94      0       109
                   26573: n      66      0       110
                   26574: o      56      0       111
                   26575: p      62      1       112
                   26576: q      58      1       113
                   26577: r      44      0       114
                   26578: s      52      0       115
                   26579: t      38      2       116
                   26580: u      68      0       117
                   26581: v      52      0       118
                   26582: w      78      0       119
                   26583: x      56      0       120
                   26584: y      54      1       121
                   26585: z      48      0       122
                   26586: {      28      3       123
                   26587: ---    60      2       124
                   26588: }      28      3       125
                   26589: ~      44      2       148
                   26590: ---    60      0       126
                   26591: \`     34      2       145
                   26592: ga     "
                   26593: !!     30      1       161
                   26594: \0241  "
                   26595: c|     62      2       162
                   26596: \0242  "
                   26597: ct     "
                   26598: L-     62      2       163
                   26599: \0243  "
                   26600: ps     "
                   26601: xo     60      2       164
                   26602: \0244  "
                   26603: cr     "
                   26604: Y-     62      2       165
                   26605: \0245  "
                   26606: yn     "
                   26607: ||     60      2       166
                   26608: \0246  "
                   26609: so     52      3       167
                   26610: \0247  "
                   26611: sc     "
                   26612: ""     42      2       168
                   26613: \0250  "
                   26614: :a     "
                   26615: co     74      2       169
                   26616: \0251  "
                   26617: a_     42      2       170
                   26618: \0252  "
                   26619: <<     36      0       171
                   26620: \0253  "
                   26621: -,     60      0       172
                   26622: \0254  "
                   26623: hy     40      0       173
                   26624: \0255  "
                   26625: --     60      0       45
                   26626: ro     74      2       174
                   26627: \0256  "
                   26628: rg     "
                   26629: -^     44      2       175
                   26630: \0257  "
                   26631: -a     "
                   26632: 0^     40      2       176
                   26633: \0260  "
                   26634: +-     60      0       177
                   26635: \0261  "
                   26636: 2^     37      2       178
                   26637: \0262  "
                   26638: 3^     37      2       179
                   26639: \0263  "
                   26640: \'     34      2       180
                   26641: \0264  "
                   26642: aa     "
                   26643: /u     68      1       181
                   26644: \0265  "
                   26645: P!     60      2       182
                   26646: \0266  "
                   26647: pg     "
                   26648: .^     32      0       183
                   26649: \0267  "
                   26650: ,,     32      1       184
                   26651: \0270  "
                   26652: ,a     "
                   26653: 1^     37      2       185
                   26654: \0271  "
                   26655: o_     42      2       186
                   26656: \0272  "
                   26657: >>     36      0       187
                   26658: \0273  "
                   26659: 14     93      2       188
                   26660: \0274  "
                   26661: 12     93      2       189
                   26662: \0275  "
                   26663: 34     93      2       190
                   26664: \0276  "
                   26665: ??     54      1       191
                   26666: \0277  "
                   26667: A`     68      2       192
                   26668: \0300  "
                   26669: A'     68      2       193
                   26670: \0301  "
                   26671: A^     68      2       194
                   26672: \0302  "
                   26673: A~     68      2       195
                   26674: \0303  "
                   26675: A"     68      2       196
                   26676: \0304  "
                   26677: A*     68      2       197
                   26678: \0305  "
                   26679: AE     126     2       198
                   26680: \0306  "
                   26681: C,     74      3       199
                   26682: \0307  "
                   26683: E`     72      2       200
                   26684: \0310  "
                   26685: E'     72      2       201
                   26686: \0311  "
                   26687: E^     72      2       202
                   26688: \0312  "
                   26689: E"     72      2       203
                   26690: \0313  "
                   26691: I`     34      2       204
                   26692: \0314  "
                   26693: I'     34      2       205
                   26694: \0315  "
                   26695: I^     34      2       206
                   26696: \0316  "
                   26697: I"     34      2       207
                   26698: \0317  "
                   26699: D-     80      2       208
                   26700: \0320  "
                   26701: N~     74      2       209
                   26702: \0321  "
                   26703: O`     80      2       210
                   26704: \0322  "
                   26705: O'     80      2       211
                   26706: \0323  "
                   26707: O^     80      2       212
                   26708: \0324  "
                   26709: O~     80      2       213
                   26710: \0325  "
                   26711: O"     80      2       214
                   26712: \0326  "
                   26713: xx     60      0       215
                   26714: \0327  "
                   26715: O/     80      2       216
                   26716: \0330  "
                   26717: U`     78      2       217
                   26718: \0331  "
                   26719: U'     78      2       218
                   26720: \0332  "
                   26721: U^     78      2       219
                   26722: \0333  "
                   26723: U"     78      2       220
                   26724: \0334  "
                   26725: Y'     64      2       221
                   26726: \0335  "
                   26727: TH     62      2       222
                   26728: \0336  "
                   26729: ss     66      2       223
                   26730: \0337  "
                   26731: a`     58      2       224
                   26732: \0340  "
                   26733: a'     58      2       225
                   26734: \0341  "
                   26735: a^     58      2       226
                   26736: \0342  "
                   26737: a~     58      2       227
                   26738: \0343  "
                   26739: a"     58      2       228
                   26740: \0344  "
                   26741: a*     58      2       229
                   26742: \0345  "
                   26743: ae     86      0       230
                   26744: \0346  "
                   26745: c,     52      1       231
                   26746: \0347  "
                   26747: e`     52      2       232
                   26748: \0350  "
                   26749: e'     52      2       233
                   26750: \0351  "
                   26751: e^     52      2       234
                   26752: \0352  "
                   26753: e"     52      2       235
                   26754: \0353  "
                   26755: i`     30      2       236
                   26756: \0354  "
                   26757: i'     30      2       237
                   26758: \0355  "
                   26759: i^     30      2       238
                   26760: \0356  "
                   26761: i"     30      2       239
                   26762: \0357  "
                   26763: d-     56      2       240
                   26764: \0360  "
                   26765: n~     66      2       241
                   26766: \0361  "
                   26767: o`     56      2       242
                   26768: \0362  "
                   26769: o'     56      2       243
                   26770: \0363  "
                   26771: o^     56      2       244
                   26772: \0364  "
                   26773: o~     56      2       245
                   26774: \0365  "
                   26775: o"     56      2       246
                   26776: \0366  "
                   26777: -:     60      0       247
                   26778: \0367  "
                   26779: o/     56      0       248
                   26780: \0370  "
                   26781: u`     68      2       249
                   26782: \0371  "
                   26783: u'     68      2       250
                   26784: \0372  "
                   26785: u^     68      2       251
                   26786: \0373  "
                   26787: u"     68      2       252
                   26788: \0374  "
                   26789: y'     54      3       253
                   26790: \0375  "
                   26791: th     62      3       254
                   26792: \0376  "
                   26793: y"     54      3       255
                   26794: \0377  "
                   26795: ^a     42      2       147
                   26796: ~a     44      2       148
                   26797: Ua     46      2       150
                   26798: .a     26      2       151
                   26799: oa     32      2       154
                   26800: "a     38      2       157
                   26801: Ca     32      1       158
                   26802: va     42      2       159
                   26803: 0707070014231123641006440057030057030000010443600522627501600002600000006154post.src/devLatin1/KXname KX
                   26804: fontname Bookman-DemiItalic
                   26805: named in prologue
                   26806: spacewidth 34
                   26807: charset
                   26808: !      32      2       33
                   26809: "      38      2       34
                   26810: dq     "
                   26811: #      60      2       35
                   26812: $      68      3       36
                   26813: %      88      2       37
                   26814: &      98      2       38
                   26815: '      32      2       39
                   26816: (      26      3       40
                   26817: )      26      3       41
                   26818: *      46      2       42
                   26819: +      60      0       43
                   26820: ,      34      1       44
                   26821: -      28      0       173
                   26822: \0255  "
                   26823: .      34      0       46
                   26824: /      36      2       47
                   26825: 0      68      2       48
                   26826: 1      68      2       49
                   26827: 2      68      2       50
                   26828: 3      68      2       51
                   26829: 4      68      2       52
                   26830: 5      68      2       53
                   26831: 6      68      2       54
                   26832: 7      68      2       55
                   26833: 8      68      2       56
                   26834: 9      68      2       57
                   26835: :      34      0       58
                   26836: ;      34      1       59
                   26837: ---    62      0       60
                   26838: =      60      0       61
                   26839: ---    62      0       62
                   26840: ?      62      2       63
                   26841: @      78      2       64
                   26842: A      72      2       65
                   26843: B      72      2       66
                   26844: C      70      2       67
                   26845: D      76      2       68
                   26846: E      72      2       69
                   26847: F      66      2       70
                   26848: G      76      2       71
                   26849: H      80      2       72
                   26850: I      38      2       73
                   26851: J      62      2       74
                   26852: K      78      2       75
                   26853: L      64      2       76
                   26854: M      86      2       77
                   26855: N      74      2       78
                   26856: O      76      2       79
                   26857: P      64      2       80
                   26858: Q      76      3       81
                   26859: R      74      2       82
                   26860: S      70      2       83
                   26861: T      70      2       84
                   26862: U      74      2       85
                   26863: V      66      2       86
                   26864: W      100     2       87
                   26865: X      74      2       88
                   26866: Y      66      2       89
                   26867: Z      68      2       90
                   26868: [      26      3       91
                   26869: \      58      2       92
                   26870: bs     "
                   26871: ]      26      3       93
                   26872: ^      48      2       147
                   26873: ---    62      2       94
                   26874: ---    50      1       95
                   26875: `      32      2       96
                   26876: a      68      0       97
                   26877: b      60      2       98
                   26878: c      56      0       99
                   26879: d      68      2       100
                   26880: e      56      0       101
                   26881: f      42      3       102
                   26882: g      62      1       103
                   26883: h      70      2       104
                   26884: i      38      2       105
                   26885: j      32      3       106
                   26886: k      70      2       107
                   26887: l      38      2       108
                   26888: m      96      0       109
                   26889: n      68      0       110
                   26890: o      60      0       111
                   26891: p      66      1       112
                   26892: q      62      1       113
                   26893: r      50      0       114
                   26894: s      54      0       115
                   26895: t      44      2       116
                   26896: u      68      0       117
                   26897: v      54      0       118
                   26898: w      86      0       119
                   26899: x      62      0       120
                   26900: y      60      1       121
                   26901: z      56      0       122
                   26902: {      30      3       123
                   26903: ---    62      2       124
                   26904: }      30      3       125
                   26905: ~      48      2       148
                   26906: ---    62      0       126
                   26907: \`     38      2       145
                   26908: ga     "
                   26909: !!     32      1       161
                   26910: \0241  "
                   26911: c|     68      2       162
                   26912: \0242  "
                   26913: ct     "
                   26914: L-     68      2       163
                   26915: \0243  "
                   26916: ps     "
                   26917: xo     68      2       164
                   26918: \0244  "
                   26919: cr     "
                   26920: Y-     68      2       165
                   26921: \0245  "
                   26922: yn     "
                   26923: ||     62      2       166
                   26924: \0246  "
                   26925: so     62      3       167
                   26926: \0247  "
                   26927: sc     "
                   26928: ""     52      2       168
                   26929: \0250  "
                   26930: :a     "
                   26931: co     78      2       169
                   26932: \0251  "
                   26933: a_     44      2       170
                   26934: \0252  "
                   26935: <<     38      0       171
                   26936: \0253  "
                   26937: -,     62      0       172
                   26938: \0254  "
                   26939: hy     28      0       173
                   26940: \0255  "
                   26941: --     60      0       45
                   26942: ro     78      2       174
                   26943: \0256  "
                   26944: rg     "
                   26945: -^     48      2       175
                   26946: \0257  "
                   26947: -a     "
                   26948: 0^     40      2       176
                   26949: \0260  "
                   26950: +-     60      0       177
                   26951: \0261  "
                   26952: 2^     41      2       178
                   26953: \0262  "
                   26954: 3^     41      2       179
                   26955: \0263  "
                   26956: \'     34      2       180
                   26957: \0264  "
                   26958: aa     "
                   26959: /u     68      1       181
                   26960: \0265  "
                   26961: P!     68      3       182
                   26962: \0266  "
                   26963: pg     "
                   26964: .^     34      0       183
                   26965: \0267  "
                   26966: ,,     36      1       184
                   26967: \0270  "
                   26968: ,a     "
                   26969: 1^     41      2       185
                   26970: \0271  "
                   26971: o_     44      2       186
                   26972: \0272  "
                   26973: >>     38      0       187
                   26974: \0273  "
                   26975: 14     102     2       188
                   26976: \0274  "
                   26977: 12     102     2       189
                   26978: \0275  "
                   26979: 34     102     2       190
                   26980: \0276  "
                   26981: ??     62      1       191
                   26982: \0277  "
                   26983: A`     72      2       192
                   26984: \0300  "
                   26985: A'     72      2       193
                   26986: \0301  "
                   26987: A^     72      2       194
                   26988: \0302  "
                   26989: A~     72      2       195
                   26990: \0303  "
                   26991: A"     72      2       196
                   26992: \0304  "
                   26993: A*     72      2       197
                   26994: \0305  "
                   26995: AE     114     2       198
                   26996: \0306  "
                   26997: C,     70      3       199
                   26998: \0307  "
                   26999: E`     72      2       200
                   27000: \0310  "
                   27001: E'     72      2       201
                   27002: \0311  "
                   27003: E^     72      2       202
                   27004: \0312  "
                   27005: E"     72      2       203
                   27006: \0313  "
                   27007: I`     38      2       204
                   27008: \0314  "
                   27009: I'     38      2       205
                   27010: \0315  "
                   27011: I^     38      2       206
                   27012: \0316  "
                   27013: I"     38      2       207
                   27014: \0317  "
                   27015: D-     76      2       208
                   27016: \0320  "
                   27017: N~     74      2       209
                   27018: \0321  "
                   27019: O`     76      2       210
                   27020: \0322  "
                   27021: O'     76      2       211
                   27022: \0323  "
                   27023: O^     76      2       212
                   27024: \0324  "
                   27025: O~     76      2       213
                   27026: \0325  "
                   27027: O"     76      2       214
                   27028: \0326  "
                   27029: xx     60      0       215
                   27030: \0327  "
                   27031: O/     76      2       216
                   27032: \0330  "
                   27033: U`     74      2       217
                   27034: \0331  "
                   27035: U'     74      2       218
                   27036: \0332  "
                   27037: U^     74      2       219
                   27038: \0333  "
                   27039: U"     74      2       220
                   27040: \0334  "
                   27041: Y'     66      2       221
                   27042: \0335  "
                   27043: TH     64      2       222
                   27044: \0336  "
                   27045: ss     66      3       223
                   27046: \0337  "
                   27047: a`     68      2       224
                   27048: \0340  "
                   27049: a'     68      2       225
                   27050: \0341  "
                   27051: a^     68      2       226
                   27052: \0342  "
                   27053: a~     68      2       227
                   27054: \0343  "
                   27055: a"     68      2       228
                   27056: \0344  "
                   27057: a*     68      2       229
                   27058: \0345  "
                   27059: ae     88      0       230
                   27060: \0346  "
                   27061: c,     56      1       231
                   27062: \0347  "
                   27063: e`     56      2       232
                   27064: \0350  "
                   27065: e'     56      2       233
                   27066: \0351  "
                   27067: e^     56      2       234
                   27068: \0352  "
                   27069: e"     56      2       235
                   27070: \0353  "
                   27071: i`     38      2       236
                   27072: \0354  "
                   27073: i'     38      2       237
                   27074: \0355  "
                   27075: i^     38      2       238
                   27076: \0356  "
                   27077: i"     38      2       239
                   27078: \0357  "
                   27079: d-     60      2       240
                   27080: \0360  "
                   27081: n~     68      2       241
                   27082: \0361  "
                   27083: o`     60      2       242
                   27084: \0362  "
                   27085: o'     60      2       243
                   27086: \0363  "
                   27087: o^     60      2       244
                   27088: \0364  "
                   27089: o~     60      2       245
                   27090: \0365  "
                   27091: o"     60      2       246
                   27092: \0366  "
                   27093: -:     60      0       247
                   27094: \0367  "
                   27095: o/     60      2       248
                   27096: \0370  "
                   27097: u`     68      2       249
                   27098: \0371  "
                   27099: u'     68      2       250
                   27100: \0372  "
                   27101: u^     68      2       251
                   27102: \0373  "
                   27103: u"     68      2       252
                   27104: \0374  "
                   27105: y'     60      3       253
                   27106: \0375  "
                   27107: th     66      3       254
                   27108: \0376  "
                   27109: y"     60      3       255
                   27110: \0377  "
                   27111: ^a     48      2       147
                   27112: ~a     48      2       148
                   27113: Ua     46      2       150
                   27114: .a     38      2       151
                   27115: oa     36      2       154
                   27116: "a     56      2       157
                   27117: Ca     32      1       158
                   27118: va     48      2       159
                   27119: 0707070014231123651006440057030057030000010443640522627501600002600000006152post.src/devLatin1/NBname NB
                   27120: fontname NewCenturySchlbk-Bold
                   27121: named in prologue
                   27122: spacewidth 29
                   27123: charset
                   27124: !      30      2       33
                   27125: "      33      2       34
                   27126: dq     "
                   27127: #      57      2       35
                   27128: $      57      3       36
                   27129: %      83      2       37
                   27130: &      85      2       38
                   27131: '      24      2       39
                   27132: (      39      3       40
                   27133: )      39      3       41
                   27134: *      50      2       42
                   27135: +      61      0       43
                   27136: ,      28      1       44
                   27137: -      33      0       173
                   27138: \0255  "
                   27139: .      28      0       46
                   27140: /      28      2       47
                   27141: 0      57      2       48
                   27142: 1      57      2       49
                   27143: 2      57      2       50
                   27144: 3      57      2       51
                   27145: 4      57      2       52
                   27146: 5      57      2       53
                   27147: 6      57      2       54
                   27148: 7      57      2       55
                   27149: 8      57      2       56
                   27150: 9      57      2       57
                   27151: :      28      0       58
                   27152: ;      28      1       59
                   27153: ---    61      0       60
                   27154: =      61      0       61
                   27155: ---    61      0       62
                   27156: ?      50      2       63
                   27157: @      75      2       64
                   27158: A      76      2       65
                   27159: B      78      2       66
                   27160: C      78      2       67
                   27161: D      83      2       68
                   27162: E      76      2       69
                   27163: F      72      2       70
                   27164: G      83      2       71
                   27165: H      87      2       72
                   27166: I      44      2       73
                   27167: J      65      2       74
                   27168: K      82      2       75
                   27169: L      72      2       76
                   27170: M      98      2       77
                   27171: N      83      2       78
                   27172: O      83      2       79
                   27173: P      76      2       80
                   27174: Q      83      3       81
                   27175: R      82      2       82
                   27176: S      67      2       83
                   27177: T      72      2       84
                   27178: U      83      2       85
                   27179: V      76      2       86
                   27180: W      98      2       87
                   27181: X      72      2       88
                   27182: Y      72      2       89
                   27183: Z      67      2       90
                   27184: [      39      3       91
                   27185: \      61      2       92
                   27186: bs     "
                   27187: ]      39      3       93
                   27188: ^      33      2       147
                   27189: ---    61      2       94
                   27190: ---    50      1       95
                   27191: `      24      2       96
                   27192: a      61      0       97
                   27193: b      65      2       98
                   27194: c      56      0       99
                   27195: d      67      2       100
                   27196: e      57      0       101
                   27197: f      39      2       102
                   27198: g      61      1       103
                   27199: h      69      2       104
                   27200: i      37      2       105
                   27201: j      35      3       106
                   27202: k      67      2       107
                   27203: l      35      2       108
                   27204: m      96      0       109
                   27205: n      69      0       110
                   27206: o      61      0       111
                   27207: p      67      1       112
                   27208: q      65      1       113
                   27209: r      52      0       114
                   27210: s      50      0       115
                   27211: t      43      2       116
                   27212: u      69      0       117
                   27213: v      61      0       118
                   27214: w      89      0       119
                   27215: x      61      0       120
                   27216: y      61      1       121
                   27217: z      54      0       122
                   27218: {      39      3       123
                   27219: ---    61      2       124
                   27220: }      39      3       125
                   27221: ~      33      2       148
                   27222: ---    61      0       126
                   27223: \`     33      2       145
                   27224: ga     "
                   27225: !!     30      1       161
                   27226: \0241  "
                   27227: c|     57      3       162
                   27228: \0242  "
                   27229: ct     "
                   27230: L-     57      2       163
                   27231: \0243  "
                   27232: ps     "
                   27233: xo     57      2       164
                   27234: \0244  "
                   27235: cr     "
                   27236: Y-     57      2       165
                   27237: \0245  "
                   27238: yn     "
                   27239: ||     61      2       166
                   27240: \0246  "
                   27241: so     50      2       167
                   27242: \0247  "
                   27243: sc     "
                   27244: ""     33      2       168
                   27245: \0250  "
                   27246: :a     "
                   27247: co     75      2       169
                   27248: \0251  "
                   27249: a_     37      2       170
                   27250: \0252  "
                   27251: <<     50      0       171
                   27252: \0253  "
                   27253: -,     61      0       172
                   27254: \0254  "
                   27255: hy     33      0       173
                   27256: \0255  "
                   27257: --     61      0       45
                   27258: ro     75      2       174
                   27259: \0256  "
                   27260: rg     "
                   27261: -^     33      2       175
                   27262: \0257  "
                   27263: -a     "
                   27264: 0^     40      2       176
                   27265: \0260  "
                   27266: +-     61      0       177
                   27267: \0261  "
                   27268: 2^     34      2       178
                   27269: \0262  "
                   27270: 3^     34      2       179
                   27271: \0263  "
                   27272: \'     33      2       180
                   27273: \0264  "
                   27274: aa     "
                   27275: /u     69      1       181
                   27276: \0265  "
                   27277: P!     75      2       182
                   27278: \0266  "
                   27279: pg     "
                   27280: .^     28      0       183
                   27281: \0267  "
                   27282: ,,     33      1       184
                   27283: \0270  "
                   27284: ,a     "
                   27285: 1^     34      2       185
                   27286: \0271  "
                   27287: o_     37      2       186
                   27288: \0272  "
                   27289: >>     50      0       187
                   27290: \0273  "
                   27291: 14     86      2       188
                   27292: \0274  "
                   27293: 12     86      2       189
                   27294: \0275  "
                   27295: 34     86      2       190
                   27296: \0276  "
                   27297: ??     50      1       191
                   27298: \0277  "
                   27299: A`     76      2       192
                   27300: \0300  "
                   27301: A'     76      2       193
                   27302: \0301  "
                   27303: A^     76      2       194
                   27304: \0302  "
                   27305: A~     76      2       195
                   27306: \0303  "
                   27307: A"     76      2       196
                   27308: \0304  "
                   27309: A*     76      2       197
                   27310: \0305  "
                   27311: AE     98      2       198
                   27312: \0306  "
                   27313: C,     78      3       199
                   27314: \0307  "
                   27315: E`     76      2       200
                   27316: \0310  "
                   27317: E'     76      2       201
                   27318: \0311  "
                   27319: E^     76      2       202
                   27320: \0312  "
                   27321: E"     76      2       203
                   27322: \0313  "
                   27323: I`     44      2       204
                   27324: \0314  "
                   27325: I'     44      2       205
                   27326: \0315  "
                   27327: I^     44      2       206
                   27328: \0316  "
                   27329: I"     44      2       207
                   27330: \0317  "
                   27331: D-     83      2       208
                   27332: \0320  "
                   27333: N~     83      2       209
                   27334: \0321  "
                   27335: O`     83      2       210
                   27336: \0322  "
                   27337: O'     83      2       211
                   27338: \0323  "
                   27339: O^     83      2       212
                   27340: \0324  "
                   27341: O~     83      2       213
                   27342: \0325  "
                   27343: O"     83      2       214
                   27344: \0326  "
                   27345: xx     61      0       215
                   27346: \0327  "
                   27347: O/     83      2       216
                   27348: \0330  "
                   27349: U`     83      2       217
                   27350: \0331  "
                   27351: U'     83      2       218
                   27352: \0332  "
                   27353: U^     83      2       219
                   27354: \0333  "
                   27355: U"     83      2       220
                   27356: \0334  "
                   27357: Y'     72      2       221
                   27358: \0335  "
                   27359: TH     76      2       222
                   27360: \0336  "
                   27361: ss     61      2       223
                   27362: \0337  "
                   27363: a`     61      2       224
                   27364: \0340  "
                   27365: a'     61      2       225
                   27366: \0341  "
                   27367: a^     61      2       226
                   27368: \0342  "
                   27369: a~     61      2       227
                   27370: \0343  "
                   27371: a"     61      2       228
                   27372: \0344  "
                   27373: a*     61      2       229
                   27374: \0345  "
                   27375: ae     87      0       230
                   27376: \0346  "
                   27377: c,     56      1       231
                   27378: \0347  "
                   27379: e`     57      2       232
                   27380: \0350  "
                   27381: e'     57      2       233
                   27382: \0351  "
                   27383: e^     57      2       234
                   27384: \0352  "
                   27385: e"     57      2       235
                   27386: \0353  "
                   27387: i`     37      2       236
                   27388: \0354  "
                   27389: i'     37      2       237
                   27390: \0355  "
                   27391: i^     37      2       238
                   27392: \0356  "
                   27393: i"     37      2       239
                   27394: \0357  "
                   27395: d-     61      2       240
                   27396: \0360  "
                   27397: n~     69      2       241
                   27398: \0361  "
                   27399: o`     61      2       242
                   27400: \0362  "
                   27401: o'     61      2       243
                   27402: \0363  "
                   27403: o^     61      2       244
                   27404: \0364  "
                   27405: o~     61      2       245
                   27406: \0365  "
                   27407: o"     61      2       246
                   27408: \0366  "
                   27409: -:     61      0       247
                   27410: \0367  "
                   27411: o/     61      3       248
                   27412: \0370  "
                   27413: u`     69      2       249
                   27414: \0371  "
                   27415: u'     69      2       250
                   27416: \0372  "
                   27417: u^     69      2       251
                   27418: \0373  "
                   27419: u"     69      2       252
                   27420: \0374  "
                   27421: y'     61      3       253
                   27422: \0375  "
                   27423: th     67      3       254
                   27424: \0376  "
                   27425: y"     61      3       255
                   27426: \0377  "
                   27427: ^a     33      2       147
                   27428: ~a     33      2       148
                   27429: Ua     33      2       150
                   27430: .a     33      2       151
                   27431: oa     33      2       154
                   27432: "a     33      2       157
                   27433: Ca     33      1       158
                   27434: va     33      2       159
                   27435: 0707070014231123661006440057030057030000010444000522627501600002600000006154post.src/devLatin1/NIname NI
                   27436: fontname NewCenturySchlbk-Italic
                   27437: named in prologue
                   27438: spacewidth 28
                   27439: charset
                   27440: !      33      2       33
                   27441: "      40      2       34
                   27442: dq     "
                   27443: #      56      2       35
                   27444: $      56      3       36
                   27445: %      83      2       37
                   27446: &      85      2       38
                   27447: '      20      2       39
                   27448: (      33      3       40
                   27449: )      33      3       41
                   27450: *      50      2       42
                   27451: +      61      0       43
                   27452: ,      28      1       44
                   27453: -      33      0       173
                   27454: \0255  "
                   27455: .      28      0       46
                   27456: /      61      3       47
                   27457: 0      56      2       48
                   27458: 1      56      2       49
                   27459: 2      56      2       50
                   27460: 3      56      2       51
                   27461: 4      56      2       52
                   27462: 5      56      2       53
                   27463: 6      56      2       54
                   27464: 7      56      2       55
                   27465: 8      56      2       56
                   27466: 9      56      2       57
                   27467: :      28      0       58
                   27468: ;      28      1       59
                   27469: ---    61      0       60
                   27470: =      61      0       61
                   27471: ---    61      0       62
                   27472: ?      44      2       63
                   27473: @      75      2       64
                   27474: A      70      2       65
                   27475: B      72      2       66
                   27476: C      72      2       67
                   27477: D      78      2       68
                   27478: E      72      2       69
                   27479: F      67      2       70
                   27480: G      78      2       71
                   27481: H      83      2       72
                   27482: I      41      2       73
                   27483: J      61      2       74
                   27484: K      74      2       75
                   27485: L      67      2       76
                   27486: M      94      2       77
                   27487: N      82      2       78
                   27488: O      78      2       79
                   27489: P      67      2       80
                   27490: Q      78      3       81
                   27491: R      74      2       82
                   27492: S      67      2       83
                   27493: T      69      2       84
                   27494: U      82      2       85
                   27495: V      70      2       86
                   27496: W      93      2       87
                   27497: X      70      2       88
                   27498: Y      69      2       89
                   27499: Z      67      2       90
                   27500: [      33      3       91
                   27501: \      61      2       92
                   27502: bs     "
                   27503: ]      33      3       93
                   27504: ^      33      2       147
                   27505: ---    61      2       94
                   27506: ---    50      1       95
                   27507: `      20      2       96
                   27508: a      57      0       97
                   27509: b      56      2       98
                   27510: c      44      0       99
                   27511: d      61      2       100
                   27512: e      44      0       101
                   27513: f      33      3       102
                   27514: g      54      1       103
                   27515: h      61      2       104
                   27516: i      33      2       105
                   27517: j      32      3       106
                   27518: k      56      2       107
                   27519: l      33      2       108
                   27520: m      89      0       109
                   27521: n      61      0       110
                   27522: o      50      0       111
                   27523: p      57      1       112
                   27524: q      56      1       113
                   27525: r      44      0       114
                   27526: s      44      0       115
                   27527: t      35      2       116
                   27528: u      61      0       117
                   27529: v      52      0       118
                   27530: w      78      0       119
                   27531: x      50      0       120
                   27532: y      50      1       121
                   27533: z      46      0       122
                   27534: {      33      3       123
                   27535: ---    61      2       124
                   27536: }      33      3       125
                   27537: ~      33      2       148
                   27538: ---    61      0       126
                   27539: \`     33      2       145
                   27540: ga     "
                   27541: !!     33      3       161
                   27542: \0241  "
                   27543: c|     56      3       162
                   27544: \0242  "
                   27545: ct     "
                   27546: L-     56      2       163
                   27547: \0243  "
                   27548: ps     "
                   27549: xo     56      2       164
                   27550: \0244  "
                   27551: cr     "
                   27552: Y-     56      2       165
                   27553: \0245  "
                   27554: yn     "
                   27555: ||     61      2       166
                   27556: \0246  "
                   27557: so     50      3       167
                   27558: \0247  "
                   27559: sc     "
                   27560: ""     33      2       168
                   27561: \0250  "
                   27562: :a     "
                   27563: co     75      2       169
                   27564: \0251  "
                   27565: a_     42      2       170
                   27566: \0252  "
                   27567: <<     43      0       171
                   27568: \0253  "
                   27569: -,     61      0       172
                   27570: \0254  "
                   27571: hy     33      0       173
                   27572: \0255  "
                   27573: --     61      0       45
                   27574: ro     75      2       174
                   27575: \0256  "
                   27576: rg     "
                   27577: -^     33      2       175
                   27578: \0257  "
                   27579: -a     "
                   27580: 0^     40      2       176
                   27581: \0260  "
                   27582: +-     61      0       177
                   27583: \0261  "
                   27584: 2^     33      2       178
                   27585: \0262  "
                   27586: 3^     33      2       179
                   27587: \0263  "
                   27588: \'     33      2       180
                   27589: \0264  "
                   27590: aa     "
                   27591: /u     61      1       181
                   27592: \0265  "
                   27593: P!     65      2       182
                   27594: \0266  "
                   27595: pg     "
                   27596: .^     28      0       183
                   27597: \0267  "
                   27598: ,,     33      1       184
                   27599: \0270  "
                   27600: ,a     "
                   27601: 1^     33      2       185
                   27602: \0271  "
                   27603: o_     37      2       186
                   27604: \0272  "
                   27605: >>     43      0       187
                   27606: \0273  "
                   27607: 14     83      2       188
                   27608: \0274  "
                   27609: 12     83      2       189
                   27610: \0275  "
                   27611: 34     83      2       190
                   27612: \0276  "
                   27613: ??     44      3       191
                   27614: \0277  "
                   27615: A`     70      2       192
                   27616: \0300  "
                   27617: A'     70      2       193
                   27618: \0301  "
                   27619: A^     70      2       194
                   27620: \0302  "
                   27621: A~     70      2       195
                   27622: \0303  "
                   27623: A"     70      2       196
                   27624: \0304  "
                   27625: A*     70      2       197
                   27626: \0305  "
                   27627: AE     87      2       198
                   27628: \0306  "
                   27629: C,     72      3       199
                   27630: \0307  "
                   27631: E`     72      2       200
                   27632: \0310  "
                   27633: E'     72      2       201
                   27634: \0311  "
                   27635: E^     72      2       202
                   27636: \0312  "
                   27637: E"     72      2       203
                   27638: \0313  "
                   27639: I`     41      2       204
                   27640: \0314  "
                   27641: I'     41      2       205
                   27642: \0315  "
                   27643: I^     41      2       206
                   27644: \0316  "
                   27645: I"     41      2       207
                   27646: \0317  "
                   27647: D-     78      2       208
                   27648: \0320  "
                   27649: N~     82      2       209
                   27650: \0321  "
                   27651: O`     78      2       210
                   27652: \0322  "
                   27653: O'     78      2       211
                   27654: \0323  "
                   27655: O^     78      2       212
                   27656: \0324  "
                   27657: O~     78      2       213
                   27658: \0325  "
                   27659: O"     78      2       214
                   27660: \0326  "
                   27661: xx     61      0       215
                   27662: \0327  "
                   27663: O/     78      2       216
                   27664: \0330  "
                   27665: U`     82      2       217
                   27666: \0331  "
                   27667: U'     82      2       218
                   27668: \0332  "
                   27669: U^     82      2       219
                   27670: \0333  "
                   27671: U"     82      2       220
                   27672: \0334  "
                   27673: Y'     69      2       221
                   27674: \0335  "
                   27675: TH     67      2       222
                   27676: \0336  "
                   27677: ss     56      3       223
                   27678: \0337  "
                   27679: a`     57      2       224
                   27680: \0340  "
                   27681: a'     57      2       225
                   27682: \0341  "
                   27683: a^     57      2       226
                   27684: \0342  "
                   27685: a~     57      2       227
                   27686: \0343  "
                   27687: a"     57      2       228
                   27688: \0344  "
                   27689: a*     57      2       229
                   27690: \0345  "
                   27691: ae     72      0       230
                   27692: \0346  "
                   27693: c,     44      1       231
                   27694: \0347  "
                   27695: e`     44      2       232
                   27696: \0350  "
                   27697: e'     44      2       233
                   27698: \0351  "
                   27699: e^     44      2       234
                   27700: \0352  "
                   27701: e"     44      2       235
                   27702: \0353  "
                   27703: i`     33      2       236
                   27704: \0354  "
                   27705: i'     33      2       237
                   27706: \0355  "
                   27707: i^     33      2       238
                   27708: \0356  "
                   27709: i"     33      2       239
                   27710: \0357  "
                   27711: d-     50      2       240
                   27712: \0360  "
                   27713: n~     61      2       241
                   27714: \0361  "
                   27715: o`     50      2       242
                   27716: \0362  "
                   27717: o'     50      2       243
                   27718: \0363  "
                   27719: o^     50      2       244
                   27720: \0364  "
                   27721: o~     50      2       245
                   27722: \0365  "
                   27723: o"     50      2       246
                   27724: \0366  "
                   27725: -:     61      0       247
                   27726: \0367  "
                   27727: o/     50      3       248
                   27728: \0370  "
                   27729: u`     61      2       249
                   27730: \0371  "
                   27731: u'     61      2       250
                   27732: \0372  "
                   27733: u^     61      2       251
                   27734: \0373  "
                   27735: u"     61      2       252
                   27736: \0374  "
                   27737: y'     50      3       253
                   27738: \0375  "
                   27739: th     57      3       254
                   27740: \0376  "
                   27741: y"     50      3       255
                   27742: \0377  "
                   27743: ^a     33      2       147
                   27744: ~a     33      2       148
                   27745: Ua     33      2       150
                   27746: .a     33      2       151
                   27747: oa     33      2       154
                   27748: "a     33      2       157
                   27749: Ca     33      1       158
                   27750: va     33      2       159
                   27751: 0707070014231123671006440057030057030000010444040522627501600002600000006154post.src/devLatin1/NRname NR
                   27752: fontname NewCenturySchlbk-Roman
                   27753: named in prologue
                   27754: spacewidth 28
                   27755: charset
                   27756: !      30      2       33
                   27757: "      39      2       34
                   27758: dq     "
                   27759: #      56      2       35
                   27760: $      56      3       36
                   27761: %      83      2       37
                   27762: &      82      2       38
                   27763: '      20      2       39
                   27764: (      33      3       40
                   27765: )      33      3       41
                   27766: *      50      2       42
                   27767: +      61      0       43
                   27768: ,      28      1       44
                   27769: -      33      0       173
                   27770: \0255  "
                   27771: .      28      0       46
                   27772: /      28      2       47
                   27773: 0      56      2       48
                   27774: 1      56      2       49
                   27775: 2      56      2       50
                   27776: 3      56      2       51
                   27777: 4      56      2       52
                   27778: 5      56      2       53
                   27779: 6      56      2       54
                   27780: 7      56      2       55
                   27781: 8      56      2       56
                   27782: 9      56      2       57
                   27783: :      28      0       58
                   27784: ;      28      1       59
                   27785: ---    61      0       60
                   27786: =      61      0       61
                   27787: ---    61      0       62
                   27788: ?      44      2       63
                   27789: @      74      2       64
                   27790: A      72      2       65
                   27791: B      72      2       66
                   27792: C      72      2       67
                   27793: D      78      2       68
                   27794: E      72      2       69
                   27795: F      67      2       70
                   27796: G      78      2       71
                   27797: H      83      2       72
                   27798: I      41      2       73
                   27799: J      56      2       74
                   27800: K      78      2       75
                   27801: L      67      2       76
                   27802: M      94      2       77
                   27803: N      82      2       78
                   27804: O      78      2       79
                   27805: P      67      2       80
                   27806: Q      78      3       81
                   27807: R      72      2       82
                   27808: S      63      2       83
                   27809: T      67      2       84
                   27810: U      82      2       85
                   27811: V      72      2       86
                   27812: W      98      2       87
                   27813: X      70      2       88
                   27814: Y      70      2       89
                   27815: Z      61      2       90
                   27816: [      33      3       91
                   27817: \      61      2       92
                   27818: bs     "
                   27819: ]      33      3       93
                   27820: ^      33      2       147
                   27821: ---    61      2       94
                   27822: ---    50      1       95
                   27823: `      20      2       96
                   27824: a      56      0       97
                   27825: b      56      2       98
                   27826: c      44      0       99
                   27827: d      57      2       100
                   27828: e      50      0       101
                   27829: f      33      2       102
                   27830: g      54      1       103
                   27831: h      61      2       104
                   27832: i      32      2       105
                   27833: j      30      3       106
                   27834: k      59      2       107
                   27835: l      32      2       108
                   27836: m      89      0       109
                   27837: n      61      0       110
                   27838: o      50      0       111
                   27839: p      57      1       112
                   27840: q      56      1       113
                   27841: r      44      0       114
                   27842: s      46      0       115
                   27843: t      39      2       116
                   27844: u      61      0       117
                   27845: v      54      0       118
                   27846: w      78      0       119
                   27847: x      54      0       120
                   27848: y      54      1       121
                   27849: z      48      0       122
                   27850: {      33      3       123
                   27851: ---    61      2       124
                   27852: }      33      3       125
                   27853: ~      33      2       148
                   27854: ---    61      0       126
                   27855: \`     33      2       145
                   27856: ga     "
                   27857: !!     30      3       161
                   27858: \0241  "
                   27859: c|     56      3       162
                   27860: \0242  "
                   27861: ct     "
                   27862: L-     56      2       163
                   27863: \0243  "
                   27864: ps     "
                   27865: xo     56      2       164
                   27866: \0244  "
                   27867: cr     "
                   27868: Y-     56      2       165
                   27869: \0245  "
                   27870: yn     "
                   27871: ||     61      2       166
                   27872: \0246  "
                   27873: so     50      3       167
                   27874: \0247  "
                   27875: sc     "
                   27876: ""     33      2       168
                   27877: \0250  "
                   27878: :a     "
                   27879: co     74      2       169
                   27880: \0251  "
                   27881: a_     33      2       170
                   27882: \0252  "
                   27883: <<     43      0       171
                   27884: \0253  "
                   27885: -,     61      0       172
                   27886: \0254  "
                   27887: hy     33      0       173
                   27888: \0255  "
                   27889: --     61      0       45
                   27890: ro     74      2       174
                   27891: \0256  "
                   27892: rg     "
                   27893: -^     33      2       175
                   27894: \0257  "
                   27895: -a     "
                   27896: 0^     40      2       176
                   27897: \0260  "
                   27898: +-     61      0       177
                   27899: \0261  "
                   27900: 2^     33      2       178
                   27901: \0262  "
                   27902: 3^     33      2       179
                   27903: \0263  "
                   27904: \'     33      2       180
                   27905: \0264  "
                   27906: aa     "
                   27907: /u     61      1       181
                   27908: \0265  "
                   27909: P!     61      3       182
                   27910: \0266  "
                   27911: pg     "
                   27912: .^     28      0       183
                   27913: \0267  "
                   27914: ,,     33      1       184
                   27915: \0270  "
                   27916: ,a     "
                   27917: 1^     33      2       185
                   27918: \0271  "
                   27919: o_     30      2       186
                   27920: \0272  "
                   27921: >>     43      0       187
                   27922: \0273  "
                   27923: 14     83      2       188
                   27924: \0274  "
                   27925: 12     83      2       189
                   27926: \0275  "
                   27927: 34     83      2       190
                   27928: \0276  "
                   27929: ??     44      3       191
                   27930: \0277  "
                   27931: A`     72      2       192
                   27932: \0300  "
                   27933: A'     72      2       193
                   27934: \0301  "
                   27935: A^     72      2       194
                   27936: \0302  "
                   27937: A~     72      2       195
                   27938: \0303  "
                   27939: A"     72      2       196
                   27940: \0304  "
                   27941: A*     72      2       197
                   27942: \0305  "
                   27943: AE     100     2       198
                   27944: \0306  "
                   27945: C,     72      3       199
                   27946: \0307  "
                   27947: E`     72      2       200
                   27948: \0310  "
                   27949: E'     72      2       201
                   27950: \0311  "
                   27951: E^     72      2       202
                   27952: \0312  "
                   27953: E"     72      2       203
                   27954: \0313  "
                   27955: I`     41      2       204
                   27956: \0314  "
                   27957: I'     41      2       205
                   27958: \0315  "
                   27959: I^     41      2       206
                   27960: \0316  "
                   27961: I"     41      2       207
                   27962: \0317  "
                   27963: D-     78      2       208
                   27964: \0320  "
                   27965: N~     82      2       209
                   27966: \0321  "
                   27967: O`     78      2       210
                   27968: \0322  "
                   27969: O'     78      2       211
                   27970: \0323  "
                   27971: O^     78      2       212
                   27972: \0324  "
                   27973: O~     78      2       213
                   27974: \0325  "
                   27975: O"     78      2       214
                   27976: \0326  "
                   27977: xx     61      0       215
                   27978: \0327  "
                   27979: O/     78      2       216
                   27980: \0330  "
                   27981: U`     82      2       217
                   27982: \0331  "
                   27983: U'     82      2       218
                   27984: \0332  "
                   27985: U^     82      2       219
                   27986: \0333  "
                   27987: U"     82      2       220
                   27988: \0334  "
                   27989: Y'     70      2       221
                   27990: \0335  "
                   27991: TH     67      2       222
                   27992: \0336  "
                   27993: ss     57      2       223
                   27994: \0337  "
                   27995: a`     56      2       224
                   27996: \0340  "
                   27997: a'     56      2       225
                   27998: \0341  "
                   27999: a^     56      2       226
                   28000: \0342  "
                   28001: a~     56      2       227
                   28002: \0343  "
                   28003: a"     56      2       228
                   28004: \0344  "
                   28005: a*     56      2       229
                   28006: \0345  "
                   28007: ae     80      0       230
                   28008: \0346  "
                   28009: c,     44      1       231
                   28010: \0347  "
                   28011: e`     50      2       232
                   28012: \0350  "
                   28013: e'     50      2       233
                   28014: \0351  "
                   28015: e^     50      2       234
                   28016: \0352  "
                   28017: e"     50      2       235
                   28018: \0353  "
                   28019: i`     32      2       236
                   28020: \0354  "
                   28021: i'     32      2       237
                   28022: \0355  "
                   28023: i^     32      2       238
                   28024: \0356  "
                   28025: i"     32      2       239
                   28026: \0357  "
                   28027: d-     50      2       240
                   28028: \0360  "
                   28029: n~     61      2       241
                   28030: \0361  "
                   28031: o`     50      2       242
                   28032: \0362  "
                   28033: o'     50      2       243
                   28034: \0363  "
                   28035: o^     50      2       244
                   28036: \0364  "
                   28037: o~     50      2       245
                   28038: \0365  "
                   28039: o"     50      2       246
                   28040: \0366  "
                   28041: -:     61      0       247
                   28042: \0367  "
                   28043: o/     50      2       248
                   28044: \0370  "
                   28045: u`     61      2       249
                   28046: \0371  "
                   28047: u'     61      2       250
                   28048: \0372  "
                   28049: u^     61      2       251
                   28050: \0373  "
                   28051: u"     61      2       252
                   28052: \0374  "
                   28053: y'     54      3       253
                   28054: \0375  "
                   28055: th     57      3       254
                   28056: \0376  "
                   28057: y"     54      3       255
                   28058: \0377  "
                   28059: ^a     33      2       147
                   28060: ~a     33      2       148
                   28061: Ua     33      2       150
                   28062: .a     33      2       151
                   28063: oa     33      2       154
                   28064: "a     33      2       157
                   28065: Ca     33      1       158
                   28066: va     33      2       159
                   28067: 0707070014231123701006440057030057030000010444200522627501600002600000006160post.src/devLatin1/NXname NX
                   28068: fontname NewCenturySchlbk-BoldItalic
                   28069: named in prologue
                   28070: spacewidth 29
                   28071: charset
                   28072: !      33      2       33
                   28073: "      40      2       34
                   28074: dq     "
                   28075: #      57      2       35
                   28076: $      57      3       36
                   28077: %      89      2       37
                   28078: &      89      2       38
                   28079: '      26      2       39
                   28080: (      41      3       40
                   28081: )      41      3       41
                   28082: *      50      2       42
                   28083: +      61      0       43
                   28084: ,      29      1       44
                   28085: -      33      0       173
                   28086: \0255  "
                   28087: .      29      0       46
                   28088: /      28      2       47
                   28089: 0      57      2       48
                   28090: 1      57      2       49
                   28091: 2      57      2       50
                   28092: 3      57      2       51
                   28093: 4      57      2       52
                   28094: 5      57      2       53
                   28095: 6      57      2       54
                   28096: 7      57      2       55
                   28097: 8      57      2       56
                   28098: 9      57      2       57
                   28099: :      29      0       58
                   28100: ;      29      1       59
                   28101: ---    61      0       60
                   28102: =      61      0       61
                   28103: ---    61      0       62
                   28104: ?      48      2       63
                   28105: @      75      2       64
                   28106: A      74      2       65
                   28107: B      76      2       66
                   28108: C      76      2       67
                   28109: D      83      2       68
                   28110: E      74      2       69
                   28111: F      70      2       70
                   28112: G      82      2       71
                   28113: H      87      2       72
                   28114: I      44      2       73
                   28115: J      67      2       74
                   28116: K      78      2       75
                   28117: L      70      2       76
                   28118: M      94      2       77
                   28119: N      85      2       78
                   28120: O      83      2       79
                   28121: P      74      2       80
                   28122: Q      83      3       81
                   28123: R      80      2       82
                   28124: S      69      2       83
                   28125: T      72      2       84
                   28126: U      83      2       85
                   28127: V      74      2       86
                   28128: W      94      2       87
                   28129: X      74      2       88
                   28130: Y      70      2       89
                   28131: Z      70      2       90
                   28132: [      41      3       91
                   28133: \      61      2       92
                   28134: bs     "
                   28135: ]      41      3       93
                   28136: ^      33      2       147
                   28137: ---    61      2       94
                   28138: ---    50      1       95
                   28139: `      26      2       96
                   28140: a      67      0       97
                   28141: b      61      2       98
                   28142: c      54      0       99
                   28143: d      67      2       100
                   28144: e      52      0       101
                   28145: f      39      3       102
                   28146: g      61      1       103
                   28147: h      69      2       104
                   28148: i      39      2       105
                   28149: j      37      3       106
                   28150: k      65      2       107
                   28151: l      39      2       108
                   28152: m      94      0       109
                   28153: n      69      0       110
                   28154: o      57      0       111
                   28155: p      65      1       112
                   28156: q      63      1       113
                   28157: r      52      0       114
                   28158: s      48      0       115
                   28159: t      41      2       116
                   28160: u      69      0       117
                   28161: v      56      0       118
                   28162: w      83      0       119
                   28163: x      57      0       120
                   28164: y      52      1       121
                   28165: z      52      0       122
                   28166: {      41      3       123
                   28167: ---    61      2       124
                   28168: }      41      3       125
                   28169: ~      33      2       148
                   28170: ---    61      0       126
                   28171: \`     33      2       145
                   28172: ga     "
                   28173: !!     33      3       161
                   28174: \0241  "
                   28175: c|     57      3       162
                   28176: \0242  "
                   28177: ct     "
                   28178: L-     57      2       163
                   28179: \0243  "
                   28180: ps     "
                   28181: xo     57      2       164
                   28182: \0244  "
                   28183: cr     "
                   28184: Y-     57      2       165
                   28185: \0245  "
                   28186: yn     "
                   28187: ||     61      2       166
                   28188: \0246  "
                   28189: so     50      3       167
                   28190: \0247  "
                   28191: sc     "
                   28192: ""     33      2       168
                   28193: \0250  "
                   28194: :a     "
                   28195: co     75      2       169
                   28196: \0251  "
                   28197: a_     41      2       170
                   28198: \0252  "
                   28199: <<     48      0       171
                   28200: \0253  "
                   28201: -,     61      0       172
                   28202: \0254  "
                   28203: hy     33      0       173
                   28204: \0255  "
                   28205: --     61      0       45
                   28206: ro     75      2       174
                   28207: \0256  "
                   28208: rg     "
                   28209: -^     33      2       175
                   28210: \0257  "
                   28211: -a     "
                   28212: 0^     40      2       176
                   28213: \0260  "
                   28214: +-     61      0       177
                   28215: \0261  "
                   28216: 2^     34      2       178
                   28217: \0262  "
                   28218: 3^     34      2       179
                   28219: \0263  "
                   28220: \'     33      2       180
                   28221: \0264  "
                   28222: aa     "
                   28223: /u     69      1       181
                   28224: \0265  "
                   28225: P!     65      2       182
                   28226: \0266  "
                   28227: pg     "
                   28228: .^     29      0       183
                   28229: \0267  "
                   28230: ,,     33      1       184
                   28231: \0270  "
                   28232: ,a     "
                   28233: 1^     34      2       185
                   28234: \0271  "
                   28235: o_     36      2       186
                   28236: \0272  "
                   28237: >>     48      0       187
                   28238: \0273  "
                   28239: 14     86      2       188
                   28240: \0274  "
                   28241: 12     86      2       189
                   28242: \0275  "
                   28243: 34     86      2       190
                   28244: \0276  "
                   28245: ??     48      3       191
                   28246: \0277  "
                   28247: A`     74      2       192
                   28248: \0300  "
                   28249: A'     74      2       193
                   28250: \0301  "
                   28251: A^     74      2       194
                   28252: \0302  "
                   28253: A~     74      2       195
                   28254: \0303  "
                   28255: A"     74      2       196
                   28256: \0304  "
                   28257: A*     74      2       197
                   28258: \0305  "
                   28259: AE     89      2       198
                   28260: \0306  "
                   28261: C,     76      3       199
                   28262: \0307  "
                   28263: E`     74      2       200
                   28264: \0310  "
                   28265: E'     74      2       201
                   28266: \0311  "
                   28267: E^     74      2       202
                   28268: \0312  "
                   28269: E"     74      2       203
                   28270: \0313  "
                   28271: I`     44      2       204
                   28272: \0314  "
                   28273: I'     44      2       205
                   28274: \0315  "
                   28275: I^     44      2       206
                   28276: \0316  "
                   28277: I"     44      2       207
                   28278: \0317  "
                   28279: D-     83      2       208
                   28280: \0320  "
                   28281: N~     85      2       209
                   28282: \0321  "
                   28283: O`     83      2       210
                   28284: \0322  "
                   28285: O'     83      2       211
                   28286: \0323  "
                   28287: O^     83      2       212
                   28288: \0324  "
                   28289: O~     83      2       213
                   28290: \0325  "
                   28291: O"     83      2       214
                   28292: \0326  "
                   28293: xx     61      0       215
                   28294: \0327  "
                   28295: O/     83      2       216
                   28296: \0330  "
                   28297: U`     83      2       217
                   28298: \0331  "
                   28299: U'     83      2       218
                   28300: \0332  "
                   28301: U^     83      2       219
                   28302: \0333  "
                   28303: U"     83      2       220
                   28304: \0334  "
                   28305: Y'     70      2       221
                   28306: \0335  "
                   28307: TH     74      2       222
                   28308: \0336  "
                   28309: ss     57      3       223
                   28310: \0337  "
                   28311: a`     67      2       224
                   28312: \0340  "
                   28313: a'     67      2       225
                   28314: \0341  "
                   28315: a^     67      2       226
                   28316: \0342  "
                   28317: a~     67      2       227
                   28318: \0343  "
                   28319: a"     67      2       228
                   28320: \0344  "
                   28321: a*     67      2       229
                   28322: \0345  "
                   28323: ae     82      0       230
                   28324: \0346  "
                   28325: c,     54      1       231
                   28326: \0347  "
                   28327: e`     52      2       232
                   28328: \0350  "
                   28329: e'     52      2       233
                   28330: \0351  "
                   28331: e^     52      2       234
                   28332: \0352  "
                   28333: e"     52      2       235
                   28334: \0353  "
                   28335: i`     39      2       236
                   28336: \0354  "
                   28337: i'     39      2       237
                   28338: \0355  "
                   28339: i^     39      2       238
                   28340: \0356  "
                   28341: i"     39      2       239
                   28342: \0357  "
                   28343: d-     57      2       240
                   28344: \0360  "
                   28345: n~     69      2       241
                   28346: \0361  "
                   28347: o`     57      2       242
                   28348: \0362  "
                   28349: o'     57      2       243
                   28350: \0363  "
                   28351: o^     57      2       244
                   28352: \0364  "
                   28353: o~     57      2       245
                   28354: \0365  "
                   28355: o"     57      2       246
                   28356: \0366  "
                   28357: -:     61      0       247
                   28358: \0367  "
                   28359: o/     57      3       248
                   28360: \0370  "
                   28361: u`     69      2       249
                   28362: \0371  "
                   28363: u'     69      2       250
                   28364: \0372  "
                   28365: u^     69      2       251
                   28366: \0373  "
                   28367: u"     69      2       252
                   28368: \0374  "
                   28369: y'     52      3       253
                   28370: \0375  "
                   28371: th     65      3       254
                   28372: \0376  "
                   28373: y"     52      3       255
                   28374: \0377  "
                   28375: ^a     33      2       147
                   28376: ~a     33      2       148
                   28377: Ua     33      2       150
                   28378: .a     33      2       151
                   28379: oa     33      2       154
                   28380: "a     33      2       157
                   28381: Ca     33      1       158
                   28382: va     33      2       159
                   28383: 0707070014231123711006440057030057030000010444240522627501600002600000006144post.src/devLatin1/PAname PA
                   28384: fontname Palatino-Roman
                   28385: named in prologue
                   28386: spacewidth 25
                   28387: charset
                   28388: !      28      2       33
                   28389: "      37      2       34
                   28390: dq     "
                   28391: #      50      2       35
                   28392: $      50      2       36
                   28393: %      84      2       37
                   28394: &      78      2       38
                   28395: '      28      2       39
                   28396: (      33      2       40
                   28397: )      33      2       41
                   28398: *      39      2       42
                   28399: +      61      0       43
                   28400: ,      25      1       44
                   28401: -      33      0       173
                   28402: \0255  "
                   28403: .      25      0       46
                   28404: /      61      2       47
                   28405: 0      50      2       48
                   28406: 1      50      2       49
                   28407: 2      50      2       50
                   28408: 3      50      2       51
                   28409: 4      50      2       52
                   28410: 5      50      2       53
                   28411: 6      50      2       54
                   28412: 7      50      2       55
                   28413: 8      50      2       56
                   28414: 9      50      2       57
                   28415: :      25      0       58
                   28416: ;      25      1       59
                   28417: ---    61      0       60
                   28418: =      61      0       61
                   28419: ---    61      0       62
                   28420: ?      44      2       63
                   28421: @      75      2       64
                   28422: A      78      2       65
                   28423: B      61      2       66
                   28424: C      71      2       67
                   28425: D      77      2       68
                   28426: E      61      2       69
                   28427: F      56      2       70
                   28428: G      76      2       71
                   28429: H      83      2       72
                   28430: I      34      2       73
                   28431: J      33      3       74
                   28432: K      73      2       75
                   28433: L      61      2       76
                   28434: M      95      2       77
                   28435: N      83      2       78
                   28436: O      79      2       79
                   28437: P      60      2       80
                   28438: Q      79      3       81
                   28439: R      67      2       82
                   28440: S      53      2       83
                   28441: T      61      2       84
                   28442: U      78      2       85
                   28443: V      72      2       86
                   28444: W      100     2       87
                   28445: X      67      2       88
                   28446: Y      67      2       89
                   28447: Z      67      2       90
                   28448: [      33      2       91
                   28449: \      61      2       92
                   28450: bs     "
                   28451: ]      33      2       93
                   28452: ^      33      2       147
                   28453: ---    61      2       94
                   28454: ---    50      1       95
                   28455: `      28      2       96
                   28456: a      50      0       97
                   28457: b      55      2       98
                   28458: c      44      0       99
                   28459: d      61      2       100
                   28460: e      48      0       101
                   28461: f      33      2       102
                   28462: g      56      1       103
                   28463: h      58      2       104
                   28464: i      29      2       105
                   28465: j      23      3       106
                   28466: k      56      2       107
                   28467: l      29      2       108
                   28468: m      88      0       109
                   28469: n      58      0       110
                   28470: o      55      0       111
                   28471: p      60      1       112
                   28472: q      56      1       113
                   28473: r      40      0       114
                   28474: s      42      0       115
                   28475: t      33      2       116
                   28476: u      60      0       117
                   28477: v      57      0       118
                   28478: w      83      0       119
                   28479: x      52      0       120
                   28480: y      56      1       121
                   28481: z      50      0       122
                   28482: {      33      2       123
                   28483: ---    61      2       124
                   28484: }      33      2       125
                   28485: ~      33      2       148
                   28486: ---    61      0       126
                   28487: \`     33      2       145
                   28488: ga     "
                   28489: !!     28      1       161
                   28490: \0241  "
                   28491: c|     50      2       162
                   28492: \0242  "
                   28493: ct     "
                   28494: L-     50      2       163
                   28495: \0243  "
                   28496: ps     "
                   28497: xo     50      2       164
                   28498: \0244  "
                   28499: cr     "
                   28500: Y-     50      2       165
                   28501: \0245  "
                   28502: yn     "
                   28503: ||     61      2       166
                   28504: \0246  "
                   28505: so     50      3       167
                   28506: \0247  "
                   28507: sc     "
                   28508: ""     33      2       168
                   28509: \0250  "
                   28510: :a     "
                   28511: co     75      2       169
                   28512: \0251  "
                   28513: a_     33      2       170
                   28514: \0252  "
                   28515: <<     50      0       171
                   28516: \0253  "
                   28517: -,     61      0       172
                   28518: \0254  "
                   28519: hy     33      0       173
                   28520: \0255  "
                   28521: --     61      0       45
                   28522: ro     75      2       174
                   28523: \0256  "
                   28524: rg     "
                   28525: -^     33      2       175
                   28526: \0257  "
                   28527: -a     "
                   28528: 0^     40      2       176
                   28529: \0260  "
                   28530: +-     61      0       177
                   28531: \0261  "
                   28532: 2^     30      2       178
                   28533: \0262  "
                   28534: 3^     30      2       179
                   28535: \0263  "
                   28536: \'     33      2       180
                   28537: \0264  "
                   28538: aa     "
                   28539: /u     60      1       181
                   28540: \0265  "
                   28541: P!     63      3       182
                   28542: \0266  "
                   28543: pg     "
                   28544: .^     25      0       183
                   28545: \0267  "
                   28546: ,,     33      1       184
                   28547: \0270  "
                   28548: ,a     "
                   28549: 1^     30      2       185
                   28550: \0271  "
                   28551: o_     33      2       186
                   28552: \0272  "
                   28553: >>     50      0       187
                   28554: \0273  "
                   28555: 14     75      2       188
                   28556: \0274  "
                   28557: 12     75      2       189
                   28558: \0275  "
                   28559: 34     75      2       190
                   28560: \0276  "
                   28561: ??     44      1       191
                   28562: \0277  "
                   28563: A`     78      2       192
                   28564: \0300  "
                   28565: A'     78      2       193
                   28566: \0301  "
                   28567: A^     78      2       194
                   28568: \0302  "
                   28569: A~     78      2       195
                   28570: \0303  "
                   28571: A"     78      2       196
                   28572: \0304  "
                   28573: A*     78      2       197
                   28574: \0305  "
                   28575: AE     94      2       198
                   28576: \0306  "
                   28577: C,     71      3       199
                   28578: \0307  "
                   28579: E`     61      2       200
                   28580: \0310  "
                   28581: E'     61      2       201
                   28582: \0311  "
                   28583: E^     61      2       202
                   28584: \0312  "
                   28585: E"     61      2       203
                   28586: \0313  "
                   28587: I`     34      2       204
                   28588: \0314  "
                   28589: I'     34      2       205
                   28590: \0315  "
                   28591: I^     34      2       206
                   28592: \0316  "
                   28593: I"     34      2       207
                   28594: \0317  "
                   28595: D-     77      2       208
                   28596: \0320  "
                   28597: N~     83      2       209
                   28598: \0321  "
                   28599: O`     79      2       210
                   28600: \0322  "
                   28601: O'     79      2       211
                   28602: \0323  "
                   28603: O^     79      2       212
                   28604: \0324  "
                   28605: O~     79      2       213
                   28606: \0325  "
                   28607: O"     79      2       214
                   28608: \0326  "
                   28609: xx     61      0       215
                   28610: \0327  "
                   28611: O/     83      2       216
                   28612: \0330  "
                   28613: U`     78      2       217
                   28614: \0331  "
                   28615: U'     78      2       218
                   28616: \0332  "
                   28617: U^     78      2       219
                   28618: \0333  "
                   28619: U"     78      2       220
                   28620: \0334  "
                   28621: Y'     67      2       221
                   28622: \0335  "
                   28623: TH     60      2       222
                   28624: \0336  "
                   28625: ss     56      2       223
                   28626: \0337  "
                   28627: a`     50      2       224
                   28628: \0340  "
                   28629: a'     50      2       225
                   28630: \0341  "
                   28631: a^     50      2       226
                   28632: \0342  "
                   28633: a~     50      2       227
                   28634: \0343  "
                   28635: a"     50      2       228
                   28636: \0344  "
                   28637: a*     50      2       229
                   28638: \0345  "
                   28639: ae     76      0       230
                   28640: \0346  "
                   28641: c,     44      1       231
                   28642: \0347  "
                   28643: e`     48      2       232
                   28644: \0350  "
                   28645: e'     48      2       233
                   28646: \0351  "
                   28647: e^     48      2       234
                   28648: \0352  "
                   28649: e"     48      2       235
                   28650: \0353  "
                   28651: i`     29      2       236
                   28652: \0354  "
                   28653: i'     29      2       237
                   28654: \0355  "
                   28655: i^     29      2       238
                   28656: \0356  "
                   28657: i"     29      2       239
                   28658: \0357  "
                   28659: d-     55      2       240
                   28660: \0360  "
                   28661: n~     58      2       241
                   28662: \0361  "
                   28663: o`     55      2       242
                   28664: \0362  "
                   28665: o'     55      2       243
                   28666: \0363  "
                   28667: o^     55      2       244
                   28668: \0364  "
                   28669: o~     55      2       245
                   28670: \0365  "
                   28671: o"     55      2       246
                   28672: \0366  "
                   28673: -:     61      0       247
                   28674: \0367  "
                   28675: o/     56      0       248
                   28676: \0370  "
                   28677: u`     60      2       249
                   28678: \0371  "
                   28679: u'     60      2       250
                   28680: \0372  "
                   28681: u^     60      2       251
                   28682: \0373  "
                   28683: u"     60      2       252
                   28684: \0374  "
                   28685: y'     56      3       253
                   28686: \0375  "
                   28687: th     60      3       254
                   28688: \0376  "
                   28689: y"     56      3       255
                   28690: \0377  "
                   28691: ^a     33      2       147
                   28692: ~a     33      2       148
                   28693: Ua     33      2       150
                   28694: .a     25      2       151
                   28695: oa     33      2       154
                   28696: "a     38      2       157
                   28697: Ca     31      1       158
                   28698: va     33      2       159
                   28699: 0707070014231123721006440057030057030000010444400522627501600002600000006145post.src/devLatin1/PBname PB
                   28700: fontname Palatino-Bold
                   28701: named in prologue
                   28702: spacewidth 25
                   28703: charset
                   28704: !      28      2       33
                   28705: "      40      2       34
                   28706: dq     "
                   28707: #      50      2       35
                   28708: $      50      2       36
                   28709: %      89      2       37
                   28710: &      83      2       38
                   28711: '      28      2       39
                   28712: (      33      2       40
                   28713: )      33      2       41
                   28714: *      44      2       42
                   28715: +      61      0       43
                   28716: ,      25      1       44
                   28717: -      33      0       173
                   28718: \0255  "
                   28719: .      25      0       46
                   28720: /      30      2       47
                   28721: 0      50      2       48
                   28722: 1      50      2       49
                   28723: 2      50      2       50
                   28724: 3      50      2       51
                   28725: 4      50      2       52
                   28726: 5      50      2       53
                   28727: 6      50      2       54
                   28728: 7      50      2       55
                   28729: 8      50      2       56
                   28730: 9      50      2       57
                   28731: :      25      0       58
                   28732: ;      25      1       59
                   28733: ---    61      0       60
                   28734: =      61      0       61
                   28735: ---    61      0       62
                   28736: ?      44      2       63
                   28737: @      75      2       64
                   28738: A      78      2       65
                   28739: B      67      2       66
                   28740: C      72      2       67
                   28741: D      83      2       68
                   28742: E      61      2       69
                   28743: F      56      2       70
                   28744: G      83      2       71
                   28745: H      83      2       72
                   28746: I      39      2       73
                   28747: J      39      3       74
                   28748: K      78      2       75
                   28749: L      61      2       76
                   28750: M      100     2       77
                   28751: N      83      2       78
                   28752: O      83      2       79
                   28753: P      61      2       80
                   28754: Q      83      3       81
                   28755: R      72      2       82
                   28756: S      61      2       83
                   28757: T      67      2       84
                   28758: U      78      2       85
                   28759: V      78      2       86
                   28760: W      100     2       87
                   28761: X      67      2       88
                   28762: Y      67      2       89
                   28763: Z      67      2       90
                   28764: [      33      2       91
                   28765: \      61      2       92
                   28766: bs     "
                   28767: ]      33      2       93
                   28768: ^      33      2       147
                   28769: ---    61      2       94
                   28770: ---    50      1       95
                   28771: `      28      2       96
                   28772: a      50      0       97
                   28773: b      61      2       98
                   28774: c      44      0       99
                   28775: d      61      2       100
                   28776: e      50      0       101
                   28777: f      39      2       102
                   28778: g      56      1       103
                   28779: h      61      2       104
                   28780: i      33      2       105
                   28781: j      33      3       106
                   28782: k      61      2       107
                   28783: l      33      2       108
                   28784: m      89      0       109
                   28785: n      61      0       110
                   28786: o      56      0       111
                   28787: p      61      1       112
                   28788: q      61      1       113
                   28789: r      39      0       114
                   28790: s      44      0       115
                   28791: t      33      2       116
                   28792: u      61      0       117
                   28793: v      56      0       118
                   28794: w      83      0       119
                   28795: x      50      0       120
                   28796: y      56      1       121
                   28797: z      50      0       122
                   28798: {      31      2       123
                   28799: ---    61      2       124
                   28800: }      31      2       125
                   28801: ~      33      2       148
                   28802: ---    61      0       126
                   28803: \`     33      2       145
                   28804: ga     "
                   28805: !!     28      1       161
                   28806: \0241  "
                   28807: c|     50      2       162
                   28808: \0242  "
                   28809: ct     "
                   28810: L-     50      2       163
                   28811: \0243  "
                   28812: ps     "
                   28813: xo     50      2       164
                   28814: \0244  "
                   28815: cr     "
                   28816: Y-     50      2       165
                   28817: \0245  "
                   28818: yn     "
                   28819: ||     61      2       166
                   28820: \0246  "
                   28821: so     50      3       167
                   28822: \0247  "
                   28823: sc     "
                   28824: ""     33      2       168
                   28825: \0250  "
                   28826: :a     "
                   28827: co     75      2       169
                   28828: \0251  "
                   28829: a_     44      2       170
                   28830: \0252  "
                   28831: <<     50      0       171
                   28832: \0253  "
                   28833: -,     61      0       172
                   28834: \0254  "
                   28835: hy     33      0       173
                   28836: \0255  "
                   28837: --     61      0       45
                   28838: ro     75      2       174
                   28839: \0256  "
                   28840: rg     "
                   28841: -^     33      2       175
                   28842: \0257  "
                   28843: -a     "
                   28844: 0^     40      2       176
                   28845: \0260  "
                   28846: +-     61      0       177
                   28847: \0261  "
                   28848: 2^     30      2       178
                   28849: \0262  "
                   28850: 3^     30      2       179
                   28851: \0263  "
                   28852: \'     33      2       180
                   28853: \0264  "
                   28854: aa     "
                   28855: /u     61      1       181
                   28856: \0265  "
                   28857: P!     64      3       182
                   28858: \0266  "
                   28859: pg     "
                   28860: .^     25      0       183
                   28861: \0267  "
                   28862: ,,     33      1       184
                   28863: \0270  "
                   28864: ,a     "
                   28865: 1^     30      2       185
                   28866: \0271  "
                   28867: o_     49      2       186
                   28868: \0272  "
                   28869: >>     50      0       187
                   28870: \0273  "
                   28871: 14     75      2       188
                   28872: \0274  "
                   28873: 12     75      2       189
                   28874: \0275  "
                   28875: 34     75      2       190
                   28876: \0276  "
                   28877: ??     44      1       191
                   28878: \0277  "
                   28879: A`     78      2       192
                   28880: \0300  "
                   28881: A'     78      2       193
                   28882: \0301  "
                   28883: A^     78      2       194
                   28884: \0302  "
                   28885: A~     78      2       195
                   28886: \0303  "
                   28887: A"     78      2       196
                   28888: \0304  "
                   28889: A*     78      2       197
                   28890: \0305  "
                   28891: AE     100     2       198
                   28892: \0306  "
                   28893: C,     72      3       199
                   28894: \0307  "
                   28895: E`     61      2       200
                   28896: \0310  "
                   28897: E'     61      2       201
                   28898: \0311  "
                   28899: E^     61      2       202
                   28900: \0312  "
                   28901: E"     61      2       203
                   28902: \0313  "
                   28903: I`     39      2       204
                   28904: \0314  "
                   28905: I'     39      2       205
                   28906: \0315  "
                   28907: I^     39      2       206
                   28908: \0316  "
                   28909: I"     39      2       207
                   28910: \0317  "
                   28911: D-     83      2       208
                   28912: \0320  "
                   28913: N~     83      2       209
                   28914: \0321  "
                   28915: O`     83      2       210
                   28916: \0322  "
                   28917: O'     83      2       211
                   28918: \0323  "
                   28919: O^     83      2       212
                   28920: \0324  "
                   28921: O~     83      2       213
                   28922: \0325  "
                   28923: O"     83      2       214
                   28924: \0326  "
                   28925: xx     61      0       215
                   28926: \0327  "
                   28927: O/     83      2       216
                   28928: \0330  "
                   28929: U`     78      2       217
                   28930: \0331  "
                   28931: U'     78      2       218
                   28932: \0332  "
                   28933: U^     78      2       219
                   28934: \0333  "
                   28935: U"     78      2       220
                   28936: \0334  "
                   28937: Y'     67      2       221
                   28938: \0335  "
                   28939: TH     61      2       222
                   28940: \0336  "
                   28941: ss     61      2       223
                   28942: \0337  "
                   28943: a`     50      2       224
                   28944: \0340  "
                   28945: a'     50      2       225
                   28946: \0341  "
                   28947: a^     50      2       226
                   28948: \0342  "
                   28949: a~     50      2       227
                   28950: \0343  "
                   28951: a"     50      2       228
                   28952: \0344  "
                   28953: a*     50      2       229
                   28954: \0345  "
                   28955: ae     78      0       230
                   28956: \0346  "
                   28957: c,     44      1       231
                   28958: \0347  "
                   28959: e`     50      2       232
                   28960: \0350  "
                   28961: e'     50      2       233
                   28962: \0351  "
                   28963: e^     50      2       234
                   28964: \0352  "
                   28965: e"     50      2       235
                   28966: \0353  "
                   28967: i`     33      2       236
                   28968: \0354  "
                   28969: i'     33      2       237
                   28970: \0355  "
                   28971: i^     33      2       238
                   28972: \0356  "
                   28973: i"     33      2       239
                   28974: \0357  "
                   28975: d-     56      2       240
                   28976: \0360  "
                   28977: n~     61      2       241
                   28978: \0361  "
                   28979: o`     56      2       242
                   28980: \0362  "
                   28981: o'     56      2       243
                   28982: \0363  "
                   28983: o^     56      2       244
                   28984: \0364  "
                   28985: o~     56      2       245
                   28986: \0365  "
                   28987: o"     56      2       246
                   28988: \0366  "
                   28989: -:     61      0       247
                   28990: \0367  "
                   28991: o/     56      0       248
                   28992: \0370  "
                   28993: u`     61      2       249
                   28994: \0371  "
                   28995: u'     61      2       250
                   28996: \0372  "
                   28997: u^     61      2       251
                   28998: \0373  "
                   28999: u"     61      2       252
                   29000: \0374  "
                   29001: y'     56      3       253
                   29002: \0375  "
                   29003: th     61      3       254
                   29004: \0376  "
                   29005: y"     56      3       255
                   29006: \0377  "
                   29007: ^a     33      2       147
                   29008: ~a     33      2       148
                   29009: Ua     33      2       150
                   29010: .a     33      2       151
                   29011: oa     33      2       154
                   29012: "a     33      2       157
                   29013: Ca     33      1       158
                   29014: va     33      2       159
                   29015: 0707070014231123731006440057030057030000010444440522627501600002600000006144post.src/devLatin1/PIname PI
                   29016: fontname Palatino-Italic
                   29017: named in prologue
                   29018: spacewidth 25
                   29019: charset
                   29020: !      33      2       33
                   29021: "      50      2       34
                   29022: dq     "
                   29023: #      50      2       35
                   29024: $      50      2       36
                   29025: %      89      2       37
                   29026: &      78      2       38
                   29027: '      28      2       39
                   29028: (      33      2       40
                   29029: )      33      2       41
                   29030: *      39      2       42
                   29031: +      61      0       43
                   29032: ,      25      1       44
                   29033: -      33      0       173
                   29034: \0255  "
                   29035: .      25      0       46
                   29036: /      30      3       47
                   29037: 0      50      2       48
                   29038: 1      50      2       49
                   29039: 2      50      2       50
                   29040: 3      50      2       51
                   29041: 4      50      2       52
                   29042: 5      50      2       53
                   29043: 6      50      2       54
                   29044: 7      50      2       55
                   29045: 8      50      2       56
                   29046: 9      50      2       57
                   29047: :      25      0       58
                   29048: ;      25      1       59
                   29049: ---    61      0       60
                   29050: =      61      0       61
                   29051: ---    61      0       62
                   29052: ?      50      2       63
                   29053: @      75      2       64
                   29054: A      72      2       65
                   29055: B      61      2       66
                   29056: C      67      2       67
                   29057: D      78      2       68
                   29058: E      61      2       69
                   29059: F      56      2       70
                   29060: G      72      2       71
                   29061: H      78      2       72
                   29062: I      33      2       73
                   29063: J      33      3       74
                   29064: K      67      2       75
                   29065: L      56      2       76
                   29066: M      94      2       77
                   29067: N      78      2       78
                   29068: O      78      2       79
                   29069: P      61      2       80
                   29070: Q      78      3       81
                   29071: R      67      2       82
                   29072: S      56      2       83
                   29073: T      61      2       84
                   29074: U      78      2       85
                   29075: V      72      2       86
                   29076: W      94      2       87
                   29077: X      72      2       88
                   29078: Y      67      2       89
                   29079: Z      67      2       90
                   29080: [      33      2       91
                   29081: \      61      2       92
                   29082: bs     "
                   29083: ]      33      2       93
                   29084: ^      33      2       147
                   29085: ---    61      2       94
                   29086: ---    50      1       95
                   29087: `      28      2       96
                   29088: a      44      0       97
                   29089: b      46      2       98
                   29090: c      41      0       99
                   29091: d      50      2       100
                   29092: e      39      0       101
                   29093: f      28      3       102
                   29094: g      50      1       103
                   29095: h      50      2       104
                   29096: i      28      2       105
                   29097: j      28      3       106
                   29098: k      44      2       107
                   29099: l      28      2       108
                   29100: m      78      0       109
                   29101: n      56      0       110
                   29102: o      44      0       111
                   29103: p      50      1       112
                   29104: q      46      1       113
                   29105: r      39      0       114
                   29106: s      39      0       115
                   29107: t      33      2       116
                   29108: u      56      0       117
                   29109: v      50      0       118
                   29110: w      72      0       119
                   29111: x      50      0       120
                   29112: y      50      1       121
                   29113: z      44      0       122
                   29114: {      33      2       123
                   29115: ---    61      2       124
                   29116: }      33      2       125
                   29117: ~      33      2       148
                   29118: ---    61      0       126
                   29119: \`     33      2       145
                   29120: ga     "
                   29121: !!     33      1       161
                   29122: \0241  "
                   29123: c|     50      2       162
                   29124: \0242  "
                   29125: ct     "
                   29126: L-     50      2       163
                   29127: \0243  "
                   29128: ps     "
                   29129: xo     50      2       164
                   29130: \0244  "
                   29131: cr     "
                   29132: Y-     50      2       165
                   29133: \0245  "
                   29134: yn     "
                   29135: ||     61      2       166
                   29136: \0246  "
                   29137: so     50      3       167
                   29138: \0247  "
                   29139: sc     "
                   29140: ""     33      2       168
                   29141: \0250  "
                   29142: :a     "
                   29143: co     75      2       169
                   29144: \0251  "
                   29145: a_     33      2       170
                   29146: \0252  "
                   29147: <<     50      0       171
                   29148: \0253  "
                   29149: -,     61      0       172
                   29150: \0254  "
                   29151: hy     33      0       173
                   29152: \0255  "
                   29153: --     61      0       45
                   29154: ro     75      2       174
                   29155: \0256  "
                   29156: rg     "
                   29157: -^     33      2       175
                   29158: \0257  "
                   29159: -a     "
                   29160: 0^     40      2       176
                   29161: \0260  "
                   29162: +-     61      0       177
                   29163: \0261  "
                   29164: 2^     30      2       178
                   29165: \0262  "
                   29166: 3^     30      2       179
                   29167: \0263  "
                   29168: \'     33      2       180
                   29169: \0264  "
                   29170: aa     "
                   29171: /u     56      1       181
                   29172: \0265  "
                   29173: P!     50      3       182
                   29174: \0266  "
                   29175: pg     "
                   29176: .^     25      0       183
                   29177: \0267  "
                   29178: ,,     33      1       184
                   29179: \0270  "
                   29180: ,a     "
                   29181: 1^     30      2       185
                   29182: \0271  "
                   29183: o_     33      2       186
                   29184: \0272  "
                   29185: >>     50      0       187
                   29186: \0273  "
                   29187: 14     75      2       188
                   29188: \0274  "
                   29189: 12     75      2       189
                   29190: \0275  "
                   29191: 34     75      2       190
                   29192: \0276  "
                   29193: ??     50      1       191
                   29194: \0277  "
                   29195: A`     72      2       192
                   29196: \0300  "
                   29197: A'     72      2       193
                   29198: \0301  "
                   29199: A^     72      2       194
                   29200: \0302  "
                   29201: A~     72      2       195
                   29202: \0303  "
                   29203: A"     72      2       196
                   29204: \0304  "
                   29205: A*     72      2       197
                   29206: \0305  "
                   29207: AE     94      2       198
                   29208: \0306  "
                   29209: C,     67      3       199
                   29210: \0307  "
                   29211: E`     61      2       200
                   29212: \0310  "
                   29213: E'     61      2       201
                   29214: \0311  "
                   29215: E^     61      2       202
                   29216: \0312  "
                   29217: E"     61      2       203
                   29218: \0313  "
                   29219: I`     33      2       204
                   29220: \0314  "
                   29221: I'     33      2       205
                   29222: \0315  "
                   29223: I^     33      2       206
                   29224: \0316  "
                   29225: I"     33      2       207
                   29226: \0317  "
                   29227: D-     78      2       208
                   29228: \0320  "
                   29229: N~     78      2       209
                   29230: \0321  "
                   29231: O`     78      2       210
                   29232: \0322  "
                   29233: O'     78      2       211
                   29234: \0323  "
                   29235: O^     78      2       212
                   29236: \0324  "
                   29237: O~     78      2       213
                   29238: \0325  "
                   29239: O"     78      2       214
                   29240: \0326  "
                   29241: xx     61      0       215
                   29242: \0327  "
                   29243: O/     78      2       216
                   29244: \0330  "
                   29245: U`     78      2       217
                   29246: \0331  "
                   29247: U'     78      2       218
                   29248: \0332  "
                   29249: U^     78      2       219
                   29250: \0333  "
                   29251: U"     78      2       220
                   29252: \0334  "
                   29253: Y'     67      2       221
                   29254: \0335  "
                   29255: TH     61      2       222
                   29256: \0336  "
                   29257: ss     50      3       223
                   29258: \0337  "
                   29259: a`     44      2       224
                   29260: \0340  "
                   29261: a'     44      2       225
                   29262: \0341  "
                   29263: a^     44      2       226
                   29264: \0342  "
                   29265: a~     44      2       227
                   29266: \0343  "
                   29267: a"     44      2       228
                   29268: \0344  "
                   29269: a*     44      2       229
                   29270: \0345  "
                   29271: ae     64      0       230
                   29272: \0346  "
                   29273: c,     41      1       231
                   29274: \0347  "
                   29275: e`     39      2       232
                   29276: \0350  "
                   29277: e'     39      2       233
                   29278: \0351  "
                   29279: e^     39      2       234
                   29280: \0352  "
                   29281: e"     39      2       235
                   29282: \0353  "
                   29283: i`     28      2       236
                   29284: \0354  "
                   29285: i'     28      2       237
                   29286: \0355  "
                   29287: i^     28      2       238
                   29288: \0356  "
                   29289: i"     28      2       239
                   29290: \0357  "
                   29291: d-     44      2       240
                   29292: \0360  "
                   29293: n~     56      2       241
                   29294: \0361  "
                   29295: o`     44      2       242
                   29296: \0362  "
                   29297: o'     44      2       243
                   29298: \0363  "
                   29299: o^     44      2       244
                   29300: \0364  "
                   29301: o~     44      2       245
                   29302: \0365  "
                   29303: o"     44      2       246
                   29304: \0366  "
                   29305: -:     61      0       247
                   29306: \0367  "
                   29307: o/     44      0       248
                   29308: \0370  "
                   29309: u`     56      2       249
                   29310: \0371  "
                   29311: u'     56      2       250
                   29312: \0372  "
                   29313: u^     56      2       251
                   29314: \0373  "
                   29315: u"     56      2       252
                   29316: \0374  "
                   29317: y'     50      3       253
                   29318: \0375  "
                   29319: th     50      3       254
                   29320: \0376  "
                   29321: y"     50      3       255
                   29322: \0377  "
                   29323: ^a     33      2       147
                   29324: ~a     33      2       148
                   29325: Ua     33      2       150
                   29326: .a     33      2       151
                   29327: oa     33      2       154
                   29328: "a     33      2       157
                   29329: Ca     33      1       158
                   29330: va     33      2       159
                   29331: 0707070014231123741006440057030057030000010444600522627501700002600000006151post.src/devLatin1/PXname PX
                   29332: fontname Palatino-BoldItalic
                   29333: named in prologue
                   29334: spacewidth 25
                   29335: charset
                   29336: !      33      2       33
                   29337: "      50      2       34
                   29338: dq     "
                   29339: #      50      2       35
                   29340: $      50      2       36
                   29341: %      89      2       37
                   29342: &      83      2       38
                   29343: '      28      2       39
                   29344: (      33      2       40
                   29345: )      33      2       41
                   29346: *      44      2       42
                   29347: +      61      0       43
                   29348: ,      25      1       44
                   29349: -      39      0       173
                   29350: \0255  "
                   29351: .      25      0       46
                   29352: /      32      2       47
                   29353: 0      50      2       48
                   29354: 1      50      2       49
                   29355: 2      50      2       50
                   29356: 3      50      2       51
                   29357: 4      50      2       52
                   29358: 5      50      2       53
                   29359: 6      50      2       54
                   29360: 7      50      2       55
                   29361: 8      50      2       56
                   29362: 9      50      2       57
                   29363: :      25      0       58
                   29364: ;      25      1       59
                   29365: ---    61      0       60
                   29366: =      61      0       61
                   29367: ---    61      0       62
                   29368: ?      44      2       63
                   29369: @      83      2       64
                   29370: A      72      2       65
                   29371: B      67      2       66
                   29372: C      69      2       67
                   29373: D      78      2       68
                   29374: E      61      2       69
                   29375: F      56      2       70
                   29376: G      78      2       71
                   29377: H      78      2       72
                   29378: I      39      2       73
                   29379: J      39      3       74
                   29380: K      72      2       75
                   29381: L      61      2       76
                   29382: M      94      2       77
                   29383: N      78      2       78
                   29384: O      83      2       79
                   29385: P      67      2       80
                   29386: Q      83      3       81
                   29387: R      72      2       82
                   29388: S      56      2       83
                   29389: T      61      2       84
                   29390: U      78      2       85
                   29391: V      67      2       86
                   29392: W      100     2       87
                   29393: X      72      2       88
                   29394: Y      61      2       89
                   29395: Z      67      2       90
                   29396: [      33      2       91
                   29397: \      61      2       92
                   29398: bs     "
                   29399: ]      33      2       93
                   29400: ^      33      2       147
                   29401: ---    61      2       94
                   29402: ---    50      1       95
                   29403: `      28      2       96
                   29404: a      56      0       97
                   29405: b      54      2       98
                   29406: c      44      0       99
                   29407: d      56      2       100
                   29408: e      44      0       101
                   29409: f      33      3       102
                   29410: g      50      1       103
                   29411: h      56      2       104
                   29412: i      33      2       105
                   29413: j      33      3       106
                   29414: k      56      2       107
                   29415: l      33      2       108
                   29416: m      83      0       109
                   29417: n      56      0       110
                   29418: o      56      0       111
                   29419: p      56      1       112
                   29420: q      54      1       113
                   29421: r      39      0       114
                   29422: s      44      0       115
                   29423: t      39      2       116
                   29424: u      56      0       117
                   29425: v      56      0       118
                   29426: w      83      0       119
                   29427: x      50      0       120
                   29428: y      56      1       121
                   29429: z      50      0       122
                   29430: {      33      2       123
                   29431: ---    61      2       124
                   29432: }      33      2       125
                   29433: ~      33      2       148
                   29434: ---    61      0       126
                   29435: \`     33      2       145
                   29436: ga     "
                   29437: !!     33      1       161
                   29438: \0241  "
                   29439: c|     50      2       162
                   29440: \0242  "
                   29441: ct     "
                   29442: L-     50      2       163
                   29443: \0243  "
                   29444: ps     "
                   29445: xo     50      2       164
                   29446: \0244  "
                   29447: cr     "
                   29448: Y-     50      2       165
                   29449: \0245  "
                   29450: yn     "
                   29451: ||     61      2       166
                   29452: \0246  "
                   29453: so     56      3       167
                   29454: \0247  "
                   29455: sc     "
                   29456: ""     33      2       168
                   29457: \0250  "
                   29458: :a     "
                   29459: co     75      2       169
                   29460: \0251  "
                   29461: a_     33      2       170
                   29462: \0252  "
                   29463: <<     50      0       171
                   29464: \0253  "
                   29465: -,     61      0       172
                   29466: \0254  "
                   29467: hy     39      0       173
                   29468: \0255  "
                   29469: --     61      0       45
                   29470: ro     75      2       174
                   29471: \0256  "
                   29472: rg     "
                   29473: -^     33      2       175
                   29474: \0257  "
                   29475: -a     "
                   29476: 0^     40      2       176
                   29477: \0260  "
                   29478: +-     61      0       177
                   29479: \0261  "
                   29480: 2^     30      2       178
                   29481: \0262  "
                   29482: 3^     30      2       179
                   29483: \0263  "
                   29484: \'     33      2       180
                   29485: \0264  "
                   29486: aa     "
                   29487: /u     56      1       181
                   29488: \0265  "
                   29489: P!     56      3       182
                   29490: \0266  "
                   29491: pg     "
                   29492: .^     25      0       183
                   29493: \0267  "
                   29494: ,,     33      1       184
                   29495: \0270  "
                   29496: ,a     "
                   29497: 1^     30      2       185
                   29498: \0271  "
                   29499: o_     33      2       186
                   29500: \0272  "
                   29501: >>     50      0       187
                   29502: \0273  "
                   29503: 14     75      2       188
                   29504: \0274  "
                   29505: 12     75      2       189
                   29506: \0275  "
                   29507: 34     75      2       190
                   29508: \0276  "
                   29509: ??     44      1       191
                   29510: \0277  "
                   29511: A`     72      2       192
                   29512: \0300  "
                   29513: A'     72      2       193
                   29514: \0301  "
                   29515: A^     72      2       194
                   29516: \0302  "
                   29517: A~     72      2       195
                   29518: \0303  "
                   29519: A"     72      2       196
                   29520: \0304  "
                   29521: A*     72      2       197
                   29522: \0305  "
                   29523: AE     94      2       198
                   29524: \0306  "
                   29525: C,     69      3       199
                   29526: \0307  "
                   29527: E`     61      2       200
                   29528: \0310  "
                   29529: E'     61      2       201
                   29530: \0311  "
                   29531: E^     61      2       202
                   29532: \0312  "
                   29533: E"     61      2       203
                   29534: \0313  "
                   29535: I`     39      2       204
                   29536: \0314  "
                   29537: I'     39      2       205
                   29538: \0315  "
                   29539: I^     39      2       206
                   29540: \0316  "
                   29541: I"     39      2       207
                   29542: \0317  "
                   29543: D-     78      2       208
                   29544: \0320  "
                   29545: N~     78      2       209
                   29546: \0321  "
                   29547: O`     83      2       210
                   29548: \0322  "
                   29549: O'     83      2       211
                   29550: \0323  "
                   29551: O^     83      2       212
                   29552: \0324  "
                   29553: O~     83      2       213
                   29554: \0325  "
                   29555: O"     83      2       214
                   29556: \0326  "
                   29557: xx     61      0       215
                   29558: \0327  "
                   29559: O/     83      2       216
                   29560: \0330  "
                   29561: U`     78      2       217
                   29562: \0331  "
                   29563: U'     78      2       218
                   29564: \0332  "
                   29565: U^     78      2       219
                   29566: \0333  "
                   29567: U"     78      2       220
                   29568: \0334  "
                   29569: Y'     61      2       221
                   29570: \0335  "
                   29571: TH     67      2       222
                   29572: \0336  "
                   29573: ss     56      3       223
                   29574: \0337  "
                   29575: a`     56      2       224
                   29576: \0340  "
                   29577: a'     56      2       225
                   29578: \0341  "
                   29579: a^     56      2       226
                   29580: \0342  "
                   29581: a~     56      2       227
                   29582: \0343  "
                   29583: a"     56      2       228
                   29584: \0344  "
                   29585: a*     56      2       229
                   29586: \0345  "
                   29587: ae     74      0       230
                   29588: \0346  "
                   29589: c,     44      1       231
                   29590: \0347  "
                   29591: e`     44      2       232
                   29592: \0350  "
                   29593: e'     44      2       233
                   29594: \0351  "
                   29595: e^     44      2       234
                   29596: \0352  "
                   29597: e"     44      2       235
                   29598: \0353  "
                   29599: i`     33      2       236
                   29600: \0354  "
                   29601: i'     33      2       237
                   29602: \0355  "
                   29603: i^     33      2       238
                   29604: \0356  "
                   29605: i"     33      2       239
                   29606: \0357  "
                   29607: d-     56      2       240
                   29608: \0360  "
                   29609: n~     56      2       241
                   29610: \0361  "
                   29611: o`     56      2       242
                   29612: \0362  "
                   29613: o'     56      2       243
                   29614: \0363  "
                   29615: o^     56      2       244
                   29616: \0364  "
                   29617: o~     56      2       245
                   29618: \0365  "
                   29619: o"     56      2       246
                   29620: \0366  "
                   29621: -:     61      0       247
                   29622: \0367  "
                   29623: o/     56      0       248
                   29624: \0370  "
                   29625: u`     56      2       249
                   29626: \0371  "
                   29627: u'     56      2       250
                   29628: \0372  "
                   29629: u^     56      2       251
                   29630: \0373  "
                   29631: u"     56      2       252
                   29632: \0374  "
                   29633: y'     56      3       253
                   29634: \0375  "
                   29635: th     56      3       254
                   29636: \0376  "
                   29637: y"     56      3       255
                   29638: \0377  "
                   29639: ^a     33      2       147
                   29640: ~a     33      2       148
                   29641: Ua     33      2       150
                   29642: .a     33      2       151
                   29643: oa     56      2       154
                   29644: "a     33      2       157
                   29645: Ca     33      1       158
                   29646: va     33      2       159
                   29647: 0707070014231123751006440057030057030000010444640522627501700002600000006156post.src/devLatin1/ZIname ZI
                   29648: fontname ZapfChancery-MediumItalic
                   29649: named in prologue
                   29650: spacewidth 22
                   29651: charset
                   29652: !      28      2       33
                   29653: "      22      2       34
                   29654: dq     "
                   29655: #      44      2       35
                   29656: $      44      3       36
                   29657: %      68      2       37
                   29658: &      78      2       38
                   29659: '      24      2       39
                   29660: (      26      3       40
                   29661: )      22      3       41
                   29662: *      42      2       42
                   29663: +      52      0       43
                   29664: ,      22      0       44
                   29665: -      28      0       173
                   29666: \0255  "
                   29667: .      22      0       46
                   29668: /      34      3       47
                   29669: 0      44      2       48
                   29670: 1      44      2       49
                   29671: 2      44      2       50
                   29672: 3      44      2       51
                   29673: 4      44      2       52
                   29674: 5      44      2       53
                   29675: 6      44      2       54
                   29676: 7      44      2       55
                   29677: 8      44      2       56
                   29678: 9      44      2       57
                   29679: :      26      0       58
                   29680: ;      24      0       59
                   29681: ---    52      0       60
                   29682: =      52      0       61
                   29683: ---    52      0       62
                   29684: ?      38      2       63
                   29685: @      70      2       64
                   29686: A      62      2       65
                   29687: B      60      2       66
                   29688: C      52      2       67
                   29689: D      70      2       68
                   29690: E      62      2       69
                   29691: F      58      2       70
                   29692: G      62      3       71
                   29693: H      68      2       72
                   29694: I      38      2       73
                   29695: J      40      2       74
                   29696: K      66      3       75
                   29697: L      58      2       76
                   29698: M      84      2       77
                   29699: N      70      3       78
                   29700: O      60      2       79
                   29701: P      54      2       80
                   29702: Q      60      3       81
                   29703: R      60      3       82
                   29704: S      46      2       83
                   29705: T      50      2       84
                   29706: U      74      2       85
                   29707: V      64      2       86
                   29708: W      88      2       87
                   29709: X      56      2       88
                   29710: Y      56      3       89
                   29711: Z      62      2       90
                   29712: [      24      3       91
                   29713: \      48      2       92
                   29714: bs     "
                   29715: ]      32      3       93
                   29716: ^      34      2       147
                   29717: ---    52      2       94
                   29718: ---    50      1       95
                   29719: `      24      2       96
                   29720: a      42      0       97
                   29721: b      42      2       98
                   29722: c      34      0       99
                   29723: d      44      2       100
                   29724: e      34      0       101
                   29725: f      32      3       102
                   29726: g      40      1       103
                   29727: h      44      2       104
                   29728: i      24      2       105
                   29729: j      22      3       106
                   29730: k      44      3       107
                   29731: l      24      2       108
                   29732: m      62      0       109
                   29733: n      46      0       110
                   29734: o      40      0       111
                   29735: p      44      1       112
                   29736: q      40      3       113
                   29737: r      30      0       114
                   29738: s      32      0       115
                   29739: t      32      2       116
                   29740: u      46      0       117
                   29741: v      44      0       118
                   29742: w      68      0       119
                   29743: x      42      1       120
                   29744: y      40      1       121
                   29745: z      44      0       122
                   29746: {      24      3       123
                   29747: ---    52      2       124
                   29748: }      24      3       125
                   29749: ~      44      2       148
                   29750: ---    52      0       126
                   29751: \`     22      2       145
                   29752: ga     "
                   29753: !!     28      1       161
                   29754: \0241  "
                   29755: c|     44      2       162
                   29756: \0242  "
                   29757: ct     "
                   29758: L-     44      2       163
                   29759: \0243  "
                   29760: ps     "
                   29761: xo     44      2       164
                   29762: \0244  "
                   29763: cr     "
                   29764: Y-     44      2       165
                   29765: \0245  "
                   29766: yn     "
                   29767: ||     52      2       166
                   29768: \0246  "
                   29769: so     42      3       167
                   29770: \0247  "
                   29771: sc     "
                   29772: ""     36      2       168
                   29773: \0250  "
                   29774: :a     "
                   29775: co     74      2       169
                   29776: \0251  "
                   29777: a_     26      2       170
                   29778: \0252  "
                   29779: <<     34      0       171
                   29780: \0253  "
                   29781: -,     52      0       172
                   29782: \0254  "
                   29783: hy     28      0       173
                   29784: \0255  "
                   29785: --     52      0       45
                   29786: ro     74      2       174
                   29787: \0256  "
                   29788: rg     "
                   29789: -^     44      2       175
                   29790: \0257  "
                   29791: -a     "
                   29792: 0^     40      2       176
                   29793: \0260  "
                   29794: +-     52      0       177
                   29795: \0261  "
                   29796: 2^     26      2       178
                   29797: \0262  "
                   29798: 3^     26      2       179
                   29799: \0263  "
                   29800: \'     30      2       180
                   29801: \0264  "
                   29802: aa     "
                   29803: /u     46      1       181
                   29804: \0265  "
                   29805: P!     50      3       182
                   29806: \0266  "
                   29807: pg     "
                   29808: .^     22      0       183
                   29809: \0267  "
                   29810: ,,     30      1       184
                   29811: \0270  "
                   29812: ,a     "
                   29813: 1^     26      2       185
                   29814: \0271  "
                   29815: o_     26      2       186
                   29816: \0272  "
                   29817: >>     38      0       187
                   29818: \0273  "
                   29819: 14     66      2       188
                   29820: \0274  "
                   29821: 12     66      2       189
                   29822: \0275  "
                   29823: 34     66      2       190
                   29824: \0276  "
                   29825: ??     40      1       191
                   29826: \0277  "
                   29827: A`     62      2       192
                   29828: \0300  "
                   29829: A'     62      2       193
                   29830: \0301  "
                   29831: A^     62      2       194
                   29832: \0302  "
                   29833: A~     62      2       195
                   29834: \0303  "
                   29835: A"     62      2       196
                   29836: \0304  "
                   29837: A*     62      2       197
                   29838: \0305  "
                   29839: AE     74      2       198
                   29840: \0306  "
                   29841: C,     52      3       199
                   29842: \0307  "
                   29843: E`     62      2       200
                   29844: \0310  "
                   29845: E'     62      2       201
                   29846: \0311  "
                   29847: E^     62      2       202
                   29848: \0312  "
                   29849: E"     62      2       203
                   29850: \0313  "
                   29851: I`     38      2       204
                   29852: \0314  "
                   29853: I'     38      2       205
                   29854: \0315  "
                   29855: I^     38      2       206
                   29856: \0316  "
                   29857: I"     38      2       207
                   29858: \0317  "
                   29859: D-     70      2       208
                   29860: \0320  "
                   29861: N~     70      3       209
                   29862: \0321  "
                   29863: O`     60      2       210
                   29864: \0322  "
                   29865: O'     60      2       211
                   29866: \0323  "
                   29867: O^     60      2       212
                   29868: \0324  "
                   29869: O~     60      2       213
                   29870: \0325  "
                   29871: O"     60      2       214
                   29872: \0326  "
                   29873: xx     52      0       215
                   29874: \0327  "
                   29875: O/     66      3       216
                   29876: \0330  "
                   29877: U`     74      2       217
                   29878: \0331  "
                   29879: U'     74      2       218
                   29880: \0332  "
                   29881: U^     74      2       219
                   29882: \0333  "
                   29883: U"     74      2       220
                   29884: \0334  "
                   29885: Y'     56      3       221
                   29886: \0335  "
                   29887: TH     54      2       222
                   29888: \0336  "
                   29889: ss     42      3       223
                   29890: \0337  "
                   29891: a`     42      2       224
                   29892: \0340  "
                   29893: a'     42      2       225
                   29894: \0341  "
                   29895: a^     42      2       226
                   29896: \0342  "
                   29897: a~     42      2       227
                   29898: \0343  "
                   29899: a"     42      2       228
                   29900: \0344  "
                   29901: a*     42      2       229
                   29902: \0345  "
                   29903: ae     54      0       230
                   29904: \0346  "
                   29905: c,     34      1       231
                   29906: \0347  "
                   29907: e`     34      2       232
                   29908: \0350  "
                   29909: e'     34      2       233
                   29910: \0351  "
                   29911: e^     34      2       234
                   29912: \0352  "
                   29913: e"     34      2       235
                   29914: \0353  "
                   29915: i`     24      2       236
                   29916: \0354  "
                   29917: i'     24      2       237
                   29918: \0355  "
                   29919: i^     24      2       238
                   29920: \0356  "
                   29921: i"     24      2       239
                   29922: \0357  "
                   29923: d-     40      2       240
                   29924: \0360  "
                   29925: n~     46      2       241
                   29926: \0361  "
                   29927: o`     40      2       242
                   29928: \0362  "
                   29929: o'     40      2       243
                   29930: \0363  "
                   29931: o^     40      2       244
                   29932: \0364  "
                   29933: o~     40      2       245
                   29934: \0365  "
                   29935: o"     40      2       246
                   29936: \0366  "
                   29937: -:     52      0       247
                   29938: \0367  "
                   29939: o/     44      3       248
                   29940: \0370  "
                   29941: u`     46      2       249
                   29942: \0371  "
                   29943: u'     46      2       250
                   29944: \0372  "
                   29945: u^     46      2       251
                   29946: \0373  "
                   29947: u"     46      2       252
                   29948: \0374  "
                   29949: y'     40      3       253
                   29950: \0375  "
                   29951: th     44      3       254
                   29952: \0376  "
                   29953: y"     40      3       255
                   29954: \0377  "
                   29955: ^a     34      2       147
                   29956: ~a     44      2       148
                   29957: Ua     44      2       150
                   29958: .a     22      2       151
                   29959: oa     30      2       154
                   29960: "a     40      2       157
                   29961: Ca     28      1       158
                   29962: va     34      2       159
                   29963: 0707070014231123761006440057030057030000010445000522627501700002500000006047post.src/devLatin1/Cname C
                   29964: fontname Courier
                   29965: spacewidth 60
                   29966: charset
                   29967: !      60      2       33
                   29968: "      60      2       34
                   29969: dq     "
                   29970: #      60      2       35
                   29971: $      60      2       36
                   29972: %      60      2       37
                   29973: &      60      2       38
                   29974: '      60      2       39
                   29975: (      60      3       40
                   29976: )      60      3       41
                   29977: *      60      2       42
                   29978: +      60      2       43
                   29979: ,      60      1       44
                   29980: -      60      0       173
                   29981: \0255  "
                   29982: .      60      0       46
                   29983: /      60      2       47
                   29984: 0      60      2       48
                   29985: 1      60      2       49
                   29986: 2      60      2       50
                   29987: 3      60      2       51
                   29988: 4      60      2       52
                   29989: 5      60      2       53
                   29990: 6      60      2       54
                   29991: 7      60      2       55
                   29992: 8      60      2       56
                   29993: 9      60      2       57
                   29994: :      60      0       58
                   29995: ;      60      0       59
                   29996: <      60      2       60
                   29997: =      60      0       61
                   29998: >      60      2       62
                   29999: ?      60      2       63
                   30000: @      60      2       64
                   30001: A      60      2       65
                   30002: B      60      2       66
                   30003: C      60      2       67
                   30004: D      60      2       68
                   30005: E      60      2       69
                   30006: F      60      2       70
                   30007: G      60      2       71
                   30008: H      60      2       72
                   30009: I      60      2       73
                   30010: J      60      2       74
                   30011: K      60      2       75
                   30012: L      60      2       76
                   30013: M      60      2       77
                   30014: N      60      2       78
                   30015: O      60      2       79
                   30016: P      60      2       80
                   30017: Q      60      3       81
                   30018: R      60      2       82
                   30019: S      60      2       83
                   30020: T      60      2       84
                   30021: U      60      2       85
                   30022: V      60      2       86
                   30023: W      60      2       87
                   30024: X      60      2       88
                   30025: Y      60      2       89
                   30026: Z      60      2       90
                   30027: [      60      3       91
                   30028: \      60      2       92
                   30029: bs     "
                   30030: ]      60      3       93
                   30031: ^      60      2       94
                   30032: _      60      1       95
                   30033: `      60      2       96
                   30034: a      60      0       97
                   30035: b      60      2       98
                   30036: c      60      0       99
                   30037: d      60      2       100
                   30038: e      60      0       101
                   30039: f      60      2       102
                   30040: g      60      1       103
                   30041: h      60      2       104
                   30042: i      60      2       105
                   30043: j      60      3       106
                   30044: k      60      2       107
                   30045: l      60      2       108
                   30046: m      60      0       109
                   30047: n      60      0       110
                   30048: o      60      0       111
                   30049: p      60      1       112
                   30050: q      60      1       113
                   30051: r      60      0       114
                   30052: s      60      0       115
                   30053: t      60      2       116
                   30054: u      60      0       117
                   30055: v      60      0       118
                   30056: w      60      0       119
                   30057: x      60      0       120
                   30058: y      60      1       121
                   30059: z      60      0       122
                   30060: {      60      3       123
                   30061: |      60      3       124
                   30062: }      60      3       125
                   30063: ~      60      0       126
                   30064: \`     60      2       145
                   30065: ga     "
                   30066: !!     60      1       161
                   30067: \0241  "
                   30068: c|     60      2       162
                   30069: \0242  "
                   30070: ct     "
                   30071: L-     60      2       163
                   30072: \0243  "
                   30073: ps     "
                   30074: xo     60      2       164
                   30075: \0244  "
                   30076: cr     "
                   30077: Y-     60      2       165
                   30078: \0245  "
                   30079: yn     "
                   30080: ||     60      3       166
                   30081: \0246  "
                   30082: so     60      2       167
                   30083: \0247  "
                   30084: sc     "
                   30085: ""     60      2       168
                   30086: \0250  "
                   30087: :a     "
                   30088: co     60      2       169
                   30089: \0251  "
                   30090: a_     60      2       170
                   30091: \0252  "
                   30092: <<     60      0       171
                   30093: \0253  "
                   30094: -,     60      0       172
                   30095: \0254  "
                   30096: hy     60      0       173
                   30097: \0255  "
                   30098: --     60      0       45
                   30099: ro     60      2       174
                   30100: \0256  "
                   30101: rg     "
                   30102: -^     60      2       175
                   30103: \0257  "
                   30104: -a     "
                   30105: 0^     60      2       176
                   30106: \0260  "
                   30107: +-     60      2       177
                   30108: \0261  "
                   30109: 2^     60      2       178
                   30110: \0262  "
                   30111: 3^     60      2       179
                   30112: \0263  "
                   30113: \'     60      2       180
                   30114: \0264  "
                   30115: aa     "
                   30116: /u     60      1       181
                   30117: \0265  "
                   30118: P!     60      2       182
                   30119: \0266  "
                   30120: pg     "
                   30121: .^     60      0       183
                   30122: \0267  "
                   30123: ,,     60      1       184
                   30124: \0270  "
                   30125: ,a     "
                   30126: 1^     60      2       185
                   30127: \0271  "
                   30128: o_     60      2       186
                   30129: \0272  "
                   30130: >>     60      0       187
                   30131: \0273  "
                   30132: 14     60      2       188
                   30133: \0274  "
                   30134: 12     60      2       189
                   30135: \0275  "
                   30136: 34     60      2       190
                   30137: \0276  "
                   30138: ??     60      1       191
                   30139: \0277  "
                   30140: A`     60      2       192
                   30141: \0300  "
                   30142: A'     60      2       193
                   30143: \0301  "
                   30144: A^     60      2       194
                   30145: \0302  "
                   30146: A~     60      2       195
                   30147: \0303  "
                   30148: A"     60      2       196
                   30149: \0304  "
                   30150: A*     60      2       197
                   30151: \0305  "
                   30152: AE     60      2       198
                   30153: \0306  "
                   30154: C,     60      3       199
                   30155: \0307  "
                   30156: E`     60      2       200
                   30157: \0310  "
                   30158: E'     60      2       201
                   30159: \0311  "
                   30160: E^     60      2       202
                   30161: \0312  "
                   30162: E"     60      2       203
                   30163: \0313  "
                   30164: I`     60      2       204
                   30165: \0314  "
                   30166: I'     60      2       205
                   30167: \0315  "
                   30168: I^     60      2       206
                   30169: \0316  "
                   30170: I"     60      2       207
                   30171: \0317  "
                   30172: D-     60      2       208
                   30173: \0320  "
                   30174: N~     60      2       209
                   30175: \0321  "
                   30176: O`     60      2       210
                   30177: \0322  "
                   30178: O'     60      2       211
                   30179: \0323  "
                   30180: O^     60      2       212
                   30181: \0324  "
                   30182: O~     60      2       213
                   30183: \0325  "
                   30184: O"     60      2       214
                   30185: \0326  "
                   30186: xx     60      0       215
                   30187: \0327  "
                   30188: O/     60      2       216
                   30189: \0330  "
                   30190: U`     60      2       217
                   30191: \0331  "
                   30192: U'     60      2       218
                   30193: \0332  "
                   30194: U^     60      2       219
                   30195: \0333  "
                   30196: U"     60      2       220
                   30197: \0334  "
                   30198: Y'     60      2       221
                   30199: \0335  "
                   30200: TH     60      2       222
                   30201: \0336  "
                   30202: ss     60      2       223
                   30203: \0337  "
                   30204: a`     60      2       224
                   30205: \0340  "
                   30206: a'     60      2       225
                   30207: \0341  "
                   30208: a^     60      2       226
                   30209: \0342  "
                   30210: a~     60      2       227
                   30211: \0343  "
                   30212: a"     60      2       228
                   30213: \0344  "
                   30214: a*     60      2       229
                   30215: \0345  "
                   30216: ae     60      0       230
                   30217: \0346  "
                   30218: c,     60      1       231
                   30219: \0347  "
                   30220: e`     60      2       232
                   30221: \0350  "
                   30222: e'     60      2       233
                   30223: \0351  "
                   30224: e^     60      2       234
                   30225: \0352  "
                   30226: e"     60      2       235
                   30227: \0353  "
                   30228: i`     60      2       236
                   30229: \0354  "
                   30230: i'     60      2       237
                   30231: \0355  "
                   30232: i^     60      2       238
                   30233: \0356  "
                   30234: i"     60      2       239
                   30235: \0357  "
                   30236: d-     60      2       240
                   30237: \0360  "
                   30238: n~     60      2       241
                   30239: \0361  "
                   30240: o`     60      2       242
                   30241: \0362  "
                   30242: o'     60      2       243
                   30243: \0363  "
                   30244: o^     60      2       244
                   30245: \0364  "
                   30246: o~     60      2       245
                   30247: \0365  "
                   30248: o"     60      2       246
                   30249: \0366  "
                   30250: -:     60      2       247
                   30251: \0367  "
                   30252: o/     60      0       248
                   30253: \0370  "
                   30254: u`     60      2       249
                   30255: \0371  "
                   30256: u'     60      2       250
                   30257: \0372  "
                   30258: u^     60      2       251
                   30259: \0373  "
                   30260: u"     60      2       252
                   30261: \0374  "
                   30262: y'     60      3       253
                   30263: \0375  "
                   30264: th     60      3       254
                   30265: \0376  "
                   30266: y"     60      3       255
                   30267: \0377  "
                   30268: ^a     60      2       147
                   30269: ~a     60      2       148
                   30270: Ua     60      2       150
                   30271: .a     60      2       151
                   30272: oa     60      2       154
                   30273: "a     60      2       157
                   30274: Ca     60      1       158
                   30275: va     60      2       159
                   30276: 0707070014231123771006440057030057030000010445040522627501700002600000006077post.src/devLatin1/CBname CB
                   30277: fontname Courier-Bold
                   30278: named in prologue
                   30279: spacewidth 60
                   30280: charset
                   30281: !      60      2       33
                   30282: "      60      2       34
                   30283: dq     "
                   30284: #      60      2       35
                   30285: $      60      2       36
                   30286: %      60      2       37
                   30287: &      60      2       38
                   30288: '      60      2       39
                   30289: (      60      3       40
                   30290: )      60      3       41
                   30291: *      60      2       42
                   30292: +      60      2       43
                   30293: ,      60      1       44
                   30294: -      60      0       173
                   30295: \0255  "
                   30296: .      60      0       46
                   30297: /      60      2       47
                   30298: 0      60      2       48
                   30299: 1      60      2       49
                   30300: 2      60      2       50
                   30301: 3      60      2       51
                   30302: 4      60      2       52
                   30303: 5      60      2       53
                   30304: 6      60      2       54
                   30305: 7      60      2       55
                   30306: 8      60      2       56
                   30307: 9      60      2       57
                   30308: :      60      0       58
                   30309: ;      60      0       59
                   30310: <      60      2       60
                   30311: =      60      0       61
                   30312: >      60      2       62
                   30313: ?      60      2       63
                   30314: @      60      2       64
                   30315: A      60      2       65
                   30316: B      60      2       66
                   30317: C      60      2       67
                   30318: D      60      2       68
                   30319: E      60      2       69
                   30320: F      60      2       70
                   30321: G      60      2       71
                   30322: H      60      2       72
                   30323: I      60      2       73
                   30324: J      60      2       74
                   30325: K      60      2       75
                   30326: L      60      2       76
                   30327: M      60      2       77
                   30328: N      60      2       78
                   30329: O      60      2       79
                   30330: P      60      2       80
                   30331: Q      60      3       81
                   30332: R      60      2       82
                   30333: S      60      2       83
                   30334: T      60      2       84
                   30335: U      60      2       85
                   30336: V      60      2       86
                   30337: W      60      2       87
                   30338: X      60      2       88
                   30339: Y      60      2       89
                   30340: Z      60      2       90
                   30341: [      60      3       91
                   30342: \      60      2       92
                   30343: bs     "
                   30344: ]      60      3       93
                   30345: ^      60      2       94
                   30346: _      60      1       95
                   30347: `      60      2       96
                   30348: a      60      0       97
                   30349: b      60      2       98
                   30350: c      60      0       99
                   30351: d      60      2       100
                   30352: e      60      0       101
                   30353: f      60      2       102
                   30354: g      60      1       103
                   30355: h      60      2       104
                   30356: i      60      2       105
                   30357: j      60      3       106
                   30358: k      60      2       107
                   30359: l      60      2       108
                   30360: m      60      0       109
                   30361: n      60      0       110
                   30362: o      60      0       111
                   30363: p      60      1       112
                   30364: q      60      1       113
                   30365: r      60      0       114
                   30366: s      60      0       115
                   30367: t      60      2       116
                   30368: u      60      0       117
                   30369: v      60      0       118
                   30370: w      60      0       119
                   30371: x      60      0       120
                   30372: y      60      1       121
                   30373: z      60      0       122
                   30374: {      60      3       123
                   30375: |      60      3       124
                   30376: }      60      3       125
                   30377: ~      60      0       126
                   30378: \`     60      2       145
                   30379: ga     "
                   30380: !!     60      1       161
                   30381: \0241  "
                   30382: c|     60      2       162
                   30383: \0242  "
                   30384: ct     "
                   30385: L-     60      2       163
                   30386: \0243  "
                   30387: ps     "
                   30388: xo     60      2       164
                   30389: \0244  "
                   30390: cr     "
                   30391: Y-     60      2       165
                   30392: \0245  "
                   30393: yn     "
                   30394: ||     60      3       166
                   30395: \0246  "
                   30396: so     60      2       167
                   30397: \0247  "
                   30398: sc     "
                   30399: ""     60      2       168
                   30400: \0250  "
                   30401: :a     "
                   30402: co     60      2       169
                   30403: \0251  "
                   30404: a_     60      2       170
                   30405: \0252  "
                   30406: <<     60      0       171
                   30407: \0253  "
                   30408: -,     60      0       172
                   30409: \0254  "
                   30410: hy     60      0       173
                   30411: \0255  "
                   30412: --     60      0       45
                   30413: ro     60      2       174
                   30414: \0256  "
                   30415: rg     "
                   30416: -^     60      2       175
                   30417: \0257  "
                   30418: -a     "
                   30419: 0^     60      2       176
                   30420: \0260  "
                   30421: +-     60      2       177
                   30422: \0261  "
                   30423: 2^     60      2       178
                   30424: \0262  "
                   30425: 3^     60      2       179
                   30426: \0263  "
                   30427: \'     60      2       180
                   30428: \0264  "
                   30429: aa     "
                   30430: /u     60      1       181
                   30431: \0265  "
                   30432: P!     60      2       182
                   30433: \0266  "
                   30434: pg     "
                   30435: .^     60      0       183
                   30436: \0267  "
                   30437: ,,     60      1       184
                   30438: \0270  "
                   30439: ,a     "
                   30440: 1^     60      2       185
                   30441: \0271  "
                   30442: o_     60      2       186
                   30443: \0272  "
                   30444: >>     60      0       187
                   30445: \0273  "
                   30446: 14     60      2       188
                   30447: \0274  "
                   30448: 12     60      2       189
                   30449: \0275  "
                   30450: 34     60      2       190
                   30451: \0276  "
                   30452: ??     60      1       191
                   30453: \0277  "
                   30454: A`     60      2       192
                   30455: \0300  "
                   30456: A'     60      2       193
                   30457: \0301  "
                   30458: A^     60      2       194
                   30459: \0302  "
                   30460: A~     60      2       195
                   30461: \0303  "
                   30462: A"     60      2       196
                   30463: \0304  "
                   30464: A*     60      2       197
                   30465: \0305  "
                   30466: AE     60      2       198
                   30467: \0306  "
                   30468: C,     60      3       199
                   30469: \0307  "
                   30470: E`     60      2       200
                   30471: \0310  "
                   30472: E'     60      2       201
                   30473: \0311  "
                   30474: E^     60      2       202
                   30475: \0312  "
                   30476: E"     60      2       203
                   30477: \0313  "
                   30478: I`     60      2       204
                   30479: \0314  "
                   30480: I'     60      2       205
                   30481: \0315  "
                   30482: I^     60      2       206
                   30483: \0316  "
                   30484: I"     60      2       207
                   30485: \0317  "
                   30486: D-     60      2       208
                   30487: \0320  "
                   30488: N~     60      2       209
                   30489: \0321  "
                   30490: O`     60      2       210
                   30491: \0322  "
                   30492: O'     60      2       211
                   30493: \0323  "
                   30494: O^     60      2       212
                   30495: \0324  "
                   30496: O~     60      2       213
                   30497: \0325  "
                   30498: O"     60      2       214
                   30499: \0326  "
                   30500: xx     60      0       215
                   30501: \0327  "
                   30502: O/     60      2       216
                   30503: \0330  "
                   30504: U`     60      2       217
                   30505: \0331  "
                   30506: U'     60      2       218
                   30507: \0332  "
                   30508: U^     60      2       219
                   30509: \0333  "
                   30510: U"     60      2       220
                   30511: \0334  "
                   30512: Y'     60      2       221
                   30513: \0335  "
                   30514: TH     60      2       222
                   30515: \0336  "
                   30516: ss     60      2       223
                   30517: \0337  "
                   30518: a`     60      2       224
                   30519: \0340  "
                   30520: a'     60      2       225
                   30521: \0341  "
                   30522: a^     60      2       226
                   30523: \0342  "
                   30524: a~     60      2       227
                   30525: \0343  "
                   30526: a"     60      2       228
                   30527: \0344  "
                   30528: a*     60      2       229
                   30529: \0345  "
                   30530: ae     60      0       230
                   30531: \0346  "
                   30532: c,     60      1       231
                   30533: \0347  "
                   30534: e`     60      2       232
                   30535: \0350  "
                   30536: e'     60      2       233
                   30537: \0351  "
                   30538: e^     60      2       234
                   30539: \0352  "
                   30540: e"     60      2       235
                   30541: \0353  "
                   30542: i`     60      2       236
                   30543: \0354  "
                   30544: i'     60      2       237
                   30545: \0355  "
                   30546: i^     60      2       238
                   30547: \0356  "
                   30548: i"     60      2       239
                   30549: \0357  "
                   30550: d-     60      2       240
                   30551: \0360  "
                   30552: n~     60      2       241
                   30553: \0361  "
                   30554: o`     60      2       242
                   30555: \0362  "
                   30556: o'     60      2       243
                   30557: \0363  "
                   30558: o^     60      2       244
                   30559: \0364  "
                   30560: o~     60      2       245
                   30561: \0365  "
                   30562: o"     60      2       246
                   30563: \0366  "
                   30564: -:     60      2       247
                   30565: \0367  "
                   30566: o/     60      0       248
                   30567: \0370  "
                   30568: u`     60      2       249
                   30569: \0371  "
                   30570: u'     60      2       250
                   30571: \0372  "
                   30572: u^     60      2       251
                   30573: \0373  "
                   30574: u"     60      2       252
                   30575: \0374  "
                   30576: y'     60      3       253
                   30577: \0375  "
                   30578: th     60      3       254
                   30579: \0376  "
                   30580: y"     60      3       255
                   30581: \0377  "
                   30582: ^a     60      2       147
                   30583: ~a     60      2       148
                   30584: Ua     60      2       150
                   30585: .a     60      2       151
                   30586: oa     60      2       154
                   30587: "a     60      2       157
                   30588: Ca     60      1       158
                   30589: va     60      2       159
                   30590: 0707070014231124001006440057030057030000010445200522627501700002600000006102post.src/devLatin1/CIname CI
                   30591: fontname Courier-Oblique
                   30592: named in prologue
                   30593: spacewidth 60
                   30594: charset
                   30595: !      60      2       33
                   30596: "      60      2       34
                   30597: dq     "
                   30598: #      60      2       35
                   30599: $      60      2       36
                   30600: %      60      2       37
                   30601: &      60      2       38
                   30602: '      60      2       39
                   30603: (      60      3       40
                   30604: )      60      3       41
                   30605: *      60      2       42
                   30606: +      60      2       43
                   30607: ,      60      1       44
                   30608: -      60      0       173
                   30609: \0255  "
                   30610: .      60      0       46
                   30611: /      60      2       47
                   30612: 0      60      2       48
                   30613: 1      60      2       49
                   30614: 2      60      2       50
                   30615: 3      60      2       51
                   30616: 4      60      2       52
                   30617: 5      60      2       53
                   30618: 6      60      2       54
                   30619: 7      60      2       55
                   30620: 8      60      2       56
                   30621: 9      60      2       57
                   30622: :      60      0       58
                   30623: ;      60      0       59
                   30624: <      60      2       60
                   30625: =      60      0       61
                   30626: >      60      2       62
                   30627: ?      60      2       63
                   30628: @      60      2       64
                   30629: A      60      2       65
                   30630: B      60      2       66
                   30631: C      60      2       67
                   30632: D      60      2       68
                   30633: E      60      2       69
                   30634: F      60      2       70
                   30635: G      60      2       71
                   30636: H      60      2       72
                   30637: I      60      2       73
                   30638: J      60      2       74
                   30639: K      60      2       75
                   30640: L      60      2       76
                   30641: M      60      2       77
                   30642: N      60      2       78
                   30643: O      60      2       79
                   30644: P      60      2       80
                   30645: Q      60      3       81
                   30646: R      60      2       82
                   30647: S      60      2       83
                   30648: T      60      2       84
                   30649: U      60      2       85
                   30650: V      60      2       86
                   30651: W      60      2       87
                   30652: X      60      2       88
                   30653: Y      60      2       89
                   30654: Z      60      2       90
                   30655: [      60      3       91
                   30656: \      60      2       92
                   30657: bs     "
                   30658: ]      60      3       93
                   30659: ^      60      2       94
                   30660: _      60      1       95
                   30661: `      60      2       96
                   30662: a      60      0       97
                   30663: b      60      2       98
                   30664: c      60      0       99
                   30665: d      60      2       100
                   30666: e      60      0       101
                   30667: f      60      2       102
                   30668: g      60      1       103
                   30669: h      60      2       104
                   30670: i      60      2       105
                   30671: j      60      3       106
                   30672: k      60      2       107
                   30673: l      60      2       108
                   30674: m      60      0       109
                   30675: n      60      0       110
                   30676: o      60      0       111
                   30677: p      60      1       112
                   30678: q      60      1       113
                   30679: r      60      0       114
                   30680: s      60      0       115
                   30681: t      60      2       116
                   30682: u      60      0       117
                   30683: v      60      0       118
                   30684: w      60      0       119
                   30685: x      60      0       120
                   30686: y      60      1       121
                   30687: z      60      0       122
                   30688: {      60      3       123
                   30689: |      60      3       124
                   30690: }      60      3       125
                   30691: ~      60      0       126
                   30692: \`     60      2       145
                   30693: ga     "
                   30694: !!     60      1       161
                   30695: \0241  "
                   30696: c|     60      2       162
                   30697: \0242  "
                   30698: ct     "
                   30699: L-     60      2       163
                   30700: \0243  "
                   30701: ps     "
                   30702: xo     60      2       164
                   30703: \0244  "
                   30704: cr     "
                   30705: Y-     60      2       165
                   30706: \0245  "
                   30707: yn     "
                   30708: ||     60      3       166
                   30709: \0246  "
                   30710: so     60      2       167
                   30711: \0247  "
                   30712: sc     "
                   30713: ""     60      2       168
                   30714: \0250  "
                   30715: :a     "
                   30716: co     60      2       169
                   30717: \0251  "
                   30718: a_     60      2       170
                   30719: \0252  "
                   30720: <<     60      0       171
                   30721: \0253  "
                   30722: -,     60      0       172
                   30723: \0254  "
                   30724: hy     60      0       173
                   30725: \0255  "
                   30726: --     60      0       45
                   30727: ro     60      2       174
                   30728: \0256  "
                   30729: rg     "
                   30730: -^     60      2       175
                   30731: \0257  "
                   30732: -a     "
                   30733: 0^     60      2       176
                   30734: \0260  "
                   30735: +-     60      2       177
                   30736: \0261  "
                   30737: 2^     60      2       178
                   30738: \0262  "
                   30739: 3^     60      2       179
                   30740: \0263  "
                   30741: \'     60      2       180
                   30742: \0264  "
                   30743: aa     "
                   30744: /u     60      1       181
                   30745: \0265  "
                   30746: P!     60      2       182
                   30747: \0266  "
                   30748: pg     "
                   30749: .^     60      0       183
                   30750: \0267  "
                   30751: ,,     60      1       184
                   30752: \0270  "
                   30753: ,a     "
                   30754: 1^     60      2       185
                   30755: \0271  "
                   30756: o_     60      2       186
                   30757: \0272  "
                   30758: >>     60      0       187
                   30759: \0273  "
                   30760: 14     60      2       188
                   30761: \0274  "
                   30762: 12     60      2       189
                   30763: \0275  "
                   30764: 34     60      2       190
                   30765: \0276  "
                   30766: ??     60      1       191
                   30767: \0277  "
                   30768: A`     60      2       192
                   30769: \0300  "
                   30770: A'     60      2       193
                   30771: \0301  "
                   30772: A^     60      2       194
                   30773: \0302  "
                   30774: A~     60      2       195
                   30775: \0303  "
                   30776: A"     60      2       196
                   30777: \0304  "
                   30778: A*     60      2       197
                   30779: \0305  "
                   30780: AE     60      2       198
                   30781: \0306  "
                   30782: C,     60      3       199
                   30783: \0307  "
                   30784: E`     60      2       200
                   30785: \0310  "
                   30786: E'     60      2       201
                   30787: \0311  "
                   30788: E^     60      2       202
                   30789: \0312  "
                   30790: E"     60      2       203
                   30791: \0313  "
                   30792: I`     60      2       204
                   30793: \0314  "
                   30794: I'     60      2       205
                   30795: \0315  "
                   30796: I^     60      2       206
                   30797: \0316  "
                   30798: I"     60      2       207
                   30799: \0317  "
                   30800: D-     60      2       208
                   30801: \0320  "
                   30802: N~     60      2       209
                   30803: \0321  "
                   30804: O`     60      2       210
                   30805: \0322  "
                   30806: O'     60      2       211
                   30807: \0323  "
                   30808: O^     60      2       212
                   30809: \0324  "
                   30810: O~     60      2       213
                   30811: \0325  "
                   30812: O"     60      2       214
                   30813: \0326  "
                   30814: xx     60      0       215
                   30815: \0327  "
                   30816: O/     60      2       216
                   30817: \0330  "
                   30818: U`     60      2       217
                   30819: \0331  "
                   30820: U'     60      2       218
                   30821: \0332  "
                   30822: U^     60      2       219
                   30823: \0333  "
                   30824: U"     60      2       220
                   30825: \0334  "
                   30826: Y'     60      2       221
                   30827: \0335  "
                   30828: TH     60      2       222
                   30829: \0336  "
                   30830: ss     60      2       223
                   30831: \0337  "
                   30832: a`     60      2       224
                   30833: \0340  "
                   30834: a'     60      2       225
                   30835: \0341  "
                   30836: a^     60      2       226
                   30837: \0342  "
                   30838: a~     60      2       227
                   30839: \0343  "
                   30840: a"     60      2       228
                   30841: \0344  "
                   30842: a*     60      2       229
                   30843: \0345  "
                   30844: ae     60      0       230
                   30845: \0346  "
                   30846: c,     60      1       231
                   30847: \0347  "
                   30848: e`     60      2       232
                   30849: \0350  "
                   30850: e'     60      2       233
                   30851: \0351  "
                   30852: e^     60      2       234
                   30853: \0352  "
                   30854: e"     60      2       235
                   30855: \0353  "
                   30856: i`     60      2       236
                   30857: \0354  "
                   30858: i'     60      2       237
                   30859: \0355  "
                   30860: i^     60      2       238
                   30861: \0356  "
                   30862: i"     60      2       239
                   30863: \0357  "
                   30864: d-     60      2       240
                   30865: \0360  "
                   30866: n~     60      2       241
                   30867: \0361  "
                   30868: o`     60      2       242
                   30869: \0362  "
                   30870: o'     60      2       243
                   30871: \0363  "
                   30872: o^     60      2       244
                   30873: \0364  "
                   30874: o~     60      2       245
                   30875: \0365  "
                   30876: o"     60      2       246
                   30877: \0366  "
                   30878: -:     60      2       247
                   30879: \0367  "
                   30880: o/     60      0       248
                   30881: \0370  "
                   30882: u`     60      2       249
                   30883: \0371  "
                   30884: u'     60      2       250
                   30885: \0372  "
                   30886: u^     60      2       251
                   30887: \0373  "
                   30888: u"     60      2       252
                   30889: \0374  "
                   30890: y'     60      3       253
                   30891: \0375  "
                   30892: th     60      3       254
                   30893: \0376  "
                   30894: y"     60      3       255
                   30895: \0377  "
                   30896: ^a     60      2       147
                   30897: ~a     60      2       148
                   30898: Ua     60      2       150
                   30899: .a     60      2       151
                   30900: oa     60      2       154
                   30901: "a     60      2       157
                   30902: Ca     60      1       158
                   30903: va     60      2       159
                   30904: 0707070014231124011006440057030057030000010445240522627501700002600000006072post.src/devLatin1/COname CO
                   30905: fontname Courier
                   30906: named in prologue
                   30907: spacewidth 60
                   30908: charset
                   30909: !      60      2       33
                   30910: "      60      2       34
                   30911: dq     "
                   30912: #      60      2       35
                   30913: $      60      2       36
                   30914: %      60      2       37
                   30915: &      60      2       38
                   30916: '      60      2       39
                   30917: (      60      3       40
                   30918: )      60      3       41
                   30919: *      60      2       42
                   30920: +      60      2       43
                   30921: ,      60      1       44
                   30922: -      60      0       173
                   30923: \0255  "
                   30924: .      60      0       46
                   30925: /      60      2       47
                   30926: 0      60      2       48
                   30927: 1      60      2       49
                   30928: 2      60      2       50
                   30929: 3      60      2       51
                   30930: 4      60      2       52
                   30931: 5      60      2       53
                   30932: 6      60      2       54
                   30933: 7      60      2       55
                   30934: 8      60      2       56
                   30935: 9      60      2       57
                   30936: :      60      0       58
                   30937: ;      60      0       59
                   30938: <      60      2       60
                   30939: =      60      0       61
                   30940: >      60      2       62
                   30941: ?      60      2       63
                   30942: @      60      2       64
                   30943: A      60      2       65
                   30944: B      60      2       66
                   30945: C      60      2       67
                   30946: D      60      2       68
                   30947: E      60      2       69
                   30948: F      60      2       70
                   30949: G      60      2       71
                   30950: H      60      2       72
                   30951: I      60      2       73
                   30952: J      60      2       74
                   30953: K      60      2       75
                   30954: L      60      2       76
                   30955: M      60      2       77
                   30956: N      60      2       78
                   30957: O      60      2       79
                   30958: P      60      2       80
                   30959: Q      60      3       81
                   30960: R      60      2       82
                   30961: S      60      2       83
                   30962: T      60      2       84
                   30963: U      60      2       85
                   30964: V      60      2       86
                   30965: W      60      2       87
                   30966: X      60      2       88
                   30967: Y      60      2       89
                   30968: Z      60      2       90
                   30969: [      60      3       91
                   30970: \      60      2       92
                   30971: bs     "
                   30972: ]      60      3       93
                   30973: ^      60      2       94
                   30974: _      60      1       95
                   30975: `      60      2       96
                   30976: a      60      0       97
                   30977: b      60      2       98
                   30978: c      60      0       99
                   30979: d      60      2       100
                   30980: e      60      0       101
                   30981: f      60      2       102
                   30982: g      60      1       103
                   30983: h      60      2       104
                   30984: i      60      2       105
                   30985: j      60      3       106
                   30986: k      60      2       107
                   30987: l      60      2       108
                   30988: m      60      0       109
                   30989: n      60      0       110
                   30990: o      60      0       111
                   30991: p      60      1       112
                   30992: q      60      1       113
                   30993: r      60      0       114
                   30994: s      60      0       115
                   30995: t      60      2       116
                   30996: u      60      0       117
                   30997: v      60      0       118
                   30998: w      60      0       119
                   30999: x      60      0       120
                   31000: y      60      1       121
                   31001: z      60      0       122
                   31002: {      60      3       123
                   31003: |      60      3       124
                   31004: }      60      3       125
                   31005: ~      60      0       126
                   31006: \`     60      2       145
                   31007: ga     "
                   31008: !!     60      1       161
                   31009: \0241  "
                   31010: c|     60      2       162
                   31011: \0242  "
                   31012: ct     "
                   31013: L-     60      2       163
                   31014: \0243  "
                   31015: ps     "
                   31016: xo     60      2       164
                   31017: \0244  "
                   31018: cr     "
                   31019: Y-     60      2       165
                   31020: \0245  "
                   31021: yn     "
                   31022: ||     60      3       166
                   31023: \0246  "
                   31024: so     60      2       167
                   31025: \0247  "
                   31026: sc     "
                   31027: ""     60      2       168
                   31028: \0250  "
                   31029: :a     "
                   31030: co     60      2       169
                   31031: \0251  "
                   31032: a_     60      2       170
                   31033: \0252  "
                   31034: <<     60      0       171
                   31035: \0253  "
                   31036: -,     60      0       172
                   31037: \0254  "
                   31038: hy     60      0       173
                   31039: \0255  "
                   31040: --     60      0       45
                   31041: ro     60      2       174
                   31042: \0256  "
                   31043: rg     "
                   31044: -^     60      2       175
                   31045: \0257  "
                   31046: -a     "
                   31047: 0^     60      2       176
                   31048: \0260  "
                   31049: +-     60      2       177
                   31050: \0261  "
                   31051: 2^     60      2       178
                   31052: \0262  "
                   31053: 3^     60      2       179
                   31054: \0263  "
                   31055: \'     60      2       180
                   31056: \0264  "
                   31057: aa     "
                   31058: /u     60      1       181
                   31059: \0265  "
                   31060: P!     60      2       182
                   31061: \0266  "
                   31062: pg     "
                   31063: .^     60      0       183
                   31064: \0267  "
                   31065: ,,     60      1       184
                   31066: \0270  "
                   31067: ,a     "
                   31068: 1^     60      2       185
                   31069: \0271  "
                   31070: o_     60      2       186
                   31071: \0272  "
                   31072: >>     60      0       187
                   31073: \0273  "
                   31074: 14     60      2       188
                   31075: \0274  "
                   31076: 12     60      2       189
                   31077: \0275  "
                   31078: 34     60      2       190
                   31079: \0276  "
                   31080: ??     60      1       191
                   31081: \0277  "
                   31082: A`     60      2       192
                   31083: \0300  "
                   31084: A'     60      2       193
                   31085: \0301  "
                   31086: A^     60      2       194
                   31087: \0302  "
                   31088: A~     60      2       195
                   31089: \0303  "
                   31090: A"     60      2       196
                   31091: \0304  "
                   31092: A*     60      2       197
                   31093: \0305  "
                   31094: AE     60      2       198
                   31095: \0306  "
                   31096: C,     60      3       199
                   31097: \0307  "
                   31098: E`     60      2       200
                   31099: \0310  "
                   31100: E'     60      2       201
                   31101: \0311  "
                   31102: E^     60      2       202
                   31103: \0312  "
                   31104: E"     60      2       203
                   31105: \0313  "
                   31106: I`     60      2       204
                   31107: \0314  "
                   31108: I'     60      2       205
                   31109: \0315  "
                   31110: I^     60      2       206
                   31111: \0316  "
                   31112: I"     60      2       207
                   31113: \0317  "
                   31114: D-     60      2       208
                   31115: \0320  "
                   31116: N~     60      2       209
                   31117: \0321  "
                   31118: O`     60      2       210
                   31119: \0322  "
                   31120: O'     60      2       211
                   31121: \0323  "
                   31122: O^     60      2       212
                   31123: \0324  "
                   31124: O~     60      2       213
                   31125: \0325  "
                   31126: O"     60      2       214
                   31127: \0326  "
                   31128: xx     60      0       215
                   31129: \0327  "
                   31130: O/     60      2       216
                   31131: \0330  "
                   31132: U`     60      2       217
                   31133: \0331  "
                   31134: U'     60      2       218
                   31135: \0332  "
                   31136: U^     60      2       219
                   31137: \0333  "
                   31138: U"     60      2       220
                   31139: \0334  "
                   31140: Y'     60      2       221
                   31141: \0335  "
                   31142: TH     60      2       222
                   31143: \0336  "
                   31144: ss     60      2       223
                   31145: \0337  "
                   31146: a`     60      2       224
                   31147: \0340  "
                   31148: a'     60      2       225
                   31149: \0341  "
                   31150: a^     60      2       226
                   31151: \0342  "
                   31152: a~     60      2       227
                   31153: \0343  "
                   31154: a"     60      2       228
                   31155: \0344  "
                   31156: a*     60      2       229
                   31157: \0345  "
                   31158: ae     60      0       230
                   31159: \0346  "
                   31160: c,     60      1       231
                   31161: \0347  "
                   31162: e`     60      2       232
                   31163: \0350  "
                   31164: e'     60      2       233
                   31165: \0351  "
                   31166: e^     60      2       234
                   31167: \0352  "
                   31168: e"     60      2       235
                   31169: \0353  "
                   31170: i`     60      2       236
                   31171: \0354  "
                   31172: i'     60      2       237
                   31173: \0355  "
                   31174: i^     60      2       238
                   31175: \0356  "
                   31176: i"     60      2       239
                   31177: \0357  "
                   31178: d-     60      2       240
                   31179: \0360  "
                   31180: n~     60      2       241
                   31181: \0361  "
                   31182: o`     60      2       242
                   31183: \0362  "
                   31184: o'     60      2       243
                   31185: \0363  "
                   31186: o^     60      2       244
                   31187: \0364  "
                   31188: o~     60      2       245
                   31189: \0365  "
                   31190: o"     60      2       246
                   31191: \0366  "
                   31192: -:     60      2       247
                   31193: \0367  "
                   31194: o/     60      0       248
                   31195: \0370  "
                   31196: u`     60      2       249
                   31197: \0371  "
                   31198: u'     60      2       250
                   31199: \0372  "
                   31200: u^     60      2       251
                   31201: \0373  "
                   31202: u"     60      2       252
                   31203: \0374  "
                   31204: y'     60      3       253
                   31205: \0375  "
                   31206: th     60      3       254
                   31207: \0376  "
                   31208: y"     60      3       255
                   31209: \0377  "
                   31210: ^a     60      2       147
                   31211: ~a     60      2       148
                   31212: Ua     60      2       150
                   31213: .a     60      2       151
                   31214: oa     60      2       154
                   31215: "a     60      2       157
                   31216: Ca     60      1       158
                   31217: va     60      2       159
                   31218: 0707070014231124021006440057030057030000010445400522627501700002600000006072post.src/devLatin1/CWname CW
                   31219: fontname Courier
                   31220: named in prologue
                   31221: spacewidth 60
                   31222: charset
                   31223: !      60      2       33
                   31224: "      60      2       34
                   31225: dq     "
                   31226: #      60      2       35
                   31227: $      60      2       36
                   31228: %      60      2       37
                   31229: &      60      2       38
                   31230: '      60      2       39
                   31231: (      60      3       40
                   31232: )      60      3       41
                   31233: *      60      2       42
                   31234: +      60      2       43
                   31235: ,      60      1       44
                   31236: -      60      0       173
                   31237: \0255  "
                   31238: .      60      0       46
                   31239: /      60      2       47
                   31240: 0      60      2       48
                   31241: 1      60      2       49
                   31242: 2      60      2       50
                   31243: 3      60      2       51
                   31244: 4      60      2       52
                   31245: 5      60      2       53
                   31246: 6      60      2       54
                   31247: 7      60      2       55
                   31248: 8      60      2       56
                   31249: 9      60      2       57
                   31250: :      60      0       58
                   31251: ;      60      0       59
                   31252: <      60      2       60
                   31253: =      60      0       61
                   31254: >      60      2       62
                   31255: ?      60      2       63
                   31256: @      60      2       64
                   31257: A      60      2       65
                   31258: B      60      2       66
                   31259: C      60      2       67
                   31260: D      60      2       68
                   31261: E      60      2       69
                   31262: F      60      2       70
                   31263: G      60      2       71
                   31264: H      60      2       72
                   31265: I      60      2       73
                   31266: J      60      2       74
                   31267: K      60      2       75
                   31268: L      60      2       76
                   31269: M      60      2       77
                   31270: N      60      2       78
                   31271: O      60      2       79
                   31272: P      60      2       80
                   31273: Q      60      3       81
                   31274: R      60      2       82
                   31275: S      60      2       83
                   31276: T      60      2       84
                   31277: U      60      2       85
                   31278: V      60      2       86
                   31279: W      60      2       87
                   31280: X      60      2       88
                   31281: Y      60      2       89
                   31282: Z      60      2       90
                   31283: [      60      3       91
                   31284: \      60      2       92
                   31285: bs     "
                   31286: ]      60      3       93
                   31287: ^      60      2       94
                   31288: _      60      1       95
                   31289: `      60      2       96
                   31290: a      60      0       97
                   31291: b      60      2       98
                   31292: c      60      0       99
                   31293: d      60      2       100
                   31294: e      60      0       101
                   31295: f      60      2       102
                   31296: g      60      1       103
                   31297: h      60      2       104
                   31298: i      60      2       105
                   31299: j      60      3       106
                   31300: k      60      2       107
                   31301: l      60      2       108
                   31302: m      60      0       109
                   31303: n      60      0       110
                   31304: o      60      0       111
                   31305: p      60      1       112
                   31306: q      60      1       113
                   31307: r      60      0       114
                   31308: s      60      0       115
                   31309: t      60      2       116
                   31310: u      60      0       117
                   31311: v      60      0       118
                   31312: w      60      0       119
                   31313: x      60      0       120
                   31314: y      60      1       121
                   31315: z      60      0       122
                   31316: {      60      3       123
                   31317: |      60      3       124
                   31318: }      60      3       125
                   31319: ~      60      0       126
                   31320: \`     60      2       145
                   31321: ga     "
                   31322: !!     60      1       161
                   31323: \0241  "
                   31324: c|     60      2       162
                   31325: \0242  "
                   31326: ct     "
                   31327: L-     60      2       163
                   31328: \0243  "
                   31329: ps     "
                   31330: xo     60      2       164
                   31331: \0244  "
                   31332: cr     "
                   31333: Y-     60      2       165
                   31334: \0245  "
                   31335: yn     "
                   31336: ||     60      3       166
                   31337: \0246  "
                   31338: so     60      2       167
                   31339: \0247  "
                   31340: sc     "
                   31341: ""     60      2       168
                   31342: \0250  "
                   31343: :a     "
                   31344: co     60      2       169
                   31345: \0251  "
                   31346: a_     60      2       170
                   31347: \0252  "
                   31348: <<     60      0       171
                   31349: \0253  "
                   31350: -,     60      0       172
                   31351: \0254  "
                   31352: hy     60      0       173
                   31353: \0255  "
                   31354: --     60      0       45
                   31355: ro     60      2       174
                   31356: \0256  "
                   31357: rg     "
                   31358: -^     60      2       175
                   31359: \0257  "
                   31360: -a     "
                   31361: 0^     60      2       176
                   31362: \0260  "
                   31363: +-     60      2       177
                   31364: \0261  "
                   31365: 2^     60      2       178
                   31366: \0262  "
                   31367: 3^     60      2       179
                   31368: \0263  "
                   31369: \'     60      2       180
                   31370: \0264  "
                   31371: aa     "
                   31372: /u     60      1       181
                   31373: \0265  "
                   31374: P!     60      2       182
                   31375: \0266  "
                   31376: pg     "
                   31377: .^     60      0       183
                   31378: \0267  "
                   31379: ,,     60      1       184
                   31380: \0270  "
                   31381: ,a     "
                   31382: 1^     60      2       185
                   31383: \0271  "
                   31384: o_     60      2       186
                   31385: \0272  "
                   31386: >>     60      0       187
                   31387: \0273  "
                   31388: 14     60      2       188
                   31389: \0274  "
                   31390: 12     60      2       189
                   31391: \0275  "
                   31392: 34     60      2       190
                   31393: \0276  "
                   31394: ??     60      1       191
                   31395: \0277  "
                   31396: A`     60      2       192
                   31397: \0300  "
                   31398: A'     60      2       193
                   31399: \0301  "
                   31400: A^     60      2       194
                   31401: \0302  "
                   31402: A~     60      2       195
                   31403: \0303  "
                   31404: A"     60      2       196
                   31405: \0304  "
                   31406: A*     60      2       197
                   31407: \0305  "
                   31408: AE     60      2       198
                   31409: \0306  "
                   31410: C,     60      3       199
                   31411: \0307  "
                   31412: E`     60      2       200
                   31413: \0310  "
                   31414: E'     60      2       201
                   31415: \0311  "
                   31416: E^     60      2       202
                   31417: \0312  "
                   31418: E"     60      2       203
                   31419: \0313  "
                   31420: I`     60      2       204
                   31421: \0314  "
                   31422: I'     60      2       205
                   31423: \0315  "
                   31424: I^     60      2       206
                   31425: \0316  "
                   31426: I"     60      2       207
                   31427: \0317  "
                   31428: D-     60      2       208
                   31429: \0320  "
                   31430: N~     60      2       209
                   31431: \0321  "
                   31432: O`     60      2       210
                   31433: \0322  "
                   31434: O'     60      2       211
                   31435: \0323  "
                   31436: O^     60      2       212
                   31437: \0324  "
                   31438: O~     60      2       213
                   31439: \0325  "
                   31440: O"     60      2       214
                   31441: \0326  "
                   31442: xx     60      0       215
                   31443: \0327  "
                   31444: O/     60      2       216
                   31445: \0330  "
                   31446: U`     60      2       217
                   31447: \0331  "
                   31448: U'     60      2       218
                   31449: \0332  "
                   31450: U^     60      2       219
                   31451: \0333  "
                   31452: U"     60      2       220
                   31453: \0334  "
                   31454: Y'     60      2       221
                   31455: \0335  "
                   31456: TH     60      2       222
                   31457: \0336  "
                   31458: ss     60      2       223
                   31459: \0337  "
                   31460: a`     60      2       224
                   31461: \0340  "
                   31462: a'     60      2       225
                   31463: \0341  "
                   31464: a^     60      2       226
                   31465: \0342  "
                   31466: a~     60      2       227
                   31467: \0343  "
                   31468: a"     60      2       228
                   31469: \0344  "
                   31470: a*     60      2       229
                   31471: \0345  "
                   31472: ae     60      0       230
                   31473: \0346  "
                   31474: c,     60      1       231
                   31475: \0347  "
                   31476: e`     60      2       232
                   31477: \0350  "
                   31478: e'     60      2       233
                   31479: \0351  "
                   31480: e^     60      2       234
                   31481: \0352  "
                   31482: e"     60      2       235
                   31483: \0353  "
                   31484: i`     60      2       236
                   31485: \0354  "
                   31486: i'     60      2       237
                   31487: \0355  "
                   31488: i^     60      2       238
                   31489: \0356  "
                   31490: i"     60      2       239
                   31491: \0357  "
                   31492: d-     60      2       240
                   31493: \0360  "
                   31494: n~     60      2       241
                   31495: \0361  "
                   31496: o`     60      2       242
                   31497: \0362  "
                   31498: o'     60      2       243
                   31499: \0363  "
                   31500: o^     60      2       244
                   31501: \0364  "
                   31502: o~     60      2       245
                   31503: \0365  "
                   31504: o"     60      2       246
                   31505: \0366  "
                   31506: -:     60      2       247
                   31507: \0367  "
                   31508: o/     60      0       248
                   31509: \0370  "
                   31510: u`     60      2       249
                   31511: \0371  "
                   31512: u'     60      2       250
                   31513: \0372  "
                   31514: u^     60      2       251
                   31515: \0373  "
                   31516: u"     60      2       252
                   31517: \0374  "
                   31518: y'     60      3       253
                   31519: \0375  "
                   31520: th     60      3       254
                   31521: \0376  "
                   31522: y"     60      3       255
                   31523: \0377  "
                   31524: ^a     60      2       147
                   31525: ~a     60      2       148
                   31526: Ua     60      2       150
                   31527: .a     60      2       151
                   31528: oa     60      2       154
                   31529: "a     60      2       157
                   31530: Ca     60      1       158
                   31531: va     60      2       159
                   31532: 0707070014231124031006440057030057030000010445440522627501700002600000006106post.src/devLatin1/CXname CX
                   31533: fontname Courier-BoldOblique
                   31534: named in prologue
                   31535: spacewidth 60
                   31536: charset
                   31537: !      60      2       33
                   31538: "      60      2       34
                   31539: dq     "
                   31540: #      60      2       35
                   31541: $      60      2       36
                   31542: %      60      2       37
                   31543: &      60      2       38
                   31544: '      60      2       39
                   31545: (      60      3       40
                   31546: )      60      3       41
                   31547: *      60      2       42
                   31548: +      60      2       43
                   31549: ,      60      1       44
                   31550: -      60      0       173
                   31551: \0255  "
                   31552: .      60      0       46
                   31553: /      60      2       47
                   31554: 0      60      2       48
                   31555: 1      60      2       49
                   31556: 2      60      2       50
                   31557: 3      60      2       51
                   31558: 4      60      2       52
                   31559: 5      60      2       53
                   31560: 6      60      2       54
                   31561: 7      60      2       55
                   31562: 8      60      2       56
                   31563: 9      60      2       57
                   31564: :      60      0       58
                   31565: ;      60      0       59
                   31566: <      60      2       60
                   31567: =      60      0       61
                   31568: >      60      2       62
                   31569: ?      60      2       63
                   31570: @      60      2       64
                   31571: A      60      2       65
                   31572: B      60      2       66
                   31573: C      60      2       67
                   31574: D      60      2       68
                   31575: E      60      2       69
                   31576: F      60      2       70
                   31577: G      60      2       71
                   31578: H      60      2       72
                   31579: I      60      2       73
                   31580: J      60      2       74
                   31581: K      60      2       75
                   31582: L      60      2       76
                   31583: M      60      2       77
                   31584: N      60      2       78
                   31585: O      60      2       79
                   31586: P      60      2       80
                   31587: Q      60      3       81
                   31588: R      60      2       82
                   31589: S      60      2       83
                   31590: T      60      2       84
                   31591: U      60      2       85
                   31592: V      60      2       86
                   31593: W      60      2       87
                   31594: X      60      2       88
                   31595: Y      60      2       89
                   31596: Z      60      2       90
                   31597: [      60      3       91
                   31598: \      60      2       92
                   31599: bs     "
                   31600: ]      60      3       93
                   31601: ^      60      2       94
                   31602: _      60      1       95
                   31603: `      60      2       96
                   31604: a      60      0       97
                   31605: b      60      2       98
                   31606: c      60      0       99
                   31607: d      60      2       100
                   31608: e      60      0       101
                   31609: f      60      2       102
                   31610: g      60      1       103
                   31611: h      60      2       104
                   31612: i      60      2       105
                   31613: j      60      3       106
                   31614: k      60      2       107
                   31615: l      60      2       108
                   31616: m      60      0       109
                   31617: n      60      0       110
                   31618: o      60      0       111
                   31619: p      60      1       112
                   31620: q      60      1       113
                   31621: r      60      0       114
                   31622: s      60      0       115
                   31623: t      60      2       116
                   31624: u      60      0       117
                   31625: v      60      0       118
                   31626: w      60      0       119
                   31627: x      60      0       120
                   31628: y      60      1       121
                   31629: z      60      0       122
                   31630: {      60      3       123
                   31631: |      60      3       124
                   31632: }      60      3       125
                   31633: ~      60      0       126
                   31634: \`     60      2       145
                   31635: ga     "
                   31636: !!     60      1       161
                   31637: \0241  "
                   31638: c|     60      2       162
                   31639: \0242  "
                   31640: ct     "
                   31641: L-     60      2       163
                   31642: \0243  "
                   31643: ps     "
                   31644: xo     60      2       164
                   31645: \0244  "
                   31646: cr     "
                   31647: Y-     60      2       165
                   31648: \0245  "
                   31649: yn     "
                   31650: ||     60      3       166
                   31651: \0246  "
                   31652: so     60      2       167
                   31653: \0247  "
                   31654: sc     "
                   31655: ""     60      2       168
                   31656: \0250  "
                   31657: :a     "
                   31658: co     60      2       169
                   31659: \0251  "
                   31660: a_     60      2       170
                   31661: \0252  "
                   31662: <<     60      0       171
                   31663: \0253  "
                   31664: -,     60      0       172
                   31665: \0254  "
                   31666: hy     60      0       173
                   31667: \0255  "
                   31668: --     60      0       45
                   31669: ro     60      2       174
                   31670: \0256  "
                   31671: rg     "
                   31672: -^     60      2       175
                   31673: \0257  "
                   31674: -a     "
                   31675: 0^     60      2       176
                   31676: \0260  "
                   31677: +-     60      2       177
                   31678: \0261  "
                   31679: 2^     60      2       178
                   31680: \0262  "
                   31681: 3^     60      2       179
                   31682: \0263  "
                   31683: \'     60      2       180
                   31684: \0264  "
                   31685: aa     "
                   31686: /u     60      1       181
                   31687: \0265  "
                   31688: P!     60      2       182
                   31689: \0266  "
                   31690: pg     "
                   31691: .^     60      0       183
                   31692: \0267  "
                   31693: ,,     60      1       184
                   31694: \0270  "
                   31695: ,a     "
                   31696: 1^     60      2       185
                   31697: \0271  "
                   31698: o_     60      2       186
                   31699: \0272  "
                   31700: >>     60      0       187
                   31701: \0273  "
                   31702: 14     60      2       188
                   31703: \0274  "
                   31704: 12     60      2       189
                   31705: \0275  "
                   31706: 34     60      2       190
                   31707: \0276  "
                   31708: ??     60      1       191
                   31709: \0277  "
                   31710: A`     60      2       192
                   31711: \0300  "
                   31712: A'     60      2       193
                   31713: \0301  "
                   31714: A^     60      2       194
                   31715: \0302  "
                   31716: A~     60      2       195
                   31717: \0303  "
                   31718: A"     60      2       196
                   31719: \0304  "
                   31720: A*     60      2       197
                   31721: \0305  "
                   31722: AE     60      2       198
                   31723: \0306  "
                   31724: C,     60      3       199
                   31725: \0307  "
                   31726: E`     60      2       200
                   31727: \0310  "
                   31728: E'     60      2       201
                   31729: \0311  "
                   31730: E^     60      2       202
                   31731: \0312  "
                   31732: E"     60      2       203
                   31733: \0313  "
                   31734: I`     60      2       204
                   31735: \0314  "
                   31736: I'     60      2       205
                   31737: \0315  "
                   31738: I^     60      2       206
                   31739: \0316  "
                   31740: I"     60      2       207
                   31741: \0317  "
                   31742: D-     60      2       208
                   31743: \0320  "
                   31744: N~     60      2       209
                   31745: \0321  "
                   31746: O`     60      2       210
                   31747: \0322  "
                   31748: O'     60      2       211
                   31749: \0323  "
                   31750: O^     60      2       212
                   31751: \0324  "
                   31752: O~     60      2       213
                   31753: \0325  "
                   31754: O"     60      2       214
                   31755: \0326  "
                   31756: xx     60      0       215
                   31757: \0327  "
                   31758: O/     60      2       216
                   31759: \0330  "
                   31760: U`     60      2       217
                   31761: \0331  "
                   31762: U'     60      2       218
                   31763: \0332  "
                   31764: U^     60      2       219
                   31765: \0333  "
                   31766: U"     60      2       220
                   31767: \0334  "
                   31768: Y'     60      2       221
                   31769: \0335  "
                   31770: TH     60      2       222
                   31771: \0336  "
                   31772: ss     60      2       223
                   31773: \0337  "
                   31774: a`     60      2       224
                   31775: \0340  "
                   31776: a'     60      2       225
                   31777: \0341  "
                   31778: a^     60      2       226
                   31779: \0342  "
                   31780: a~     60      2       227
                   31781: \0343  "
                   31782: a"     60      2       228
                   31783: \0344  "
                   31784: a*     60      2       229
                   31785: \0345  "
                   31786: ae     60      0       230
                   31787: \0346  "
                   31788: c,     60      1       231
                   31789: \0347  "
                   31790: e`     60      2       232
                   31791: \0350  "
                   31792: e'     60      2       233
                   31793: \0351  "
                   31794: e^     60      2       234
                   31795: \0352  "
                   31796: e"     60      2       235
                   31797: \0353  "
                   31798: i`     60      2       236
                   31799: \0354  "
                   31800: i'     60      2       237
                   31801: \0355  "
                   31802: i^     60      2       238
                   31803: \0356  "
                   31804: i"     60      2       239
                   31805: \0357  "
                   31806: d-     60      2       240
                   31807: \0360  "
                   31808: n~     60      2       241
                   31809: \0361  "
                   31810: o`     60      2       242
                   31811: \0362  "
                   31812: o'     60      2       243
                   31813: \0363  "
                   31814: o^     60      2       244
                   31815: \0364  "
                   31816: o~     60      2       245
                   31817: \0365  "
                   31818: o"     60      2       246
                   31819: \0366  "
                   31820: -:     60      2       247
                   31821: \0367  "
                   31822: o/     60      0       248
                   31823: \0370  "
                   31824: u`     60      2       249
                   31825: \0371  "
                   31826: u'     60      2       250
                   31827: \0372  "
                   31828: u^     60      2       251
                   31829: \0373  "
                   31830: u"     60      2       252
                   31831: \0374  "
                   31832: y'     60      3       253
                   31833: \0375  "
                   31834: th     60      3       254
                   31835: \0376  "
                   31836: y"     60      3       255
                   31837: \0377  "
                   31838: ^a     60      2       147
                   31839: ~a     60      2       148
                   31840: Ua     60      2       150
                   31841: .a     60      2       151
                   31842: oa     60      2       154
                   31843: "a     60      2       157
                   31844: Ca     60      1       158
                   31845: va     60      2       159
                   31846: 0707070014231124041006440057030057030000010445600522627501700002600000005570post.src/devLatin1/ZDname ZD
                   31847: fontname ZapfDingbats
                   31848: named in prologue
                   31849: charset
                   31850: !      97      2       33
                   31851: "      96      2       34
                   31852: #      97      2       35
                   31853: $      98      3       36
                   31854: %      72      2       37
                   31855: &      79      3       38
                   31856: '      79      3       39
                   31857: (      79      3       40
                   31858: )      69      2       41
                   31859: *      96      2       42
                   31860: +      94      2       43
                   31861: ,      55      3       44
                   31862: -      86      2       45
                   31863: .      91      2       46
                   31864: /      93      2       47
                   31865: 0      91      2       48
                   31866: 1      95      2       49
                   31867: 2      97      2       50
                   31868: 3      76      3       51
                   31869: 4      85      3       52
                   31870: 5      76      2       53
                   31871: 6      76      2       54
                   31872: 7      57      3       55
                   31873: 8      68      3       56
                   31874: 9      76      2       57
                   31875: :      76      2       58
                   31876: ;      76      2       59
                   31877: <      75      3       60
                   31878: =      49      2       61
                   31879: >      55      2       62
                   31880: ?      54      3       63
                   31881: @      58      2       64
                   31882: A      69      3       65
                   31883: B      79      3       66
                   31884: C      79      3       67
                   31885: D      79      3       68
                   31886: E      79      3       69
                   31887: F      79      3       70
                   31888: G      79      3       71
                   31889: H      82      3       72
                   31890: I      82      3       73
                   31891: J      79      3       74
                   31892: K      84      3       75
                   31893: L      82      3       76
                   31894: M      83      3       77
                   31895: N      82      3       78
                   31896: O      83      3       79
                   31897: P      92      3       80
                   31898: Q      74      2       81
                   31899: R      72      2       82
                   31900: S      75      2       83
                   31901: T      79      3       84
                   31902: U      79      3       85
                   31903: V      70      3       86
                   31904: W      78      3       87
                   31905: X      77      3       88
                   31906: Y      79      3       89
                   31907: Z      76      2       90
                   31908: [      71      3       91
                   31909: \      71      3       92
                   31910: ]      68      3       93
                   31911: ^      70      3       94
                   31912: _      83      3       95
                   31913: `      82      3       96
                   31914: a      79      3       97
                   31915: b      79      3       98
                   31916: c      71      3       99
                   31917: d      69      2       100
                   31918: e      70      2       101
                   31919: f      69      2       102
                   31920: g      79      3       103
                   31921: h      79      3       104
                   31922: i      71      3       105
                   31923: j      79      3       106
                   31924: k      79      3       107
                   31925: l      79      3       108
                   31926: m      87      3       109
                   31927: n      76      2       110
                   31928: o      76      2       111
                   31929: p      76      2       112
                   31930: q      76      3       113
                   31931: r      76      3       114
                   31932: s      89      2       115
                   31933: t      89      3       116
                   31934: u      79      3       117
                   31935: v      78      3       118
                   31936: w      44      3       119
                   31937: x      14      2       120
                   31938: y      28      2       121
                   31939: z      42      2       122
                   31940: {      39      2       123
                   31941: |      39      2       124
                   31942: }      67      2       125
                   31943: ~      67      2       126
                   31944: \`     28      0       145
                   31945: !!     73      3       161
                   31946: \0241  "
                   31947: c|     54      3       162
                   31948: \0242  "
                   31949: L-     54      3       163
                   31950: \0243  "
                   31951: xo     91      2       164
                   31952: \0244  "
                   31953: Y-     67      3       165
                   31954: \0245  "
                   31955: ||     76      3       166
                   31956: \0246  "
                   31957: so     76      2       167
                   31958: \0247  "
                   31959: ""     78      2       168
                   31960: \0250  "
                   31961: co     60      3       169
                   31962: \0251  "
                   31963: a_     69      3       170
                   31964: \0252  "
                   31965: <<     63      3       171
                   31966: \0253  "
                   31967: -,     79      3       172
                   31968: \0254  "
                   31969: hy     79      3       173
                   31970: \0255  "
                   31971: ro     79      3       174
                   31972: \0256  "
                   31973: -^     79      3       175
                   31974: \0257  "
                   31975: 0^     79      3       176
                   31976: \0260  "
                   31977: +-     79      3       177
                   31978: \0261  "
                   31979: 2^     79      3       178
                   31980: \0262  "
                   31981: 3^     79      3       179
                   31982: \0263  "
                   31983: \'     79      3       180
                   31984: \0264  "
                   31985: /u     79      3       181
                   31986: \0265  "
                   31987: P!     79      3       182
                   31988: \0266  "
                   31989: .^     79      3       183
                   31990: \0267  "
                   31991: ,,     79      3       184
                   31992: \0270  "
                   31993: 1^     79      3       185
                   31994: \0271  "
                   31995: o_     79      3       186
                   31996: \0272  "
                   31997: >>     79      3       187
                   31998: \0273  "
                   31999: 14     79      3       188
                   32000: \0274  "
                   32001: 12     79      3       189
                   32002: \0275  "
                   32003: 34     79      3       190
                   32004: \0276  "
                   32005: ??     79      3       191
                   32006: \0277  "
                   32007: A`     79      3       192
                   32008: \0300  "
                   32009: A'     79      3       193
                   32010: \0301  "
                   32011: A^     79      3       194
                   32012: \0302  "
                   32013: A~     79      3       195
                   32014: \0303  "
                   32015: A"     79      3       196
                   32016: \0304  "
                   32017: A*     79      3       197
                   32018: \0305  "
                   32019: AE     79      3       198
                   32020: \0306  "
                   32021: C,     79      3       199
                   32022: \0307  "
                   32023: E`     79      3       200
                   32024: \0310  "
                   32025: E'     79      3       201
                   32026: \0311  "
                   32027: E^     79      3       202
                   32028: \0312  "
                   32029: E"     79      3       203
                   32030: \0313  "
                   32031: I`     79      3       204
                   32032: \0314  "
                   32033: I'     79      3       205
                   32034: \0315  "
                   32035: I^     79      3       206
                   32036: \0316  "
                   32037: I"     79      3       207
                   32038: \0317  "
                   32039: D-     79      3       208
                   32040: \0320  "
                   32041: N~     79      3       209
                   32042: \0321  "
                   32043: O`     79      3       210
                   32044: \0322  "
                   32045: O'     79      3       211
                   32046: \0323  "
                   32047: O^     89      2       212
                   32048: \0324  "
                   32049: O~     84      2       213
                   32050: \0325  "
                   32051: O"     102     2       214
                   32052: \0326  "
                   32053: xx     46      3       215
                   32054: \0327  "
                   32055: O/     75      2       216
                   32056: \0330  "
                   32057: U`     92      2       217
                   32058: \0331  "
                   32059: U'     75      2       218
                   32060: \0332  "
                   32061: U^     92      2       219
                   32062: \0333  "
                   32063: U"     93      2       220
                   32064: \0334  "
                   32065: Y'     93      2       221
                   32066: \0335  "
                   32067: TH     93      2       222
                   32068: \0336  "
                   32069: ss     83      2       223
                   32070: \0337  "
                   32071: a`     87      2       224
                   32072: \0340  "
                   32073: a'     83      2       225
                   32074: \0341  "
                   32075: a^     92      2       226
                   32076: \0342  "
                   32077: a~     92      2       227
                   32078: \0343  "
                   32079: a"     92      2       228
                   32080: \0344  "
                   32081: a*     93      2       229
                   32082: \0345  "
                   32083: ae     93      2       230
                   32084: \0346  "
                   32085: c,     46      3       231
                   32086: \0347  "
                   32087: e`     88      2       232
                   32088: \0350  "
                   32089: e'     84      2       233
                   32090: \0351  "
                   32091: e^     84      2       234
                   32092: \0352  "
                   32093: e"     87      2       235
                   32094: \0353  "
                   32095: i`     87      2       236
                   32096: \0354  "
                   32097: i'     70      2       237
                   32098: \0355  "
                   32099: i^     70      2       238
                   32100: \0356  "
                   32101: i"     87      2       239
                   32102: \0357  "
                   32103: d-     28      0       240
                   32104: \0360  "
                   32105: n~     87      2       241
                   32106: \0361  "
                   32107: o`     76      2       242
                   32108: \0362  "
                   32109: o'     95      2       243
                   32110: \0363  "
                   32111: o^     77      2       244
                   32112: \0364  "
                   32113: o~     87      2       245
                   32114: \0365  "
                   32115: o"     77      2       246
                   32116: \0366  "
                   32117: -:     89      3       247
                   32118: \0367  "
                   32119: o/     97      2       248
                   32120: \0370  "
                   32121: u`     89      3       249
                   32122: \0371  "
                   32123: u'     83      2       250
                   32124: \0372  "
                   32125: u^     87      2       251
                   32126: \0373  "
                   32127: u"     93      2       252
                   32128: \0374  "
                   32129: y'     97      2       253
                   32130: \0375  "
                   32131: th     92      2       254
                   32132: \0376  "
                   32133: y"     28      0       255
                   32134: \0377  "
                   32135: 0707070014231124051006440057030057030000010440470522627501700002600000001145post.src/devLatin1/GRname GR
                   32136: fontname Symbol
                   32137: named in prologue
                   32138: spacewidth 25
                   32139: charset
                   32140: *A     72      2       65
                   32141: *B     67      2       66
                   32142: *X     72      2       67
                   32143: *D     61      2       68
                   32144: *E     61      2       69
                   32145: *F     76      2       70
                   32146: *G     60      2       71
                   32147: *Y     72      2       72
                   32148: *I     33      2       73
                   32149: *K     72      2       75
                   32150: *L     69      2       76
                   32151: *M     89      2       77
                   32152: *N     72      2       78
                   32153: *O     72      2       79
                   32154: *P     77      2       80
                   32155: *H     74      2       81
                   32156: *R     56      2       82
                   32157: *S     59      2       83
                   32158: *T     61      2       84
                   32159: *U     69      2       85
                   32160: *W     77      2       87
                   32161: *C     65      2       88
                   32162: *Q     80      2       89
                   32163: *Z     61      2       90
                   32164: *a     63      0       97
                   32165: *b     55      3       98
                   32166: *x     55      1       99
                   32167: *d     49      2       100
                   32168: *e     44      0       101
                   32169: *f     52      3       102
                   32170: *g     41      1       103
                   32171: *y     60      1       104
                   32172: *i     33      0       105
                   32173: *k     55      0       107
                   32174: *l     55      2       108
                   32175: *m     58      1       109
                   32176: *n     52      0       110
                   32177: *o     55      0       111
                   32178: *p     55      0       112
                   32179: *h     52      2       113
                   32180: *r     55      1       114
                   32181: *s     60      0       115
                   32182: *t     44      0       116
                   32183: *u     58      0       117
                   32184: *w     69      0       119
                   32185: *c     49      3       120
                   32186: *q     69      1       121
                   32187: *z     49      3       122
                   32188: 0707070014231124061006440057030057030000010445630522627501700002500000004376post.src/devLatin1/Sname S
                   32189: fontname Symbol
                   32190: named in prologue
                   32191: special
                   32192: charset
                   32193: ---    33      2       33
                   32194: fa     71      2       34
                   32195: ---    50      2       35
                   32196: te     55      2       36
                   32197: ---    83      2       37
                   32198: ---    78      2       38
                   32199: st     44      0       39
                   32200: ---    33      3       40
                   32201: ---    33      3       41
                   32202: **     50      2       42
                   32203: pl     55      0       43
                   32204: ---    25      1       44
                   32205: mi     55      0       45
                   32206: ---    25      0       46
                   32207: sl     28      2       47
                   32208: ---    50      2       48
                   32209: ---    50      2       49
                   32210: ---    50      2       50
                   32211: ---    50      2       51
                   32212: ---    50      2       52
                   32213: ---    50      2       53
                   32214: ---    50      2       54
                   32215: ---    50      2       55
                   32216: ---    50      2       56
                   32217: ---    50      2       57
                   32218: ---    28      0       58
                   32219: ---    28      1       59
                   32220: <      55      0       60
                   32221: eq     55      0       61
                   32222: >      55      0       62
                   32223: ---    44      2       63
                   32224: cg     55      0       64
                   32225: *A     72      2       65
                   32226: *B     67      2       66
                   32227: *X     72      2       67
                   32228: *D     61      2       68
                   32229: *E     61      2       69
                   32230: *F     76      2       70
                   32231: *G     60      2       71
                   32232: *Y     72      2       72
                   32233: *I     33      2       73
                   32234: ---    63      2       74
                   32235: *K     72      2       75
                   32236: *L     69      2       76
                   32237: *M     89      2       77
                   32238: *N     72      2       78
                   32239: *O     72      2       79
                   32240: *P     77      2       80
                   32241: *H     74      2       81
                   32242: *R     56      2       82
                   32243: *S     59      2       83
                   32244: *T     61      2       84
                   32245: *U     69      2       85
                   32246: ts     44      1       86
                   32247: *W     77      2       87
                   32248: *C     65      2       88
                   32249: *Q     80      2       89
                   32250: *Z     61      2       90
                   32251: ---    33      3       91
                   32252: tf     86      0       92
                   32253: ---    33      3       93
                   32254: pp     66      2       94
                   32255: ul     50      1       95
                   32256: _      "
                   32257: rn     50      2       96
                   32258: *a     63      0       97
                   32259: *b     55      3       98
                   32260: *x     55      1       99
                   32261: *d     49      2       100
                   32262: *e     44      0       101
                   32263: *f     52      3       102
                   32264: *g     41      1       103
                   32265: *y     60      1       104
                   32266: *i     33      0       105
                   32267: ---    60      1       106
                   32268: *k     55      0       107
                   32269: *l     55      2       108
                   32270: *m     58      1       109
                   32271: *n     52      0       110
                   32272: *o     55      0       111
                   32273: *p     55      0       112
                   32274: *h     52      2       113
                   32275: *r     55      1       114
                   32276: *s     60      0       115
                   32277: *t     44      0       116
                   32278: *u     58      0       117
                   32279: ---    71      2       118
                   32280: *w     69      0       119
                   32281: *c     49      3       120
                   32282: *q     69      1       121
                   32283: *z     49      3       122
                   32284: ---    48      3       123
                   32285: or     20      3       124
                   32286: ---    48      3       125
                   32287: ap     55      0       126
                   32288: ---    62      2       161
                   32289: fm     25      2       162
                   32290: <=     55      2       163
                   32291: fr     17      2       164
                   32292: if     73      0       165
                   32293: fn     50      3       166
                   32294: ---    75      0       167
                   32295: ---    75      2       168
                   32296: ---    75      0       169
                   32297: ---    75      2       170
                   32298: ab     104     0       171
                   32299: <-     99      0       172
                   32300: ua     60      2       173
                   32301: ->     99      0       174
                   32302: da     60      2       175
                   32303: de     40      2       176
                   32304: +-     55      2       177
                   32305: ---    41      2       178
                   32306: >=     55      2       179
                   32307: mu     55      0       180
                   32308: pt     71      0       181
                   32309: pd     49      2       182
                   32310: bu     46      0       183
                   32311: di     55      0       184
                   32312: !=     55      2       185
                   32313: ==     55      0       186
                   32314: ~~     55      0       187
                   32315: el     100     0       188
                   32316: av     60      3       189
                   32317: ah     100     0       190
                   32318: CR     66      2       191
                   32319: af     82      2       192
                   32320: If     69      2       193
                   32321: Rf     80      2       194
                   32322: ws     99      3       195
                   32323: Ox     77      2       196
                   32324: O+     77      2       197
                   32325: es     82      2       198
                   32326: ca     77      0       199
                   32327: cu     77      0       200
                   32328: sp     71      0       201
                   32329: ip     71      1       202
                   32330: !b     71      0       203
                   32331: sb     71      0       204
                   32332: ib     71      1       205
                   32333: mo     71      0       206
                   32334: !m     71      2       207
                   32335: an     77      2       208
                   32336: gr     71      2       209
                   32337: rg     79      2       210
                   32338: co     79      2       211
                   32339: tm     89      2       212
                   32340: ---    82      2       213
                   32341: sr     55      2       214
                   32342: c.     25      0       215
                   32343: no     71      0       216
                   32344: l&     60      0       217
                   32345: l|     60      0       218
                   32346: ---    104     0       219
                   32347: ---    99      0       220
                   32348: ---    60      2       221
                   32349: ---    99      0       222
                   32350: ---    60      2       223
                   32351: lz     49      2       224
                   32352: b<     33      3       225
                   32353: RG     79      2       226
                   32354: CO     79      2       227
                   32355: TM     79      2       228
                   32356: ---    71      2       229
                   32357: LT     38      3       230
                   32358: br     0       3       231
                   32359: LX     "
                   32360: LB     38      3       232
                   32361: lc     50      2       233
                   32362: lx     38      2       234
                   32363: lf     50      2       235
                   32364: lt     49      2       236
                   32365: lk     49      2       237
                   32366: lb     49      2       238
                   32367: bv     49      2       239
                   32368: |      "
                   32369: b>     33      3       241
                   32370: is     50      3       242
                   32371: ---    69      2       243
                   32372: ---    69      2       244
                   32373: ---    69      2       245
                   32374: RT     38      3       246
                   32375: RX     38      2       247
                   32376: RB     38      3       248
                   32377: rc     38      2       249
                   32378: rx     50      3       250
                   32379: rf     38      2       251
                   32380: rt     49      2       252
                   32381: rk     49      2       253
                   32382: rb     49      2       254
                   32383: ~=     55      0       1
                   32384: 0707070014231124071006440057030057030000010441260522627501700002600000000561post.src/devLatin1/S1# Times-Roman special font
                   32385: name S1
                   32386: fontname Times-Roman
                   32387: named in prologue
                   32388: special
                   32389: charset
                   32390: ru     50      0       95
                   32391: ''     44      0       186
                   32392: ``     44      0       170
                   32393: dg     50      0       178
                   32394: dd     50      0       179
                   32395: en     65      0       177
                   32396: \-     "
                   32397: em     100     0       208
                   32398: 14     75      2       1
                   32399: 12     75      2       1
                   32400: 34     75      2       1
                   32401: bx     50      2       1
                   32402: ob     38      2       1
                   32403: ci     75      0       1
                   32404: sq     50      2       1
                   32405: Sl     50      2       1
                   32406: L1     110     1       1
                   32407: LA     110     1       1
                   32408: LV     110     3       1
                   32409: LH     210     1       1
                   32410: lh     100     0       1
                   32411: rh     100     0       1
                   32412: lH     100     0       1
                   32413: rH     100     0       1
                   32414: PC     220     2       1
                   32415: DG     185     2       1
                   32416: 0707070014231124101006440057030057030000010445660522627501700003000000002272post.src/devLatin1/DESC#Device Description - Latin1 character set
                   32417: 
                   32418: PDL PostScript
                   32419: Encoding Latin1
                   32420: 
                   32421: fonts 10 R I B BI CW H HI HB S1 S
                   32422: sizes 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
                   32423: 23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 40 42 44 46
                   32424: 48 50 52 54 56 58 60 64 68 72 78 84 90 96 100 105 110 115
                   32425: 120 125 130 135 140 145 150 155 160 0
                   32426: res 720
                   32427: hor 1
                   32428: vert 1
                   32429: unitwidth 10
                   32430: 
                   32431: charset
                   32432: dq bs \` ga !! c| ct L- ps xo cr Y- yn || so sc "" :a co a_
                   32433: << -, hy -- ro rg -^ -a 0^ +- 2^ 3^ \' aa /u P! pg .^ ,, ,a
                   32434: 1^ o_ >> 14 12 34 ?? A` A' A^ A~ A" A* AE C, E` E' E^ E" I`
                   32435: I' I^ I" D- N~ O` O' O^ O~ O" xx O/ U` U' U^ U" Y' TH ss a`
                   32436: a' a^ a~ a" a* ae c, e` e' e^ e" i` i' i^ i" d- n~ o` o' o^
                   32437: o~ o" -: o/ u` u' u^ u" y' th y" ^a ~a Ua .a oa "a Ca va fa
                   32438: te st ** pl mi sl eq cg *A *B *X *D *E *F *G *Y *I *K *L *M
                   32439: *N *O *P *H *R *S *T *U ts *W *C *Q *Z tf pp ul rn *a *b *x
                   32440: *d *e *f *g *y *i *k *l *m *n *o *p *h *r *s *t *u *w *c *q
                   32441: *z or ap fm <= fr if fn ab <- ua -> da de >= mu pt pd bu di
                   32442: != == ~~ el av ah CR af If Rf ws Ox O+ es ca cu sp ip !b sb
                   32443: ib mo !m an gr tm sr c. no l& l| lz b< RG CO TM LT br LX LB
                   32444: lc lx lf lt lk lb bv b> is RT RX RB rc rx rf rt rk rb ~= ru
                   32445: '' `` dg dd en \- em bx ob ci sq Sl L1 LA LV LH lh rh lH rH
                   32446: PC DG 
                   32447: 0707070014231122341006400057030057030000010446060522633073400004000000003061post.src/devLatin1/devLatin1.mkMAKE=/bin/make
                   32448: MAKEFILE=devLatin1.mk
                   32449: 
                   32450: SYSTEM=V9
                   32451: VERSION=3.3.2
                   32452: 
                   32453: GROUP=bin
                   32454: OWNER=bin
                   32455: 
                   32456: FONTDIR=/usr/lib/font
                   32457: FONTFILES=DESC ? ?? [A-Z]??* shell.lib
                   32458: 
                   32459: all :
                   32460:        @if [ -r LINKFILE ]; then sh LINKFILE; fi;
                   32461: 
                   32462: install : all
                   32463:        @if [ ! -d $(FONTDIR) ]; then \
                   32464:            mkdir $(FONTDIR); \
                   32465:            chmod 755 $(FONTDIR); \
                   32466:            chgrp $(GROUP) $(FONTDIR); \
                   32467:            chown $(OWNER) $(FONTDIR); \
                   32468:        fi
                   32469:        @if [ ! -d $(FONTDIR)/devLatin1 ]; then \
                   32470:            mkdir $(FONTDIR)/devLatin1; \
                   32471:            chmod 755 $(FONTDIR)/devLatin1; \
                   32472:            chgrp $(GROUP) $(FONTDIR)/devLatin1; \
                   32473:            chown $(OWNER) $(FONTDIR)/devLatin1; \
                   32474:        fi
                   32475:        @if [ ! -d $(FONTDIR)/devLatin1/charlib ]; then \
                   32476:            mkdir $(FONTDIR)/devLatin1/charlib; \
                   32477:            chmod 755 $(FONTDIR)/devLatin1/charlib; \
                   32478:            chgrp $(GROUP) $(FONTDIR)/devLatin1/charlib; \
                   32479:            chown $(OWNER) $(FONTDIR)/devLatin1/charlib; \
                   32480:        fi
                   32481:        cp $(FONTFILES) $(FONTDIR)/devLatin1
                   32482:        @for i in $(FONTFILES); do \
                   32483:            chmod 644 $(FONTDIR)/devLatin1/$$i; \
                   32484:            chgrp $(GROUP) $(FONTDIR)/devLatin1/$$i; \
                   32485:            chown $(OWNER) $(FONTDIR)/devLatin1/$$i; \
                   32486:        done
                   32487:        cp charlib/* $(FONTDIR)/devLatin1/charlib
                   32488:        @for i in charlib/*; do \
                   32489:            chmod 644 $(FONTDIR)/devLatin1/$$i; \
                   32490:            chgrp $(GROUP) $(FONTDIR)/devLatin1/$$i; \
                   32491:            chown $(OWNER) $(FONTDIR)/devLatin1/$$i; \
                   32492:        done
                   32493: 
                   32494: clean :
                   32495: 
                   32496: clobber : clean
                   32497: 
                   32498: changes :
                   32499:        @trap "" 1 2 3 15; \
                   32500:        sed \
                   32501:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
                   32502:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
                   32503:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
                   32504:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
                   32505:            -e "s'^FONTDIR=.*'FONTDIR=$(FONTDIR)'" \
                   32506:        $(MAKEFILE) >XXX.mk; \
                   32507:        mv XXX.mk $(MAKEFILE)
                   32508: 
                   32509: 0707070014230454610407550057030057030000021337270522627502100003300000000000post.src/devLatin1/charlib0707070014230454621006440057030057030000011340060522627501700003600000000421post.src/devLatin1/charlib/12/build_12 {
                   32510:     pop
                   32511:     /optsize ptsize def
                   32512:     /osize size def
                   32513:     /ofont font def
                   32514: 
                   32515:     optsize 2 div dup R exch R f
                   32516:     0 size 2 mul 3 div dup neg exch 0 exch rmoveto
                   32517: 
                   32518:     (1) show
                   32519:     rmoveto
                   32520:     optsize R f
                   32521:     (\244) show
                   32522:     f
                   32523:     (2) show
                   32524: 
                   32525:     optsize ofont f
                   32526: } def
                   32527: 0707070014230454631006440057030057030000011340070522627502000003600000000421post.src/devLatin1/charlib/14/build_14 {
                   32528:     pop
                   32529:     /optsize ptsize def
                   32530:     /osize size def
                   32531:     /ofont font def
                   32532: 
                   32533:     optsize 2 div dup R exch R f
                   32534:     0 size 2 mul 3 div dup neg exch 0 exch rmoveto
                   32535: 
                   32536:     (1) show
                   32537:     rmoveto
                   32538:     optsize R f
                   32539:     (\244) show
                   32540:     f
                   32541:     (4) show
                   32542: 
                   32543:     optsize ofont f
                   32544: } def
                   32545: 0707070014230454641006440057030057030000011347160522627502000003600000000421post.src/devLatin1/charlib/34/build_34 {
                   32546:     pop
                   32547:     /optsize ptsize def
                   32548:     /osize size def
                   32549:     /ofont font def
                   32550: 
                   32551:     optsize 2 div dup R exch R f
                   32552:     0 size 2 mul 3 div dup neg exch 0 exch rmoveto
                   32553: 
                   32554:     (3) show
                   32555:     rmoveto
                   32556:     optsize R f
                   32557:     (\244) show
                   32558:     f
                   32559:     (4) show
                   32560: 
                   32561:     optsize ofont f
                   32562: } def
                   32563: 0707070014230454651006440057030057030000011347300522627502000003600000012536post.src/devLatin1/charlib/L1/LOGO-dict-mm dup where not
                   32564: { dup 64 dict def currentdict } if
                   32565: exch get
                   32566: begin
                   32567: /globesetup {
                   32568: /r exch def
                   32569: /N exch def
                   32570: /d 2 N r mul N 1 sub add div def
                   32571: /h d r mul def
                   32572: } def
                   32573: /mkabs {
                   32574: /yp exch def
                   32575: /xl exch def
                   32576: dup dup 0 get xl mul 0 exch put
                   32577: dup dup 1 get h mul yp add 1 exch put
                   32578: dup dup 2 get xl mul 2 exch put
                   32579: dup dup 3 get h mul yp add 3 exch put
                   32580: dup dup 4 get xl mul 4 exch put
                   32581: dup dup 5 get h mul yp add 5 exch put
                   32582: } def
                   32583: /topsegment {
                   32584: /n exch def
                   32585: /y n r mul n .5 add add d mul def
                   32586: /a y 1 y dup mul sub sqrt atan def
                   32587: /x a cos def
                   32588: /c2 exch x y mkabs def
                   32589: /ly1 exch h mul y add def
                   32590: /lx1 exch x abs mul def
                   32591: /c1 exch x y mkabs def
                   32592: x y /moveto load
                   32593: 0 0 1 a 180 a sub /arc load
                   32594: c1 aload pop /curveto load
                   32595: lx1 ly1 /lineto load
                   32596: c2 aload pop /curveto load
                   32597: /closepath load
                   32598: } def
                   32599: /botsegment {
                   32600: /n exch 1 add def
                   32601: /y n r mul n .5 sub add d mul def
                   32602: /a y 1 y dup mul sub sqrt atan def
                   32603: /x a cos def
                   32604: /c2 exch x y mkabs def
                   32605: /ly1 exch h mul y add def
                   32606: /lx1 exch x abs mul def
                   32607: /c1 exch x y mkabs def
                   32608: x y /moveto load
                   32609: 0 0 1 a 540 a sub /arcn load
                   32610: c1 aload pop /curveto load
                   32611: lx1 ly1 /lineto load
                   32612: c2 aload pop /curveto load
                   32613: /closepath load
                   32614: } def
                   32615: /segment {
                   32616: /n exch def
                   32617: /dh exch 1 exch sub 2 div def
                   32618: /ylb n r mul n 0.5 add add d mul def
                   32619: /ylt ylb h add def
                   32620: /yrb ylb h dh mul add def
                   32621: /yrt ylt h dh mul sub def
                   32622: /alb ylb 1 ylb dup mul sub sqrt atan def
                   32623: /alt ylt 1 ylt dup mul sub sqrt atan def
                   32624: /arb yrb 1 yrb dup mul sub sqrt atan 180 exch sub def
                   32625: /art yrt 1 yrt dup mul sub sqrt atan 180 exch sub def
                   32626: /xlb alb cos def
                   32627: /xlt alt cos def
                   32628: /xrb arb cos def
                   32629: /xrt art cos def
                   32630: /c4 exch xrb abs ylb mkabs def
                   32631: /ly2 exch h mul ylb add def
                   32632: /lx2 exch xrb abs mul def
                   32633: /c3 exch xrb abs ylb mkabs def
                   32634: /c2 exch xrt abs ylt mkabs def
                   32635: /ly1 exch h mul ylt add def
                   32636: /lx1 exch xrt abs mul def
                   32637: /c1 exch xrt abs ylt mkabs def
                   32638: xlb ylb /moveto load
                   32639: 0 0 1 alb alt /arc load
                   32640: c2 4 get c2 5 get /lineto load
                   32641: c2 2 get c2 3 get
                   32642: c2 0 get c2 1 get
                   32643: lx1 ly1        /curveto load
                   32644: c1 4 get c1 5 get /lineto load
                   32645: c1 2 get c1 3 get
                   32646: c1 0 get c1 1 get
                   32647: xrt yrt /curveto load
                   32648: 0 0 1 art arb /arc load
                   32649: c3 aload pop /curveto load
                   32650: lx2 ly2 /lineto load
                   32651: c4 aload pop /curveto load
                   32652: /closepath load
                   32653: } def
                   32654: 8 2.5 globesetup
                   32655: /globe8 [
                   32656: /newpath load
                   32657: [ -.9   .1  -.6   .2  -.5   .2  ] -.5   .2  [ -.4   .2   .0  .0  .4  .0 ] 3 topsegment
                   32658: [ -.9  -.35 -.85 -.35 -.8  -.35 ] -.1  -.35 [  .1  -.35  .3  .0  .5  .0 ]
                   32659: [ -.8   .35 -.75  .35 -.7   .35 ] -.1   .35 [  .1   .35  .4  .0  .55 .0 ] .55 2 segment
                   32660: [ -.8  -.35 -.75 -.35 -.7  -.35 ]  .05 -.35 [  .2  -.35  .4  .0  .55 .0 ]
                   32661: [ -.8   .35 -.75  .35 -.7   .35 ]  .05  .35 [  .2   .35  .45 .0  .6  .0 ] .7  1 segment
                   32662: [ -.8  -.35 -.75 -.35 -.7  -.35 ]  .0  -.35 [  .15 -.35  .4  .0  .6  .0 ]
                   32663: [ -.8   .35 -.75  .35 -.7   .35 ]  .0   .35 [  .15  .35  .4  .0  .6  .0 ] .7  0 segment
                   32664: [ -.7  -.35 -.65 -.35 -.6  -.35 ] -.1  -.35 [  .05 -.35  .35 .0  .55 .0 ]
                   32665: [ -.7   .35 -.65  .35 -.6   .35 ] -.1   .35 [  .05  .35  .25 .0  .4  .0 ] .8 -1 segment
                   32666: [ -.65 -.2  -.55 -.2 -.45  -.2  ] -.3   -.2 [ -.2  -.2   .2  .0  .3  .0 ]
                   32667: [ -.65  .1  -.55  .1 -.45   .1  ] -.45  .1  [ -.3   .1  -.1  .0  .0  .0 ] .96 -2 segment
                   32668: [  .0   .0   .0   .0  .0    .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]
                   32669: [  .0   .0   .0   .0  .0    .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]  1 -3 segment
                   32670: [  .0   .0   .0   .0  .0    .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] -4 botsegment
                   32671: ] cvx def
                   32672: 12 3 globesetup
                   32673: /globe12 [
                   32674: /newpath load
                   32675: [ -.8   .2  -.7  .25 -.5   .25 ] -.4  .25 [ -.2   .25  .0  .0  .2  .0 ] 5 topsegment
                   32676: [ -.7  -.35 -.7 -.35 -.6  -.35 ] -.3 -.35 [ -.1  -.35  .3  .0  .55 .0 ]
                   32677: [ -.7   .35 -.7  .35 -.6   .35 ] -.25 .35 [ -.05  .35  .4  .0  .55 .0 ] .6  4 segment
                   32678: [ -.8  -.35 -.7 -.35 -.6  -.35 ] -.1 -.35 [  .1  -.35  .4  .0  .5  .0 ]
                   32679: [ -.8   .35 -.7  .35 -.6   .35 ] -.1  .35 [  .1   .35  .4  .0  .5  .0 ] .7  3 segment
                   32680: [ -.8  -.35 -.7 -.35 -.6  -.35 ]  .0 -.35 [  .1  -.35  .45 .0  .55 .0 ]
                   32681: [ -.8   .35 -.7  .35 -.6   .35 ]  .0  .35 [  .15  .35  .4  .0  .5  .0 ] .8  2 segment
                   32682: [ -.75 -.35 -.7 -.35 -.6  -.35 ]  .0 -.35 [  .2  -.35  .4  .0  .5  .0 ]
                   32683: [ -.75  .35 -.7  .35 -.6   .35 ]  .0  .35 [  .2   .35  .45 .0  .55 .0 ] .9  1 segment
                   32684: [ -.7  -.35 -.6 -.35 -.55 -.35 ]  .0 -.35 [  .1  -.35  .45 .0  .55 .0 ]
                   32685: [ -.7   .35 -.6  .35 -.55  .35 ]  .0  .35 [  .1   .35  .5  .0  .6  .0 ] .9  0 segment
                   32686: ] cvx
                   32687: [
                   32688: [ -.7 -.35 -.6 -.35 -.5  -.35 ] -.15 -.35 [  .0  -.35  .4  .0  .5  .0 ]
                   32689: [ -.65 .35 -.55 .35 -.45  .35 ] -.15  .35 [  .0   .35  .35 .0  .45 .0 ] .9 -1 segment
                   32690: [ -.8 -.1  -.5 -.3  -.4  -.3  ] -.2  -.3  [  .0  -.3   .3  .0  .4  .0 ]
                   32691: [ -.8  .1  -.5  .3  -.4   .3  ] -.2   .3  [  .0   .3   .2  .0  .3  .0 ] 1 -2 segment
                   32692: [ -.7 -.1  -.5 -.15 -.4  -.15 ] -.3  -.15 [ -.2  -.15  .0  .0  .2  .0 ]
                   32693: [ -.7  .05 -.5  .1  -.4   .1  ] -.4   .1  [ -.3   .1   .0  .0  .2  .0 ] 1 -3 segment
                   32694: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]
                   32695: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] 1 -4 segment
                   32696: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]
                   32697: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] 1 -5 segment
                   32698: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] -6 botsegment
                   32699: ] cvx
                   32700: 4 array cvx
                   32701: dup 0 5 -1 roll put
                   32702: dup 1 /exec load put
                   32703: dup 2 4 -1 roll put
                   32704: dup 3 /exec load put
                   32705: def
                   32706: end
                   32707: /build_L1 {
                   32708: pop
                   32709: LOGO-dict-mm begin
                   32710: ptsize 29 lt
                   32711: { /globe /globe8 load def }
                   32712: { /globe /globe12 load def } ifelse
                   32713: gsave
                   32714: currentpoint translate
                   32715: size 2 div dup scale
                   32716: 1.02 1 transform round exch round exch itransform
                   32717: translate
                   32718: globe fill
                   32719: grestore
                   32720: end
                   32721: } def
                   32722: 0707070014230454661006440057030057030000011347170522627502000003600000000075post.src/devLatin1/charlib/Fi/build_Fi {
                   32723:     pop
                   32724:     size .05 mul neg 0 (ffi) ashow
                   32725: } def
                   32726: 0707070014230454671006440057030057030000011347360522627502000003600000000075post.src/devLatin1/charlib/Fl/build_Fl {
                   32727:     pop
                   32728:     size .05 mul neg 0 (ffl) ashow
                   32729: } def
                   32730: 0707070014230454701006440057030057030000011347370522627502000003600000001725post.src/devLatin1/charlib/LA/LOGO-dict-mm dup where not
                   32731: { dup 64 dict def currentdict } if
                   32732: exch get
                   32733: begin
                   32734: /l {  lineto } def
                   32735: /rl {  rlineto } def
                   32736: /m {  moveto } def
                   32737: /rm {  rmoveto } def
                   32738: /C { closepath } def
                   32739: /c {  curveto } def
                   32740: /rc {  rcurveto } def
                   32741: /T { m 0 29 rl -9.5 0 rl 0 7 rl 29 0 rl 0 -7 rl -9.5 0 rl 0 -29 rl C } def
                   32742: /ATT {
                   32743: newpath
                   32744: 1 36 div dup scale
                   32745: 0  0 m  12 36 rl  8 0 rl -11 -36 rl C
                   32746: 25  0 m -11 36 rl  8 0 rl  12 -36 rl C
                   32747: 10  7 m   0  7 rl 14 0 rl   0  -7 rl C
                   32748: 36  0 T
                   32749: 80  6 m -3 0 -5 1.2 -6 2 rc -12 10 rl -2.4 2 -2.7 6 0 6 rc
                   32750: 1 0 2 -1 2 -2 rc 0 -4 rl 7 0 rl 0 4 rl
                   32751: 0 5 -3 7 -9 7 rc -6 0 -9 -3 -9 -7 rc
                   32752: 0 -2 0 -3.6 2 -6 rc 12 -10 rl 6 -5 10 -6 13 -6 rc C
                   32753: 71 18 m 0 -6 rl 0 -5 -3 -7 -7 -7 rc -3 0 -5 2 -5 4 rc 0 1 0 3 2 4 rc
                   32754: -4 5 rl -4 -2 -6 -6 -6 -9 rc 0 -7 6 -10 13 -10 rc
                   32755: 9 0 14 6 14 11 rc 0 8 rl C
                   32756: 82  0 T
                   32757: 36 dup scale
                   32758: } def
                   32759: end
                   32760: /build_LA {
                   32761: pop
                   32762: LOGO-dict-mm begin
                   32763: gsave
                   32764: currentpoint translate
                   32765: size 2.56 div dup scale                % was size 2.75 div dup scale
                   32766: .02 0 translate
                   32767: ATT fill
                   32768: grestore
                   32769: end
                   32770: } def
                   32771: 0707070014230454711006440057030057030000011347500522627502000003600000014673post.src/devLatin1/charlib/LH%
                   32772: % PostScript 12 and 8 line logos - horizontal configuration. Switch occurs
                   32773: % automatically below point size 29. Code from Matthijs Melchior.
                   32774: %
                   32775: 
                   32776: /LOGO-dict-mm where not {
                   32777:        64 dict /LOGO-dict-mm exch def
                   32778: }{pop} ifelse
                   32779: LOGO-dict-mm begin             % initialize dictionary
                   32780: 
                   32781: 
                   32782: /globesetup {
                   32783: /r exch def
                   32784: /N exch def
                   32785: /d 2 N r mul N 1 sub add div def
                   32786: /h d r mul def
                   32787: } def
                   32788: /mkabs {
                   32789: /yp exch def
                   32790: /xl exch def
                   32791: dup dup 0 get xl mul 0 exch put
                   32792: dup dup 1 get h mul yp add 1 exch put
                   32793: dup dup 2 get xl mul 2 exch put
                   32794: dup dup 3 get h mul yp add 3 exch put
                   32795: dup dup 4 get xl mul 4 exch put
                   32796: dup dup 5 get h mul yp add 5 exch put
                   32797: } def
                   32798: /topsegment {
                   32799: /n exch def
                   32800: /y n r mul n .5 add add d mul def
                   32801: /a y 1 y dup mul sub sqrt atan def
                   32802: /x a cos def
                   32803: /c2 exch x y mkabs def
                   32804: /ly1 exch h mul y add def
                   32805: /lx1 exch x abs mul def
                   32806: /c1 exch x y mkabs def
                   32807: x y /moveto load
                   32808: 0 0 1 a 180 a sub /arc load
                   32809: c1 aload pop /curveto load
                   32810: lx1 ly1 /lineto load
                   32811: c2 aload pop /curveto load
                   32812: /closepath load
                   32813: } def
                   32814: /botsegment {
                   32815: /n exch 1 add def
                   32816: /y n r mul n .5 sub add d mul def
                   32817: /a y 1 y dup mul sub sqrt atan def
                   32818: /x a cos def
                   32819: /c2 exch x y mkabs def
                   32820: /ly1 exch h mul y add def
                   32821: /lx1 exch x abs mul def
                   32822: /c1 exch x y mkabs def
                   32823: x y /moveto load
                   32824: 0 0 1 a 540 a sub /arcn load
                   32825: c1 aload pop /curveto load
                   32826: lx1 ly1 /lineto load
                   32827: c2 aload pop /curveto load
                   32828: /closepath load
                   32829: } def
                   32830: /segment {
                   32831: /n exch def
                   32832: /dh exch 1 exch sub 2 div def
                   32833: /ylb n r mul n 0.5 add add d mul def
                   32834: /ylt ylb h add def
                   32835: /yrb ylb h dh mul add def
                   32836: /yrt ylt h dh mul sub def
                   32837: /alb ylb 1 ylb dup mul sub sqrt atan def
                   32838: /alt ylt 1 ylt dup mul sub sqrt atan def
                   32839: /arb yrb 1 yrb dup mul sub sqrt atan 180 exch sub def
                   32840: /art yrt 1 yrt dup mul sub sqrt atan 180 exch sub def
                   32841: /xlb alb cos def
                   32842: /xlt alt cos def
                   32843: /xrb arb cos def
                   32844: /xrt art cos def
                   32845: /c4 exch xrb abs ylb mkabs def
                   32846: /ly2 exch h mul ylb add def
                   32847: /lx2 exch xrb abs mul def
                   32848: /c3 exch xrb abs ylb mkabs def
                   32849: /c2 exch xrt abs ylt mkabs def
                   32850: /ly1 exch h mul ylt add def
                   32851: /lx1 exch xrt abs mul def
                   32852: /c1 exch xrt abs ylt mkabs def
                   32853: xlb ylb /moveto load
                   32854: 0 0 1 alb alt /arc load
                   32855: c2 4 get c2 5 get /lineto load
                   32856: c2 2 get c2 3 get
                   32857: c2 0 get c2 1 get
                   32858: lx1 ly1        /curveto load
                   32859: c1 4 get c1 5 get /lineto load
                   32860: c1 2 get c1 3 get
                   32861: c1 0 get c1 1 get
                   32862: xrt yrt /curveto load
                   32863: 0 0 1 art arb /arc load
                   32864: c3 aload pop /curveto load
                   32865: lx2 ly2 /lineto load
                   32866: c4 aload pop /curveto load
                   32867: /closepath load
                   32868: } def
                   32869: 8 2.5 globesetup
                   32870: /globe8 [
                   32871: /newpath load
                   32872: [ -.9   .1  -.6   .2  -.5   .2  ] -.5   .2  [ -.4   .2   .0  .0  .4  .0 ] 3 topsegment
                   32873: [ -.9  -.35 -.85 -.35 -.8  -.35 ] -.1  -.35 [  .1  -.35  .3  .0  .5  .0 ]
                   32874: [ -.8   .35 -.75  .35 -.7   .35 ] -.1   .35 [  .1   .35  .4  .0  .55 .0 ] .55 2 segment
                   32875: [ -.8  -.35 -.75 -.35 -.7  -.35 ]  .05 -.35 [  .2  -.35  .4  .0  .55 .0 ]
                   32876: [ -.8   .35 -.75  .35 -.7   .35 ]  .05  .35 [  .2   .35  .45 .0  .6  .0 ] .7  1 segment
                   32877: [ -.8  -.35 -.75 -.35 -.7  -.35 ]  .0  -.35 [  .15 -.35  .4  .0  .6  .0 ]
                   32878: [ -.8   .35 -.75  .35 -.7   .35 ]  .0   .35 [  .15  .35  .4  .0  .6  .0 ] .7  0 segment
                   32879: [ -.7  -.35 -.65 -.35 -.6  -.35 ] -.1  -.35 [  .05 -.35  .35 .0  .55 .0 ]
                   32880: [ -.7   .35 -.65  .35 -.6   .35 ] -.1   .35 [  .05  .35  .25 .0  .4  .0 ] .8 -1 segment
                   32881: [ -.65 -.2  -.55 -.2 -.45  -.2  ] -.3   -.2 [ -.2  -.2   .2  .0  .3  .0 ]
                   32882: [ -.65  .1  -.55  .1 -.45   .1  ] -.45  .1  [ -.3   .1  -.1  .0  .0  .0 ] .96 -2 segment
                   32883: [  .0   .0   .0   .0  .0    .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]
                   32884: [  .0   .0   .0   .0  .0    .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]  1 -3 segment
                   32885: [  .0   .0   .0   .0  .0    .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] -4 botsegment
                   32886: ] cvx def
                   32887: 12 3 globesetup
                   32888: /globe12 [
                   32889: /newpath load
                   32890: [ -.8   .2  -.7  .25 -.5   .25 ] -.4  .25 [ -.2   .25  .0  .0  .2  .0 ] 5 topsegment
                   32891: [ -.7  -.35 -.7 -.35 -.6  -.35 ] -.3 -.35 [ -.1  -.35  .3  .0  .55 .0 ]
                   32892: [ -.7   .35 -.7  .35 -.6   .35 ] -.25 .35 [ -.05  .35  .4  .0  .55 .0 ] .6  4 segment
                   32893: [ -.8  -.35 -.7 -.35 -.6  -.35 ] -.1 -.35 [  .1  -.35  .4  .0  .5  .0 ]
                   32894: [ -.8   .35 -.7  .35 -.6   .35 ] -.1  .35 [  .1   .35  .4  .0  .5  .0 ] .7  3 segment
                   32895: [ -.8  -.35 -.7 -.35 -.6  -.35 ]  .0 -.35 [  .1  -.35  .45 .0  .55 .0 ]
                   32896: [ -.8   .35 -.7  .35 -.6   .35 ]  .0  .35 [  .15  .35  .4  .0  .5  .0 ] .8  2 segment
                   32897: [ -.75 -.35 -.7 -.35 -.6  -.35 ]  .0 -.35 [  .2  -.35  .4  .0  .5  .0 ]
                   32898: [ -.75  .35 -.7  .35 -.6   .35 ]  .0  .35 [  .2   .35  .45 .0  .55 .0 ] .9  1 segment
                   32899: [ -.7  -.35 -.6 -.35 -.55 -.35 ]  .0 -.35 [  .1  -.35  .45 .0  .55 .0 ]
                   32900: [ -.7   .35 -.6  .35 -.55  .35 ]  .0  .35 [  .1   .35  .5  .0  .6  .0 ] .9  0 segment
                   32901: ] cvx
                   32902: [
                   32903: [ -.7 -.35 -.6 -.35 -.5  -.35 ] -.15 -.35 [  .0  -.35  .4  .0  .5  .0 ]
                   32904: [ -.65 .35 -.55 .35 -.45  .35 ] -.15  .35 [  .0   .35  .35 .0  .45 .0 ] .9 -1 segment
                   32905: [ -.8 -.1  -.5 -.3  -.4  -.3  ] -.2  -.3  [  .0  -.3   .3  .0  .4  .0 ]
                   32906: [ -.8  .1  -.5  .3  -.4   .3  ] -.2   .3  [  .0   .3   .2  .0  .3  .0 ] 1 -2 segment
                   32907: [ -.7 -.1  -.5 -.15 -.4  -.15 ] -.3  -.15 [ -.2  -.15  .0  .0  .2  .0 ]
                   32908: [ -.7  .05 -.5  .1  -.4   .1  ] -.4   .1  [ -.3   .1   .0  .0  .2  .0 ] 1 -3 segment
                   32909: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]
                   32910: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] 1 -4 segment
                   32911: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]
                   32912: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] 1 -5 segment
                   32913: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] -6 botsegment
                   32914: ] cvx
                   32915: 4 array cvx
                   32916: dup 0 5 -1 roll put
                   32917: dup 1 /exec load put
                   32918: dup 2 4 -1 roll put
                   32919: dup 3 /exec load put
                   32920: def
                   32921: 
                   32922: /l {  lineto } def
                   32923: /rl {  rlineto } def
                   32924: /m {  moveto } def
                   32925: /rm {  rmoveto } def
                   32926: /C { closepath } def
                   32927: /c {  curveto } def
                   32928: /rc {  rcurveto } def
                   32929: /T { m 0 29 rl -9.5 0 rl 0 7 rl 29 0 rl 0 -7 rl -9.5 0 rl 0 -29 rl C } def
                   32930: /ATT {
                   32931: newpath
                   32932: 1 36 div dup scale
                   32933: 0  0 m  12 36 rl  8 0 rl -11 -36 rl C
                   32934: 25  0 m -11 36 rl  8 0 rl  12 -36 rl C
                   32935: 10  7 m   0  7 rl 14 0 rl   0  -7 rl C
                   32936: 36  0 T
                   32937: 80  6 m -3 0 -5 1.2 -6 2 rc -12 10 rl -2.4 2 -2.7 6 0 6 rc
                   32938: 1 0 2 -1 2 -2 rc 0 -4 rl 7 0 rl 0 4 rl
                   32939: 0 5 -3 7 -9 7 rc -6 0 -9 -3 -9 -7 rc
                   32940: 0 -2 0 -3.6 2 -6 rc 12 -10 rl 6 -5 10 -6 13 -6 rc C
                   32941: 71 18 m 0 -6 rl 0 -5 -3 -7 -7 -7 rc -3 0 -5 2 -5 4 rc 0 1 0 3 2 4 rc
                   32942: -4 5 rl -4 -2 -6 -6 -6 -9 rc 0 -7 6 -10 13 -10 rc
                   32943: 9 0 14 6 14 11 rc 0 8 rl C
                   32944: 82  0 T
                   32945: 36 dup scale
                   32946: } def
                   32947: 
                   32948: end
                   32949: 
                   32950: /build_LH { % standard ATT logo
                   32951:     LOGO-dict-mm begin
                   32952:        /w exch def
                   32953:        ptsize 29 lt    % select globe, # lines depends on point size
                   32954:                { /globe /globe8 load def }
                   32955:                { /globe /globe12 load def } ifelse
                   32956:        gsave
                   32957:         currentpoint translate
                   32958:         size 2 div dup scale
                   32959:         gsave
                   32960:          1.02 1 transform round exch round exch itransform
                   32961:          translate
                   32962:          globe fill
                   32963:         grestore
                   32964:         gsave
                   32965:          2.15 .62 translate
                   32966:          .78 dup scale
                   32967:          ATT fill
                   32968:         grestore
                   32969:        grestore
                   32970:     end
                   32971: } def
                   32972: 0707070014230454721006440057030057030000011347700522627502000003600000014726post.src/devLatin1/charlib/LV%
                   32973: % PostScript 12 and 8 line logos - vertical configuration. Switch occurs
                   32974: % automatically below point size 29. Code from Matthijs Melchior.
                   32975: %
                   32976: 
                   32977: /LOGO-dict-mm where not {
                   32978:        64 dict /LOGO-dict-mm exch def
                   32979: }{pop} ifelse
                   32980: LOGO-dict-mm begin             % initialize dictionary
                   32981: 
                   32982: 
                   32983: /globesetup {
                   32984: /r exch def
                   32985: /N exch def
                   32986: /d 2 N r mul N 1 sub add div def
                   32987: /h d r mul def
                   32988: } def
                   32989: /mkabs {
                   32990: /yp exch def
                   32991: /xl exch def
                   32992: dup dup 0 get xl mul 0 exch put
                   32993: dup dup 1 get h mul yp add 1 exch put
                   32994: dup dup 2 get xl mul 2 exch put
                   32995: dup dup 3 get h mul yp add 3 exch put
                   32996: dup dup 4 get xl mul 4 exch put
                   32997: dup dup 5 get h mul yp add 5 exch put
                   32998: } def
                   32999: /topsegment {
                   33000: /n exch def
                   33001: /y n r mul n .5 add add d mul def
                   33002: /a y 1 y dup mul sub sqrt atan def
                   33003: /x a cos def
                   33004: /c2 exch x y mkabs def
                   33005: /ly1 exch h mul y add def
                   33006: /lx1 exch x abs mul def
                   33007: /c1 exch x y mkabs def
                   33008: x y /moveto load
                   33009: 0 0 1 a 180 a sub /arc load
                   33010: c1 aload pop /curveto load
                   33011: lx1 ly1 /lineto load
                   33012: c2 aload pop /curveto load
                   33013: /closepath load
                   33014: } def
                   33015: /botsegment {
                   33016: /n exch 1 add def
                   33017: /y n r mul n .5 sub add d mul def
                   33018: /a y 1 y dup mul sub sqrt atan def
                   33019: /x a cos def
                   33020: /c2 exch x y mkabs def
                   33021: /ly1 exch h mul y add def
                   33022: /lx1 exch x abs mul def
                   33023: /c1 exch x y mkabs def
                   33024: x y /moveto load
                   33025: 0 0 1 a 540 a sub /arcn load
                   33026: c1 aload pop /curveto load
                   33027: lx1 ly1 /lineto load
                   33028: c2 aload pop /curveto load
                   33029: /closepath load
                   33030: } def
                   33031: /segment {
                   33032: /n exch def
                   33033: /dh exch 1 exch sub 2 div def
                   33034: /ylb n r mul n 0.5 add add d mul def
                   33035: /ylt ylb h add def
                   33036: /yrb ylb h dh mul add def
                   33037: /yrt ylt h dh mul sub def
                   33038: /alb ylb 1 ylb dup mul sub sqrt atan def
                   33039: /alt ylt 1 ylt dup mul sub sqrt atan def
                   33040: /arb yrb 1 yrb dup mul sub sqrt atan 180 exch sub def
                   33041: /art yrt 1 yrt dup mul sub sqrt atan 180 exch sub def
                   33042: /xlb alb cos def
                   33043: /xlt alt cos def
                   33044: /xrb arb cos def
                   33045: /xrt art cos def
                   33046: /c4 exch xrb abs ylb mkabs def
                   33047: /ly2 exch h mul ylb add def
                   33048: /lx2 exch xrb abs mul def
                   33049: /c3 exch xrb abs ylb mkabs def
                   33050: /c2 exch xrt abs ylt mkabs def
                   33051: /ly1 exch h mul ylt add def
                   33052: /lx1 exch xrt abs mul def
                   33053: /c1 exch xrt abs ylt mkabs def
                   33054: xlb ylb /moveto load
                   33055: 0 0 1 alb alt /arc load
                   33056: c2 4 get c2 5 get /lineto load
                   33057: c2 2 get c2 3 get
                   33058: c2 0 get c2 1 get
                   33059: lx1 ly1        /curveto load
                   33060: c1 4 get c1 5 get /lineto load
                   33061: c1 2 get c1 3 get
                   33062: c1 0 get c1 1 get
                   33063: xrt yrt /curveto load
                   33064: 0 0 1 art arb /arc load
                   33065: c3 aload pop /curveto load
                   33066: lx2 ly2 /lineto load
                   33067: c4 aload pop /curveto load
                   33068: /closepath load
                   33069: } def
                   33070: 8 2.5 globesetup
                   33071: /globe8 [
                   33072: /newpath load
                   33073: [ -.9   .1  -.6   .2  -.5   .2  ] -.5   .2  [ -.4   .2   .0  .0  .4  .0 ] 3 topsegment
                   33074: [ -.9  -.35 -.85 -.35 -.8  -.35 ] -.1  -.35 [  .1  -.35  .3  .0  .5  .0 ]
                   33075: [ -.8   .35 -.75  .35 -.7   .35 ] -.1   .35 [  .1   .35  .4  .0  .55 .0 ] .55 2 segment
                   33076: [ -.8  -.35 -.75 -.35 -.7  -.35 ]  .05 -.35 [  .2  -.35  .4  .0  .55 .0 ]
                   33077: [ -.8   .35 -.75  .35 -.7   .35 ]  .05  .35 [  .2   .35  .45 .0  .6  .0 ] .7  1 segment
                   33078: [ -.8  -.35 -.75 -.35 -.7  -.35 ]  .0  -.35 [  .15 -.35  .4  .0  .6  .0 ]
                   33079: [ -.8   .35 -.75  .35 -.7   .35 ]  .0   .35 [  .15  .35  .4  .0  .6  .0 ] .7  0 segment
                   33080: [ -.7  -.35 -.65 -.35 -.6  -.35 ] -.1  -.35 [  .05 -.35  .35 .0  .55 .0 ]
                   33081: [ -.7   .35 -.65  .35 -.6   .35 ] -.1   .35 [  .05  .35  .25 .0  .4  .0 ] .8 -1 segment
                   33082: [ -.65 -.2  -.55 -.2 -.45  -.2  ] -.3   -.2 [ -.2  -.2   .2  .0  .3  .0 ]
                   33083: [ -.65  .1  -.55  .1 -.45   .1  ] -.45  .1  [ -.3   .1  -.1  .0  .0  .0 ] .96 -2 segment
                   33084: [  .0   .0   .0   .0  .0    .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]
                   33085: [  .0   .0   .0   .0  .0    .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]  1 -3 segment
                   33086: [  .0   .0   .0   .0  .0    .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] -4 botsegment
                   33087: ] cvx def
                   33088: 12 3 globesetup
                   33089: /globe12 [
                   33090: /newpath load
                   33091: [ -.8   .2  -.7  .25 -.5   .25 ] -.4  .25 [ -.2   .25  .0  .0  .2  .0 ] 5 topsegment
                   33092: [ -.7  -.35 -.7 -.35 -.6  -.35 ] -.3 -.35 [ -.1  -.35  .3  .0  .55 .0 ]
                   33093: [ -.7   .35 -.7  .35 -.6   .35 ] -.25 .35 [ -.05  .35  .4  .0  .55 .0 ] .6  4 segment
                   33094: [ -.8  -.35 -.7 -.35 -.6  -.35 ] -.1 -.35 [  .1  -.35  .4  .0  .5  .0 ]
                   33095: [ -.8   .35 -.7  .35 -.6   .35 ] -.1  .35 [  .1   .35  .4  .0  .5  .0 ] .7  3 segment
                   33096: [ -.8  -.35 -.7 -.35 -.6  -.35 ]  .0 -.35 [  .1  -.35  .45 .0  .55 .0 ]
                   33097: [ -.8   .35 -.7  .35 -.6   .35 ]  .0  .35 [  .15  .35  .4  .0  .5  .0 ] .8  2 segment
                   33098: [ -.75 -.35 -.7 -.35 -.6  -.35 ]  .0 -.35 [  .2  -.35  .4  .0  .5  .0 ]
                   33099: [ -.75  .35 -.7  .35 -.6   .35 ]  .0  .35 [  .2   .35  .45 .0  .55 .0 ] .9  1 segment
                   33100: [ -.7  -.35 -.6 -.35 -.55 -.35 ]  .0 -.35 [  .1  -.35  .45 .0  .55 .0 ]
                   33101: [ -.7   .35 -.6  .35 -.55  .35 ]  .0  .35 [  .1   .35  .5  .0  .6  .0 ] .9  0 segment
                   33102: ] cvx
                   33103: [
                   33104: [ -.7 -.35 -.6 -.35 -.5  -.35 ] -.15 -.35 [  .0  -.35  .4  .0  .5  .0 ]
                   33105: [ -.65 .35 -.55 .35 -.45  .35 ] -.15  .35 [  .0   .35  .35 .0  .45 .0 ] .9 -1 segment
                   33106: [ -.8 -.1  -.5 -.3  -.4  -.3  ] -.2  -.3  [  .0  -.3   .3  .0  .4  .0 ]
                   33107: [ -.8  .1  -.5  .3  -.4   .3  ] -.2   .3  [  .0   .3   .2  .0  .3  .0 ] 1 -2 segment
                   33108: [ -.7 -.1  -.5 -.15 -.4  -.15 ] -.3  -.15 [ -.2  -.15  .0  .0  .2  .0 ]
                   33109: [ -.7  .05 -.5  .1  -.4   .1  ] -.4   .1  [ -.3   .1   .0  .0  .2  .0 ] 1 -3 segment
                   33110: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]
                   33111: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] 1 -4 segment
                   33112: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ]
                   33113: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] 1 -5 segment
                   33114: [  .0  .0   .0  .0   .0   .0  ]  .0   .0  [  .0   .0   .0  .0  .0  .0 ] -6 botsegment
                   33115: ] cvx
                   33116: 4 array cvx
                   33117: dup 0 5 -1 roll put
                   33118: dup 1 /exec load put
                   33119: dup 2 4 -1 roll put
                   33120: dup 3 /exec load put
                   33121: def
                   33122: 
                   33123: /l {  lineto } def
                   33124: /rl {  rlineto } def
                   33125: /m {  moveto } def
                   33126: /rm {  rmoveto } def
                   33127: /C { closepath } def
                   33128: /c {  curveto } def
                   33129: /rc {  rcurveto } def
                   33130: /T { m 0 29 rl -9.5 0 rl 0 7 rl 29 0 rl 0 -7 rl -9.5 0 rl 0 -29 rl C } def
                   33131: /ATT {
                   33132: newpath
                   33133: 1 36 div dup scale
                   33134: 0  0 m  12 36 rl  8 0 rl -11 -36 rl C
                   33135: 25  0 m -11 36 rl  8 0 rl  12 -36 rl C
                   33136: 10  7 m   0  7 rl 14 0 rl   0  -7 rl C
                   33137: 36  0 T
                   33138: 80  6 m -3 0 -5 1.2 -6 2 rc -12 10 rl -2.4 2 -2.7 6 0 6 rc
                   33139: 1 0 2 -1 2 -2 rc 0 -4 rl 7 0 rl 0 4 rl
                   33140: 0 5 -3 7 -9 7 rc -6 0 -9 -3 -9 -7 rc
                   33141: 0 -2 0 -3.6 2 -6 rc 12 -10 rl 6 -5 10 -6 13 -6 rc C
                   33142: 71 18 m 0 -6 rl 0 -5 -3 -7 -7 -7 rc -3 0 -5 2 -5 4 rc 0 1 0 3 2 4 rc
                   33143: -4 5 rl -4 -2 -6 -6 -6 -9 rc 0 -7 6 -10 13 -10 rc
                   33144: 9 0 14 6 14 11 rc 0 8 rl C
                   33145: 82  0 T
                   33146: 36 dup scale
                   33147: } def
                   33148: 
                   33149: end
                   33150: 
                   33151: /build_LV { % standard ATT logo
                   33152:     LOGO-dict-mm begin
                   33153:        /w exch def
                   33154:        ptsize 29 lt    % select globe, # lines depends on point size
                   33155:                { /globe /globe8 load def }
                   33156:                { /globe /globe12 load def } ifelse
                   33157:        gsave
                   33158:         currentpoint translate
                   33159:         size 2 div dup scale
                   33160:         gsave
                   33161:          1.02 1 transform round exch round exch itransform
                   33162:          translate
                   33163:          globe fill
                   33164:         grestore
                   33165:         gsave
                   33166:          %2.15 .62 translate
                   33167:          -0.1 -1.0 translate
                   33168:          .78 dup scale
                   33169:          ATT fill
                   33170:         grestore
                   33171:        grestore
                   33172:     end
                   33173: } def
                   33174: 0707070014230454731006440057030057030000011347570522627502000004200000001173post.src/devLatin1/charlib/READMEPostscript definitions for special troff characters. File names are
                   33175: the two character troff names. Each defines a PostScript procedure
                   33176: that begins with build_ and ends with the character's name. The
                   33177: build_?? procedure is called with the character width as it's only
                   33178: argument. The .map files contain extra character data (e.g. image
                   33179: data) that dpost downloads immediately after the build_?? call,
                   33180: if the character's font table code field is 2 (rather than 1).
                   33181: 
                   33182: The following PostScript variables are available:
                   33183: 
                   33184:        font            current font
                   33185:        ptsize          current point size
                   33186:        size            actual font size - scaled up from ptsize
                   33187: 
                   33188: Don't overuse this stuff!
                   33189: 
                   33190: 0707070014230454741006440057030057030000011261550522627502000003600000002631post.src/devLatin1/charlib/Sl/build_Sl {
                   33191: pop
                   33192: gsave
                   33193: size .0022 mul dup scale
                   33194: currentpoint translate
                   33195: 14 93 moveto
                   33196: 14 96 lineto
                   33197: 29 110 lineto
                   33198: 44 121 lineto
                   33199: 54 127 lineto
                   33200: 55 132 lineto
                   33201: 57 146 lineto
                   33202: 59 157 lineto
                   33203: 62 171 lineto
                   33204: 66 186 lineto
                   33205: 70 199 lineto
                   33206: 75 213 lineto
                   33207: 81 228 lineto
                   33208: 88 243 lineto
                   33209: 96 257 lineto
                   33210: 106 272 lineto
                   33211: 118 287 lineto
                   33212: 133 300 lineto
                   33213: 148 307 lineto
                   33214: 163 308 lineto
                   33215: 178 304 lineto
                   33216: 191 293 lineto
                   33217: 197 281 lineto
                   33218: 198 277 lineto
                   33219: 198 260 lineto
                   33220: 194 246 lineto
                   33221: 187 231 lineto
                   33222: 179 217 lineto
                   33223: 168 202 lineto
                   33224: 155 187 lineto
                   33225: 141 172 lineto
                   33226: 126 158 lineto
                   33227: 111 146 lineto
                   33228: 96 136 lineto
                   33229: 94 131 lineto
                   33230: 93 123 lineto
                   33231: 92 112 lineto
                   33232: 91 103 lineto
                   33233: 90 93 lineto
                   33234: 89 81 lineto
                   33235: 89 40 lineto
                   33236: 92 28 lineto
                   33237: 97 18 lineto
                   33238: 108 10 lineto
                   33239: 122 10 lineto
                   33240: 134 18 lineto
                   33241: 145 33 lineto
                   33242: 152 48 lineto
                   33243: 158 62 lineto
                   33244: 168 58 lineto
                   33245: 168 59 lineto
                   33246: 163 45 lineto
                   33247: 157 31 lineto
                   33248: 148 16 lineto
                   33249: 133 3 lineto
                   33250: 118 -1 lineto
                   33251: 103 0 lineto
                   33252: 88 5 lineto
                   33253: 73 18 lineto
                   33254: 64 31 lineto
                   33255: 58 46 lineto
                   33256: 55 59 lineto
                   33257: 53 73 lineto
                   33258: 52 111 lineto
                   33259: 37 101 lineto
                   33260: 22 86 lineto
                   33261: 14 93 lineto
                   33262: 
                   33263: 97 152 moveto
                   33264: 97 153 lineto
                   33265: 99 166 lineto
                   33266: 101 178 lineto
                   33267: 103 190 lineto
                   33268: 106 205 lineto
                   33269: 109 218 lineto
                   33270: 113 232 lineto
                   33271: 118 246 lineto
                   33272: 124 261 lineto
                   33273: 132 275 lineto
                   33274: 144 290 lineto
                   33275: 157 298 lineto
                   33276: 171 298 lineto
                   33277: 181 291 lineto
                   33278: 186 283 lineto
                   33279: 187 279 lineto
                   33280: 187 264 lineto
                   33281: 186 260 lineto
                   33282: 181 246 lineto
                   33283: 174 233 lineto
                   33284: 165 218 lineto
                   33285: 155 204 lineto
                   33286: 142 190 lineto
                   33287: 127 175 lineto
                   33288: 112 162 lineto
                   33289: 97 152 lineto
                   33290: 
                   33291: eofill
                   33292: grestore
                   33293: } def
                   33294: 0707070014230454751006440057030057030000011261570522627502000003600000000264post.src/devLatin1/charlib/bx/build_bx {
                   33295:     pop
                   33296:     size 2 div /side exch def
                   33297:     currentpoint
                   33298:     newpath
                   33299:     moveto
                   33300:     0 side rlineto
                   33301:     side 0 rlineto
                   33302:     0 side neg rlineto
                   33303:     closepath
                   33304:     fill
                   33305: } def
                   33306: 0707070014230454761006440057030057030000011347770522627502000003600000000221post.src/devLatin1/charlib/ci/build_ci {
                   33307:     pop
                   33308:     size 3 mul 8 div /rad exch def
                   33309:     currentpoint
                   33310:     newpath
                   33311:     rad add exch rad add exch rad 0 360 arc
                   33312:     stroke
                   33313: } def
                   33314: 0707070014230454771006440057030057030000011261650522627502000003600000000074post.src/devLatin1/charlib/ff/build_ff {
                   33315:     pop
                   33316:     size .05 mul neg 0 (ff) ashow
                   33317: } def
                   33318: 0707070014230455001006440057030057030000011261660522627502000003600000001716post.src/devLatin1/charlib/lc%
                   33319: % This stuff has gotten terribly complicated - sorry.
                   33320: %
                   33321: 
                   33322: currentdict /bvbbox known not {/bvbbox [0 0 0 0 0 0 0] def} if
                   33323: 
                   33324: /build_lc {
                   33325:     pop
                   33326:     gsave
                   33327:        currentpoint translate newpath
                   33328:        bvbbox 6 get size ne {
                   33329:            gsave
                   33330:                initgraphics
                   33331:                scaling scaling scale
                   33332:                0 0 moveto
                   33333:                (\357) false charpath flattenpath pathbbox 0 0 size bvbbox astore pop
                   33334:                0 1 idtransform dup mul exch dup mul add sqrt dup
                   33335:                bvbbox 1 get add bvbbox 1 3 -1 roll put
                   33336:                bvbbox 3 get exch sub bvbbox 3 3 -1 roll put
                   33337:                bvbbox 2 get bvbbox 0 get sub bvbbox 4 3 -1 roll put
                   33338:                bvbbox 2 get bvbbox 0 get add 2 div bvbbox 5 3 -1 roll put
                   33339:            grestore
                   33340:        } if
                   33341:        bvbbox 0 get bvbbox 1 get moveto
                   33342:        bvbbox 0 get bvbbox 3 get lineto
                   33343:        bvbbox 5 get bvbbox 4 get 8 mul add dup bvbbox 3 get lineto
                   33344:        bvbbox 1 get lineto closepath clip newpath
                   33345:        0 0 moveto (\357) show
                   33346:        bvbbox 5 get bvbbox 3 get moveto
                   33347:        bvbbox 4 get dup dup
                   33348:        8 mul 0 rlineto
                   33349:        0 exch neg rlineto
                   33350:        8 mul neg 0 rlineto
                   33351:        closepath clip eofill
                   33352:     grestore
                   33353: } def
                   33354: 0707070014230455011006440057030057030000011261670522627502000003600000001712post.src/devLatin1/charlib/lf%
                   33355: % This stuff has gotten terribly complicated - sorry.
                   33356: %
                   33357: 
                   33358: currentdict /bvbbox known not {/bvbbox [0 0 0 0 0 0 0] def} if
                   33359: 
                   33360: /build_lf {
                   33361:     pop
                   33362:     gsave
                   33363:        currentpoint translate newpath
                   33364:        bvbbox 6 get size ne {
                   33365:            gsave
                   33366:                initgraphics
                   33367:                scaling scaling scale
                   33368:                0 0 moveto
                   33369:                (\357) false charpath flattenpath pathbbox 0 0 size bvbbox astore pop
                   33370:                0 1 idtransform dup mul exch dup mul add sqrt dup
                   33371:                bvbbox 1 get add bvbbox 1 3 -1 roll put
                   33372:                bvbbox 3 get exch sub bvbbox 3 3 -1 roll put
                   33373:                bvbbox 2 get bvbbox 0 get sub bvbbox 4 3 -1 roll put
                   33374:                bvbbox 2 get bvbbox 0 get add 2 div bvbbox 5 3 -1 roll put
                   33375:            grestore
                   33376:        } if
                   33377:        bvbbox 0 get bvbbox 1 get moveto
                   33378:        bvbbox 0 get bvbbox 3 get lineto
                   33379:        bvbbox 5 get bvbbox 4 get 8 mul add dup bvbbox 3 get lineto
                   33380:        bvbbox 1 get lineto closepath clip newpath
                   33381:        0 0 moveto (\357) show
                   33382:        bvbbox 5 get bvbbox 1 get moveto
                   33383:        bvbbox 4 get dup dup
                   33384:        8 mul 0 rlineto
                   33385:        0 exch rlineto
                   33386:        8 mul neg 0 rlineto
                   33387:        closepath clip eofill
                   33388:     grestore
                   33389: } def
                   33390: 0707070014230455021006440057030057030000011262000522627502000003600000004412post.src/devLatin1/charlib/lh/build_lh {
                   33391: pop
                   33392: gsave
                   33393: size .0022 mul dup scale
                   33394: currentpoint translate
                   33395: 
                   33396: 16 177 moveto
                   33397: 16 188 lineto
                   33398: 21 193 lineto
                   33399: 30 193 lineto
                   33400: 34 189 lineto
                   33401: 36 183 lineto
                   33402: 36 180 lineto
                   33403: 34 174 lineto
                   33404: 27 170 lineto
                   33405: 19 172 lineto
                   33406: 16 177 lineto
                   33407: stroke
                   33408: 
                   33409: 38 194 moveto
                   33410: 38 196 lineto
                   33411: 53 199 lineto
                   33412: 68 201 lineto
                   33413: 83 202 lineto
                   33414: 98 203 lineto
                   33415: 113 204 lineto
                   33416: 128 204 lineto
                   33417: 143 205 lineto
                   33418: 158 205 lineto
                   33419: 173 205 lineto
                   33420: 188 204 lineto
                   33421: 203 203 lineto
                   33422: 218 202 lineto
                   33423: 233 200 lineto
                   33424: 248 198 lineto
                   33425: 263 196 lineto
                   33426: 278 194 lineto
                   33427: 293 190 lineto
                   33428: 308 186 lineto
                   33429: 323 181 lineto
                   33430: 338 176 lineto
                   33431: 353 168 lineto
                   33432: 361 162 lineto
                   33433: 364 153 lineto
                   33434: 366 138 lineto
                   33435: 367 126 lineto
                   33436: 368 106 lineto
                   33437: 369 80 lineto
                   33438: 369 74 lineto
                   33439: 368 60 lineto
                   33440: 367 54 lineto
                   33441: 362 43 lineto
                   33442: 348 34 lineto
                   33443: 333 28 lineto
                   33444: 318 25 lineto
                   33445: 303 26 lineto
                   33446: 288 29 lineto
                   33447: 273 31 lineto
                   33448: 258 32 lineto
                   33449: 243 32 lineto
                   33450: 228 30 lineto
                   33451: 213 27 lineto
                   33452: 198 24 lineto
                   33453: 183 23 lineto
                   33454: 168 23 lineto
                   33455: 153 27 lineto
                   33456: 148 34 lineto
                   33457: 148 47 lineto
                   33458: 153 54 lineto
                   33459: 168 58 lineto
                   33460: 183 58 lineto
                   33461: 198 58 lineto
                   33462: 213 59 lineto
                   33463: 226 60 lineto
                   33464: 228 62 lineto
                   33465: 228 67 lineto
                   33466: 223 71 lineto
                   33467: 208 71 lineto
                   33468: 193 70 lineto
                   33469: 178 70 lineto
                   33470: 163 70 lineto
                   33471: 148 70 lineto
                   33472: 133 71 lineto
                   33473: 123 76 lineto
                   33474: 120 84 lineto
                   33475: 120 91 lineto
                   33476: 122 98 lineto
                   33477: 129 104 lineto
                   33478: 144 106 lineto
                   33479: 159 107 lineto
                   33480: 174 107 lineto
                   33481: 189 107 lineto
                   33482: 202 108 lineto
                   33483: 204 110 lineto
                   33484: 204 117 lineto
                   33485: 201 119 lineto
                   33486: 186 119 lineto
                   33487: 171 119 lineto
                   33488: 156 119 lineto
                   33489: 141 119 lineto
                   33490: 126 119 lineto
                   33491: 111 121 lineto
                   33492: 103 128 lineto
                   33493: 101 137 lineto
                   33494: 101 142 lineto
                   33495: 103 150 lineto
                   33496: 111 158 lineto
                   33497: 126 161 lineto
                   33498: 141 161 lineto
                   33499: 156 162 lineto
                   33500: 171 163 lineto
                   33501: 186 163 lineto
                   33502: 191 165 lineto
                   33503: 192 167 lineto
                   33504: 192 171 lineto
                   33505: 190 174 lineto
                   33506: 176 175 lineto
                   33507: 161 175 lineto
                   33508: 146 175 lineto
                   33509: 131 174 lineto
                   33510: 116 174 lineto
                   33511: 101 174 lineto
                   33512: 86 173 lineto
                   33513: 71 172 lineto
                   33514: 56 171 lineto
                   33515: 41 171 lineto
                   33516: 41 174 lineto
                   33517: 43 178 lineto
                   33518: 43 187 lineto
                   33519: 38 194 lineto
                   33520: stroke
                   33521: 
                   33522: 373 169 moveto
                   33523: 373 176 lineto
                   33524: 375 182 lineto
                   33525: 386 190 lineto
                   33526: 401 193 lineto
                   33527: 408 191 lineto
                   33528: 411 185 lineto
                   33529: 412 181 lineto
                   33530: 414 167 lineto
                   33531: 415 158 lineto
                   33532: 416 144 lineto
                   33533: 417 128 lineto
                   33534: 418 110 lineto
                   33535: 418 60 lineto
                   33536: 417 45 lineto
                   33537: 415 37 lineto
                   33538: 409 34 lineto
                   33539: 394 31 lineto
                   33540: 381 35 lineto
                   33541: 379 42 lineto
                   33542: 379 52 lineto
                   33543: 380 67 lineto
                   33544: 380 77 lineto
                   33545: 379 77 lineto
                   33546: 378 106 lineto
                   33547: 377 121 lineto
                   33548: 376 133 lineto
                   33549: 375 147 lineto
                   33550: 374 158 lineto
                   33551: 373 169 lineto
                   33552: 
                   33553: stroke
                   33554: grestore
                   33555: } def
                   33556: 0707070014230455031006440057030057030000011263050522627502000003600000000222post.src/devLatin1/charlib/ob/build_ob {
                   33557:     pop
                   33558:     size 3 mul 16 div /rad exch def
                   33559:     currentpoint
                   33560:     newpath
                   33561:     rad add exch rad add exch rad 0 360 arc
                   33562:     stroke
                   33563: } def
                   33564: 0707070014230455041006440057030057030000011263060522627502100003600000001716post.src/devLatin1/charlib/rc%
                   33565: % This stuff has gotten terribly complicated - sorry.
                   33566: %
                   33567: 
                   33568: currentdict /bvbbox known not {/bvbbox [0 0 0 0 0 0 0] def} if
                   33569: 
                   33570: /build_rc {
                   33571:     pop
                   33572:     gsave
                   33573:        currentpoint translate newpath
                   33574:        bvbbox 6 get size ne {
                   33575:            gsave
                   33576:                initgraphics
                   33577:                scaling scaling scale
                   33578:                0 0 moveto
                   33579:                (\357) false charpath flattenpath pathbbox 0 0 size bvbbox astore pop
                   33580:                0 1 idtransform dup mul exch dup mul add sqrt dup
                   33581:                bvbbox 1 get add bvbbox 1 3 -1 roll put
                   33582:                bvbbox 3 get exch sub bvbbox 3 3 -1 roll put
                   33583:                bvbbox 2 get bvbbox 0 get sub bvbbox 4 3 -1 roll put
                   33584:                bvbbox 2 get bvbbox 0 get add 2 div bvbbox 5 3 -1 roll put
                   33585:            grestore
                   33586:        } if
                   33587:        bvbbox 2 get bvbbox 1 get moveto
                   33588:        bvbbox 2 get bvbbox 3 get lineto
                   33589:        bvbbox 5 get bvbbox 4 get 8 mul sub dup bvbbox 3 get lineto
                   33590:        bvbbox 1 get lineto closepath clip newpath
                   33591:        0 0 moveto (\357) show
                   33592:        bvbbox 5 get bvbbox 3 get moveto
                   33593:        bvbbox 4 get dup dup
                   33594:        8 mul neg 0 rlineto
                   33595:        0 exch neg rlineto
                   33596:        8 mul 0 rlineto
                   33597:        closepath clip eofill
                   33598:     grestore
                   33599: } def
                   33600: 0707070014230455051006440057030057030000011263070522627502100003600000001712post.src/devLatin1/charlib/rf%
                   33601: % This stuff has gotten terribly complicated - sorry.
                   33602: %
                   33603: 
                   33604: currentdict /bvbbox known not {/bvbbox [0 0 0 0 0 0 0] def} if
                   33605: 
                   33606: /build_rf {
                   33607:     pop
                   33608:     gsave
                   33609:        currentpoint translate newpath
                   33610:        bvbbox 6 get size ne {
                   33611:            gsave
                   33612:                initgraphics
                   33613:                scaling scaling scale
                   33614:                0 0 moveto
                   33615:                (\357) false charpath flattenpath pathbbox 0 0 size bvbbox astore pop
                   33616:                0 1 idtransform dup mul exch dup mul add sqrt dup
                   33617:                bvbbox 1 get add bvbbox 1 3 -1 roll put
                   33618:                bvbbox 3 get exch sub bvbbox 3 3 -1 roll put
                   33619:                bvbbox 2 get bvbbox 0 get sub bvbbox 4 3 -1 roll put
                   33620:                bvbbox 2 get bvbbox 0 get add 2 div bvbbox 5 3 -1 roll put
                   33621:            grestore
                   33622:        } if
                   33623:        bvbbox 2 get bvbbox 1 get moveto
                   33624:        bvbbox 2 get bvbbox 3 get lineto
                   33625:        bvbbox 5 get bvbbox 4 get 8 mul sub dup bvbbox 3 get lineto
                   33626:        bvbbox 1 get lineto closepath clip newpath
                   33627:        0 0 moveto (\357) show
                   33628:        bvbbox 5 get bvbbox 1 get moveto
                   33629:        bvbbox 4 get dup dup
                   33630:        8 mul neg 0 rlineto
                   33631:        0 exch rlineto
                   33632:        8 mul 0 rlineto
                   33633:        closepath clip eofill
                   33634:     grestore
                   33635: } def
                   33636: 0707070014230455061006440057030057030000011327350522627502100003600000004171post.src/devLatin1/charlib/rh/build_rh {
                   33637: pop
                   33638: gsave
                   33639: size .0022 mul dup scale
                   33640: currentpoint translate
                   33641: 
                   33642: 15 66 moveto
                   33643: 15 86 lineto
                   33644: 16 131 lineto
                   33645: 17 146 lineto
                   33646: 18 158 lineto
                   33647: 19 167 lineto
                   33648: 21 181 lineto
                   33649: 24 190 lineto
                   33650: 34 193 lineto
                   33651: 49 189 lineto
                   33652: 58 182 lineto
                   33653: 60 177 lineto
                   33654: 60 166 lineto
                   33655: 59 156 lineto
                   33656: 58 143 lineto
                   33657: 57 130 lineto
                   33658: 56 117 lineto
                   33659: 55 102 lineto
                   33660: 54 42 lineto
                   33661: 53 39 lineto
                   33662: 49 35 lineto
                   33663: 34 34 lineto
                   33664: 19 39 lineto
                   33665: 16 47 lineto
                   33666: 15 66 lineto
                   33667: stroke
                   33668: 
                   33669: 65 60 moveto
                   33670: 65 111 lineto
                   33671: 66 127 lineto
                   33672: 67 139 lineto
                   33673: 69 153 lineto
                   33674: 72 163 lineto
                   33675: 83 171 lineto
                   33676: 98 177 lineto
                   33677: 113 182 lineto
                   33678: 128 187 lineto
                   33679: 143 190 lineto
                   33680: 158 194 lineto
                   33681: 173 196 lineto
                   33682: 188 199 lineto
                   33683: 203 201 lineto
                   33684: 218 203 lineto
                   33685: 233 205 lineto
                   33686: 248 205 lineto
                   33687: 263 206 lineto
                   33688: 278 206 lineto
                   33689: 293 206 lineto
                   33690: 308 206 lineto
                   33691: 323 206 lineto
                   33692: 338 205 lineto
                   33693: 353 203 lineto
                   33694: 368 202 lineto
                   33695: 383 200 lineto
                   33696: 394 197 lineto
                   33697: 389 190 lineto
                   33698: 389 180 lineto
                   33699: 391 176 lineto
                   33700: 391 173 lineto
                   33701: 380 173 lineto
                   33702: 365 173 lineto
                   33703: 350 174 lineto
                   33704: 335 175 lineto
                   33705: 320 176 lineto
                   33706: 305 176 lineto
                   33707: 290 176 lineto
                   33708: 275 177 lineto
                   33709: 260 177 lineto
                   33710: 245 177 lineto
                   33711: 240 173 lineto
                   33712: 240 170 lineto
                   33713: 245 165 lineto
                   33714: 260 164 lineto
                   33715: 275 164 lineto
                   33716: 290 164 lineto
                   33717: 305 163 lineto
                   33718: 320 160 lineto
                   33719: 327 155 lineto
                   33720: 330 149 lineto
                   33721: 330 134 lineto
                   33722: 328 129 lineto
                   33723: 323 124 lineto
                   33724: 309 121 lineto
                   33725: 294 121 lineto
                   33726: 279 121 lineto
                   33727: 264 121 lineto
                   33728: 249 121 lineto
                   33729: 234 121 lineto
                   33730: 228 118 lineto
                   33731: 228 112 lineto
                   33732: 234 109 lineto
                   33733: 249 109 lineto
                   33734: 264 109 lineto
                   33735: 279 108 lineto
                   33736: 294 108 lineto
                   33737: 306 104 lineto
                   33738: 311 97 lineto
                   33739: 312 91 lineto
                   33740: 312 88 lineto
                   33741: 311 82 lineto
                   33742: 305 74 lineto
                   33743: 290 72 lineto
                   33744: 275 72 lineto
                   33745: 260 72 lineto
                   33746: 245 73 lineto
                   33747: 230 73 lineto
                   33748: 215 73 lineto
                   33749: 205 70 lineto
                   33750: 205 63 lineto
                   33751: 217 60 lineto
                   33752: 232 60 lineto
                   33753: 247 60 lineto
                   33754: 262 60 lineto
                   33755: 277 57 lineto
                   33756: 283 52 lineto
                   33757: 285 44 lineto
                   33758: 285 41 lineto
                   33759: 284 35 lineto
                   33760: 280 30 lineto
                   33761: 268 26 lineto
                   33762: 253 25 lineto
                   33763: 238 26 lineto
                   33764: 223 28 lineto
                   33765: 208 31 lineto
                   33766: 193 33 lineto
                   33767: 178 34 lineto
                   33768: 163 33 lineto
                   33769: 148 31 lineto
                   33770: 133 28 lineto
                   33771: 118 27 lineto
                   33772: 103 28 lineto
                   33773: 88 34 lineto
                   33774: 73 43 lineto
                   33775: 67 52 lineto
                   33776: 65 60 lineto
                   33777: stroke
                   33778: 
                   33779: 396 180 moveto
                   33780: 396 188 lineto
                   33781: 399 194 lineto
                   33782: 410 196 lineto
                   33783: 416 190 lineto
                   33784: 416 180 lineto
                   33785: 415 177 lineto
                   33786: 411 173 lineto
                   33787: 400 173 lineto
                   33788: 396 180 lineto
                   33789: stroke
                   33790: 
                   33791: grestore
                   33792: } def
                   33793: 0707070014230455071006440057030057030000011331250522627502100003600000000320post.src/devLatin1/charlib/sq/build_sq {
                   33794:     pop
                   33795:     size 2 div /side exch def
                   33796:     currentpoint
                   33797:     newpath
                   33798:     moveto
                   33799:     0 side rlineto
                   33800:     side 0 rlineto
                   33801:     0 side neg rlineto
                   33802:     closepath
                   33803:     font B eq {fill} {stroke} ifelse
                   33804: } def
                   33805: 0707070014230455101006440057030057030000011331260522627502100003600000000130post.src/devLatin1/charlib/~=/build_~= {
                   33806:     pop
                   33807:     (\176) stringwidth pop neg size -.15 mul (\176\055) ashow
                   33808: } def
                   33809: 0707070014230455111006440057030057030000011331270522627502100003600000000327post.src/devLatin1/charlib/RC/build_RC {
                   33810:     pop
                   33811:     size 4 div /side exch def
                   33812:     currentpoint
                   33813:     newpath
                   33814:     moveto
                   33815:     0 side 1.5 mul rmoveto
                   33816:     0 side rlineto
                   33817:     side 2.5 mul 0 rlineto
                   33818:     0 side neg rlineto
                   33819:     closepath
                   33820:     fill
                   33821: } def
                   33822: 0707070014230455121006440057030057030000011331750522627502100003600000001051post.src/devLatin1/charlib/DG%
                   33823: % UMDS danger sign - needs to be cleaned up!
                   33824: %
                   33825: 
                   33826: /build_DG {
                   33827:     /x0 1.5 6 div 72 mul def   % triangle length
                   33828:     pop
                   33829:     gsave
                   33830:        currentpoint translate
                   33831:        1 scaling div ptsize 10 div mul dup scale
                   33832:        2 setlinewidth
                   33833:        0 setlinecap
                   33834:        newpath
                   33835:        0 0 moveto
                   33836:        x0 0 lineto
                   33837:        x0 2 div x0 3 sqrt 2 div mul lineto
                   33838:        closepath fill
                   33839:        1 setgray
                   33840:        /Helvetica-Bold findfont 12 scalefont setfont
                   33841:        0 0 moveto
                   33842:        (!) false charpath pathbbox
                   33843:        exch 4 -1 roll add 2 div x0 2 div exch sub 0 moveto
                   33844:        exch sub x0 3 sqrt 2 div mul exch sub 3 div 0 exch rmoveto
                   33845:        (!) show
                   33846:     grestore
                   33847: } def
                   33848: 
                   33849: 0707070014230455131006440057030057030000011331760522627502100003600000000735post.src/devLatin1/charlib/PC%
                   33850: % UMDS pencil - needs to be cleaned up.
                   33851: %
                   33852: 
                   33853: /build_PC {
                   33854:     pop
                   33855:     gsave
                   33856:        currentpoint translate
                   33857:        1 scaling div ptsize 10 div mul dup scale
                   33858:        newpath
                   33859:        0 setlinecap
                   33860:        1 setlinejoin
                   33861:        2 setlinewidth
                   33862:        0 1 moveto 12 0 rlineto stroke
                   33863:        0 5 moveto 12 0 rlineto stroke
                   33864:        0 9 moveto 12 0 rlineto stroke
                   33865:        1 setlinewidth
                   33866:        12 .5 moveto 21.27362 5 lineto 12 9.5 lineto stroke
                   33867:        21.27362 5 moveto
                   33868:        .4 9.27362 mul neg .4 4 mul rlineto
                   33869:        0 .8 4 mul neg rlineto
                   33870:        closepath fill
                   33871:     grestore
                   33872: } def
                   33873: 
                   33874: 0707070014230455141006440057030057030000011333450522627502100003600000004404post.src/devLatin1/charlib/lH/build_lH {
                   33875: pop
                   33876: gsave
                   33877: size .0022 mul dup scale
                   33878: currentpoint translate
                   33879: 
                   33880: 16 177 moveto
                   33881: 16 188 lineto
                   33882: 21 193 lineto
                   33883: 30 193 lineto
                   33884: 34 189 lineto
                   33885: 36 183 lineto
                   33886: 36 180 lineto
                   33887: 34 174 lineto
                   33888: 27 170 lineto
                   33889: 19 172 lineto
                   33890: 16 177 lineto
                   33891: fill
                   33892: 
                   33893: 38 194 moveto
                   33894: 38 196 lineto
                   33895: 53 199 lineto
                   33896: 68 201 lineto
                   33897: 83 202 lineto
                   33898: 98 203 lineto
                   33899: 113 204 lineto
                   33900: 128 204 lineto
                   33901: 143 205 lineto
                   33902: 158 205 lineto
                   33903: 173 205 lineto
                   33904: 188 204 lineto
                   33905: 203 203 lineto
                   33906: 218 202 lineto
                   33907: 233 200 lineto
                   33908: 248 198 lineto
                   33909: 263 196 lineto
                   33910: 278 194 lineto
                   33911: 293 190 lineto
                   33912: 308 186 lineto
                   33913: 323 181 lineto
                   33914: 338 176 lineto
                   33915: 353 168 lineto
                   33916: 361 162 lineto
                   33917: 364 153 lineto
                   33918: 366 138 lineto
                   33919: 367 126 lineto
                   33920: 368 106 lineto
                   33921: 369 80 lineto
                   33922: 369 74 lineto
                   33923: 368 60 lineto
                   33924: 367 54 lineto
                   33925: 362 43 lineto
                   33926: 348 34 lineto
                   33927: 333 28 lineto
                   33928: 318 25 lineto
                   33929: 303 26 lineto
                   33930: 288 29 lineto
                   33931: 273 31 lineto
                   33932: 258 32 lineto
                   33933: 243 32 lineto
                   33934: 228 30 lineto
                   33935: 213 27 lineto
                   33936: 198 24 lineto
                   33937: 183 23 lineto
                   33938: 168 23 lineto
                   33939: 153 27 lineto
                   33940: 148 34 lineto
                   33941: 148 47 lineto
                   33942: 153 54 lineto
                   33943: 168 58 lineto
                   33944: 183 58 lineto
                   33945: 198 58 lineto
                   33946: 213 59 lineto
                   33947: 226 60 lineto
                   33948: 228 62 lineto
                   33949: 228 67 lineto
                   33950: 223 71 lineto
                   33951: 208 71 lineto
                   33952: 193 70 lineto
                   33953: 178 70 lineto
                   33954: 163 70 lineto
                   33955: 148 70 lineto
                   33956: 133 71 lineto
                   33957: 123 76 lineto
                   33958: 120 84 lineto
                   33959: 120 91 lineto
                   33960: 122 98 lineto
                   33961: 129 104 lineto
                   33962: 144 106 lineto
                   33963: 159 107 lineto
                   33964: 174 107 lineto
                   33965: 189 107 lineto
                   33966: 202 108 lineto
                   33967: 204 110 lineto
                   33968: 204 117 lineto
                   33969: 201 119 lineto
                   33970: 186 119 lineto
                   33971: 171 119 lineto
                   33972: 156 119 lineto
                   33973: 141 119 lineto
                   33974: 126 119 lineto
                   33975: 111 121 lineto
                   33976: 103 128 lineto
                   33977: 101 137 lineto
                   33978: 101 142 lineto
                   33979: 103 150 lineto
                   33980: 111 158 lineto
                   33981: 126 161 lineto
                   33982: 141 161 lineto
                   33983: 156 162 lineto
                   33984: 171 163 lineto
                   33985: 186 163 lineto
                   33986: 191 165 lineto
                   33987: 192 167 lineto
                   33988: 192 171 lineto
                   33989: 190 174 lineto
                   33990: 176 175 lineto
                   33991: 161 175 lineto
                   33992: 146 175 lineto
                   33993: 131 174 lineto
                   33994: 116 174 lineto
                   33995: 101 174 lineto
                   33996: 86 173 lineto
                   33997: 71 172 lineto
                   33998: 56 171 lineto
                   33999: 41 171 lineto
                   34000: 41 174 lineto
                   34001: 43 178 lineto
                   34002: 43 187 lineto
                   34003: 38 194 lineto
                   34004: fill
                   34005: 
                   34006: 373 169 moveto
                   34007: 373 176 lineto
                   34008: 375 182 lineto
                   34009: 386 190 lineto
                   34010: 401 193 lineto
                   34011: 408 191 lineto
                   34012: 411 185 lineto
                   34013: 412 181 lineto
                   34014: 414 167 lineto
                   34015: 415 158 lineto
                   34016: 416 144 lineto
                   34017: 417 128 lineto
                   34018: 418 110 lineto
                   34019: 418 60 lineto
                   34020: 417 45 lineto
                   34021: 415 37 lineto
                   34022: 409 34 lineto
                   34023: 394 31 lineto
                   34024: 381 35 lineto
                   34025: 379 42 lineto
                   34026: 379 52 lineto
                   34027: 380 67 lineto
                   34028: 380 77 lineto
                   34029: 379 77 lineto
                   34030: 378 106 lineto
                   34031: 377 121 lineto
                   34032: 376 133 lineto
                   34033: 375 147 lineto
                   34034: 374 158 lineto
                   34035: 373 169 lineto
                   34036: 
                   34037: fill
                   34038: grestore
                   34039: } def
                   34040: 0707070014230455151006440057030057030000011336450522627502100003600000004163post.src/devLatin1/charlib/rH/build_rH {
                   34041: pop
                   34042: gsave
                   34043: size .0022 mul dup scale
                   34044: currentpoint translate
                   34045: 
                   34046: 15 66 moveto
                   34047: 15 86 lineto
                   34048: 16 131 lineto
                   34049: 17 146 lineto
                   34050: 18 158 lineto
                   34051: 19 167 lineto
                   34052: 21 181 lineto
                   34053: 24 190 lineto
                   34054: 34 193 lineto
                   34055: 49 189 lineto
                   34056: 58 182 lineto
                   34057: 60 177 lineto
                   34058: 60 166 lineto
                   34059: 59 156 lineto
                   34060: 58 143 lineto
                   34061: 57 130 lineto
                   34062: 56 117 lineto
                   34063: 55 102 lineto
                   34064: 54 42 lineto
                   34065: 53 39 lineto
                   34066: 49 35 lineto
                   34067: 34 34 lineto
                   34068: 19 39 lineto
                   34069: 16 47 lineto
                   34070: 15 66 lineto
                   34071: fill
                   34072: 
                   34073: 65 60 moveto
                   34074: 65 111 lineto
                   34075: 66 127 lineto
                   34076: 67 139 lineto
                   34077: 69 153 lineto
                   34078: 72 163 lineto
                   34079: 83 171 lineto
                   34080: 98 177 lineto
                   34081: 113 182 lineto
                   34082: 128 187 lineto
                   34083: 143 190 lineto
                   34084: 158 194 lineto
                   34085: 173 196 lineto
                   34086: 188 199 lineto
                   34087: 203 201 lineto
                   34088: 218 203 lineto
                   34089: 233 205 lineto
                   34090: 248 205 lineto
                   34091: 263 206 lineto
                   34092: 278 206 lineto
                   34093: 293 206 lineto
                   34094: 308 206 lineto
                   34095: 323 206 lineto
                   34096: 338 205 lineto
                   34097: 353 203 lineto
                   34098: 368 202 lineto
                   34099: 383 200 lineto
                   34100: 394 197 lineto
                   34101: 389 190 lineto
                   34102: 389 180 lineto
                   34103: 391 176 lineto
                   34104: 391 173 lineto
                   34105: 380 173 lineto
                   34106: 365 173 lineto
                   34107: 350 174 lineto
                   34108: 335 175 lineto
                   34109: 320 176 lineto
                   34110: 305 176 lineto
                   34111: 290 176 lineto
                   34112: 275 177 lineto
                   34113: 260 177 lineto
                   34114: 245 177 lineto
                   34115: 240 173 lineto
                   34116: 240 170 lineto
                   34117: 245 165 lineto
                   34118: 260 164 lineto
                   34119: 275 164 lineto
                   34120: 290 164 lineto
                   34121: 305 163 lineto
                   34122: 320 160 lineto
                   34123: 327 155 lineto
                   34124: 330 149 lineto
                   34125: 330 134 lineto
                   34126: 328 129 lineto
                   34127: 323 124 lineto
                   34128: 309 121 lineto
                   34129: 294 121 lineto
                   34130: 279 121 lineto
                   34131: 264 121 lineto
                   34132: 249 121 lineto
                   34133: 234 121 lineto
                   34134: 228 118 lineto
                   34135: 228 112 lineto
                   34136: 234 109 lineto
                   34137: 249 109 lineto
                   34138: 264 109 lineto
                   34139: 279 108 lineto
                   34140: 294 108 lineto
                   34141: 306 104 lineto
                   34142: 311 97 lineto
                   34143: 312 91 lineto
                   34144: 312 88 lineto
                   34145: 311 82 lineto
                   34146: 305 74 lineto
                   34147: 290 72 lineto
                   34148: 275 72 lineto
                   34149: 260 72 lineto
                   34150: 245 73 lineto
                   34151: 230 73 lineto
                   34152: 215 73 lineto
                   34153: 205 70 lineto
                   34154: 205 63 lineto
                   34155: 217 60 lineto
                   34156: 232 60 lineto
                   34157: 247 60 lineto
                   34158: 262 60 lineto
                   34159: 277 57 lineto
                   34160: 283 52 lineto
                   34161: 285 44 lineto
                   34162: 285 41 lineto
                   34163: 284 35 lineto
                   34164: 280 30 lineto
                   34165: 268 26 lineto
                   34166: 253 25 lineto
                   34167: 238 26 lineto
                   34168: 223 28 lineto
                   34169: 208 31 lineto
                   34170: 193 33 lineto
                   34171: 178 34 lineto
                   34172: 163 33 lineto
                   34173: 148 31 lineto
                   34174: 133 28 lineto
                   34175: 118 27 lineto
                   34176: 103 28 lineto
                   34177: 88 34 lineto
                   34178: 73 43 lineto
                   34179: 67 52 lineto
                   34180: 65 60 lineto
                   34181: fill
                   34182: 
                   34183: 396 180 moveto
                   34184: 396 188 lineto
                   34185: 399 194 lineto
                   34186: 410 196 lineto
                   34187: 416 190 lineto
                   34188: 416 180 lineto
                   34189: 415 177 lineto
                   34190: 411 173 lineto
                   34191: 400 173 lineto
                   34192: 396 180 lineto
                   34193: fill
                   34194: 
                   34195: grestore
                   34196: } def
                   34197: 0707070014230455161006440057030057030000011263100522627502100004600000010521post.src/devLatin1/charlib/LH.example%
                   34198: % An example logo character. Building the PostScript program that prints
                   34199: % your company logo is not addressed here; we assume you already have
                   34200: % such a program, that it's relatively simple, and that it prints the
                   34201: % logo by itself on a page. What you'll find here are instructions for
                   34202: % converting that logo program into a character that can be accessed by
                   34203: % troff and dpost.
                   34204: %
                   34205: % Building a new charlib character involves some PostScript programming.
                   34206: % We've tried to isolate parameters that you'll need to change (Xoffset,
                   34207: % Yoffset, and Scaling), but we can't guarantee things will work properly
                   34208: % with every logo program. PostScript is a complex language and subtle
                   34209: % interactions between your logo program and what we've done here can
                   34210: % cause problems.
                   34211: %
                   34212: % Tuning the new character is an iterative process. You may want to adjust
                   34213: % the size of the logo (via Scaling), it's position relative to adjacent
                   34214: % characters and the baseline (Xoffset and Yoffset), and the distance troff
                   34215: % moves after printing the character (width field in file ../S1). The steps
                   34216: % to follow are:
                   34217: %
                   34218: %      1: Create a simple troff test file for the new character. Something
                   34219: %         like,
                   34220: %
                   34221: %              .sp 1i
                   34222: %              .ps 10
                   34223: %              size 10: \(LH
                   34224: %              .sp 1i
                   34225: %              .ps 18
                   34226: %              size 18: \(LH
                   34227: %              .sp 1i
                   34228: %              .ps 36
                   34229: %              size 36: \(LH
                   34230: %              .sp 1i
                   34231: %              .ps 10
                   34232: %              four logo characters: \(LH\(LH\(LH\(LH
                   34233: %
                   34234: %         is sufficient. The test file can go anywhere.
                   34235: % 
                   34236: %      2: Change into directory /usr/lib/font/devpost/charlib. All file
                   34237: %         pathnames will be relative to that directory.
                   34238: %
                   34239: %      3: Save a copy of the working LH logo file. Then replace LH with
                   34240: %         this file (i.e. LH.example). Changes described below should be
                   34241: %         be made in the new LH file (not in LH.example).
                   34242: %
                   34243: %      4: Your PostScript logo program will eventually replace whatever
                   34244: %         you find between the <<StartLogo>> and <<EndLogo>> comment lines
                   34245: %         in the PostScript build_LH procedure (below). What's there now
                   34246: %         prints an example logo that you can use until you understand the
                   34247: %         remaining steps.
                   34248: %
                   34249: %      5: Print your troff test file using (assuming your making changes
                   34250: %         in the devpost charlib directory),
                   34251: %
                   34252: %              troff -Tpost testfile | dpost | lp ...
                   34253: %
                   34254: %      6: Adjust the logo positioning by changing the numbers assigned to
                   34255: %         Xoffset and Yoffset (below). Both are in units of 72 per inch.
                   34256: %         Positive offsets should move the logo to the right and up the
                   34257: %         page.
                   34258: %
                   34259: %      7: Adjust the logo size by changing the the number assigned to
                   34260: %         Scaling. Unitsize also controls scaling, but there's no good
                   34261: %         reason to change both Scaling and Unitsize.
                   34262: %
                   34263: %      8: Control the horizontal distance troff moves after printing the
                   34264: %         new LH character by changing the width (i.e. the number in the
                   34265: %         second column) assigned to LH in file ../S1. Character width
                   34266: %         adjustments should probably wait until you're satisfied with
                   34267: %         the Scaling set in step 7.
                   34268: %
                   34269: %      9: Back to step 5 until your satisfied with the output.
                   34270: %
                   34271: % The remaining steps are suggested but not required:
                   34272: %
                   34273: %      10: Delete PostScript comments in your new LH charlib file - comments
                   34274: %         start with % and go to the end of the line.
                   34275: %
                   34276: %      11: Update the width field assigned to LH in file ../shell.lib. The
                   34277: %         new width should reflect what's currently in your S1 font file.
                   34278: %
                   34279: %      12: Make a similiar set of changes in /usr/lib/font/devLatin1/charlib.
                   34280: %         You can use the devpost version of LH to devLatin1/charlib/LH,
                   34281: %         but changes to files devLatin1/S1 and devLatin1/shell.lib must be
                   34282: %         entered by hand.
                   34283: %
                   34284: 
                   34285: /Logo_Dict 100 dict dup begin
                   34286:        /Xoffset 0 def                  % 72 dpi with positive to the right
                   34287:        /Yoffset 0 def                  % 72 dpi with positive up the page
                   34288:        /Scaling 1.0 def                % adjust this number to change the size
                   34289:        /Unitsize 36 def                % for point size scaling - leave it be
                   34290:        /showpage {} def
                   34291: end def
                   34292: 
                   34293: /build_LH {                            % don't bind this procedure
                   34294:        Logo_Dict begin
                   34295:                gsave
                   34296:                /charwidth exch def
                   34297:                currentpoint translate
                   34298:                resolution 72 div dup scale
                   34299:                Xoffset Yoffset translate
                   34300:                Scaling Scaling scale
                   34301:                ptsize Unitsize div dup scale
                   34302: 
                   34303:                %% Replace everything between the <<StartLogo>> and <<EndLogo>>
                   34304:                %% comment lines by the PostScript program that prints your
                   34305:                %% logo.
                   34306: 
                   34307:                %% <<StartLogo>>
                   34308:                        newpath
                   34309:                        .5 .5 scale
                   34310:                        0 0 moveto
                   34311:                        100 0 lineto
                   34312:                        100 100 lineto
                   34313:                        closepath
                   34314:                        .5 setgray
                   34315:                        fill
                   34316:                        0 setgray
                   34317:                        10 10 translate
                   34318:                        45 rotate
                   34319:                        0 5 moveto
                   34320:                        /Helvetica findfont 18 scalefont setfont
                   34321:                        (Example Logo) show
                   34322:                %% <<EndLogo>>
                   34323: 
                   34324:                grestore
                   34325:        end
                   34326: } def
                   34327: 
                   34328: 0707070014231124121006440057030057030000010446020522627502100002600000006132post.src/devLatin1/HKname HK
                   34329: fontname Helvetica-LightOblique
                   34330: spacewidth 28
                   34331: charset
                   34332: !      33      2       33
                   34333: "      28      2       34
                   34334: dq     "
                   34335: #      56      2       35
                   34336: $      56      2       36
                   34337: %      89      2       37
                   34338: &      67      2       38
                   34339: '      22      2       39
                   34340: (      33      3       40
                   34341: )      33      3       41
                   34342: *      39      2       42
                   34343: +      66      0       43
                   34344: ,      28      1       44
                   34345: -      33      0       173
                   34346: \0255  "
                   34347: .      28      0       46
                   34348: /      28      2       47
                   34349: 0      56      2       48
                   34350: 1      56      2       49
                   34351: 2      56      2       50
                   34352: 3      56      2       51
                   34353: 4      56      2       52
                   34354: 5      56      2       53
                   34355: 6      56      2       54
                   34356: 7      56      2       55
                   34357: 8      56      2       56
                   34358: 9      56      2       57
                   34359: :      28      0       58
                   34360: ;      28      1       59
                   34361: ---    66      0       60
                   34362: =      66      0       61
                   34363: ---    66      0       62
                   34364: ?      50      2       63
                   34365: @      80      2       64
                   34366: A      67      2       65
                   34367: B      67      2       66
                   34368: C      72      2       67
                   34369: D      72      2       68
                   34370: E      61      2       69
                   34371: F      56      2       70
                   34372: G      78      2       71
                   34373: H      72      2       72
                   34374: I      28      2       73
                   34375: J      50      2       74
                   34376: K      67      2       75
                   34377: L      56      2       76
                   34378: M      83      2       77
                   34379: N      72      2       78
                   34380: O      78      2       79
                   34381: P      61      2       80
                   34382: Q      78      2       81
                   34383: R      67      2       82
                   34384: S      61      2       83
                   34385: T      56      2       84
                   34386: U      72      2       85
                   34387: V      61      2       86
                   34388: W      89      2       87
                   34389: X      61      2       88
                   34390: Y      61      2       89
                   34391: Z      61      2       90
                   34392: [      33      3       91
                   34393: \      28      2       92
                   34394: bs     "
                   34395: ]      33      3       93
                   34396: ^      33      2       147
                   34397: ---    66      2       94
                   34398: ---    50      1       95
                   34399: `      22      2       96
                   34400: a      56      0       97
                   34401: b      61      2       98
                   34402: c      56      0       99
                   34403: d      61      2       100
                   34404: e      56      0       101
                   34405: f      28      2       102
                   34406: g      61      1       103
                   34407: h      56      2       104
                   34408: i      22      2       105
                   34409: j      22      3       106
                   34410: k      50      2       107
                   34411: l      22      2       108
                   34412: m      83      0       109
                   34413: n      56      0       110
                   34414: o      56      0       111
                   34415: p      61      1       112
                   34416: q      61      1       113
                   34417: r      33      0       114
                   34418: s      50      0       115
                   34419: t      28      2       116
                   34420: u      56      0       117
                   34421: v      50      0       118
                   34422: w      72      0       119
                   34423: x      50      0       120
                   34424: y      50      1       121
                   34425: z      50      0       122
                   34426: {      33      3       123
                   34427: ---    22      2       124
                   34428: }      33      3       125
                   34429: ~      33      2       148
                   34430: ---    66      0       126
                   34431: \`     33      2       145
                   34432: ga     "
                   34433: !!     33      1       161
                   34434: \0241  "
                   34435: c|     56      3       162
                   34436: \0242  "
                   34437: ct     "
                   34438: L-     56      2       163
                   34439: \0243  "
                   34440: ps     "
                   34441: xo     56      0       164
                   34442: \0244  "
                   34443: cr     "
                   34444: Y-     56      2       165
                   34445: \0245  "
                   34446: yn     "
                   34447: ||     22      2       166
                   34448: \0246  "
                   34449: so     56      3       167
                   34450: \0247  "
                   34451: sc     "
                   34452: ""     33      2       168
                   34453: \0250  "
                   34454: :a     "
                   34455: co     80      2       169
                   34456: \0251  "
                   34457: a_     33      2       170
                   34458: \0252  "
                   34459: <<     56      0       171
                   34460: \0253  "
                   34461: -,     66      0       172
                   34462: \0254  "
                   34463: hy     33      0       173
                   34464: \0255  "
                   34465: --     66      0       45
                   34466: ro     80      2       174
                   34467: \0256  "
                   34468: rg     "
                   34469: -^     33      2       175
                   34470: \0257  "
                   34471: -a     "
                   34472: 0^     40      2       176
                   34473: \0260  "
                   34474: +-     66      0       177
                   34475: \0261  "
                   34476: 2^     33      2       178
                   34477: \0262  "
                   34478: 3^     33      2       179
                   34479: \0263  "
                   34480: \'     33      2       180
                   34481: \0264  "
                   34482: aa     "
                   34483: /u     56      1       181
                   34484: \0265  "
                   34485: P!     65      3       182
                   34486: \0266  "
                   34487: pg     "
                   34488: .^     28      0       183
                   34489: \0267  "
                   34490: ,,     33      1       184
                   34491: \0270  "
                   34492: ,a     "
                   34493: 1^     33      2       185
                   34494: \0271  "
                   34495: o_     33      2       186
                   34496: \0272  "
                   34497: >>     56      0       187
                   34498: \0273  "
                   34499: 14     83      2       188
                   34500: \0274  "
                   34501: 12     83      2       189
                   34502: \0275  "
                   34503: 34     83      2       190
                   34504: \0276  "
                   34505: ??     50      1       191
                   34506: \0277  "
                   34507: A`     67      2       192
                   34508: \0300  "
                   34509: A'     67      2       193
                   34510: \0301  "
                   34511: A^     67      2       194
                   34512: \0302  "
                   34513: A~     67      2       195
                   34514: \0303  "
                   34515: A"     67      2       196
                   34516: \0304  "
                   34517: A*     67      2       197
                   34518: \0305  "
                   34519: AE     100     2       198
                   34520: \0306  "
                   34521: C,     72      3       199
                   34522: \0307  "
                   34523: E`     61      2       200
                   34524: \0310  "
                   34525: E'     61      2       201
                   34526: \0311  "
                   34527: E^     61      2       202
                   34528: \0312  "
                   34529: E"     61      2       203
                   34530: \0313  "
                   34531: I`     28      2       204
                   34532: \0314  "
                   34533: I'     28      2       205
                   34534: \0315  "
                   34535: I^     28      2       206
                   34536: \0316  "
                   34537: I"     28      2       207
                   34538: \0317  "
                   34539: D-     72      2       208
                   34540: \0320  "
                   34541: N~     72      2       209
                   34542: \0321  "
                   34543: O`     78      2       210
                   34544: \0322  "
                   34545: O'     78      2       211
                   34546: \0323  "
                   34547: O^     78      2       212
                   34548: \0324  "
                   34549: O~     78      2       213
                   34550: \0325  "
                   34551: O"     78      2       214
                   34552: \0326  "
                   34553: xx     66      0       215
                   34554: \0327  "
                   34555: O/     78      2       216
                   34556: \0330  "
                   34557: U`     72      2       217
                   34558: \0331  "
                   34559: U'     72      2       218
                   34560: \0332  "
                   34561: U^     72      2       219
                   34562: \0333  "
                   34563: U"     72      2       220
                   34564: \0334  "
                   34565: Y'     61      2       221
                   34566: \0335  "
                   34567: TH     61      2       222
                   34568: \0336  "
                   34569: ss     50      2       223
                   34570: \0337  "
                   34571: a`     56      2       224
                   34572: \0340  "
                   34573: a'     56      2       225
                   34574: \0341  "
                   34575: a^     56      2       226
                   34576: \0342  "
                   34577: a~     56      2       227
                   34578: \0343  "
                   34579: a"     56      2       228
                   34580: \0344  "
                   34581: a*     56      2       229
                   34582: \0345  "
                   34583: ae     89      0       230
                   34584: \0346  "
                   34585: c,     56      1       231
                   34586: \0347  "
                   34587: e`     56      2       232
                   34588: \0350  "
                   34589: e'     56      2       233
                   34590: \0351  "
                   34591: e^     56      2       234
                   34592: \0352  "
                   34593: e"     56      2       235
                   34594: \0353  "
                   34595: i`     22      2       236
                   34596: \0354  "
                   34597: i'     22      2       237
                   34598: \0355  "
                   34599: i^     22      2       238
                   34600: \0356  "
                   34601: i"     22      2       239
                   34602: \0357  "
                   34603: d-     56      2       240
                   34604: \0360  "
                   34605: n~     56      2       241
                   34606: \0361  "
                   34607: o`     56      2       242
                   34608: \0362  "
                   34609: o'     56      2       243
                   34610: \0363  "
                   34611: o^     56      2       244
                   34612: \0364  "
                   34613: o~     56      2       245
                   34614: \0365  "
                   34615: o"     56      2       246
                   34616: \0366  "
                   34617: -:     66      0       247
                   34618: \0367  "
                   34619: o/     56      0       248
                   34620: \0370  "
                   34621: u`     56      2       249
                   34622: \0371  "
                   34623: u'     56      2       250
                   34624: \0372  "
                   34625: u^     56      2       251
                   34626: \0373  "
                   34627: u"     56      2       252
                   34628: \0374  "
                   34629: y'     50      3       253
                   34630: \0375  "
                   34631: th     61      3       254
                   34632: \0376  "
                   34633: y"     50      3       255
                   34634: \0377  "
                   34635: ^a     33      2       147
                   34636: ~a     33      2       148
                   34637: Ua     33      2       150
                   34638: .a     33      2       151
                   34639: oa     33      2       154
                   34640: "a     33      2       157
                   34641: Ca     33      1       158
                   34642: va     33      2       159
                   34643: 0707070014231124131006440057030057030000010446200522627502100002600000006123post.src/devLatin1/HLname HL
                   34644: fontname Helvetica-Light
                   34645: spacewidth 28
                   34646: charset
                   34647: !      33      2       33
                   34648: "      28      2       34
                   34649: dq     "
                   34650: #      56      2       35
                   34651: $      56      2       36
                   34652: %      89      2       37
                   34653: &      67      2       38
                   34654: '      22      2       39
                   34655: (      33      3       40
                   34656: )      33      3       41
                   34657: *      39      2       42
                   34658: +      66      0       43
                   34659: ,      28      1       44
                   34660: -      33      0       173
                   34661: \0255  "
                   34662: .      28      0       46
                   34663: /      28      2       47
                   34664: 0      56      2       48
                   34665: 1      56      2       49
                   34666: 2      56      2       50
                   34667: 3      56      2       51
                   34668: 4      56      2       52
                   34669: 5      56      2       53
                   34670: 6      56      2       54
                   34671: 7      56      2       55
                   34672: 8      56      2       56
                   34673: 9      56      2       57
                   34674: :      28      0       58
                   34675: ;      28      1       59
                   34676: ---    66      0       60
                   34677: =      66      0       61
                   34678: ---    66      0       62
                   34679: ?      50      2       63
                   34680: @      80      2       64
                   34681: A      67      2       65
                   34682: B      67      2       66
                   34683: C      72      2       67
                   34684: D      72      2       68
                   34685: E      61      2       69
                   34686: F      56      2       70
                   34687: G      78      2       71
                   34688: H      72      2       72
                   34689: I      28      2       73
                   34690: J      50      2       74
                   34691: K      67      2       75
                   34692: L      56      2       76
                   34693: M      83      2       77
                   34694: N      72      2       78
                   34695: O      78      2       79
                   34696: P      61      2       80
                   34697: Q      78      2       81
                   34698: R      67      2       82
                   34699: S      61      2       83
                   34700: T      56      2       84
                   34701: U      72      2       85
                   34702: V      61      2       86
                   34703: W      89      2       87
                   34704: X      61      2       88
                   34705: Y      61      2       89
                   34706: Z      61      2       90
                   34707: [      33      3       91
                   34708: \      28      2       92
                   34709: bs     "
                   34710: ]      33      3       93
                   34711: ^      33      2       147
                   34712: ---    66      2       94
                   34713: ---    50      1       95
                   34714: `      22      2       96
                   34715: a      56      0       97
                   34716: b      61      2       98
                   34717: c      56      0       99
                   34718: d      61      2       100
                   34719: e      56      0       101
                   34720: f      28      2       102
                   34721: g      61      1       103
                   34722: h      56      2       104
                   34723: i      22      2       105
                   34724: j      22      3       106
                   34725: k      50      2       107
                   34726: l      22      2       108
                   34727: m      83      0       109
                   34728: n      56      0       110
                   34729: o      56      0       111
                   34730: p      61      1       112
                   34731: q      61      1       113
                   34732: r      33      0       114
                   34733: s      50      0       115
                   34734: t      28      2       116
                   34735: u      56      0       117
                   34736: v      50      0       118
                   34737: w      72      0       119
                   34738: x      50      0       120
                   34739: y      50      1       121
                   34740: z      50      0       122
                   34741: {      33      3       123
                   34742: ---    22      2       124
                   34743: }      33      3       125
                   34744: ~      33      2       148
                   34745: ---    66      0       126
                   34746: \`     33      2       145
                   34747: ga     "
                   34748: !!     33      1       161
                   34749: \0241  "
                   34750: c|     56      3       162
                   34751: \0242  "
                   34752: ct     "
                   34753: L-     56      2       163
                   34754: \0243  "
                   34755: ps     "
                   34756: xo     56      0       164
                   34757: \0244  "
                   34758: cr     "
                   34759: Y-     56      2       165
                   34760: \0245  "
                   34761: yn     "
                   34762: ||     22      2       166
                   34763: \0246  "
                   34764: so     56      3       167
                   34765: \0247  "
                   34766: sc     "
                   34767: ""     33      2       168
                   34768: \0250  "
                   34769: :a     "
                   34770: co     80      2       169
                   34771: \0251  "
                   34772: a_     33      2       170
                   34773: \0252  "
                   34774: <<     56      0       171
                   34775: \0253  "
                   34776: -,     66      0       172
                   34777: \0254  "
                   34778: hy     33      0       173
                   34779: \0255  "
                   34780: --     66      0       45
                   34781: ro     80      2       174
                   34782: \0256  "
                   34783: rg     "
                   34784: -^     33      2       175
                   34785: \0257  "
                   34786: -a     "
                   34787: 0^     40      2       176
                   34788: \0260  "
                   34789: +-     66      0       177
                   34790: \0261  "
                   34791: 2^     33      2       178
                   34792: \0262  "
                   34793: 3^     33      2       179
                   34794: \0263  "
                   34795: \'     33      2       180
                   34796: \0264  "
                   34797: aa     "
                   34798: /u     56      1       181
                   34799: \0265  "
                   34800: P!     65      3       182
                   34801: \0266  "
                   34802: pg     "
                   34803: .^     28      0       183
                   34804: \0267  "
                   34805: ,,     33      1       184
                   34806: \0270  "
                   34807: ,a     "
                   34808: 1^     33      2       185
                   34809: \0271  "
                   34810: o_     33      2       186
                   34811: \0272  "
                   34812: >>     56      0       187
                   34813: \0273  "
                   34814: 14     83      2       188
                   34815: \0274  "
                   34816: 12     83      2       189
                   34817: \0275  "
                   34818: 34     83      2       190
                   34819: \0276  "
                   34820: ??     50      1       191
                   34821: \0277  "
                   34822: A`     67      2       192
                   34823: \0300  "
                   34824: A'     67      2       193
                   34825: \0301  "
                   34826: A^     67      2       194
                   34827: \0302  "
                   34828: A~     67      2       195
                   34829: \0303  "
                   34830: A"     67      2       196
                   34831: \0304  "
                   34832: A*     67      2       197
                   34833: \0305  "
                   34834: AE     100     2       198
                   34835: \0306  "
                   34836: C,     72      3       199
                   34837: \0307  "
                   34838: E`     61      2       200
                   34839: \0310  "
                   34840: E'     61      2       201
                   34841: \0311  "
                   34842: E^     61      2       202
                   34843: \0312  "
                   34844: E"     61      2       203
                   34845: \0313  "
                   34846: I`     28      2       204
                   34847: \0314  "
                   34848: I'     28      2       205
                   34849: \0315  "
                   34850: I^     28      2       206
                   34851: \0316  "
                   34852: I"     28      2       207
                   34853: \0317  "
                   34854: D-     72      2       208
                   34855: \0320  "
                   34856: N~     72      2       209
                   34857: \0321  "
                   34858: O`     78      2       210
                   34859: \0322  "
                   34860: O'     78      2       211
                   34861: \0323  "
                   34862: O^     78      2       212
                   34863: \0324  "
                   34864: O~     78      2       213
                   34865: \0325  "
                   34866: O"     78      2       214
                   34867: \0326  "
                   34868: xx     66      0       215
                   34869: \0327  "
                   34870: O/     78      2       216
                   34871: \0330  "
                   34872: U`     72      2       217
                   34873: \0331  "
                   34874: U'     72      2       218
                   34875: \0332  "
                   34876: U^     72      2       219
                   34877: \0333  "
                   34878: U"     72      2       220
                   34879: \0334  "
                   34880: Y'     61      2       221
                   34881: \0335  "
                   34882: TH     61      2       222
                   34883: \0336  "
                   34884: ss     50      2       223
                   34885: \0337  "
                   34886: a`     56      2       224
                   34887: \0340  "
                   34888: a'     56      2       225
                   34889: \0341  "
                   34890: a^     56      2       226
                   34891: \0342  "
                   34892: a~     56      2       227
                   34893: \0343  "
                   34894: a"     56      2       228
                   34895: \0344  "
                   34896: a*     56      2       229
                   34897: \0345  "
                   34898: ae     89      0       230
                   34899: \0346  "
                   34900: c,     56      1       231
                   34901: \0347  "
                   34902: e`     56      2       232
                   34903: \0350  "
                   34904: e'     56      2       233
                   34905: \0351  "
                   34906: e^     56      2       234
                   34907: \0352  "
                   34908: e"     56      2       235
                   34909: \0353  "
                   34910: i`     22      2       236
                   34911: \0354  "
                   34912: i'     22      2       237
                   34913: \0355  "
                   34914: i^     22      2       238
                   34915: \0356  "
                   34916: i"     22      2       239
                   34917: \0357  "
                   34918: d-     56      2       240
                   34919: \0360  "
                   34920: n~     56      2       241
                   34921: \0361  "
                   34922: o`     56      2       242
                   34923: \0362  "
                   34924: o'     56      2       243
                   34925: \0363  "
                   34926: o^     56      2       244
                   34927: \0364  "
                   34928: o~     56      2       245
                   34929: \0365  "
                   34930: o"     56      2       246
                   34931: \0366  "
                   34932: -:     66      0       247
                   34933: \0367  "
                   34934: o/     56      0       248
                   34935: \0370  "
                   34936: u`     56      2       249
                   34937: \0371  "
                   34938: u'     56      2       250
                   34939: \0372  "
                   34940: u^     56      2       251
                   34941: \0373  "
                   34942: u"     56      2       252
                   34943: \0374  "
                   34944: y'     50      3       253
                   34945: \0375  "
                   34946: th     61      3       254
                   34947: \0376  "
                   34948: y"     50      3       255
                   34949: \0377  "
                   34950: ^a     33      2       147
                   34951: ~a     33      2       148
                   34952: Ua     33      2       150
                   34953: .a     33      2       151
                   34954: oa     33      2       154
                   34955: "a     33      2       157
                   34956: Ca     33      1       158
                   34957: va     33      2       159
                   34958: 0707070014231124141006440057030057030000010446400522627502100004200000053476post.src/devLatin1/shell.lib.last#
                   34959: # Shell library - for building devLatin1 tables.
                   34960: #
                   34961: # The full ISO Latin1 alphabet appeared in Adobe's interpreter sometime
                   34962: # around Version 50.0. Prior to that ROM resident Type 1 text fonts were
                   34963: # missing 18 characters that are now part of the Latin1 standard. Width
                   34964: # tables will not build on printers that lack full Latin1 support. Error
                   34965: # message will likely reflect a missing ISOLatin1Encoding array.
                   34966: #
                   34967: 
                   34968: RESOLUTION=720
                   34969: UNITWIDTH=10
                   34970: 
                   34971: OCTALESCAPES=${OCTALESCAPES:-160}      # <= code means add \0ddd names
                   34972: DOWNLOADVECTOR=FALSE                   # TRUE can mean incomplete tables
                   34973: 
                   34974: #
                   34975: # BuiltinTables returns command lines that generate PostScript programs
                   34976: # for building a typesetter description file and font width tables for
                   34977: # a relatively standard collection of fonts. Use awk to select a command
                   34978: # line or modify an existing command to build a width table for a new
                   34979: # font.
                   34980: #
                   34981: 
                   34982: BuiltinTables() {
                   34983:        cat <<-'//End of BuiltinTables'
                   34984:                Proportional    R       Times-Roman
                   34985:                Proportional    I       Times-Italic
                   34986:                Proportional    B       Times-Bold
                   34987:                Proportional    BI      Times-BoldItalic
                   34988:                Proportional    AB      AvantGarde-Demi
                   34989:                Proportional    AI      AvantGarde-BookOblique
                   34990:                Proportional    AR      AvantGarde-Book
                   34991:                Proportional    AX      AvantGarde-DemiOblique
                   34992:                Proportional    H       Helvetica
                   34993:                Proportional    HB      Helvetica-Bold
                   34994:                Proportional    HI      Helvetica-Oblique
                   34995:                Proportional    HX      Helvetica-BoldOblique
                   34996:                Proportional    Hb      Helvetica-Narrow-Bold
                   34997:                Proportional    Hi      Helvetica-Narrow-Oblique
                   34998:                Proportional    Hr      Helvetica-Narrow
                   34999:                Proportional    Hx      Helvetica-Narrow-BoldOblique
                   35000:                Proportional    KB      Bookman-Demi
                   35001:                Proportional    KI      Bookman-LightItalic
                   35002:                Proportional    KR      Bookman-Light
                   35003:                Proportional    KX      Bookman-DemiItalic
                   35004:                Proportional    NB      NewCenturySchlbk-Bold
                   35005:                Proportional    NI      NewCenturySchlbk-Italic
                   35006:                Proportional    NR      NewCenturySchlbk-Roman
                   35007:                Proportional    NX      NewCenturySchlbk-BoldItalic
                   35008:                Proportional    PA      Palatino-Roman
                   35009:                Proportional    PB      Palatino-Bold
                   35010:                Proportional    PI      Palatino-Italic
                   35011:                Proportional    PX      Palatino-BoldItalic
                   35012:                Proportional    ZI      ZapfChancery-MediumItalic
                   35013:                FixedWidth      C       Courier
                   35014:                FixedWidth      CB      Courier-Bold
                   35015:                FixedWidth      CI      Courier-Oblique
                   35016:                FixedWidth      CO      Courier
                   35017:                FixedWidth      CW      Courier
                   35018:                FixedWidth      CX      Courier-BoldOblique
                   35019:                Dingbats        ZD      ZapfDingbats
                   35020:                Greek           GR      Symbol
                   35021:                Symbol          S       Symbol
                   35022:                Special         S1      Times-Roman
                   35023:                Description     DESC    ---
                   35024:        //End of BuiltinTables
                   35025: }
                   35026: 
                   35027: #
                   35028: # AllTables prints the complete list of builtin font names.
                   35029: #
                   35030: 
                   35031: AllTables() {
                   35032:        BuiltinTables | awk '{print $2}'
                   35033: }
                   35034: 
                   35035: #
                   35036: # Charset functions generate keyword/value pairs (as PostScript objects)
                   35037: # that describe the character set available in a font. The keyword is a
                   35038: # PostScript string that represents troff's name for the character. The
                   35039: # value is usually the literal name (i.e. begins with a /) assigned to
                   35040: # the character in the PostScript font. The value can also be an integer
                   35041: # or a PostScript string. An integer value is used as an index in the
                   35042: # current font's Encoding array. A string value is returned to the host
                   35043: # unchanged when the entry for the character is constructed. Entries that
                   35044: # have (") as their value are synonyms for the preceeding character.
                   35045: #
                   35046: # The 18 characters missing from ROM resident fonts on older printers are
                   35047: # flagged with the PostScript comment "% missing".
                   35048: #
                   35049: 
                   35050: StandardCharset() {
                   35051:        cat <<-'//End of StandardCharset'
                   35052:                (!)     /exclam
                   35053:                (")     /quotedbl
                   35054:                (#)     /numbersign
                   35055:                ($)     /dollar
                   35056:                (%)     /percent
                   35057:                (&)     /ampersand
                   35058:                (')     /quoteright
                   35059:                (\()    /parenleft
                   35060:                (\))    /parenright
                   35061:                (*)     /asterisk
                   35062:                (+)     /plus
                   35063:                (,)     /comma
                   35064:                (-)     /hyphen         % changed from minus by request
                   35065:                (.)     /period
                   35066:                (/)     /slash
                   35067:                (0)     /zero
                   35068:                (1)     /one
                   35069:                (2)     /two
                   35070:                (3)     /three
                   35071:                (4)     /four
                   35072:                (5)     /five
                   35073:                (6)     /six
                   35074:                (7)     /seven
                   35075:                (8)     /eight
                   35076:                (9)     /nine
                   35077:                (:)     /colon
                   35078:                (;)     /semicolon
                   35079:                (<)     /less
                   35080:                (=)     /equal
                   35081:                (>)     /greater
                   35082:                (?)     /question
                   35083:                (@)     /at
                   35084:                (A)     /A
                   35085:                (B)     /B
                   35086:                (C)     /C
                   35087:                (D)     /D
                   35088:                (E)     /E
                   35089:                (F)     /F
                   35090:                (G)     /G
                   35091:                (H)     /H
                   35092:                (I)     /I
                   35093:                (J)     /J
                   35094:                (K)     /K
                   35095:                (L)     /L
                   35096:                (M)     /M
                   35097:                (N)     /N
                   35098:                (O)     /O
                   35099:                (P)     /P
                   35100:                (Q)     /Q
                   35101:                (R)     /R
                   35102:                (S)     /S
                   35103:                (T)     /T
                   35104:                (U)     /U
                   35105:                (V)     /V
                   35106:                (W)     /W
                   35107:                (X)     /X
                   35108:                (Y)     /Y
                   35109:                (Z)     /Z
                   35110:                ([)     /bracketleft
                   35111:                (\\)    /backslash
                   35112:                (])     /bracketright
                   35113:                (^)     /asciicircum
                   35114:                (_)     /underscore
                   35115:                (`)     /quoteleft
                   35116:                (a)     /a
                   35117:                (b)     /b
                   35118:                (c)     /c
                   35119:                (d)     /d
                   35120:                (e)     /e
                   35121:                (f)     /f
                   35122:                (g)     /g
                   35123:                (h)     /h
                   35124:                (i)     /i
                   35125:                (j)     /j
                   35126:                (k)     /k
                   35127:                (l)     /l
                   35128:                (m)     /m
                   35129:                (n)     /n
                   35130:                (o)     /o
                   35131:                (p)     /p
                   35132:                (q)     /q
                   35133:                (r)     /r
                   35134:                (s)     /s
                   35135:                (t)     /t
                   35136:                (u)     /u
                   35137:                (v)     /v
                   35138:                (w)     /w
                   35139:                (x)     /x
                   35140:                (y)     /y
                   35141:                (z)     /z
                   35142:                ({)     /braceleft
                   35143:                (|)     /bar
                   35144:                (})     /braceright
                   35145:                (~)     /asciitilde
                   35146:                (\\`)   /grave                  % devpost character
                   35147:                (ga)    (")                     % synonym
                   35148:                (!!)    /exclamdown
                   35149:                (c|)    /cent
                   35150:                (ct)    (")                     % devpost synonym
                   35151:                (L-)    /sterling
                   35152:                (ps)    (")                     % devpost synonym
                   35153:                (xo)    /currency
                   35154:                (cr)    (")                     % devpost synonym
                   35155:                (Y-)    /yen
                   35156:                (yn)    (")                     % devpost synonym
                   35157:                (||)    /brokenbar              % missing
                   35158:                (so)    /section
                   35159:                (sc)    (")                     % devpost synonym
                   35160:                ("")    /dieresis
                   35161:                (:a)    (")                     % devpost synonym
                   35162:                (co)    /copyright
                   35163:                (a_)    /ordfeminine
                   35164:                (<<)    /guillemotleft
                   35165:                (-,)    /logicalnot
                   35166:                (hy)    /hyphen
                   35167:                (--)    (")                     % synonym
                   35168:                (ro)    /registered
                   35169:                (rg)    (")                     % devpost synonym
                   35170:                (-^)    /macron
                   35171:                (-a)    (")                     % devpost synonym
                   35172:                (0^)    /degree                 % missing
                   35173:                (+-)    /plusminus              % missing
                   35174:                (2^)    /twosuperior            % missing
                   35175:                (3^)    /threesuperior          % missing
                   35176:                (\\')   /acute
                   35177:                (aa)    (")                     % devpost synonym
                   35178:                (/u)    /mu                     % missing
                   35179:                (P!)    /paragraph
                   35180:                (pg)    (")                     % devpost synonym
                   35181:                (.^)    /periodcentered
                   35182:                (,,)    /cedilla
                   35183:                (,a)    (")                     % devpost synonym
                   35184:                (1^)    /onesuperior            % missing
                   35185:                (o_)    /ordmasculine
                   35186:                (>>)    /guillemotright
                   35187:                (14)    /onequarter             % missing
                   35188:                (12)    /onehalf                % missing
                   35189:                (34)    /threequarters          % missing
                   35190:                (??)    /questiondown
                   35191:                (A`)    /Agrave
                   35192:                (A')    /Aacute
                   35193:                (A^)    /Acircumflex
                   35194:                (A~)    /Atilde
                   35195:                (A")    /Adieresis
                   35196:                (A*)    /Aring
                   35197:                (AE)    /AE
                   35198:                (C,)    /Ccedilla
                   35199:                (E`)    /Egrave
                   35200:                (E')    /Eacute
                   35201:                (E^)    /Ecircumflex
                   35202:                (E")    /Edieresis
                   35203:                (I`)    /Igrave
                   35204:                (I')    /Iacute
                   35205:                (I^)    /Icircumflex
                   35206:                (I")    /Idieresis
                   35207:                (D-)    /Eth                    % missing
                   35208:                (N~)    /Ntilde
                   35209:                (O`)    /Ograve
                   35210:                (O')    /Oacute
                   35211:                (O^)    /Ocircumflex
                   35212:                (O~)    /Otilde
                   35213:                (O")    /Odieresis
                   35214:                (xx)    /multiply               % missing
                   35215:                (O/)    /Oslash
                   35216:                (U`)    /Ugrave
                   35217:                (U')    /Uacute
                   35218:                (U^)    /Ucircumflex
                   35219:                (U")    /Udieresis
                   35220:                (Y')    /Yacute                 % missing
                   35221:                (TH)    /Thorn                  % missing
                   35222:                (ss)    /germandbls
                   35223:                (a`)    /agrave
                   35224:                (a')    /aacute
                   35225:                (a^)    /acircumflex
                   35226:                (a~)    /atilde
                   35227:                (a")    /adieresis
                   35228:                (a*)    /aring
                   35229:                (ae)    /ae
                   35230:                (c,)    /ccedilla
                   35231:                (e`)    /egrave
                   35232:                (e')    /eacute
                   35233:                (e^)    /ecircumflex
                   35234:                (e")    /edieresis
                   35235:                (i`)    /igrave
                   35236:                (i')    /iacute
                   35237:                (i^)    /icircumflex
                   35238:                (i")    /idieresis
                   35239:                (d-)    /eth                    % missing
                   35240:                (n~)    /ntilde
                   35241:                (o`)    /ograve
                   35242:                (o')    /oacute
                   35243:                (o^)    /ocircumflex
                   35244:                (o~)    /otilde
                   35245:                (o")    /odieresis
                   35246:                (-:)    /divide                 % missing
                   35247:                (o/)    /oslash
                   35248:                (u`)    /ugrave
                   35249:                (u')    /uacute
                   35250:                (u^)    /ucircumflex
                   35251:                (u")    /udieresis
                   35252:                (y')    /yacute                 % missing
                   35253:                (th)    /thorn                  % missing
                   35254:                (y")    /ydieresis
                   35255:                (^a)    /circumflex             % devpost accent
                   35256:                (~a)    /tilde                  % devpost accent
                   35257:                (Ua)    /breve                  % devpost accent
                   35258:                (.a)    /dotaccent              % devpost accent
                   35259:                (oa)    /ring                   % devpost accent
                   35260:                ("a)    /hungarumlaut           % devpost accent
                   35261:                (Ca)    /ogonek                 % devpost accent
                   35262:                (va)    /caron                  % devpost accent
                   35263:        //End of StandardCharset
                   35264: }
                   35265: 
                   35266: #
                   35267: # DingbatsCharset guarantees changes in StandardCharset don't show up in ZD.
                   35268: #
                   35269: 
                   35270: DingbatsCharset() {
                   35271:        cat <<-'//End of DingbatsCharset'
                   35272:                (!)     /exclam
                   35273:                (")     /quotedbl
                   35274:                (#)     /numbersign
                   35275:                ($)     /dollar
                   35276:                (%)     /percent
                   35277:                (&)     /ampersand
                   35278:                (')     /quoteright
                   35279:                (\()    /parenleft
                   35280:                (\))    /parenright
                   35281:                (*)     /asterisk
                   35282:                (+)     /plus
                   35283:                (,)     /comma
                   35284:                (-)     /minus          % also hyphen in devpost
                   35285:                (.)     /period
                   35286:                (/)     /slash
                   35287:                (0)     /zero
                   35288:                (1)     /one
                   35289:                (2)     /two
                   35290:                (3)     /three
                   35291:                (4)     /four
                   35292:                (5)     /five
                   35293:                (6)     /six
                   35294:                (7)     /seven
                   35295:                (8)     /eight
                   35296:                (9)     /nine
                   35297:                (:)     /colon
                   35298:                (;)     /semicolon
                   35299:                (<)     /less
                   35300:                (=)     /equal
                   35301:                (>)     /greater
                   35302:                (?)     /question
                   35303:                (@)     /at
                   35304:                (A)     /A
                   35305:                (B)     /B
                   35306:                (C)     /C
                   35307:                (D)     /D
                   35308:                (E)     /E
                   35309:                (F)     /F
                   35310:                (G)     /G
                   35311:                (H)     /H
                   35312:                (I)     /I
                   35313:                (J)     /J
                   35314:                (K)     /K
                   35315:                (L)     /L
                   35316:                (M)     /M
                   35317:                (N)     /N
                   35318:                (O)     /O
                   35319:                (P)     /P
                   35320:                (Q)     /Q
                   35321:                (R)     /R
                   35322:                (S)     /S
                   35323:                (T)     /T
                   35324:                (U)     /U
                   35325:                (V)     /V
                   35326:                (W)     /W
                   35327:                (X)     /X
                   35328:                (Y)     /Y
                   35329:                (Z)     /Z
                   35330:                ([)     /bracketleft
                   35331:                (\\)    /backslash
                   35332:                (])     /bracketright
                   35333:                (^)     /asciicircum
                   35334:                (_)     /underscore
                   35335:                (`)     /quoteleft
                   35336:                (a)     /a
                   35337:                (b)     /b
                   35338:                (c)     /c
                   35339:                (d)     /d
                   35340:                (e)     /e
                   35341:                (f)     /f
                   35342:                (g)     /g
                   35343:                (h)     /h
                   35344:                (i)     /i
                   35345:                (j)     /j
                   35346:                (k)     /k
                   35347:                (l)     /l
                   35348:                (m)     /m
                   35349:                (n)     /n
                   35350:                (o)     /o
                   35351:                (p)     /p
                   35352:                (q)     /q
                   35353:                (r)     /r
                   35354:                (s)     /s
                   35355:                (t)     /t
                   35356:                (u)     /u
                   35357:                (v)     /v
                   35358:                (w)     /w
                   35359:                (x)     /x
                   35360:                (y)     /y
                   35361:                (z)     /z
                   35362:                ({)     /braceleft
                   35363:                (|)     /bar
                   35364:                (})     /braceright
                   35365:                (~)     /asciitilde
                   35366:                (\\`)   /grave                  % devpost character
                   35367:                (ga)    (")                     % synonym
                   35368:                (!!)    /exclamdown
                   35369:                (c|)    /cent
                   35370:                (ct)    (")                     % devpost synonym
                   35371:                (L-)    /sterling
                   35372:                (ps)    (")                     % devpost synonym
                   35373:                (xo)    /currency
                   35374:                (cr)    (")                     % devpost synonym
                   35375:                (Y-)    /yen
                   35376:                (yn)    (")                     % devpost synonym
                   35377:                (||)    /brokenbar              % missing
                   35378:                (so)    /section
                   35379:                (sc)    (")                     % devpost synonym
                   35380:                ("")    /dieresis
                   35381:                (co)    /copyright
                   35382:                (a_)    /ordfeminine
                   35383:                (<<)    /guillemotleft
                   35384:                (-,)    /logicalnot
                   35385:                (hy)    /hyphen
                   35386:                (--)    (")                     % synonym
                   35387:                (ro)    /registered
                   35388:                (rg)    (")                     % devpost synonym
                   35389:                (-^)    /macron
                   35390:                (0^)    /degree                 % missing
                   35391:                (+-)    /plusminus              % missing
                   35392:                (2^)    /twosuperior            % missing
                   35393:                (3^)    /threesuperior          % missing
                   35394:                (\\')   /acute
                   35395:                (aa)    (")                     % devpost synonym
                   35396:                (/u)    /mu                     % missing
                   35397:                (P!)    /paragraph
                   35398:                (pg)    (")                     % devpost synonym
                   35399:                (.^)    /periodcentered
                   35400:                (,,)    /cedilla
                   35401:                (1^)    /onesuperior            % missing
                   35402:                (o_)    /ordmasculine
                   35403:                (>>)    /guillemotright
                   35404:                (14)    /onequarter             % missing
                   35405:                (12)    /onehalf                % missing
                   35406:                (34)    /threequarters          % missing
                   35407:                (??)    /questiondown
                   35408:                (A`)    /Agrave
                   35409:                (A')    /Aacute
                   35410:                (A^)    /Acircumflex
                   35411:                (A~)    /Atilde
                   35412:                (A")    /Adieresis
                   35413:                (A*)    /Aring
                   35414:                (AE)    /AE
                   35415:                (C,)    /Ccedilla
                   35416:                (E`)    /Egrave
                   35417:                (E')    /Eacute
                   35418:                (E^)    /Ecircumflex
                   35419:                (E")    /Edieresis
                   35420:                (I`)    /Igrave
                   35421:                (I')    /Iacute
                   35422:                (I^)    /Icircumflex
                   35423:                (I")    /Idieresis
                   35424:                (D-)    /Eth                    % missing
                   35425:                (N~)    /Ntilde
                   35426:                (O`)    /Ograve
                   35427:                (O')    /Oacute
                   35428:                (O^)    /Ocircumflex
                   35429:                (O~)    /Otilde
                   35430:                (O")    /Odieresis
                   35431:                (xx)    /multiply               % missing
                   35432:                (O/)    /Oslash
                   35433:                (U`)    /Ugrave
                   35434:                (U')    /Uacute
                   35435:                (U^)    /Ucircumflex
                   35436:                (U")    /Udieresis
                   35437:                (Y')    /Yacute                 % missing
                   35438:                (TH)    /Thorn                  % missing
                   35439:                (ss)    /germandbls
                   35440:                (a`)    /agrave
                   35441:                (a')    /aacute
                   35442:                (a^)    /acircumflex
                   35443:                (a~)    /atilde
                   35444:                (a")    /adieresis
                   35445:                (a*)    /aring
                   35446:                (ae)    /ae
                   35447:                (c,)    /ccedilla
                   35448:                (e`)    /egrave
                   35449:                (e')    /eacute
                   35450:                (e^)    /ecircumflex
                   35451:                (e")    /edieresis
                   35452:                (i`)    /igrave
                   35453:                (i')    /iacute
                   35454:                (i^)    /icircumflex
                   35455:                (i")    /idieresis
                   35456:                (d-)    /eth                    % missing
                   35457:                (n~)    /ntilde
                   35458:                (o`)    /ograve
                   35459:                (o')    /oacute
                   35460:                (o^)    /ocircumflex
                   35461:                (o~)    /otilde
                   35462:                (o")    /odieresis
                   35463:                (-:)    /divide                 % missing
                   35464:                (o/)    /oslash
                   35465:                (u`)    /ugrave
                   35466:                (u')    /uacute
                   35467:                (u^)    /ucircumflex
                   35468:                (u")    /udieresis
                   35469:                (y')    /yacute                 % missing
                   35470:                (th)    /thorn                  % missing
                   35471:                (y")    /ydieresis
                   35472:        //End of DingbatsCharset
                   35473: }
                   35474: 
                   35475: SymbolCharset() {
                   35476:        cat <<-'//End of SymbolCharset'
                   35477:                (---)   /exclam
                   35478:                (fa)    /universal
                   35479:                (---)   /numbersign
                   35480:                (te)    /existential
                   35481:                (---)   /percent
                   35482:                (---)   /ampersand
                   35483:                (st)    /suchthat
                   35484:                (---)   /parenleft
                   35485:                (---)   /parenright
                   35486:                (**)    /asteriskmath
                   35487:                (pl)    /plus
                   35488:                (---)   /comma
                   35489:                (mi)    /minus
                   35490:                (---)   /period
                   35491:                (sl)    /slash
                   35492:                (---)   /zero
                   35493:                (---)   /one
                   35494:                (---)   /two
                   35495:                (---)   /three
                   35496:                (---)   /four
                   35497:                (---)   /five
                   35498:                (---)   /six
                   35499:                (---)   /seven
                   35500:                (---)   /eight
                   35501:                (---)   /nine
                   35502:                (---)   /colon
                   35503:                (---)   /semicolon
                   35504:                (<)     /less
                   35505:                (eq)    /equal
                   35506:                (>)     /greater
                   35507:                (---)   /question
                   35508:                (cg)    /congruent
                   35509:                (*A)    /Alpha
                   35510:                (*B)    /Beta
                   35511:                (*X)    /Chi
                   35512:                (*D)    /Delta
                   35513:                (*E)    /Epsilon
                   35514:                (*F)    /Phi
                   35515:                (*G)    /Gamma
                   35516:                (*Y)    /Eta
                   35517:                (*I)    /Iota
                   35518:                (---)   /theta1
                   35519:                (*K)    /Kappa
                   35520:                (*L)    /Lambda
                   35521:                (*M)    /Mu
                   35522:                (*N)    /Nu
                   35523:                (*O)    /Omicron
                   35524:                (*P)    /Pi
                   35525:                (*H)    /Theta
                   35526:                (*R)    /Rho
                   35527:                (*S)    /Sigma
                   35528:                (*T)    /Tau
                   35529:                (*U)    /Upsilon
                   35530:                (ts)    /sigma1
                   35531:                (*W)    /Omega
                   35532:                (*C)    /Xi
                   35533:                (*Q)    /Psi
                   35534:                (*Z)    /Zeta
                   35535:                (---)   /bracketleft
                   35536:                (tf)    /therefore
                   35537:                (---)   /bracketright
                   35538:                (pp)    /perpendicular
                   35539:                (ul)    /underscore
                   35540:                (_)     (")                     % synonym
                   35541:                (rn)    /radicalex
                   35542:                (*a)    /alpha
                   35543:                (*b)    /beta
                   35544:                (*x)    /chi
                   35545:                (*d)    /delta
                   35546:                (*e)    /epsilon
                   35547:                (*f)    /phi
                   35548:                (*g)    /gamma
                   35549:                (*y)    /eta
                   35550:                (*i)    /iota
                   35551:                (---)   /phi1
                   35552:                (*k)    /kappa
                   35553:                (*l)    /lambda
                   35554:                (*m)    /mu
                   35555:                (*n)    /nu
                   35556:                (*o)    /omicron
                   35557:                (*p)    /pi
                   35558:                (*h)    /theta
                   35559:                (*r)    /rho
                   35560:                (*s)    /sigma
                   35561:                (*t)    /tau
                   35562:                (*u)    /upsilon
                   35563:                (---)   /omega1
                   35564:                (*w)    /omega
                   35565:                (*c)    /xi
                   35566:                (*q)    /psi
                   35567:                (*z)    /zeta
                   35568:                (---)   /braceleft
                   35569:                (or)    /bar
                   35570:                (---)   /braceright
                   35571:                (ap)    /similar
                   35572:                (---)   /Upsilon1
                   35573:                (fm)    /minute
                   35574:                (<=)    /lessequal
                   35575:                (fr)    /fraction               % devpost character
                   35576:                (if)    /infinity
                   35577:                (fn)    /florin                 % devpost character
                   35578:                (---)   /club
                   35579:                (---)   /diamond
                   35580:                (---)   /heart
                   35581:                (---)   /spade
                   35582:                (ab)    /arrowboth
                   35583:                (<-)    /arrowleft
                   35584:                (ua)    /arrowup
                   35585:                (->)    /arrowright
                   35586:                (da)    /arrowdown
                   35587:                (de)    /degree
                   35588:                (+-)    /plusminus
                   35589:                (---)   /second
                   35590:                (>=)    /greaterequal
                   35591:                (mu)    /multiply
                   35592:                (pt)    /proportional
                   35593:                (pd)    /partialdiff
                   35594:                (bu)    /bullet
                   35595:                (di)    /divide
                   35596:                (!=)    /notequal
                   35597:                (==)    /equivalence
                   35598:                (~~)    /approxequal
                   35599:                (el)    /ellipsis
                   35600:                (av)    /arrowvertex
                   35601:                (ah)    /arrowhorizex
                   35602:                (CR)    /carriagereturn
                   35603:                (af)    /aleph
                   35604:                (If)    /Ifraktur
                   35605:                (Rf)    /Rfraktur
                   35606:                (ws)    /weierstrass
                   35607:                (Ox)    /circlemultiply
                   35608:                (O+)    /circleplus
                   35609:                (es)    /emptyset
                   35610:                (ca)    /intersection
                   35611:                (cu)    /union
                   35612:                (sp)    /propersuperset
                   35613:                (ip)    /reflexsuperset
                   35614:                (!b)    /notsubset
                   35615:                (sb)    /propersubset
                   35616:                (ib)    /reflexsubset
                   35617:                (mo)    /element
                   35618:                (!m)    /notelement
                   35619:                (an)    /angle
                   35620:                (gr)    /gradient
                   35621:                (rg)    /registerserif
                   35622:                (co)    /copyrightserif
                   35623:                (tm)    /trademarkserif
                   35624:                (---)   /product
                   35625:                (sr)    /radical
                   35626:                (c.)    /dotmath
                   35627:                (no)    /logicalnot
                   35628:                (l&)    /logicaland
                   35629:                (l|)    /logicalor
                   35630:                (---)   /arrowdblboth
                   35631:                (---)   /arrowdblleft
                   35632:                (---)   /arrowdblup
                   35633:                (---)   /arrowdblright
                   35634:                (---)   /arrowdbldown
                   35635:                (lz)    /lozenge
                   35636:                (b<)    /angleleft
                   35637:                (RG)    /registersans
                   35638:                (CO)    /copyrightsans
                   35639:                (TM)    /trademarksans
                   35640:                (---)   /summation
                   35641:                (LT)    /parenlefttp
                   35642:                (br)    /parenleftex
                   35643:                (LX)    (")                     % synonym
                   35644:                (LB)    /parenleftbt
                   35645:                (lc)    /bracketlefttp
                   35646:                (lx)    /bracketleftex
                   35647:                (lf)    /bracketleftbt
                   35648:                (lt)    /bracelefttp
                   35649:                (lk)    /braceleftmid
                   35650:                (lb)    /braceleftbt
                   35651:                (bv)    /braceex
                   35652:                (|)     (")                     % synonym
                   35653:                (b>)    /angleright
                   35654:                (is)    /integral
                   35655:                (---)   /integraltp
                   35656:                (---)   /integralex
                   35657:                (---)   /integralbt
                   35658:                (RT)    /parenrighttp
                   35659:                (RX)    /parenrightex
                   35660:                (RB)    /parenrightbt
                   35661:                (rc)    /bracketrighttp
                   35662:                (rx)    /bracketrightex
                   35663:                (rf)    /bracketrightbt
                   35664:                (rt)    /bracerighttp
                   35665:                (rk)    /bracerightmid
                   35666:                (rb)    /bracerightbt
                   35667:                (~=)    (55     0       1)      % charlib
                   35668:        //End of SymbolCharset
                   35669: }
                   35670: 
                   35671: SpecialCharset() {
                   35672:        cat <<-'//End of SpecialCharset'
                   35673:                (ru)    /underscore
                   35674:                ('')    /quotedblright          % devpost character
                   35675:                (``)    /quotedblleft           % devpost character
                   35676:                (dg)    /dagger                 % devpost character
                   35677:                (dd)    /daggerdbl              % devpost character
                   35678:                (en)    /endash                 % devpost character
                   35679:                (\\-)   (")                     % synonym
                   35680:                (em)    /emdash
                   35681: %              (ff)    (60     2       1)      % charlib
                   35682: %              (Fi)    (84     2       1)      % charlib
                   35683: %              (Fl)    (84     2       1)      % charlib
                   35684:                (14)    (75     2       1)      % charlib
                   35685:                (12)    (75     2       1)      % charlib
                   35686:                (34)    (75     2       1)      % charlib
                   35687:                (bx)    (50     2       1)      % charlib
                   35688:                (ob)    (38     2       1)      % charlib
                   35689:                (ci)    (75     0       1)      % charlib
                   35690:                (sq)    (50     2       1)      % charlib
                   35691:                (Sl)    (50     2       1)      % charlib
                   35692:                (L1)    (110    1       2)      % charlib
                   35693:                (LA)    (110    1       2)      % charlib
                   35694:                (LV)    (110    3       1)      % charlib
                   35695:                (LH)    (210    1       1)      % charlib
                   35696:                (lh)    (100    0       1)      % charlib
                   35697:                (rh)    (100    0       1)      % charlib
                   35698:                (lH)    (100    0       1)      % charlib
                   35699:                (rH)    (100    0       1)      % charlib
                   35700:                (PC)    (220    2       1)      % charlib
                   35701:                (DG)    (185    2       1)      % charlib
                   35702:        //End of SpecialCharset
                   35703: }
                   35704: 
                   35705: #
                   35706: # Latin1 ensures a font uses the ISOLatin1Encoding vector, although only
                   35707: # text fonts should be re-encoded. Downloading the Encoding vector doesn't
                   35708: # often make sense. No ISOLatin1Encoding array likely means ROM based fonts
                   35709: # on your printer are incomplete. Type 1 fonts with a full Latin1 character
                   35710: # set appeared sometime after Version 50.0.
                   35711: #
                   35712: 
                   35713: Latin1() {
                   35714:        if [ "$DOWNLOADVECTOR" = TRUE ]; then
                   35715:                cat <<-'//End of ISOLatin1Encoding'
                   35716:                        /ISOLatin1Encoding [
                   35717:                                /.notdef
                   35718:                                /.notdef
                   35719:                                /.notdef
                   35720:                                /.notdef
                   35721:                                /.notdef
                   35722:                                /.notdef
                   35723:                                /.notdef
                   35724:                                /.notdef
                   35725:                                /.notdef
                   35726:                                /.notdef
                   35727:                                /.notdef
                   35728:                                /.notdef
                   35729:                                /.notdef
                   35730:                                /.notdef
                   35731:                                /.notdef
                   35732:                                /.notdef
                   35733:                                /.notdef
                   35734:                                /.notdef
                   35735:                                /.notdef
                   35736:                                /.notdef
                   35737:                                /.notdef
                   35738:                                /.notdef
                   35739:                                /.notdef
                   35740:                                /.notdef
                   35741:                                /.notdef
                   35742:                                /.notdef
                   35743:                                /.notdef
                   35744:                                /.notdef
                   35745:                                /.notdef
                   35746:                                /.notdef
                   35747:                                /.notdef
                   35748:                                /.notdef
                   35749:                                /space
                   35750:                                /exclam
                   35751:                                /quotedbl
                   35752:                                /numbersign
                   35753:                                /dollar
                   35754:                                /percent
                   35755:                                /ampersand
                   35756:                                /quoteright
                   35757:                                /parenleft
                   35758:                                /parenright
                   35759:                                /asterisk
                   35760:                                /plus
                   35761:                                /comma
                   35762:                                /minus
                   35763:                                /period
                   35764:                                /slash
                   35765:                                /zero
                   35766:                                /one
                   35767:                                /two
                   35768:                                /three
                   35769:                                /four
                   35770:                                /five
                   35771:                                /six
                   35772:                                /seven
                   35773:                                /eight
                   35774:                                /nine
                   35775:                                /colon
                   35776:                                /semicolon
                   35777:                                /less
                   35778:                                /equal
                   35779:                                /greater
                   35780:                                /question
                   35781:                                /at
                   35782:                                /A
                   35783:                                /B
                   35784:                                /C
                   35785:                                /D
                   35786:                                /E
                   35787:                                /F
                   35788:                                /G
                   35789:                                /H
                   35790:                                /I
                   35791:                                /J
                   35792:                                /K
                   35793:                                /L
                   35794:                                /M
                   35795:                                /N
                   35796:                                /O
                   35797:                                /P
                   35798:                                /Q
                   35799:                                /R
                   35800:                                /S
                   35801:                                /T
                   35802:                                /U
                   35803:                                /V
                   35804:                                /W
                   35805:                                /X
                   35806:                                /Y
                   35807:                                /Z
                   35808:                                /bracketleft
                   35809:                                /backslash
                   35810:                                /bracketright
                   35811:                                /asciicircum
                   35812:                                /underscore
                   35813:                                /quoteleft
                   35814:                                /a
                   35815:                                /b
                   35816:                                /c
                   35817:                                /d
                   35818:                                /e
                   35819:                                /f
                   35820:                                /g
                   35821:                                /h
                   35822:                                /i
                   35823:                                /j
                   35824:                                /k
                   35825:                                /l
                   35826:                                /m
                   35827:                                /n
                   35828:                                /o
                   35829:                                /p
                   35830:                                /q
                   35831:                                /r
                   35832:                                /s
                   35833:                                /t
                   35834:                                /u
                   35835:                                /v
                   35836:                                /w
                   35837:                                /x
                   35838:                                /y
                   35839:                                /z
                   35840:                                /braceleft
                   35841:                                /bar
                   35842:                                /braceright
                   35843:                                /asciitilde
                   35844:                                /.notdef
                   35845:                                /.notdef
                   35846:                                /.notdef
                   35847:                                /.notdef
                   35848:                                /.notdef
                   35849:                                /.notdef
                   35850:                                /.notdef
                   35851:                                /.notdef
                   35852:                                /.notdef
                   35853:                                /.notdef
                   35854:                                /.notdef
                   35855:                                /.notdef
                   35856:                                /.notdef
                   35857:                                /.notdef
                   35858:                                /.notdef
                   35859:                                /.notdef
                   35860:                                /.notdef
                   35861:                                /dotlessi
                   35862:                                /grave
                   35863:                                /acute
                   35864:                                /circumflex
                   35865:                                /tilde
                   35866:                                /macron
                   35867:                                /breve
                   35868:                                /dotaccent
                   35869:                                /dieresis
                   35870:                                /.notdef
                   35871:                                /ring
                   35872:                                /cedilla
                   35873:                                /.notdef
                   35874:                                /hungarumlaut
                   35875:                                /ogonek
                   35876:                                /caron
                   35877:                                /space
                   35878:                                /exclamdown
                   35879:                                /cent
                   35880:                                /sterling
                   35881:                                /currency
                   35882:                                /yen
                   35883:                                /brokenbar
                   35884:                                /section
                   35885:                                /dieresis
                   35886:                                /copyright
                   35887:                                /ordfeminine
                   35888:                                /guillemotleft
                   35889:                                /logicalnot
                   35890:                                /hyphen
                   35891:                                /registered
                   35892:                                /macron
                   35893:                                /degree
                   35894:                                /plusminus
                   35895:                                /twosuperior
                   35896:                                /threesuperior
                   35897:                                /acute
                   35898:                                /mu
                   35899:                                /paragraph
                   35900:                                /periodcentered
                   35901:                                /cedilla
                   35902:                                /onesuperior
                   35903:                                /ordmasculine
                   35904:                                /guillemotright
                   35905:                                /onequarter
                   35906:                                /onehalf
                   35907:                                /threequarters
                   35908:                                /questiondown
                   35909:                                /Agrave
                   35910:                                /Aacute
                   35911:                                /Acircumflex
                   35912:                                /Atilde
                   35913:                                /Adieresis
                   35914:                                /Aring
                   35915:                                /AE
                   35916:                                /Ccedilla
                   35917:                                /Egrave
                   35918:                                /Eacute
                   35919:                                /Ecircumflex
                   35920:                                /Edieresis
                   35921:                                /Igrave
                   35922:                                /Iacute
                   35923:                                /Icircumflex
                   35924:                                /Idieresis
                   35925:                                /Eth
                   35926:                                /Ntilde
                   35927:                                /Ograve
                   35928:                                /Oacute
                   35929:                                /Ocircumflex
                   35930:                                /Otilde
                   35931:                                /Odieresis
                   35932:                                /multiply
                   35933:                                /Oslash
                   35934:                                /Ugrave
                   35935:                                /Uacute
                   35936:                                /Ucircumflex
                   35937:                                /Udieresis
                   35938:                                /Yacute
                   35939:                                /Thorn
                   35940:                                /germandbls
                   35941:                                /agrave
                   35942:                                /aacute
                   35943:                                /acircumflex
                   35944:                                /atilde
                   35945:                                /adieresis
                   35946:                                /aring
                   35947:                                /ae
                   35948:                                /ccedilla
                   35949:                                /egrave
                   35950:                                /eacute
                   35951:                                /ecircumflex
                   35952:                                /edieresis
                   35953:                                /igrave
                   35954:                                /iacute
                   35955:                                /icircumflex
                   35956:                                /idieresis
                   35957:                                /eth
                   35958:                                /ntilde
                   35959:                                /ograve
                   35960:                                /oacute
                   35961:                                /ocircumflex
                   35962:                                /otilde
                   35963:                                /odieresis
                   35964:                                /divide
                   35965:                                /oslash
                   35966:                                /ugrave
                   35967:                                /uacute
                   35968:                                /ucircumflex
                   35969:                                /udieresis
                   35970:                                /yacute
                   35971:                                /thorn
                   35972:                                /ydieresis
                   35973:                        ] def
                   35974:                //End of ISOLatin1Encoding
                   35975:        fi
                   35976: 
                   35977:        echo "ISOLatin1Encoding /$1 ReEncode"
                   35978: }
                   35979: 
                   35980: #
                   35981: # Generating functions output PostScript programs that build font width
                   35982: # tables or a typesetter description file. Send the program to a printer
                   35983: # and the complete table will come back on the serial port. All write on
                   35984: # stdout and assume the prologue and other required PostScript files are
                   35985: # all available.
                   35986: #
                   35987: 
                   35988: Proportional() {
                   35989:        echo "/unitwidth $UNITWIDTH def"
                   35990:        echo "/resolution $RESOLUTION def"
                   35991:        echo "/octalescapes $OCTALESCAPES def"
                   35992:        echo "/charset ["
                   35993:                # Get <>_ and | from S. Use accents for ascii ^ and ~.
                   35994:                StandardCharset | awk '
                   35995:                        $1 == "(<)" && $2 == "/less" {$1 = "(---)"}
                   35996:                        $1 == "(>)" && $2 == "/greater" {$1 = "(---)"}
                   35997:                        $1 == "(_)" && $2 == "/underscore" {$1 = "(---)"}
                   35998:                        $1 == "(|)" && $2 == "/bar" {$1 = "(---)"}
                   35999:                        $1 == "(^)" && $2 == "/asciicircum" {
                   36000:                                printf "(^)\t/circumflex\n"
                   36001:                                $1 = "(---)"
                   36002:                        }
                   36003:                        $1 == "(~)" && $2 == "/asciitilde" {
                   36004:                                printf "(~)\t/tilde\n"
                   36005:                                $1 = "(---)"
                   36006:                        }
                   36007:                        {printf "%s\t%s\n", $1, $2}
                   36008:                '
                   36009:        echo "] def"
                   36010: 
                   36011:        Latin1 $2
                   36012:        echo "/$2 SelectFont"
                   36013:        echo "(opO) SetAscender"
                   36014: 
                   36015:        echo "(name $1\\\\n) Print"
                   36016:        echo "(fontname $2\\\\n) Print"
                   36017:        echo "/$1 NamedInPrologue"
                   36018:        echo "(spacewidth ) Print 32 GetWidth Print (\n) Print"
                   36019:        echo "(charset\\\\n) Print"
                   36020:        echo "BuildFontCharset"
                   36021: }
                   36022: 
                   36023: FixedWidth() {
                   36024:        echo "/unitwidth $UNITWIDTH def"
                   36025:        echo "/resolution $RESOLUTION def"
                   36026:        echo "/octalescapes $OCTALESCAPES def"
                   36027:        echo "/charset ["
                   36028:                StandardCharset
                   36029:        echo "] def"
                   36030: 
                   36031:        Latin1 $2
                   36032:        echo "/$2 SelectFont"
                   36033:        echo "(opO) SetAscender"
                   36034: 
                   36035:        echo "(name $1\\\\n) Print"
                   36036:        echo "(fontname $2\\\\n) Print"
                   36037:        echo "/$1 NamedInPrologue"
                   36038:        echo "(spacewidth ) Print 32 GetWidth Print (\n) Print"
                   36039:        echo "(charset\\\\n) Print"
                   36040:        echo "BuildFontCharset"
                   36041: }
                   36042: 
                   36043: Dingbats() {
                   36044:        echo "/unitwidth $UNITWIDTH def"
                   36045:        echo "/resolution $RESOLUTION def"
                   36046:        echo "/octalescapes $OCTALESCAPES def"
                   36047:        echo "/charset ["
                   36048:                DingbatsCharset | awk '$1 != "(---)" && $2 ~ /^\/[a-zA-Z]/ {
                   36049:                        printf "%s\tISOLatin1Encoding %s GetCode\n", $1, $2
                   36050:                }'
                   36051:        echo "] def"
                   36052: 
                   36053:        echo "/$2 SelectFont"
                   36054:        echo "(   ) SetAscender"
                   36055: 
                   36056:        echo "(name $1\\\\n) Print"
                   36057:        echo "(fontname $2\\\\n) Print"
                   36058:        echo "/$1 NamedInPrologue"
                   36059:        echo "(charset\\\\n) Print"
                   36060:        echo "BuildFontCharset"
                   36061: }
                   36062: 
                   36063: Greek() {
                   36064:        echo "/unitwidth $UNITWIDTH def"
                   36065:        echo "/resolution $RESOLUTION def"
                   36066:        echo "/charset ["
                   36067:                SymbolCharset | awk '$1 ~ /\(\*[a-zA-Z]\)/'
                   36068:        echo "] def"
                   36069: 
                   36070:        echo "/$2 SelectFont"
                   36071:        echo "(orO) SetAscender"
                   36072: 
                   36073:        echo "(name $1\\\\n) Print"
                   36074:        echo "(fontname $2\\\\n) Print"
                   36075:        echo "/$1 NamedInPrologue"
                   36076:        echo "(spacewidth ) Print 32 GetWidth Print (\n) Print"
                   36077:        echo "(charset\\\\n) Print"
                   36078:        echo "BuildFontCharset"
                   36079: }
                   36080: 
                   36081: Symbol() {
                   36082:        echo "/unitwidth $UNITWIDTH def"
                   36083:        echo "/resolution $RESOLUTION def"
                   36084:        echo "/charset ["
                   36085:                SymbolCharset
                   36086:        echo "] def"
                   36087: 
                   36088:        echo "ChangeMetrics"
                   36089:        echo "/S SelectFont"
                   36090:        echo "(orO) SetAscender"
                   36091: 
                   36092:        echo "(name $1\\\\n) Print"
                   36093:        echo "(fontname $2\\\\n) Print"
                   36094:        echo "/$1 NamedInPrologue"
                   36095:        echo "(special\\\\n) Print"
                   36096:        echo "(charset\\\\n) Print"
                   36097:        echo "BuildFontCharset"
                   36098: }
                   36099: 
                   36100: Special() {
                   36101:        echo "/unitwidth $UNITWIDTH def"
                   36102:        echo "/resolution $RESOLUTION def"
                   36103:        echo "/charset ["
                   36104:                SpecialCharset
                   36105:        echo "] def"
                   36106: 
                   36107:        echo "ChangeMetrics"
                   36108:        echo "/S1 SelectFont"
                   36109: 
                   36110:        echo "(# Times-Roman special font\\\\n) Print"
                   36111:        echo "(name $1\\\\n) Print"
                   36112:        echo "(fontname $2\\\\n) Print"
                   36113:        echo "/$1 NamedInPrologue"
                   36114:        echo "(special\\\\n) Print"
                   36115:        echo "(charset\\\\n) Print"
                   36116:        echo "BuildFontCharset"
                   36117: }
                   36118: 
                   36119: #
                   36120: # The DESC file doesn't have to be built on a printer. It's only here for
                   36121: # consistency.
                   36122: #
                   36123: 
                   36124: Description() {
                   36125:        echo "/charset ["       # awk - so the stack doesn't overflow
                   36126:                StandardCharset | awk '{print $1}'
                   36127:                SymbolCharset | awk '{print $1}'
                   36128:                SpecialCharset | awk '{print $1}'
                   36129:        echo "] def"
                   36130: 
                   36131:        cat <<-//DESC
                   36132:                (#Device Description - Latin1 character set
                   36133: 
                   36134:                PDL PostScript
                   36135:                Encoding Latin1
                   36136: 
                   36137:                fonts 10 R I B BI CW H HI HB S1 S
                   36138:                sizes 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
                   36139:                23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 40 42 44 46
                   36140:                48 50 52 54 56 58 60 64 68 72 78 84 90 96 100 105 110 115
                   36141:                120 125 130 135 140 145 150 155 160 0
                   36142:                res $RESOLUTION
                   36143:                hor 1
                   36144:                vert 1
                   36145:                unitwidth $UNITWIDTH
                   36146: 
                   36147:                ) Print
                   36148:        //DESC
                   36149:        echo "(charset\\\\n) Print"
                   36150:        echo "BuildDescCharset"
                   36151:        echo "(\\\\n) Print"
                   36152: }
                   36153: 
                   36154: 0707070014231124151006440057030057030000010447200522627502100004100000044161post.src/devLatin1/shell.lib.old#
                   36155: # Shell library - for building devLatin1 tables.
                   36156: #
                   36157: # The full ISO Latin1 alphabet appeared in Adobe's interpreter sometime
                   36158: # around Version 50.0. Prior to that ROM resident Type 1 text fonts were
                   36159: # missing 18 characters that are now part of the Latin1 standard. Width
                   36160: # tables will not build on printers that lack full Latin1 support. Error
                   36161: # message will likely reflect a missing ISOLatin1Encoding array.
                   36162: #
                   36163: 
                   36164: RESOLUTION=720
                   36165: UNITWIDTH=10
                   36166: 
                   36167: OCTALESCAPES=${OCTALESCAPES:-160}      # <= code means add \0ddd names
                   36168: DOWNLOADVECTOR=FALSE                   # TRUE can mean incomplete tables
                   36169: 
                   36170: #
                   36171: # BuiltinTables returns command lines that generate PostScript programs
                   36172: # for building a typesetter description file and font width tables for
                   36173: # a relatively standard collection of fonts. Use awk to select a command
                   36174: # line or modify an existing command to build a width table for a new
                   36175: # font.
                   36176: #
                   36177: 
                   36178: BuiltinTables() {
                   36179:        cat <<-'//End of BuiltinTables'
                   36180:                Proportional    R       Times-Roman
                   36181:                Proportional    I       Times-Italic
                   36182:                Proportional    B       Times-Bold
                   36183:                Proportional    BI      Times-BoldItalic
                   36184:                Proportional    AB      AvantGarde-Demi
                   36185:                Proportional    AI      AvantGarde-BookOblique
                   36186:                Proportional    AR      AvantGarde-Book
                   36187:                Proportional    AX      AvantGarde-DemiOblique
                   36188:                Proportional    H       Helvetica
                   36189:                Proportional    HB      Helvetica-Bold
                   36190:                Proportional    HI      Helvetica-Oblique
                   36191:                Proportional    HX      Helvetica-BoldOblique
                   36192:                Proportional    Hb      Helvetica-Narrow-Bold
                   36193:                Proportional    Hi      Helvetica-Narrow-Oblique
                   36194:                Proportional    Hr      Helvetica-Narrow
                   36195:                Proportional    Hx      Helvetica-Narrow-BoldOblique
                   36196:                Proportional    KB      Bookman-Demi
                   36197:                Proportional    KI      Bookman-LightItalic
                   36198:                Proportional    KR      Bookman-Light
                   36199:                Proportional    KX      Bookman-DemiItalic
                   36200:                Proportional    NB      NewCenturySchlbk-Bold
                   36201:                Proportional    NI      NewCenturySchlbk-Italic
                   36202:                Proportional    NR      NewCenturySchlbk-Roman
                   36203:                Proportional    NX      NewCenturySchlbk-BoldItalic
                   36204:                Proportional    PA      Palatino-Roman
                   36205:                Proportional    PB      Palatino-Bold
                   36206:                Proportional    PI      Palatino-Italic
                   36207:                Proportional    PX      Palatino-BoldItalic
                   36208:                Proportional    ZI      ZapfChancery-MediumItalic
                   36209:                FixedWidth      C       Courier
                   36210:                FixedWidth      CB      Courier-Bold
                   36211:                FixedWidth      CI      Courier-Oblique
                   36212:                FixedWidth      CO      Courier
                   36213:                FixedWidth      CW      Courier
                   36214:                FixedWidth      CX      Courier-BoldOblique
                   36215:                Dingbats        ZD      ZapfDingbats
                   36216:                Greek           GR      Symbol
                   36217:                Symbol          S       Symbol
                   36218:                Special         S1      Times-Roman
                   36219:                Description     DESC    ---
                   36220:        //End of BuiltinTables
                   36221: }
                   36222: 
                   36223: #
                   36224: # AllTables prints the complete list of builtin font names.
                   36225: #
                   36226: 
                   36227: AllTables() {
                   36228:        BuiltinTables | awk '{print $2}'
                   36229: }
                   36230: 
                   36231: #
                   36232: # Charset functions generate keyword/value pairs (as PostScript objects)
                   36233: # that describe the character set available in a font. The keyword is a
                   36234: # PostScript string that represents troff's name for the character. The
                   36235: # value is usually the literal name (i.e. begins with a /) assigned to
                   36236: # the character in the PostScript font. The value can also be an integer
                   36237: # or a PostScript string. An integer value is used as an index in the
                   36238: # current font's Encoding array. A string value is returned to the host
                   36239: # unchanged when the entry for the character is constructed. Entries that
                   36240: # have (") as their value are synonyms for the preceeding character.
                   36241: #
                   36242: # The 18 characters missing from ROM resident fonts on older printers are
                   36243: # flagged with the PostScript comment "% missing".
                   36244: #
                   36245: 
                   36246: StandardCharset() {
                   36247:        cat <<-'//End of StandardCharset'
                   36248:                (!)     /exclam
                   36249:                (")     /quotedbl
                   36250:                (#)     /numbersign
                   36251:                ($)     /dollar
                   36252:                (%)     /percent
                   36253:                (&)     /ampersand
                   36254:                (')     /quoteright
                   36255:                (\()    /parenleft
                   36256:                (\))    /parenright
                   36257:                (*)     /asterisk
                   36258:                (+)     /plus
                   36259:                (,)     /comma
                   36260:                (-)     /minus          % also hyphen in devpost
                   36261:                (.)     /period
                   36262:                (/)     /slash
                   36263:                (0)     /zero
                   36264:                (1)     /one
                   36265:                (2)     /two
                   36266:                (3)     /three
                   36267:                (4)     /four
                   36268:                (5)     /five
                   36269:                (6)     /six
                   36270:                (7)     /seven
                   36271:                (8)     /eight
                   36272:                (9)     /nine
                   36273:                (:)     /colon
                   36274:                (;)     /semicolon
                   36275:                (<)     /less
                   36276:                (=)     /equal
                   36277:                (>)     /greater
                   36278:                (?)     /question
                   36279:                (@)     /at
                   36280:                (A)     /A
                   36281:                (B)     /B
                   36282:                (C)     /C
                   36283:                (D)     /D
                   36284:                (E)     /E
                   36285:                (F)     /F
                   36286:                (G)     /G
                   36287:                (H)     /H
                   36288:                (I)     /I
                   36289:                (J)     /J
                   36290:                (K)     /K
                   36291:                (L)     /L
                   36292:                (M)     /M
                   36293:                (N)     /N
                   36294:                (O)     /O
                   36295:                (P)     /P
                   36296:                (Q)     /Q
                   36297:                (R)     /R
                   36298:                (S)     /S
                   36299:                (T)     /T
                   36300:                (U)     /U
                   36301:                (V)     /V
                   36302:                (W)     /W
                   36303:                (X)     /X
                   36304:                (Y)     /Y
                   36305:                (Z)     /Z
                   36306:                ([)     /bracketleft
                   36307:                (\\)    /backslash
                   36308:                (])     /bracketright
                   36309:                (^)     /asciicircum
                   36310:                (_)     /underscore
                   36311:                (`)     /quoteleft
                   36312:                (a)     /a
                   36313:                (b)     /b
                   36314:                (c)     /c
                   36315:                (d)     /d
                   36316:                (e)     /e
                   36317:                (f)     /f
                   36318:                (g)     /g
                   36319:                (h)     /h
                   36320:                (i)     /i
                   36321:                (j)     /j
                   36322:                (k)     /k
                   36323:                (l)     /l
                   36324:                (m)     /m
                   36325:                (n)     /n
                   36326:                (o)     /o
                   36327:                (p)     /p
                   36328:                (q)     /q
                   36329:                (r)     /r
                   36330:                (s)     /s
                   36331:                (t)     /t
                   36332:                (u)     /u
                   36333:                (v)     /v
                   36334:                (w)     /w
                   36335:                (x)     /x
                   36336:                (y)     /y
                   36337:                (z)     /z
                   36338:                ({)     /braceleft
                   36339:                (|)     /bar
                   36340:                (})     /braceright
                   36341:                (~)     /asciitilde
                   36342:                (\\`)   /grave                  % devpost character
                   36343:                (ga)    (")                     % synonym
                   36344:                (!!)    /exclamdown
                   36345:                (c|)    /cent
                   36346:                (ct)    (")                     % devpost synonym
                   36347:                (L-)    /sterling
                   36348:                (ps)    (")                     % devpost synonym
                   36349:                (xo)    /currency
                   36350:                (cr)    (")                     % devpost synonym
                   36351:                (Y-)    /yen
                   36352:                (yn)    (")                     % devpost synonym
                   36353:                (||)    /brokenbar              % missing
                   36354:                (so)    /section
                   36355:                (sc)    (")                     % devpost synonym
                   36356:                ("")    /dieresis
                   36357:                (co)    /copyright
                   36358:                (a_)    /ordfeminine
                   36359:                (<<)    /guillemotleft
                   36360:                (-,)    /logicalnot
                   36361:                (hy)    /hyphen
                   36362:                (--)    (")                     % synonym
                   36363:                (ro)    /registered
                   36364:                (rg)    (")                     % devpost synonym
                   36365:                (-^)    /macron
                   36366:                (0^)    /degree                 % missing
                   36367:                (+-)    /plusminus              % missing
                   36368:                (2^)    /twosuperior            % missing
                   36369:                (3^)    /threesuperior          % missing
                   36370:                (\\')   /acute
                   36371:                (aa)    (")                     % devpost synonym
                   36372:                (/u)    /mu                     % missing
                   36373:                (P!)    /paragraph
                   36374:                (pg)    (")                     % devpost synonym
                   36375:                (.^)    /periodcentered
                   36376:                (,,)    /cedilla
                   36377:                (1^)    /onesuperior            % missing
                   36378:                (o_)    /ordmasculine
                   36379:                (>>)    /guillemotright
                   36380:                (14)    /onequarter             % missing
                   36381:                (12)    /onehalf                % missing
                   36382:                (34)    /threequarters          % missing
                   36383:                (??)    /questiondown
                   36384:                (A`)    /Agrave
                   36385:                (A')    /Aacute
                   36386:                (A^)    /Acircumflex
                   36387:                (A~)    /Atilde
                   36388:                (A")    /Adieresis
                   36389:                (A*)    /Aring
                   36390:                (AE)    /AE
                   36391:                (C,)    /Ccedilla
                   36392:                (E`)    /Egrave
                   36393:                (E')    /Eacute
                   36394:                (E^)    /Ecircumflex
                   36395:                (E")    /Edieresis
                   36396:                (I`)    /Igrave
                   36397:                (I')    /Iacute
                   36398:                (I^)    /Icircumflex
                   36399:                (I")    /Idieresis
                   36400:                (D-)    /Eth                    % missing
                   36401:                (N~)    /Ntilde
                   36402:                (O`)    /Ograve
                   36403:                (O')    /Oacute
                   36404:                (O^)    /Ocircumflex
                   36405:                (O~)    /Otilde
                   36406:                (O")    /Odieresis
                   36407:                (xx)    /multiply               % missing
                   36408:                (O/)    /Oslash
                   36409:                (U`)    /Ugrave
                   36410:                (U')    /Uacute
                   36411:                (U^)    /Ucircumflex
                   36412:                (U")    /Udieresis
                   36413:                (Y')    /Yacute                 % missing
                   36414:                (TH)    /Thorn                  % missing
                   36415:                (ss)    /germandbls
                   36416:                (a`)    /agrave
                   36417:                (a')    /aacute
                   36418:                (a^)    /acircumflex
                   36419:                (a~)    /atilde
                   36420:                (a")    /adieresis
                   36421:                (a*)    /aring
                   36422:                (ae)    /ae
                   36423:                (c,)    /ccedilla
                   36424:                (e`)    /egrave
                   36425:                (e')    /eacute
                   36426:                (e^)    /ecircumflex
                   36427:                (e")    /edieresis
                   36428:                (i`)    /igrave
                   36429:                (i')    /iacute
                   36430:                (i^)    /icircumflex
                   36431:                (i")    /idieresis
                   36432:                (d-)    /eth                    % missing
                   36433:                (n~)    /ntilde
                   36434:                (o`)    /ograve
                   36435:                (o')    /oacute
                   36436:                (o^)    /ocircumflex
                   36437:                (o~)    /otilde
                   36438:                (o")    /odieresis
                   36439:                (-:)    /divide                 % missing
                   36440:                (o/)    /oslash
                   36441:                (u`)    /ugrave
                   36442:                (u')    /uacute
                   36443:                (u^)    /ucircumflex
                   36444:                (u")    /udieresis
                   36445:                (y')    /yacute                 % missing
                   36446:                (th)    /thorn                  % missing
                   36447:                (y")    /ydieresis
                   36448:        //End of StandardCharset
                   36449: }
                   36450: 
                   36451: SymbolCharset() {
                   36452:        cat <<-'//End of SymbolCharset'
                   36453:                (---)   /exclam
                   36454:                (fa)    /universal
                   36455:                (---)   /numbersign
                   36456:                (te)    /existential
                   36457:                (---)   /percent
                   36458:                (---)   /ampersand
                   36459:                (st)    /suchthat
                   36460:                (---)   /parenleft
                   36461:                (---)   /parenright
                   36462:                (**)    /asteriskmath
                   36463:                (pl)    /plus
                   36464:                (---)   /comma
                   36465:                (mi)    /minus
                   36466:                (---)   /period
                   36467:                (sl)    /slash
                   36468:                (---)   /zero
                   36469:                (---)   /one
                   36470:                (---)   /two
                   36471:                (---)   /three
                   36472:                (---)   /four
                   36473:                (---)   /five
                   36474:                (---)   /six
                   36475:                (---)   /seven
                   36476:                (---)   /eight
                   36477:                (---)   /nine
                   36478:                (---)   /colon
                   36479:                (---)   /semicolon
                   36480:                (<)     /less
                   36481:                (eq)    /equal
                   36482:                (>)     /greater
                   36483:                (---)   /question
                   36484:                (cg)    /congruent
                   36485:                (*A)    /Alpha
                   36486:                (*B)    /Beta
                   36487:                (*X)    /Chi
                   36488:                (*D)    /Delta
                   36489:                (*E)    /Epsilon
                   36490:                (*F)    /Phi
                   36491:                (*G)    /Gamma
                   36492:                (*Y)    /Eta
                   36493:                (*I)    /Iota
                   36494:                (---)   /theta1
                   36495:                (*K)    /Kappa
                   36496:                (*L)    /Lambda
                   36497:                (*M)    /Mu
                   36498:                (*N)    /Nu
                   36499:                (*O)    /Omicron
                   36500:                (*P)    /Pi
                   36501:                (*H)    /Theta
                   36502:                (*R)    /Rho
                   36503:                (*S)    /Sigma
                   36504:                (*T)    /Tau
                   36505:                (*U)    /Upsilon
                   36506:                (ts)    /sigma1
                   36507:                (*W)    /Omega
                   36508:                (*C)    /Xi
                   36509:                (*Q)    /Psi
                   36510:                (*Z)    /Zeta
                   36511:                (---)   /bracketleft
                   36512:                (tf)    /therefore
                   36513:                (---)   /bracketright
                   36514:                (pp)    /perpendicular
                   36515:                (ul)    /underscore
                   36516:                (_)     (")                     % synonym
                   36517:                (rn)    /radicalex
                   36518:                (*a)    /alpha
                   36519:                (*b)    /beta
                   36520:                (*x)    /chi
                   36521:                (*d)    /delta
                   36522:                (*e)    /epsilon
                   36523:                (*f)    /phi
                   36524:                (*g)    /gamma
                   36525:                (*y)    /eta
                   36526:                (*i)    /iota
                   36527:                (---)   /phi1
                   36528:                (*k)    /kappa
                   36529:                (*l)    /lambda
                   36530:                (*m)    /mu
                   36531:                (*n)    /nu
                   36532:                (*o)    /omicron
                   36533:                (*p)    /pi
                   36534:                (*h)    /theta
                   36535:                (*r)    /rho
                   36536:                (*s)    /sigma
                   36537:                (*t)    /tau
                   36538:                (*u)    /upsilon
                   36539:                (---)   /omega1
                   36540:                (*w)    /omega
                   36541:                (*c)    /xi
                   36542:                (*q)    /psi
                   36543:                (*z)    /zeta
                   36544:                (---)   /braceleft
                   36545:                (or)    /bar
                   36546:                (---)   /braceright
                   36547:                (ap)    /similar
                   36548:                (---)   /Upsilon1
                   36549:                (fm)    /minute
                   36550:                (<=)    /lessequal
                   36551:                (fr)    /fraction               % devpost character
                   36552:                (if)    /infinity
                   36553:                (fn)    /florin                 % devpost character
                   36554:                (---)   /club
                   36555:                (---)   /diamond
                   36556:                (---)   /heart
                   36557:                (---)   /spade
                   36558:                (ab)    /arrowboth
                   36559:                (<-)    /arrowleft
                   36560:                (ua)    /arrowup
                   36561:                (->)    /arrowright
                   36562:                (da)    /arrowdown
                   36563:                (de)    /degree
                   36564:                (+-)    /plusminus
                   36565:                (---)   /second
                   36566:                (>=)    /greaterequal
                   36567:                (mu)    /multiply
                   36568:                (pt)    /proportional
                   36569:                (pd)    /partialdiff
                   36570:                (bu)    /bullet
                   36571:                (di)    /divide
                   36572:                (!=)    /notequal
                   36573:                (==)    /equivalence
                   36574:                (~~)    /approxequal
                   36575:                (el)    /ellipsis
                   36576:                (av)    /arrowvertex
                   36577:                (ah)    /arrowhorizex
                   36578:                (CR)    /carriagereturn
                   36579:                (af)    /aleph
                   36580:                (If)    /Ifraktur
                   36581:                (Rf)    /Rfraktur
                   36582:                (ws)    /weierstrass
                   36583:                (Ox)    /circlemultiply
                   36584:                (O+)    /circleplus
                   36585:                (es)    /emptyset
                   36586:                (ca)    /intersection
                   36587:                (cu)    /union
                   36588:                (sp)    /propersuperset
                   36589:                (ip)    /reflexsuperset
                   36590:                (!b)    /notsubset
                   36591:                (sb)    /propersubset
                   36592:                (ib)    /reflexsubset
                   36593:                (mo)    /element
                   36594:                (!m)    /notelement
                   36595:                (an)    /angle
                   36596:                (gr)    /gradient
                   36597:                (rg)    /registerserif
                   36598:                (co)    /copyrightserif
                   36599:                (tm)    /trademarkserif
                   36600:                (---)   /product
                   36601:                (sr)    /radical
                   36602:                (c.)    /dotmath
                   36603:                (no)    /logicalnot
                   36604:                (l&)    /logicaland
                   36605:                (l|)    /logicalor
                   36606:                (---)   /arrowdblboth
                   36607:                (---)   /arrowdblleft
                   36608:                (---)   /arrowdblup
                   36609:                (---)   /arrowdblright
                   36610:                (---)   /arrowdbldown
                   36611:                (lz)    /lozenge
                   36612:                (b<)    /angleleft
                   36613:                (RG)    /registersans
                   36614:                (CO)    /copyrightsans
                   36615:                (TM)    /trademarksans
                   36616:                (---)   /summation
                   36617:                (LT)    /parenlefttp
                   36618:                (br)    /parenleftex
                   36619:                (LX)    (")                     % synonym
                   36620:                (LB)    /parenleftbt
                   36621:                (lc)    /bracketlefttp
                   36622:                (lx)    /bracketleftex
                   36623:                (lf)    /bracketleftbt
                   36624:                (lt)    /bracelefttp
                   36625:                (lk)    /braceleftmid
                   36626:                (lb)    /braceleftbt
                   36627:                (bv)    /braceex
                   36628:                (|)     (")                     % synonym
                   36629:                (b>)    /angleright
                   36630:                (is)    /integral
                   36631:                (---)   /integraltp
                   36632:                (---)   /integralex
                   36633:                (---)   /integralbt
                   36634:                (RT)    /parenrighttp
                   36635:                (RX)    /parenrightex
                   36636:                (RB)    /parenrightbt
                   36637:                (rc)    /bracketrighttp
                   36638:                (rx)    /bracketrightex
                   36639:                (rf)    /bracketrightbt
                   36640:                (rt)    /bracerighttp
                   36641:                (rk)    /bracerightmid
                   36642:                (rb)    /bracerightbt
                   36643:                (~=)    (55     0       1)      % charlib
                   36644:        //End of SymbolCharset
                   36645: }
                   36646: 
                   36647: SpecialCharset() {
                   36648:        cat <<-'//End of SpecialCharset'
                   36649:                (ru)    /underscore
                   36650:                ('')    /quotedblright          % devpost character
                   36651:                (``)    /quotedblleft           % devpost character
                   36652:                (dg)    /dagger                 % devpost character
                   36653:                (dd)    /daggerdbl              % devpost character
                   36654:                (en)    /endash                 % devpost character
                   36655:                (\\-)   (")                     % synonym
                   36656:                (em)    /emdash
                   36657: %              (ff)    (60     2       1)      % charlib
                   36658: %              (Fi)    (84     2       1)      % charlib
                   36659: %              (Fl)    (84     2       1)      % charlib
                   36660:                (14)    (75     2       1)      % charlib
                   36661:                (12)    (75     2       1)      % charlib
                   36662:                (34)    (75     2       1)      % charlib
                   36663:                (bx)    (50     2       1)      % charlib
                   36664:                (ob)    (38     2       1)      % charlib
                   36665:                (ci)    (75     0       1)      % charlib
                   36666:                (sq)    (50     2       1)      % charlib
                   36667:                (Sl)    (50     2       1)      % charlib
                   36668:                (L1)    (110    1       2)      % charlib
                   36669:                (LA)    (110    1       2)      % charlib
                   36670:                (LV)    (110    3       1)      % charlib
                   36671:                (LH)    (210    1       1)      % charlib
                   36672:                (lh)    (100    0       1)      % charlib
                   36673:                (rh)    (100    0       1)      % charlib
                   36674:                (lH)    (100    0       1)      % charlib
                   36675:                (rH)    (100    0       1)      % charlib
                   36676:                (PC)    (220    2       1)      % charlib
                   36677:                (DG)    (185    2       1)      % charlib
                   36678:        //End of SpecialCharset
                   36679: }
                   36680: 
                   36681: #
                   36682: # Latin1 ensures a font uses the ISOLatin1Encoding vector, although only
                   36683: # text fonts should be re-encoded. Downloading the Encoding vector doesn't
                   36684: # often make sense. No ISOLatin1Encoding array likely means ROM based fonts
                   36685: # on your printer are incomplete. Type 1 fonts with a full Latin1 character
                   36686: # set appeared sometime after Version 50.0.
                   36687: #
                   36688: 
                   36689: Latin1() {
                   36690:        if [ "$DOWNLOADVECTOR" = TRUE ]; then
                   36691:                cat <<-'//End of ISOLatin1Encoding'
                   36692:                        /ISOLatin1Encoding [
                   36693:                                /.notdef
                   36694:                                /.notdef
                   36695:                                /.notdef
                   36696:                                /.notdef
                   36697:                                /.notdef
                   36698:                                /.notdef
                   36699:                                /.notdef
                   36700:                                /.notdef
                   36701:                                /.notdef
                   36702:                                /.notdef
                   36703:                                /.notdef
                   36704:                                /.notdef
                   36705:                                /.notdef
                   36706:                                /.notdef
                   36707:                                /.notdef
                   36708:                                /.notdef
                   36709:                                /.notdef
                   36710:                                /.notdef
                   36711:                                /.notdef
                   36712:                                /.notdef
                   36713:                                /.notdef
                   36714:                                /.notdef
                   36715:                                /.notdef
                   36716:                                /.notdef
                   36717:                                /.notdef
                   36718:                                /.notdef
                   36719:                                /.notdef
                   36720:                                /.notdef
                   36721:                                /.notdef
                   36722:                                /.notdef
                   36723:                                /.notdef
                   36724:                                /.notdef
                   36725:                                /space
                   36726:                                /exclam
                   36727:                                /quotedbl
                   36728:                                /numbersign
                   36729:                                /dollar
                   36730:                                /percent
                   36731:                                /ampersand
                   36732:                                /quoteright
                   36733:                                /parenleft
                   36734:                                /parenright
                   36735:                                /asterisk
                   36736:                                /plus
                   36737:                                /comma
                   36738:                                /minus
                   36739:                                /period
                   36740:                                /slash
                   36741:                                /zero
                   36742:                                /one
                   36743:                                /two
                   36744:                                /three
                   36745:                                /four
                   36746:                                /five
                   36747:                                /six
                   36748:                                /seven
                   36749:                                /eight
                   36750:                                /nine
                   36751:                                /colon
                   36752:                                /semicolon
                   36753:                                /less
                   36754:                                /equal
                   36755:                                /greater
                   36756:                                /question
                   36757:                                /at
                   36758:                                /A
                   36759:                                /B
                   36760:                                /C
                   36761:                                /D
                   36762:                                /E
                   36763:                                /F
                   36764:                                /G
                   36765:                                /H
                   36766:                                /I
                   36767:                                /J
                   36768:                                /K
                   36769:                                /L
                   36770:                                /M
                   36771:                                /N
                   36772:                                /O
                   36773:                                /P
                   36774:                                /Q
                   36775:                                /R
                   36776:                                /S
                   36777:                                /T
                   36778:                                /U
                   36779:                                /V
                   36780:                                /W
                   36781:                                /X
                   36782:                                /Y
                   36783:                                /Z
                   36784:                                /bracketleft
                   36785:                                /backslash
                   36786:                                /bracketright
                   36787:                                /asciicircum
                   36788:                                /underscore
                   36789:                                /quoteleft
                   36790:                                /a
                   36791:                                /b
                   36792:                                /c
                   36793:                                /d
                   36794:                                /e
                   36795:                                /f
                   36796:                                /g
                   36797:                                /h
                   36798:                                /i
                   36799:                                /j
                   36800:                                /k
                   36801:                                /l
                   36802:                                /m
                   36803:                                /n
                   36804:                                /o
                   36805:                                /p
                   36806:                                /q
                   36807:                                /r
                   36808:                                /s
                   36809:                                /t
                   36810:                                /u
                   36811:                                /v
                   36812:                                /w
                   36813:                                /x
                   36814:                                /y
                   36815:                                /z
                   36816:                                /braceleft
                   36817:                                /bar
                   36818:                                /braceright
                   36819:                                /asciitilde
                   36820:                                /.notdef
                   36821:                                /.notdef
                   36822:                                /.notdef
                   36823:                                /.notdef
                   36824:                                /.notdef
                   36825:                                /.notdef
                   36826:                                /.notdef
                   36827:                                /.notdef
                   36828:                                /.notdef
                   36829:                                /.notdef
                   36830:                                /.notdef
                   36831:                                /.notdef
                   36832:                                /.notdef
                   36833:                                /.notdef
                   36834:                                /.notdef
                   36835:                                /.notdef
                   36836:                                /.notdef
                   36837:                                /dotlessi
                   36838:                                /grave
                   36839:                                /acute
                   36840:                                /circumflex
                   36841:                                /tilde
                   36842:                                /macron
                   36843:                                /breve
                   36844:                                /dotaccent
                   36845:                                /dieresis
                   36846:                                /.notdef
                   36847:                                /ring
                   36848:                                /cedilla
                   36849:                                /.notdef
                   36850:                                /hungarumlaut
                   36851:                                /ogonek
                   36852:                                /caron
                   36853:                                /space
                   36854:                                /exclamdown
                   36855:                                /cent
                   36856:                                /sterling
                   36857:                                /currency
                   36858:                                /yen
                   36859:                                /brokenbar
                   36860:                                /section
                   36861:                                /dieresis
                   36862:                                /copyright
                   36863:                                /ordfeminine
                   36864:                                /guillemotleft
                   36865:                                /logicalnot
                   36866:                                /hyphen
                   36867:                                /registered
                   36868:                                /macron
                   36869:                                /degree
                   36870:                                /plusminus
                   36871:                                /twosuperior
                   36872:                                /threesuperior
                   36873:                                /acute
                   36874:                                /mu
                   36875:                                /paragraph
                   36876:                                /periodcentered
                   36877:                                /cedilla
                   36878:                                /onesuperior
                   36879:                                /ordmasculine
                   36880:                                /guillemotright
                   36881:                                /onequarter
                   36882:                                /onehalf
                   36883:                                /threequarters
                   36884:                                /questiondown
                   36885:                                /Agrave
                   36886:                                /Aacute
                   36887:                                /Acircumflex
                   36888:                                /Atilde
                   36889:                                /Adieresis
                   36890:                                /Aring
                   36891:                                /AE
                   36892:                                /Ccedilla
                   36893:                                /Egrave
                   36894:                                /Eacute
                   36895:                                /Ecircumflex
                   36896:                                /Edieresis
                   36897:                                /Igrave
                   36898:                                /Iacute
                   36899:                                /Icircumflex
                   36900:                                /Idieresis
                   36901:                                /Eth
                   36902:                                /Ntilde
                   36903:                                /Ograve
                   36904:                                /Oacute
                   36905:                                /Ocircumflex
                   36906:                                /Otilde
                   36907:                                /Odieresis
                   36908:                                /multiply
                   36909:                                /Oslash
                   36910:                                /Ugrave
                   36911:                                /Uacute
                   36912:                                /Ucircumflex
                   36913:                                /Udieresis
                   36914:                                /Yacute
                   36915:                                /Thorn
                   36916:                                /germandbls
                   36917:                                /agrave
                   36918:                                /aacute
                   36919:                                /acircumflex
                   36920:                                /atilde
                   36921:                                /adieresis
                   36922:                                /aring
                   36923:                                /ae
                   36924:                                /ccedilla
                   36925:                                /egrave
                   36926:                                /eacute
                   36927:                                /ecircumflex
                   36928:                                /edieresis
                   36929:                                /igrave
                   36930:                                /iacute
                   36931:                                /icircumflex
                   36932:                                /idieresis
                   36933:                                /eth
                   36934:                                /ntilde
                   36935:                                /ograve
                   36936:                                /oacute
                   36937:                                /ocircumflex
                   36938:                                /otilde
                   36939:                                /odieresis
                   36940:                                /divide
                   36941:                                /oslash
                   36942:                                /ugrave
                   36943:                                /uacute
                   36944:                                /ucircumflex
                   36945:                                /udieresis
                   36946:                                /yacute
                   36947:                                /thorn
                   36948:                                /ydieresis
                   36949:                        ] def
                   36950:                //End of ISOLatin1Encoding
                   36951:        fi
                   36952: 
                   36953:        echo "ISOLatin1Encoding /$1 ReEncode"
                   36954: }
                   36955: 
                   36956: #
                   36957: # Generating functions output PostScript programs that build font width
                   36958: # tables or a typesetter description file. Send the program to a printer
                   36959: # and the complete table will come back on the serial port. All write on
                   36960: # stdout and assume the prologue and other required PostScript files are
                   36961: # all available.
                   36962: #
                   36963: 
                   36964: Proportional() {
                   36965:        echo "/unitwidth $UNITWIDTH def"
                   36966:        echo "/resolution $RESOLUTION def"
                   36967:        echo "/octalescapes $OCTALESCAPES def"
                   36968:        echo "/charset ["
                   36969:                # Get <>_ and | from S. Use accents for ascii ^ and ~.
                   36970:                StandardCharset | awk '
                   36971:                        $1 == "(<)" && $2 == "/less" {$1 = "(---)"}
                   36972:                        $1 == "(>)" && $2 == "/greater" {$1 = "(---)"}
                   36973:                        $1 == "(_)" && $2 == "/underscore" {$1 = "(---)"}
                   36974:                        $1 == "(|)" && $2 == "/bar" {$1 = "(---)"}
                   36975:                        $1 == "(^)" && $2 == "/asciicircum" {
                   36976:                                printf "(^)\t/circumflex\n"
                   36977:                                $1 = "(---)"
                   36978:                        }
                   36979:                        $1 == "(~)" && $2 == "/asciitilde" {
                   36980:                                printf "(~)\t/tilde\n"
                   36981:                                $1 = "(---)"
                   36982:                        }
                   36983:                        {printf "%s\t%s\n", $1, $2}
                   36984:                '
                   36985:        echo "] def"
                   36986: 
                   36987:        Latin1 $2
                   36988:        echo "/$2 SelectFont"
                   36989:        echo "(opO) SetAscender"
                   36990: 
                   36991:        echo "(name $1\\\\n) Print"
                   36992:        echo "(fontname $2\\\\n) Print"
                   36993:        echo "/$1 NamedInPrologue"
                   36994:        echo "(spacewidth ) Print 32 GetWidth Print (\n) Print"
                   36995:        echo "(charset\\\\n) Print"
                   36996:        echo "BuildFontCharset"
                   36997: }
                   36998: 
                   36999: FixedWidth() {
                   37000:        echo "/unitwidth $UNITWIDTH def"
                   37001:        echo "/resolution $RESOLUTION def"
                   37002:        echo "/octalescapes $OCTALESCAPES def"
                   37003:        echo "/charset ["
                   37004:                StandardCharset
                   37005:        echo "] def"
                   37006: 
                   37007:        Latin1 $2
                   37008:        echo "/$2 SelectFont"
                   37009:        echo "(opO) SetAscender"
                   37010: 
                   37011:        echo "(name $1\\\\n) Print"
                   37012:        echo "(fontname $2\\\\n) Print"
                   37013:        echo "/$1 NamedInPrologue"
                   37014:        echo "(spacewidth ) Print 32 GetWidth Print (\n) Print"
                   37015:        echo "(charset\\\\n) Print"
                   37016:        echo "BuildFontCharset"
                   37017: }
                   37018: 
                   37019: Dingbats() {
                   37020:        echo "/unitwidth $UNITWIDTH def"
                   37021:        echo "/resolution $RESOLUTION def"
                   37022:        echo "/octalescapes $OCTALESCAPES def"
                   37023:        echo "/charset ["
                   37024:                StandardCharset | awk '$1 != "(---)" && $2 ~ /^\/[a-zA-Z]/ {
                   37025:                        printf "%s\tISOLatin1Encoding %s GetCode\n", $1, $2
                   37026:                }'
                   37027:        echo "] def"
                   37028: 
                   37029:        echo "/$2 SelectFont"
                   37030:        echo "(   ) SetAscender"
                   37031: 
                   37032:        echo "(name $1\\\\n) Print"
                   37033:        echo "(fontname $2\\\\n) Print"
                   37034:        echo "/$1 NamedInPrologue"
                   37035:        echo "(charset\\\\n) Print"
                   37036:        echo "BuildFontCharset"
                   37037: }
                   37038: 
                   37039: Greek() {
                   37040:        echo "/unitwidth $UNITWIDTH def"
                   37041:        echo "/resolution $RESOLUTION def"
                   37042:        echo "/charset ["
                   37043:                SymbolCharset | awk '$1 ~ /\(\*[a-zA-Z]\)/'
                   37044:        echo "] def"
                   37045: 
                   37046:        echo "/$2 SelectFont"
                   37047:        echo "(orO) SetAscender"
                   37048: 
                   37049:        echo "(name $1\\\\n) Print"
                   37050:        echo "(fontname $2\\\\n) Print"
                   37051:        echo "/$1 NamedInPrologue"
                   37052:        echo "(spacewidth ) Print 32 GetWidth Print (\n) Print"
                   37053:        echo "(charset\\\\n) Print"
                   37054:        echo "BuildFontCharset"
                   37055: }
                   37056: 
                   37057: Symbol() {
                   37058:        echo "/unitwidth $UNITWIDTH def"
                   37059:        echo "/resolution $RESOLUTION def"
                   37060:        echo "/charset ["
                   37061:                SymbolCharset
                   37062:        echo "] def"
                   37063: 
                   37064:        echo "ChangeMetrics"
                   37065:        echo "/S SelectFont"
                   37066:        echo "(orO) SetAscender"
                   37067: 
                   37068:        echo "(name $1\\\\n) Print"
                   37069:        echo "(fontname $2\\\\n) Print"
                   37070:        echo "/$1 NamedInPrologue"
                   37071:        echo "(special\\\\n) Print"
                   37072:        echo "(charset\\\\n) Print"
                   37073:        echo "BuildFontCharset"
                   37074: }
                   37075: 
                   37076: Special() {
                   37077:        echo "/unitwidth $UNITWIDTH def"
                   37078:        echo "/resolution $RESOLUTION def"
                   37079:        echo "/charset ["
                   37080:                SpecialCharset
                   37081:        echo "] def"
                   37082: 
                   37083:        echo "ChangeMetrics"
                   37084:        echo "/S1 SelectFont"
                   37085: 
                   37086:        echo "(# Times-Roman special font\\\\n) Print"
                   37087:        echo "(name $1\\\\n) Print"
                   37088:        echo "(fontname $2\\\\n) Print"
                   37089:        echo "/$1 NamedInPrologue"
                   37090:        echo "(special\\\\n) Print"
                   37091:        echo "(charset\\\\n) Print"
                   37092:        echo "BuildFontCharset"
                   37093: }
                   37094: 
                   37095: #
                   37096: # The DESC file doesn't have to be built on a printer. It's only here for
                   37097: # consistency.
                   37098: #
                   37099: 
                   37100: Description() {
                   37101:        echo "/charset ["       # awk - so the stack doesn't overflow
                   37102:                StandardCharset | awk '{print $1}'
                   37103:                SymbolCharset | awk '{print $1}'
                   37104:                SpecialCharset | awk '{print $1}'
                   37105:        echo "] def"
                   37106: 
                   37107:        cat <<-//DESC
                   37108:                (#Device Description - Latin1 character set
                   37109: 
                   37110:                PDL PostScript
                   37111:                Encoding Latin1
                   37112: 
                   37113:                fonts 10 R I B BI CW H HI HB S1 S
                   37114:                sizes 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
                   37115:                23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 40 42 44 46
                   37116:                48 50 52 54 56 58 60 64 68 72 78 84 90 96 100 105 110 115
                   37117:                120 125 130 135 140 145 150 155 160 0
                   37118:                res $RESOLUTION
                   37119:                hor 1
                   37120:                vert 1
                   37121:                unitwidth $UNITWIDTH
                   37122: 
                   37123:                ) Print
                   37124:        //DESC
                   37125:        echo "(charset\\\\n) Print"
                   37126:        echo "BuildDescCharset"
                   37127:        echo "(\\\\n) Print"
                   37128: }
                   37129: 
                   37130: 0707070014231122351006400057030057030000010447600522632546000002600000006137post.src/devLatin1/HMname H
                   37131: fontname Helvetica
                   37132: named in prologue
                   37133: spacewidth 28
                   37134: charset
                   37135: !      28      2       33
                   37136: "      36      2       34
                   37137: dq     "
                   37138: #      56      2       35
                   37139: $      56      3       36
                   37140: %      89      2       37
                   37141: &      67      2       38
                   37142: '      22      2       39
                   37143: (      33      3       40
                   37144: )      33      3       41
                   37145: *      39      2       42
                   37146: +      58      0       43
                   37147: ,      28      1       44
                   37148: -      33      0       173
                   37149: \0255  "
                   37150: .      28      0       46
                   37151: /      28      2       47
                   37152: 0      56      2       48
                   37153: 1      56      2       49
                   37154: 2      56      2       50
                   37155: 3      56      2       51
                   37156: 4      56      2       52
                   37157: 5      56      2       53
                   37158: 6      56      2       54
                   37159: 7      56      2       55
                   37160: 8      56      2       56
                   37161: 9      56      2       57
                   37162: :      28      0       58
                   37163: ;      28      1       59
                   37164: ---    58      0       60
                   37165: =      58      0       61
                   37166: ---    58      0       62
                   37167: ?      56      2       63
                   37168: @      102     3       64
                   37169: A      67      2       65
                   37170: B      67      2       66
                   37171: C      72      2       67
                   37172: D      72      2       68
                   37173: E      67      2       69
                   37174: F      61      2       70
                   37175: G      78      2       71
                   37176: H      72      2       72
                   37177: I      28      2       73
                   37178: J      50      2       74
                   37179: K      67      2       75
                   37180: L      56      2       76
                   37181: M      83      2       77
                   37182: N      72      2       78
                   37183: O      78      2       79
                   37184: P      67      2       80
                   37185: Q      78      2       81
                   37186: R      72      2       82
                   37187: S      67      2       83
                   37188: T      61      2       84
                   37189: U      72      2       85
                   37190: V      67      2       86
                   37191: W      94      2       87
                   37192: X      67      2       88
                   37193: Y      67      2       89
                   37194: Z      61      2       90
                   37195: [      28      3       91
                   37196: \      28      2       92
                   37197: bs     "
                   37198: ]      28      3       93
                   37199: ^      33      2       147
                   37200: ---    47      2       94
                   37201: ---    56      1       95
                   37202: `      22      2       96
                   37203: a      56      0       97
                   37204: b      56      2       98
                   37205: c      50      0       99
                   37206: d      56      2       100
                   37207: e      56      0       101
                   37208: f      28      2       102
                   37209: g      56      1       103
                   37210: h      56      2       104
                   37211: i      22      2       105
                   37212: j      22      3       106
                   37213: k      50      2       107
                   37214: l      22      2       108
                   37215: m      83      0       109
                   37216: n      56      0       110
                   37217: o      56      0       111
                   37218: p      56      1       112
                   37219: q      56      1       113
                   37220: r      33      0       114
                   37221: s      50      0       115
                   37222: t      28      2       116
                   37223: u      56      0       117
                   37224: v      50      0       118
                   37225: w      72      0       119
                   37226: x      50      0       120
                   37227: y      50      1       121
                   37228: z      50      0       122
                   37229: {      33      3       123
                   37230: ---    26      3       124
                   37231: }      33      3       125
                   37232: ~      33      2       148
                   37233: ---    58      0       126
                   37234: \`     33      2       145
                   37235: ga     "
                   37236: !!     33      1       161
                   37237: \0241  "
                   37238: c|     56      3       162
                   37239: \0242  "
                   37240: ct     "
                   37241: L-     56      2       163
                   37242: \0243  "
                   37243: ps     "
                   37244: xo     56      0       164
                   37245: \0244  "
                   37246: cr     "
                   37247: Y-     56      2       165
                   37248: \0245  "
                   37249: yn     "
                   37250: ||     26      3       166
                   37251: \0246  "
                   37252: so     56      3       167
                   37253: \0247  "
                   37254: sc     "
                   37255: ""     33      2       168
                   37256: \0250  "
                   37257: :a     "
                   37258: co     74      2       169
                   37259: \0251  "
                   37260: a_     37      2       170
                   37261: \0252  "
                   37262: <<     56      0       171
                   37263: \0253  "
                   37264: -,     58      0       172
                   37265: \0254  "
                   37266: hy     33      0       173
                   37267: \0255  "
                   37268: --     58      0       45
                   37269: ro     74      2       174
                   37270: \0256  "
                   37271: rg     "
                   37272: -^     33      2       175
                   37273: \0257  "
                   37274: -a     "
                   37275: 0^     40      2       176
                   37276: \0260  "
                   37277: +-     58      2       177
                   37278: \0261  "
                   37279: 2^     33      2       178
                   37280: \0262  "
                   37281: 3^     33      2       179
                   37282: \0263  "
                   37283: \'     33      2       180
                   37284: \0264  "
                   37285: aa     "
                   37286: /u     56      1       181
                   37287: \0265  "
                   37288: P!     54      3       182
                   37289: \0266  "
                   37290: pg     "
                   37291: .^     28      0       183
                   37292: \0267  "
                   37293: ,,     33      1       184
                   37294: \0270  "
                   37295: ,a     "
                   37296: 1^     33      2       185
                   37297: \0271  "
                   37298: o_     37      2       186
                   37299: \0272  "
                   37300: >>     56      0       187
                   37301: \0273  "
                   37302: 14     83      2       188
                   37303: \0274  "
                   37304: 12     83      2       189
                   37305: \0275  "
                   37306: 34     83      2       190
                   37307: \0276  "
                   37308: ??     61      1       191
                   37309: \0277  "
                   37310: A`     67      2       192
                   37311: \0300  "
                   37312: A'     67      2       193
                   37313: \0301  "
                   37314: A^     67      2       194
                   37315: \0302  "
                   37316: A~     67      2       195
                   37317: \0303  "
                   37318: A"     67      2       196
                   37319: \0304  "
                   37320: A*     67      2       197
                   37321: \0305  "
                   37322: AE     100     2       198
                   37323: \0306  "
                   37324: C,     72      3       199
                   37325: \0307  "
                   37326: E`     67      2       200
                   37327: \0310  "
                   37328: E'     67      2       201
                   37329: \0311  "
                   37330: E^     67      2       202
                   37331: \0312  "
                   37332: E"     67      2       203
                   37333: \0313  "
                   37334: I`     28      2       204
                   37335: \0314  "
                   37336: I'     28      2       205
                   37337: \0315  "
                   37338: I^     28      2       206
                   37339: \0316  "
                   37340: I"     28      2       207
                   37341: \0317  "
                   37342: D-     72      2       208
                   37343: \0320  "
                   37344: N~     72      2       209
                   37345: \0321  "
                   37346: O`     78      2       210
                   37347: \0322  "
                   37348: O'     78      2       211
                   37349: \0323  "
                   37350: O^     78      2       212
                   37351: \0324  "
                   37352: O~     78      2       213
                   37353: \0325  "
                   37354: O"     78      2       214
                   37355: \0326  "
                   37356: xx     58      0       215
                   37357: \0327  "
                   37358: O/     78      2       216
                   37359: \0330  "
                   37360: U`     72      2       217
                   37361: \0331  "
                   37362: U'     72      2       218
                   37363: \0332  "
                   37364: U^     72      2       219
                   37365: \0333  "
                   37366: U"     72      2       220
                   37367: \0334  "
                   37368: Y'     67      2       221
                   37369: \0335  "
                   37370: TH     67      2       222
                   37371: \0336  "
                   37372: ss     61      2       223
                   37373: \0337  "
                   37374: a`     56      2       224
                   37375: \0340  "
                   37376: a'     56      2       225
                   37377: \0341  "
                   37378: a^     56      2       226
                   37379: \0342  "
                   37380: a~     56      2       227
                   37381: \0343  "
                   37382: a"     56      2       228
                   37383: \0344  "
                   37384: a*     56      2       229
                   37385: \0345  "
                   37386: ae     89      0       230
                   37387: \0346  "
                   37388: c,     50      1       231
                   37389: \0347  "
                   37390: e`     56      2       232
                   37391: \0350  "
                   37392: e'     56      2       233
                   37393: \0351  "
                   37394: e^     56      2       234
                   37395: \0352  "
                   37396: e"     56      2       235
                   37397: \0353  "
                   37398: i`     28      2       236
                   37399: \0354  "
                   37400: i'     28      2       237
                   37401: \0355  "
                   37402: i^     28      2       238
                   37403: \0356  "
                   37404: i"     28      2       239
                   37405: \0357  "
                   37406: d-     56      2       240
                   37407: \0360  "
                   37408: n~     56      2       241
                   37409: \0361  "
                   37410: o`     56      2       242
                   37411: \0362  "
                   37412: o'     56      2       243
                   37413: \0363  "
                   37414: o^     56      2       244
                   37415: \0364  "
                   37416: o~     56      2       245
                   37417: \0365  "
                   37418: o"     56      2       246
                   37419: \0366  "
                   37420: -:     58      0       247
                   37421: \0367  "
                   37422: o/     61      0       248
                   37423: \0370  "
                   37424: u`     56      2       249
                   37425: \0371  "
                   37426: u'     56      2       250
                   37427: \0372  "
                   37428: u^     56      2       251
                   37429: \0373  "
                   37430: u"     56      2       252
                   37431: \0374  "
                   37432: y'     50      3       253
                   37433: \0375  "
                   37434: th     56      3       254
                   37435: \0376  "
                   37436: y"     50      3       255
                   37437: \0377  "
                   37438: ^a     33      2       147
                   37439: ~a     33      2       148
                   37440: Ua     33      2       150
                   37441: .a     33      2       151
                   37442: oa     33      2       154
                   37443: "a     33      2       157
                   37444: Ca     33      1       158
                   37445: va     33      2       159
                   37446: 0707070014230547600407550057030057030000021525670522633100200002100000000000post.src/psfiles0707070014230550011006400057030057030000011527600522633100200003400000001421post.src/psfiles/psfiles.mkMAKE=/bin/make
                   37447: MAKEFILE=psfiles.mk
                   37448: 
                   37449: SYSTEM=V9
                   37450: VERSION=3.3.2
                   37451: 
                   37452: GROUP=bin
                   37453: OWNER=bin
                   37454: 
                   37455: POSTLIB=/usr/lib/postscript
                   37456: 
                   37457: all :
                   37458: 
                   37459: install :
                   37460:        @if [ ! -d "$(POSTLIB)" ]; then \
                   37461:            mkdir $(POSTLIB); \
                   37462:            chmod 755 $(POSTLIB); \
                   37463:            chgrp $(GROUP) $(POSTLIB); \
                   37464:            chown $(OWNER) $(POSTLIB); \
                   37465:        fi
                   37466:        cp *.ps ps.* $(POSTLIB)
                   37467:        @for i in *.ps ps.*; do \
                   37468:            chmod 644 $(POSTLIB)/$$i; \
                   37469:            chgrp $(GROUP) $(POSTLIB)/$$i; \
                   37470:            chown $(OWNER) $(POSTLIB)/$$i; \
                   37471:        done
                   37472: 
                   37473: clean :
                   37474: 
                   37475: clobber : clean
                   37476: 
                   37477: changes :
                   37478:        @trap "" 1 2 3 15; \
                   37479:        sed \
                   37480:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
                   37481:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
                   37482:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
                   37483:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
                   37484:            -e "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" \
                   37485:        $(MAKEFILE) >XXX.mk; \
                   37486:        mv XXX.mk $(MAKEFILE)
                   37487: 
                   37488: 0707070014230547621006440057030057030000011527060522627502200003500000000540post.src/psfiles/ps.requests%
                   37489: % Keywords begin with an @ in the first column. The value follows on the next
                   37490: % line and includes everything up to next keyword line, except for comments
                   37491: % which are lines that begin with % in the first column.
                   37492: %
                   37493: 
                   37494: @manualfeed
                   37495:        statusdict begin
                   37496:                /manualfeedtimeout 300 def
                   37497:                /manualfeed true def
                   37498:        end
                   37499: 
                   37500: @ledgertray
                   37501:        statusdict begin
                   37502:                ledgertray
                   37503:        end
                   37504: 0707070014230547631006440057030057030000011527100522627502200003200000013654post.src/psfiles/forms.ps%
                   37505: % Procedures that let you print any number of pages on each sheet of paper. It's
                   37506: % far from perfect and won't handle everything (eg. it's not recursive), but should
                   37507: % be good enough for now. Assumes the default page coordinate system has been set
                   37508: % up before setupforms is called. lastpage makes certain the last page is printed,
                   37509: % and should be called immediately after the %%Trailer comment.
                   37510: %
                   37511: % Three lines of code needed for page image clipping have been commented out for
                   37512: % now. It works, but can really slow things down on some versions of PostScript.
                   37513: % Uncomment them if you want to clip pages.
                   37514: %
                   37515: 
                   37516: /setupforms {
                   37517:     /formsperpage exch def
                   37518: 
                   37519:     /currentform 0 def
                   37520:     /slop 5 def
                   37521:     /min {2 copy gt {exch} if pop} def
                   37522: 
                   37523: %
                   37524: % Save the current environment so the real showpage can be restored when we're all
                   37525: % done. Occasionally helps when a banner page is included with the job.
                   37526: %
                   37527: 
                   37528:     /saveobj save def
                   37529: 
                   37530: %
                   37531: % Number of rows and columns we'll need - may exchange them later.
                   37532: %
                   37533: 
                   37534:     /columns formsperpage sqrt ceiling cvi def
                   37535:     /rows formsperpage columns div ceiling cvi def
                   37536: 
                   37537: %
                   37538: % Slop leaves a little room around the edge so page images can be outlined and have
                   37539: % the borders show up. Distance is in default coordinates, so we need to figure out
                   37540: % how it maps into user coordinates.
                   37541: %
                   37542: 
                   37543:     6 array defaultmatrix
                   37544:     6 array currentmatrix
                   37545:     6 array invertmatrix
                   37546:     6 array concatmatrix
                   37547:     /tempmatrix exch def
                   37548: 
                   37549:     0 slop tempmatrix dtransform dup mul exch dup mul add sqrt
                   37550:     /slop exch def
                   37551: 
                   37552: %
                   37553: % Determine how big the image area is, using the clipping path bounding box minus
                   37554: % a little and leave the coordinates of the lower left corner of the clipping path
                   37555: % on the stack. Also temporarily set the size of each page (ie. formheight and
                   37556: % formwidth) from the clipping path - just in case old software uses this stuff.
                   37557: % Only works for coordinate systems that have been rotated by a multiple of 90
                   37558: % degrees.
                   37559: %
                   37560: 
                   37561:     newpath clippath pathbbox
                   37562:     2 index sub dup /formheight exch def slop 2 mul sub /pageheight exch def
                   37563:     2 index sub dup /formwidth exch def slop 2 mul sub /pagewidth exch def
                   37564: 
                   37565: %
                   37566: % New translators all store the size of each page in default coordinates in the
                   37567: % pagebbox array and it can be different than the size determined by the clipping
                   37568: % path. If we can find pagebbox use it to set the real dimensions of each page.
                   37569: % Leaves the coordinates of the lower left corner on the stack, (either from
                   37570: % pagebbox or clippath) so four numbers are there when we're done.
                   37571: %
                   37572: 
                   37573:     userdict /gotpagebbox known userdict /pagebbox known and {
                   37574:        newpath
                   37575:        pagebbox 0 get pagebbox 1 get tempmatrix transform moveto
                   37576:        pagebbox 0 get pagebbox 3 get tempmatrix transform lineto
                   37577:        pagebbox 2 get pagebbox 3 get tempmatrix transform lineto
                   37578:        pagebbox 2 get pagebbox 1 get tempmatrix transform lineto
                   37579:        closepath pathbbox
                   37580:        2 index sub /formheight exch def
                   37581:        2 index sub /formwidth exch def
                   37582:     } {2 copy} ifelse
                   37583: 
                   37584: %
                   37585: % Top two numbers are the displacement from the job's origin to the lower left
                   37586: % corner of each page image when we finish setting up the new coordinate system.
                   37587: %
                   37588: 
                   37589:     /ycorner exch def
                   37590:     /xcorner exch def
                   37591: 
                   37592: %
                   37593: % The two numbers left on the stack are the coordinates of the lower left corner
                   37594: % of the clipping path. Go there and then up a bit so page images can be outlined.
                   37595: %
                   37596: 
                   37597:     translate
                   37598:     slop slop translate
                   37599: 
                   37600: %
                   37601: % If the page is wider than high we may be able to do better if we exchange rows
                   37602: % and columns. Won't make a difference in the current orientation or if rows and
                   37603: % columns are the same.
                   37604: %
                   37605: 
                   37606:     pagewidth pageheight gt {
                   37607:        rows columns /rows exch def /columns exch def
                   37608:     } if
                   37609: 
                   37610: %
                   37611: % Find the orientation and scaling that makes things as large as possible. More
                   37612: % than what's really needed. First calculation essentially finds the minimum of
                   37613: % 1/rows and 1/columns.
                   37614: %
                   37615: 
                   37616:     pagewidth formwidth columns mul div pageheight formheight rows mul div min
                   37617:     pageheight formwidth columns mul div pagewidth formheight rows mul div min
                   37618: 
                   37619:     2 copy lt {
                   37620:        rotation 1 eq {
                   37621:            landscape {
                   37622:                0 pageheight translate
                   37623:                -90 rotate
                   37624:            }{
                   37625:                pagewidth 0 translate
                   37626:                90 rotate
                   37627:            } ifelse
                   37628:        }{
                   37629:            landscape {
                   37630:                pagewidth 0 translate
                   37631:                90 rotate
                   37632:            }{
                   37633:                0 pageheight translate
                   37634:                -90 rotate
                   37635:            } ifelse
                   37636:        } ifelse
                   37637:        pagewidth pageheight /pagewidth exch def /pageheight exch def
                   37638:        exch
                   37639:     } if
                   37640: 
                   37641: %
                   37642: % Second number from the top is the best choice. Scale so everything will fit on
                   37643: % the current page, go back to the original origin, and then get ready for the
                   37644: % first page - which goes in the upper left corner.
                   37645: %
                   37646: 
                   37647:     pop dup dup scale
                   37648:     xcorner neg ycorner neg translate
                   37649:     0 rows 1 sub formheight mul translate
                   37650: 
                   37651: %
                   37652: % Try to center everything on the page - scaling we used is on top of the stack.
                   37653: %
                   37654: 
                   37655:     dup pagewidth exch div formwidth columns mul sub 2 div
                   37656:     exch pageheight exch div formheight rows mul sub 2 div translate
                   37657: 
                   37658: %
                   37659: % Redefine showpage.
                   37660: %
                   37661: 
                   37662:     /!PreForms~showpage~ /showpage load def            % save current showpage
                   37663: 
                   37664:     /showpage {
                   37665:        saveobj restore
                   37666: %      initclip
                   37667:        formsperpage 1 gt {
                   37668:            gsave .1 setlinewidth outlineform stroke grestore
                   37669:        } if
                   37670:        formwidth 0 translate
                   37671:        /currentform currentform 1 add def
                   37672:        currentform columns mod 0 eq {
                   37673:            columns formwidth mul neg formheight neg translate
                   37674:        } if
                   37675:        currentform formsperpage mod 0 eq {
                   37676:            gsave !PreForms~showpage~ grestore
                   37677:            currentform columns mod formwidth mul neg
                   37678:            formsperpage columns idiv formheight mul translate
                   37679:            /currentform 0 def
                   37680:        } if
                   37681: %      outlineform clip newpath
                   37682:        /saveobj save def
                   37683:     } bind def
                   37684: 
                   37685:     /outlineform {
                   37686:        newpath
                   37687:        xcorner ycorner moveto
                   37688:        formwidth 0 rlineto
                   37689:        0 formheight rlineto
                   37690:        formwidth neg 0 rlineto
                   37691:        closepath
                   37692:     } bind def
                   37693: 
                   37694:     /lastpage {
                   37695:        formsperpage 1 gt {
                   37696:            currentform 0 ne {
                   37697:                /saveobj save def
                   37698:                0 1 formsperpage currentform sub formsperpage mod {
                   37699:                    pop showpage
                   37700:                } for
                   37701:                saveobj restore
                   37702:            } if
                   37703:            saveobj restore
                   37704:            saveobj restore
                   37705:        } if
                   37706:     } def
                   37707: 
                   37708: %
                   37709: % Clip the first page image and save the environment we just set up, including
                   37710: % the redefined showpage.
                   37711: %
                   37712: 
                   37713: %   outlineform clip
                   37714:     newpath
                   37715:     /saveobj save def
                   37716: } def
                   37717: 0707070014230547641006440057030057030000011527200522627502200003500000005107post.src/psfiles/baseline.ps%
                   37718: % Stuff used to draw or set text along a baseline specified by parametric equations
                   37719: % for x and y.
                   37720: %
                   37721: 
                   37722: /left -1 def
                   37723: /center 0 def
                   37724: /right 1 def
                   37725: 
                   37726: /baselinedict 50 dict def
                   37727: 
                   37728: /newbaseline {
                   37729:        baselinedict begin
                   37730:                /g' exch bind def
                   37731:                /f' exch bind def
                   37732:                /g  exch bind def
                   37733:                /f  exch bind def
                   37734: 
                   37735:                counttomark 2 eq {/hoffset exch def} if
                   37736:                /res exch def
                   37737: 
                   37738:                /t 0 def
                   37739:                /s 0 def
                   37740:                /voffset false def
                   37741:                cleartomark
                   37742:        end
                   37743: } bind def
                   37744: 
                   37745: /drawfunnytext {
                   37746:        baselinedict begin
                   37747:                /t exch def
                   37748:                /mode exch def
                   37749:                /str exch def
                   37750: 
                   37751:                mode left eq {
                   37752:                        /leftstring emptystring def
                   37753:                        /rightstring str def
                   37754:                } if
                   37755: 
                   37756:                mode right eq {
                   37757:                        /leftstring str reversestring def
                   37758:                        /rightstring emptystring def
                   37759:                } if
                   37760: 
                   37761:                mode center eq {
                   37762:                        str splitstring
                   37763:                        /rightstring exch def
                   37764:                        /leftstring exch reversestring def
                   37765:                } if
                   37766: 
                   37767:                gsave currentpoint translate leftstring left t baselineshow grestore
                   37768:                gsave currentpoint translate rightstring right t baselineshow grestore
                   37769: 
                   37770:                /t 0 def
                   37771:                /s 0 def
                   37772:                /voffset false def
                   37773:                cleartomark
                   37774:        end
                   37775: } bind def
                   37776: 
                   37777: /setfunnytext {
                   37778:        baselinedict begin
                   37779:                /vpos exch def
                   37780:                /hpos exch def
                   37781:                /str  exch def
                   37782: 
                   37783:                voffset vpos ne {
                   37784:                        /voffset vpos def
                   37785:                        /t 0 def
                   37786:                        /s hoffset def
                   37787:                } if
                   37788: 
                   37789:                gsave
                   37790:                        hoffset voffset translate
                   37791:                        0 0 moveto
                   37792:                        /ds hpos s sub def
                   37793:                        /dt ds t f' dup mul t g' dup mul add sqrt res mul div def
                   37794:                        /s s ds add def
                   37795:                        /t t dt add def
                   37796:                        str right t baselineshow
                   37797:                grestore
                   37798:        end
                   37799: } bind def
                   37800: 
                   37801: baselinedict begin
                   37802: 
                   37803: /f  {} bind def
                   37804: /g  {pop 0} bind def
                   37805: /f' {pop 1} bind def
                   37806: /g' {pop 0} bind def
                   37807: 
                   37808: /s 0 def
                   37809: /t 0 def
                   37810: /res 72 def
                   37811: 
                   37812: /onecharstring ( ) def
                   37813: /emptystring () def
                   37814: 
                   37815: /baselineshow {
                   37816:        /t exch def
                   37817:        /mode exch def
                   37818:        /str exch def
                   37819: 
                   37820:        gsave
                   37821:                t f res mul t g res mul translate
                   37822:                0 0 moveto
                   37823:                t g' t f' atan rotate
                   37824:                {
                   37825:                        mode right eq {pop} if
                   37826:                        grestore gsave
                   37827:                        onecharstring 0 3 -1 roll put onecharstring stringwidth pop
                   37828:                        /ds exch mode mul def
                   37829:                        /dt ds t f' dup mul t g' dup mul add sqrt res mul div def
                   37830:                        /t t dt add def
                   37831:                        /s s ds add def
                   37832:                        t f res mul t g res mul translate
                   37833:                        0 0 moveto
                   37834:                        t g' t f' atan rotate
                   37835:                        mode left eq {pop} if
                   37836:                } str kshow
                   37837:        grestore
                   37838: } bind def
                   37839: 
                   37840: /reversestring {
                   37841:        /str1 exch def
                   37842: 
                   37843:        /str2 str1 length string def
                   37844:        /i 0 def
                   37845:        /n str1 length 1 sub def
                   37846: 
                   37847:        {
                   37848:                str1 n get str2 exch i exch put
                   37849:                /i i 1 add def
                   37850:                /n n 1 sub def
                   37851:                n 0 lt {exit} if
                   37852:        } loop
                   37853:        str2
                   37854: } bind def
                   37855: 
                   37856: /splitstring {
                   37857:        /str1 exch def
                   37858: 
                   37859:        /len str1 stringwidth pop def
                   37860:        /s 0 def
                   37861:        /n 0 def
                   37862:        str1 length {
                   37863:                str1 n get onecharstring exch 0 exch put
                   37864:                /s onecharstring stringwidth pop s add def
                   37865:                s len 2 div ge {exit} if
                   37866:                /n n 1 add def
                   37867:        } repeat
                   37868:        str1 0 n 1 add getinterval
                   37869:        str1 n str1 length n sub getinterval
                   37870: } bind def
                   37871: 
                   37872: end
                   37873: 0707070014230547651006440057030057030000011527160522627502200003200000002540post.src/psfiles/color.ps%
                   37874: % Color and reverse video support for dpost. A call made to setcolor with two
                   37875: % arguments implies reverse video printing.
                   37876: %
                   37877: 
                   37878: /rgb {setrgbcolor} bind def
                   37879: /hsb {sethsbcolor} bind def
                   37880: 
                   37881: /colordict 50 dict dup begin
                   37882:        /red                    { 1 0 0 } def
                   37883:        /green                  { 0 1 0 } def
                   37884:        /blue                   { 0 0 1 } def
                   37885:        /cyan                   { 0 1 1 } def
                   37886:        /magenta                { 1 0 1 } def
                   37887:        /yellow                 { 1 1 0 } def
                   37888:        /white                  { 1 1 1 } def
                   37889:        /black                  { 0 0 0 } def
                   37890: end def
                   37891: 
                   37892: /setcolor {
                   37893:        counttomark 1 eq {
                   37894:                dup colordict exch known not {pop /black} if
                   37895:                colordict exch get exec setrgbcolor
                   37896:        } if
                   37897:        counttomark 2 eq {
                   37898:                /backcolor exch def
                   37899:                /textcolor exch def
                   37900:                colordict backcolor known not colordict textcolor known not or {
                   37901:                        /backcolor colordict /black get def
                   37902:                        /textcolor colordict /white get def
                   37903:                } if
                   37904:                /backcolor colordict backcolor get def
                   37905:                /textcolor colordict textcolor get def
                   37906:                /dY1 0 def
                   37907:                /dY2 0 def
                   37908:                textcolor exec setrgbcolor
                   37909:        } if
                   37910: } bind def
                   37911: 
                   37912: /drawrvbox {
                   37913:        /x2 exch def
                   37914:        /x1 exch def
                   37915: 
                   37916:        currentpoint dup
                   37917:        /y1 exch def
                   37918:        /y2 exch def pop
                   37919: 
                   37920:        dY1 0 eq dY2 0 eq and {
                   37921:                currentfont /FontBBox get aload pop
                   37922:                currentfont /FontMatrix get dtransform /dY2 exch def pop
                   37923:                currentfont /FontMatrix get dtransform /dY1 exch def pop
                   37924:        } if
                   37925: 
                   37926:        /y1 y1 dY1 add def
                   37927:        /y2 y2 dY2 add def
                   37928: 
                   37929:        backcolor exec setrgbcolor
                   37930:        newpath
                   37931:        x1 y1 moveto
                   37932:        x2 y1 lineto
                   37933:        x2 y2 lineto
                   37934:        x1 y2 lineto
                   37935:        closepath fill
                   37936:        textcolor exec setrgbcolor
                   37937: } bind def
                   37938: 0707070014230547661006440057030057030000011527070522627502200003200000001611post.src/psfiles/shade.ps%
                   37939: % Shading support - primarily for ASCII file translators.
                   37940: %
                   37941: 
                   37942: /grays [0.98 0.9 0.75 0.6] def
                   37943: 
                   37944: /setshade {
                   37945:        /level exch def
                   37946:        level 0 le {
                   37947:                /textgray 0 def
                   37948:                /backgray 1 def
                   37949:        }{
                   37950:                /backgray level grays length gt
                   37951:                        {/textgray 1 def 0}
                   37952:                        {/textgray 0 def grays level 1 sub get}
                   37953:                ifelse def
                   37954:        } ifelse
                   37955:        textgray setgray
                   37956:        /dY1 0 def
                   37957:        /dY2 0 def
                   37958: } bind def
                   37959: 
                   37960: /drawrvbox {
                   37961:        /x2 exch charwidth mul def
                   37962:        /x1 exch charwidth mul def
                   37963: 
                   37964:        x1 x2 lt {
                   37965:                dup             % expects y on top
                   37966:                /y1 exch linespace mul def
                   37967:                /y2 y1 def
                   37968: 
                   37969:                dY1 0 eq dY2 0 eq and {
                   37970:                        currentfont /FontBBox get aload pop
                   37971:                        160 sub
                   37972:                        currentfont /FontMatrix get dtransform /dY2 exch def pop
                   37973:                        100 add
                   37974:                        currentfont /FontMatrix get dtransform /dY1 exch def pop
                   37975:                } if
                   37976: 
                   37977:                /y1 y1 dY1 add def
                   37978:                /y2 y2 dY2 add def
                   37979: 
                   37980:                backgray setgray
                   37981:                newpath
                   37982:                x1 y1 moveto
                   37983:                x2 y1 lineto
                   37984:                x2 y2 lineto
                   37985:                x1 y2 lineto
                   37986:                closepath fill
                   37987:        } if
                   37988:        textgray setgray
                   37989: } bind def
                   37990: 0707070014230547671006440057030057030000011527230522627502200003600000001267post.src/psfiles/roundpage.ps%
                   37991: % Tries to round clipping path dimensions, as stored in array pagebbox, so they
                   37992: % match one of the known sizes in the papersizes array. Lower left coordinates
                   37993: % are always set to 0.
                   37994: %
                   37995: 
                   37996: /roundpagebbox {
                   37997:     7 dict begin
                   37998:        /papersizes [8.5 inch 11 inch 14 inch 17 inch] def
                   37999: 
                   38000:        /mappapersize {
                   38001:                /val exch def
                   38002:                /slop .5 inch def
                   38003:                /diff slop def
                   38004:                /j 0 def
                   38005:                0 1 papersizes length 1 sub {
                   38006:                        /i exch def
                   38007:                        papersizes i get val sub abs
                   38008:                        dup diff le {/diff exch def /j i def} {pop} ifelse
                   38009:                } for
                   38010:                diff slop lt {papersizes j get} {val} ifelse
                   38011:        } def
                   38012: 
                   38013:        pagebbox 0 0 put
                   38014:        pagebbox 1 0 put
                   38015:        pagebbox dup 2 get mappapersize 2 exch put
                   38016:        pagebbox dup 3 get mappapersize 3 exch put
                   38017:     end
                   38018: } bind def
                   38019: 
                   38020: 0707070014230547701006440057030057030000011527240522627502200003700000001356post.src/psfiles/fatcourier.ps%
                   38021: % Fat versions of the stroked Courier and Courier-Oblique - from Johnathan Shopiro.
                   38022: % Can be selectively pulled in using the -C option that's available with all the
                   38023: % PostScript translators or permanently added to any of the prologues. Helps on
                   38024: % Linotronic typesetters, where Courier and Courier-Oblique are too light!
                   38025: %
                   38026: 
                   38027: /newdict /Courier findfont length 1 add dict def
                   38028: /Courier findfont {
                   38029:        1 index /FID ne
                   38030:                {newdict 3 1 roll put}
                   38031:                {pop pop}
                   38032:        ifelse
                   38033: } forall
                   38034: newdict /StrokeWidth 60 put
                   38035: /Courier newdict definefont pop
                   38036: 
                   38037: /newdict /Courier-Oblique findfont length 1 add dict def
                   38038: /Courier-Oblique findfont {
                   38039:        1 index /FID ne
                   38040:                {newdict 3 1 roll put}
                   38041:                {pop pop}
                   38042:        ifelse
                   38043: } forall
                   38044: newdict /StrokeWidth 60 put
                   38045: /Courier-Oblique newdict definefont pop
                   38046: 0707070014230547711006440057030057030000011527300522627502200003000000006066post.src/psfiles/aps.ps%
                   38047: % Tune things up so Linotronic output looks more like the APS-5. Pull this file
                   38048: % into dpost output using the -C option. To get the best looking output run dpost
                   38049: % with the -e2 option and use special font files that look like the APS tables but
                   38050: % have character codes (ie. the fourth column in the width tables) appropriate for
                   38051: % PostScript fonts. Widths in these tables must be for APS fonts!
                   38052: %
                   38053: % Start with fat versions of the stroked Courier and Courier-Oblique fonts - from
                   38054: % Johnathan Shopiro.
                   38055: %
                   38056: 
                   38057: /newdict /Courier findfont length dict def
                   38058: /Courier findfont {
                   38059:        1 index /FID ne
                   38060:                {newdict 3 1 roll put}
                   38061:                {pop pop}
                   38062:        ifelse
                   38063: } forall
                   38064: newdict /StrokeWidth 65 put
                   38065: /Courier newdict definefont pop
                   38066: 
                   38067: /newdict /Courier-Oblique findfont length dict def
                   38068: /Courier-Oblique findfont {
                   38069:        1 index /FID ne
                   38070:                {newdict 3 1 roll put}
                   38071:                {pop pop}
                   38072:        ifelse
                   38073: } forall
                   38074: newdict /StrokeWidth 65 put
                   38075: /Courier-Oblique newdict definefont pop
                   38076: 
                   38077: %
                   38078: % Scaled down versions of the Helvetica font family.
                   38079: %
                   38080: 
                   38081: /newdict /Helvetica findfont length dict def
                   38082: /Helvetica findfont {
                   38083:        1 index /FontMatrix eq {.922 .922 matrix scale matrix concatmatrix} if
                   38084: 
                   38085:        1 index /FID ne
                   38086:                {newdict 3 1 roll put}
                   38087:                {pop pop}
                   38088:        ifelse
                   38089: } forall
                   38090: /Helvetica newdict definefont pop
                   38091: 
                   38092: /newdict /Helvetica-Oblique findfont length dict def
                   38093: /Helvetica-Oblique findfont {
                   38094:        1 index /FontMatrix eq {.922 .922 matrix scale matrix concatmatrix} if
                   38095: 
                   38096:        1 index /FID ne
                   38097:                {newdict 3 1 roll put}
                   38098:                {pop pop}
                   38099:        ifelse
                   38100: } forall
                   38101: /Helvetica-Oblique newdict definefont pop
                   38102: 
                   38103: /newdict /Helvetica-Bold findfont length dict def
                   38104: /Helvetica-Bold findfont {
                   38105:        1 index /FontMatrix eq {.922 .922 matrix scale matrix concatmatrix} if
                   38106: 
                   38107:        1 index /FID ne
                   38108:                {newdict 3 1 roll put}
                   38109:                {pop pop}
                   38110:        ifelse
                   38111: } forall
                   38112: /Helvetica-Bold newdict definefont pop
                   38113: 
                   38114: /newdict /Helvetica-BoldOblique findfont length dict def
                   38115: /Helvetica-BoldOblique findfont {
                   38116:        1 index /FontMatrix eq {.922 .922 matrix scale matrix concatmatrix} if
                   38117: 
                   38118:        1 index /FID ne
                   38119:                {newdict 3 1 roll put}
                   38120:                {pop pop}
                   38121:        ifelse
                   38122: } forall
                   38123: /Helvetica-BoldOblique newdict definefont pop
                   38124: 
                   38125: %
                   38126: % Scaled up versions of the Times font family.
                   38127: %
                   38128: 
                   38129: /newdict /Times-Roman findfont length dict def
                   38130: /Times-Roman findfont {
                   38131:        1 index /FontMatrix eq {1.0225 1.0225 matrix scale matrix concatmatrix} if
                   38132: 
                   38133:        1 index /FID ne
                   38134:                {newdict 3 1 roll put}
                   38135:                {pop pop}
                   38136:        ifelse
                   38137: } forall
                   38138: /Times-Roman newdict definefont pop
                   38139: 
                   38140: /newdict /Times-Italic findfont length dict def
                   38141: /Times-Italic findfont {
                   38142:        1 index /FontMatrix eq {1.0225 1.0225 matrix scale matrix concatmatrix} if
                   38143: 
                   38144:        1 index /FID ne
                   38145:                {newdict 3 1 roll put}
                   38146:                {pop pop}
                   38147:        ifelse
                   38148: } forall
                   38149: /Times-Italic newdict definefont pop
                   38150: 
                   38151: /newdict /Times-Bold findfont length dict def
                   38152: /Times-Bold findfont {
                   38153:        1 index /FontMatrix eq {1.0225 1.0225 matrix scale matrix concatmatrix} if
                   38154: 
                   38155:        1 index /FID ne
                   38156:                {newdict 3 1 roll put}
                   38157:                {pop pop}
                   38158:        ifelse
                   38159: } forall
                   38160: /Times-Bold newdict definefont pop
                   38161: 
                   38162: /newdict /Times-BoldItalic findfont length dict def
                   38163: /Times-BoldItalic findfont {
                   38164:        1 index /FontMatrix eq {1.0225 1.0225 matrix scale matrix concatmatrix} if
                   38165: 
                   38166:        1 index /FID ne
                   38167:                {newdict 3 1 roll put}
                   38168:                {pop pop}
                   38169:        ifelse
                   38170: } forall
                   38171: /Times-BoldItalic newdict definefont pop
                   38172: 
                   38173: 0707070014230547721006440057030057030000011527250522627502200003300000001715post.src/psfiles/banner.ps%
                   38174: % Simple program to print a banner page
                   38175: %
                   38176: 
                   38177: /banner {
                   38178:        /saveobj save def
                   38179:        erasepage initgraphics
                   38180: 
                   38181:        /#copies 1 def
                   38182:        /inch {72 mul} bind def
                   38183:        /pagebbox [clippath pathbbox newpath] def
                   38184: 
                   38185:        /font /Helvetica def
                   38186:        /size 20 def
                   38187:        /height pagebbox 3 get def
                   38188:        /width pagebbox 2 get .09 mul def
                   38189: 
                   38190:        .92 setgray
                   38191:        pagebbox 0 get pagebbox 1 get moveto
                   38192:        width 0 rlineto 0 height rlineto width neg 0 rlineto closepath eofill
                   38193:        pagebbox 2 get pagebbox 1 get moveto
                   38194:        width neg 0 rlineto 0 height rlineto width 0 rlineto closepath eofill
                   38195:        0 setgray
                   38196: 
                   38197:        font findfont size scalefont setfont
                   38198:        /linesp size size .15 mul add neg def
                   38199:        /tab (Destination) stringwidth pop 1.5 mul def
                   38200:        /nextline {0 0 moveto show tab 0 moveto show 0 linesp translate} def
                   38201: 
                   38202:        pagebbox 0 get 1.5 width mul add pagebbox 3 get 2.0 width mul sub translate
                   38203:        (Bin)  nextline
                   38204:        (Name) nextline
                   38205:        (Owner) nextline
                   38206:        (File) nextline
                   38207:        (Account) nextline
                   38208:        (Destination) nextline
                   38209:        (Spooldate) nextline
                   38210:        showpage
                   38211:        saveobj restore
                   38212: } bind def
                   38213: 0707070014230547731006440057030057030000011527260522627502200003000000001156post.src/psfiles/READMEPostScript files that go in $(POSTLIB). Several, like forms.ps, are
                   38214: used by most translators supplied in this package. Most PostScript
                   38215: files only used by a single translator (e.g. the prologue) have been 
                   38216: been moved into the appropriate source directory. Files that end in
                   38217: .enc support alternate character sets (e.g. ISO Latin 1 alphabet).
                   38218: The implementation is left open, but typically redefines findfont.
                   38219: That approach works because findfont is a procedure rather than an
                   38220: operator, so it's not affected by bind. Also can't depend on having
                   38221: a systemdict definition for findfont. It's in userdict on Version
                   38222: 48.0 VT600s.
                   38223: 
                   38224: 0707070014230547741006440057030057030000011527270522627502200003300000001016post.src/psfiles/unbind.ps%
                   38225: % Unbind the operators in an executable array or packedarray. Leaves the
                   38226: % unbound array or the original object on the stack.
                   38227: %
                   38228: 
                   38229: /unbind {
                   38230:        0 index xcheck
                   38231:        1 index type /arraytype eq
                   38232:        2 index type /packedarraytype eq or and {
                   38233:                dup length array copy cvx
                   38234:                dup 0 exch {
                   38235:                        dup type /operatortype eq {
                   38236:                                (                          ) cvs cvn cvx
                   38237:                        } if
                   38238: 
                   38239:                        0 index xcheck
                   38240:                        1 index type /arraytype eq
                   38241:                        2 index type /packedarraytype eq or and {
                   38242:                                unbind
                   38243:                        } if
                   38244: 
                   38245:                        3 copy put pop
                   38246:                        1 add
                   38247:                } forall
                   38248:                pop
                   38249:        } if
                   38250: } def
                   38251: 
                   38252: 0707070014230547751006440057030057030000011527340522627502200003700000000437post.src/psfiles/Nroundpage.ps%
                   38253: % A version of roundpage.ps that assumes a symmetric clipping path. Thanks
                   38254: % to Matthijs Melchior for the suggestion.
                   38255: %
                   38256: 
                   38257: /roundpagebbox {
                   38258:        pagebbox dup 0 get pagebbox 2 get add 2 exch put
                   38259:        pagebbox dup 1 get pagebbox 3 get add 3 exch put
                   38260:        pagebbox 0 0 put
                   38261:        pagebbox 1 0 put
                   38262: } bind def
                   38263: 0707070014230361610407550057030057030000021040770522633073000002500000000000post.src/buildtables0707070014230361621006440057030057030000011041300522627502300003400000000353post.src/buildtables/READMEPrograms for building troff width tables on a PostScript printer.
                   38264: Assumes you have direct access to the printer's serial port. Also
                   38265: needs a special table dependent shell library file to build the
                   38266: tables (e.g. ../devLatin1/shell.lib).
                   38267: 
                   38268: 0707070014230357571006400057030057030000011040340522633072700004400000003013post.src/buildtables/buildtables.mkMAKE=/bin/make
                   38269: MAKEFILE=buildtables.mk
                   38270: 
                   38271: SYSTEM=V9
                   38272: VERSION=3.3.2
                   38273: 
                   38274: GROUP=bin
                   38275: OWNER=bin
                   38276: 
                   38277: FONTDIR=/usr/lib/font
                   38278: POSTBIN=/usr/bin/postscript
                   38279: POSTLIB=/usr/lib/postscript
                   38280: MAN1DIR=/tmp
                   38281: 
                   38282: all : buildtables
                   38283: 
                   38284: install : all
                   38285:        @if [ ! -d $(POSTBIN) ]; then \
                   38286:            mkdir $(POSTBIN); \
                   38287:            chmod 755 $(POSTBIN); \
                   38288:            chgrp $(GROUP) $(POSTBIN); \
                   38289:            chown $(OWNER) $(POSTBIN); \
                   38290:        fi
                   38291:        cp buildtables $(POSTBIN)/buildtables
                   38292:        @chmod 755 $(POSTBIN)/buildtables
                   38293:        @chgrp $(GROUP) $(POSTBIN)/buildtables
                   38294:        @chown $(OWNER) $(POSTBIN)/buildtables
                   38295:        cp buildtables.1 $(MAN1DIR)/buildtables.1
                   38296:        @chmod 644 $(MAN1DIR)/buildtables.1
                   38297:        @chgrp $(GROUP) $(MAN1DIR)/buildtables.1
                   38298:        @chown $(OWNER) $(MAN1DIR)/buildtables.1
                   38299: 
                   38300: clean :
                   38301: 
                   38302: clobber : clean
                   38303:        rm -f buildtables
                   38304: 
                   38305: buildtables : buildtables.sh
                   38306:        sed \
                   38307:            -e "s'^FONTDIR=.*'FONTDIR=$(FONTDIR)'" \
                   38308:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
                   38309:            -e "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" \
                   38310:        buildtables.sh >buildtables
                   38311:        @chmod 755 buildtables
                   38312: 
                   38313: changes :
                   38314:        @trap "" 1 2 3 15; \
                   38315:        sed \
                   38316:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
                   38317:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
                   38318:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
                   38319:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
                   38320:            -e "s'^FONTDIR=.*'FONTDIR=$(FONTDIR)'" \
                   38321:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
                   38322:            -e "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" \
                   38323:            -e "s'^MAN1DIR=.*'MAN1DIR=$(MAN1DIR)'" \
                   38324:        $(MAKEFILE) >XXX.mk; \
                   38325:        mv XXX.mk $(MAKEFILE); \
                   38326:        sed \
                   38327:            -e "s'^.ds dF.*'.ds dF $(FONTDIR)'" \
                   38328:            -e "s'^.ds dQ.*'.ds dQ $(POSTLIB)'" \
                   38329:        buildtables.1 >XXX.1; \
                   38330:        mv XXX.1 buildtables.1
                   38331: 
                   38332: 0707070014230361641006440057030057030000011041330522627502300004400000003771post.src/buildtables/buildtables.sh#
                   38333: # Builds one or more font width tables or the typesetter description
                   38334: # file on a PostScript printer. Assumes you have direct access to the
                   38335: # printer's serial port. No arguments means build a standard collection
                   38336: # of tables - usually the LaserWriter Plus set. See trofftable and the
                   38337: # shell library files /usr/lib/font/dev*/shell.lib for more details.
                   38338: #
                   38339: 
                   38340: set -e
                   38341: 
                   38342: POSTBIN=/usr/lbin/postscript
                   38343: POSTLIB=/usr/lib/postscript
                   38344: FONTDIR=/usr/lib/font
                   38345: 
                   38346: POSTIO=$POSTBIN/postio
                   38347: TROFFTABLE=$POSTBIN/trofftable
                   38348: 
                   38349: BAUDRATE=
                   38350: DEVICE=
                   38351: LIBRARY=
                   38352: 
                   38353: while [ -n "$1" ]; do
                   38354:     case $1 in
                   38355:        -C)  shift; OPTIONS="$OPTIONS -C$1";;
                   38356:        -C*) OPTIONS="$OPTIONS $1";;
                   38357: 
                   38358:        -F)  shift; FONTDIR=$1;;
                   38359:        -F*) FONTDIR=`echo $1 | sed s/-F//`;;
                   38360: 
                   38361:        -H)  shift; OPTIONS="$OPTIONS -H$1";;
                   38362:        -H*) OPTIONS="$OPTIONS $1";;
                   38363: 
                   38364:        -S)  shift; LIBRARY=$1;;
                   38365:        -S*) LIBRARY=`echo $1 | sed s/-S//`;;
                   38366: 
                   38367:        -T)  shift; DEVICE=$1;;
                   38368:        -T*) DEVICE=`echo $1 | sed s/-T//`;;
                   38369: 
                   38370:        -b)  shift; BAUDRATE=$1;;
                   38371:        -b*) BAUDRATE=`echo $1 | sed s/-b//`;;
                   38372: 
                   38373:        -c)  shift; OPTIONS="$OPTIONS -c$1";;
                   38374:        -c*) OPTIONS="$OPTIONS $1";;
                   38375: 
                   38376:        -l)  shift; LINE=$1;;
                   38377:        -l*) LINE=`echo $1 | sed s/-l//`;;
                   38378: 
                   38379:        -s)  shift; OPTIONS="$OPTIONS -s$1";;
                   38380:        -s*) OPTIONS="$OPTIONS $1";;
                   38381: 
                   38382:        -t)  shift; OPTIONS="$OPTIONS -t$1";;
                   38383:        -t*) OPTIONS="$OPTIONS $1";;
                   38384: 
                   38385:        -?)  OPTIONS="$OPTIONS $1$2"; shift;;
                   38386:        -?*) OPTIONS="$OPTIONS $1";;
                   38387: 
                   38388:        *)   break;;
                   38389:     esac
                   38390:     shift
                   38391: done
                   38392: 
                   38393: if [ ! "$DEVICE" -a ! "$LIBRARY" ]; then
                   38394:     echo "$0: no device or shell library" >&2
                   38395:     exit 1
                   38396: fi
                   38397: 
                   38398: LIBRARY=${LIBRARY:-${FONTDIR}/dev${DEVICE}/shell.lib}
                   38399: 
                   38400: #
                   38401: # No arguments means build everything return by the AllTables function.
                   38402: #
                   38403: 
                   38404: if [ $# -eq 0 ]; then
                   38405:     . $LIBRARY
                   38406:     set -- `AllTables`
                   38407: fi
                   38408: 
                   38409: for i do
                   38410:     SHORT=`echo $i | awk '{print $1}'`
                   38411:     LONG=`echo $i | awk '{print $2}'`
                   38412: 
                   38413:     if [ "$LINE" ]
                   38414:        then echo "==== Building table $SHORT ===="
                   38415:        else echo "==== Creating table program $SHORT.ps ===="
                   38416:     fi
                   38417: 
                   38418:     $TROFFTABLE -S$LIBRARY $OPTIONS $SHORT $LONG >$SHORT.ps
                   38419: 
                   38420:     if [ "$LINE" ]; then
                   38421:        $POSTIO -t -l$LINE ${BAUDRATE:+-b${BAUDRATE}} $SHORT.ps >$SHORT
                   38422:        rm -f $SHORT.ps
                   38423:     fi
                   38424: done
                   38425: 
                   38426: 0707070014230357601006400057030057030000011024300522633073000004300000010314post.src/buildtables/buildtables.1.ds dF /usr/lib/font
                   38427: .ds dQ /usr/lib/postscript
                   38428: .TH BUILDTABLES 1 "DWB 3.2"
                   38429: .SH NAME
                   38430: .B buildtables
                   38431: \- build
                   38432: .B troff
                   38433: tables on a PostScript printer
                   38434: .SH SYNOPSIS
                   38435: \*(mBbuildtables\f1
                   38436: .OP "" options []
                   38437: .OP "" "name \(el" []
                   38438: .SH DESCRIPTION
                   38439: .B buildtables
                   38440: builds font width tables or the typesetter description
                   38441: file on a PostScript printer.
                   38442: No arguments means build a default set of tables;
                   38443: usually a superset of the LaserWriter Plus collection.
                   38444: The following
                   38445: .I options
                   38446: are understood:
                   38447: .TP 1.0i
                   38448: .OP \-b speed
                   38449: Transmit data over
                   38450: .I line
                   38451: at baud rate
                   38452: .I speed.
                   38453: Recognized baud rates are 1200, 2400, 4800, 9600, and 19200.
                   38454: The default
                   38455: .I speed
                   38456: is 9600 baud.
                   38457: .TP 1.0i
                   38458: .OP \-l line
                   38459: Build the tables on the PostScript printer attached to
                   38460: .I line.
                   38461: There is no default.
                   38462: .TP 1.0i
                   38463: .OP \-t name
                   38464: Use
                   38465: .I name
                   38466: as the template for fonts not in the default set.
                   38467: Choose
                   38468: .MW R
                   38469: for proportionally spaced fonts and
                   38470: .MW CW
                   38471: for fixed width fonts.
                   38472: Try
                   38473: .MW ZD
                   38474: (ZapfDingbats) if the font has a non-standard
                   38475: character set.
                   38476: The default is
                   38477: .MR R .
                   38478: .TP 1.0i
                   38479: .OP \-C file
                   38480: Copy
                   38481: .I file
                   38482: into each PostScript table program;
                   38483: .I file
                   38484: must contain legitimate PostScript.
                   38485: .TP 1.0i
                   38486: .OP \-H hostdir
                   38487: Use
                   38488: .I hostdir
                   38489: as the host-resident font directory.
                   38490: A file in
                   38491: .I hostdir
                   38492: that matches the name of the
                   38493: .B troff
                   38494: font is assumed to be a host-resident font program and is included
                   38495: in the PostScript width table program.
                   38496: There is no default.
                   38497: .TP 1.0i
                   38498: .OP \-S file
                   38499: Use
                   38500: .I file
                   38501: as the shell library file.
                   38502: Overrides the choice made with the
                   38503: .OP \-T
                   38504: option.
                   38505: .TP 1.0i
                   38506: .OP \-T name
                   38507: Set the target device to
                   38508: .I name.
                   38509: .br
                   38510: Device
                   38511: .I name
                   38512: means
                   38513: .ft 2
                   38514: .MI \*(dF/dev name /shell.lib
                   38515: .ft 1
                   38516: is the shell library file.
                   38517: There is no default.
                   38518: .PP
                   38519: If
                   38520: .OP \-l
                   38521: is omitted output files are the PostScript programs that
                   38522: build the tables, rather than the tables themselves.
                   38523: One of
                   38524: .OP \-T
                   38525: or
                   38526: .OP \-S
                   38527: is required.
                   38528: If both are given
                   38529: .OP \-S
                   38530: wins.
                   38531: Although
                   38532: .OP \-H
                   38533: is the preferred mechanism for including host-resident font files,
                   38534: .OP \-C
                   38535: makes sense when only one width table is built.
                   38536: .PP
                   38537: The shell library file defines a collection of functions used to
                   38538: build
                   38539: .BR troff (1)
                   38540: tables.
                   38541: The default set of tables is the list of names returned by the
                   38542: .MW AllTables
                   38543: function.
                   38544: Changes to the default list can be made by updating the
                   38545: .MW BuiltinTables
                   38546: function.
                   38547: .PP
                   38548: Each
                   38549: .B buildtables
                   38550: argument
                   38551: must be a default table name, or a pair of names enclosed in quotes.
                   38552: If the argument is a pair, the first name is the
                   38553: .B troff
                   38554: font and the second is the full PostScript font name.
                   38555: Tables are created in the current directory.
                   38556: Each is assigned a name that matches the
                   38557: .B troff
                   38558: table name.
                   38559: .PP
                   38560: The PostScript table programs created by
                   38561: .BR trofftable (1)
                   38562: are written to files that have
                   38563: .MW .ps
                   38564: appended to the
                   38565: .B troff
                   38566: table name.
                   38567: The
                   38568: .MW .ps
                   38569: file is deleted after the table is built.
                   38570: Options not listed above are passed to
                   38571: .B trofftable.
                   38572: The PostScript table programs return data to the host computer using
                   38573: PostScript's
                   38574: .MW print
                   38575: operator.
                   38576: See
                   38577: .BR hardcopy (1)
                   38578: if you do not have access to the printer's serial port.
                   38579: .SH EXAMPLES
                   38580: .PP
                   38581: Build the default collection of devpost tables on the printer
                   38582: connected to
                   38583: .MW /dev/tty00
                   38584: (no font name arguments):
                   38585: .EX
                   38586: buildtables -l/dev/tty00 -Tpost
                   38587: .EE
                   38588: To do the same and to restrict the tables that are built,
                   38589: Add
                   38590: .B troff
                   38591: font names (or
                   38592: .MR DESC )
                   38593: to restrict the tables built on the printer connected to
                   38594: .MR /dev/tty00 :
                   38595: .EX
                   38596: buildtables -l/dev/tty00 -Tpost R I B BI DESC S
                   38597: .EE
                   38598: Enclose the
                   38599: .B troff
                   38600: and PostScript font names in quotes to
                   38601: build the width table for a font not in the default set
                   38602: (also on the printer connected to
                   38603: .MR /dev/tty00 ):
                   38604: .EX
                   38605: buildtables -l/dev/tty00 -TLatin1 "GL Garamond-Light"
                   38606: .EE
                   38607: A font must be available on the printer when the table is built.
                   38608: Use
                   38609: .OP \-H
                   38610: or
                   38611: .OP \-C
                   38612: to include host-resident fonts.
                   38613: .SH WARNINGS
                   38614: .PP
                   38615: A width table will not build properly if the printer cannot access
                   38616: the PostScript font.
                   38617: .PP
                   38618: The
                   38619: .OP \-TLatin1
                   38620: option only works on PostScript printers that support the full
                   38621: .SM ISO
                   38622: Latin-1 character set.
                   38623: The error message from older printers will likely indicate a missing
                   38624: .MW ISOLatin1Encoding
                   38625: array.
                   38626: .SH FILES
                   38627: .MW \*(dF/dev*/shell.lib
                   38628: .br
                   38629: .MW \*(dQ/dpost.ps
                   38630: .br
                   38631: .MW \*(dQ/trofftable.ps
                   38632: .br
                   38633: .SH SEE ALSO
                   38634: .BR dpost (1),
                   38635: .BR hardcopy (1),
                   38636: .BR postio (1),
                   38637: .BR troff (1),
                   38638: .BR trofftable (1),
                   38639: .BR font (5)
                   38640: 0707070014231030650407550057030057030000020303460522633073300002300000000000post.src/cropmarks0707070014231030661006440057030057030000010303050522627502300004000000005727post.src/cropmarks/cropmarks.ps%
                   38641: % Center pages, based on pageheight and pagewidth, and redefine showpage
                   38642: % to put cropmarks at each corner. Device dependent code to expand the
                   38643: % paper size goes in procedure expandpagesize. Currently only supports
                   38644: % a Linotronic 200P typesetter using 12 inch wide paper. You'll have to
                   38645: % add code to expandpagesize to support different typesetters or even a
                   38646: % 200P that's running differently.
                   38647: %
                   38648: 
                   38649: /CropmarkDict 40 dict dup begin
                   38650: 
                   38651: /expandpage true def
                   38652: /magnification 1 def
                   38653: /pageheight 11.0 def
                   38654: /pagewidth 8.5 def
                   38655: /scaletofit false def
                   38656: /scaling 1 def
                   38657: 
                   38658: /marklength .3 def     % inches
                   38659: /markstart .125 def    % inches
                   38660: /markend .04 def       % inches
                   38661: /marklinewidth .25 def % points
                   38662: 
                   38663: /inch {72 mul} def
                   38664: /min {2 copy gt {exch} if pop} def
                   38665: /max {2 copy lt {exch} if pop} def
                   38666: 
                   38667: /setup {
                   38668:        /markspace markstart marklength add markend add inch marklinewidth add def
                   38669:        /totalheight pageheight inch markspace 2 mul add def
                   38670:        /totalwidth pagewidth inch markspace 2 mul add def
                   38671: 
                   38672:        pagedimensions
                   38673:        checkpagesize
                   38674:        /scaling getscaling def
                   38675:        xcenter ycenter translate
                   38676:        scaling scaling scale
                   38677:        pagewidth inch 2 div neg pageheight inch 2 div neg translate
                   38678:        clippage
                   38679: } def
                   38680: 
                   38681: /pagedimensions {
                   38682:        clippath pathbbox newpath
                   38683:        4 -1 roll exch 4 1 roll 4 copy
                   38684:        sub /width exch def
                   38685:        sub /height exch def
                   38686:        add 2 div /xcenter exch def
                   38687:        add 2 div /ycenter exch def
                   38688: } def
                   38689: 
                   38690: /checkpagesize {
                   38691:        height totalheight lt width totalwidth lt or expandpage and {
                   38692:                expandpagesize
                   38693:                pagedimensions
                   38694:        } if
                   38695: } def
                   38696: 
                   38697: /expandpagesize {      % device dependent code
                   38698:        /Product statusdict begin /product where {pop product}{()} ifelse end def
                   38699: 
                   38700:        Product (Linotype) eq {         % Linotronic 200P and other models?
                   38701:                statusdict /setpageparams known {
                   38702:                        /maxwidth 12.0 inch def         % 12 inch wide paper?
                   38703:                        totalheight maxwidth le {
                   38704:                                totalheight
                   38705:                                totalwidth
                   38706:                                maxwidth totalheight sub 2 div
                   38707:                                0
                   38708:                        }{
                   38709:                                totalwidth maxwidth min
                   38710:                                totalheight
                   38711:                                maxwidth totalwidth maxwidth min sub 2 div
                   38712:                                1
                   38713:                        } ifelse
                   38714:                        statusdict /setpageparams get exec
                   38715:                } if
                   38716:        } if
                   38717: } def
                   38718: 
                   38719: /getscaling {
                   38720:        scaletofit
                   38721:                {height totalheight div width totalwidth div min 1 min}
                   38722:                {1}
                   38723:        ifelse
                   38724: } def
                   38725: 
                   38726: /clippage {
                   38727:        newpath
                   38728:        0 0 moveto
                   38729:        pagewidth inch 0 rlineto
                   38730:        0 pageheight inch rlineto
                   38731:        pagewidth neg inch 0 rlineto
                   38732:        closepath clip
                   38733:        newpath
                   38734: } def
                   38735: 
                   38736: /cropmark {
                   38737:        gsave
                   38738:        translate
                   38739:        rotate
                   38740:        marklinewidth dup translate
                   38741:        0 0 transform round exch round exch itransform translate
                   38742:        markstart inch 0 moveto marklength inch 0 rlineto stroke
                   38743:        0 markstart inch moveto 0 marklength inch rlineto stroke
                   38744:        grestore
                   38745: } bind def
                   38746: 
                   38747: /@PreviousShowpage /showpage load def
                   38748: 
                   38749: end def
                   38750: 
                   38751: %
                   38752: % Cropmarks - in the default coordinate system.
                   38753: %
                   38754: 
                   38755: /showpage {
                   38756:        gsave
                   38757:        CropmarkDict begin
                   38758:                initgraphics
                   38759:                marklinewidth setlinewidth
                   38760:                xcenter ycenter translate
                   38761:                scaling scaling scale
                   38762:                0 pagewidth inch 2 div pageheight inch 2 div cropmark
                   38763:                90 pagewidth inch neg 2 div pageheight inch 2 div cropmark
                   38764:                180 pagewidth inch neg 2 div pageheight inch 2 div neg cropmark
                   38765:                270 pagewidth inch 2 div pageheight inch 2 div neg cropmark
                   38766:                @PreviousShowpage
                   38767:        end
                   38768:        grestore
                   38769: } bind def
                   38770: 
                   38771: 0707070014231030671006440057030057030000010304060522627502300004000000003350post.src/cropmarks/cropmarks.sh#
                   38772: # Center pages and put cropmarks at each corner. Physical page size
                   38773: # is set with -w and -h. The default is 8.5 by 11.0 inches. Device
                   38774: # dependent code to change paper size (e.g. with setpageparams) goes
                   38775: # in the prologue. You may need to customize the device dependent
                   38776: # code that we distribute. By default it only supports variable page
                   38777: # sizes on Linotronic typesetters, and assumes those typesetters are
                   38778: # using 12 inch wide paper. Use -d to disable execution of device
                   38779: # dependent PostScript code.
                   38780: #
                   38781: # What's here was written quickly and will likely be very different
                   38782: # in our next release. It should be part of a more general program!!
                   38783: # 
                   38784: 
                   38785: POSTLIB=/usr/lib/postscript
                   38786: PROLOGUE=$POSTLIB/cropmarks.ps
                   38787: 
                   38788: EXPANDPAGE=true
                   38789: PAGEWIDTH=8.5
                   38790: PAGEHEIGHT=11.0
                   38791: SCALETOFIT=false
                   38792: XOFFSET=0.0
                   38793: YOFFSET=0.0
                   38794: 
                   38795: NONCONFORMING="%!PS"
                   38796: ENDPROLOG="%%EndProlog"
                   38797: BEGINSETUP="%%BeginSetup"
                   38798: ENDSETUP="%%EndSetup"
                   38799: 
                   38800: while [ -n "$1" ]; do
                   38801:     case $1 in
                   38802:        -d)  EXPANDPAGE=false;;
                   38803: 
                   38804:        -h)  shift; PAGEHEIGHT=$1;;
                   38805:        -h*) PAGEHEIGHT=`echo $1 | sed s/-h//`;;
                   38806: 
                   38807:        -s)  SCALETOFIT=true;;
                   38808: 
                   38809:        -w)  shift; PAGEWIDTH=$1;;
                   38810:        -w*) PAGEWIDTH=`echo $1 | sed s/-w//`;;
                   38811: 
                   38812:        -x)  shift; XOFFSET=$1;;
                   38813:        -x*) XOFFSET=`echo $1 | sed s/-x//`;;
                   38814: 
                   38815:        -y)  shift; YOFFSET=$1;;
                   38816:        -y*) YOFFSET=`echo $1 | sed s/-y//`;;
                   38817: 
                   38818:        -L)  shift; PROLOGUE=$1;;
                   38819:        -L*) PROLOGUE=`echo $1 | sed s/-L//`;;
                   38820: 
                   38821:        --)  shift; break;;
                   38822: 
                   38823:        -*)  echo "$0: illegal option $1" >&2; exit 1;;
                   38824: 
                   38825:        *)   break;;
                   38826:     esac
                   38827:     shift
                   38828: done
                   38829: 
                   38830: echo $NONCONFORMING
                   38831: cat $PROLOGUE
                   38832: echo $ENDPROLOG
                   38833: echo $BEGINSETUP
                   38834: echo "CropmarkDict begin"
                   38835: echo "/pageheight $PAGEHEIGHT def"
                   38836: echo "/pagewidth $PAGEWIDTH def"
                   38837: echo "/expandpage $EXPANDPAGE def"
                   38838: echo "/scaletofit $SCALETOFIT def"
                   38839: echo "/xoffset $XOFFSET def"
                   38840: echo "/yoffset $YOFFSET def"
                   38841: echo "setup"
                   38842: echo "end"
                   38843: echo $ENDSETUP
                   38844: 
                   38845: cat $*
                   38846: 
                   38847: 0707070014231027421006400057030057030000010230260522633073300004000000003045post.src/cropmarks/cropmarks.mkMAKE=/bin/make
                   38848: MAKEFILE=cropmarks.mk
                   38849: 
                   38850: OWNER=bin
                   38851: GROUP=bin
                   38852: 
                   38853: MAN1DIR=/tmp
                   38854: MAN5DIR=/usr/man/p_man/man5
                   38855: POSTLIB=/usr/lib/postscript
                   38856: POSTBIN=/usr/bin/postscript
                   38857: 
                   38858: all : cropmarks
                   38859: 
                   38860: install : all
                   38861:        @if [ ! -d "$(POSTBIN)" ]; then \
                   38862:            mkdir $(POSTBIN); \
                   38863:            chmod 755 $(POSTBIN); \
                   38864:            chgrp $(GROUP) $(POSTBIN); \
                   38865:            chown $(OWNER) $(POSTBIN); \
                   38866:        fi
                   38867:        @if [ ! -d "$(POSTLIB)" ]; then \
                   38868:            mkdir $(POSTLIB); \
                   38869:            chmod 755 $(POSTLIB); \
                   38870:            chgrp $(GROUP) $(POSTLIB); \
                   38871:            chown $(OWNER) $(POSTLIB); \
                   38872:        fi
                   38873:        cp cropmarks $(POSTBIN)/cropmarks
                   38874:        @chmod 755 $(POSTBIN)/cropmarks
                   38875:        @chgrp $(GROUP) $(POSTBIN)/cropmarks
                   38876:        @chown $(OWNER) $(POSTBIN)/cropmarks
                   38877:        cp cropmarks.ps $(POSTLIB)/cropmarks.ps
                   38878:        @chmod 644 $(POSTLIB)/cropmarks.ps
                   38879:        @chgrp $(GROUP) $(POSTLIB)/cropmarks.ps
                   38880:        @chown $(OWNER) $(POSTLIB)/cropmarks.ps
                   38881:        cp cropmarks.1 $(MAN1DIR)/cropmarks.1
                   38882:        @chmod 644 $(MAN1DIR)/cropmarks.1
                   38883:        @chgrp $(GROUP) $(MAN1DIR)/cropmarks.1
                   38884:        @chown $(OWNER) $(MAN1DIR)/cropmarks.1
                   38885: 
                   38886: clean :
                   38887: 
                   38888: clobber : clean
                   38889:        rm -f cropmarks
                   38890: 
                   38891: cropmarks : cropmarks.sh
                   38892:        sed "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" cropmarks.sh >cropmarks
                   38893:        @chmod 755 cropmarks
                   38894: 
                   38895: changes :
                   38896:        @trap "" 1 2 3 15; \
                   38897:        sed \
                   38898:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
                   38899:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
                   38900:            -e "s'^MAN1DIR=.*'MAN1DIR=$(MAN1DIR)'" \
                   38901:            -e "s'^MAN5DIR=.*'MAN5DIR=$(MAN5DIR)'" \
                   38902:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
                   38903:            -e "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" \
                   38904:        $(MAKEFILE) >XXX.mk; \
                   38905:        mv XXX.mk $(MAKEFILE); \
                   38906:        sed \
                   38907:            -e "s'^.ds dQ.*'.ds dQ $(POSTLIB)'" \
                   38908:        cropmarks.1 >XXX.1; \
                   38909:        mv XXX.1 cropmarks.1
                   38910: 
                   38911: 0707070014231027431006400057030057030000010303640522633073300003700000004373post.src/cropmarks/cropmarks.1.ds dQ /usr/lib/postscript
                   38912: .TH CROPMARKS 1 "DWB 3.2"
                   38913: .SH NAME
                   38914: .B cropmarks
                   38915: \- add cropmarks to PostScript files
                   38916: .SH SYNOPSIS
                   38917: \*(mBcropmarks\f1
                   38918: .OP "" options []
                   38919: .OP "" files []
                   38920: .SH DESCRIPTION
                   38921: .B Cropmarks
                   38922: surrounds PostScript
                   38923: .I files
                   38924: with code that centers each page and adds cropmarks to the four
                   38925: corners.
                   38926: The results are written on the standard output.
                   38927: If no
                   38928: .I files
                   38929: are specified, or if
                   38930: .OP \-
                   38931: is one of the input
                   38932: .I files,
                   38933: the standard input is read.
                   38934: The following
                   38935: .I options
                   38936: are understood:
                   38937: .TP 1.0i
                   38938: .OP \-d
                   38939: Disable the device-dependent PostScript code that expands page sizes.
                   38940: .TP 1.0i
                   38941: .OP \-h num
                   38942: Set the height of each page to
                   38943: .I num
                   38944: inches.
                   38945: The default is 11.0 inches.
                   38946: .TP 1.0i
                   38947: .OP \-s
                   38948: Scale pages so cropmarks always show up.
                   38949: Primarily for debugging and development on devices that don't adjust
                   38950: page sizes.
                   38951: .TP 1.0i
                   38952: .OP \-w num
                   38953: Set the width of each page to
                   38954: .I num
                   38955: inches.
                   38956: The default is 8.5 inches.
                   38957: .TP 1.0i
                   38958: .OP \-L file
                   38959: Use
                   38960: .I file
                   38961: as the PostScript prologue.
                   38962: .br
                   38963: The default is
                   38964: .MR \*(dQ/cropmarks.ps .
                   38965: .PP
                   38966: Height and width set with the
                   38967: .OP \-h
                   38968: and
                   38969: .OP \-w
                   38970: options adjust the size of the image area available on each sheet
                   38971: of paper.
                   38972: Neither suggests anything about the orientation of output in that area.
                   38973: Cropmarks are printed at each corner just outside the image area.
                   38974: .SH EXAMPLES
                   38975: .PP
                   38976: Print text in a 6.5\(mu8.0-inch area centered on each sheet of paper:
                   38977: .EX
                   38978: troff -mm \f2file\fP | dpost | cropmarks -w6.5 -h8.0 | \f2spool
                   38979: .EE
                   38980: Print landscape text in exactly the same 6.5\(mu8.0-inch area:
                   38981: .EX
                   38982: troff -mm \f2file\fP | dpost -pland | cropmarks -w6.5 -h8.0 | \f2spool
                   38983: .EE
                   38984: In both examples,
                   38985: .I spool
                   38986: is the spooling command used to send PostScript output to a local printer.
                   38987: .SH WARNINGS
                   38988: .PP
                   38989: Device-dependent PostScript code to automatically expand page sizes may
                   38990: only work on Linotronic 200P typesetters that use 12-inch-wide paper.
                   38991: Local changes to the printer-dependent code can be made in the
                   38992: .MW expandpagesize
                   38993: procedure defined in
                   38994: .MR \*(dQ/cropmarks.ps .
                   38995: .PP
                   38996: The PostScript
                   38997: .I files
                   38998: must be reasonably well behaved.
                   38999: There are no guarantees, particularly if the input
                   39000: .I files
                   39001: redefine the
                   39002: .MW showpage
                   39003: operator.
                   39004: .PP
                   39005: The program is unsupported and may not be included in future releases.
                   39006: .SH FILES
                   39007: .MW \*(dQ/cropmarks.ps
                   39008: .SH SEE ALSO
                   39009: .BR dpost (1),
                   39010: .BRpostio (1),
                   39011: .BR troff (1)
                   39012: 0707070014230361660407550057030057030000031041350522627502700002200000000000post.src/devopost0707070014230361671006440057030057030000011041360522627502300002500000002037post.src/devopost/AB# AvantGarde-Demi
                   39013: name AB
                   39014: internalname 27
                   39015: ligatures fi fl 0
                   39016: charset
                   39017: !      28      2       33
                   39018: $      56      2       36
                   39019: %      86      2       37
                   39020: &      68      2       38
                   39021: '      28      2       39
                   39022: (      38      3       40
                   39023: )      38      3       41
                   39024: *      44      2       42
                   39025: +      60      0       43
                   39026: ,      28      1       44
                   39027: hy     42      0       45
                   39028: -      "
                   39029: .      28      0       46
                   39030: /      46      3       47
                   39031: 0      56      2       48
                   39032: 1      56      2       49
                   39033: 2      56      2       50
                   39034: 3      56      2       51
                   39035: 4      56      2       52
                   39036: 5      56      2       53
                   39037: 6      56      2       54
                   39038: 7      56      2       55
                   39039: 8      56      2       56
                   39040: 9      56      2       57
                   39041: :      28      0       58
                   39042: ;      28      1       59
                   39043: =      60      0       61
                   39044: ?      56      2       63
                   39045: A      74      2       65
                   39046: B      58      2       66
                   39047: C      78      2       67
                   39048: D      70      2       68
                   39049: E      52      2       69
                   39050: F      48      2       70
                   39051: G      84      2       71
                   39052: H      68      2       72
                   39053: I      28      2       73
                   39054: J      48      2       74
                   39055: K      62      2       75
                   39056: L      44      2       76
                   39057: M      90      2       77
                   39058: N      74      2       78
                   39059: O      84      2       79
                   39060: P      56      2       80
                   39061: Q      84      2       81
                   39062: R      58      2       82
                   39063: S      52      2       83
                   39064: T      42      2       84
                   39065: U      64      2       85
                   39066: V      70      2       86
                   39067: W      90      2       87
                   39068: X      68      2       88
                   39069: Y      62      2       89
                   39070: Z      50      2       90
                   39071: [      32      3       91
                   39072: ]      32      3       93
                   39073: `      28      2       96
                   39074: a      66      0       97
                   39075: b      66      2       98
                   39076: c      64      0       99
                   39077: d      66      2       100
                   39078: e      64      0       101
                   39079: f      28      2       102
                   39080: g      66      1       103
                   39081: h      60      2       104
                   39082: i      24      2       105
                   39083: j      26      3       106
                   39084: k      58      2       107
                   39085: l      24      2       108
                   39086: m      94      0       109
                   39087: n      60      0       110
                   39088: o      64      0       111
                   39089: p      66      1       112
                   39090: q      66      1       113
                   39091: r      32      0       114
                   39092: s      44      0       115
                   39093: t      30      2       116
                   39094: u      60      0       117
                   39095: v      56      0       118
                   39096: w      80      0       119
                   39097: x      56      0       120
                   39098: y      58      1       121
                   39099: z      46      0       122
                   39100: ct     56      2       162
                   39101: fi     52      2       174
                   39102: fl     52      2       175
                   39103: dg     56      3       178
                   39104: bu     60      0       183
                   39105: de     36      2       202
                   39106: em     100     0       208
                   39107: 14     75      2       1
                   39108: 34     75      2       1
                   39109: 12     75      2       1
                   39110: ``     48      2       170
                   39111: ''     48      2       186
                   39112: 0707070014230361701006440057030057030000011041550522627502300002500000002046post.src/devopost/AI# AvantGarde-BookOblique
                   39113: name AI
                   39114: internalname 26
                   39115: ligatures fi fl 0
                   39116: charset
                   39117: !      29      2       33
                   39118: $      55      2       36
                   39119: %      77      2       37
                   39120: &      76      2       38
                   39121: '      35      2       39
                   39122: (      37      3       40
                   39123: )      37      3       41
                   39124: *      42      2       42
                   39125: +      61      0       43
                   39126: ,      28      0       44
                   39127: hy     33      0       45
                   39128: -      "
                   39129: .      28      0       46
                   39130: /      44      3       47
                   39131: 0      55      2       48
                   39132: 1      55      2       49
                   39133: 2      55      2       50
                   39134: 3      55      2       51
                   39135: 4      55      2       52
                   39136: 5      55      2       53
                   39137: 6      55      2       54
                   39138: 7      55      2       55
                   39139: 8      55      2       56
                   39140: 9      55      2       57
                   39141: :      28      0       58
                   39142: ;      28      0       59
                   39143: =      61      0       61
                   39144: ?      59      2       63
                   39145: A      74      2       65
                   39146: B      57      2       66
                   39147: C      81      2       67
                   39148: D      74      2       68
                   39149: E      54      2       69
                   39150: F      49      2       70
                   39151: G      87      2       71
                   39152: H      68      2       72
                   39153: I      23      2       73
                   39154: J      48      2       74
                   39155: K      59      2       75
                   39156: L      46      2       76
                   39157: M      92      2       77
                   39158: N      74      2       78
                   39159: O      87      2       79
                   39160: P      59      2       80
                   39161: Q      87      2       81
                   39162: R      61      2       82
                   39163: S      50      2       83
                   39164: T      43      2       84
                   39165: U      66      2       85
                   39166: V      70      2       86
                   39167: W      96      2       87
                   39168: X      61      2       88
                   39169: Y      59      2       89
                   39170: Z      48      2       90
                   39171: [      35      3       91
                   39172: ]      35      3       93
                   39173: `      35      2       96
                   39174: a      68      0       97
                   39175: b      68      2       98
                   39176: c      65      0       99
                   39177: d      69      2       100
                   39178: e      65      0       101
                   39179: f      31      2       102
                   39180: g      67      1       103
                   39181: h      61      2       104
                   39182: i      20      2       105
                   39183: j      20      3       106
                   39184: k      50      2       107
                   39185: l      20      2       108
                   39186: m      94      0       109
                   39187: n      61      0       110
                   39188: o      66      0       111
                   39189: p      68      1       112
                   39190: q      68      1       113
                   39191: r      30      0       114
                   39192: s      39      0       115
                   39193: t      34      2       116
                   39194: u      61      0       117
                   39195: v      55      0       118
                   39196: w      83      0       119
                   39197: x      48      0       120
                   39198: y      54      1       121
                   39199: z      42      0       122
                   39200: ct     55      2       162
                   39201: fi     49      2       174
                   39202: fl     49      2       175
                   39203: dg     55      3       178
                   39204: bu     61      0       183
                   39205: de     33      2       202
                   39206: em     100     0       208
                   39207: 14     75      2       1
                   39208: 34     75      2       1
                   39209: 12     75      2       1
                   39210: ``     50      2       170
                   39211: ''     50      2       186
                   39212: 0707070014230361711006440057030057030000011041700522627502300002500000002037post.src/devopost/AR# AvantGarde-Book
                   39213: name AR
                   39214: internalname 25
                   39215: ligatures fi fl 0
                   39216: charset
                   39217: !      29      2       33
                   39218: $      55      2       36
                   39219: %      77      2       37
                   39220: &      76      2       38
                   39221: '      35      2       39
                   39222: (      37      3       40
                   39223: )      37      3       41
                   39224: *      42      2       42
                   39225: +      61      0       43
                   39226: ,      28      0       44
                   39227: hy     33      0       45
                   39228: -      "
                   39229: .      28      0       46
                   39230: /      44      3       47
                   39231: 0      55      2       48
                   39232: 1      55      2       49
                   39233: 2      55      2       50
                   39234: 3      55      2       51
                   39235: 4      55      2       52
                   39236: 5      55      2       53
                   39237: 6      55      2       54
                   39238: 7      55      2       55
                   39239: 8      55      2       56
                   39240: 9      55      2       57
                   39241: :      28      0       58
                   39242: ;      28      0       59
                   39243: =      61      0       61
                   39244: ?      59      2       63
                   39245: A      74      2       65
                   39246: B      57      2       66
                   39247: C      81      2       67
                   39248: D      74      2       68
                   39249: E      54      2       69
                   39250: F      49      2       70
                   39251: G      87      2       71
                   39252: H      68      2       72
                   39253: I      23      2       73
                   39254: J      48      2       74
                   39255: K      59      2       75
                   39256: L      46      2       76
                   39257: M      92      2       77
                   39258: N      74      2       78
                   39259: O      87      2       79
                   39260: P      59      2       80
                   39261: Q      87      2       81
                   39262: R      61      2       82
                   39263: S      50      2       83
                   39264: T      43      2       84
                   39265: U      66      2       85
                   39266: V      70      2       86
                   39267: W      96      2       87
                   39268: X      61      2       88
                   39269: Y      59      2       89
                   39270: Z      48      2       90
                   39271: [      35      3       91
                   39272: ]      35      3       93
                   39273: `      35      2       96
                   39274: a      68      0       97
                   39275: b      68      2       98
                   39276: c      65      0       99
                   39277: d      69      2       100
                   39278: e      65      0       101
                   39279: f      31      2       102
                   39280: g      67      1       103
                   39281: h      61      2       104
                   39282: i      20      2       105
                   39283: j      20      3       106
                   39284: k      50      2       107
                   39285: l      20      2       108
                   39286: m      94      0       109
                   39287: n      61      0       110
                   39288: o      66      0       111
                   39289: p      68      1       112
                   39290: q      68      1       113
                   39291: r      30      0       114
                   39292: s      39      0       115
                   39293: t      34      2       116
                   39294: u      61      0       117
                   39295: v      55      0       118
                   39296: w      83      0       119
                   39297: x      48      0       120
                   39298: y      54      1       121
                   39299: z      42      0       122
                   39300: ct     55      2       162
                   39301: fi     49      2       174
                   39302: fl     49      2       175
                   39303: dg     55      3       178
                   39304: bu     61      0       183
                   39305: de     33      2       202
                   39306: em     100     0       208
                   39307: 14     75      2       1
                   39308: 34     75      2       1
                   39309: 12     75      2       1
                   39310: ``     50      2       170
                   39311: ''     50      2       186
                   39312: 0707070014230361721006440057030057030000011041720522627502300002500000002046post.src/devopost/AX# AvantGarde-DemiOblique
                   39313: name AX
                   39314: internalname 28
                   39315: ligatures fi fl 0
                   39316: charset
                   39317: !      28      2       33
                   39318: $      56      2       36
                   39319: %      86      2       37
                   39320: &      68      2       38
                   39321: '      28      2       39
                   39322: (      38      3       40
                   39323: )      38      3       41
                   39324: *      44      2       42
                   39325: +      60      0       43
                   39326: ,      28      1       44
                   39327: hy     42      0       45
                   39328: -      "
                   39329: .      28      0       46
                   39330: /      46      3       47
                   39331: 0      56      2       48
                   39332: 1      56      2       49
                   39333: 2      56      2       50
                   39334: 3      56      2       51
                   39335: 4      56      2       52
                   39336: 5      56      2       53
                   39337: 6      56      2       54
                   39338: 7      56      2       55
                   39339: 8      56      2       56
                   39340: 9      56      2       57
                   39341: :      28      0       58
                   39342: ;      28      1       59
                   39343: =      60      0       61
                   39344: ?      56      2       63
                   39345: A      74      2       65
                   39346: B      58      2       66
                   39347: C      78      2       67
                   39348: D      70      2       68
                   39349: E      52      2       69
                   39350: F      48      2       70
                   39351: G      84      2       71
                   39352: H      68      2       72
                   39353: I      28      2       73
                   39354: J      48      2       74
                   39355: K      62      2       75
                   39356: L      44      2       76
                   39357: M      90      2       77
                   39358: N      74      2       78
                   39359: O      84      2       79
                   39360: P      56      2       80
                   39361: Q      84      2       81
                   39362: R      58      2       82
                   39363: S      52      2       83
                   39364: T      42      2       84
                   39365: U      64      2       85
                   39366: V      70      2       86
                   39367: W      90      2       87
                   39368: X      68      2       88
                   39369: Y      62      2       89
                   39370: Z      50      2       90
                   39371: [      32      3       91
                   39372: ]      32      3       93
                   39373: `      28      2       96
                   39374: a      66      0       97
                   39375: b      66      2       98
                   39376: c      64      0       99
                   39377: d      66      2       100
                   39378: e      64      0       101
                   39379: f      28      2       102
                   39380: g      66      1       103
                   39381: h      60      2       104
                   39382: i      24      2       105
                   39383: j      26      3       106
                   39384: k      58      2       107
                   39385: l      24      2       108
                   39386: m      94      0       109
                   39387: n      60      0       110
                   39388: o      64      0       111
                   39389: p      66      1       112
                   39390: q      66      1       113
                   39391: r      32      0       114
                   39392: s      44      0       115
                   39393: t      30      2       116
                   39394: u      60      0       117
                   39395: v      56      0       118
                   39396: w      80      0       119
                   39397: x      56      0       120
                   39398: y      58      1       121
                   39399: z      46      0       122
                   39400: ct     56      2       162
                   39401: fi     52      2       174
                   39402: fl     52      2       175
                   39403: dg     56      3       178
                   39404: bu     60      0       183
                   39405: de     36      2       202
                   39406: em     100     0       208
                   39407: 14     75      2       1
                   39408: 34     75      2       1
                   39409: 12     75      2       1
                   39410: ``     48      2       170
                   39411: ''     48      2       186
                   39412: 0707070014230361731006440057030057030000011041740522627502300002400000002102post.src/devopost/B# Times-Bold
                   39413: name B
                   39414: internalname 3
                   39415: ligatures fi fl 0
                   39416: charset
                   39417: !      33      2       33
                   39418: $      50      3       36
                   39419: %      100     2       37
                   39420: &      83      2       38
                   39421: '      33      2       39
                   39422: (      33      3       40
                   39423: )      33      3       41
                   39424: *      50      2       42
                   39425: +      57      0       43
                   39426: ,      25      1       44
                   39427: hy     33      0       45
                   39428: -      "
                   39429: .      25      0       46
                   39430: /      28      2       47
                   39431: 0      50      2       48
                   39432: 1      50      2       49
                   39433: 2      50      2       50
                   39434: 3      50      2       51
                   39435: 4      50      2       52
                   39436: 5      50      2       53
                   39437: 6      50      2       54
                   39438: 7      50      2       55
                   39439: 8      50      2       56
                   39440: 9      50      2       57
                   39441: :      33      0       58
                   39442: ;      33      1       59
                   39443: =      57      0       61
                   39444: ?      50      2       63
                   39445: A      72      2       65
                   39446: B      67      2       66
                   39447: C      72      2       67
                   39448: D      72      2       68
                   39449: E      67      2       69
                   39450: F      61      2       70
                   39451: G      78      2       71
                   39452: H      78      2       72
                   39453: I      39      2       73
                   39454: J      50      2       74
                   39455: K      78      2       75
                   39456: L      67      2       76
                   39457: M      94      2       77
                   39458: N      72      2       78
                   39459: O      78      2       79
                   39460: P      61      2       80
                   39461: Q      78      3       81
                   39462: R      72      2       82
                   39463: S      56      2       83
                   39464: T      67      2       84
                   39465: U      72      2       85
                   39466: V      72      2       86
                   39467: W      100     2       87
                   39468: X      72      2       88
                   39469: Y      72      2       89
                   39470: Z      67      2       90
                   39471: [      33      3       91
                   39472: ]      33      3       93
                   39473: `      33      2       96
                   39474: a      50      0       97
                   39475: b      56      2       98
                   39476: c      44      0       99
                   39477: d      56      2       100
                   39478: e      44      0       101
                   39479: f      33      2       102
                   39480: g      50      1       103
                   39481: h      56      2       104
                   39482: i      28      2       105
                   39483: j      33      3       106
                   39484: k      56      2       107
                   39485: l      28      2       108
                   39486: m      83      0       109
                   39487: n      56      0       110
                   39488: o      50      0       111
                   39489: p      56      1       112
                   39490: q      56      1       113
                   39491: r      44      0       114
                   39492: s      39      0       115
                   39493: t      33      2       116
                   39494: u      56      0       117
                   39495: v      50      0       118
                   39496: w      72      0       119
                   39497: x      50      0       120
                   39498: y      50      1       121
                   39499: z      44      0       122
                   39500: ct     50      3       162
                   39501: fi     56      2       174
                   39502: fl     56      2       175
                   39503: ff     60      2       1
                   39504: Fi     84      2       1
                   39505: Fl     84      2       1
                   39506: dg     50      3       178
                   39507: bu     35      0       183
                   39508: de     33      2       202
                   39509: em     100     0       208
                   39510: 14     75      2       1
                   39511: 34     75      2       1
                   39512: 12     75      2       1
                   39513: sq     50      2       1
                   39514: ``     50      2       170
                   39515: ''     50      2       186
                   39516: 0707070014230361741006440057030057030000011041760522627502400002500000002037post.src/devopost/BI# Times-BoldItalic
                   39517: name BI
                   39518: internalname 4
                   39519: ligatures fi fl 0
                   39520: charset
                   39521: !      39      2       33
                   39522: $      50      2       36
                   39523: %      83      2       37
                   39524: &      78      2       38
                   39525: '      33      2       39
                   39526: (      33      3       40
                   39527: )      33      3       41
                   39528: *      50      2       42
                   39529: +      57      0       43
                   39530: ,      25      1       44
                   39531: hy     33      0       45
                   39532: -      "
                   39533: .      25      0       46
                   39534: /      28      2       47
                   39535: 0      50      2       48
                   39536: 1      50      2       49
                   39537: 2      50      2       50
                   39538: 3      50      2       51
                   39539: 4      50      2       52
                   39540: 5      50      2       53
                   39541: 6      50      2       54
                   39542: 7      50      2       55
                   39543: 8      50      2       56
                   39544: 9      50      2       57
                   39545: :      33      0       58
                   39546: ;      33      1       59
                   39547: =      57      0       61
                   39548: ?      50      2       63
                   39549: A      67      2       65
                   39550: B      67      2       66
                   39551: C      67      2       67
                   39552: D      72      2       68
                   39553: E      67      2       69
                   39554: F      67      2       70
                   39555: G      72      2       71
                   39556: H      78      2       72
                   39557: I      39      2       73
                   39558: J      50      2       74
                   39559: K      67      2       75
                   39560: L      61      2       76
                   39561: M      89      2       77
                   39562: N      72      2       78
                   39563: O      72      2       79
                   39564: P      61      2       80
                   39565: Q      72      3       81
                   39566: R      67      2       82
                   39567: S      56      2       83
                   39568: T      61      2       84
                   39569: U      72      2       85
                   39570: V      67      2       86
                   39571: W      89      2       87
                   39572: X      67      2       88
                   39573: Y      61      2       89
                   39574: Z      61      2       90
                   39575: [      33      3       91
                   39576: ]      33      3       93
                   39577: `      33      2       96
                   39578: a      50      0       97
                   39579: b      50      2       98
                   39580: c      44      0       99
                   39581: d      50      2       100
                   39582: e      44      0       101
                   39583: f      33      3       102
                   39584: g      50      1       103
                   39585: h      56      2       104
                   39586: i      28      2       105
                   39587: j      28      3       106
                   39588: k      50      2       107
                   39589: l      28      2       108
                   39590: m      78      0       109
                   39591: n      56      0       110
                   39592: o      50      0       111
                   39593: p      50      1       112
                   39594: q      50      1       113
                   39595: r      39      0       114
                   39596: s      39      0       115
                   39597: t      28      2       116
                   39598: u      56      0       117
                   39599: v      44      0       118
                   39600: w      67      0       119
                   39601: x      50      0       120
                   39602: y      44      1       121
                   39603: z      39      0       122
                   39604: ct     50      3       162
                   39605: fi     56      3       174
                   39606: fl     56      3       175
                   39607: dg     50      3       178
                   39608: bu     35      0       183
                   39609: de     33      2       202
                   39610: em     100     0       208
                   39611: 14     75      2       1
                   39612: 34     75      2       1
                   39613: 12     75      2       1
                   39614: ``     50      2       170
                   39615: ''     50      2       186
                   39616: 0707070014230361751006440057030057030000011042300522627502400002500000002213post.src/devopost/CB# Courier-Bold
                   39617: name CB
                   39618: internalname 7
                   39619: spacewidth 60
                   39620: charset
                   39621: !      60      2       33
                   39622: "      60      2       34
                   39623: #      60      2       35
                   39624: $      60      2       36
                   39625: %      60      2       37
                   39626: &      60      2       38
                   39627: '      60      2       39
                   39628: (      60      3       40
                   39629: )      60      3       41
                   39630: *      60      2       42
                   39631: +      60      0       43
                   39632: ,      60      1       44
                   39633: hy     60      0       45
                   39634: -      "
                   39635: .      60      0       46
                   39636: /      60      2       47
                   39637: 0      60      2       48
                   39638: 1      60      2       49
                   39639: 2      60      2       50
                   39640: 3      60      2       51
                   39641: 4      60      2       52
                   39642: 5      60      2       53
                   39643: 6      60      2       54
                   39644: 7      60      2       55
                   39645: 8      60      2       56
                   39646: 9      60      2       57
                   39647: :      60      0       58
                   39648: ;      60      1       59
                   39649: <      60      2       60
                   39650: =      60      0       61
                   39651: >      60      2       62
                   39652: ?      60      2       63
                   39653: @      60      2       64
                   39654: A      60      2       65
                   39655: B      60      2       66
                   39656: C      60      2       67
                   39657: D      60      2       68
                   39658: E      60      2       69
                   39659: F      60      2       70
                   39660: G      60      2       71
                   39661: H      60      2       72
                   39662: I      60      2       73
                   39663: J      60      2       74
                   39664: K      60      2       75
                   39665: L      60      2       76
                   39666: M      60      2       77
                   39667: N      60      2       78
                   39668: O      60      2       79
                   39669: P      60      2       80
                   39670: Q      60      3       81
                   39671: R      60      2       82
                   39672: S      60      2       83
                   39673: T      60      2       84
                   39674: U      60      2       85
                   39675: V      60      2       86
                   39676: W      60      2       87
                   39677: X      60      2       88
                   39678: Y      60      2       89
                   39679: Z      60      2       90
                   39680: [      60      3       91
                   39681: \      60      3       92
                   39682: ]      60      3       93
                   39683: ^      60      2       94
                   39684: _      60      1       95
                   39685: `      60      2       96
                   39686: a      60      0       97
                   39687: b      60      2       98
                   39688: c      60      0       99
                   39689: d      60      2       100
                   39690: e      60      0       101
                   39691: f      60      2       102
                   39692: g      60      1       103
                   39693: h      60      2       104
                   39694: i      60      2       105
                   39695: j      60      3       106
                   39696: k      60      2       107
                   39697: l      60      2       108
                   39698: m      60      0       109
                   39699: n      60      0       110
                   39700: o      60      0       111
                   39701: p      60      1       112
                   39702: q      60      1       113
                   39703: r      60      0       114
                   39704: s      60      0       115
                   39705: t      60      2       116
                   39706: u      60      0       117
                   39707: v      60      0       118
                   39708: w      60      0       119
                   39709: x      60      0       120
                   39710: y      60      1       121
                   39711: z      60      0       122
                   39712: {      60      3       123
                   39713: |      60      3       124
                   39714: }      60      3       125
                   39715: ~      60      0       126
                   39716: ct     60      2       162
                   39717: \-     60      0       177
                   39718: en     "
                   39719: dg     60      3       178
                   39720: bu     60      0       183
                   39721: de     60      2       202
                   39722: em     60      0       208
                   39723: 14     60      2       1
                   39724: 34     60      2       1
                   39725: 12     60      2       1
                   39726: ``     60      2       170
                   39727: ''     60      2       186
                   39728: 0707070014230361761006440057030057030000011042320522627502400002500000002216post.src/devopost/CI# Courier-Oblique
                   39729: name CI
                   39730: internalname 6
                   39731: spacewidth 60
                   39732: charset
                   39733: !      60      2       33
                   39734: "      60      2       34
                   39735: #      60      2       35
                   39736: $      60      2       36
                   39737: %      60      2       37
                   39738: &      60      2       38
                   39739: '      60      2       39
                   39740: (      60      3       40
                   39741: )      60      3       41
                   39742: *      60      2       42
                   39743: +      60      0       43
                   39744: ,      60      1       44
                   39745: hy     60      0       45
                   39746: -      "
                   39747: .      60      0       46
                   39748: /      60      2       47
                   39749: 0      60      2       48
                   39750: 1      60      2       49
                   39751: 2      60      2       50
                   39752: 3      60      2       51
                   39753: 4      60      2       52
                   39754: 5      60      2       53
                   39755: 6      60      2       54
                   39756: 7      60      2       55
                   39757: 8      60      2       56
                   39758: 9      60      2       57
                   39759: :      60      0       58
                   39760: ;      60      1       59
                   39761: <      60      2       60
                   39762: =      60      0       61
                   39763: >      60      2       62
                   39764: ?      60      2       63
                   39765: @      60      2       64
                   39766: A      60      2       65
                   39767: B      60      2       66
                   39768: C      60      2       67
                   39769: D      60      2       68
                   39770: E      60      2       69
                   39771: F      60      2       70
                   39772: G      60      2       71
                   39773: H      60      2       72
                   39774: I      60      2       73
                   39775: J      60      2       74
                   39776: K      60      2       75
                   39777: L      60      2       76
                   39778: M      60      2       77
                   39779: N      60      2       78
                   39780: O      60      2       79
                   39781: P      60      2       80
                   39782: Q      60      3       81
                   39783: R      60      2       82
                   39784: S      60      2       83
                   39785: T      60      2       84
                   39786: U      60      2       85
                   39787: V      60      2       86
                   39788: W      60      2       87
                   39789: X      60      2       88
                   39790: Y      60      2       89
                   39791: Z      60      2       90
                   39792: [      60      3       91
                   39793: \      60      3       92
                   39794: ]      60      3       93
                   39795: ^      60      2       94
                   39796: _      60      1       95
                   39797: `      60      2       96
                   39798: a      60      0       97
                   39799: b      60      2       98
                   39800: c      60      0       99
                   39801: d      60      2       100
                   39802: e      60      0       101
                   39803: f      60      2       102
                   39804: g      60      1       103
                   39805: h      60      2       104
                   39806: i      60      2       105
                   39807: j      60      3       106
                   39808: k      60      2       107
                   39809: l      60      2       108
                   39810: m      60      0       109
                   39811: n      60      0       110
                   39812: o      60      0       111
                   39813: p      60      1       112
                   39814: q      60      1       113
                   39815: r      60      0       114
                   39816: s      60      0       115
                   39817: t      60      2       116
                   39818: u      60      0       117
                   39819: v      60      0       118
                   39820: w      60      0       119
                   39821: x      60      0       120
                   39822: y      60      1       121
                   39823: z      60      0       122
                   39824: {      60      3       123
                   39825: |      60      3       124
                   39826: }      60      3       125
                   39827: ~      60      0       126
                   39828: ct     60      2       162
                   39829: \-     60      0       177
                   39830: en     "
                   39831: dg     60      3       178
                   39832: bu     60      0       183
                   39833: de     60      2       202
                   39834: em     60      0       208
                   39835: 14     60      2       1
                   39836: 34     60      2       1
                   39837: 12     60      2       1
                   39838: ``     60      2       170
                   39839: ''     60      2       186
                   39840: 0707070014230361771006440057030057030000011042340522627502400002500000002206post.src/devopost/CO# Courier
                   39841: name CW
                   39842: internalname 5
                   39843: spacewidth 60
                   39844: charset
                   39845: !      60      2       33
                   39846: "      60      2       34
                   39847: #      60      2       35
                   39848: $      60      2       36
                   39849: %      60      2       37
                   39850: &      60      2       38
                   39851: '      60      2       39
                   39852: (      60      3       40
                   39853: )      60      3       41
                   39854: *      60      2       42
                   39855: +      60      0       43
                   39856: ,      60      1       44
                   39857: hy     60      0       45
                   39858: -      "
                   39859: .      60      0       46
                   39860: /      60      2       47
                   39861: 0      60      2       48
                   39862: 1      60      2       49
                   39863: 2      60      2       50
                   39864: 3      60      2       51
                   39865: 4      60      2       52
                   39866: 5      60      2       53
                   39867: 6      60      2       54
                   39868: 7      60      2       55
                   39869: 8      60      2       56
                   39870: 9      60      2       57
                   39871: :      60      0       58
                   39872: ;      60      1       59
                   39873: <      60      2       60
                   39874: =      60      0       61
                   39875: >      60      2       62
                   39876: ?      60      2       63
                   39877: @      60      2       64
                   39878: A      60      2       65
                   39879: B      60      2       66
                   39880: C      60      2       67
                   39881: D      60      2       68
                   39882: E      60      2       69
                   39883: F      60      2       70
                   39884: G      60      2       71
                   39885: H      60      2       72
                   39886: I      60      2       73
                   39887: J      60      2       74
                   39888: K      60      2       75
                   39889: L      60      2       76
                   39890: M      60      2       77
                   39891: N      60      2       78
                   39892: O      60      2       79
                   39893: P      60      2       80
                   39894: Q      60      3       81
                   39895: R      60      2       82
                   39896: S      60      2       83
                   39897: T      60      2       84
                   39898: U      60      2       85
                   39899: V      60      2       86
                   39900: W      60      2       87
                   39901: X      60      2       88
                   39902: Y      60      2       89
                   39903: Z      60      2       90
                   39904: [      60      3       91
                   39905: \      60      3       92
                   39906: ]      60      3       93
                   39907: ^      60      2       94
                   39908: _      60      1       95
                   39909: `      60      2       96
                   39910: a      60      0       97
                   39911: b      60      2       98
                   39912: c      60      0       99
                   39913: d      60      2       100
                   39914: e      60      0       101
                   39915: f      60      2       102
                   39916: g      60      1       103
                   39917: h      60      2       104
                   39918: i      60      2       105
                   39919: j      60      3       106
                   39920: k      60      2       107
                   39921: l      60      2       108
                   39922: m      60      0       109
                   39923: n      60      0       110
                   39924: o      60      0       111
                   39925: p      60      1       112
                   39926: q      60      1       113
                   39927: r      60      0       114
                   39928: s      60      0       115
                   39929: t      60      2       116
                   39930: u      60      0       117
                   39931: v      60      0       118
                   39932: w      60      0       119
                   39933: x      60      0       120
                   39934: y      60      1       121
                   39935: z      60      0       122
                   39936: {      60      3       123
                   39937: |      60      3       124
                   39938: }      60      3       125
                   39939: ~      60      0       126
                   39940: ct     60      2       162
                   39941: \-     60      0       177
                   39942: en     "
                   39943: dg     60      3       178
                   39944: bu     60      0       183
                   39945: de     60      2       202
                   39946: em     60      0       208
                   39947: 14     60      2       1
                   39948: 34     60      2       1
                   39949: 12     60      2       1
                   39950: ``     60      2       170
                   39951: ''     60      2       186
                   39952: 0707070014230362001006440057030057030000011042360522627502400002500000002206post.src/devopost/CW# Courier
                   39953: name CW
                   39954: internalname 5
                   39955: spacewidth 60
                   39956: charset
                   39957: !      60      2       33
                   39958: "      60      2       34
                   39959: #      60      2       35
                   39960: $      60      2       36
                   39961: %      60      2       37
                   39962: &      60      2       38
                   39963: '      60      2       39
                   39964: (      60      3       40
                   39965: )      60      3       41
                   39966: *      60      2       42
                   39967: +      60      0       43
                   39968: ,      60      1       44
                   39969: hy     60      0       45
                   39970: -      "
                   39971: .      60      0       46
                   39972: /      60      2       47
                   39973: 0      60      2       48
                   39974: 1      60      2       49
                   39975: 2      60      2       50
                   39976: 3      60      2       51
                   39977: 4      60      2       52
                   39978: 5      60      2       53
                   39979: 6      60      2       54
                   39980: 7      60      2       55
                   39981: 8      60      2       56
                   39982: 9      60      2       57
                   39983: :      60      0       58
                   39984: ;      60      1       59
                   39985: <      60      2       60
                   39986: =      60      0       61
                   39987: >      60      2       62
                   39988: ?      60      2       63
                   39989: @      60      2       64
                   39990: A      60      2       65
                   39991: B      60      2       66
                   39992: C      60      2       67
                   39993: D      60      2       68
                   39994: E      60      2       69
                   39995: F      60      2       70
                   39996: G      60      2       71
                   39997: H      60      2       72
                   39998: I      60      2       73
                   39999: J      60      2       74
                   40000: K      60      2       75
                   40001: L      60      2       76
                   40002: M      60      2       77
                   40003: N      60      2       78
                   40004: O      60      2       79
                   40005: P      60      2       80
                   40006: Q      60      3       81
                   40007: R      60      2       82
                   40008: S      60      2       83
                   40009: T      60      2       84
                   40010: U      60      2       85
                   40011: V      60      2       86
                   40012: W      60      2       87
                   40013: X      60      2       88
                   40014: Y      60      2       89
                   40015: Z      60      2       90
                   40016: [      60      3       91
                   40017: \      60      3       92
                   40018: ]      60      3       93
                   40019: ^      60      2       94
                   40020: _      60      1       95
                   40021: `      60      2       96
                   40022: a      60      0       97
                   40023: b      60      2       98
                   40024: c      60      0       99
                   40025: d      60      2       100
                   40026: e      60      0       101
                   40027: f      60      2       102
                   40028: g      60      1       103
                   40029: h      60      2       104
                   40030: i      60      2       105
                   40031: j      60      3       106
                   40032: k      60      2       107
                   40033: l      60      2       108
                   40034: m      60      0       109
                   40035: n      60      0       110
                   40036: o      60      0       111
                   40037: p      60      1       112
                   40038: q      60      1       113
                   40039: r      60      0       114
                   40040: s      60      0       115
                   40041: t      60      2       116
                   40042: u      60      0       117
                   40043: v      60      0       118
                   40044: w      60      0       119
                   40045: x      60      0       120
                   40046: y      60      1       121
                   40047: z      60      0       122
                   40048: {      60      3       123
                   40049: |      60      3       124
                   40050: }      60      3       125
                   40051: ~      60      0       126
                   40052: ct     60      2       162
                   40053: \-     60      0       177
                   40054: en     "
                   40055: dg     60      3       178
                   40056: bu     60      0       183
                   40057: de     60      2       202
                   40058: em     60      0       208
                   40059: 14     60      2       1
                   40060: 34     60      2       1
                   40061: 12     60      2       1
                   40062: ``     60      2       170
                   40063: ''     60      2       186
                   40064: 0707070014230362011006440057030057030000011042500522627502400002500000002222post.src/devopost/CX# Courier-BoldOblique
                   40065: name CX
                   40066: internalname 8
                   40067: spacewidth 60
                   40068: charset
                   40069: !      60      2       33
                   40070: "      60      2       34
                   40071: #      60      2       35
                   40072: $      60      2       36
                   40073: %      60      2       37
                   40074: &      60      2       38
                   40075: '      60      2       39
                   40076: (      60      3       40
                   40077: )      60      3       41
                   40078: *      60      2       42
                   40079: +      60      0       43
                   40080: ,      60      1       44
                   40081: hy     60      0       45
                   40082: -      "
                   40083: .      60      0       46
                   40084: /      60      2       47
                   40085: 0      60      2       48
                   40086: 1      60      2       49
                   40087: 2      60      2       50
                   40088: 3      60      2       51
                   40089: 4      60      2       52
                   40090: 5      60      2       53
                   40091: 6      60      2       54
                   40092: 7      60      2       55
                   40093: 8      60      2       56
                   40094: 9      60      2       57
                   40095: :      60      0       58
                   40096: ;      60      1       59
                   40097: <      60      2       60
                   40098: =      60      0       61
                   40099: >      60      2       62
                   40100: ?      60      2       63
                   40101: @      60      2       64
                   40102: A      60      2       65
                   40103: B      60      2       66
                   40104: C      60      2       67
                   40105: D      60      2       68
                   40106: E      60      2       69
                   40107: F      60      2       70
                   40108: G      60      2       71
                   40109: H      60      2       72
                   40110: I      60      2       73
                   40111: J      60      2       74
                   40112: K      60      2       75
                   40113: L      60      2       76
                   40114: M      60      2       77
                   40115: N      60      2       78
                   40116: O      60      2       79
                   40117: P      60      2       80
                   40118: Q      60      3       81
                   40119: R      60      2       82
                   40120: S      60      2       83
                   40121: T      60      2       84
                   40122: U      60      2       85
                   40123: V      60      2       86
                   40124: W      60      2       87
                   40125: X      60      2       88
                   40126: Y      60      2       89
                   40127: Z      60      2       90
                   40128: [      60      3       91
                   40129: \      60      3       92
                   40130: ]      60      3       93
                   40131: ^      60      2       94
                   40132: _      60      1       95
                   40133: `      60      2       96
                   40134: a      60      0       97
                   40135: b      60      2       98
                   40136: c      60      0       99
                   40137: d      60      2       100
                   40138: e      60      0       101
                   40139: f      60      2       102
                   40140: g      60      1       103
                   40141: h      60      2       104
                   40142: i      60      2       105
                   40143: j      60      3       106
                   40144: k      60      2       107
                   40145: l      60      2       108
                   40146: m      60      0       109
                   40147: n      60      0       110
                   40148: o      60      0       111
                   40149: p      60      1       112
                   40150: q      60      1       113
                   40151: r      60      0       114
                   40152: s      60      0       115
                   40153: t      60      2       116
                   40154: u      60      0       117
                   40155: v      60      0       118
                   40156: w      60      0       119
                   40157: x      60      0       120
                   40158: y      60      1       121
                   40159: z      60      0       122
                   40160: {      60      3       123
                   40161: |      60      3       124
                   40162: }      60      3       125
                   40163: ~      60      0       126
                   40164: ct     60      2       162
                   40165: \-     60      0       177
                   40166: en     "
                   40167: dg     60      3       178
                   40168: bu     60      0       183
                   40169: de     60      2       202
                   40170: em     60      0       208
                   40171: 14     60      2       1
                   40172: 34     60      2       1
                   40173: 12     60      2       1
                   40174: ``     60      2       170
                   40175: ''     60      2       186
                   40176: 0707070014230362021006440057030057030000011041570522627502400002700000001431post.src/devopost/DESC#
                   40177: # Original PostScript tables - now obsolete and unsupported.
                   40178: #
                   40179: 
                   40180: PDL PostScript
                   40181: 
                   40182: fonts 10 R I B BI CW H HB HX S1 S
                   40183: sizes 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
                   40184: 24 25 26 27 28 29 30 31 32 33 34 35 36 38 40 44 48 54 60 72 0
                   40185: 
                   40186: res 720
                   40187: hor 1
                   40188: vert 1
                   40189: unitwidth 10
                   40190: biggestfont 200
                   40191: 
                   40192: charset
                   40193: hy ct fi fl ff Fi Fl dg em 14 34 12 \- en \' aa
                   40194: \` ga ru sc dd -> \e br Sl ps cs cy as os =. ld
                   40195: rd le ge pp -+
                   40196: sq bx ci fa te ** pl mi \< eq \> ~= *A *B *X *D
                   40197: *E *F *G *Y *I *K *L *M *N *O *P *R *H *S *T *U
                   40198: *W *C *Q *Z ul \_ rn *a *b *x *d *e *f *g *y *i
                   40199: *k *l *m *n *o *p *h *r *s *t *u *w *c *q *z \{
                   40200: \| \} ap fm <= sl if <- ua da de +- >= mu pt pd
                   40201: bu di != == ~~ al Ox O+ es ca cu sp ip sb ib mo
                   40202: gr rg co tm sr no \^ or lc lf lt lk lb bv is rc
                   40203: rf rt rk rb ts lh rh LV LH Lb L1 LA `` '' ob vr
                   40204: 0707070014230362031006440057030057030000011042520522627502400002500000001125post.src/devopost/GR# Greek
                   40205: name GR
                   40206: internalname 33
                   40207: special
                   40208: charset
                   40209: *a     63      0       97
                   40210: *b     55      3       98
                   40211: *g     41      1       103
                   40212: *d     49      2       100
                   40213: *e     44      0       101
                   40214: *z     49      3       122
                   40215: *y     60      1       104
                   40216: *h     52      2       113
                   40217: *i     33      0       105
                   40218: *k     55      0       107
                   40219: *l     55      2       108
                   40220: *m     58      1       109
                   40221: *n     52      0       110
                   40222: *c     49      3       120
                   40223: *o     55      0       111
                   40224: *p     55      0       112
                   40225: *r     55      1       114
                   40226: *s     60      0       115
                   40227: *t     44      0       116
                   40228: *u     58      0       117
                   40229: *f     52      3       102
                   40230: *x     55      1       99
                   40231: *q     69      1       121
                   40232: *w     69      0       119
                   40233: *A     72      2       65
                   40234: *B     67      2       66
                   40235: *G     60      2       71
                   40236: *D     61      2       68
                   40237: *E     61      2       69
                   40238: *Z     61      2       90
                   40239: *Y     72      2       72
                   40240: *H     74      2       81
                   40241: *R     56      2       82
                   40242: *I     33      2       73
                   40243: *K     72      2       75
                   40244: *L     69      2       76
                   40245: *M     89      2       77
                   40246: *N     72      2       78
                   40247: *C     65      2       88
                   40248: *O     72      2       79
                   40249: *P     77      2       80
                   40250: *S     59      2       83
                   40251: *T     61      2       84
                   40252: *U     69      2       85
                   40253: *F     76      2       70
                   40254: *X     72      2       67
                   40255: *Q     80      2       89
                   40256: *W     77      2       87
                   40257: 0707070014230362041006440057030057030000011042530522627502400002400000002027post.src/devopost/H# Helvetica
                   40258: name H
                   40259: internalname 9
                   40260: ligatures fi fl 0
                   40261: charset
                   40262: !      28      2       33
                   40263: $      56      3       36
                   40264: %      89      2       37
                   40265: &      67      2       38
                   40266: '      22      2       39
                   40267: (      33      3       40
                   40268: )      33      3       41
                   40269: *      39      2       42
                   40270: +      58      0       43
                   40271: ,      28      1       44
                   40272: hy     33      0       45
                   40273: -      "
                   40274: .      28      0       46
                   40275: /      28      2       47
                   40276: 0      56      2       48
                   40277: 1      56      2       49
                   40278: 2      56      2       50
                   40279: 3      56      2       51
                   40280: 4      56      2       52
                   40281: 5      56      2       53
                   40282: 6      56      2       54
                   40283: 7      56      2       55
                   40284: 8      56      2       56
                   40285: 9      56      2       57
                   40286: :      28      0       58
                   40287: ;      28      1       59
                   40288: =      58      0       61
                   40289: ?      56      2       63
                   40290: A      67      2       65
                   40291: B      67      2       66
                   40292: C      72      2       67
                   40293: D      72      2       68
                   40294: E      67      2       69
                   40295: F      61      2       70
                   40296: G      78      2       71
                   40297: H      72      2       72
                   40298: I      28      2       73
                   40299: J      50      2       74
                   40300: K      67      2       75
                   40301: L      56      2       76
                   40302: M      83      2       77
                   40303: N      72      2       78
                   40304: O      78      2       79
                   40305: P      67      2       80
                   40306: Q      78      2       81
                   40307: R      72      2       82
                   40308: S      67      2       83
                   40309: T      61      2       84
                   40310: U      72      2       85
                   40311: V      67      2       86
                   40312: W      94      2       87
                   40313: X      67      2       88
                   40314: Y      67      2       89
                   40315: Z      61      2       90
                   40316: [      28      3       91
                   40317: ]      28      3       93
                   40318: `      22      2       96
                   40319: a      56      0       97
                   40320: b      56      2       98
                   40321: c      50      0       99
                   40322: d      56      2       100
                   40323: e      56      0       101
                   40324: f      28      2       102
                   40325: g      56      1       103
                   40326: h      56      2       104
                   40327: i      22      2       105
                   40328: j      22      3       106
                   40329: k      50      2       107
                   40330: l      22      2       108
                   40331: m      83      0       109
                   40332: n      56      0       110
                   40333: o      56      0       111
                   40334: p      56      1       112
                   40335: q      56      1       113
                   40336: r      33      0       114
                   40337: s      50      0       115
                   40338: t      28      2       116
                   40339: u      56      0       117
                   40340: v      50      0       118
                   40341: w      72      0       119
                   40342: x      50      0       120
                   40343: y      50      1       121
                   40344: z      50      0       122
                   40345: ct     56      3       162
                   40346: fi     50      2       174
                   40347: fl     50      2       175
                   40348: dg     56      3       178
                   40349: bu     35      0       183
                   40350: de     33      2       202
                   40351: em     100     0       208
                   40352: 14     75      2       1
                   40353: 34     75      2       1
                   40354: 12     75      2       1
                   40355: ``     33      2       170
                   40356: ''     33      2       186
                   40357: 0707070014230362051006440057030057030000011042550522627502400002500000002036post.src/devopost/HB# Helvetica-Bold
                   40358: name HB
                   40359: internalname 11
                   40360: ligatures fi fl 0
                   40361: charset
                   40362: !      33      2       33
                   40363: $      56      3       36
                   40364: %      89      2       37
                   40365: &      72      2       38
                   40366: '      28      2       39
                   40367: (      33      3       40
                   40368: )      33      3       41
                   40369: *      39      2       42
                   40370: +      58      0       43
                   40371: ,      28      1       44
                   40372: hy     33      0       45
                   40373: -      "
                   40374: .      28      0       46
                   40375: /      28      2       47
                   40376: 0      56      2       48
                   40377: 1      56      2       49
                   40378: 2      56      2       50
                   40379: 3      56      2       51
                   40380: 4      56      2       52
                   40381: 5      56      2       53
                   40382: 6      56      2       54
                   40383: 7      56      2       55
                   40384: 8      56      2       56
                   40385: 9      56      2       57
                   40386: :      33      0       58
                   40387: ;      33      1       59
                   40388: =      58      0       61
                   40389: ?      61      2       63
                   40390: A      72      2       65
                   40391: B      72      2       66
                   40392: C      72      2       67
                   40393: D      72      2       68
                   40394: E      67      2       69
                   40395: F      61      2       70
                   40396: G      78      2       71
                   40397: H      72      2       72
                   40398: I      28      2       73
                   40399: J      56      2       74
                   40400: K      72      2       75
                   40401: L      61      2       76
                   40402: M      83      2       77
                   40403: N      72      2       78
                   40404: O      78      2       79
                   40405: P      67      2       80
                   40406: Q      78      2       81
                   40407: R      72      2       82
                   40408: S      67      2       83
                   40409: T      61      2       84
                   40410: U      72      2       85
                   40411: V      67      2       86
                   40412: W      94      2       87
                   40413: X      67      2       88
                   40414: Y      67      2       89
                   40415: Z      61      2       90
                   40416: [      33      3       91
                   40417: ]      33      3       93
                   40418: `      28      2       96
                   40419: a      56      0       97
                   40420: b      61      2       98
                   40421: c      56      0       99
                   40422: d      61      2       100
                   40423: e      56      0       101
                   40424: f      33      2       102
                   40425: g      61      1       103
                   40426: h      61      2       104
                   40427: i      28      2       105
                   40428: j      28      3       106
                   40429: k      56      2       107
                   40430: l      28      2       108
                   40431: m      89      0       109
                   40432: n      61      0       110
                   40433: o      61      0       111
                   40434: p      61      1       112
                   40435: q      61      1       113
                   40436: r      39      0       114
                   40437: s      56      0       115
                   40438: t      33      2       116
                   40439: u      61      0       117
                   40440: v      56      0       118
                   40441: w      78      0       119
                   40442: x      56      0       120
                   40443: y      56      1       121
                   40444: z      50      0       122
                   40445: ct     56      3       162
                   40446: fi     61      2       174
                   40447: fl     61      2       175
                   40448: dg     56      3       178
                   40449: bu     35      0       183
                   40450: de     33      2       202
                   40451: em     100     0       208
                   40452: 14     75      2       1
                   40453: 34     75      2       1
                   40454: 12     75      2       1
                   40455: ``     50      2       170
                   40456: ''     50      2       186
                   40457: 0707070014230362061006440057030057030000011042700522627502400002500000002041post.src/devopost/HI# Helvetica-Oblique
                   40458: name HI
                   40459: internalname 10
                   40460: ligatures fi fl 0
                   40461: charset
                   40462: !      28      2       33
                   40463: $      56      3       36
                   40464: %      89      2       37
                   40465: &      67      2       38
                   40466: '      22      2       39
                   40467: (      33      3       40
                   40468: )      33      3       41
                   40469: *      39      2       42
                   40470: +      58      0       43
                   40471: ,      28      1       44
                   40472: hy     33      0       45
                   40473: -      "
                   40474: .      28      0       46
                   40475: /      28      2       47
                   40476: 0      56      2       48
                   40477: 1      56      2       49
                   40478: 2      56      2       50
                   40479: 3      56      2       51
                   40480: 4      56      2       52
                   40481: 5      56      2       53
                   40482: 6      56      2       54
                   40483: 7      56      2       55
                   40484: 8      56      2       56
                   40485: 9      56      2       57
                   40486: :      28      0       58
                   40487: ;      28      1       59
                   40488: =      58      0       61
                   40489: ?      56      2       63
                   40490: A      67      2       65
                   40491: B      67      2       66
                   40492: C      72      2       67
                   40493: D      72      2       68
                   40494: E      67      2       69
                   40495: F      61      2       70
                   40496: G      78      2       71
                   40497: H      72      2       72
                   40498: I      28      2       73
                   40499: J      50      2       74
                   40500: K      67      2       75
                   40501: L      56      2       76
                   40502: M      83      2       77
                   40503: N      72      2       78
                   40504: O      78      2       79
                   40505: P      67      2       80
                   40506: Q      78      2       81
                   40507: R      72      2       82
                   40508: S      67      2       83
                   40509: T      61      2       84
                   40510: U      72      2       85
                   40511: V      67      2       86
                   40512: W      94      2       87
                   40513: X      67      2       88
                   40514: Y      67      2       89
                   40515: Z      61      2       90
                   40516: [      28      3       91
                   40517: ]      28      3       93
                   40518: `      22      2       96
                   40519: a      56      0       97
                   40520: b      56      2       98
                   40521: c      50      0       99
                   40522: d      56      2       100
                   40523: e      56      0       101
                   40524: f      28      2       102
                   40525: g      56      1       103
                   40526: h      56      2       104
                   40527: i      22      2       105
                   40528: j      22      3       106
                   40529: k      50      2       107
                   40530: l      22      2       108
                   40531: m      83      0       109
                   40532: n      56      0       110
                   40533: o      56      0       111
                   40534: p      56      1       112
                   40535: q      56      1       113
                   40536: r      33      0       114
                   40537: s      50      0       115
                   40538: t      28      2       116
                   40539: u      56      0       117
                   40540: v      50      0       118
                   40541: w      72      0       119
                   40542: x      50      0       120
                   40543: y      50      1       121
                   40544: z      50      0       122
                   40545: ct     56      3       162
                   40546: fi     50      2       174
                   40547: fl     50      2       175
                   40548: dg     56      3       178
                   40549: bu     35      0       183
                   40550: de     33      2       202
                   40551: em     100     0       208
                   40552: 14     75      2       1
                   40553: 34     75      2       1
                   40554: 12     75      2       1
                   40555: ``     33      2       170
                   40556: ''     33      2       186
                   40557: 0707070014230362071006440057030057030000011042720522627502400002500000002045post.src/devopost/HX# Helvetica-BoldOblique
                   40558: name HX
                   40559: internalname 12
                   40560: ligatures fi fl 0
                   40561: charset
                   40562: !      33      2       33
                   40563: $      56      3       36
                   40564: %      89      2       37
                   40565: &      72      2       38
                   40566: '      28      2       39
                   40567: (      33      3       40
                   40568: )      33      3       41
                   40569: *      39      2       42
                   40570: +      58      0       43
                   40571: ,      28      1       44
                   40572: hy     33      0       45
                   40573: -      "
                   40574: .      28      0       46
                   40575: /      28      2       47
                   40576: 0      56      2       48
                   40577: 1      56      2       49
                   40578: 2      56      2       50
                   40579: 3      56      2       51
                   40580: 4      56      2       52
                   40581: 5      56      2       53
                   40582: 6      56      2       54
                   40583: 7      56      2       55
                   40584: 8      56      2       56
                   40585: 9      56      2       57
                   40586: :      33      0       58
                   40587: ;      33      1       59
                   40588: =      58      0       61
                   40589: ?      61      2       63
                   40590: A      72      2       65
                   40591: B      72      2       66
                   40592: C      72      2       67
                   40593: D      72      2       68
                   40594: E      67      2       69
                   40595: F      61      2       70
                   40596: G      78      2       71
                   40597: H      72      2       72
                   40598: I      28      2       73
                   40599: J      56      2       74
                   40600: K      72      2       75
                   40601: L      61      2       76
                   40602: M      83      2       77
                   40603: N      72      2       78
                   40604: O      78      2       79
                   40605: P      67      2       80
                   40606: Q      78      2       81
                   40607: R      72      2       82
                   40608: S      67      2       83
                   40609: T      61      2       84
                   40610: U      72      2       85
                   40611: V      67      2       86
                   40612: W      94      2       87
                   40613: X      67      2       88
                   40614: Y      67      2       89
                   40615: Z      61      2       90
                   40616: [      33      3       91
                   40617: ]      33      3       93
                   40618: `      28      2       96
                   40619: a      56      0       97
                   40620: b      61      2       98
                   40621: c      56      0       99
                   40622: d      61      2       100
                   40623: e      56      0       101
                   40624: f      33      2       102
                   40625: g      61      1       103
                   40626: h      61      2       104
                   40627: i      28      2       105
                   40628: j      28      3       106
                   40629: k      56      2       107
                   40630: l      28      2       108
                   40631: m      89      0       109
                   40632: n      61      0       110
                   40633: o      61      0       111
                   40634: p      61      1       112
                   40635: q      61      1       113
                   40636: r      39      0       114
                   40637: s      56      0       115
                   40638: t      33      2       116
                   40639: u      61      0       117
                   40640: v      56      0       118
                   40641: w      78      0       119
                   40642: x      56      0       120
                   40643: y      56      1       121
                   40644: z      50      0       122
                   40645: ct     56      3       162
                   40646: fi     61      2       174
                   40647: fl     61      2       175
                   40648: dg     56      3       178
                   40649: bu     35      0       183
                   40650: de     33      2       202
                   40651: em     100     0       208
                   40652: 14     75      2       1
                   40653: 34     75      2       1
                   40654: 12     75      2       1
                   40655: ``     50      2       170
                   40656: ''     50      2       186
                   40657: 0707070014230362101006440057030057030000011042740522627502400002500000002044post.src/devopost/Hb# Helvetica-Narrow-Bold
                   40658: name Hb
                   40659: internalname 19
                   40660: ligatures fi fl 0
                   40661: charset
                   40662: !      27      2       33
                   40663: $      46      3       36
                   40664: %      73      2       37
                   40665: &      59      2       38
                   40666: '      23      2       39
                   40667: (      27      3       40
                   40668: )      27      3       41
                   40669: *      32      2       42
                   40670: +      48      0       43
                   40671: ,      23      1       44
                   40672: hy     27      0       45
                   40673: -      "
                   40674: .      23      0       46
                   40675: /      23      2       47
                   40676: 0      46      2       48
                   40677: 1      46      2       49
                   40678: 2      46      2       50
                   40679: 3      46      2       51
                   40680: 4      46      2       52
                   40681: 5      46      2       53
                   40682: 6      46      2       54
                   40683: 7      46      2       55
                   40684: 8      46      2       56
                   40685: 9      46      2       57
                   40686: :      27      0       58
                   40687: ;      27      1       59
                   40688: =      48      0       61
                   40689: ?      50      2       63
                   40690: A      59      2       65
                   40691: B      59      2       66
                   40692: C      59      2       67
                   40693: D      59      2       68
                   40694: E      55      2       69
                   40695: F      50      2       70
                   40696: G      64      2       71
                   40697: H      59      2       72
                   40698: I      23      2       73
                   40699: J      46      2       74
                   40700: K      59      2       75
                   40701: L      50      2       76
                   40702: M      68      2       77
                   40703: N      59      2       78
                   40704: O      64      2       79
                   40705: P      55      2       80
                   40706: Q      64      2       81
                   40707: R      59      2       82
                   40708: S      55      2       83
                   40709: T      50      2       84
                   40710: U      59      2       85
                   40711: V      55      2       86
                   40712: W      77      2       87
                   40713: X      55      2       88
                   40714: Y      55      2       89
                   40715: Z      50      2       90
                   40716: [      27      3       91
                   40717: ]      27      3       93
                   40718: `      23      2       96
                   40719: a      46      0       97
                   40720: b      50      2       98
                   40721: c      46      0       99
                   40722: d      50      2       100
                   40723: e      46      0       101
                   40724: f      27      2       102
                   40725: g      50      1       103
                   40726: h      50      2       104
                   40727: i      23      2       105
                   40728: j      23      3       106
                   40729: k      46      2       107
                   40730: l      23      2       108
                   40731: m      73      0       109
                   40732: n      50      0       110
                   40733: o      50      0       111
                   40734: p      50      1       112
                   40735: q      50      1       113
                   40736: r      32      0       114
                   40737: s      46      0       115
                   40738: t      27      2       116
                   40739: u      50      0       117
                   40740: v      46      0       118
                   40741: w      64      0       119
                   40742: x      46      0       120
                   40743: y      46      1       121
                   40744: z      41      0       122
                   40745: ct     46      3       162
                   40746: fi     50      2       174
                   40747: fl     50      2       175
                   40748: dg     46      3       178
                   40749: bu     29      0       183
                   40750: de     27      2       202
                   40751: em     82      0       208
                   40752: 14     75      2       1
                   40753: 34     75      2       1
                   40754: 12     75      2       1
                   40755: ``     41      2       170
                   40756: ''     41      2       186
                   40757: 0707070014230362111006440057030057030000011042760522627502400002500000002047post.src/devopost/Hi# Helvetica-Narrow-Oblique
                   40758: name Hi
                   40759: internalname 18
                   40760: ligatures fi fl 0
                   40761: charset
                   40762: !      23      2       33
                   40763: $      46      3       36
                   40764: %      73      2       37
                   40765: &      55      2       38
                   40766: '      18      2       39
                   40767: (      27      3       40
                   40768: )      27      3       41
                   40769: *      32      2       42
                   40770: +      48      0       43
                   40771: ,      23      1       44
                   40772: hy     27      0       45
                   40773: -      "
                   40774: .      23      0       46
                   40775: /      23      2       47
                   40776: 0      46      2       48
                   40777: 1      46      2       49
                   40778: 2      46      2       50
                   40779: 3      46      2       51
                   40780: 4      46      2       52
                   40781: 5      46      2       53
                   40782: 6      46      2       54
                   40783: 7      46      2       55
                   40784: 8      46      2       56
                   40785: 9      46      2       57
                   40786: :      23      0       58
                   40787: ;      23      1       59
                   40788: =      48      0       61
                   40789: ?      46      2       63
                   40790: A      55      2       65
                   40791: B      55      2       66
                   40792: C      59      2       67
                   40793: D      59      2       68
                   40794: E      55      2       69
                   40795: F      50      2       70
                   40796: G      64      2       71
                   40797: H      59      2       72
                   40798: I      23      2       73
                   40799: J      41      2       74
                   40800: K      55      2       75
                   40801: L      46      2       76
                   40802: M      68      2       77
                   40803: N      59      2       78
                   40804: O      64      2       79
                   40805: P      55      2       80
                   40806: Q      64      2       81
                   40807: R      59      2       82
                   40808: S      55      2       83
                   40809: T      50      2       84
                   40810: U      59      2       85
                   40811: V      55      2       86
                   40812: W      77      2       87
                   40813: X      55      2       88
                   40814: Y      55      2       89
                   40815: Z      50      2       90
                   40816: [      23      3       91
                   40817: ]      23      3       93
                   40818: `      18      2       96
                   40819: a      46      0       97
                   40820: b      46      2       98
                   40821: c      41      0       99
                   40822: d      46      2       100
                   40823: e      46      0       101
                   40824: f      23      2       102
                   40825: g      46      1       103
                   40826: h      46      2       104
                   40827: i      18      2       105
                   40828: j      18      3       106
                   40829: k      41      2       107
                   40830: l      18      2       108
                   40831: m      68      0       109
                   40832: n      46      0       110
                   40833: o      46      0       111
                   40834: p      46      1       112
                   40835: q      46      1       113
                   40836: r      27      0       114
                   40837: s      41      0       115
                   40838: t      23      2       116
                   40839: u      46      0       117
                   40840: v      41      0       118
                   40841: w      59      0       119
                   40842: x      41      0       120
                   40843: y      41      1       121
                   40844: z      41      0       122
                   40845: ct     46      3       162
                   40846: fi     41      2       174
                   40847: fl     41      2       175
                   40848: dg     46      3       178
                   40849: bu     29      0       183
                   40850: de     27      2       202
                   40851: em     82      0       208
                   40852: 14     75      2       1
                   40853: 34     75      2       1
                   40854: 12     75      2       1
                   40855: ``     27      2       170
                   40856: ''     27      2       186
                   40857: 0707070014230362121006440057030057030000011043300522627502400002500000002037post.src/devopost/Hr# Helvetica-Narrow
                   40858: name Hr
                   40859: internalname 17
                   40860: ligatures fi fl 0
                   40861: charset
                   40862: !      23      2       33
                   40863: $      46      3       36
                   40864: %      73      2       37
                   40865: &      55      2       38
                   40866: '      18      2       39
                   40867: (      27      3       40
                   40868: )      27      3       41
                   40869: *      32      2       42
                   40870: +      48      0       43
                   40871: ,      23      1       44
                   40872: hy     27      0       45
                   40873: -      "
                   40874: .      23      0       46
                   40875: /      23      2       47
                   40876: 0      46      2       48
                   40877: 1      46      2       49
                   40878: 2      46      2       50
                   40879: 3      46      2       51
                   40880: 4      46      2       52
                   40881: 5      46      2       53
                   40882: 6      46      2       54
                   40883: 7      46      2       55
                   40884: 8      46      2       56
                   40885: 9      46      2       57
                   40886: :      23      0       58
                   40887: ;      23      1       59
                   40888: =      48      0       61
                   40889: ?      46      2       63
                   40890: A      55      2       65
                   40891: B      55      2       66
                   40892: C      59      2       67
                   40893: D      59      2       68
                   40894: E      55      2       69
                   40895: F      50      2       70
                   40896: G      64      2       71
                   40897: H      59      2       72
                   40898: I      23      2       73
                   40899: J      41      2       74
                   40900: K      55      2       75
                   40901: L      46      2       76
                   40902: M      68      2       77
                   40903: N      59      2       78
                   40904: O      64      2       79
                   40905: P      55      2       80
                   40906: Q      64      2       81
                   40907: R      59      2       82
                   40908: S      55      2       83
                   40909: T      50      2       84
                   40910: U      59      2       85
                   40911: V      55      2       86
                   40912: W      77      2       87
                   40913: X      55      2       88
                   40914: Y      55      2       89
                   40915: Z      50      2       90
                   40916: [      23      3       91
                   40917: ]      23      3       93
                   40918: `      18      2       96
                   40919: a      46      0       97
                   40920: b      46      2       98
                   40921: c      41      0       99
                   40922: d      46      2       100
                   40923: e      46      0       101
                   40924: f      23      2       102
                   40925: g      46      1       103
                   40926: h      46      2       104
                   40927: i      18      2       105
                   40928: j      18      3       106
                   40929: k      41      2       107
                   40930: l      18      2       108
                   40931: m      68      0       109
                   40932: n      46      0       110
                   40933: o      46      0       111
                   40934: p      46      1       112
                   40935: q      46      1       113
                   40936: r      27      0       114
                   40937: s      41      0       115
                   40938: t      23      2       116
                   40939: u      46      0       117
                   40940: v      41      0       118
                   40941: w      59      0       119
                   40942: x      41      0       120
                   40943: y      41      1       121
                   40944: z      41      0       122
                   40945: ct     46      3       162
                   40946: fi     41      2       174
                   40947: fl     41      2       175
                   40948: dg     46      3       178
                   40949: bu     29      0       183
                   40950: de     27      2       202
                   40951: em     82      0       208
                   40952: 14     75      2       1
                   40953: 34     75      2       1
                   40954: 12     75      2       1
                   40955: ``     27      2       170
                   40956: ''     27      2       186
                   40957: 0707070014230362131006440057030057030000011043320522627502400002500000002053post.src/devopost/Hx# Helvetica-Narrow-BoldOblique
                   40958: name Hx
                   40959: internalname 20
                   40960: ligatures fi fl 0
                   40961: charset
                   40962: !      27      2       33
                   40963: $      46      3       36
                   40964: %      73      2       37
                   40965: &      59      2       38
                   40966: '      23      2       39
                   40967: (      27      3       40
                   40968: )      27      3       41
                   40969: *      32      2       42
                   40970: +      48      0       43
                   40971: ,      23      1       44
                   40972: hy     27      0       45
                   40973: -      "
                   40974: .      23      0       46
                   40975: /      23      2       47
                   40976: 0      46      2       48
                   40977: 1      46      2       49
                   40978: 2      46      2       50
                   40979: 3      46      2       51
                   40980: 4      46      2       52
                   40981: 5      46      2       53
                   40982: 6      46      2       54
                   40983: 7      46      2       55
                   40984: 8      46      2       56
                   40985: 9      46      2       57
                   40986: :      27      0       58
                   40987: ;      27      1       59
                   40988: =      48      0       61
                   40989: ?      50      2       63
                   40990: A      59      2       65
                   40991: B      59      2       66
                   40992: C      59      2       67
                   40993: D      59      2       68
                   40994: E      55      2       69
                   40995: F      50      2       70
                   40996: G      64      2       71
                   40997: H      59      2       72
                   40998: I      23      2       73
                   40999: J      46      2       74
                   41000: K      59      2       75
                   41001: L      50      2       76
                   41002: M      68      2       77
                   41003: N      59      2       78
                   41004: O      64      2       79
                   41005: P      55      2       80
                   41006: Q      64      2       81
                   41007: R      59      2       82
                   41008: S      55      2       83
                   41009: T      50      2       84
                   41010: U      59      2       85
                   41011: V      55      2       86
                   41012: W      77      2       87
                   41013: X      55      2       88
                   41014: Y      55      2       89
                   41015: Z      50      2       90
                   41016: [      27      3       91
                   41017: ]      27      3       93
                   41018: `      23      2       96
                   41019: a      46      0       97
                   41020: b      50      2       98
                   41021: c      46      0       99
                   41022: d      50      2       100
                   41023: e      46      0       101
                   41024: f      27      2       102
                   41025: g      50      1       103
                   41026: h      50      2       104
                   41027: i      23      2       105
                   41028: j      23      3       106
                   41029: k      46      2       107
                   41030: l      23      2       108
                   41031: m      73      0       109
                   41032: n      50      0       110
                   41033: o      50      0       111
                   41034: p      50      1       112
                   41035: q      50      1       113
                   41036: r      32      0       114
                   41037: s      46      0       115
                   41038: t      27      2       116
                   41039: u      50      0       117
                   41040: v      46      0       118
                   41041: w      64      0       119
                   41042: x      46      0       120
                   41043: y      46      1       121
                   41044: z      41      0       122
                   41045: ct     46      3       162
                   41046: fi     50      2       174
                   41047: fl     50      2       175
                   41048: dg     46      3       178
                   41049: bu     29      0       183
                   41050: de     27      2       202
                   41051: em     82      0       208
                   41052: 14     75      2       1
                   41053: 34     75      2       1
                   41054: 12     75      2       1
                   41055: ``     41      2       170
                   41056: ''     41      2       186
                   41057: 0707070014230362141006440057030057030000011043340522627502400002400000002101post.src/devopost/I# Times-Italic
                   41058: name I
                   41059: internalname 2
                   41060: ligatures fi fl 0
                   41061: charset
                   41062: !      33      2       33
                   41063: $      50      2       36
                   41064: %      83      2       37
                   41065: &      78      2       38
                   41066: '      33      2       39
                   41067: (      33      3       40
                   41068: )      33      3       41
                   41069: *      50      2       42
                   41070: +      68      0       43
                   41071: ,      25      1       44
                   41072: hy     33      0       45
                   41073: -      "
                   41074: .      25      0       46
                   41075: /      28      2       47
                   41076: 0      50      2       48
                   41077: 1      50      2       49
                   41078: 2      50      2       50
                   41079: 3      50      2       51
                   41080: 4      50      2       52
                   41081: 5      50      2       53
                   41082: 6      50      2       54
                   41083: 7      50      2       55
                   41084: 8      50      2       56
                   41085: 9      50      2       57
                   41086: :      33      0       58
                   41087: ;      33      1       59
                   41088: =      68      0       61
                   41089: ?      50      2       63
                   41090: A      61      2       65
                   41091: B      61      2       66
                   41092: C      67      2       67
                   41093: D      72      2       68
                   41094: E      61      2       69
                   41095: F      61      2       70
                   41096: G      72      2       71
                   41097: H      72      2       72
                   41098: I      33      2       73
                   41099: J      44      2       74
                   41100: K      67      2       75
                   41101: L      56      2       76
                   41102: M      83      2       77
                   41103: N      67      2       78
                   41104: O      72      2       79
                   41105: P      61      2       80
                   41106: Q      72      3       81
                   41107: R      61      2       82
                   41108: S      50      2       83
                   41109: T      56      2       84
                   41110: U      72      2       85
                   41111: V      61      2       86
                   41112: W      83      2       87
                   41113: X      61      2       88
                   41114: Y      56      2       89
                   41115: Z      56      2       90
                   41116: [      39      3       91
                   41117: ]      39      3       93
                   41118: `      33      2       96
                   41119: a      50      0       97
                   41120: b      50      2       98
                   41121: c      44      0       99
                   41122: d      50      2       100
                   41123: e      44      0       101
                   41124: f      28      3       102
                   41125: g      50      1       103
                   41126: h      50      2       104
                   41127: i      28      2       105
                   41128: j      28      3       106
                   41129: k      44      2       107
                   41130: l      28      2       108
                   41131: m      72      0       109
                   41132: n      50      0       110
                   41133: o      50      0       111
                   41134: p      50      1       112
                   41135: q      50      1       113
                   41136: r      39      0       114
                   41137: s      39      0       115
                   41138: t      28      0       116
                   41139: u      50      0       117
                   41140: v      44      0       118
                   41141: w      67      0       119
                   41142: x      44      0       120
                   41143: y      44      1       121
                   41144: z      39      0       122
                   41145: ct     50      3       162
                   41146: fi     50      3       174
                   41147: fl     50      3       175
                   41148: ff     50      2       1
                   41149: Fi     72      2       1
                   41150: Fl     72      2       1
                   41151: dg     50      2       178
                   41152: bu     35      0       183
                   41153: de     33      2       202
                   41154: em     89      0       208
                   41155: 14     75      2       1
                   41156: 34     75      2       1
                   41157: 12     75      2       1
                   41158: sq     50      2       1
                   41159: ``     56      2       170
                   41160: ''     56      2       186
                   41161: 0707070014230362151006440057030057030000011043360522627502400002500000002035post.src/devopost/KB# Bookman-Demi
                   41162: name KB
                   41163: internalname 23
                   41164: ligatures fi fl 0
                   41165: charset
                   41166: !      36      2       33
                   41167: $      66      3       36
                   41168: %      94      2       37
                   41169: &      80      2       38
                   41170: '      32      2       39
                   41171: (      32      3       40
                   41172: )      32      3       41
                   41173: *      46      2       42
                   41174: +      60      0       43
                   41175: ,      34      1       44
                   41176: hy     36      0       45
                   41177: -      "
                   41178: .      34      0       46
                   41179: /      60      3       47
                   41180: 0      66      2       48
                   41181: 1      66      2       49
                   41182: 2      66      2       50
                   41183: 3      66      2       51
                   41184: 4      66      2       52
                   41185: 5      66      2       53
                   41186: 6      66      2       54
                   41187: 7      66      2       55
                   41188: 8      66      2       56
                   41189: 9      66      2       57
                   41190: :      34      0       58
                   41191: ;      34      1       59
                   41192: =      60      0       61
                   41193: ?      66      2       63
                   41194: A      72      2       65
                   41195: B      72      2       66
                   41196: C      74      2       67
                   41197: D      78      2       68
                   41198: E      72      2       69
                   41199: F      68      2       70
                   41200: G      78      2       71
                   41201: H      82      2       72
                   41202: I      40      2       73
                   41203: J      64      2       74
                   41204: K      80      2       75
                   41205: L      64      2       76
                   41206: M      94      2       77
                   41207: N      74      2       78
                   41208: O      80      2       79
                   41209: P      66      2       80
                   41210: Q      80      3       81
                   41211: R      78      2       82
                   41212: S      66      2       83
                   41213: T      70      2       84
                   41214: U      74      2       85
                   41215: V      72      2       86
                   41216: W      94      2       87
                   41217: X      78      2       88
                   41218: Y      70      2       89
                   41219: Z      64      2       90
                   41220: [      30      3       91
                   41221: ]      30      3       93
                   41222: `      32      2       96
                   41223: a      58      0       97
                   41224: b      60      2       98
                   41225: c      58      0       99
                   41226: d      64      2       100
                   41227: e      58      0       101
                   41228: f      38      2       102
                   41229: g      58      3       103
                   41230: h      68      2       104
                   41231: i      36      2       105
                   41232: j      34      3       106
                   41233: k      66      2       107
                   41234: l      34      2       108
                   41235: m      100     0       109
                   41236: n      68      0       110
                   41237: o      62      0       111
                   41238: p      64      1       112
                   41239: q      62      1       113
                   41240: r      46      0       114
                   41241: s      52      0       115
                   41242: t      46      2       116
                   41243: u      66      0       117
                   41244: v      60      0       118
                   41245: w      80      0       119
                   41246: x      60      0       120
                   41247: y      62      1       121
                   41248: z      56      0       122
                   41249: ct     66      2       162
                   41250: fi     74      2       174
                   41251: fl     74      2       175
                   41252: dg     44      3       178
                   41253: bu     46      0       183
                   41254: de     34      2       202
                   41255: em     100     0       208
                   41256: 14     75      2       1
                   41257: 34     75      2       1
                   41258: 12     75      2       1
                   41259: ``     54      2       170
                   41260: ''     54      2       186
                   41261: 0707070014230362161006440057030057030000011043500522627502400002500000002043post.src/devopost/KI# Bookman-LightItalic
                   41262: name KI
                   41263: internalname 22
                   41264: ligatures fi fl 0
                   41265: charset
                   41266: !      32      2       33
                   41267: $      62      2       36
                   41268: %      80      2       37
                   41269: &      82      2       38
                   41270: '      28      2       39
                   41271: (      28      3       40
                   41272: )      28      3       41
                   41273: *      44      2       42
                   41274: +      60      0       43
                   41275: ,      30      1       44
                   41276: hy     32      0       45
                   41277: -      "
                   41278: .      30      0       46
                   41279: /      60      3       47
                   41280: 0      62      2       48
                   41281: 1      62      2       49
                   41282: 2      62      2       50
                   41283: 3      62      2       51
                   41284: 4      62      2       52
                   41285: 5      62      2       53
                   41286: 6      62      2       54
                   41287: 7      62      2       55
                   41288: 8      62      2       56
                   41289: 9      62      2       57
                   41290: :      30      0       58
                   41291: ;      30      1       59
                   41292: =      60      0       61
                   41293: ?      54      2       63
                   41294: A      70      2       65
                   41295: B      72      2       66
                   41296: C      72      2       67
                   41297: D      74      2       68
                   41298: E      68      2       69
                   41299: F      62      2       70
                   41300: G      76      2       71
                   41301: H      80      2       72
                   41302: I      32      2       73
                   41303: J      56      2       74
                   41304: K      72      2       75
                   41305: L      58      2       76
                   41306: M      86      2       77
                   41307: N      72      2       78
                   41308: O      76      2       79
                   41309: P      60      2       80
                   41310: Q      78      3       81
                   41311: R      70      2       82
                   41312: S      64      2       83
                   41313: T      60      2       84
                   41314: U      72      2       85
                   41315: V      68      2       86
                   41316: W      96      2       87
                   41317: X      70      2       88
                   41318: Y      66      2       89
                   41319: Z      58      2       90
                   41320: [      26      3       91
                   41321: ]      26      3       93
                   41322: `      28      2       96
                   41323: a      62      0       97
                   41324: b      60      2       98
                   41325: c      48      0       99
                   41326: d      64      2       100
                   41327: e      54      0       101
                   41328: f      34      3       102
                   41329: g      56      1       103
                   41330: h      62      2       104
                   41331: i      28      2       105
                   41332: j      28      3       106
                   41333: k      60      2       107
                   41334: l      28      2       108
                   41335: m      88      0       109
                   41336: n      62      0       110
                   41337: o      54      0       111
                   41338: p      60      1       112
                   41339: q      56      1       113
                   41340: r      40      0       114
                   41341: s      54      0       115
                   41342: t      34      2       116
                   41343: u      62      0       117
                   41344: v      54      0       118
                   41345: w      88      0       119
                   41346: x      54      0       120
                   41347: y      60      1       121
                   41348: z      52      0       122
                   41349: ct     62      2       162
                   41350: fi     64      3       174
                   41351: fl     66      3       175
                   41352: dg     62      3       178
                   41353: bu     46      0       183
                   41354: de     30      2       202
                   41355: em     100     0       208
                   41356: 14     75      2       1
                   41357: 34     75      2       1
                   41358: 12     75      2       1
                   41359: ``     44      2       170
                   41360: ''     44      2       186
                   41361: 0707070014230362171006440057030057030000011043520522627502500002500000002035post.src/devopost/KR# Bookman-Light
                   41362: name KR
                   41363: internalname 21
                   41364: ligatures fi fl 0
                   41365: charset
                   41366: !      30      2       33
                   41367: $      62      2       36
                   41368: %      90      2       37
                   41369: &      80      2       38
                   41370: '      22      2       39
                   41371: (      30      3       40
                   41372: )      30      3       41
                   41373: *      44      2       42
                   41374: +      60      0       43
                   41375: ,      32      1       44
                   41376: hy     40      0       45
                   41377: -      "
                   41378: .      32      0       46
                   41379: /      60      3       47
                   41380: 0      62      2       48
                   41381: 1      62      2       49
                   41382: 2      62      2       50
                   41383: 3      62      2       51
                   41384: 4      62      2       52
                   41385: 5      62      2       53
                   41386: 6      62      2       54
                   41387: 7      62      2       55
                   41388: 8      62      2       56
                   41389: 9      62      2       57
                   41390: :      32      0       58
                   41391: ;      32      1       59
                   41392: =      60      0       61
                   41393: ?      54      2       63
                   41394: A      68      2       65
                   41395: B      74      2       66
                   41396: C      74      2       67
                   41397: D      80      2       68
                   41398: E      72      2       69
                   41399: F      64      2       70
                   41400: G      80      2       71
                   41401: H      80      2       72
                   41402: I      34      2       73
                   41403: J      60      2       74
                   41404: K      72      2       75
                   41405: L      60      2       76
                   41406: M      92      2       77
                   41407: N      74      2       78
                   41408: O      80      2       79
                   41409: P      62      2       80
                   41410: Q      82      3       81
                   41411: R      72      2       82
                   41412: S      66      2       83
                   41413: T      62      2       84
                   41414: U      78      2       85
                   41415: V      70      2       86
                   41416: W      96      2       87
                   41417: X      72      2       88
                   41418: Y      64      2       89
                   41419: Z      64      2       90
                   41420: [      30      3       91
                   41421: ]      30      3       93
                   41422: `      22      2       96
                   41423: a      58      0       97
                   41424: b      62      2       98
                   41425: c      52      0       99
                   41426: d      62      2       100
                   41427: e      52      0       101
                   41428: f      32      2       102
                   41429: g      54      3       103
                   41430: h      66      2       104
                   41431: i      30      2       105
                   41432: j      30      3       106
                   41433: k      62      2       107
                   41434: l      30      2       108
                   41435: m      94      0       109
                   41436: n      66      0       110
                   41437: o      56      0       111
                   41438: p      62      1       112
                   41439: q      58      1       113
                   41440: r      44      0       114
                   41441: s      52      0       115
                   41442: t      38      2       116
                   41443: u      68      0       117
                   41444: v      52      0       118
                   41445: w      78      0       119
                   41446: x      56      0       120
                   41447: y      54      1       121
                   41448: z      48      0       122
                   41449: ct     62      2       162
                   41450: fi     62      2       174
                   41451: fl     62      2       175
                   41452: dg     54      3       178
                   41453: bu     46      0       183
                   41454: de     32      2       202
                   41455: em     100     0       208
                   41456: 14     75      2       1
                   41457: 34     75      2       1
                   41458: 12     75      2       1
                   41459: ``     40      2       170
                   41460: ''     40      2       186
                   41461: 0707070014230362201006440057030057030000011043540522627502500002500000002043post.src/devopost/KX# Bookman-DemiItalic
                   41462: name KX
                   41463: internalname 24
                   41464: ligatures fi fl 0
                   41465: charset
                   41466: !      32      2       33
                   41467: $      68      3       36
                   41468: %      88      2       37
                   41469: &      98      2       38
                   41470: '      32      2       39
                   41471: (      26      3       40
                   41472: )      26      3       41
                   41473: *      46      2       42
                   41474: +      60      0       43
                   41475: ,      34      1       44
                   41476: hy     28      0       45
                   41477: -      "
                   41478: .      34      0       46
                   41479: /      36      2       47
                   41480: 0      68      2       48
                   41481: 1      68      2       49
                   41482: 2      68      2       50
                   41483: 3      68      2       51
                   41484: 4      68      2       52
                   41485: 5      68      2       53
                   41486: 6      68      2       54
                   41487: 7      68      2       55
                   41488: 8      68      2       56
                   41489: 9      68      2       57
                   41490: :      34      0       58
                   41491: ;      34      1       59
                   41492: =      60      0       61
                   41493: ?      62      2       63
                   41494: A      72      2       65
                   41495: B      72      2       66
                   41496: C      70      2       67
                   41497: D      76      2       68
                   41498: E      72      2       69
                   41499: F      66      2       70
                   41500: G      76      2       71
                   41501: H      80      2       72
                   41502: I      38      2       73
                   41503: J      62      2       74
                   41504: K      78      2       75
                   41505: L      64      2       76
                   41506: M      86      2       77
                   41507: N      74      2       78
                   41508: O      76      2       79
                   41509: P      64      2       80
                   41510: Q      76      3       81
                   41511: R      74      2       82
                   41512: S      70      2       83
                   41513: T      70      2       84
                   41514: U      74      2       85
                   41515: V      66      2       86
                   41516: W      100     2       87
                   41517: X      74      2       88
                   41518: Y      66      2       89
                   41519: Z      68      2       90
                   41520: [      26      3       91
                   41521: ]      26      3       93
                   41522: `      32      2       96
                   41523: a      68      0       97
                   41524: b      60      2       98
                   41525: c      56      0       99
                   41526: d      68      2       100
                   41527: e      56      0       101
                   41528: f      42      3       102
                   41529: g      62      1       103
                   41530: h      70      2       104
                   41531: i      38      2       105
                   41532: j      32      3       106
                   41533: k      70      2       107
                   41534: l      38      2       108
                   41535: m      96      0       109
                   41536: n      68      0       110
                   41537: o      60      0       111
                   41538: p      66      1       112
                   41539: q      62      1       113
                   41540: r      50      0       114
                   41541: s      54      0       115
                   41542: t      44      2       116
                   41543: u      68      0       117
                   41544: v      54      0       118
                   41545: w      86      0       119
                   41546: x      62      0       120
                   41547: y      60      1       121
                   41548: z      56      0       122
                   41549: ct     68      2       162
                   41550: fi     82      3       174
                   41551: fl     82      3       175
                   41552: dg     42      3       178
                   41553: bu     36      0       183
                   41554: de     36      2       202
                   41555: em     100     0       208
                   41556: 14     75      2       1
                   41557: 34     75      2       1
                   41558: 12     75      2       1
                   41559: ``     52      2       170
                   41560: ''     52      2       186
                   41561: 0707070014230362211006440057030057030000011043560522627502500002500000002045post.src/devopost/NB# NewCenturySchlbk-Bold
                   41562: name NB
                   41563: internalname 31
                   41564: ligatures fi fl 0
                   41565: charset
                   41566: !      30      2       33
                   41567: $      57      3       36
                   41568: %      83      2       37
                   41569: &      85      2       38
                   41570: '      24      2       39
                   41571: (      39      3       40
                   41572: )      39      3       41
                   41573: *      50      2       42
                   41574: +      61      0       43
                   41575: ,      28      1       44
                   41576: hy     33      0       45
                   41577: -      "
                   41578: .      28      0       46
                   41579: /      28      2       47
                   41580: 0      57      2       48
                   41581: 1      57      2       49
                   41582: 2      57      2       50
                   41583: 3      57      2       51
                   41584: 4      57      2       52
                   41585: 5      57      2       53
                   41586: 6      57      2       54
                   41587: 7      57      2       55
                   41588: 8      57      2       56
                   41589: 9      57      2       57
                   41590: :      28      0       58
                   41591: ;      28      1       59
                   41592: =      61      0       61
                   41593: ?      50      2       63
                   41594: A      76      2       65
                   41595: B      78      2       66
                   41596: C      78      2       67
                   41597: D      83      2       68
                   41598: E      76      2       69
                   41599: F      72      2       70
                   41600: G      83      2       71
                   41601: H      87      2       72
                   41602: I      44      2       73
                   41603: J      65      2       74
                   41604: K      81      2       75
                   41605: L      72      2       76
                   41606: M      98      2       77
                   41607: N      83      2       78
                   41608: O      83      2       79
                   41609: P      76      2       80
                   41610: Q      83      3       81
                   41611: R      81      2       82
                   41612: S      67      2       83
                   41613: T      72      2       84
                   41614: U      83      2       85
                   41615: V      76      2       86
                   41616: W      98      2       87
                   41617: X      72      2       88
                   41618: Y      72      2       89
                   41619: Z      67      2       90
                   41620: [      39      3       91
                   41621: ]      39      3       93
                   41622: `      24      2       96
                   41623: a      61      0       97
                   41624: b      65      2       98
                   41625: c      56      0       99
                   41626: d      67      2       100
                   41627: e      57      0       101
                   41628: f      39      2       102
                   41629: g      61      1       103
                   41630: h      69      2       104
                   41631: i      37      2       105
                   41632: j      35      3       106
                   41633: k      67      2       107
                   41634: l      35      2       108
                   41635: m      96      0       109
                   41636: n      69      0       110
                   41637: o      61      0       111
                   41638: p      67      1       112
                   41639: q      65      1       113
                   41640: r      52      0       114
                   41641: s      50      0       115
                   41642: t      43      2       116
                   41643: u      69      0       117
                   41644: v      61      0       118
                   41645: w      89      0       119
                   41646: x      61      0       120
                   41647: y      61      1       121
                   41648: z      54      0       122
                   41649: ct     57      3       162
                   41650: fi     69      2       174
                   41651: fl     69      2       175
                   41652: dg     50      2       178
                   41653: bu     61      0       183
                   41654: de     33      2       202
                   41655: em     100     0       208
                   41656: 14     75      2       1
                   41657: 34     75      2       1
                   41658: 12     75      2       1
                   41659: ``     48      2       170
                   41660: ''     48      2       186
                   41661: 0707070014230362221006440057030057030000011043700522627502500002500000002047post.src/devopost/NI# NewCenturySchlbk-Italic
                   41662: name NI
                   41663: internalname 30
                   41664: ligatures fi fl 0
                   41665: charset
                   41666: !      33      2       33
                   41667: $      56      3       36
                   41668: %      83      2       37
                   41669: &      85      2       38
                   41670: '      20      2       39
                   41671: (      33      3       40
                   41672: )      33      3       41
                   41673: *      50      2       42
                   41674: +      61      0       43
                   41675: ,      28      1       44
                   41676: hy     33      0       45
                   41677: -      "
                   41678: .      28      0       46
                   41679: /      61      2       47
                   41680: 0      56      2       48
                   41681: 1      56      2       49
                   41682: 2      56      2       50
                   41683: 3      56      2       51
                   41684: 4      56      2       52
                   41685: 5      56      2       53
                   41686: 6      56      2       54
                   41687: 7      56      2       55
                   41688: 8      56      2       56
                   41689: 9      56      2       57
                   41690: :      28      0       58
                   41691: ;      28      1       59
                   41692: =      61      0       61
                   41693: ?      44      2       63
                   41694: A      70      2       65
                   41695: B      72      2       66
                   41696: C      72      2       67
                   41697: D      78      2       68
                   41698: E      72      2       69
                   41699: F      67      2       70
                   41700: G      78      2       71
                   41701: H      83      2       72
                   41702: I      41      2       73
                   41703: J      61      2       74
                   41704: K      74      2       75
                   41705: L      67      2       76
                   41706: M      94      2       77
                   41707: N      81      2       78
                   41708: O      78      2       79
                   41709: P      67      2       80
                   41710: Q      78      3       81
                   41711: R      74      2       82
                   41712: S      67      2       83
                   41713: T      69      2       84
                   41714: U      81      2       85
                   41715: V      70      2       86
                   41716: W      93      2       87
                   41717: X      70      2       88
                   41718: Y      69      2       89
                   41719: Z      67      2       90
                   41720: [      33      3       91
                   41721: ]      33      3       93
                   41722: `      20      2       96
                   41723: a      57      0       97
                   41724: b      56      2       98
                   41725: c      44      0       99
                   41726: d      61      2       100
                   41727: e      44      0       101
                   41728: f      33      3       102
                   41729: g      54      1       103
                   41730: h      61      2       104
                   41731: i      33      2       105
                   41732: j      32      3       106
                   41733: k      56      2       107
                   41734: l      33      2       108
                   41735: m      89      0       109
                   41736: n      61      0       110
                   41737: o      50      0       111
                   41738: p      57      1       112
                   41739: q      56      1       113
                   41740: r      44      0       114
                   41741: s      44      0       115
                   41742: t      35      2       116
                   41743: u      61      0       117
                   41744: v      52      0       118
                   41745: w      78      0       119
                   41746: x      50      0       120
                   41747: y      50      1       121
                   41748: z      46      0       122
                   41749: ct     56      3       162
                   41750: fi     61      3       174
                   41751: fl     61      3       175
                   41752: dg     50      3       178
                   41753: bu     61      0       183
                   41754: de     33      2       202
                   41755: em     100     0       208
                   41756: 14     75      2       1
                   41757: 34     75      2       1
                   41758: 12     75      2       1
                   41759: ``     39      2       170
                   41760: ''     39      2       186
                   41761: 0707070014230362231006440057030057030000011043720522627502500002500000002046post.src/devopost/NR# NewCenturySchlbk-Roman
                   41762: name NR
                   41763: internalname 29
                   41764: ligatures fi fl 0
                   41765: charset
                   41766: !      30      2       33
                   41767: $      56      3       36
                   41768: %      83      2       37
                   41769: &      81      2       38
                   41770: '      20      2       39
                   41771: (      33      3       40
                   41772: )      33      3       41
                   41773: *      50      2       42
                   41774: +      61      0       43
                   41775: ,      28      1       44
                   41776: hy     33      0       45
                   41777: -      "
                   41778: .      28      0       46
                   41779: /      28      2       47
                   41780: 0      56      2       48
                   41781: 1      56      2       49
                   41782: 2      56      2       50
                   41783: 3      56      2       51
                   41784: 4      56      2       52
                   41785: 5      56      2       53
                   41786: 6      56      2       54
                   41787: 7      56      2       55
                   41788: 8      56      2       56
                   41789: 9      56      2       57
                   41790: :      28      0       58
                   41791: ;      28      1       59
                   41792: =      61      0       61
                   41793: ?      44      2       63
                   41794: A      72      2       65
                   41795: B      72      2       66
                   41796: C      72      2       67
                   41797: D      78      2       68
                   41798: E      72      2       69
                   41799: F      67      2       70
                   41800: G      78      2       71
                   41801: H      83      2       72
                   41802: I      41      2       73
                   41803: J      56      2       74
                   41804: K      78      2       75
                   41805: L      67      2       76
                   41806: M      94      2       77
                   41807: N      81      2       78
                   41808: O      78      2       79
                   41809: P      67      2       80
                   41810: Q      78      3       81
                   41811: R      72      2       82
                   41812: S      63      2       83
                   41813: T      67      2       84
                   41814: U      81      2       85
                   41815: V      72      2       86
                   41816: W      98      2       87
                   41817: X      70      2       88
                   41818: Y      70      2       89
                   41819: Z      61      2       90
                   41820: [      33      3       91
                   41821: ]      33      3       93
                   41822: `      20      2       96
                   41823: a      56      0       97
                   41824: b      56      2       98
                   41825: c      44      0       99
                   41826: d      57      2       100
                   41827: e      50      0       101
                   41828: f      33      2       102
                   41829: g      54      1       103
                   41830: h      61      2       104
                   41831: i      32      2       105
                   41832: j      30      3       106
                   41833: k      59      2       107
                   41834: l      32      2       108
                   41835: m      89      0       109
                   41836: n      61      0       110
                   41837: o      50      0       111
                   41838: p      57      1       112
                   41839: q      56      1       113
                   41840: r      44      0       114
                   41841: s      46      0       115
                   41842: t      39      2       116
                   41843: u      61      0       117
                   41844: v      54      0       118
                   41845: w      78      0       119
                   41846: x      54      0       120
                   41847: y      54      1       121
                   41848: z      48      0       122
                   41849: ct     56      3       162
                   41850: fi     61      2       174
                   41851: fl     61      2       175
                   41852: dg     50      3       178
                   41853: bu     61      2       183
                   41854: de     33      2       202
                   41855: em     100     0       208
                   41856: 14     75      2       1
                   41857: 34     75      2       1
                   41858: 12     75      2       1
                   41859: ``     39      2       170
                   41860: ''     39      2       186
                   41861: 0707070014230362241006440057030057030000011043740522627502500002500000002053post.src/devopost/NX# NewCenturySchlbk-BoldItalic
                   41862: name NX
                   41863: internalname 32
                   41864: ligatures fi fl 0
                   41865: charset
                   41866: !      33      2       33
                   41867: $      57      3       36
                   41868: %      89      2       37
                   41869: &      89      2       38
                   41870: '      26      2       39
                   41871: (      41      3       40
                   41872: )      41      3       41
                   41873: *      50      2       42
                   41874: +      61      0       43
                   41875: ,      29      1       44
                   41876: hy     33      0       45
                   41877: -      "
                   41878: .      29      0       46
                   41879: /      28      2       47
                   41880: 0      57      2       48
                   41881: 1      57      2       49
                   41882: 2      57      2       50
                   41883: 3      57      2       51
                   41884: 4      57      2       52
                   41885: 5      57      2       53
                   41886: 6      57      2       54
                   41887: 7      57      2       55
                   41888: 8      57      2       56
                   41889: 9      57      2       57
                   41890: :      29      0       58
                   41891: ;      29      1       59
                   41892: =      61      0       61
                   41893: ?      48      2       63
                   41894: A      74      2       65
                   41895: B      76      2       66
                   41896: C      76      2       67
                   41897: D      83      2       68
                   41898: E      74      2       69
                   41899: F      70      2       70
                   41900: G      81      2       71
                   41901: H      87      2       72
                   41902: I      44      2       73
                   41903: J      67      2       74
                   41904: K      78      2       75
                   41905: L      70      2       76
                   41906: M      94      2       77
                   41907: N      85      2       78
                   41908: O      83      2       79
                   41909: P      74      2       80
                   41910: Q      83      3       81
                   41911: R      80      2       82
                   41912: S      69      2       83
                   41913: T      72      2       84
                   41914: U      83      2       85
                   41915: V      74      2       86
                   41916: W      94      2       87
                   41917: X      74      2       88
                   41918: Y      70      2       89
                   41919: Z      70      2       90
                   41920: [      41      3       91
                   41921: ]      41      3       93
                   41922: `      26      2       96
                   41923: a      67      0       97
                   41924: b      61      2       98
                   41925: c      54      0       99
                   41926: d      67      2       100
                   41927: e      52      0       101
                   41928: f      39      3       102
                   41929: g      61      1       103
                   41930: h      69      2       104
                   41931: i      39      2       105
                   41932: j      37      3       106
                   41933: k      65      2       107
                   41934: l      39      2       108
                   41935: m      94      0       109
                   41936: n      69      0       110
                   41937: o      57      0       111
                   41938: p      65      1       112
                   41939: q      63      1       113
                   41940: r      52      0       114
                   41941: s      48      0       115
                   41942: t      41      2       116
                   41943: u      69      0       117
                   41944: v      56      0       118
                   41945: w      83      0       119
                   41946: x      57      0       120
                   41947: y      52      1       121
                   41948: z      52      0       122
                   41949: ct     57      3       162
                   41950: fi     69      3       174
                   41951: fl     69      3       175
                   41952: dg     50      3       178
                   41953: bu     61      0       183
                   41954: de     33      2       202
                   41955: em     100     0       208
                   41956: 14     75      2       1
                   41957: 34     75      2       1
                   41958: 12     75      2       1
                   41959: ``     48      2       170
                   41960: ''     48      2       186
                   41961: 0707070014230362251006440057030057030000011043760522627502500002500000002037post.src/devopost/PA# Palatino-Roman
                   41962: name PA
                   41963: internalname 13
                   41964: ligatures fi fl 0
                   41965: charset
                   41966: !      28      2       33
                   41967: $      50      2       36
                   41968: %      84      2       37
                   41969: &      78      2       38
                   41970: '      28      2       39
                   41971: (      33      2       40
                   41972: )      33      2       41
                   41973: *      39      2       42
                   41974: +      61      0       43
                   41975: ,      25      1       44
                   41976: hy     33      0       45
                   41977: -      "
                   41978: .      25      0       46
                   41979: /      61      2       47
                   41980: 0      50      2       48
                   41981: 1      50      2       49
                   41982: 2      50      2       50
                   41983: 3      50      2       51
                   41984: 4      50      2       52
                   41985: 5      50      2       53
                   41986: 6      50      2       54
                   41987: 7      50      2       55
                   41988: 8      50      2       56
                   41989: 9      50      2       57
                   41990: :      25      0       58
                   41991: ;      25      1       59
                   41992: =      61      0       61
                   41993: ?      44      2       63
                   41994: A      78      2       65
                   41995: B      61      2       66
                   41996: C      71      2       67
                   41997: D      77      2       68
                   41998: E      61      2       69
                   41999: F      56      2       70
                   42000: G      76      2       71
                   42001: H      83      2       72
                   42002: I      34      2       73
                   42003: J      33      3       74
                   42004: K      73      2       75
                   42005: L      61      2       76
                   42006: M      95      2       77
                   42007: N      83      2       78
                   42008: O      79      2       79
                   42009: P      60      2       80
                   42010: Q      79      3       81
                   42011: R      67      2       82
                   42012: S      53      2       83
                   42013: T      61      2       84
                   42014: U      78      2       85
                   42015: V      72      2       86
                   42016: W      100     2       87
                   42017: X      67      2       88
                   42018: Y      67      2       89
                   42019: Z      67      2       90
                   42020: [      33      2       91
                   42021: ]      33      2       93
                   42022: `      28      2       96
                   42023: a      50      0       97
                   42024: b      55      2       98
                   42025: c      44      0       99
                   42026: d      61      2       100
                   42027: e      48      0       101
                   42028: f      33      2       102
                   42029: g      56      1       103
                   42030: h      58      2       104
                   42031: i      29      2       105
                   42032: j      23      3       106
                   42033: k      56      2       107
                   42034: l      29      2       108
                   42035: m      88      0       109
                   42036: n      58      0       110
                   42037: o      55      0       111
                   42038: p      60      1       112
                   42039: q      56      1       113
                   42040: r      40      0       114
                   42041: s      42      0       115
                   42042: t      33      2       116
                   42043: u      60      0       117
                   42044: v      56      0       118
                   42045: w      83      0       119
                   42046: x      52      0       120
                   42047: y      56      1       121
                   42048: z      50      0       122
                   42049: ct     50      0       162
                   42050: fi     61      2       174
                   42051: fl     61      2       175
                   42052: dg     50      2       178
                   42053: bu     61      0       183
                   42054: de     33      2       202
                   42055: em     100     0       208
                   42056: 14     75      2       1
                   42057: 34     75      2       1
                   42058: 12     75      2       1
                   42059: ``     50      2       170
                   42060: ''     50      2       186
                   42061: 0707070014230362261006440057030057030000011044100522627502500002500000002037post.src/devopost/PB# Palatino-Bold
                   42062: name PB
                   42063: internalname 15
                   42064: ligatures fi fl 0
                   42065: charset
                   42066: !      28      2       33
                   42067: $      50      2       36
                   42068: %      89      2       37
                   42069: &      83      2       38
                   42070: '      28      2       39
                   42071: (      33      2       40
                   42072: )      33      2       41
                   42073: *      44      2       42
                   42074: +      61      0       43
                   42075: ,      25      1       44
                   42076: hy     33      0       45
                   42077: -      "
                   42078: .      25      0       46
                   42079: /      30      2       47
                   42080: 0      50      2       48
                   42081: 1      50      2       49
                   42082: 2      50      2       50
                   42083: 3      50      2       51
                   42084: 4      50      2       52
                   42085: 5      50      2       53
                   42086: 6      50      2       54
                   42087: 7      50      2       55
                   42088: 8      50      2       56
                   42089: 9      50      2       57
                   42090: :      25      0       58
                   42091: ;      25      1       59
                   42092: =      61      0       61
                   42093: ?      44      2       63
                   42094: A      78      2       65
                   42095: B      67      2       66
                   42096: C      72      2       67
                   42097: D      83      2       68
                   42098: E      61      2       69
                   42099: F      56      2       70
                   42100: G      83      2       71
                   42101: H      83      2       72
                   42102: I      39      2       73
                   42103: J      39      3       74
                   42104: K      78      2       75
                   42105: L      61      2       76
                   42106: M      100     2       77
                   42107: N      83      2       78
                   42108: O      83      2       79
                   42109: P      61      2       80
                   42110: Q      83      3       81
                   42111: R      72      2       82
                   42112: S      61      2       83
                   42113: T      67      2       84
                   42114: U      78      2       85
                   42115: V      78      2       86
                   42116: W      100     2       87
                   42117: X      67      2       88
                   42118: Y      67      2       89
                   42119: Z      67      2       90
                   42120: [      33      2       91
                   42121: ]      33      2       93
                   42122: `      28      2       96
                   42123: a      50      0       97
                   42124: b      61      2       98
                   42125: c      44      0       99
                   42126: d      61      2       100
                   42127: e      50      0       101
                   42128: f      39      2       102
                   42129: g      56      1       103
                   42130: h      61      2       104
                   42131: i      33      2       105
                   42132: j      33      3       106
                   42133: k      61      2       107
                   42134: l      33      2       108
                   42135: m      89      0       109
                   42136: n      61      0       110
                   42137: o      56      0       111
                   42138: p      61      1       112
                   42139: q      61      1       113
                   42140: r      39      0       114
                   42141: s      44      0       115
                   42142: t      33      2       116
                   42143: u      61      0       117
                   42144: v      56      0       118
                   42145: w      83      0       119
                   42146: x      50      0       120
                   42147: y      56      1       121
                   42148: z      50      0       122
                   42149: ct     50      0       162
                   42150: fi     61      2       174
                   42151: fl     61      2       175
                   42152: dg     50      2       178
                   42153: bu     61      0       183
                   42154: de     33      2       202
                   42155: em     100     0       208
                   42156: 14     75      2       1
                   42157: 34     75      2       1
                   42158: 12     75      2       1
                   42159: ``     50      2       170
                   42160: ''     50      2       186
                   42161: 0707070014230362271006440057030057030000011044120522627502500002500000002037post.src/devopost/PI# Palatino-Italic
                   42162: name PI
                   42163: internalname 14
                   42164: ligatures fi fl 0
                   42165: charset
                   42166: !      33      2       33
                   42167: $      50      2       36
                   42168: %      89      2       37
                   42169: &      78      2       38
                   42170: '      28      2       39
                   42171: (      33      2       40
                   42172: )      33      2       41
                   42173: *      39      2       42
                   42174: +      61      0       43
                   42175: ,      25      1       44
                   42176: hy     33      0       45
                   42177: -      "
                   42178: .      25      0       46
                   42179: /      30      3       47
                   42180: 0      50      2       48
                   42181: 1      50      2       49
                   42182: 2      50      2       50
                   42183: 3      50      2       51
                   42184: 4      50      2       52
                   42185: 5      50      2       53
                   42186: 6      50      2       54
                   42187: 7      50      2       55
                   42188: 8      50      2       56
                   42189: 9      50      2       57
                   42190: :      25      0       58
                   42191: ;      25      1       59
                   42192: =      61      0       61
                   42193: ?      50      2       63
                   42194: A      72      2       65
                   42195: B      61      2       66
                   42196: C      67      2       67
                   42197: D      78      2       68
                   42198: E      61      2       69
                   42199: F      56      2       70
                   42200: G      72      2       71
                   42201: H      78      2       72
                   42202: I      33      2       73
                   42203: J      33      3       74
                   42204: K      67      2       75
                   42205: L      56      2       76
                   42206: M      94      2       77
                   42207: N      78      2       78
                   42208: O      78      2       79
                   42209: P      61      2       80
                   42210: Q      78      3       81
                   42211: R      67      2       82
                   42212: S      56      2       83
                   42213: T      61      2       84
                   42214: U      78      2       85
                   42215: V      72      2       86
                   42216: W      94      2       87
                   42217: X      72      2       88
                   42218: Y      67      2       89
                   42219: Z      67      2       90
                   42220: [      33      2       91
                   42221: ]      33      2       93
                   42222: `      28      2       96
                   42223: a      44      0       97
                   42224: b      46      2       98
                   42225: c      41      0       99
                   42226: d      50      2       100
                   42227: e      39      0       101
                   42228: f      28      3       102
                   42229: g      50      1       103
                   42230: h      50      2       104
                   42231: i      28      2       105
                   42232: j      28      3       106
                   42233: k      44      2       107
                   42234: l      28      2       108
                   42235: m      78      0       109
                   42236: n      56      0       110
                   42237: o      44      0       111
                   42238: p      50      1       112
                   42239: q      46      1       113
                   42240: r      39      0       114
                   42241: s      39      0       115
                   42242: t      33      2       116
                   42243: u      56      0       117
                   42244: v      50      0       118
                   42245: w      72      0       119
                   42246: x      50      0       120
                   42247: y      50      1       121
                   42248: z      44      0       122
                   42249: ct     50      0       162
                   42250: fi     53      3       174
                   42251: fl     54      3       175
                   42252: dg     50      2       178
                   42253: bu     50      0       183
                   42254: de     33      2       202
                   42255: em     100     0       208
                   42256: 14     75      2       1
                   42257: 34     75      2       1
                   42258: 12     75      2       1
                   42259: ``     50      2       170
                   42260: ''     50      2       186
                   42261: 0707070014230362301006440057030057030000011044140522627502500002500000002044post.src/devopost/PX# Palatino-BoldItalic
                   42262: name PX
                   42263: internalname 16
                   42264: ligatures fi fl 0
                   42265: charset
                   42266: !      33      2       33
                   42267: $      50      2       36
                   42268: %      89      2       37
                   42269: &      83      2       38
                   42270: '      28      2       39
                   42271: (      33      2       40
                   42272: )      33      2       41
                   42273: *      44      2       42
                   42274: +      61      0       43
                   42275: ,      25      1       44
                   42276: hy     39      0       45
                   42277: -      "
                   42278: .      25      0       46
                   42279: /      32      2       47
                   42280: 0      50      2       48
                   42281: 1      50      2       49
                   42282: 2      50      2       50
                   42283: 3      50      2       51
                   42284: 4      50      2       52
                   42285: 5      50      2       53
                   42286: 6      50      2       54
                   42287: 7      50      2       55
                   42288: 8      50      2       56
                   42289: 9      50      2       57
                   42290: :      25      0       58
                   42291: ;      25      1       59
                   42292: =      61      0       61
                   42293: ?      44      2       63
                   42294: A      72      2       65
                   42295: B      67      2       66
                   42296: C      69      2       67
                   42297: D      78      2       68
                   42298: E      61      2       69
                   42299: F      56      2       70
                   42300: G      78      2       71
                   42301: H      78      2       72
                   42302: I      39      2       73
                   42303: J      39      3       74
                   42304: K      72      2       75
                   42305: L      61      2       76
                   42306: M      94      2       77
                   42307: N      78      2       78
                   42308: O      83      2       79
                   42309: P      67      2       80
                   42310: Q      83      3       81
                   42311: R      72      2       82
                   42312: S      56      2       83
                   42313: T      61      2       84
                   42314: U      78      2       85
                   42315: V      67      2       86
                   42316: W      100     2       87
                   42317: X      72      2       88
                   42318: Y      61      2       89
                   42319: Z      67      2       90
                   42320: [      33      2       91
                   42321: ]      33      2       93
                   42322: `      28      2       96
                   42323: a      56      0       97
                   42324: b      54      2       98
                   42325: c      44      0       99
                   42326: d      56      2       100
                   42327: e      44      0       101
                   42328: f      33      3       102
                   42329: g      50      1       103
                   42330: h      56      2       104
                   42331: i      33      2       105
                   42332: j      33      3       106
                   42333: k      56      2       107
                   42334: l      33      2       108
                   42335: m      83      0       109
                   42336: n      56      0       110
                   42337: o      56      0       111
                   42338: p      56      1       112
                   42339: q      54      1       113
                   42340: r      39      0       114
                   42341: s      44      0       115
                   42342: t      39      2       116
                   42343: u      56      0       117
                   42344: v      56      0       118
                   42345: w      83      0       119
                   42346: x      50      0       120
                   42347: y      56      1       121
                   42348: z      50      0       122
                   42349: ct     50      0       162
                   42350: fi     61      3       174
                   42351: fl     61      3       175
                   42352: dg     56      2       178
                   42353: bu     61      0       183
                   42354: de     56      2       202
                   42355: em     100     0       208
                   42356: 14     75      2       1
                   42357: 34     75      2       1
                   42358: 12     75      2       1
                   42359: ``     50      2       170
                   42360: ''     50      2       186
                   42361: 0707070014230362311006440057030057030000011044160522627502500002400000002101post.src/devopost/R# Times-Roman
                   42362: name R
                   42363: internalname 1
                   42364: ligatures fi fl 0
                   42365: charset
                   42366: !      33      2       33
                   42367: $      50      2       36
                   42368: %      83      2       37
                   42369: &      78      2       38
                   42370: '      33      2       39
                   42371: (      33      3       40
                   42372: )      33      3       41
                   42373: *      50      2       42
                   42374: +      56      0       43
                   42375: ,      25      1       44
                   42376: hy     33      0       45
                   42377: -      "
                   42378: .      25      0       46
                   42379: /      28      2       47
                   42380: 0      50      2       48
                   42381: 1      50      2       49
                   42382: 2      50      2       50
                   42383: 3      50      2       51
                   42384: 4      50      2       52
                   42385: 5      50      2       53
                   42386: 6      50      2       54
                   42387: 7      50      2       55
                   42388: 8      50      2       56
                   42389: 9      50      2       57
                   42390: :      28      0       58
                   42391: ;      28      1       59
                   42392: =      56      0       61
                   42393: ?      44      2       63
                   42394: A      72      2       65
                   42395: B      67      2       66
                   42396: C      67      2       67
                   42397: D      72      2       68
                   42398: E      61      2       69
                   42399: F      56      2       70
                   42400: G      72      2       71
                   42401: H      72      2       72
                   42402: I      33      2       73
                   42403: J      39      2       74
                   42404: K      72      2       75
                   42405: L      61      2       76
                   42406: M      89      2       77
                   42407: N      72      2       78
                   42408: O      72      2       79
                   42409: P      56      2       80
                   42410: Q      72      3       81
                   42411: R      67      2       82
                   42412: S      56      2       83
                   42413: T      61      2       84
                   42414: U      72      2       85
                   42415: V      72      2       86
                   42416: W      94      2       87
                   42417: X      72      2       88
                   42418: Y      72      2       89
                   42419: Z      61      2       90
                   42420: [      33      3       91
                   42421: ]      33      3       93
                   42422: `      33      2       96
                   42423: a      44      0       97
                   42424: b      50      2       98
                   42425: c      44      0       99
                   42426: d      50      2       100
                   42427: e      44      0       101
                   42428: f      33      2       102
                   42429: g      50      1       103
                   42430: h      50      2       104
                   42431: i      28      2       105
                   42432: j      28      3       106
                   42433: k      50      2       107
                   42434: l      28      2       108
                   42435: m      78      0       109
                   42436: n      50      0       110
                   42437: o      50      0       111
                   42438: p      50      1       112
                   42439: q      50      1       113
                   42440: r      33      0       114
                   42441: s      39      0       115
                   42442: t      28      2       116
                   42443: u      50      0       117
                   42444: v      50      0       118
                   42445: w      72      0       119
                   42446: x      50      0       120
                   42447: y      50      1       121
                   42448: z      44      0       122
                   42449: ct     50      3       162
                   42450: fi     56      2       174
                   42451: fl     56      2       175
                   42452: ff     60      2       1
                   42453: Fi     84      2       1
                   42454: Fl     84      2       1
                   42455: dg     50      3       178
                   42456: bu     35      0       183
                   42457: de     33      2       202
                   42458: em     100     0       208
                   42459: 14     75      2       1
                   42460: 34     75      2       1
                   42461: 12     75      2       1
                   42462: sq     50      2       1
                   42463: ``     44      2       170
                   42464: ''     44      2       186
                   42465: 0707070014230362321006440057030057030000011044300522627502500002400000004600post.src/devopost/S# Symbol
                   42466: name S
                   42467: internalname 33
                   42468: special
                   42469: charset
                   42470: bx     50      2       1
                   42471: ci     75      0       1
                   42472: sq     50      2       1
                   42473: ~=     55      0       1
                   42474: L1     110     1       2
                   42475: LA     110     1       2
                   42476: LV     110     3       2
                   42477: LH     210     1       2
                   42478: Lb     "
                   42479: lh     100     0       2
                   42480: rh     100     0       2
                   42481: ---    25      0       32
                   42482: ---    33      2       33
                   42483: fa     71      2       34
                   42484: ---    50      2       35
                   42485: te     55      2       36
                   42486: ---    83      2       37
                   42487: ---    78      2       38
                   42488: ---    44      0       39
                   42489: ---    33      3       40
                   42490: ---    33      3       41
                   42491: **     50      0       42
                   42492: pl     55      0       43
                   42493: ---    25      1       44
                   42494: mi     55      0       45
                   42495: ---    25      0       46
                   42496: ---    28      2       47
                   42497: ---    50      2       48
                   42498: ---    50      2       49
                   42499: ---    50      2       50
                   42500: ---    50      2       51
                   42501: ---    50      2       52
                   42502: ---    50      2       53
                   42503: ---    50      2       54
                   42504: ---    50      2       55
                   42505: ---    50      2       56
                   42506: ---    50      2       57
                   42507: ---    28      0       58
                   42508: ---    28      1       59
                   42509: <      55      0       60
                   42510: eq     55      0       61
                   42511: >      55      0       62
                   42512: ---    44      2       63
                   42513: *A     72      2       65
                   42514: *B     67      2       66
                   42515: *X     72      2       67
                   42516: *D     61      2       68
                   42517: *E     61      2       69
                   42518: *F     76      2       70
                   42519: *G     60      2       71
                   42520: *Y     72      2       72
                   42521: *I     33      2       73
                   42522: ---    63      2       74
                   42523: *K     72      2       75
                   42524: *L     69      2       76
                   42525: *M     89      2       77
                   42526: *N     72      2       78
                   42527: *O     72      2       79
                   42528: *P     77      2       80
                   42529: *H     74      2       81
                   42530: *R     56      2       82
                   42531: *S     59      2       83
                   42532: *T     61      2       84
                   42533: *U     69      2       85
                   42534: ---    44      1       86
                   42535: ts     44      1       86
                   42536: *W     77      2       87
                   42537: *C     65      2       88
                   42538: *Q     80      2       89
                   42539: *Z     61      2       90
                   42540: ---    33      3       91
                   42541: ---    86      0       92
                   42542: ---    33      3       93
                   42543: ---    66      2       94
                   42544: ul     50      1       95
                   42545: _      "
                   42546: rn     50      2       96
                   42547: *a     63      0       97
                   42548: *b     55      3       98
                   42549: *x     55      1       99
                   42550: *d     49      2       100
                   42551: *e     44      0       101
                   42552: *f     52      3       102
                   42553: *g     41      1       103
                   42554: *y     60      1       104
                   42555: *i     33      0       105
                   42556: ---    60      1       106
                   42557: *k     55      0       107
                   42558: *l     55      2       108
                   42559: *m     58      1       109
                   42560: *n     52      0       110
                   42561: *o     55      0       111
                   42562: *p     55      0       112
                   42563: *h     52      2       113
                   42564: *r     55      1       114
                   42565: *s     60      0       115
                   42566: *t     44      0       116
                   42567: *u     58      0       117
                   42568: ---    71      2       118
                   42569: *w     69      0       119
                   42570: *c     49      3       120
                   42571: *q     69      1       121
                   42572: *z     49      3       122
                   42573: {      48      3       123
                   42574: or     20      3       124
                   42575: }      48      3       125
                   42576: ap     55      0       126
                   42577: ---    62      2       161
                   42578: fm     25      2       162
                   42579: <=     55      2       163
                   42580: sl     17      2       164
                   42581: if     73      0       165
                   42582: ---    50      3       166
                   42583: ---    75      0       167
                   42584: ---    75      0       168
                   42585: ---    75      0       169
                   42586: ---    75      0       170
                   42587: ---    104     0       171
                   42588: <-     99      0       172
                   42589: ua     60      2       173
                   42590: ->     99      0       174
                   42591: da     60      2       175
                   42592: de     40      2       176
                   42593: +-     55      2       177
                   42594: ---    41      2       178
                   42595: >=     55      2       179
                   42596: mu     55      0       180
                   42597: pt     71      0       181
                   42598: pd     49      2       182
                   42599: bu     46      0       183
                   42600: di     55      0       184
                   42601: !=     55      0       185
                   42602: ==     55      0       186
                   42603: ~~     55      0       187
                   42604: ---    100     0       188
                   42605: ---    60      3       189
                   42606: ---    100     0       190
                   42607: ---    66      2       191
                   42608: al     82      2       192
                   42609: ---    69      2       193
                   42610: ---    80      2       194
                   42611: ---    99      3       195
                   42612: Ox     77      2       196
                   42613: O+     77      2       197
                   42614: es     82      2       198
                   42615: ca     77      0       199
                   42616: cu     77      0       200
                   42617: sp     71      0       201
                   42618: ip     71      1       202
                   42619: ---    71      0       203
                   42620: sb     71      0       204
                   42621: ib     71      1       205
                   42622: mo     71      0       206
                   42623: ---    71      0       207
                   42624: ---    77      2       208
                   42625: gr     71      2       209
                   42626: rg     79      2       210
                   42627: co     79      2       211
                   42628: tm     89      2       212
                   42629: ---    82      2       213
                   42630: sr     55      2       214
                   42631: ---    25      0       215
                   42632: no     71      0       216
                   42633: ^      60      0       217
                   42634: or     60      0       218
                   42635: ---    104     0       219
                   42636: ---    99      0       220
                   42637: ---    60      2       221
                   42638: ---    99      0       222
                   42639: ---    60      2       223
                   42640: ---    49      2       224
                   42641: ---    33      3       225
                   42642: ---    79      2       226
                   42643: ---    79      2       227
                   42644: ---    79      2       228
                   42645: ---    71      2       229
                   42646: ---    38      3       230
                   42647: br     0       3       231
                   42648: ---    38      3       232
                   42649: lc     50      2       233
                   42650: vr     0       2       234
                   42651: lf     50      2       235
                   42652: lt     49      2       236
                   42653: lk     49      2       237
                   42654: lb     49      2       238
                   42655: bv     49      2       239
                   42656: ---    25      0       240
                   42657: ---    33      3       241
                   42658: is     50      3       242
                   42659: ---    69      2       243
                   42660: ---    69      2       244
                   42661: ---    69      2       245
                   42662: ---    38      3       246
                   42663: ---    38      2       247
                   42664: ---    38      3       248
                   42665: rc     38      2       249
                   42666: |      50      3       250
                   42667: rf     38      2       251
                   42668: rt     49      2       252
                   42669: rk     49      2       253
                   42670: rb     49      2       254
                   42671: 0707070014230362331006440057030057030000011042570522627502500002500000000530post.src/devopost/S1# Times-Roman special font
                   42672: name S1
                   42673: internalname 1
                   42674: special
                   42675: charset
                   42676: "      41      2       34
                   42677: #      50      2       35
                   42678: <      56      0       60
                   42679: >      56      0       62
                   42680: @      92      3       64
                   42681: \      28      2       92
                   42682: or     20      2       124
                   42683: ^      33      2       195
                   42684: ~      33      2       196
                   42685: \'     33      2       194
                   42686: aa     "
                   42687: \`     33      2       193
                   42688: ga     "
                   42689: ru     50      0       95
                   42690: \-     65      0       177
                   42691: en     "
                   42692: sc     50      3       167
                   42693: dg     50      3       178
                   42694: dd     50      3       179
                   42695: ct     50      3       162
                   42696: 14     75      2       1
                   42697: 34     75      2       1
                   42698: 12     75      2       1
                   42699: Sl     50      2       1
                   42700: ob     38      0       1
                   42701: ``     44      2       170
                   42702: ''     44      2       186
                   42703: 0707070014230362341006440057030057030000011044330522627502500002500000004145post.src/devopost/ZD# ZapfDingbats
                   42704: name ZD
                   42705: internalname 36
                   42706: ligatures fi fl 0
                   42707: charset
                   42708: !      97      2       33
                   42709: "      96      2       34
                   42710: #      97      2       35
                   42711: $      98      3       36
                   42712: %      72      2       37
                   42713: &      79      3       38
                   42714: '      79      3       39
                   42715: (      79      3       40
                   42716: )      69      2       41
                   42717: *      96      2       42
                   42718: +      94      2       43
                   42719: ,      55      3       44
                   42720: -      86      2       45
                   42721: .      91      2       46
                   42722: /      93      2       47
                   42723: 0      91      2       48
                   42724: 1      94      2       49
                   42725: 2      97      2       50
                   42726: 3      76      3       51
                   42727: 4      85      3       52
                   42728: 5      76      2       53
                   42729: 6      76      2       54
                   42730: 7      57      3       55
                   42731: 8      68      3       56
                   42732: 9      76      2       57
                   42733: :      76      2       58
                   42734: ;      76      2       59
                   42735: <      75      3       60
                   42736: =      49      2       61
                   42737: >      55      2       62
                   42738: ?      54      3       63
                   42739: @      58      2       64
                   42740: A      69      3       65
                   42741: B      79      3       66
                   42742: C      79      3       67
                   42743: D      79      3       68
                   42744: E      79      3       69
                   42745: F      79      3       70
                   42746: G      79      3       71
                   42747: H      82      3       72
                   42748: I      82      3       73
                   42749: J      79      3       74
                   42750: K      84      3       75
                   42751: L      82      3       76
                   42752: M      83      3       77
                   42753: N      82      3       78
                   42754: O      83      3       79
                   42755: P      92      3       80
                   42756: Q      74      2       81
                   42757: R      72      2       82
                   42758: S      75      2       83
                   42759: T      79      3       84
                   42760: U      79      3       85
                   42761: V      69      3       86
                   42762: W      78      3       87
                   42763: X      77      3       88
                   42764: Y      79      3       89
                   42765: Z      76      2       90
                   42766: [      71      3       91
                   42767: \      71      3       92
                   42768: ]      68      3       93
                   42769: ^      70      3       94
                   42770: _      83      3       95
                   42771: `      81      3       96
                   42772: a      79      3       97
                   42773: b      79      3       98
                   42774: c      71      3       99
                   42775: d      69      2       100
                   42776: e      70      2       101
                   42777: f      69      2       102
                   42778: g      79      3       103
                   42779: h      79      3       104
                   42780: i      71      3       105
                   42781: j      79      3       106
                   42782: k      78      3       107
                   42783: l      79      3       108
                   42784: m      87      3       109
                   42785: n      76      2       110
                   42786: o      76      2       111
                   42787: p      76      2       112
                   42788: q      76      3       113
                   42789: r      76      3       114
                   42790: s      89      2       115
                   42791: t      89      3       116
                   42792: u      79      3       117
                   42793: v      78      3       118
                   42794: w      44      3       119
                   42795: x      14      2       120
                   42796: y      28      2       121
                   42797: z      41      2       122
                   42798: {      39      2       123
                   42799: |      39      2       124
                   42800: }      67      2       125
                   42801: ~      67      2       126
                   42802: hy     73      3       161
                   42803: em     54      3       162
                   42804: de     54      3       163
                   42805: \-     91      2       164
                   42806: en     67      3       165
                   42807: ff     76      3       166
                   42808: fi     76      2       167
                   42809: fl     78      2       168
                   42810: Fi     60      3       169
                   42811: Fl     69      3       170
                   42812: fm     63      3       171
                   42813: ru     79      3       172
                   42814: dg     79      3       173
                   42815: bu     79      3       174
                   42816: 14     79      3       175
                   42817: 34     79      3       176
                   42818: 12     79      3       177
                   42819: ct     79      3       178
                   42820: rg     79      3       179
                   42821: sq     79      3       180
                   42822: sl     79      3       181
                   42823: ul     79      3       182
                   42824: or     79      3       183
                   42825: no     79      3       184
                   42826: ->     79      3       185
                   42827: <-     79      3       186
                   42828: da     79      3       187
                   42829: lh     79      3       188
                   42830: ua     79      3       189
                   42831: \e     79      3       190
                   42832: \'     79      3       191
                   42833: aa     79      3       192
                   42834: \`     79      3       193
                   42835: ga     79      3       194
                   42836: pl     79      3       195
                   42837: mi     79      3       196
                   42838: mu     79      3       197
                   42839: di     79      3       198
                   42840: eq     79      3       199
                   42841: ==     79      3       200
                   42842: >=     79      3       201
                   42843: <=     79      3       202
                   42844: !=     79      3       203
                   42845: +-     79      3       204
                   42846: -+     79      3       205
                   42847: ap     79      3       206
                   42848: ~=     79      3       207
                   42849: gr     79      3       208
                   42850: is     79      3       209
                   42851: pd     79      3       210
                   42852: if     79      3       211
                   42853: sr     89      2       212
                   42854: rn     84      2       213
                   42855: sb     102     2       214
                   42856: sp     46      3       215
                   42857: cu     75      2       216
                   42858: ca     92      2       217
                   42859: ib     75      2       218
                   42860: ip     92      2       219
                   42861: mo     93      2       220
                   42862: es     93      2       221
                   42863: sc     93      2       222
                   42864: dd     83      2       223
                   42865: lc     87      2       224
                   42866: rc     83      2       225
                   42867: lf     92      2       226
                   42868: rf     92      2       227
                   42869: bv     92      2       228
                   42870: **     93      2       229
                   42871: br     93      2       230
                   42872: ci     46      3       231
                   42873: ts     88      2       232
                   42874: co     84      2       233
                   42875: lt     84      2       234
                   42876: rt     87      2       235
                   42877: lb     87      2       236
                   42878: rb     70      2       237
                   42879: lk     70      2       238
                   42880: rk     87      2       239
                   42881: rh     87      2       241
                   42882: tm     76      2       242
                   42883: Sl     95      2       243
                   42884: ps     77      2       244
                   42885: cs     86      2       245
                   42886: cy     77      2       246
                   42887: as     89      3       247
                   42888: os     97      2       248
                   42889: =.     89      3       249
                   42890: ld     83      2       250
                   42891: rd     87      2       251
                   42892: le     93      2       252
                   42893: ge     97      2       253
                   42894: pp     92      2       254
                   42895: 0707070014230362351006440057030057030000011044360522627502500002500000002051post.src/devopost/ZI# ZapfChancery-MediumItalic
                   42896: name ZI
                   42897: internalname 37
                   42898: ligatures fi fl 0
                   42899: charset
                   42900: !      28      2       33
                   42901: $      44      3       36
                   42902: %      68      2       37
                   42903: &      78      2       38
                   42904: '      24      2       39
                   42905: (      26      3       40
                   42906: )      22      3       41
                   42907: *      42      2       42
                   42908: +      52      0       43
                   42909: ,      22      0       44
                   42910: hy     28      0       45
                   42911: -      "
                   42912: .      22      0       46
                   42913: /      34      3       47
                   42914: 0      44      2       48
                   42915: 1      44      2       49
                   42916: 2      44      2       50
                   42917: 3      44      2       51
                   42918: 4      44      2       52
                   42919: 5      44      2       53
                   42920: 6      44      2       54
                   42921: 7      44      2       55
                   42922: 8      44      2       56
                   42923: 9      44      2       57
                   42924: :      26      0       58
                   42925: ;      24      0       59
                   42926: =      52      0       61
                   42927: ?      38      2       63
                   42928: A      62      2       65
                   42929: B      60      2       66
                   42930: C      52      2       67
                   42931: D      70      2       68
                   42932: E      62      2       69
                   42933: F      58      2       70
                   42934: G      62      3       71
                   42935: H      68      2       72
                   42936: I      38      2       73
                   42937: J      40      2       74
                   42938: K      66      3       75
                   42939: L      58      2       76
                   42940: M      84      2       77
                   42941: N      70      3       78
                   42942: O      60      2       79
                   42943: P      54      2       80
                   42944: Q      60      3       81
                   42945: R      60      3       82
                   42946: S      46      2       83
                   42947: T      50      2       84
                   42948: U      74      2       85
                   42949: V      64      2       86
                   42950: W      88      2       87
                   42951: X      56      2       88
                   42952: Y      56      3       89
                   42953: Z      62      2       90
                   42954: [      24      3       91
                   42955: ]      32      3       93
                   42956: `      24      2       96
                   42957: a      42      0       97
                   42958: b      42      2       98
                   42959: c      34      0       99
                   42960: d      44      2       100
                   42961: e      34      0       101
                   42962: f      32      3       102
                   42963: g      40      1       103
                   42964: h      44      2       104
                   42965: i      24      2       105
                   42966: j      22      3       106
                   42967: k      44      3       107
                   42968: l      24      2       108
                   42969: m      62      0       109
                   42970: n      46      0       110
                   42971: o      40      0       111
                   42972: p      44      1       112
                   42973: q      40      3       113
                   42974: r      30      0       114
                   42975: s      32      0       115
                   42976: t      32      2       116
                   42977: u      46      0       117
                   42978: v      44      0       118
                   42979: w      68      0       119
                   42980: x      42      1       120
                   42981: y      40      1       121
                   42982: z      44      0       122
                   42983: ct     44      2       162
                   42984: fi     52      3       174
                   42985: fl     52      3       175
                   42986: dg     46      3       178
                   42987: bu     60      2       183
                   42988: de     30      2       202
                   42989: em     100     0       208
                   42990: 14     75      2       1
                   42991: 34     75      2       1
                   42992: 12     75      2       1
                   42993: ``     34      2       170
                   42994: ''     36      2       186
                   42995: 0707070014230642310407550057030057030000021707770522627502700003200000000000post.src/devopost/charlib0707070014230642321006440057030057030000011704730522627502500003500000000421post.src/devopost/charlib/12/build_12 {
                   42996:     pop
                   42997:     /optsize ptsize def
                   42998:     /osize size def
                   42999:     /ofont font def
                   43000: 
                   43001:     optsize 2 div dup R exch R f
                   43002:     0 size 2 mul 3 div dup neg exch 0 exch rmoveto
                   43003: 
                   43004:     (1) show
                   43005:     rmoveto
                   43006:     optsize R f
                   43007:     (\244) show
                   43008:     f
                   43009:     (2) show
                   43010: 
                   43011:     optsize ofont f
                   43012: } def
                   43013: 0707070014230642331006440057030057030000011704740522627502500003500000000421post.src/devopost/charlib/14/build_14 {
                   43014:     pop
                   43015:     /optsize ptsize def
                   43016:     /osize size def
                   43017:     /ofont font def
                   43018: 
                   43019:     optsize 2 div dup R exch R f
                   43020:     0 size 2 mul 3 div dup neg exch 0 exch rmoveto
                   43021: 
                   43022:     (1) show
                   43023:     rmoveto
                   43024:     optsize R f
                   43025:     (\244) show
                   43026:     f
                   43027:     (4) show
                   43028: 
                   43029:     optsize ofont f
                   43030: } def
                   43031: 0707070014230642341006440057030057030000011704750522627502600003500000000421post.src/devopost/charlib/34/build_34 {
                   43032:     pop
                   43033:     /optsize ptsize def
                   43034:     /osize size def
                   43035:     /ofont font def
                   43036: 
                   43037:     optsize 2 div dup R exch R f
                   43038:     0 size 2 mul 3 div dup neg exch 0 exch rmoveto
                   43039: 
                   43040:     (3) show
                   43041:     rmoveto
                   43042:     optsize R f
                   43043:     (\244) show
                   43044:     f
                   43045:     (4) show
                   43046: 
                   43047:     optsize ofont f
                   43048: } def
                   43049: 0707070014230642351006440057030057030000011710100522627502600005000000004542post.src/devopost/charlib/BRACKETS_NOTE
                   43050:  lc, rc, lf, and rf contain PostScript code that can be used to build the top
                   43051:  and bottom bracket pieces used by eqn. The files are only used if the character
                   43052:  code field in the S font file for lc, rc, lf, and rf is set to 1. A code larger
                   43053:  than 32 means a character from Adobe's Symbol font will be used. Think the real
                   43054:  solution is to change eqn so large brackets and braces are built differently.
                   43055: 
                   43056:  There were some serious collisions with eqn's bracket building algorithm and
                   43057:  Adobe's Symbol font. eqn extends all the pieces with the \(bv character, while
                   43058:  the bracket and brace pieces available in Adobe's Symbol are all quite different
                   43059:  and are designed to work with their own extenders. The reference points are
                   43060:  different, but worse still the thickness of brackets and braces don't match.
                   43061:  Anyway using a single extender (the way eqn does) can't ever work with the
                   43062:  bracket and brace characters available in Adobe's Symbol font.
                   43063: 
                   43064:  The lc, rc, lf, and rf files are a very complicated attempt to get around the
                   43065:  problem. Each builds the troff character by using the \(bv character from the
                   43066:  Symbol font and then draws a small horizontal line at either the top or bottom
                   43067:  of the \(bv. Using \(bv for the vertical part guarantees things will stack
                   43068:  properly, but getting to the precise top or bottom of the \(bv (down to the
                   43069:  pixel level on all devices and in all sizes) proved to be very difficult. In
                   43070:  fact you would think that determining the bounding box of \(bv would be enough
                   43071:  to let you draw a good bracket piece that matched up nicely with the extender.
                   43072:  Not quite, at least I didn't find that it was possible to do a good job drawing
                   43073:  the pieces from the \(bv bounding box. Think roundoff errors introduced by the
                   43074:  CTM caused the trouble, although I expect there's more to it.
                   43075:  
                   43076:  Clipping a rectangular region 2 pixels smaller in height than the bounding box
                   43077:  of the \(bv character, and using the corners of that box to locate the top and
                   43078:  bottom of the bv for the horizontal extender solved the problems I originally
                   43079:  had with the precise placement of the horizontal rule. Anyway that's what the
                   43080:  clipping and idtransform are for. The initgraphics stuff is an attempt to fit
                   43081:  a tight bounding box around the \(bv character independent of the rotation of
                   43082:  our coordinate system. pathbbox only returns what we want if the coordinate
                   43083:  system has been rotated by a multiple of 90 degrees.
                   43084:  
                   43085: 0707070014230642361006440057030057030000011704760522627502600003500000000075post.src/devopost/charlib/Fi/build_Fi {
                   43086:     pop
                   43087:     size .05 mul neg 0 (ffi) ashow
                   43088: } def
                   43089: 0707070014230642371006440057030057030000011704770522627502600003500000000075post.src/devopost/charlib/Fl/build_Fl {
                   43090:     pop
                   43091:     size .05 mul neg 0 (ffl) ashow
                   43092: } def
                   43093: 0707070014230642401006440057030057030000011710130522627502600003500000000402post.src/devopost/charlib/L1/build_L1 {
                   43094:     pop
                   43095:     /picstr 40 string def
                   43096:     gsave
                   43097:     currentpoint translate
                   43098:     .533 72 mul size mul 36 div
                   43099:     .5 72 mul size mul 36 div
                   43100:     scale
                   43101:     160 150 1 [160 0 0 -150 0 150]
                   43102:     {currentfile picstr readhexstring pop} image
                   43103:     grestore
                   43104: } def
                   43105: 0707070014230642411006440057030057030000011710300522627502600004100000014006post.src/devopost/charlib/L1.mapFFFFFFFFFFFFFFFFFF0007FFFFFFFFFFFFFFFFFF
                   43106: FFFFFFFFFFFFFFFF00000007FFFFFFFFFFFFFFFF
                   43107: FFFFFFFFFFFFFFE0000000007FFFFFFFFFFFFFFF
                   43108: FFFFFFFFFFFFFF00000000000FFFFFFFFFFFFFFF
                   43109: FFFFFFFFFFFFF8000000000001FFFFFFFFFFFFFF
                   43110: FFFFFFFFFFFFE00000000000003FFFFFFFFFFFFF
                   43111: FFFFFFFFFFFF000000000000000FFFFFFFFFFFFF
                   43112: FFFFFFFFFFFC0000000000000003FFFFFFFFFFFF
                   43113: FFFFFFFFFFF000000000000000007FFFFFFFFFFF
                   43114: FFFFFFFFFFC000000000000000003FFFFFFFFFFF
                   43115: FFFFFFFFFF8FFFFFFF00000000000FFFFFFFFFFF
                   43116: FFFFFFFFFFFFFFFFFFFF0000000007FFFFFFFFFF
                   43117: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   43118: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   43119: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   43120: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   43121: FFFFFFFFFFFFFFFFFFFFFF000000000FFFFFFFFF
                   43122: FFFFFFFFFFFFFFFFFFFFC00000000003FFFFFFFF
                   43123: FFFFFFF81FFFFFFFFFC0000000000001FFFFFFFF
                   43124: FFFFFFF0000000000000000000000000FFFFFFFF
                   43125: FFFFFFE00000000000000000000000007FFFFFFF
                   43126: FFFFFFC00000000000000000000000003FFFFFFF
                   43127: FFFFFF800000000000000000000000001FFFFFFF
                   43128: FFFFFF000000000000000000000000000FFFFFFF
                   43129: FFFFFE0007FFFFFFFF8000000000000007FFFFFF
                   43130: FFFFFE7FFFFFFFFFFFFFFE000000000003FFFFFF
                   43131: FFFFFFFFFFFFFFFFFFFFFFFF0000000003FFFFFF
                   43132: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   43133: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   43134: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   43135: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   43136: FFFFFFFFFFFFFFFFFFFFFFFFFE000000001FFFFF
                   43137: FFFFFFFFFFFFFFFFFFFFFFFF80000000001FFFFF
                   43138: FFFF01FFFFFFFFFFFFFFFFC000000000000FFFFF
                   43139: FFFE00000000000000000000000000000007FFFF
                   43140: FFFE00000000000000000000000000000007FFFF
                   43141: FFFC00000000000000000000000000000003FFFF
                   43142: FFFC00000000000000000000000000000003FFFF
                   43143: FFF800000000000000000000000000000001FFFF
                   43144: FFF800000000000000000000000000000000FFFF
                   43145: FFF80FFFFFFFFFFFFFFFFFE0000000000000FFFF
                   43146: FFFFFFFFFFFFFFFFFFFFFFFFFE0000000000FFFF
                   43147: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   43148: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   43149: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   43150: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   43151: FFFFFFFFFFFFFFFFFFFFFFFFFFFFC00000001FFF
                   43152: FFFFFFFFFFFFFFFFFFFFFFFFFFC0000000001FFF
                   43153: FF87FFFFFFFFFFFFFFFFFFFFC000000000000FFF
                   43154: FF000000007FFFFFFFFFFC000000000000000FFF
                   43155: FF000000000000000000000000000000000007FF
                   43156: FF000000000000000000000000000000000007FF
                   43157: FE000000000000000000000000000000000007FF
                   43158: FE000000000000000000000000000000000003FF
                   43159: FE000000000000000000000000000000000003FF
                   43160: FE0007FFFFFFFFFFFFFFFFC000000000000003FF
                   43161: FC0FFFFFFFFFFFFFFFFFFFFFFC000000000003FF
                   43162: FFFFFFFFFFFFFFFFFFFFFFFFFFFFC000000003FF
                   43163: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   43164: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   43165: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   43166: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00000001FF
                   43167: FFFFFFFFFFFFFFFFFFFFFFFFFF800000000001FF
                   43168: F8FFFFFFFFFFFFFFFFFFFFFF80000000000000FF
                   43169: F8000FFFFFFFFFFFFFFFFF0000000000000000FF
                   43170: F8000000000000000000000000000000000000FF
                   43171: F0000000000000000000000000000000000000FF
                   43172: F0000000000000000000000000000000000000FF
                   43173: F0000000000000000000000000000000000000FF
                   43174: F00000000000000000000000000000000000007F
                   43175: F00000007FFFFFFFFFFFE000000000000000007F
                   43176: F000FFFFFFFFFFFFFFFFFFFF000000000000007F
                   43177: F07FFFFFFFFFFFFFFFFFFFFFFFC000000000007F
                   43178: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   43179: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   43180: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   43181: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   43182: FFFFFFFFFFFFFFFFFFFFFFFFFF0000000000007F
                   43183: F007FFFFFFFFFFFFFFFFFFFC000000000000007F
                   43184: F00003FFFFFFFFFFFFFFF000000000000000007F
                   43185: F00000000000000000000000000000000000007F
                   43186: F00000000000000000000000000000000000007F
                   43187: F0000000000000000000000000000000000000FF
                   43188: F0000000000000000000000000000000000000FF
                   43189: F8000000000000000000000000000000000000FF
                   43190: F8000000000000000000000000000000000000FF
                   43191: F80003FFFFFFFFFFFFFFF80000000000000000FF
                   43192: F80FFFFFFFFFFFFFFFFFFFFFC0000000000000FF
                   43193: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   43194: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   43195: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   43196: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   43197: FFFFFFFFFFFFFFFFFFFFFFFE00000000000003FF
                   43198: FC003FFFFFFFFFFFFFFE000000000000000003FF
                   43199: FE000000FFFFFFFFC800000000000000000003FF
                   43200: FE000000000000000000000000000000000003FF
                   43201: FE000000000000000000000000000000000003FF
                   43202: FE000000000000000000000000000000000003FF
                   43203: FF000000000000000000000000000000000007FF
                   43204: FF000000000000000000000000000000000007FF
                   43205: FF000000000000000000000000000000000007FF
                   43206: FF80000000000000000000000000000000000FFF
                   43207: FF8000000007FF80000000000000000000000FFF
                   43208: FFC00007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   43209: FFC07FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   43210: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   43211: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   43212: FFF03FFFFFFFFFFFFFFFC0000000000000007FFF
                   43213: FFF0000007FFFFFE000000000000000000007FFF
                   43214: FFF800000000000000000000000000000000FFFF
                   43215: FFF800000000000000000000000000000000FFFF
                   43216: FFF800000000000000000000000000000000FFFF
                   43217: FFFC00000000000000000000000000000001FFFF
                   43218: FFFE00000000000000000000000000000003FFFF
                   43219: FFFE00000000000000000000000000000003FFFF
                   43220: FFFF00000000000000000000000000000007FFFF
                   43221: FFFF0000000000000000000000000000000FFFFF
                   43222: FFFF8000000000000000000000000000000FFFFF
                   43223: FFFFC000003FFFE00000000000000000001FFFFF
                   43224: FFFFE007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   43225: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   43226: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   43227: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   43228: FFFFFC0000000000000000000000000001FFFFFF
                   43229: FFFFFE0000000000000000000000000003FFFFFF
                   43230: FFFFFF0000000000000000000000000003FFFFFF
                   43231: FFFFFF0000000000000000000000000007FFFFFF
                   43232: FFFFFF800000000000000000000000000FFFFFFF
                   43233: FFFFFFC00000000000000000000000001FFFFFFF
                   43234: FFFFFFE00000000000000000000000003FFFFFFF
                   43235: FFFFFFF00000000000000000000000007FFFFFFF
                   43236: FFFFFFFC000000000000000000000000FFFFFFFF
                   43237: FFFFFFFE000000000000000000000003FFFFFFFF
                   43238: FFFFFFFF000000000000000000000007FFFFFFFF
                   43239: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   43240: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   43241: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   43242: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   43243: FFFFFFFFFF00000000000000000003FFFFFFFFFF
                   43244: FFFFFFFFFF8000000000000000000FFFFFFFFFFF
                   43245: FFFFFFFFFFE000000000000000001FFFFFFFFFFF
                   43246: FFFFFFFFFFF000000000000000007FFFFFFFFFFF
                   43247: FFFFFFFFFFFC0000000000000001FFFFFFFFFFFF
                   43248: FFFFFFFFFFFF0000000000000007FFFFFFFFFFFF
                   43249: FFFFFFFFFFFFE00000000000003FFFFFFFFFFFFF
                   43250: FFFFFFFFFFFFF8000000000000FFFFFFFFFFFFFF
                   43251: FFFFFFFFFFFFFF000000000007FFFFFFFFFFFFFF
                   43252: FFFFFFFFFFFFFFF0000000007FFFFFFFFFFFFFFF
                   43253: FFFFFFFFFFFFFFFF00000007FFFFFFFFFFFFFFFF
                   43254: FFFFFFFFFFFFFFFFFE0007FFFFFFFFFFFFFFFFFF
                   43255: 0707070014230642421006440057030057030000011710370522627502600003500000000024post.src/devopost/charlib/LH/build_LH {pop} def
                   43256: 0707070014230642431006440057030057030000011710500522627502600004100000017112post.src/devopost/charlib/LH.mapgsave
                   43257: /M {moveto} def
                   43258: /L {lineto} def
                   43259: 
                   43260: currentpoint translate
                   43261: 0 360 translate
                   43262: 2.4 2.4 scale
                   43263: ptsize 36 div dup neg scale
                   43264: 
                   43265: 68 1 M
                   43266: 68 1 L
                   43267: 60 2 L
                   43268: 55 3 L
                   43269: 52 4 L
                   43270: 49 5 L
                   43271: 47 6 L
                   43272: 44 7 L
                   43273: 42 8 L
                   43274: 40 9 L
                   43275: 38 10 L
                   43276: 37 11 L
                   43277: 39 11 L
                   43278: 53 10 L
                   43279: 68 11 L
                   43280: 76 12 L
                   43281: 112 12 L
                   43282: 111 11 L
                   43283: 109 10 L
                   43284: 108 9 L
                   43285: 105 8 L
                   43286: 103 7 L
                   43287: 101 6 L
                   43288: 98 5 L
                   43289: 95 4 L
                   43290: 92 3 L
                   43291: 88 2 L
                   43292: 80 1 L
                   43293: closepath
                   43294: 84 17 M
                   43295: 84 17 L
                   43296: 78 18 L
                   43297: 70 19 L
                   43298: 50 20 L
                   43299: 30 19 L
                   43300: 25 19 L
                   43301: 24 20 L
                   43302: 23 21 L
                   43303: 22 22 L
                   43304: 21 23 L
                   43305: 20 24 L
                   43306: 19 25 L
                   43307: 19 26 L
                   43308: 20 26 L
                   43309: 32 25 L
                   43310: 50 24 L
                   43311: 69 25 L
                   43312: 83 26 L
                   43313: 92 27 L
                   43314: 129 27 L
                   43315: 129 26 L
                   43316: 128 25 L
                   43317: 127 24 L
                   43318: 126 23 L
                   43319: 125 22 L
                   43320: 124 21 L
                   43321: 123 20 L
                   43322: 122 19 L
                   43323: 121 18 L
                   43324: 119 17 L
                   43325: closepath
                   43326: 99 32 M
                   43327: 99 32 L
                   43328: 93 33 L
                   43329: 86 34 L
                   43330: 52 35 L
                   43331: 18 34 L
                   43332: 12 34 L
                   43333: 11 35 L
                   43334: 11 36 L
                   43335: 10 37 L
                   43336: 10 38 L
                   43337: 9 39 L
                   43338: 9 40 L
                   43339: 9 41 L
                   43340: 15 41 L
                   43341: 51 40 L
                   43342: 87 41 L
                   43343: 99 42 L
                   43344: 139 42 L
                   43345: 139 41 L
                   43346: 139 40 L
                   43347: 138 39 L
                   43348: 137 38 L
                   43349: 137 37 L
                   43350: 136 36 L
                   43351: 136 35 L
                   43352: 135 34 L
                   43353: 134 33 L
                   43354: 134 32 L
                   43355: closepath
                   43356: 110 47 M
                   43357: 110 47 L
                   43358: 102 48 L
                   43359: 94 49 L
                   43360: 82 50 L
                   43361: 59 51 L
                   43362: 36 50 L
                   43363: 8 49 L
                   43364: 5 49 L
                   43365: 4 50 L
                   43366: 4 51 L
                   43367: 4 52 L
                   43368: 3 53 L
                   43369: 3 54 L
                   43370: 3 55 L
                   43371: 3 56 L
                   43372: 2 57 L
                   43373: 7 57 L
                   43374: 16 56 L
                   43375: 51 55 L
                   43376: 86 56 L
                   43377: 98 57 L
                   43378: 110 58 L
                   43379: 145 58 L
                   43380: 145 57 L
                   43381: 145 56 L
                   43382: 145 55 L
                   43383: 145 54 L
                   43384: 144 53 L
                   43385: 144 52 L
                   43386: 144 51 L
                   43387: 143 50 L
                   43388: 143 49 L
                   43389: 142 48 L
                   43390: 142 47 L
                   43391: closepath
                   43392: 178 49 M
                   43393: 178 49 L
                   43394: 178 50 L
                   43395: 177 51 L
                   43396: 177 52 L
                   43397: 177 53 L
                   43398: 176 54 L
                   43399: 176 55 L
                   43400: 176 56 L
                   43401: 175 57 L
                   43402: 175 58 L
                   43403: 175 59 L
                   43404: 174 60 L
                   43405: 174 61 L
                   43406: 174 62 L
                   43407: 173 63 L
                   43408: 173 64 L
                   43409: 173 65 L
                   43410: 172 66 L
                   43411: 172 67 L
                   43412: 172 68 L
                   43413: 171 69 L
                   43414: 171 70 L
                   43415: 171 71 L
                   43416: 170 72 L
                   43417: 170 73 L
                   43418: 170 74 L
                   43419: 169 75 L
                   43420: 169 76 L
                   43421: 169 77 L
                   43422: 168 78 L
                   43423: 168 79 L
                   43424: 168 80 L
                   43425: 167 81 L
                   43426: 167 82 L
                   43427: 167 83 L
                   43428: 166 84 L
                   43429: 166 85 L
                   43430: 166 86 L
                   43431: 165 87 L
                   43432: 165 88 L
                   43433: 165 89 L
                   43434: 164 90 L
                   43435: 164 91 L
                   43436: 164 92 L
                   43437: 163 93 L
                   43438: 163 94 L
                   43439: 163 95 L
                   43440: 162 96 L
                   43441: 162 97 L
                   43442: 162 98 L
                   43443: 161 99 L
                   43444: 161 100 L
                   43445: 161 101 L
                   43446: 160 102 L
                   43447: 174 102 L
                   43448: 174 101 L
                   43449: 175 100 L
                   43450: 175 99 L
                   43451: 175 98 L
                   43452: 176 97 L
                   43453: 176 96 L
                   43454: 176 95 L
                   43455: 177 94 L
                   43456: 185 93 L
                   43457: 194 94 L
                   43458: 194 95 L
                   43459: 195 96 L
                   43460: 195 97 L
                   43461: 195 98 L
                   43462: 195 99 L
                   43463: 196 100 L
                   43464: 196 101 L
                   43465: 196 102 L
                   43466: 210 102 L
                   43467: 209 101 L
                   43468: 209 100 L
                   43469: 209 99 L
                   43470: 208 98 L
                   43471: 208 97 L
                   43472: 208 96 L
                   43473: 208 95 L
                   43474: 207 94 L
                   43475: 207 93 L
                   43476: 207 92 L
                   43477: 206 91 L
                   43478: 206 90 L
                   43479: 206 89 L
                   43480: 205 88 L
                   43481: 205 87 L
                   43482: 205 86 L
                   43483: 204 85 L
                   43484: 204 84 L
                   43485: 204 83 L
                   43486: 203 82 L
                   43487: 203 81 L
                   43488: 203 80 L
                   43489: 202 79 L
                   43490: 202 78 L
                   43491: 202 77 L
                   43492: 202 76 L
                   43493: 201 75 L
                   43494: 201 74 L
                   43495: 201 73 L
                   43496: 200 72 L
                   43497: 200 71 L
                   43498: 200 70 L
                   43499: 199 69 L
                   43500: 199 68 L
                   43501: 199 67 L
                   43502: 198 66 L
                   43503: 198 65 L
                   43504: 198 64 L
                   43505: 197 63 L
                   43506: 197 62 L
                   43507: 197 61 L
                   43508: 197 60 L
                   43509: 196 59 L
                   43510: 196 58 L
                   43511: 196 57 L
                   43512: 195 56 L
                   43513: 195 55 L
                   43514: 195 54 L
                   43515: 194 53 L
                   43516: 194 52 L
                   43517: 194 51 L
                   43518: 193 50 L
                   43519: 193 49 L
                   43520: closepath
                   43521: 200 49 M
                   43522: 200 49 L
                   43523: 200 50 L
                   43524: 200 51 L
                   43525: 200 52 L
                   43526: 200 53 L
                   43527: 200 54 L
                   43528: 200 55 L
                   43529: 200 56 L
                   43530: 200 57 L
                   43531: 200 58 L
                   43532: 200 59 L
                   43533: 200 60 L
                   43534: 214 61 L
                   43535: 214 62 L
                   43536: 214 63 L
                   43537: 214 64 L
                   43538: 214 65 L
                   43539: 214 66 L
                   43540: 214 67 L
                   43541: 214 68 L
                   43542: 214 69 L
                   43543: 214 70 L
                   43544: 214 71 L
                   43545: 214 72 L
                   43546: 214 73 L
                   43547: 214 74 L
                   43548: 214 75 L
                   43549: 214 76 L
                   43550: 214 77 L
                   43551: 214 78 L
                   43552: 214 79 L
                   43553: 214 80 L
                   43554: 214 81 L
                   43555: 214 82 L
                   43556: 214 83 L
                   43557: 214 84 L
                   43558: 214 85 L
                   43559: 214 86 L
                   43560: 214 87 L
                   43561: 214 88 L
                   43562: 214 89 L
                   43563: 214 90 L
                   43564: 214 91 L
                   43565: 214 92 L
                   43566: 214 93 L
                   43567: 214 94 L
                   43568: 214 95 L
                   43569: 214 96 L
                   43570: 214 97 L
                   43571: 214 98 L
                   43572: 214 99 L
                   43573: 214 100 L
                   43574: 214 101 L
                   43575: 214 102 L
                   43576: 228 102 L
                   43577: 228 101 L
                   43578: 228 100 L
                   43579: 228 99 L
                   43580: 228 98 L
                   43581: 228 97 L
                   43582: 228 96 L
                   43583: 228 95 L
                   43584: 228 94 L
                   43585: 228 93 L
                   43586: 228 92 L
                   43587: 228 91 L
                   43588: 228 90 L
                   43589: 228 89 L
                   43590: 228 88 L
                   43591: 228 87 L
                   43592: 228 86 L
                   43593: 228 85 L
                   43594: 228 84 L
                   43595: 228 83 L
                   43596: 228 82 L
                   43597: 228 81 L
                   43598: 228 80 L
                   43599: 228 79 L
                   43600: 228 78 L
                   43601: 228 77 L
                   43602: 228 76 L
                   43603: 228 75 L
                   43604: 228 74 L
                   43605: 228 73 L
                   43606: 228 72 L
                   43607: 228 71 L
                   43608: 228 70 L
                   43609: 228 69 L
                   43610: 228 68 L
                   43611: 228 67 L
                   43612: 228 66 L
                   43613: 228 65 L
                   43614: 228 64 L
                   43615: 228 63 L
                   43616: 228 62 L
                   43617: 228 61 L
                   43618: 241 60 L
                   43619: 241 59 L
                   43620: 241 58 L
                   43621: 241 57 L
                   43622: 241 56 L
                   43623: 241 55 L
                   43624: 241 54 L
                   43625: 241 53 L
                   43626: 241 52 L
                   43627: 241 51 L
                   43628: 241 50 L
                   43629: 241 49 L
                   43630: closepath
                   43631: 266 49 M
                   43632: 266 49 L
                   43633: 266 50 L
                   43634: 266 51 L
                   43635: 266 52 L
                   43636: 266 53 L
                   43637: 266 54 L
                   43638: 266 55 L
                   43639: 266 56 L
                   43640: 266 57 L
                   43641: 266 58 L
                   43642: 266 59 L
                   43643: 266 60 L
                   43644: 280 61 L
                   43645: 280 62 L
                   43646: 280 63 L
                   43647: 280 64 L
                   43648: 280 65 L
                   43649: 280 66 L
                   43650: 280 67 L
                   43651: 280 68 L
                   43652: 280 69 L
                   43653: 280 70 L
                   43654: 280 71 L
                   43655: 280 72 L
                   43656: 280 73 L
                   43657: 280 74 L
                   43658: 280 75 L
                   43659: 280 76 L
                   43660: 280 77 L
                   43661: 280 78 L
                   43662: 280 79 L
                   43663: 280 80 L
                   43664: 280 81 L
                   43665: 280 82 L
                   43666: 280 83 L
                   43667: 280 84 L
                   43668: 280 85 L
                   43669: 280 86 L
                   43670: 280 87 L
                   43671: 280 88 L
                   43672: 280 89 L
                   43673: 280 90 L
                   43674: 280 91 L
                   43675: 280 92 L
                   43676: 280 93 L
                   43677: 280 94 L
                   43678: 280 95 L
                   43679: 280 96 L
                   43680: 280 97 L
                   43681: 280 98 L
                   43682: 280 99 L
                   43683: 280 100 L
                   43684: 280 101 L
                   43685: 280 102 L
                   43686: 294 102 L
                   43687: 294 101 L
                   43688: 294 100 L
                   43689: 294 99 L
                   43690: 294 98 L
                   43691: 294 97 L
                   43692: 294 96 L
                   43693: 294 95 L
                   43694: 294 94 L
                   43695: 294 93 L
                   43696: 294 92 L
                   43697: 294 91 L
                   43698: 294 90 L
                   43699: 294 89 L
                   43700: 294 88 L
                   43701: 294 87 L
                   43702: 294 86 L
                   43703: 294 85 L
                   43704: 294 84 L
                   43705: 294 83 L
                   43706: 294 82 L
                   43707: 294 81 L
                   43708: 294 80 L
                   43709: 294 79 L
                   43710: 294 78 L
                   43711: 294 77 L
                   43712: 294 76 L
                   43713: 294 75 L
                   43714: 294 74 L
                   43715: 294 73 L
                   43716: 294 72 L
                   43717: 294 71 L
                   43718: 294 70 L
                   43719: 294 69 L
                   43720: 294 68 L
                   43721: 294 67 L
                   43722: 294 66 L
                   43723: 294 65 L
                   43724: 294 64 L
                   43725: 294 63 L
                   43726: 294 62 L
                   43727: 294 61 L
                   43728: 308 60 L
                   43729: 308 59 L
                   43730: 308 58 L
                   43731: 308 57 L
                   43732: 308 56 L
                   43733: 308 55 L
                   43734: 308 54 L
                   43735: 308 53 L
                   43736: 308 52 L
                   43737: 308 51 L
                   43738: 308 50 L
                   43739: 308 49 L
                   43740: closepath
                   43741: 251 59 M
                   43742: 251 59 L
                   43743: 245 60 L
                   43744: 243 61 L
                   43745: 241 62 L
                   43746: 240 63 L
                   43747: 239 64 L
                   43748: 239 65 L
                   43749: 238 66 L
                   43750: 238 67 L
                   43751: 237 68 L
                   43752: 237 69 L
                   43753: 237 70 L
                   43754: 237 71 L
                   43755: 237 72 L
                   43756: 238 73 L
                   43757: 238 74 L
                   43758: 238 75 L
                   43759: 239 76 L
                   43760: 239 77 L
                   43761: 240 78 L
                   43762: 239 79 L
                   43763: 238 80 L
                   43764: 237 81 L
                   43765: 237 82 L
                   43766: 237 83 L
                   43767: 236 84 L
                   43768: 236 85 L
                   43769: 235 86 L
                   43770: 235 87 L
                   43771: 235 88 L
                   43772: 235 89 L
                   43773: 235 90 L
                   43774: 235 91 L
                   43775: 235 92 L
                   43776: 236 93 L
                   43777: 236 94 L
                   43778: 237 95 L
                   43779: 237 96 L
                   43780: 238 97 L
                   43781: 239 98 L
                   43782: 240 99 L
                   43783: 241 100 L
                   43784: 243 101 L
                   43785: 245 102 L
                   43786: 249 103 L
                   43787: 259 103 L
                   43788: 262 102 L
                   43789: 265 101 L
                   43790: 267 100 L
                   43791: 270 101 L
                   43792: 272 102 L
                   43793: 276 102 L
                   43794: 276 101 L
                   43795: 276 100 L
                   43796: 276 99 L
                   43797: 276 98 L
                   43798: 276 97 L
                   43799: 276 96 L
                   43800: 276 95 L
                   43801: 276 94 L
                   43802: 276 93 L
                   43803: 273 92 L
                   43804: 273 91 L
                   43805: 274 90 L
                   43806: 274 89 L
                   43807: 274 88 L
                   43808: 274 87 L
                   43809: 274 86 L
                   43810: 274 85 L
                   43811: 274 84 L
                   43812: 274 83 L
                   43813: 274 82 L
                   43814: 274 81 L
                   43815: 274 80 L
                   43816: 274 79 L
                   43817: 274 78 L
                   43818: 274 77 L
                   43819: 274 76 L
                   43820: 264 75 L
                   43821: 264 74 L
                   43822: 264 73 L
                   43823: 264 72 L
                   43824: 264 71 L
                   43825: 264 70 L
                   43826: 264 69 L
                   43827: 264 68 L
                   43828: 264 67 L
                   43829: 263 66 L
                   43830: 263 65 L
                   43831: 263 64 L
                   43832: 262 63 L
                   43833: 261 62 L
                   43834: 260 61 L
                   43835: 258 60 L
                   43836: 253 59 L
                   43837: closepath
                   43838: 114 62 M
                   43839: 114 62 L
                   43840: 101 63 L
                   43841: 93 64 L
                   43842: 84 65 L
                   43843: 49 66 L
                   43844: 15 65 L
                   43845: 3 64 L
                   43846: 1 64 L
                   43847: 1 65 L
                   43848: 1 66 L
                   43849: 0 67 L
                   43850: 0 68 L
                   43851: 0 69 L
                   43852: 0 70 L
                   43853: 0 71 L
                   43854: 0 72 L
                   43855: 0 73 L
                   43856: 4 73 L
                   43857: 11 72 L
                   43858: 28 71 L
                   43859: 53 70 L
                   43860: 79 71 L
                   43861: 92 72 L
                   43862: 102 73 L
                   43863: 148 73 L
                   43864: 148 72 L
                   43865: 148 71 L
                   43866: 148 70 L
                   43867: 147 69 L
                   43868: 147 68 L
                   43869: 147 67 L
                   43870: 147 66 L
                   43871: 147 65 L
                   43872: 147 64 L
                   43873: 146 63 L
                   43874: 146 62 L
                   43875: closepath
                   43876: 185 68 M
                   43877: 185 68 L
                   43878: 186 67 L
                   43879: 187 68 L
                   43880: 187 69 L
                   43881: 187 70 L
                   43882: 188 71 L
                   43883: 188 72 L
                   43884: 188 73 L
                   43885: 188 74 L
                   43886: 189 75 L
                   43887: 189 76 L
                   43888: 189 77 L
                   43889: 189 78 L
                   43890: 190 79 L
                   43891: 190 80 L
                   43892: 190 81 L
                   43893: 185 82 L
                   43894: 181 81 L
                   43895: 181 80 L
                   43896: 181 79 L
                   43897: 182 78 L
                   43898: 182 77 L
                   43899: 182 76 L
                   43900: 183 75 L
                   43901: 183 74 L
                   43902: 183 73 L
                   43903: 184 72 L
                   43904: 184 71 L
                   43905: 184 70 L
                   43906: 184 69 L
                   43907: closepath
                   43908: 250 68 M
                   43909: 250 68 L
                   43910: 251 67 L
                   43911: 253 68 L
                   43912: 254 69 L
                   43913: 254 70 L
                   43914: 254 71 L
                   43915: 254 72 L
                   43916: 254 73 L
                   43917: 254 74 L
                   43918: 254 75 L
                   43919: 252 76 L
                   43920: 251 75 L
                   43921: 250 74 L
                   43922: 249 73 L
                   43923: 249 72 L
                   43924: 249 71 L
                   43925: 249 70 L
                   43926: 249 69 L
                   43927: closepath
                   43928: 254 77 M
                   43929: 254 77 L
                   43930: 259 76 L
                   43931: 264 77 L
                   43932: 264 78 L
                   43933: 264 79 L
                   43934: 264 80 L
                   43935: 264 81 L
                   43936: 264 82 L
                   43937: 264 83 L
                   43938: 264 84 L
                   43939: 263 85 L
                   43940: 262 84 L
                   43941: 261 83 L
                   43942: 260 82 L
                   43943: 258 81 L
                   43944: 257 80 L
                   43945: 256 79 L
                   43946: 255 78 L
                   43947: closepath
                   43948: 100 78 M
                   43949: 100 78 L
                   43950: 90 79 L
                   43951: 80 80 L
                   43952: 48 81 L
                   43953: 17 80 L
                   43954: 8 79 L
                   43955: 0 79 L
                   43956: 0 80 L
                   43957: 0 81 L
                   43958: 0 82 L
                   43959: 0 83 L
                   43960: 0 84 L
                   43961: 1 85 L
                   43962: 1 86 L
                   43963: 1 87 L
                   43964: 1 88 L
                   43965: 7 88 L
                   43966: 17 87 L
                   43967: 49 86 L
                   43968: 81 87 L
                   43969: 94 88 L
                   43970: 147 88 L
                   43971: 147 87 L
                   43972: 147 86 L
                   43973: 147 85 L
                   43974: 147 84 L
                   43975: 147 83 L
                   43976: 148 82 L
                   43977: 148 81 L
                   43978: 148 80 L
                   43979: 148 79 L
                   43980: 148 78 L
                   43981: closepath
                   43982: 246 86 M
                   43983: 246 86 L
                   43984: 247 85 L
                   43985: 249 86 L
                   43986: 250 87 L
                   43987: 252 88 L
                   43988: 253 89 L
                   43989: 254 90 L
                   43990: 255 91 L
                   43991: 255 92 L
                   43992: 252 93 L
                   43993: 250 92 L
                   43994: 248 91 L
                   43995: 247 90 L
                   43996: 247 89 L
                   43997: 246 88 L
                   43998: 246 87 L
                   43999: closepath
                   44000: 91 93 M
                   44001: 91 93 L
                   44002: 75 94 L
                   44003: 65 95 L
                   44004: 64 96 L
                   44005: 63 95 L
                   44006: 62 95 L
                   44007: 44 96 L
                   44008: 27 95 L
                   44009: 13 94 L
                   44010: 2 94 L
                   44011: 3 95 L
                   44012: 3 96 L
                   44013: 3 97 L
                   44014: 3 98 L
                   44015: 4 99 L
                   44016: 4 100 L
                   44017: 4 101 L
                   44018: 5 102 L
                   44019: 5 103 L
                   44020: 6 104 L
                   44021: 6 105 L
                   44022: 12 105 L
                   44023: 24 104 L
                   44024: 40 103 L
                   44025: 46 102 L
                   44026: 53 103 L
                   44027: 143 103 L
                   44028: 143 102 L
                   44029: 144 101 L
                   44030: 144 100 L
                   44031: 144 99 L
                   44032: 145 98 L
                   44033: 145 97 L
                   44034: 145 96 L
                   44035: 145 95 L
                   44036: 145 94 L
                   44037: 145 93 L
                   44038: closepath
                   44039: 8 108 M
                   44040: 8 108 L
                   44041: 8 109 L
                   44042: 9 110 L
                   44043: 9 111 L
                   44044: 9 112 L
                   44045: 10 113 L
                   44046: 11 114 L
                   44047: 11 115 L
                   44048: 12 116 L
                   44049: 12 117 L
                   44050: 13 118 L
                   44051: 14 119 L
                   44052: 15 120 L
                   44053: 24 120 L
                   44054: 37 119 L
                   44055: 46 118 L
                   44056: 55 119 L
                   44057: 134 119 L
                   44058: 135 118 L
                   44059: 135 117 L
                   44060: 136 116 L
                   44061: 137 115 L
                   44062: 137 114 L
                   44063: 138 113 L
                   44064: 139 112 L
                   44065: 139 111 L
                   44066: 139 110 L
                   44067: 140 109 L
                   44068: 140 108 L
                   44069: 78 108 L
                   44070: 59 109 L
                   44071: 45 110 L
                   44072: 32 109 L
                   44073: 13 108 L
                   44074: closepath
                   44075: 18 124 M
                   44076: 18 124 L
                   44077: 19 125 L
                   44078: 20 126 L
                   44079: 20 127 L
                   44080: 21 128 L
                   44081: 22 129 L
                   44082: 23 130 L
                   44083: 24 131 L
                   44084: 26 132 L
                   44085: 27 133 L
                   44086: 28 134 L
                   44087: 120 134 L
                   44088: 121 133 L
                   44089: 123 132 L
                   44090: 124 131 L
                   44091: 125 130 L
                   44092: 126 129 L
                   44093: 127 128 L
                   44094: 128 127 L
                   44095: 129 126 L
                   44096: 129 125 L
                   44097: 130 124 L
                   44098: closepath
                   44099: 36 139 M
                   44100: 36 139 L
                   44101: 37 140 L
                   44102: 39 141 L
                   44103: 40 142 L
                   44104: 42 143 L
                   44105: 44 144 L
                   44106: 47 145 L
                   44107: 49 146 L
                   44108: 52 147 L
                   44109: 56 148 L
                   44110: 60 149 L
                   44111: 67 150 L
                   44112: 80 150 L
                   44113: 88 149 L
                   44114: 92 148 L
                   44115: 96 147 L
                   44116: 99 146 L
                   44117: 101 145 L
                   44118: 104 144 L
                   44119: 106 143 L
                   44120: 108 142 L
                   44121: 110 141 L
                   44122: 111 140 L
                   44123: 113 139 L
                   44124: closepath
                   44125: fill
                   44126: grestore
                   44127: 0707070014230642441006440057030057030000011710140522627502600003500000000402post.src/devopost/charlib/Lb/build_Lb {
                   44128:     pop
                   44129:     /picstr 78 string def
                   44130:     gsave
                   44131:     currentpoint translate
                   44132:     1.03 72 mul size mul 36 div
                   44133:     .5 72 mul size mul 36 div
                   44134:     scale
                   44135:     309 150 1 [309 0 0 -150 0 150]
                   44136:     {currentfile picstr readhexstring pop} image
                   44137:     grestore
                   44138: } def
                   44139: 0707070014230642451006440057030057030000011710700522627502600004100000027112post.src/devopost/charlib/Lb.mapFFFFFFFFFFFFFFFFF0007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44140: FFFFFFFFFFFFFFF00000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44141: FFFFFFFFFFFFFE0000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44142: FFFFFFFFFFFFF00000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44143: FFFFFFFFFFFF8000000000001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44144: FFFFFFFFFFFE00000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44145: FFFFFFFFFFF000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44146: FFFFFFFFFFC0000000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44147: FFFFFFFFFF000000000000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44148: FFFFFFFFFC000000000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44149: FFFFFFFFF8FFFFFFF00000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44150: FFFFFFFFFFFFFFFFFFF0000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44151: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44152: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44153: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44154: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44155: FFFFFFFFFFFFFFFFFFFFF000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44156: FFFFFFFFFFFFFFFFFFFC00000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44157: FFFFFF81FFFFFFFFFC0000000000001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44158: FFFFFF0000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44159: FFFFFE00000000000000000000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44160: FFFFFC00000000000000000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44161: FFFFF800000000000000000000000001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44162: FFFFF000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44163: FFFFE0007FFFFFFFF8000000000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44164: FFFFE7FFFFFFFFFFFFFFE000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44165: FFFFFFFFFFFFFFFFFFFFFFF0000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44166: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44167: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44168: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44169: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44170: FFFFFFFFFFFFFFFFFFFFFFFFE000000001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44171: FFFFFFFFFFFFFFFFFFFFFFF80000000001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44172: FFF01FFFFFFFFFFFFFFFFC000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44173: FFE00000000000000000000000000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44174: FFE00000000000000000000000000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44175: FFC00000000000000000000000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44176: FFC00000000000000000000000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44177: FF800000000000000000000000000000001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44178: FF800000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44179: FF80FFFFFFFFFFFFFFFFFE0000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44180: FFFFFFFFFFFFFFFFFFFFFFFFE0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44181: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44182: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44183: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44184: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44185: FFFFFFFFFFFFFFFFFFFFFFFFFFFC00000001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44186: FFFFFFFFFFFFFFFFFFFFFFFFFC0000000001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44187: F87FFFFFFFFFFFFFFFFFFFFC000000000000FFFFFFFFC0003F00000000003FFFFFC00000000007
                   44188: F000000007FFFFFFFFFFC000000000000000FFFFFFFFC0003F00000000003FFFFFC00000000007
                   44189: F000000000000000000000000000000000007FFFFFFF80001F00000000003FFFFFC00000000007
                   44190: F000000000000000000000000000000000007FFFFFFF80001F00000000003FFFFFC00000000007
                   44191: E000000000000000000000000000000000007FFFFFFF80001F00000000003FFFFFC00000000007
                   44192: E000000000000000000000000000000000003FFFFFFF00000F00000000003FFFFFC00000000007
                   44193: E000000000000000000000000000000000003FFFFFFF00000F00000000003FFFFFC00000000007
                   44194: E0007FFFFFFFFFFFFFFFFC000000000000003FFFFFFF00000F00000000003FFFFFC00000000007
                   44195: C0FFFFFFFFFFFFFFFFFFFFFFC000000000003FFFFFFE00000700000000003FFFFFC00000000007
                   44196: FFFFFFFFFFFFFFFFFFFFFFFFFFFC000000003FFFFFFE00000700000000003FFFFFC00000000007
                   44197: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE00000700000000003FE3FFC00000000007
                   44198: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC000003000000000038001FC00000000007
                   44199: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC000003FFFC0007FFE00007FFFF0001FFFF
                   44200: FFFFFFFFFFFFFFFFFFFFFFFFFFFFC00000001FFFFFFC000003FFFC0007FF800003FFFF0001FFFF
                   44201: FFFFFFFFFFFFFFFFFFFFFFFFF800000000001FFFFFF8000003FFFC0007FF000001FFFF0001FFFF
                   44202: 8FFFFFFFFFFFFFFFFFFFFFF80000000000000FFFFFF8000001FFFC0007FE000000FFFF0001FFFF
                   44203: 8000FFFFFFFFFFFFFFFFF0000000000000000FFFFFF8000001FFFC0007FE000000FFFF0001FFFF
                   44204: 8000000000000000000000000000000000000FFFFFF0000001FFFC0007FC000000FFFF0001FFFF
                   44205: 0000000000000000000000000000000000000FFFFFF0000000FFFC0007FC0000007FFF0001FFFF
                   44206: 0000000000000000000000000000000000000FFFFFF0002000FFFC0007F80018007FFF0001FFFF
                   44207: 0000000000000000000000000000000000000FFFFFE0006000FFFC0007F8003C007FFF0001FFFF
                   44208: 00000000000000000000000000000000000007FFFFE00060007FFC0007F8003C007FFF0001FFFF
                   44209: 00000007FFFFFFFFFFFE000000000000000007FFFFE00070007FFC0007F8003C007FFF0001FFFF
                   44210: 000FFFFFFFFFFFFFFFFFFFF000000000000007FFFFC00070007FFC0007F8003C007FFF0001FFFF
                   44211: 07FFFFFFFFFFFFFFFFFFFFFFFC000000000007FFFFC000F0003FFC0007FC003C007FFF0001FFFF
                   44212: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC000F0003FFC0007FC001C007FFF0001FFFF
                   44213: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8000F8003FFC0007FC000C007FFF0001FFFF
                   44214: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8001F8001FFC0007FE000000001F0001FFFF
                   44215: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8001F8001FFC0007FE0001FF001F0001FFFF
                   44216: FFFFFFFFFFFFFFFFFFFFFFFFF0000000000007FFFF0001F8001FFC0007FF0000FF001F0001FFFF
                   44217: 007FFFFFFFFFFFFFFFFFFFC000000000000007FFFF0003FC001FFC0007FE00007F001F0001FFFF
                   44218: 00003FFFFFFFFFFFFFFF000000000000000007FFFF0003FC000FFC0007FC00003F001F0001FFFF
                   44219: 00000000000000000000000000000000000007FFFE0003FC000FFC0007F800001F001F0001FFFF
                   44220: 00000000000000000000000000000000000007FFFE000000000FFC0007F8000007001F0001FFFF
                   44221: 0000000000000000000000000000000000000FFFFE0000000007FC0007F8000003001F0001FFFF
                   44222: 0000000000000000000000000000000000000FFFFC0000000007FC0007F0000001001F0001FFFF
                   44223: 8000000000000000000000000000000000000FFFFC0000000007FC0007F0000000001F0001FFFF
                   44224: 8000000000000000000000000000000000000FFFFC0000000003FC0007E0018000001F0001FFFF
                   44225: 80003FFFFFFFFFFFFFFF80000000000000000FFFF80000000003FC0007E001C000001F0001FFFF
                   44226: 80FFFFFFFFFFFFFFFFFFFFFC0000000000000FFFF80000000003FC0007E001F000001F0001FFFF
                   44227: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000001FC0007E000F800001F0001FFFF
                   44228: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000001FC0007E000FC00001F0001FFFF
                   44229: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000001FC0007E0007E00003F0001FFFF
                   44230: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000FC0007E0001E00003F0001FFFF
                   44231: FFFFFFFFFFFFFFFFFFFFFFE00000000000003FFFE00000000000FC0007F000000000070001FFFF
                   44232: C003FFFFFFFFFFFFFFE000000000000000003FFFE0003FFFC000FC0007F000000000070001FFFF
                   44233: E000000FFFFFFFFC800000000000000000003FFFE0007FFFC0007C0007F800000000070001FFFF
                   44234: E000000000000000000000000000000000003FFFC0007FFFE0007C0007F800000000070001FFFF
                   44235: E000000000000000000000000000000000003FFFC0007FFFE0007C0007FC00000000070001FFFF
                   44236: E000000000000000000000000000000000003FFFC000FFFFE0007C0007FE00000000070001FFFF
                   44237: F000000000000000000000000000000000007FFF8000FFFFE0003C0007FF00000000070001FFFF
                   44238: F000000000000000000000000000000000007FFF8000FFFFF0003C0007FF80000000070001FFFF
                   44239: F000000000000000000000000000000000007FFF8001FFFFF0003C0007FFE000003C070001FFFF
                   44240: F80000000000000000000000000000000000FFFF0001FFFFF0001C0007FFF80001FF070001FFFF
                   44241: F8000000007FF80000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFF800FFFFFFFFFFFFF
                   44242: FC00007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44243: FC07FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44244: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44245: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44246: FF03FFFFFFFFFFFFFFFC0000000000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44247: FF0000007FFFFFE000000000000000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44248: FF800000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44249: FF800000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44250: FF800000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44251: FFC00000000000000000000000000000001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44252: FFE00000000000000000000000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44253: FFE00000000000000000000000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44254: FFF00000000000000000000000000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44255: FFF0000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44256: FFF8000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44257: FFFC000003FFFE00000000000000000001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44258: FFFE007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44259: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44260: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44261: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44262: FFFFC0000000000000000000000000001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44263: FFFFE0000000000000000000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44264: FFFFF0000000000000000000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44265: FFFFF0000000000000000000000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44266: FFFFF800000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44267: FFFFFC00000000000000000000000001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44268: FFFFFE00000000000000000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44269: FFFFFF00000000000000000000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44270: FFFFFFC000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44271: FFFFFFE000000000000000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44272: FFFFFFF000000000000000000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44273: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44274: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44275: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44276: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44277: FFFFFFFFF00000000000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44278: FFFFFFFFF8000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44279: FFFFFFFFFE000000000000000001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44280: FFFFFFFFFF000000000000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44281: FFFFFFFFFFC0000000000000001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44282: FFFFFFFFFFF0000000000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44283: FFFFFFFFFFFE00000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44284: FFFFFFFFFFFF8000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44285: FFFFFFFFFFFFF000000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44286: FFFFFFFFFFFFFF0000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44287: FFFFFFFFFFFFFFF00000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44288: FFFFFFFFFFFFFFFFE0007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
                   44289: 0707070014230642461006440057030057030000011710150522627502600004100000001173post.src/devopost/charlib/READMEPostscript definitions for special troff characters. File names are
                   44290: the two character troff names. Each defines a PostScript procedure
                   44291: that begins with build_ and ends with the character's name. The
                   44292: build_?? procedure is called with the character width as it's only
                   44293: argument. The .map files contain extra character data (e.g. image
                   44294: data) that dpost downloads immediately after the build_?? call,
                   44295: if the character's font table code field is 2 (rather than 1).
                   44296: 
                   44297: The following PostScript variables are available:
                   44298: 
                   44299:        font            current font
                   44300:        ptsize          current point size
                   44301:        size            actual font size - scaled up from ptsize
                   44302: 
                   44303: Don't overuse this stuff!
                   44304: 
                   44305: 0707070014230642471006440057030057030000011710160522627502600003500000002631post.src/devopost/charlib/Sl/build_Sl {
                   44306: pop
                   44307: gsave
                   44308: size .0022 mul dup scale
                   44309: currentpoint translate
                   44310: 14 93 moveto
                   44311: 14 96 lineto
                   44312: 29 110 lineto
                   44313: 44 121 lineto
                   44314: 54 127 lineto
                   44315: 55 132 lineto
                   44316: 57 146 lineto
                   44317: 59 157 lineto
                   44318: 62 171 lineto
                   44319: 66 186 lineto
                   44320: 70 199 lineto
                   44321: 75 213 lineto
                   44322: 81 228 lineto
                   44323: 88 243 lineto
                   44324: 96 257 lineto
                   44325: 106 272 lineto
                   44326: 118 287 lineto
                   44327: 133 300 lineto
                   44328: 148 307 lineto
                   44329: 163 308 lineto
                   44330: 178 304 lineto
                   44331: 191 293 lineto
                   44332: 197 281 lineto
                   44333: 198 277 lineto
                   44334: 198 260 lineto
                   44335: 194 246 lineto
                   44336: 187 231 lineto
                   44337: 179 217 lineto
                   44338: 168 202 lineto
                   44339: 155 187 lineto
                   44340: 141 172 lineto
                   44341: 126 158 lineto
                   44342: 111 146 lineto
                   44343: 96 136 lineto
                   44344: 94 131 lineto
                   44345: 93 123 lineto
                   44346: 92 112 lineto
                   44347: 91 103 lineto
                   44348: 90 93 lineto
                   44349: 89 81 lineto
                   44350: 89 40 lineto
                   44351: 92 28 lineto
                   44352: 97 18 lineto
                   44353: 108 10 lineto
                   44354: 122 10 lineto
                   44355: 134 18 lineto
                   44356: 145 33 lineto
                   44357: 152 48 lineto
                   44358: 158 62 lineto
                   44359: 168 58 lineto
                   44360: 168 59 lineto
                   44361: 163 45 lineto
                   44362: 157 31 lineto
                   44363: 148 16 lineto
                   44364: 133 3 lineto
                   44365: 118 -1 lineto
                   44366: 103 0 lineto
                   44367: 88 5 lineto
                   44368: 73 18 lineto
                   44369: 64 31 lineto
                   44370: 58 46 lineto
                   44371: 55 59 lineto
                   44372: 53 73 lineto
                   44373: 52 111 lineto
                   44374: 37 101 lineto
                   44375: 22 86 lineto
                   44376: 14 93 lineto
                   44377: 
                   44378: 97 152 moveto
                   44379: 97 153 lineto
                   44380: 99 166 lineto
                   44381: 101 178 lineto
                   44382: 103 190 lineto
                   44383: 106 205 lineto
                   44384: 109 218 lineto
                   44385: 113 232 lineto
                   44386: 118 246 lineto
                   44387: 124 261 lineto
                   44388: 132 275 lineto
                   44389: 144 290 lineto
                   44390: 157 298 lineto
                   44391: 171 298 lineto
                   44392: 181 291 lineto
                   44393: 186 283 lineto
                   44394: 187 279 lineto
                   44395: 187 264 lineto
                   44396: 186 260 lineto
                   44397: 181 246 lineto
                   44398: 174 233 lineto
                   44399: 165 218 lineto
                   44400: 155 204 lineto
                   44401: 142 190 lineto
                   44402: 127 175 lineto
                   44403: 112 162 lineto
                   44404: 97 152 lineto
                   44405: 
                   44406: eofill
                   44407: grestore
                   44408: } def
                   44409: 0707070014230642501006440057030057030000011711140522627502600003500000000264post.src/devopost/charlib/bx/build_bx {
                   44410:     pop
                   44411:     size 2 div /side exch def
                   44412:     currentpoint
                   44413:     newpath
                   44414:     moveto
                   44415:     0 side rlineto
                   44416:     side 0 rlineto
                   44417:     0 side neg rlineto
                   44418:     closepath
                   44419:     fill
                   44420: } def
                   44421: 0707070014230642511006440057030057030000011711150522627502600003500000000221post.src/devopost/charlib/ci/build_ci {
                   44422:     pop
                   44423:     size 3 mul 8 div /rad exch def
                   44424:     currentpoint
                   44425:     newpath
                   44426:     rad add exch rad add exch rad 0 360 arc
                   44427:     stroke
                   44428: } def
                   44429: 0707070014230642521006440057030057030000011711160522627502600003500000000074post.src/devopost/charlib/ff/build_ff {
                   44430:     pop
                   44431:     size .05 mul neg 0 (ff) ashow
                   44432: } def
                   44433: 0707070014230642531006440057030057030000011711170522627502600003500000001716post.src/devopost/charlib/lc%
                   44434: % This stuff has gotten terribly complicated - sorry.
                   44435: %
                   44436: 
                   44437: currentdict /bvbbox known not {/bvbbox [0 0 0 0 0 0 0] def} if
                   44438: 
                   44439: /build_lc {
                   44440:     pop
                   44441:     gsave
                   44442:        currentpoint translate newpath
                   44443:        bvbbox 6 get size ne {
                   44444:            gsave
                   44445:                initgraphics
                   44446:                scaling scaling scale
                   44447:                0 0 moveto
                   44448:                (\357) false charpath flattenpath pathbbox 0 0 size bvbbox astore pop
                   44449:                0 1 idtransform dup mul exch dup mul add sqrt dup
                   44450:                bvbbox 1 get add bvbbox 1 3 -1 roll put
                   44451:                bvbbox 3 get exch sub bvbbox 3 3 -1 roll put
                   44452:                bvbbox 2 get bvbbox 0 get sub bvbbox 4 3 -1 roll put
                   44453:                bvbbox 2 get bvbbox 0 get add 2 div bvbbox 5 3 -1 roll put
                   44454:            grestore
                   44455:        } if
                   44456:        bvbbox 0 get bvbbox 1 get moveto
                   44457:        bvbbox 0 get bvbbox 3 get lineto
                   44458:        bvbbox 5 get bvbbox 4 get 8 mul add dup bvbbox 3 get lineto
                   44459:        bvbbox 1 get lineto closepath clip newpath
                   44460:        0 0 moveto (\357) show
                   44461:        bvbbox 5 get bvbbox 3 get moveto
                   44462:        bvbbox 4 get dup dup
                   44463:        8 mul 0 rlineto
                   44464:        0 exch neg rlineto
                   44465:        8 mul neg 0 rlineto
                   44466:        closepath clip eofill
                   44467:     grestore
                   44468: } def
                   44469: 0707070014230642541006440057030057030000011711300522627502600003500000001712post.src/devopost/charlib/lf%
                   44470: % This stuff has gotten terribly complicated - sorry.
                   44471: %
                   44472: 
                   44473: currentdict /bvbbox known not {/bvbbox [0 0 0 0 0 0 0] def} if
                   44474: 
                   44475: /build_lf {
                   44476:     pop
                   44477:     gsave
                   44478:        currentpoint translate newpath
                   44479:        bvbbox 6 get size ne {
                   44480:            gsave
                   44481:                initgraphics
                   44482:                scaling scaling scale
                   44483:                0 0 moveto
                   44484:                (\357) false charpath flattenpath pathbbox 0 0 size bvbbox astore pop
                   44485:                0 1 idtransform dup mul exch dup mul add sqrt dup
                   44486:                bvbbox 1 get add bvbbox 1 3 -1 roll put
                   44487:                bvbbox 3 get exch sub bvbbox 3 3 -1 roll put
                   44488:                bvbbox 2 get bvbbox 0 get sub bvbbox 4 3 -1 roll put
                   44489:                bvbbox 2 get bvbbox 0 get add 2 div bvbbox 5 3 -1 roll put
                   44490:            grestore
                   44491:        } if
                   44492:        bvbbox 0 get bvbbox 1 get moveto
                   44493:        bvbbox 0 get bvbbox 3 get lineto
                   44494:        bvbbox 5 get bvbbox 4 get 8 mul add dup bvbbox 3 get lineto
                   44495:        bvbbox 1 get lineto closepath clip newpath
                   44496:        0 0 moveto (\357) show
                   44497:        bvbbox 5 get bvbbox 1 get moveto
                   44498:        bvbbox 4 get dup dup
                   44499:        8 mul 0 rlineto
                   44500:        0 exch rlineto
                   44501:        8 mul neg 0 rlineto
                   44502:        closepath clip eofill
                   44503:     grestore
                   44504: } def
                   44505: 0707070014230642551006440057030057030000011711310522627502600003500000004412post.src/devopost/charlib/lh/build_lh {
                   44506: pop
                   44507: gsave
                   44508: size .0022 mul dup scale
                   44509: currentpoint translate
                   44510: 
                   44511: 16 177 moveto
                   44512: 16 188 lineto
                   44513: 21 193 lineto
                   44514: 30 193 lineto
                   44515: 34 189 lineto
                   44516: 36 183 lineto
                   44517: 36 180 lineto
                   44518: 34 174 lineto
                   44519: 27 170 lineto
                   44520: 19 172 lineto
                   44521: 16 177 lineto
                   44522: stroke
                   44523: 
                   44524: 38 194 moveto
                   44525: 38 196 lineto
                   44526: 53 199 lineto
                   44527: 68 201 lineto
                   44528: 83 202 lineto
                   44529: 98 203 lineto
                   44530: 113 204 lineto
                   44531: 128 204 lineto
                   44532: 143 205 lineto
                   44533: 158 205 lineto
                   44534: 173 205 lineto
                   44535: 188 204 lineto
                   44536: 203 203 lineto
                   44537: 218 202 lineto
                   44538: 233 200 lineto
                   44539: 248 198 lineto
                   44540: 263 196 lineto
                   44541: 278 194 lineto
                   44542: 293 190 lineto
                   44543: 308 186 lineto
                   44544: 323 181 lineto
                   44545: 338 176 lineto
                   44546: 353 168 lineto
                   44547: 361 162 lineto
                   44548: 364 153 lineto
                   44549: 366 138 lineto
                   44550: 367 126 lineto
                   44551: 368 106 lineto
                   44552: 369 80 lineto
                   44553: 369 74 lineto
                   44554: 368 60 lineto
                   44555: 367 54 lineto
                   44556: 362 43 lineto
                   44557: 348 34 lineto
                   44558: 333 28 lineto
                   44559: 318 25 lineto
                   44560: 303 26 lineto
                   44561: 288 29 lineto
                   44562: 273 31 lineto
                   44563: 258 32 lineto
                   44564: 243 32 lineto
                   44565: 228 30 lineto
                   44566: 213 27 lineto
                   44567: 198 24 lineto
                   44568: 183 23 lineto
                   44569: 168 23 lineto
                   44570: 153 27 lineto
                   44571: 148 34 lineto
                   44572: 148 47 lineto
                   44573: 153 54 lineto
                   44574: 168 58 lineto
                   44575: 183 58 lineto
                   44576: 198 58 lineto
                   44577: 213 59 lineto
                   44578: 226 60 lineto
                   44579: 228 62 lineto
                   44580: 228 67 lineto
                   44581: 223 71 lineto
                   44582: 208 71 lineto
                   44583: 193 70 lineto
                   44584: 178 70 lineto
                   44585: 163 70 lineto
                   44586: 148 70 lineto
                   44587: 133 71 lineto
                   44588: 123 76 lineto
                   44589: 120 84 lineto
                   44590: 120 91 lineto
                   44591: 122 98 lineto
                   44592: 129 104 lineto
                   44593: 144 106 lineto
                   44594: 159 107 lineto
                   44595: 174 107 lineto
                   44596: 189 107 lineto
                   44597: 202 108 lineto
                   44598: 204 110 lineto
                   44599: 204 117 lineto
                   44600: 201 119 lineto
                   44601: 186 119 lineto
                   44602: 171 119 lineto
                   44603: 156 119 lineto
                   44604: 141 119 lineto
                   44605: 126 119 lineto
                   44606: 111 121 lineto
                   44607: 103 128 lineto
                   44608: 101 137 lineto
                   44609: 101 142 lineto
                   44610: 103 150 lineto
                   44611: 111 158 lineto
                   44612: 126 161 lineto
                   44613: 141 161 lineto
                   44614: 156 162 lineto
                   44615: 171 163 lineto
                   44616: 186 163 lineto
                   44617: 191 165 lineto
                   44618: 192 167 lineto
                   44619: 192 171 lineto
                   44620: 190 174 lineto
                   44621: 176 175 lineto
                   44622: 161 175 lineto
                   44623: 146 175 lineto
                   44624: 131 174 lineto
                   44625: 116 174 lineto
                   44626: 101 174 lineto
                   44627: 86 173 lineto
                   44628: 71 172 lineto
                   44629: 56 171 lineto
                   44630: 41 171 lineto
                   44631: 41 174 lineto
                   44632: 43 178 lineto
                   44633: 43 187 lineto
                   44634: 38 194 lineto
                   44635: stroke
                   44636: 
                   44637: 373 169 moveto
                   44638: 373 176 lineto
                   44639: 375 182 lineto
                   44640: 386 190 lineto
                   44641: 401 193 lineto
                   44642: 408 191 lineto
                   44643: 411 185 lineto
                   44644: 412 181 lineto
                   44645: 414 167 lineto
                   44646: 415 158 lineto
                   44647: 416 144 lineto
                   44648: 417 128 lineto
                   44649: 418 110 lineto
                   44650: 418 60 lineto
                   44651: 417 45 lineto
                   44652: 415 37 lineto
                   44653: 409 34 lineto
                   44654: 394 31 lineto
                   44655: 381 35 lineto
                   44656: 379 42 lineto
                   44657: 379 52 lineto
                   44658: 380 67 lineto
                   44659: 380 77 lineto
                   44660: 379 77 lineto
                   44661: 378 106 lineto
                   44662: 377 121 lineto
                   44663: 376 133 lineto
                   44664: 375 147 lineto
                   44665: 374 158 lineto
                   44666: 373 169 lineto
                   44667: 
                   44668: stroke
                   44669: grestore
                   44670: } def
                   44671: 0707070014230642561006440057030057030000011711340522627502600003500000000222post.src/devopost/charlib/ob/build_ob {
                   44672:     pop
                   44673:     size 3 mul 16 div /rad exch def
                   44674:     currentpoint
                   44675:     newpath
                   44676:     rad add exch rad add exch rad 0 360 arc
                   44677:     stroke
                   44678: } def
                   44679: 0707070014230642571006440057030057030000011711350522627502700003500000001716post.src/devopost/charlib/rc%
                   44680: % This stuff has gotten terribly complicated - sorry.
                   44681: %
                   44682: 
                   44683: currentdict /bvbbox known not {/bvbbox [0 0 0 0 0 0 0] def} if
                   44684: 
                   44685: /build_rc {
                   44686:     pop
                   44687:     gsave
                   44688:        currentpoint translate newpath
                   44689:        bvbbox 6 get size ne {
                   44690:            gsave
                   44691:                initgraphics
                   44692:                scaling scaling scale
                   44693:                0 0 moveto
                   44694:                (\357) false charpath flattenpath pathbbox 0 0 size bvbbox astore pop
                   44695:                0 1 idtransform dup mul exch dup mul add sqrt dup
                   44696:                bvbbox 1 get add bvbbox 1 3 -1 roll put
                   44697:                bvbbox 3 get exch sub bvbbox 3 3 -1 roll put
                   44698:                bvbbox 2 get bvbbox 0 get sub bvbbox 4 3 -1 roll put
                   44699:                bvbbox 2 get bvbbox 0 get add 2 div bvbbox 5 3 -1 roll put
                   44700:            grestore
                   44701:        } if
                   44702:        bvbbox 2 get bvbbox 1 get moveto
                   44703:        bvbbox 2 get bvbbox 3 get lineto
                   44704:        bvbbox 5 get bvbbox 4 get 8 mul sub dup bvbbox 3 get lineto
                   44705:        bvbbox 1 get lineto closepath clip newpath
                   44706:        0 0 moveto (\357) show
                   44707:        bvbbox 5 get bvbbox 3 get moveto
                   44708:        bvbbox 4 get dup dup
                   44709:        8 mul neg 0 rlineto
                   44710:        0 exch neg rlineto
                   44711:        8 mul 0 rlineto
                   44712:        closepath clip eofill
                   44713:     grestore
                   44714: } def
                   44715: 0707070014230642601006440057030057030000011711360522627502700003500000001712post.src/devopost/charlib/rf%
                   44716: % This stuff has gotten terribly complicated - sorry.
                   44717: %
                   44718: 
                   44719: currentdict /bvbbox known not {/bvbbox [0 0 0 0 0 0 0] def} if
                   44720: 
                   44721: /build_rf {
                   44722:     pop
                   44723:     gsave
                   44724:        currentpoint translate newpath
                   44725:        bvbbox 6 get size ne {
                   44726:            gsave
                   44727:                initgraphics
                   44728:                scaling scaling scale
                   44729:                0 0 moveto
                   44730:                (\357) false charpath flattenpath pathbbox 0 0 size bvbbox astore pop
                   44731:                0 1 idtransform dup mul exch dup mul add sqrt dup
                   44732:                bvbbox 1 get add bvbbox 1 3 -1 roll put
                   44733:                bvbbox 3 get exch sub bvbbox 3 3 -1 roll put
                   44734:                bvbbox 2 get bvbbox 0 get sub bvbbox 4 3 -1 roll put
                   44735:                bvbbox 2 get bvbbox 0 get add 2 div bvbbox 5 3 -1 roll put
                   44736:            grestore
                   44737:        } if
                   44738:        bvbbox 2 get bvbbox 1 get moveto
                   44739:        bvbbox 2 get bvbbox 3 get lineto
                   44740:        bvbbox 5 get bvbbox 4 get 8 mul sub dup bvbbox 3 get lineto
                   44741:        bvbbox 1 get lineto closepath clip newpath
                   44742:        0 0 moveto (\357) show
                   44743:        bvbbox 5 get bvbbox 1 get moveto
                   44744:        bvbbox 4 get dup dup
                   44745:        8 mul neg 0 rlineto
                   44746:        0 exch rlineto
                   44747:        8 mul 0 rlineto
                   44748:        closepath clip eofill
                   44749:     grestore
                   44750: } def
                   44751: 0707070014230642611006440057030057030000011711500522627502700003500000004171post.src/devopost/charlib/rh/build_rh {
                   44752: pop
                   44753: gsave
                   44754: size .0022 mul dup scale
                   44755: currentpoint translate
                   44756: 
                   44757: 15 66 moveto
                   44758: 15 86 lineto
                   44759: 16 131 lineto
                   44760: 17 146 lineto
                   44761: 18 158 lineto
                   44762: 19 167 lineto
                   44763: 21 181 lineto
                   44764: 24 190 lineto
                   44765: 34 193 lineto
                   44766: 49 189 lineto
                   44767: 58 182 lineto
                   44768: 60 177 lineto
                   44769: 60 166 lineto
                   44770: 59 156 lineto
                   44771: 58 143 lineto
                   44772: 57 130 lineto
                   44773: 56 117 lineto
                   44774: 55 102 lineto
                   44775: 54 42 lineto
                   44776: 53 39 lineto
                   44777: 49 35 lineto
                   44778: 34 34 lineto
                   44779: 19 39 lineto
                   44780: 16 47 lineto
                   44781: 15 66 lineto
                   44782: stroke
                   44783: 
                   44784: 65 60 moveto
                   44785: 65 111 lineto
                   44786: 66 127 lineto
                   44787: 67 139 lineto
                   44788: 69 153 lineto
                   44789: 72 163 lineto
                   44790: 83 171 lineto
                   44791: 98 177 lineto
                   44792: 113 182 lineto
                   44793: 128 187 lineto
                   44794: 143 190 lineto
                   44795: 158 194 lineto
                   44796: 173 196 lineto
                   44797: 188 199 lineto
                   44798: 203 201 lineto
                   44799: 218 203 lineto
                   44800: 233 205 lineto
                   44801: 248 205 lineto
                   44802: 263 206 lineto
                   44803: 278 206 lineto
                   44804: 293 206 lineto
                   44805: 308 206 lineto
                   44806: 323 206 lineto
                   44807: 338 205 lineto
                   44808: 353 203 lineto
                   44809: 368 202 lineto
                   44810: 383 200 lineto
                   44811: 394 197 lineto
                   44812: 389 190 lineto
                   44813: 389 180 lineto
                   44814: 391 176 lineto
                   44815: 391 173 lineto
                   44816: 380 173 lineto
                   44817: 365 173 lineto
                   44818: 350 174 lineto
                   44819: 335 175 lineto
                   44820: 320 176 lineto
                   44821: 305 176 lineto
                   44822: 290 176 lineto
                   44823: 275 177 lineto
                   44824: 260 177 lineto
                   44825: 245 177 lineto
                   44826: 240 173 lineto
                   44827: 240 170 lineto
                   44828: 245 165 lineto
                   44829: 260 164 lineto
                   44830: 275 164 lineto
                   44831: 290 164 lineto
                   44832: 305 163 lineto
                   44833: 320 160 lineto
                   44834: 327 155 lineto
                   44835: 330 149 lineto
                   44836: 330 134 lineto
                   44837: 328 129 lineto
                   44838: 323 124 lineto
                   44839: 309 121 lineto
                   44840: 294 121 lineto
                   44841: 279 121 lineto
                   44842: 264 121 lineto
                   44843: 249 121 lineto
                   44844: 234 121 lineto
                   44845: 228 118 lineto
                   44846: 228 112 lineto
                   44847: 234 109 lineto
                   44848: 249 109 lineto
                   44849: 264 109 lineto
                   44850: 279 108 lineto
                   44851: 294 108 lineto
                   44852: 306 104 lineto
                   44853: 311 97 lineto
                   44854: 312 91 lineto
                   44855: 312 88 lineto
                   44856: 311 82 lineto
                   44857: 305 74 lineto
                   44858: 290 72 lineto
                   44859: 275 72 lineto
                   44860: 260 72 lineto
                   44861: 245 73 lineto
                   44862: 230 73 lineto
                   44863: 215 73 lineto
                   44864: 205 70 lineto
                   44865: 205 63 lineto
                   44866: 217 60 lineto
                   44867: 232 60 lineto
                   44868: 247 60 lineto
                   44869: 262 60 lineto
                   44870: 277 57 lineto
                   44871: 283 52 lineto
                   44872: 285 44 lineto
                   44873: 285 41 lineto
                   44874: 284 35 lineto
                   44875: 280 30 lineto
                   44876: 268 26 lineto
                   44877: 253 25 lineto
                   44878: 238 26 lineto
                   44879: 223 28 lineto
                   44880: 208 31 lineto
                   44881: 193 33 lineto
                   44882: 178 34 lineto
                   44883: 163 33 lineto
                   44884: 148 31 lineto
                   44885: 133 28 lineto
                   44886: 118 27 lineto
                   44887: 103 28 lineto
                   44888: 88 34 lineto
                   44889: 73 43 lineto
                   44890: 67 52 lineto
                   44891: 65 60 lineto
                   44892: stroke
                   44893: 
                   44894: 396 180 moveto
                   44895: 396 188 lineto
                   44896: 399 194 lineto
                   44897: 410 196 lineto
                   44898: 416 190 lineto
                   44899: 416 180 lineto
                   44900: 415 177 lineto
                   44901: 411 173 lineto
                   44902: 400 173 lineto
                   44903: 396 180 lineto
                   44904: stroke
                   44905: 
                   44906: grestore
                   44907: } def
                   44908: 0707070014230642621006440057030057030000011711370522627502700003500000000320post.src/devopost/charlib/sq/build_sq {
                   44909:     pop
                   44910:     size 2 div /side exch def
                   44911:     currentpoint
                   44912:     newpath
                   44913:     moveto
                   44914:     0 side rlineto
                   44915:     side 0 rlineto
                   44916:     0 side neg rlineto
                   44917:     closepath
                   44918:     font B eq {fill} {stroke} ifelse
                   44919: } def
                   44920: 0707070014230642631006440057030057030000011711530522627502700003500000000130post.src/devopost/charlib/~=/build_~= {
                   44921:     pop
                   44922:     (\176) stringwidth pop neg size -.15 mul (\176\055) ashow
                   44923: } def
                   44924: 0707070014230362361006440057030057030000011044500522627502700003600000003013post.src/devopost/devopost.mkMAKE=/bin/make
                   44925: MAKEFILE=devopost.mk
                   44926: 
                   44927: SYSTEM=SYSV
                   44928: VERSION=3.3
                   44929: 
                   44930: GROUP=bin
                   44931: OWNER=bin
                   44932: 
                   44933: FONTDIR=/usr/lib/font
                   44934: FONTFILES=DESC ? ?? [A-Z]??*
                   44935: 
                   44936: all :
                   44937: 
                   44938: install : all
                   44939:        @rm -fr $(FONTDIR)/devopost/*.out
                   44940:        @if [ ! -d $(FONTDIR) ]; then \
                   44941:            mkdir $(FONTDIR); \
                   44942:            chmod 755 $(FONTDIR); \
                   44943:            chgrp $(GROUP) $(FONTDIR); \
                   44944:            chown $(OWNER) $(FONTDIR); \
                   44945:        fi
                   44946:        @if [ ! -d $(FONTDIR)/devopost ]; then \
                   44947:            mkdir $(FONTDIR)/devopost; \
                   44948:            chmod 755 $(FONTDIR)/devopost; \
                   44949:            chgrp $(GROUP) $(FONTDIR)/devopost; \
                   44950:            chown $(OWNER) $(FONTDIR)/devopost; \
                   44951:        fi
                   44952:        @if [ ! -d $(FONTDIR)/devopost/charlib ]; then \
                   44953:            mkdir $(FONTDIR)/devopost/charlib; \
                   44954:            chmod 755 $(FONTDIR)/devopost/charlib; \
                   44955:            chgrp $(GROUP) $(FONTDIR)/devopost/charlib; \
                   44956:            chown $(OWNER) $(FONTDIR)/devopost/charlib; \
                   44957:        fi
                   44958:        cp $(FONTFILES) $(FONTDIR)/devopost
                   44959:        @for i in $(FONTFILES); do \
                   44960:            chmod 644 $(FONTDIR)/devopost/$$i; \
                   44961:            chgrp $(GROUP) $(FONTDIR)/devopost/$$i; \
                   44962:            chown $(OWNER) $(FONTDIR)/devopost/$$i; \
                   44963:        done
                   44964:        cp charlib/* $(FONTDIR)/devopost/charlib
                   44965:        @for i in charlib/*; do \
                   44966:            chmod 644 $(FONTDIR)/devopost/$$i; \
                   44967:            chgrp $(GROUP) $(FONTDIR)/devopost/$$i; \
                   44968:            chown $(OWNER) $(FONTDIR)/devopost/$$i; \
                   44969:        done
                   44970: 
                   44971: clean :
                   44972: 
                   44973: clobber : clean
                   44974: 
                   44975: changes :
                   44976:        @trap "" 1 2 3 15; \
                   44977:        sed \
                   44978:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
                   44979:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
                   44980:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
                   44981:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
                   44982:            -e "s'^FONTDIR=.*'FONTDIR=$(FONTDIR)'" \
                   44983:        $(MAKEFILE) >XXX.mk; \
                   44984:        mv XXX.mk $(MAKEFILE)
                   44985: 
                   44986: 0707070014231030720407550057030057030000020303470522627503100002500000000000post.src/devpost.add0707070014231030731006440057030057030000010304460522627502700003000000003356post.src/devpost.add/C1name C1
                   44987: fontname CenturyOldStyle-Regular
                   44988: ligatures fi fl 0
                   44989: spacewidth 25
                   44990: charset
                   44991: !      26      2       33
                   44992: "      40      2       34
                   44993: dq     "
                   44994: #      50      2       35
                   44995: $      50      3       36
                   44996: %      58      2       37
                   44997: &      79      2       38
                   44998: '      21      2       39
                   44999: (      40      3       40
                   45000: )      40      3       41
                   45001: *      50      2       42
                   45002: +      50      0       43
                   45003: ,      25      1       44
                   45004: hy     24      0       45
                   45005: -      "
                   45006: .      25      0       46
                   45007: /      53      3       47
                   45008: 0      50      2       48
                   45009: 1      50      2       49
                   45010: 2      50      2       50
                   45011: 3      50      2       51
                   45012: 4      50      2       52
                   45013: 5      50      2       53
                   45014: 6      50      2       54
                   45015: 7      50      2       55
                   45016: 8      50      2       56
                   45017: 9      50      2       57
                   45018: :      25      0       58
                   45019: ;      25      1       59
                   45020: ---    50      0       60
                   45021: =      50      0       61
                   45022: ---    50      0       62
                   45023: ?      40      2       63
                   45024: @      85      2       64
                   45025: A      66      2       65
                   45026: B      69      2       66
                   45027: C      69      2       67
                   45028: D      76      2       68
                   45029: E      66      2       69
                   45030: F      61      2       70
                   45031: G      74      2       71
                   45032: H      76      2       72
                   45033: I      34      2       73
                   45034: J      40      3       74
                   45035: K      71      2       75
                   45036: L      58      2       76
                   45037: M      95      2       77
                   45038: N      76      2       78
                   45039: O      76      2       79
                   45040: P      61      2       80
                   45041: Q      76      3       81
                   45042: R      63      2       82
                   45043: S      55      2       83
                   45044: T      63      2       84
                   45045: U      74      2       85
                   45046: V      66      2       86
                   45047: W      95      2       87
                   45048: X      63      2       88
                   45049: Y      63      2       89
                   45050: Z      58      2       90
                   45051: [      40      3       91
                   45052: \      25      2       92
                   45053: bs     "
                   45054: ]      40      3       93
                   45055: ---    50      2       94
                   45056: ---    50      1       95
                   45057: `      21      2       96
                   45058: a      47      0       97
                   45059: b      55      2       98
                   45060: c      47      0       99
                   45061: d      55      2       100
                   45062: e      50      0       101
                   45063: f      29      2       102
                   45064: g      55      1       103
                   45065: h      58      2       104
                   45066: i      26      2       105
                   45067: j      24      3       106
                   45068: k      55      2       107
                   45069: l      26      2       108
                   45070: m      84      0       109
                   45071: n      55      0       110
                   45072: o      53      0       111
                   45073: p      53      1       112
                   45074: q      55      1       113
                   45075: r      40      0       114
                   45076: s      45      0       115
                   45077: t      31      2       116
                   45078: u      55      0       117
                   45079: v      47      0       118
                   45080: w      71      0       119
                   45081: x      53      0       120
                   45082: y      50      1       121
                   45083: z      45      0       122
                   45084: {      40      3       123
                   45085: ---    25      2       124
                   45086: }      40      3       125
                   45087: ---    50      0       126
                   45088: ---    26      1       161
                   45089: ct     50      2       162
                   45090: ps     50      2       163
                   45091: fr     9       2       164
                   45092: yn     50      2       165
                   45093: fn     50      3       166
                   45094: sc     50      3       167
                   45095: cr     50      2       168
                   45096: ---    21      2       169
                   45097: ``     40      2       170
                   45098: ---    47      0       171
                   45099: ---    29      0       172
                   45100: ---    29      0       173
                   45101: fi     58      2       174
                   45102: fl     55      2       175
                   45103: en     50      0       177
                   45104: \-     "
                   45105: dg     50      3       178
                   45106: dd     50      3       179
                   45107: ---    25      0       180
                   45108: pg     66      3       182
                   45109: ---    66      0       183
                   45110: ---    21      1       184
                   45111: ---    40      1       185
                   45112: ''     40      2       186
                   45113: ---    47      0       187
                   45114: ---    100     0       188
                   45115: ---    92      2       189
                   45116: ---    40      1       191
                   45117: ga     29      2       193
                   45118: \`     "
                   45119: aa     29      2       194
                   45120: \'     "
                   45121: ^a     37      2       195
                   45122: ^      "
                   45123: ~a     50      2       196
                   45124: ~      "
                   45125: -a     47      2       197
                   45126: Ua     50      2       198
                   45127: .a     26      2       199
                   45128: :a     47      2       200
                   45129: oa     34      2       202
                   45130: ,a     34      1       203
                   45131: "a     40      2       205
                   45132: Ca     37      1       206
                   45133: va     37      2       207
                   45134: em     100     0       208
                   45135: ---    103     2       225
                   45136: ---    34      2       227
                   45137: ---    58      2       232
                   45138: ---    76      2       233
                   45139: ---    108     2       234
                   45140: ---    34      2       235
                   45141: ---    76      0       241
                   45142: ---    26      0       245
                   45143: ---    26      2       248
                   45144: ---    53      0       249
                   45145: ---    84      0       250
                   45146: ---    58      2       251
                   45147: 0707070014231030741006440057030057030000010304600522627502700003000000003355post.src/devpost.add/C2name C2
                   45148: fontname CenturyOldStyle-Italic
                   45149: ligatures fi fl 0
                   45150: spacewidth 27
                   45151: charset
                   45152: !      31      2       33
                   45153: "      35      2       34
                   45154: dq     "
                   45155: #      54      0       35
                   45156: $      54      3       36
                   45157: %      70      2       37
                   45158: &      75      2       38
                   45159: '      21      2       39
                   45160: (      46      3       40
                   45161: )      46      3       41
                   45162: *      59      2       42
                   45163: +      54      0       43
                   45164: ,      27      1       44
                   45165: hy     25      0       45
                   45166: -      "
                   45167: .      27      0       46
                   45168: /      46      3       47
                   45169: 0      54      2       48
                   45170: 1      54      0       49
                   45171: 2      54      2       50
                   45172: 3      54      2       51
                   45173: 4      54      0       52
                   45174: 5      54      0       53
                   45175: 6      54      2       54
                   45176: 7      54      0       55
                   45177: 8      54      2       56
                   45178: 9      54      2       57
                   45179: :      27      0       58
                   45180: ;      27      1       59
                   45181: ---    54      0       60
                   45182: =      54      0       61
                   45183: ---    54      0       62
                   45184: ?      48      2       63
                   45185: @      78      2       64
                   45186: A      67      2       65
                   45187: B      68      2       66
                   45188: C      65      2       67
                   45189: D      75      2       68
                   45190: E      66      2       69
                   45191: F      61      2       70
                   45192: G      72      2       71
                   45193: H      77      2       72
                   45194: I      36      2       73
                   45195: J      34      3       74
                   45196: K      68      2       75
                   45197: L      58      2       76
                   45198: M      90      2       77
                   45199: N      74      2       78
                   45200: O      74      2       79
                   45201: P      59      2       80
                   45202: Q      75      3       81
                   45203: R      65      2       82
                   45204: S      57      2       83
                   45205: T      63      2       84
                   45206: U      72      2       85
                   45207: V      62      2       86
                   45208: W      88      2       87
                   45209: X      64      2       88
                   45210: Y      61      2       89
                   45211: Z      57      2       90
                   45212: [      46      3       91
                   45213: \      27      2       92
                   45214: bs     "
                   45215: ]      46      3       93
                   45216: ---    54      2       94
                   45217: ---    50      1       95
                   45218: `      21      2       96
                   45219: a      54      0       97
                   45220: b      46      2       98
                   45221: c      41      0       99
                   45222: d      50      2       100
                   45223: e      42      0       101
                   45224: f      25      3       102
                   45225: g      45      1       103
                   45226: h      52      2       104
                   45227: i      31      2       105
                   45228: j      27      3       106
                   45229: k      48      2       107
                   45230: l      27      2       108
                   45231: m      82      0       109
                   45232: n      56      0       110
                   45233: o      47      0       111
                   45234: p      50      1       112
                   45235: q      49      1       113
                   45236: r      40      0       114
                   45237: s      35      0       115
                   45238: t      30      0       116
                   45239: u      56      0       117
                   45240: v      47      0       118
                   45241: w      69      0       119
                   45242: x      41      0       120
                   45243: y      40      1       121
                   45244: z      39      0       122
                   45245: {      46      3       123
                   45246: ---    27      2       124
                   45247: }      46      3       125
                   45248: ---    54      0       126
                   45249: ---    31      1       161
                   45250: ct     54      0       162
                   45251: ps     54      2       163
                   45252: fr     5       2       164
                   45253: yn     54      0       165
                   45254: fn     54      3       166
                   45255: sc     59      3       167
                   45256: cr     54      0       168
                   45257: ---    19      2       169
                   45258: ``     37      2       170
                   45259: ---    45      0       171
                   45260: ---    29      0       172
                   45261: ---    29      0       173
                   45262: fi     52      3       174
                   45263: fl     52      3       175
                   45264: en     50      0       177
                   45265: \-     "
                   45266: dg     59      3       178
                   45267: dd     59      3       179
                   45268: ---    27      0       180
                   45269: pg     61      3       182
                   45270: ---    61      0       183
                   45271: ---    21      1       184
                   45272: ---    37      1       185
                   45273: ''     37      2       186
                   45274: ---    45      0       187
                   45275: ---    100     0       188
                   45276: ---    103     2       189
                   45277: ---    48      1       191
                   45278: ga     39      2       193
                   45279: \`     "
                   45280: aa     31      2       194
                   45281: \'     "
                   45282: ^a     40      2       195
                   45283: ^      "
                   45284: ~a     51      2       196
                   45285: ~      "
                   45286: -a     47      0       197
                   45287: Ua     51      2       198
                   45288: .a     26      2       199
                   45289: :a     46      2       200
                   45290: oa     32      2       202
                   45291: ,a     35      1       203
                   45292: "a     39      2       205
                   45293: Ca     34      1       206
                   45294: va     40      2       207
                   45295: em     100     0       208
                   45296: ---    94      2       225
                   45297: ---    32      2       227
                   45298: ---    58      2       232
                   45299: ---    74      2       233
                   45300: ---    107     2       234
                   45301: ---    32      2       235
                   45302: ---    69      0       241
                   45303: ---    31      0       245
                   45304: ---    27      2       248
                   45305: ---    47      0       249
                   45306: ---    71      0       250
                   45307: ---    53      2       251
                   45308: 0707070014231030751006440057030057030000010304620522627502700003000000003355post.src/devpost.add/C3name C3
                   45309: fontname CenturyOldStyle-Bold
                   45310: ligatures fi fl 0
                   45311: spacewidth 33
                   45312: charset
                   45313: !      34      2       33
                   45314: "      40      2       34
                   45315: dq     "
                   45316: #      56      2       35
                   45317: $      66      3       36
                   45318: %      79      2       37
                   45319: &      84      2       38
                   45320: '      28      2       39
                   45321: (      39      3       40
                   45322: )      39      3       41
                   45323: *      56      2       42
                   45324: +      56      0       43
                   45325: ,      33      1       44
                   45326: hy     32      0       45
                   45327: -      "
                   45328: .      33      0       46
                   45329: /      51      3       47
                   45330: 0      66      2       48
                   45331: 1      66      2       49
                   45332: 2      66      2       50
                   45333: 3      66      2       51
                   45334: 4      66      2       52
                   45335: 5      66      2       53
                   45336: 6      66      2       54
                   45337: 7      66      2       55
                   45338: 8      66      2       56
                   45339: 9      66      2       57
                   45340: :      33      0       58
                   45341: ;      33      1       59
                   45342: ---    56      0       60
                   45343: =      56      0       61
                   45344: ---    56      0       62
                   45345: ?      47      2       63
                   45346: @      72      2       64
                   45347: A      69      2       65
                   45348: B      76      2       66
                   45349: C      70      2       67
                   45350: D      80      2       68
                   45351: E      71      2       69
                   45352: F      64      2       70
                   45353: G      78      2       71
                   45354: H      83      2       72
                   45355: I      41      2       73
                   45356: J      48      2       74
                   45357: K      76      2       75
                   45358: L      63      2       76
                   45359: M      94      2       77
                   45360: N      80      2       78
                   45361: O      81      2       79
                   45362: P      72      2       80
                   45363: Q      81      3       81
                   45364: R      72      2       82
                   45365: S      61      2       83
                   45366: T      60      2       84
                   45367: U      78      2       85
                   45368: V      64      2       86
                   45369: W      97      2       87
                   45370: X      68      2       88
                   45371: Y      67      2       89
                   45372: Z      59      2       90
                   45373: [      39      3       91
                   45374: \      28      2       92
                   45375: bs     "
                   45376: ]      39      3       93
                   45377: ---    56      2       94
                   45378: ---    50      1       95
                   45379: `      28      2       96
                   45380: a      53      0       97
                   45381: b      60      2       98
                   45382: c      52      0       99
                   45383: d      62      2       100
                   45384: e      54      0       101
                   45385: f      30      2       102
                   45386: g      52      3       103
                   45387: h      62      2       104
                   45388: i      31      2       105
                   45389: j      27      3       106
                   45390: k      60      2       107
                   45391: l      30      2       108
                   45392: m      92      0       109
                   45393: n      62      0       110
                   45394: o      57      0       111
                   45395: p      61      1       112
                   45396: q      60      1       113
                   45397: r      44      0       114
                   45398: s      50      0       115
                   45399: t      33      2       116
                   45400: u      63      0       117
                   45401: v      50      0       118
                   45402: w      74      0       119
                   45403: x      53      0       120
                   45404: y      49      1       121
                   45405: z      44      0       122
                   45406: {      39      3       123
                   45407: ---    28      2       124
                   45408: }      39      3       125
                   45409: ---    56      0       126
                   45410: ---    34      1       161
                   45411: ct     66      2       162
                   45412: ps     66      2       163
                   45413: fr     10      2       164
                   45414: yn     66      2       165
                   45415: fn     66      3       166
                   45416: sc     56      3       167
                   45417: cr     66      2       168
                   45418: ---    22      2       169
                   45419: ``     52      2       170
                   45420: ---    58      0       171
                   45421: ---    37      0       172
                   45422: ---    37      0       173
                   45423: fi     62      2       174
                   45424: fl     61      2       175
                   45425: en     50      0       177
                   45426: \-     "
                   45427: dg     56      3       178
                   45428: dd     56      3       179
                   45429: ---    33      0       180
                   45430: pg     62      3       182
                   45431: ---    62      0       183
                   45432: ---    28      1       184
                   45433: ---    52      1       185
                   45434: ''     52      2       186
                   45435: ---    58      0       187
                   45436: ---    100     0       188
                   45437: ---    118     2       189
                   45438: ---    47      1       191
                   45439: ga     34      2       193
                   45440: \`     "
                   45441: aa     34      2       194
                   45442: \'     "
                   45443: ^a     45      2       195
                   45444: ^      "
                   45445: ~a     56      2       196
                   45446: ~      "
                   45447: -a     53      2       197
                   45448: Ua     56      2       198
                   45449: .a     29      2       199
                   45450: :a     51      2       200
                   45451: oa     34      2       202
                   45452: ,a     37      1       203
                   45453: "a     50      2       205
                   45454: Ca     38      1       206
                   45455: va     45      2       207
                   45456: em     100     0       208
                   45457: ---    109     2       225
                   45458: ---    40      2       227
                   45459: ---    63      2       232
                   45460: ---    81      2       233
                   45461: ---    114     2       234
                   45462: ---    40      2       235
                   45463: ---    83      0       241
                   45464: ---    31      0       245
                   45465: ---    30      2       248
                   45466: ---    57      0       249
                   45467: ---    90      0       250
                   45468: ---    58      2       251
                   45469: 0707070014231030761006440057030057030000010304640522627502700003000000003353post.src/devpost.add/F1name F1
                   45470: fontname FranklinGothic-Book
                   45471: ligatures fi fl 0
                   45472: spacewidth 30
                   45473: charset
                   45474: !      30      2       33
                   45475: "      46      2       34
                   45476: dq     "
                   45477: #      60      2       35
                   45478: $      60      2       36
                   45479: %      70      2       37
                   45480: &      68      2       38
                   45481: '      30      2       39
                   45482: (      30      3       40
                   45483: )      30      3       41
                   45484: *      60      2       42
                   45485: +      60      0       43
                   45486: ,      30      1       44
                   45487: hy     22      0       45
                   45488: -      "
                   45489: .      30      0       46
                   45490: /      52      3       47
                   45491: 0      60      2       48
                   45492: 1      60      2       49
                   45493: 2      60      2       50
                   45494: 3      60      2       51
                   45495: 4      60      2       52
                   45496: 5      60      2       53
                   45497: 6      60      2       54
                   45498: 7      60      2       55
                   45499: 8      60      2       56
                   45500: 9      60      2       57
                   45501: :      30      0       58
                   45502: ;      30      1       59
                   45503: ---    60      0       60
                   45504: =      60      0       61
                   45505: ---    60      0       62
                   45506: ?      54      2       63
                   45507: @      80      2       64
                   45508: A      56      2       65
                   45509: B      62      2       66
                   45510: C      62      2       67
                   45511: D      66      2       68
                   45512: E      56      2       69
                   45513: F      48      2       70
                   45514: G      66      2       71
                   45515: H      66      2       72
                   45516: I      26      2       73
                   45517: J      40      2       74
                   45518: K      62      2       75
                   45519: L      50      2       76
                   45520: M      82      2       77
                   45521: N      66      2       78
                   45522: O      66      2       79
                   45523: P      56      2       80
                   45524: Q      66      3       81
                   45525: R      62      2       82
                   45526: S      62      2       83
                   45527: T      50      2       84
                   45528: U      64      2       85
                   45529: V      56      2       86
                   45530: W      82      2       87
                   45531: X      54      2       88
                   45532: Y      56      2       89
                   45533: Z      54      2       90
                   45534: [      30      3       91
                   45535: \      52      2       92
                   45536: bs     "
                   45537: ]      30      3       93
                   45538: ---    60      2       94
                   45539: ---    50      1       95
                   45540: `      30      2       96
                   45541: a      54      0       97
                   45542: b      54      2       98
                   45543: c      48      0       99
                   45544: d      54      2       100
                   45545: e      54      0       101
                   45546: f      30      2       102
                   45547: g      50      1       103
                   45548: h      54      2       104
                   45549: i      24      2       105
                   45550: j      22      3       106
                   45551: k      50      2       107
                   45552: l      24      2       108
                   45553: m      82      0       109
                   45554: n      54      0       110
                   45555: o      54      0       111
                   45556: p      54      1       112
                   45557: q      54      1       113
                   45558: r      32      0       114
                   45559: s      52      0       115
                   45560: t      32      2       116
                   45561: u      54      0       117
                   45562: v      44      0       118
                   45563: w      66      0       119
                   45564: x      44      0       120
                   45565: y      42      1       121
                   45566: z      42      0       122
                   45567: {      30      3       123
                   45568: ---    26      2       124
                   45569: }      30      3       125
                   45570: ---    60      0       126
                   45571: ---    30      1       161
                   45572: ct     60      2       162
                   45573: ps     60      2       163
                   45574: fr     16      2       164
                   45575: yn     60      2       165
                   45576: fn     60      3       166
                   45577: sc     60      3       167
                   45578: cr     60      0       168
                   45579: ---    30      2       169
                   45580: ``     46      2       170
                   45581: ---    40      0       171
                   45582: ---    26      0       172
                   45583: ---    26      0       173
                   45584: fi     50      2       174
                   45585: fl     50      2       175
                   45586: en     50      0       177
                   45587: \-     "
                   45588: dg     60      3       178
                   45589: dd     60      3       179
                   45590: ---    30      0       180
                   45591: pg     54      3       182
                   45592: ---    60      0       183
                   45593: ---    30      1       184
                   45594: ---    46      1       185
                   45595: ''     46      2       186
                   45596: ---    40      0       187
                   45597: ---    100     0       188
                   45598: ---    104     2       189
                   45599: ---    54      1       191
                   45600: ga     38      2       193
                   45601: \`     "
                   45602: aa     38      2       194
                   45603: \'     "
                   45604: ^a     48      2       195
                   45605: ^      "
                   45606: ~a     50      2       196
                   45607: ~      "
                   45608: -a     46      2       197
                   45609: Ua     48      2       198
                   45610: .a     24      2       199
                   45611: :a     40      2       200
                   45612: oa     32      2       202
                   45613: ,a     32      1       203
                   45614: "a     50      2       205
                   45615: Ca     32      1       206
                   45616: va     48      2       207
                   45617: em     100     0       208
                   45618: ---    96      2       225
                   45619: ---    36      2       227
                   45620: ---    50      2       232
                   45621: ---    66      2       233
                   45622: ---    100     2       234
                   45623: ---    36      2       235
                   45624: ---    90      0       241
                   45625: ---    24      0       245
                   45626: ---    20      2       248
                   45627: ---    54      0       249
                   45628: ---    88      0       250
                   45629: ---    58      2       251
                   45630: 0707070014231030771006440057030057030000010304660522627502700003000000003362post.src/devpost.add/F2name F2
                   45631: fontname FranklinGothic-BookOblique
                   45632: ligatures fi fl 0
                   45633: spacewidth 30
                   45634: charset
                   45635: !      30      2       33
                   45636: "      46      2       34
                   45637: dq     "
                   45638: #      60      2       35
                   45639: $      60      2       36
                   45640: %      70      2       37
                   45641: &      68      2       38
                   45642: '      30      2       39
                   45643: (      30      3       40
                   45644: )      30      3       41
                   45645: *      60      2       42
                   45646: +      60      0       43
                   45647: ,      30      1       44
                   45648: hy     22      0       45
                   45649: -      "
                   45650: .      30      0       46
                   45651: /      52      3       47
                   45652: 0      60      2       48
                   45653: 1      60      2       49
                   45654: 2      60      2       50
                   45655: 3      60      2       51
                   45656: 4      60      2       52
                   45657: 5      60      2       53
                   45658: 6      60      2       54
                   45659: 7      60      2       55
                   45660: 8      60      2       56
                   45661: 9      60      2       57
                   45662: :      30      0       58
                   45663: ;      30      1       59
                   45664: ---    60      0       60
                   45665: =      60      0       61
                   45666: ---    60      0       62
                   45667: ?      54      2       63
                   45668: @      80      2       64
                   45669: A      56      2       65
                   45670: B      62      2       66
                   45671: C      62      2       67
                   45672: D      66      2       68
                   45673: E      56      2       69
                   45674: F      48      2       70
                   45675: G      66      2       71
                   45676: H      66      2       72
                   45677: I      26      2       73
                   45678: J      40      2       74
                   45679: K      62      2       75
                   45680: L      50      2       76
                   45681: M      82      2       77
                   45682: N      66      2       78
                   45683: O      66      2       79
                   45684: P      56      2       80
                   45685: Q      66      3       81
                   45686: R      62      2       82
                   45687: S      62      2       83
                   45688: T      50      2       84
                   45689: U      64      2       85
                   45690: V      56      2       86
                   45691: W      82      2       87
                   45692: X      54      2       88
                   45693: Y      56      2       89
                   45694: Z      54      2       90
                   45695: [      30      3       91
                   45696: \      52      2       92
                   45697: bs     "
                   45698: ]      30      3       93
                   45699: ---    60      2       94
                   45700: ---    50      1       95
                   45701: `      30      2       96
                   45702: a      54      0       97
                   45703: b      54      2       98
                   45704: c      48      0       99
                   45705: d      54      2       100
                   45706: e      54      0       101
                   45707: f      30      2       102
                   45708: g      50      1       103
                   45709: h      54      2       104
                   45710: i      24      2       105
                   45711: j      22      3       106
                   45712: k      50      2       107
                   45713: l      24      2       108
                   45714: m      82      0       109
                   45715: n      54      0       110
                   45716: o      54      0       111
                   45717: p      54      1       112
                   45718: q      54      1       113
                   45719: r      32      0       114
                   45720: s      52      0       115
                   45721: t      32      2       116
                   45722: u      54      0       117
                   45723: v      44      0       118
                   45724: w      66      0       119
                   45725: x      44      0       120
                   45726: y      42      1       121
                   45727: z      42      0       122
                   45728: {      30      3       123
                   45729: ---    26      2       124
                   45730: }      30      3       125
                   45731: ---    60      0       126
                   45732: ---    30      1       161
                   45733: ct     60      2       162
                   45734: ps     60      2       163
                   45735: fr     16      2       164
                   45736: yn     60      2       165
                   45737: fn     60      3       166
                   45738: sc     60      3       167
                   45739: cr     60      0       168
                   45740: ---    30      2       169
                   45741: ``     46      2       170
                   45742: ---    40      0       171
                   45743: ---    26      0       172
                   45744: ---    26      0       173
                   45745: fi     50      2       174
                   45746: fl     50      2       175
                   45747: en     50      0       177
                   45748: \-     "
                   45749: dg     60      3       178
                   45750: dd     60      3       179
                   45751: ---    30      0       180
                   45752: pg     54      3       182
                   45753: ---    60      0       183
                   45754: ---    30      1       184
                   45755: ---    46      1       185
                   45756: ''     46      2       186
                   45757: ---    40      0       187
                   45758: ---    100     0       188
                   45759: ---    104     2       189
                   45760: ---    54      1       191
                   45761: ga     38      2       193
                   45762: \`     "
                   45763: aa     38      2       194
                   45764: \'     "
                   45765: ^a     48      2       195
                   45766: ^      "
                   45767: ~a     50      2       196
                   45768: ~      "
                   45769: -a     46      2       197
                   45770: Ua     48      2       198
                   45771: .a     24      2       199
                   45772: :a     40      2       200
                   45773: oa     32      2       202
                   45774: ,a     32      1       203
                   45775: "a     50      2       205
                   45776: Ca     32      1       206
                   45777: va     48      2       207
                   45778: em     100     0       208
                   45779: ---    96      2       225
                   45780: ---    36      2       227
                   45781: ---    50      2       232
                   45782: ---    66      2       233
                   45783: ---    100     2       234
                   45784: ---    36      2       235
                   45785: ---    90      0       241
                   45786: ---    24      0       245
                   45787: ---    20      2       248
                   45788: ---    54      0       249
                   45789: ---    88      0       250
                   45790: ---    58      2       251
                   45791: 0707070014231031001006440057030057030000010305000522627502700003000000003351post.src/devpost.add/F3name F3
                   45792: fontname FranklinGothic-Demi
                   45793: ligatures fi fl 0
                   45794: spacewidth 30
                   45795: charset
                   45796: !      32      2       33
                   45797: "      46      2       34
                   45798: dq     "
                   45799: #      60      2       35
                   45800: $      60      2       36
                   45801: %      70      2       37
                   45802: &      72      2       38
                   45803: '      30      2       39
                   45804: (      38      3       40
                   45805: )      38      3       41
                   45806: *      60      2       42
                   45807: +      60      0       43
                   45808: ,      30      1       44
                   45809: hy     24      0       45
                   45810: -      "
                   45811: .      30      0       46
                   45812: /      60      3       47
                   45813: 0      60      2       48
                   45814: 1      60      2       49
                   45815: 2      60      2       50
                   45816: 3      60      2       51
                   45817: 4      60      2       52
                   45818: 5      60      2       53
                   45819: 6      60      2       54
                   45820: 7      60      2       55
                   45821: 8      60      2       56
                   45822: 9      60      2       57
                   45823: :      30      0       58
                   45824: ;      30      1       59
                   45825: ---    60      0       60
                   45826: =      60      0       61
                   45827: ---    60      0       62
                   45828: ?      54      2       63
                   45829: @      80      2       64
                   45830: A      64      2       65
                   45831: B      66      2       66
                   45832: C      66      2       67
                   45833: D      66      2       68
                   45834: E      58      2       69
                   45835: F      54      2       70
                   45836: G      66      2       71
                   45837: H      66      2       72
                   45838: I      30      2       73
                   45839: J      40      2       74
                   45840: K      64      2       75
                   45841: L      50      2       76
                   45842: M      88      2       77
                   45843: N      66      2       78
                   45844: O      66      2       79
                   45845: P      62      2       80
                   45846: Q      66      3       81
                   45847: R      66      2       82
                   45848: S      60      2       83
                   45849: T      54      2       84
                   45850: U      66      2       85
                   45851: V      60      2       86
                   45852: W      90      2       87
                   45853: X      64      2       88
                   45854: Y      60      2       89
                   45855: Z      66      2       90
                   45856: [      38      3       91
                   45857: \      60      2       92
                   45858: bs     "
                   45859: ]      38      3       93
                   45860: ---    60      2       94
                   45861: ---    50      1       95
                   45862: `      30      2       96
                   45863: a      54      0       97
                   45864: b      54      2       98
                   45865: c      54      0       99
                   45866: d      54      2       100
                   45867: e      54      0       101
                   45868: f      30      2       102
                   45869: g      56      3       103
                   45870: h      54      2       104
                   45871: i      26      2       105
                   45872: j      26      3       106
                   45873: k      56      2       107
                   45874: l      26      2       108
                   45875: m      82      0       109
                   45876: n      54      0       110
                   45877: o      54      0       111
                   45878: p      54      1       112
                   45879: q      54      1       113
                   45880: r      34      0       114
                   45881: s      50      0       115
                   45882: t      38      2       116
                   45883: u      54      0       117
                   45884: v      48      0       118
                   45885: w      74      0       119
                   45886: x      54      0       120
                   45887: y      48      1       121
                   45888: z      42      0       122
                   45889: {      38      3       123
                   45890: ---    30      2       124
                   45891: }      38      3       125
                   45892: ---    60      0       126
                   45893: ---    32      1       161
                   45894: ct     60      2       162
                   45895: ps     60      2       163
                   45896: fr     8       2       164
                   45897: yn     60      2       165
                   45898: fn     60      3       166
                   45899: sc     60      3       167
                   45900: cr     60      0       168
                   45901: ---    30      2       169
                   45902: ``     48      2       170
                   45903: ---    40      0       171
                   45904: ---    26      0       172
                   45905: ---    26      0       173
                   45906: fi     56      2       174
                   45907: fl     56      2       175
                   45908: en     50      0       177
                   45909: \-     "
                   45910: dg     60      3       178
                   45911: dd     60      3       179
                   45912: ---    30      0       180
                   45913: pg     54      3       182
                   45914: ---    60      0       183
                   45915: ---    30      1       184
                   45916: ---    48      1       185
                   45917: ''     48      2       186
                   45918: ---    40      0       187
                   45919: ---    100     0       188
                   45920: ---    104     2       189
                   45921: ---    54      1       191
                   45922: ga     38      2       193
                   45923: \`     "
                   45924: aa     40      2       194
                   45925: \'     "
                   45926: ^a     50      2       195
                   45927: ^      "
                   45928: ~a     50      2       196
                   45929: ~      "
                   45930: -a     46      2       197
                   45931: Ua     52      2       198
                   45932: .a     26      2       199
                   45933: :a     42      2       200
                   45934: oa     32      2       202
                   45935: ,a     34      1       203
                   45936: "a     52      2       205
                   45937: Ca     34      1       206
                   45938: va     52      2       207
                   45939: em     100     0       208
                   45940: ---    90      2       225
                   45941: ---    36      2       227
                   45942: ---    52      2       232
                   45943: ---    66      2       233
                   45944: ---    96      2       234
                   45945: ---    36      2       235
                   45946: ---    82      0       241
                   45947: ---    26      0       245
                   45948: ---    26      2       248
                   45949: ---    54      0       249
                   45950: ---    86      0       250
                   45951: ---    66      2       251
                   45952: 0707070014231031011006440057030057030000010305020522627502700003000000003360post.src/devpost.add/F4name F4
                   45953: fontname FranklinGothic-DemiOblique
                   45954: ligatures fi fl 0
                   45955: spacewidth 30
                   45956: charset
                   45957: !      32      2       33
                   45958: "      46      2       34
                   45959: dq     "
                   45960: #      60      2       35
                   45961: $      60      2       36
                   45962: %      70      2       37
                   45963: &      72      2       38
                   45964: '      30      2       39
                   45965: (      38      3       40
                   45966: )      38      3       41
                   45967: *      60      2       42
                   45968: +      60      0       43
                   45969: ,      30      1       44
                   45970: hy     24      0       45
                   45971: -      "
                   45972: .      30      0       46
                   45973: /      60      3       47
                   45974: 0      60      2       48
                   45975: 1      60      2       49
                   45976: 2      60      2       50
                   45977: 3      60      2       51
                   45978: 4      60      2       52
                   45979: 5      60      2       53
                   45980: 6      60      2       54
                   45981: 7      60      2       55
                   45982: 8      60      2       56
                   45983: 9      60      2       57
                   45984: :      30      0       58
                   45985: ;      30      1       59
                   45986: ---    60      0       60
                   45987: =      60      0       61
                   45988: ---    60      0       62
                   45989: ?      54      2       63
                   45990: @      80      2       64
                   45991: A      64      2       65
                   45992: B      66      2       66
                   45993: C      66      2       67
                   45994: D      66      2       68
                   45995: E      58      2       69
                   45996: F      54      2       70
                   45997: G      66      2       71
                   45998: H      66      2       72
                   45999: I      30      2       73
                   46000: J      40      2       74
                   46001: K      64      2       75
                   46002: L      50      2       76
                   46003: M      88      2       77
                   46004: N      66      2       78
                   46005: O      66      2       79
                   46006: P      62      2       80
                   46007: Q      66      3       81
                   46008: R      66      2       82
                   46009: S      60      2       83
                   46010: T      54      2       84
                   46011: U      66      2       85
                   46012: V      60      2       86
                   46013: W      90      2       87
                   46014: X      64      2       88
                   46015: Y      60      2       89
                   46016: Z      66      2       90
                   46017: [      38      3       91
                   46018: \      60      2       92
                   46019: bs     "
                   46020: ]      38      3       93
                   46021: ---    60      2       94
                   46022: ---    50      1       95
                   46023: `      30      2       96
                   46024: a      54      0       97
                   46025: b      54      2       98
                   46026: c      54      0       99
                   46027: d      54      2       100
                   46028: e      54      0       101
                   46029: f      30      2       102
                   46030: g      56      3       103
                   46031: h      54      2       104
                   46032: i      26      2       105
                   46033: j      26      3       106
                   46034: k      56      2       107
                   46035: l      26      2       108
                   46036: m      82      0       109
                   46037: n      54      0       110
                   46038: o      54      0       111
                   46039: p      54      1       112
                   46040: q      54      1       113
                   46041: r      34      0       114
                   46042: s      50      0       115
                   46043: t      38      2       116
                   46044: u      54      0       117
                   46045: v      48      0       118
                   46046: w      74      0       119
                   46047: x      54      0       120
                   46048: y      48      1       121
                   46049: z      42      0       122
                   46050: {      38      3       123
                   46051: ---    30      2       124
                   46052: }      38      3       125
                   46053: ---    60      0       126
                   46054: ---    32      1       161
                   46055: ct     60      2       162
                   46056: ps     60      2       163
                   46057: fr     8       2       164
                   46058: yn     60      2       165
                   46059: fn     60      3       166
                   46060: sc     60      3       167
                   46061: cr     60      0       168
                   46062: ---    30      2       169
                   46063: ``     48      2       170
                   46064: ---    40      0       171
                   46065: ---    26      0       172
                   46066: ---    26      0       173
                   46067: fi     56      2       174
                   46068: fl     56      2       175
                   46069: en     50      0       177
                   46070: \-     "
                   46071: dg     60      3       178
                   46072: dd     60      3       179
                   46073: ---    30      0       180
                   46074: pg     54      3       182
                   46075: ---    60      0       183
                   46076: ---    30      1       184
                   46077: ---    48      1       185
                   46078: ''     48      2       186
                   46079: ---    40      0       187
                   46080: ---    100     0       188
                   46081: ---    104     2       189
                   46082: ---    54      1       191
                   46083: ga     38      2       193
                   46084: \`     "
                   46085: aa     40      2       194
                   46086: \'     "
                   46087: ^a     50      2       195
                   46088: ^      "
                   46089: ~a     50      2       196
                   46090: ~      "
                   46091: -a     46      2       197
                   46092: Ua     52      2       198
                   46093: .a     26      2       199
                   46094: :a     42      2       200
                   46095: oa     32      2       202
                   46096: ,a     34      1       203
                   46097: "a     52      2       205
                   46098: Ca     34      1       206
                   46099: va     52      2       207
                   46100: em     100     0       208
                   46101: ---    90      2       225
                   46102: ---    36      2       227
                   46103: ---    52      2       232
                   46104: ---    66      2       233
                   46105: ---    96      2       234
                   46106: ---    36      2       235
                   46107: ---    82      0       241
                   46108: ---    26      0       245
                   46109: ---    26      2       248
                   46110: ---    54      0       249
                   46111: ---    86      0       250
                   46112: ---    66      2       251
                   46113: 0707070014231031021006440057030057030000010305040522627502700003000000003353post.src/devpost.add/F5name F5
                   46114: fontname FranklinGothic-Heavy
                   46115: ligatures fi fl 0
                   46116: spacewidth 30
                   46117: charset
                   46118: !      32      2       33
                   46119: "      52      2       34
                   46120: dq     "
                   46121: #      60      2       35
                   46122: $      60      2       36
                   46123: %      74      2       37
                   46124: &      78      2       38
                   46125: '      30      2       39
                   46126: (      38      3       40
                   46127: )      38      3       41
                   46128: *      60      2       42
                   46129: +      60      0       43
                   46130: ,      30      1       44
                   46131: hy     26      0       45
                   46132: -      "
                   46133: .      30      0       46
                   46134: /      60      3       47
                   46135: 0      60      2       48
                   46136: 1      60      2       49
                   46137: 2      60      2       50
                   46138: 3      60      2       51
                   46139: 4      60      2       52
                   46140: 5      60      2       53
                   46141: 6      60      2       54
                   46142: 7      60      2       55
                   46143: 8      60      2       56
                   46144: 9      60      2       57
                   46145: :      30      0       58
                   46146: ;      30      1       59
                   46147: ---    60      0       60
                   46148: =      60      0       61
                   46149: ---    60      0       62
                   46150: ?      60      2       63
                   46151: @      80      2       64
                   46152: A      66      2       65
                   46153: B      66      2       66
                   46154: C      66      2       67
                   46155: D      68      2       68
                   46156: E      60      2       69
                   46157: F      54      2       70
                   46158: G      68      2       71
                   46159: H      68      2       72
                   46160: I      32      2       73
                   46161: J      44      2       74
                   46162: K      66      2       75
                   46163: L      54      2       76
                   46164: M      86      2       77
                   46165: N      70      2       78
                   46166: O      70      2       79
                   46167: P      66      2       80
                   46168: Q      70      3       81
                   46169: R      68      2       82
                   46170: S      66      2       83
                   46171: T      50      2       84
                   46172: U      66      2       85
                   46173: V      66      2       86
                   46174: W      92      2       87
                   46175: X      70      2       88
                   46176: Y      66      2       89
                   46177: Z      60      2       90
                   46178: [      38      3       91
                   46179: \      60      2       92
                   46180: bs     "
                   46181: ]      38      3       93
                   46182: ---    60      2       94
                   46183: ---    50      1       95
                   46184: `      30      2       96
                   46185: a      58      0       97
                   46186: b      58      2       98
                   46187: c      54      0       99
                   46188: d      58      2       100
                   46189: e      60      0       101
                   46190: f      40      2       102
                   46191: g      58      3       103
                   46192: h      58      2       104
                   46193: i      30      2       105
                   46194: j      30      3       106
                   46195: k      58      2       107
                   46196: l      30      2       108
                   46197: m      86      0       109
                   46198: n      58      0       110
                   46199: o      60      0       111
                   46200: p      58      1       112
                   46201: q      58      1       113
                   46202: r      38      0       114
                   46203: s      54      0       115
                   46204: t      40      2       116
                   46205: u      60      0       117
                   46206: v      54      0       118
                   46207: w      78      0       119
                   46208: x      58      0       120
                   46209: y      54      1       121
                   46210: z      50      0       122
                   46211: {      38      3       123
                   46212: ---    30      2       124
                   46213: }      38      3       125
                   46214: ---    60      0       126
                   46215: ---    32      1       161
                   46216: ct     60      2       162
                   46217: ps     60      2       163
                   46218: fr     12      2       164
                   46219: yn     60      2       165
                   46220: fn     60      3       166
                   46221: sc     60      3       167
                   46222: cr     60      0       168
                   46223: ---    30      2       169
                   46224: ``     52      2       170
                   46225: ---    42      0       171
                   46226: ---    26      0       172
                   46227: ---    26      0       173
                   46228: fi     62      2       174
                   46229: fl     60      2       175
                   46230: en     50      0       177
                   46231: \-     "
                   46232: dg     60      3       178
                   46233: dd     60      3       179
                   46234: ---    30      0       180
                   46235: pg     54      3       182
                   46236: ---    60      0       183
                   46237: ---    30      1       184
                   46238: ---    52      1       185
                   46239: ''     52      2       186
                   46240: ---    42      0       187
                   46241: ---    100     0       188
                   46242: ---    108     2       189
                   46243: ---    60      1       191
                   46244: ga     40      2       193
                   46245: \`     "
                   46246: aa     40      2       194
                   46247: \'     "
                   46248: ^a     54      2       195
                   46249: ^      "
                   46250: ~a     50      2       196
                   46251: ~      "
                   46252: -a     46      2       197
                   46253: Ua     52      2       198
                   46254: .a     28      2       199
                   46255: :a     44      2       200
                   46256: oa     34      2       202
                   46257: ,a     34      1       203
                   46258: "a     60      2       205
                   46259: Ca     34      1       206
                   46260: va     54      2       207
                   46261: em     100     0       208
                   46262: ---    96      2       225
                   46263: ---    38      2       227
                   46264: ---    56      2       232
                   46265: ---    70      2       233
                   46266: ---    98      2       234
                   46267: ---    38      2       235
                   46268: ---    82      0       241
                   46269: ---    30      0       245
                   46270: ---    30      2       248
                   46271: ---    60      0       249
                   46272: ---    86      0       250
                   46273: ---    66      2       251
                   46274: 0707070014231031031006440057030057030000010305060522627502700003000000003361post.src/devpost.add/F6name F6
                   46275: fontname FranklinGothic-HeavyOblique
                   46276: ligatures fi fl 0
                   46277: spacewidth 30
                   46278: charset
                   46279: !      32      2       33
                   46280: "      52      2       34
                   46281: dq     "
                   46282: #      60      2       35
                   46283: $      60      2       36
                   46284: %      74      2       37
                   46285: &      78      2       38
                   46286: '      30      2       39
                   46287: (      38      3       40
                   46288: )      38      3       41
                   46289: *      60      2       42
                   46290: +      60      0       43
                   46291: ,      30      1       44
                   46292: hy     26      0       45
                   46293: -      "
                   46294: .      30      0       46
                   46295: /      60      3       47
                   46296: 0      60      2       48
                   46297: 1      60      2       49
                   46298: 2      60      2       50
                   46299: 3      60      2       51
                   46300: 4      60      2       52
                   46301: 5      60      2       53
                   46302: 6      60      2       54
                   46303: 7      60      2       55
                   46304: 8      60      2       56
                   46305: 9      60      2       57
                   46306: :      30      0       58
                   46307: ;      30      1       59
                   46308: ---    60      0       60
                   46309: =      60      0       61
                   46310: ---    60      0       62
                   46311: ?      60      2       63
                   46312: @      80      2       64
                   46313: A      66      2       65
                   46314: B      66      2       66
                   46315: C      66      2       67
                   46316: D      68      2       68
                   46317: E      60      2       69
                   46318: F      54      2       70
                   46319: G      68      2       71
                   46320: H      68      2       72
                   46321: I      32      2       73
                   46322: J      44      2       74
                   46323: K      66      2       75
                   46324: L      54      2       76
                   46325: M      86      2       77
                   46326: N      70      2       78
                   46327: O      70      2       79
                   46328: P      66      2       80
                   46329: Q      70      3       81
                   46330: R      68      2       82
                   46331: S      66      2       83
                   46332: T      50      2       84
                   46333: U      66      2       85
                   46334: V      66      2       86
                   46335: W      92      2       87
                   46336: X      70      2       88
                   46337: Y      66      2       89
                   46338: Z      60      2       90
                   46339: [      38      3       91
                   46340: \      60      2       92
                   46341: bs     "
                   46342: ]      38      3       93
                   46343: ---    60      2       94
                   46344: ---    50      1       95
                   46345: `      30      2       96
                   46346: a      58      0       97
                   46347: b      58      2       98
                   46348: c      54      0       99
                   46349: d      58      2       100
                   46350: e      60      0       101
                   46351: f      40      2       102
                   46352: g      58      3       103
                   46353: h      58      2       104
                   46354: i      30      2       105
                   46355: j      30      3       106
                   46356: k      58      2       107
                   46357: l      30      2       108
                   46358: m      86      0       109
                   46359: n      58      0       110
                   46360: o      60      0       111
                   46361: p      58      1       112
                   46362: q      58      1       113
                   46363: r      38      0       114
                   46364: s      54      0       115
                   46365: t      40      2       116
                   46366: u      60      0       117
                   46367: v      54      0       118
                   46368: w      78      0       119
                   46369: x      58      0       120
                   46370: y      54      1       121
                   46371: z      50      0       122
                   46372: {      38      3       123
                   46373: or     30      2       124
                   46374: }      38      3       125
                   46375: ---    60      0       126
                   46376: ---    32      1       161
                   46377: ct     60      2       162
                   46378: ps     60      2       163
                   46379: fr     12      2       164
                   46380: yn     60      2       165
                   46381: fn     60      3       166
                   46382: sc     60      3       167
                   46383: cr     60      0       168
                   46384: ---    30      2       169
                   46385: ``     52      2       170
                   46386: ---    42      0       171
                   46387: ---    26      0       172
                   46388: ---    26      0       173
                   46389: fi     62      2       174
                   46390: fl     60      2       175
                   46391: en     50      0       177
                   46392: \-     "
                   46393: dg     60      3       178
                   46394: dd     60      3       179
                   46395: ---    30      0       180
                   46396: pg     54      3       182
                   46397: ---    60      0       183
                   46398: ---    30      1       184
                   46399: ---    52      1       185
                   46400: ''     52      2       186
                   46401: ---    42      0       187
                   46402: ---    100     0       188
                   46403: ---    108     2       189
                   46404: ---    60      1       191
                   46405: ga     40      2       193
                   46406: \`     "
                   46407: aa     40      2       194
                   46408: \'     "
                   46409: ^a     54      2       195
                   46410: ^      "
                   46411: ~a     50      2       196
                   46412: ~      "
                   46413: -a     46      2       197
                   46414: Ua     52      2       198
                   46415: .a     28      2       199
                   46416: :a     44      2       200
                   46417: oa     34      2       202
                   46418: ,a     34      1       203
                   46419: "a     60      2       205
                   46420: Ca     34      1       206
                   46421: va     54      2       207
                   46422: em     100     0       208
                   46423: ---    96      2       225
                   46424: ---    38      2       227
                   46425: ---    56      2       232
                   46426: ---    70      2       233
                   46427: ---    98      2       234
                   46428: ---    38      2       235
                   46429: ---    82      0       241
                   46430: ---    30      0       245
                   46431: ---    30      2       248
                   46432: ---    60      0       249
                   46433: ---    86      0       250
                   46434: ---    66      2       251
                   46435: 0707070014231031041006440057030057030000010305200522627502700003000000003346post.src/devpost.add/G1name G1
                   46436: fontname Garamond-Light
                   46437: ligatures fi fl 0
                   46438: spacewidth 32
                   46439: charset
                   46440: !      22      2       33
                   46441: "      34      2       34
                   46442: dq     "
                   46443: #      60      2       35
                   46444: $      50      2       36
                   46445: %      76      2       37
                   46446: &      70      2       38
                   46447: '      22      2       39
                   46448: (      36      3       40
                   46449: )      36      3       41
                   46450: *      34      2       42
                   46451: +      56      0       43
                   46452: ,      26      1       44
                   46453: hy     32      0       45
                   46454: -      "
                   46455: .      26      0       46
                   46456: /      40      2       47
                   46457: 0      50      2       48
                   46458: 1      50      2       49
                   46459: 2      50      2       50
                   46460: 3      50      2       51
                   46461: 4      50      2       52
                   46462: 5      50      2       53
                   46463: 6      50      2       54
                   46464: 7      50      2       55
                   46465: 8      50      2       56
                   46466: 9      50      2       57
                   46467: :      26      0       58
                   46468: ;      26      1       59
                   46469: ---    56      0       60
                   46470: =      56      0       61
                   46471: ---    56      0       62
                   46472: ?      30      2       63
                   46473: @      74      3       64
                   46474: A      64      2       65
                   46475: B      64      2       66
                   46476: C      62      2       67
                   46477: D      74      2       68
                   46478: E      56      2       69
                   46479: F      52      2       70
                   46480: G      74      2       71
                   46481: H      74      2       72
                   46482: I      32      2       73
                   46483: J      32      2       74
                   46484: K      66      2       75
                   46485: L      48      2       76
                   46486: M      80      2       77
                   46487: N      70      2       78
                   46488: O      78      2       79
                   46489: P      56      2       80
                   46490: Q      78      3       81
                   46491: R      58      2       82
                   46492: S      48      2       83
                   46493: T      58      2       84
                   46494: U      70      2       85
                   46495: V      64      2       86
                   46496: W      92      2       87
                   46497: X      64      2       88
                   46498: Y      66      2       89
                   46499: Z      60      2       90
                   46500: [      24      3       91
                   46501: \      52      2       92
                   46502: bs     "
                   46503: ]      24      3       93
                   46504: ---    56      2       94
                   46505: ---    50      1       95
                   46506: `      22      2       96
                   46507: a      48      0       97
                   46508: b      56      2       98
                   46509: c      46      0       99
                   46510: d      56      2       100
                   46511: e      50      0       101
                   46512: f      30      2       102
                   46513: g      52      1       103
                   46514: h      56      2       104
                   46515: i      26      2       105
                   46516: j      22      3       106
                   46517: k      54      2       107
                   46518: l      26      2       108
                   46519: m      82      0       109
                   46520: n      56      0       110
                   46521: o      56      0       111
                   46522: p      58      1       112
                   46523: q      56      1       113
                   46524: r      34      0       114
                   46525: s      40      0       115
                   46526: t      28      2       116
                   46527: u      56      0       117
                   46528: v      50      0       118
                   46529: w      78      0       119
                   46530: x      52      0       120
                   46531: y      50      1       121
                   46532: z      46      0       122
                   46533: {      26      3       123
                   46534: ---    56      3       124
                   46535: }      26      3       125
                   46536: ---    56      0       126
                   46537: ---    22      1       161
                   46538: ct     50      2       162
                   46539: ps     64      2       163
                   46540: fr     16      2       164
                   46541: yn     66      2       165
                   46542: fn     50      3       166
                   46543: sc     36      3       167
                   46544: cr     50      2       168
                   46545: ---    20      2       169
                   46546: ``     38      2       170
                   46547: ---    26      0       171
                   46548: ---    16      0       172
                   46549: ---    16      0       173
                   46550: fi     56      2       174
                   46551: fl     56      2       175
                   46552: en     50      0       177
                   46553: \-     "
                   46554: dg     40      3       178
                   46555: dd     40      3       179
                   46556: ---    26      0       180
                   46557: pg     62      3       182
                   46558: ---    62      0       183
                   46559: ---    22      1       184
                   46560: ---    36      1       185
                   46561: ''     38      2       186
                   46562: ---    26      0       187
                   46563: ---    100     0       188
                   46564: ---    108     2       189
                   46565: ---    30      1       191
                   46566: ga     36      2       193
                   46567: \`     "
                   46568: aa     36      2       194
                   46569: \'     "
                   46570: ^a     42      2       195
                   46571: ^      "
                   46572: ~a     42      2       196
                   46573: ~      "
                   46574: -a     38      2       197
                   46575: Ua     40      2       198
                   46576: .a     22      2       199
                   46577: :a     40      2       200
                   46578: oa     28      2       202
                   46579: ,a     32      1       203
                   46580: "a     38      2       205
                   46581: Ca     30      1       206
                   46582: va     42      2       207
                   46583: em     100     0       208
                   46584: ---    94      2       225
                   46585: ---    34      2       227
                   46586: ---    48      2       232
                   46587: ---    78      2       233
                   46588: ---    100     2       234
                   46589: ---    34      2       235
                   46590: ---    74      0       241
                   46591: ---    26      0       245
                   46592: ---    26      2       248
                   46593: ---    56      0       249
                   46594: ---    88      0       250
                   46595: ---    56      2       251
                   46596: 0707070014231031051006440057030057030000010305220522627502700003000000003353post.src/devpost.add/G2name G2
                   46597: fontname Garamond-LightItalic
                   46598: ligatures fi fl 0
                   46599: spacewidth 27
                   46600: charset
                   46601: !      26      2       33
                   46602: "      35      2       34
                   46603: dq     "
                   46604: #      54      2       35
                   46605: $      55      2       36
                   46606: %      78      2       37
                   46607: &      64      2       38
                   46608: '      25      2       39
                   46609: (      38      3       40
                   46610: )      38      3       41
                   46611: *      32      2       42
                   46612: +      57      0       43
                   46613: ,      27      1       44
                   46614: hy     33      0       45
                   46615: -      "
                   46616: .      27      0       46
                   46617: /      30      2       47
                   46618: 0      55      2       48
                   46619: 1      55      2       49
                   46620: 2      55      2       50
                   46621: 3      55      2       51
                   46622: 4      55      2       52
                   46623: 5      55      2       53
                   46624: 6      55      2       54
                   46625: 7      55      2       55
                   46626: 8      55      2       56
                   46627: 9      55      2       57
                   46628: :      27      0       58
                   46629: ;      27      1       59
                   46630: ---    57      0       60
                   46631: =      57      0       61
                   46632: ---    57      0       62
                   46633: ?      35      2       63
                   46634: @      69      3       64
                   46635: A      64      2       65
                   46636: B      63      2       66
                   46637: C      63      2       67
                   46638: D      72      2       68
                   46639: E      55      2       69
                   46640: F      52      2       70
                   46641: G      71      2       71
                   46642: H      73      2       72
                   46643: I      31      2       73
                   46644: J      30      2       74
                   46645: K      63      2       75
                   46646: L      46      2       76
                   46647: M      80      2       77
                   46648: N      66      2       78
                   46649: O      72      2       79
                   46650: P      58      2       80
                   46651: Q      73      3       81
                   46652: R      58      2       82
                   46653: S      46      2       83
                   46654: T      54      2       84
                   46655: U      63      2       85
                   46656: V      62      2       86
                   46657: W      90      2       87
                   46658: X      65      2       88
                   46659: Y      58      2       89
                   46660: Z      59      2       90
                   46661: [      23      3       91
                   46662: \      51      2       92
                   46663: bs     "
                   46664: ]      23      3       93
                   46665: ---    57      2       94
                   46666: ---    50      1       95
                   46667: `      25      2       96
                   46668: a      57      0       97
                   46669: b      52      2       98
                   46670: c      46      0       99
                   46671: d      57      2       100
                   46672: e      44      0       101
                   46673: f      30      2       102
                   46674: g      48      1       103
                   46675: h      56      2       104
                   46676: i      30      2       105
                   46677: j      27      3       106
                   46678: k      49      2       107
                   46679: l      26      2       108
                   46680: m      84      0       109
                   46681: n      62      0       110
                   46682: o      50      0       111
                   46683: p      51      1       112
                   46684: q      52      1       113
                   46685: r      39      0       114
                   46686: s      36      0       115
                   46687: t      28      2       116
                   46688: u      61      0       117
                   46689: v      46      0       118
                   46690: w      73      0       119
                   46691: x      53      0       120
                   46692: y      47      1       121
                   46693: z      51      0       122
                   46694: {      26      3       123
                   46695: ---    57      3       124
                   46696: }      26      3       125
                   46697: ---    57      0       126
                   46698: ---    26      1       161
                   46699: ct     55      2       162
                   46700: ps     65      2       163
                   46701: fr     12      2       164
                   46702: yn     55      2       165
                   46703: fn     55      3       166
                   46704: sc     36      3       167
                   46705: cr     56      2       168
                   46706: ---    19      2       169
                   46707: ``     41      2       170
                   46708: ---    27      0       171
                   46709: ---    16      0       172
                   46710: ---    16      0       173
                   46711: fi     56      2       174
                   46712: fl     56      2       175
                   46713: en     50      0       177
                   46714: \-     "
                   46715: dg     42      3       178
                   46716: dd     42      3       179
                   46717: ---    27      0       180
                   46718: pg     61      3       182
                   46719: ---    62      0       183
                   46720: ---    25      1       184
                   46721: ---    41      1       185
                   46722: ''     41      2       186
                   46723: ---    27      0       187
                   46724: ---    100     0       188
                   46725: ---    113     2       189
                   46726: ---    35      1       191
                   46727: ga     39      2       193
                   46728: \`     "
                   46729: aa     34      2       194
                   46730: \'     "
                   46731: ^a     43      2       195
                   46732: ^      "
                   46733: ~a     46      2       196
                   46734: ~      "
                   46735: -a     38      2       197
                   46736: Ua     43      2       198
                   46737: .a     21      2       199
                   46738: :a     36      2       200
                   46739: oa     29      2       202
                   46740: ,a     33      1       203
                   46741: "a     32      2       205
                   46742: Ca     29      1       206
                   46743: va     43      2       207
                   46744: em     100     0       208
                   46745: ---    80      2       225
                   46746: ---    37      2       227
                   46747: ---    47      2       232
                   46748: ---    72      2       233
                   46749: ---    92      2       234
                   46750: ---    37      2       235
                   46751: ---    78      0       241
                   46752: ---    30      0       245
                   46753: ---    29      2       248
                   46754: ---    50      0       249
                   46755: ---    81      0       250
                   46756: ---    59      2       251
                   46757: 0707070014231031061006440057030057030000010305240522627503000003000000003345post.src/devpost.add/G3name G3
                   46758: fontname Garamond-Bold
                   46759: ligatures fi fl 0
                   46760: spacewidth 28
                   46761: charset
                   46762: !      28      2       33
                   46763: "      40      2       34
                   46764: dq     "
                   46765: #      60      2       35
                   46766: $      56      2       36
                   46767: %      88      2       37
                   46768: &      76      2       38
                   46769: '      26      2       39
                   46770: (      40      3       40
                   46771: )      40      3       41
                   46772: *      34      2       42
                   46773: +      56      0       43
                   46774: ,      28      1       44
                   46775: hy     30      0       45
                   46776: -      "
                   46777: .      28      0       46
                   46778: /      44      2       47
                   46779: 0      56      2       48
                   46780: 1      56      2       49
                   46781: 2      56      2       50
                   46782: 3      56      2       51
                   46783: 4      56      2       52
                   46784: 5      56      2       53
                   46785: 6      56      2       54
                   46786: 7      56      2       55
                   46787: 8      56      2       56
                   46788: 9      56      2       57
                   46789: :      28      0       58
                   46790: ;      28      1       59
                   46791: ---    56      0       60
                   46792: =      56      0       61
                   46793: ---    56      0       62
                   46794: ?      42      2       63
                   46795: @      72      3       64
                   46796: A      66      2       65
                   46797: B      64      2       66
                   46798: C      66      2       67
                   46799: D      76      2       68
                   46800: E      60      2       69
                   46801: F      56      2       70
                   46802: G      72      2       71
                   46803: H      78      2       72
                   46804: I      36      2       73
                   46805: J      40      2       74
                   46806: K      74      2       75
                   46807: L      54      2       76
                   46808: M      86      2       77
                   46809: N      72      2       78
                   46810: O      76      2       79
                   46811: P      60      2       80
                   46812: Q      76      3       81
                   46813: R      66      2       82
                   46814: S      52      2       83
                   46815: T      60      2       84
                   46816: U      70      2       85
                   46817: V      64      2       86
                   46818: W      94      2       87
                   46819: X      70      2       88
                   46820: Y      68      2       89
                   46821: Z      62      2       90
                   46822: [      28      3       91
                   46823: \      54      2       92
                   46824: bs     "
                   46825: ]      28      3       93
                   46826: ---    56      2       94
                   46827: ---    50      1       95
                   46828: `      26      2       96
                   46829: a      52      0       97
                   46830: b      60      2       98
                   46831: c      50      0       99
                   46832: d      60      2       100
                   46833: e      52      0       101
                   46834: f      36      2       102
                   46835: g      54      1       103
                   46836: h      66      2       104
                   46837: i      32      2       105
                   46838: j      30      3       106
                   46839: k      60      2       107
                   46840: l      32      2       108
                   46841: m      94      0       109
                   46842: n      66      0       110
                   46843: o      60      0       111
                   46844: p      64      1       112
                   46845: q      60      1       113
                   46846: r      46      0       114
                   46847: s      46      0       115
                   46848: t      34      2       116
                   46849: u      60      0       117
                   46850: v      54      0       118
                   46851: w      82      0       119
                   46852: x      62      0       120
                   46853: y      56      1       121
                   46854: z      48      0       122
                   46855: {      28      3       123
                   46856: ---    56      3       124
                   46857: }      28      3       125
                   46858: ---    56      0       126
                   46859: ---    28      1       161
                   46860: ct     56      2       162
                   46861: ps     68      2       163
                   46862: fr     56      2       164
                   46863: yn     72      2       165
                   46864: fn     66      3       166
                   46865: sc     40      3       167
                   46866: cr     56      2       168
                   46867: ---    22      2       169
                   46868: ``     44      2       170
                   46869: ---    34      0       171
                   46870: ---    20      0       172
                   46871: ---    20      0       173
                   46872: fi     70      2       174
                   46873: fl     70      2       175
                   46874: en     50      0       177
                   46875: \-     "
                   46876: dg     54      3       178
                   46877: dd     54      3       179
                   46878: ---    28      0       180
                   46879: pg     66      3       182
                   46880: ---    62      0       183
                   46881: ---    26      1       184
                   46882: ---    44      1       185
                   46883: ''     44      2       186
                   46884: ---    34      0       187
                   46885: ---    100     0       188
                   46886: ---    126     2       189
                   46887: ---    42      1       191
                   46888: ga     40      2       193
                   46889: \`     "
                   46890: aa     40      2       194
                   46891: \'     "
                   46892: ^a     50      2       195
                   46893: ^      "
                   46894: ~a     52      2       196
                   46895: ~      "
                   46896: -a     52      2       197
                   46897: Ua     48      2       198
                   46898: .a     30      2       199
                   46899: :a     44      2       200
                   46900: oa     32      2       202
                   46901: ,a     32      1       203
                   46902: "a     42      2       205
                   46903: Ca     34      1       206
                   46904: va     50      2       207
                   46905: em     100     0       208
                   46906: ---    96      2       225
                   46907: ---    36      2       227
                   46908: ---    54      2       232
                   46909: ---    76      2       233
                   46910: ---    100     2       234
                   46911: ---    36      2       235
                   46912: ---    80      0       241
                   46913: ---    32      0       245
                   46914: ---    34      2       248
                   46915: ---    60      0       249
                   46916: ---    92      0       250
                   46917: ---    64      2       251
                   46918: 0707070014231031071006440057030057030000010305260522627503000003000000003354post.src/devpost.add/G4name G4
                   46919: fontname Garamond-BoldItalic
                   46920: ligatures fi fl 0
                   46921: spacewidth 28
                   46922: charset
                   46923: !      24      2       33
                   46924: "      40      2       34
                   46925: dq     "
                   46926: #      56      2       35
                   46927: $      56      2       36
                   46928: %      76      2       37
                   46929: &      74      2       38
                   46930: '      22      2       39
                   46931: (      48      3       40
                   46932: )      48      3       41
                   46933: *      54      2       42
                   46934: +      56      0       43
                   46935: ,      24      1       44
                   46936: hy     30      0       45
                   46937: -      "
                   46938: .      24      0       46
                   46939: /      44      2       47
                   46940: 0      56      2       48
                   46941: 1      56      2       49
                   46942: 2      56      2       50
                   46943: 3      56      2       51
                   46944: 4      56      2       52
                   46945: 5      56      2       53
                   46946: 6      56      2       54
                   46947: 7      56      2       55
                   46948: 8      56      2       56
                   46949: 9      56      2       57
                   46950: :      24      0       58
                   46951: ;      24      1       59
                   46952: ---    56      0       60
                   46953: =      56      0       61
                   46954: ---    56      0       62
                   46955: ?      40      2       63
                   46956: @      76      3       64
                   46957: A      64      2       65
                   46958: B      64      2       66
                   46959: C      64      2       67
                   46960: D      76      2       68
                   46961: E      64      2       69
                   46962: F      60      2       70
                   46963: G      72      2       71
                   46964: H      84      2       72
                   46965: I      42      2       73
                   46966: J      40      2       74
                   46967: K      76      2       75
                   46968: L      56      2       76
                   46969: M      88      2       77
                   46970: N      74      2       78
                   46971: O      74      2       79
                   46972: P      68      2       80
                   46973: Q      74      3       81
                   46974: R      72      2       82
                   46975: S      52      2       83
                   46976: T      58      2       84
                   46977: U      72      2       85
                   46978: V      64      2       86
                   46979: W      90      2       87
                   46980: X      72      2       88
                   46981: Y      62      2       89
                   46982: Z      62      2       90
                   46983: [      34      3       91
                   46984: \      54      2       92
                   46985: bs     "
                   46986: ]      34      3       93
                   46987: ---    56      2       94
                   46988: ---    50      1       95
                   46989: `      22      2       96
                   46990: a      62      0       97
                   46991: b      56      2       98
                   46992: c      50      0       99
                   46993: d      62      2       100
                   46994: e      52      0       101
                   46995: f      38      2       102
                   46996: g      56      1       103
                   46997: h      64      2       104
                   46998: i      34      2       105
                   46999: j      32      3       106
                   47000: k      60      2       107
                   47001: l      28      2       108
                   47002: m      86      0       109
                   47003: n      58      0       110
                   47004: o      60      0       111
                   47005: p      64      1       112
                   47006: q      60      1       113
                   47007: r      50      0       114
                   47008: s      50      0       115
                   47009: t      34      2       116
                   47010: u      64      0       117
                   47011: v      52      0       118
                   47012: w      82      0       119
                   47013: x      66      0       120
                   47014: y      54      1       121
                   47015: z      56      0       122
                   47016: {      34      3       123
                   47017: ---    56      3       124
                   47018: }      34      3       125
                   47019: ---    56      0       126
                   47020: ---    24      1       161
                   47021: ct     56      2       162
                   47022: ps     56      2       163
                   47023: fr     18      2       164
                   47024: yn     56      2       165
                   47025: fn     56      3       166
                   47026: sc     54      3       167
                   47027: cr     56      2       168
                   47028: ---    22      2       169
                   47029: ``     42      2       170
                   47030: ---    42      0       171
                   47031: ---    24      0       172
                   47032: ---    24      0       173
                   47033: fi     70      2       174
                   47034: fl     66      2       175
                   47035: en     50      0       177
                   47036: \-     "
                   47037: dg     54      3       178
                   47038: dd     54      3       179
                   47039: ---    24      0       180
                   47040: pg     70      3       182
                   47041: ---    62      0       183
                   47042: ---    22      1       184
                   47043: ---    42      1       185
                   47044: ''     42      2       186
                   47045: ---    42      0       187
                   47046: ---    100     0       188
                   47047: ---    114     2       189
                   47048: ---    40      1       191
                   47049: ga     42      2       193
                   47050: \`     "
                   47051: aa     38      2       194
                   47052: \'     "
                   47053: ^a     50      2       195
                   47054: ^      "
                   47055: ~a     56      2       196
                   47056: ~      "
                   47057: -a     52      2       197
                   47058: Ua     50      2       198
                   47059: .a     26      2       199
                   47060: :a     48      2       200
                   47061: oa     32      2       202
                   47062: ,a     38      1       203
                   47063: "a     38      2       205
                   47064: Ca     34      1       206
                   47065: va     50      2       207
                   47066: em     100     0       208
                   47067: ---    100     2       225
                   47068: ---    40      2       227
                   47069: ---    56      2       232
                   47070: ---    76      2       233
                   47071: ---    104     2       234
                   47072: ---    38      2       235
                   47073: ---    88      0       241
                   47074: ---    34      0       245
                   47075: ---    28      2       248
                   47076: ---    60      0       249
                   47077: ---    90      0       250
                   47078: ---    64      2       251
                   47079: 0707070014231031101006440057030057030000010305400522627503000003000000003344post.src/devpost.add/Gbname Gb
                   47080: fontname Goudy-Bold
                   47081: ligatures fi fl 0
                   47082: spacewidth 28
                   47083: charset
                   47084: !      33      2       33
                   47085: "      50      2       34
                   47086: dq     "
                   47087: #      61      2       35
                   47088: $      56      2       36
                   47089: %      89      2       37
                   47090: &      89      2       38
                   47091: '      28      2       39
                   47092: (      39      3       40
                   47093: )      39      3       41
                   47094: *      50      2       42
                   47095: +      61      0       43
                   47096: ,      28      1       44
                   47097: hy     33      0       45
                   47098: -      "
                   47099: .      28      0       46
                   47100: /      28      2       47
                   47101: 0      56      2       48
                   47102: 1      56      2       49
                   47103: 2      56      2       50
                   47104: 3      56      2       51
                   47105: 4      56      2       52
                   47106: 5      56      2       53
                   47107: 6      56      2       54
                   47108: 7      56      2       55
                   47109: 8      56      2       56
                   47110: 9      56      2       57
                   47111: :      33      0       58
                   47112: ;      33      1       59
                   47113: ---    61      0       60
                   47114: =      61      0       61
                   47115: ---    61      0       62
                   47116: ?      39      2       63
                   47117: @      75      3       64
                   47118: A      78      2       65
                   47119: B      67      2       66
                   47120: C      72      2       67
                   47121: D      78      2       68
                   47122: E      61      2       69
                   47123: F      56      2       70
                   47124: G      78      2       71
                   47125: H      83      2       72
                   47126: I      39      2       73
                   47127: J      39      2       74
                   47128: K      72      2       75
                   47129: L      61      2       76
                   47130: M      89      2       77
                   47131: N      83      2       78
                   47132: O      78      2       79
                   47133: P      61      2       80
                   47134: Q      78      3       81
                   47135: R      72      2       82
                   47136: S      56      2       83
                   47137: T      72      2       84
                   47138: U      83      2       85
                   47139: V      78      2       86
                   47140: W      100     2       87
                   47141: X      72      2       88
                   47142: Y      67      2       89
                   47143: Z      61      2       90
                   47144: [      33      3       91
                   47145: \      61      2       92
                   47146: bs     "
                   47147: ]      33      3       93
                   47148: ---    61      2       94
                   47149: ---    50      1       95
                   47150: `      28      2       96
                   47151: a      44      0       97
                   47152: b      50      2       98
                   47153: c      44      0       99
                   47154: d      50      2       100
                   47155: e      44      0       101
                   47156: f      33      2       102
                   47157: g      44      1       103
                   47158: h      56      2       104
                   47159: i      28      2       105
                   47160: j      28      3       106
                   47161: k      56      2       107
                   47162: l      28      2       108
                   47163: m      78      0       109
                   47164: n      56      0       110
                   47165: o      50      0       111
                   47166: p      50      1       112
                   47167: q      50      1       113
                   47168: r      39      0       114
                   47169: s      39      0       115
                   47170: t      33      2       116
                   47171: u      56      0       117
                   47172: v      50      0       118
                   47173: w      72      0       119
                   47174: x      50      0       120
                   47175: y      50      1       121
                   47176: z      39      0       122
                   47177: {      33      3       123
                   47178: ---    61      3       124
                   47179: }      33      3       125
                   47180: ---    61      0       126
                   47181: ---    33      1       161
                   47182: ct     56      2       162
                   47183: ps     56      2       163
                   47184: fr     17      2       164
                   47185: yn     56      2       165
                   47186: fn     56      3       166
                   47187: sc     50      3       167
                   47188: cr     56      2       168
                   47189: ---    28      2       169
                   47190: ``     50      2       170
                   47191: ---    50      0       171
                   47192: ---    33      0       172
                   47193: ---    33      0       173
                   47194: fi     56      2       174
                   47195: fl     56      2       175
                   47196: en     50      0       177
                   47197: \-     "
                   47198: dg     50      3       178
                   47199: dd     50      3       179
                   47200: ---    28      0       180
                   47201: pg     63      3       182
                   47202: ---    61      0       183
                   47203: ---    28      1       184
                   47204: ---    50      1       185
                   47205: ''     50      2       186
                   47206: ---    50      0       187
                   47207: ---    100     0       188
                   47208: ---    100     2       189
                   47209: ---    39      1       191
                   47210: ga     33      2       193
                   47211: \`     "
                   47212: aa     33      2       194
                   47213: \'     "
                   47214: ^a     33      2       195
                   47215: ^      "
                   47216: ~a     33      2       196
                   47217: ~      "
                   47218: -a     33      2       197
                   47219: Ua     33      2       198
                   47220: .a     33      2       199
                   47221: :a     33      2       200
                   47222: oa     33      2       202
                   47223: ,a     33      1       203
                   47224: "a     33      2       205
                   47225: Ca     33      1       206
                   47226: va     33      2       207
                   47227: em     100     0       208
                   47228: ---    100     2       225
                   47229: ---    28      2       227
                   47230: ---    61      2       232
                   47231: ---    78      2       233
                   47232: ---    100     2       234
                   47233: ---    30      2       235
                   47234: ---    72      0       241
                   47235: ---    28      0       245
                   47236: ---    28      2       248
                   47237: ---    50      0       249
                   47238: ---    78      0       250
                   47239: ---    56      2       251
                   47240: 0707070014231031111006440057030057030000010305420522627503000003000000003343post.src/devpost.add/Giname Gi
                   47241: fontname Goudy-Italic
                   47242: ligatures fi fl 0
                   47243: spacewidth 25
                   47244: charset
                   47245: !      33      2       33
                   47246: "      44      2       34
                   47247: dq     "
                   47248: #      61      2       35
                   47249: $      50      2       36
                   47250: %      83      2       37
                   47251: &      83      2       38
                   47252: '      28      2       39
                   47253: (      39      3       40
                   47254: )      39      3       41
                   47255: *      50      2       42
                   47256: +      61      0       43
                   47257: ,      33      1       44
                   47258: hy     33      0       45
                   47259: -      "
                   47260: .      33      0       46
                   47261: /      28      2       47
                   47262: 0      50      2       48
                   47263: 1      50      2       49
                   47264: 2      50      2       50
                   47265: 3      50      2       51
                   47266: 4      50      2       52
                   47267: 5      50      2       53
                   47268: 6      50      2       54
                   47269: 7      50      2       55
                   47270: 8      50      2       56
                   47271: 9      50      2       57
                   47272: :      33      0       58
                   47273: ;      33      1       59
                   47274: ---    61      0       60
                   47275: =      61      0       61
                   47276: ---    61      0       62
                   47277: ?      39      2       63
                   47278: @      75      3       64
                   47279: A      72      2       65
                   47280: B      61      2       66
                   47281: C      72      2       67
                   47282: D      72      2       68
                   47283: E      61      2       69
                   47284: F      56      2       70
                   47285: G      78      2       71
                   47286: H      78      2       72
                   47287: I      33      2       73
                   47288: J      33      2       74
                   47289: K      67      2       75
                   47290: L      56      2       76
                   47291: M      89      2       77
                   47292: N      78      2       78
                   47293: O      78      2       79
                   47294: P      56      2       80
                   47295: Q      78      3       81
                   47296: R      61      2       82
                   47297: S      50      2       83
                   47298: T      67      2       84
                   47299: U      78      2       85
                   47300: V      67      2       86
                   47301: W      94      2       87
                   47302: X      67      2       88
                   47303: Y      56      2       89
                   47304: Z      56      2       90
                   47305: [      28      3       91
                   47306: \      61      2       92
                   47307: bs     "
                   47308: ]      28      3       93
                   47309: ---    61      2       94
                   47310: ---    50      1       95
                   47311: `      28      2       96
                   47312: a      44      0       97
                   47313: b      44      2       98
                   47314: c      39      0       99
                   47315: d      44      2       100
                   47316: e      39      0       101
                   47317: f      28      2       102
                   47318: g      39      1       103
                   47319: h      44      2       104
                   47320: i      22      2       105
                   47321: j      22      3       106
                   47322: k      44      2       107
                   47323: l      22      2       108
                   47324: m      72      0       109
                   47325: n      50      0       110
                   47326: o      44      0       111
                   47327: p      44      1       112
                   47328: q      44      1       113
                   47329: r      33      0       114
                   47330: s      33      0       115
                   47331: t      28      2       116
                   47332: u      50      0       117
                   47333: v      44      0       118
                   47334: w      67      0       119
                   47335: x      44      0       120
                   47336: y      44      1       121
                   47337: z      39      0       122
                   47338: {      28      3       123
                   47339: ---    61      3       124
                   47340: }      28      3       125
                   47341: ---    61      0       126
                   47342: ---    33      1       161
                   47343: ct     50      2       162
                   47344: ps     50      2       163
                   47345: fr     17      2       164
                   47346: yn     50      2       165
                   47347: fn     50      3       166
                   47348: sc     50      3       167
                   47349: cr     61      2       168
                   47350: ---    28      2       169
                   47351: ``     44      2       170
                   47352: ---    50      0       171
                   47353: ---    33      0       172
                   47354: ---    33      0       173
                   47355: fi     50      2       174
                   47356: fl     50      2       175
                   47357: en     50      0       177
                   47358: \-     "
                   47359: dg     50      3       178
                   47360: dd     50      3       179
                   47361: ---    33      0       180
                   47362: pg     63      3       182
                   47363: ---    61      0       183
                   47364: ---    28      1       184
                   47365: ---    44      1       185
                   47366: ''     44      2       186
                   47367: ---    50      0       187
                   47368: ---    100     0       188
                   47369: ---    100     2       189
                   47370: ---    39      1       191
                   47371: ga     33      2       193
                   47372: \`     "
                   47373: aa     33      2       194
                   47374: \'     "
                   47375: ^a     33      2       195
                   47376: ^      "
                   47377: ~a     33      2       196
                   47378: ~      "
                   47379: -a     33      2       197
                   47380: Ua     33      2       198
                   47381: .a     33      2       199
                   47382: :a     33      2       200
                   47383: oa     33      2       202
                   47384: ,a     33      1       203
                   47385: "a     33      2       205
                   47386: Ca     33      1       206
                   47387: va     33      2       207
                   47388: em     100     0       208
                   47389: ---    94      2       225
                   47390: ---    50      2       227
                   47391: ---    56      2       232
                   47392: ---    78      2       233
                   47393: ---    94      2       234
                   47394: ---    50      2       235
                   47395: ---    67      0       241
                   47396: ---    22      0       245
                   47397: ---    22      2       248
                   47398: ---    44      0       249
                   47399: ---    72      0       250
                   47400: ---    50      2       251
                   47401: 0707070014231031121006440057030057030000010305440522627503000003000000003347post.src/devpost.add/Grname Gr
                   47402: fontname Goudy-Regular
                   47403: ligatures fi fl 0
                   47404: spacewidth 25
                   47405: charset
                   47406: !      33      2       33
                   47407: "      37      2       34
                   47408: dq     "
                   47409: #      61      2       35
                   47410: $      50      2       36
                   47411: %      83      2       37
                   47412: &      83      2       38
                   47413: '      22      2       39
                   47414: (      39      3       40
                   47415: )      39      3       41
                   47416: *      50      2       42
                   47417: +      61      0       43
                   47418: ,      25      1       44
                   47419: hy     33      0       45
                   47420: -      "
                   47421: .      25      0       46
                   47422: /      28      2       47
                   47423: 0      50      2       48
                   47424: 1      50      2       49
                   47425: 2      50      2       50
                   47426: 3      50      2       51
                   47427: 4      50      2       52
                   47428: 5      50      2       53
                   47429: 6      50      2       54
                   47430: 7      50      2       55
                   47431: 8      50      2       56
                   47432: 9      50      2       57
                   47433: :      25      0       58
                   47434: ;      25      1       59
                   47435: ---    61      0       60
                   47436: =      61      0       61
                   47437: ---    61      0       62
                   47438: ?      33      2       63
                   47439: @      75      3       64
                   47440: A      78      2       65
                   47441: B      61      2       66
                   47442: C      72      2       67
                   47443: D      72      2       68
                   47444: E      56      2       69
                   47445: F      50      2       70
                   47446: G      78      2       71
                   47447: H      78      2       72
                   47448: I      33      2       73
                   47449: J      33      2       74
                   47450: K      67      2       75
                   47451: L      56      2       76
                   47452: M      89      2       77
                   47453: N      78      2       78
                   47454: O      78      2       79
                   47455: P      56      2       80
                   47456: Q      78      3       81
                   47457: R      67      2       82
                   47458: S      56      2       83
                   47459: T      67      2       84
                   47460: U      78      2       85
                   47461: V      72      2       86
                   47462: W      100     2       87
                   47463: X      67      2       88
                   47464: Y      61      2       89
                   47465: Z      56      2       90
                   47466: [      28      3       91
                   47467: \      61      2       92
                   47468: bs     "
                   47469: ]      28      3       93
                   47470: ---    61      2       94
                   47471: ---    50      1       95
                   47472: `      22      2       96
                   47473: a      44      0       97
                   47474: b      50      2       98
                   47475: c      44      0       99
                   47476: d      50      2       100
                   47477: e      44      0       101
                   47478: f      28      2       102
                   47479: g      44      1       103
                   47480: h      56      2       104
                   47481: i      28      2       105
                   47482: j      28      3       106
                   47483: k      50      2       107
                   47484: l      28      2       108
                   47485: m      78      0       109
                   47486: n      56      0       110
                   47487: o      50      0       111
                   47488: p      50      1       112
                   47489: q      50      1       113
                   47490: r      33      0       114
                   47491: s      33      0       115
                   47492: t      33      2       116
                   47493: u      50      0       117
                   47494: v      50      0       118
                   47495: w      67      0       119
                   47496: x      50      0       120
                   47497: y      44      1       121
                   47498: z      33      0       122
                   47499: {      28      3       123
                   47500: ---    61      3       124
                   47501: }      28      3       125
                   47502: ---    61      0       126
                   47503: ---    33      1       161
                   47504: ct     50      2       162
                   47505: ps     50      2       163
                   47506: fr     17      2       164
                   47507: yn     50      2       165
                   47508: fn     50      3       166
                   47509: sc     50      3       167
                   47510: cr     50      2       168
                   47511: ---    22      2       169
                   47512: ``     39      2       170
                   47513: ---    50      0       171
                   47514: ---    33      0       172
                   47515: ---    33      0       173
                   47516: fi     50      2       174
                   47517: fl     50      2       175
                   47518: en     50      0       177
                   47519: \-     "
                   47520: dg     50      3       178
                   47521: dd     50      3       179
                   47522: ---    25      0       180
                   47523: pg     63      3       182
                   47524: ---    61      0       183
                   47525: ---    22      1       184
                   47526: ---    39      1       185
                   47527: ''     39      2       186
                   47528: ---    50      0       187
                   47529: ---    100     0       188
                   47530: ---    100     2       189
                   47531: ---    33      1       191
                   47532: ga     33      2       193
                   47533: \`     "
                   47534: aa     33      2       194
                   47535: \'     "
                   47536: ^a     33      2       195
                   47537: ^      "
                   47538: ~a     33      2       196
                   47539: ~      "
                   47540: -a     33      2       197
                   47541: Ua     33      2       198
                   47542: .a     33      2       199
                   47543: :a     33      2       200
                   47544: oa     33      2       202
                   47545: ,a     33      1       203
                   47546: "a     33      2       205
                   47547: Ca     33      1       206
                   47548: va     33      2       207
                   47549: em     100     0       208
                   47550: ---    100     2       225
                   47551: ---    39      2       227
                   47552: ---    56      2       232
                   47553: ---    78      2       233
                   47554: ---    100     2       234
                   47555: ---    43      2       235
                   47556: ---    72      0       241
                   47557: ---    28      0       245
                   47558: ---    28      2       248
                   47559: ---    50      0       249
                   47560: ---    78      0       250
                   47561: ---    50      2       251
                   47562: 0707070014231031131006440057030057030000010305460522627503000003000000003347post.src/devpost.add/Gxname Gx
                   47563: fontname Goudy-BoldItalic
                   47564: ligatures fi fl 0
                   47565: spacewidth 28
                   47566: charset
                   47567: !      33      2       33
                   47568: "      50      2       34
                   47569: dq     "
                   47570: #      61      2       35
                   47571: $      56      2       36
                   47572: %      83      2       37
                   47573: &      83      2       38
                   47574: '      28      2       39
                   47575: (      39      3       40
                   47576: )      39      3       41
                   47577: *      50      2       42
                   47578: +      61      0       43
                   47579: ,      33      1       44
                   47580: hy     33      0       45
                   47581: -      "
                   47582: .      33      0       46
                   47583: /      28      2       47
                   47584: 0      56      2       48
                   47585: 1      56      2       49
                   47586: 2      56      2       50
                   47587: 3      56      2       51
                   47588: 4      56      2       52
                   47589: 5      56      2       53
                   47590: 6      56      2       54
                   47591: 7      56      2       55
                   47592: 8      56      2       56
                   47593: 9      56      2       57
                   47594: :      33      0       58
                   47595: ;      33      1       59
                   47596: ---    61      0       60
                   47597: =      61      0       61
                   47598: ---    61      0       62
                   47599: ?      39      2       63
                   47600: @      75      3       64
                   47601: A      72      2       65
                   47602: B      67      2       66
                   47603: C      67      2       67
                   47604: D      78      2       68
                   47605: E      67      2       69
                   47606: F      61      2       70
                   47607: G      72      2       71
                   47608: H      78      2       72
                   47609: I      39      2       73
                   47610: J      44      2       74
                   47611: K      72      2       75
                   47612: L      61      2       76
                   47613: M      94      2       77
                   47614: N      78      2       78
                   47615: O      78      2       79
                   47616: P      67      2       80
                   47617: Q      78      3       81
                   47618: R      72      2       82
                   47619: S      50      2       83
                   47620: T      72      2       84
                   47621: U      78      2       85
                   47622: V      67      2       86
                   47623: W      94      2       87
                   47624: X      72      2       88
                   47625: Y      61      2       89
                   47626: Z      61      2       90
                   47627: [      39      3       91
                   47628: \      61      2       92
                   47629: bs     "
                   47630: ]      39      3       93
                   47631: ---    61      2       94
                   47632: ---    50      1       95
                   47633: `      28      2       96
                   47634: a      50      0       97
                   47635: b      50      2       98
                   47636: c      44      0       99
                   47637: d      50      2       100
                   47638: e      44      0       101
                   47639: f      28      2       102
                   47640: g      44      1       103
                   47641: h      56      2       104
                   47642: i      28      2       105
                   47643: j      28      3       106
                   47644: k      50      2       107
                   47645: l      28      2       108
                   47646: m      78      0       109
                   47647: n      56      0       110
                   47648: o      44      0       111
                   47649: p      50      1       112
                   47650: q      50      1       113
                   47651: r      39      0       114
                   47652: s      39      0       115
                   47653: t      33      2       116
                   47654: u      56      0       117
                   47655: v      44      0       118
                   47656: w      72      0       119
                   47657: x      44      0       120
                   47658: y      44      1       121
                   47659: z      39      0       122
                   47660: {      39      3       123
                   47661: ---    61      3       124
                   47662: }      39      3       125
                   47663: ---    61      0       126
                   47664: ---    33      1       161
                   47665: ct     56      2       162
                   47666: ps     56      2       163
                   47667: fr     17      2       164
                   47668: yn     56      2       165
                   47669: fn     56      3       166
                   47670: sc     50      3       167
                   47671: cr     61      2       168
                   47672: ---    28      2       169
                   47673: ``     50      2       170
                   47674: ---    50      0       171
                   47675: ---    33      0       172
                   47676: ---    33      0       173
                   47677: fi     56      2       174
                   47678: fl     56      2       175
                   47679: en     50      0       177
                   47680: \-     "
                   47681: dg     50      3       178
                   47682: dd     50      3       179
                   47683: ---    33      0       180
                   47684: pg     63      3       182
                   47685: ---    61      0       183
                   47686: ---    28      1       184
                   47687: ---    50      1       185
                   47688: ''     50      2       186
                   47689: ---    50      0       187
                   47690: ---    100     0       188
                   47691: ---    100     2       189
                   47692: ---    39      1       191
                   47693: ga     33      2       193
                   47694: \`     "
                   47695: aa     33      2       194
                   47696: \'     "
                   47697: ^a     33      2       195
                   47698: ^      "
                   47699: ~a     33      2       196
                   47700: ~      "
                   47701: -a     33      2       197
                   47702: Ua     33      2       198
                   47703: .a     33      2       199
                   47704: :a     33      2       200
                   47705: oa     33      2       202
                   47706: ,a     33      1       203
                   47707: "a     33      2       205
                   47708: Ca     33      1       206
                   47709: va     33      2       207
                   47710: em     100     0       208
                   47711: ---    89      2       225
                   47712: ---    30      2       227
                   47713: ---    61      2       232
                   47714: ---    78      2       233
                   47715: ---    94      2       234
                   47716: ---    30      2       235
                   47717: ---    72      0       241
                   47718: ---    28      0       245
                   47719: ---    28      2       248
                   47720: ---    44      0       249
                   47721: ---    72      0       250
                   47722: ---    50      2       251
                   47723: 0707070014231031141006440057030057030000010305600522627503000003000000003360post.src/devpost.add/H1name H1
                   47724: fontname Helvetica-Condensed-Light
                   47725: ligatures fi fl 0
                   47726: spacewidth 22
                   47727: charset
                   47728: !      22      2       33
                   47729: "      31      2       34
                   47730: dq     "
                   47731: #      44      2       35
                   47732: $      44      2       36
                   47733: %      78      2       37
                   47734: &      61      2       38
                   47735: '      16      2       39
                   47736: (      28      3       40
                   47737: )      28      3       41
                   47738: *      39      2       42
                   47739: +      44      0       43
                   47740: ,      22      1       44
                   47741: hy     33      0       45
                   47742: -      "
                   47743: .      22      0       46
                   47744: /      28      2       47
                   47745: 0      44      2       48
                   47746: 1      44      2       49
                   47747: 2      44      2       50
                   47748: 3      44      2       51
                   47749: 4      44      2       52
                   47750: 5      44      2       53
                   47751: 6      44      2       54
                   47752: 7      44      2       55
                   47753: 8      44      2       56
                   47754: 9      44      2       57
                   47755: :      22      0       58
                   47756: ;      22      1       59
                   47757: ---    44      0       60
                   47758: =      44      0       61
                   47759: ---    44      0       62
                   47760: ?      39      2       63
                   47761: @      80      3       64
                   47762: A      50      2       65
                   47763: B      50      2       66
                   47764: C      56      2       67
                   47765: D      56      2       68
                   47766: E      44      2       69
                   47767: F      44      2       70
                   47768: G      56      2       71
                   47769: H      56      2       72
                   47770: I      22      2       73
                   47771: J      39      2       74
                   47772: K      50      2       75
                   47773: L      44      2       76
                   47774: M      72      2       77
                   47775: N      56      2       78
                   47776: O      56      2       79
                   47777: P      50      2       80
                   47778: Q      56      3       81
                   47779: R      50      2       82
                   47780: S      50      2       83
                   47781: T      44      2       84
                   47782: U      56      2       85
                   47783: V      50      2       86
                   47784: W      72      2       87
                   47785: X      50      2       88
                   47786: Y      50      2       89
                   47787: Z      44      2       90
                   47788: [      28      3       91
                   47789: \      22      2       92
                   47790: bs     "
                   47791: ]      28      3       93
                   47792: ---    44      2       94
                   47793: ---    50      1       95
                   47794: `      22      2       96
                   47795: a      39      0       97
                   47796: b      44      2       98
                   47797: c      39      0       99
                   47798: d      44      2       100
                   47799: e      39      0       101
                   47800: f      22      2       102
                   47801: g      44      1       103
                   47802: h      44      2       104
                   47803: i      22      2       105
                   47804: j      22      3       106
                   47805: k      39      2       107
                   47806: l      22      2       108
                   47807: m      67      0       109
                   47808: n      44      0       110
                   47809: o      44      0       111
                   47810: p      44      1       112
                   47811: q      44      1       113
                   47812: r      28      0       114
                   47813: s      39      0       115
                   47814: t      22      2       116
                   47815: u      44      0       117
                   47816: v      39      0       118
                   47817: w      56      0       119
                   47818: x      39      0       120
                   47819: y      39      1       121
                   47820: z      33      0       122
                   47821: {      35      3       123
                   47822: ---    22      3       124
                   47823: }      35      3       125
                   47824: ---    44      0       126
                   47825: ---    22      1       161
                   47826: ct     44      2       162
                   47827: ps     44      2       163
                   47828: fr     17      2       164
                   47829: yn     44      2       165
                   47830: fn     44      3       166
                   47831: sc     44      3       167
                   47832: cr     44      2       168
                   47833: ---    20      2       169
                   47834: ``     33      2       170
                   47835: ---    50      0       171
                   47836: ---    33      0       172
                   47837: ---    33      0       173
                   47838: fi     44      2       174
                   47839: fl     44      2       175
                   47840: en     50      0       177
                   47841: \-     "
                   47842: dg     44      3       178
                   47843: dd     44      3       179
                   47844: ---    22      0       180
                   47845: pg     56      3       182
                   47846: ---    61      0       183
                   47847: ---    22      1       184
                   47848: ---    33      1       185
                   47849: ''     33      2       186
                   47850: ---    50      0       187
                   47851: ---    100     0       188
                   47852: ---    100     2       189
                   47853: ---    39      1       191
                   47854: ga     33      2       193
                   47855: \`     "
                   47856: aa     33      2       194
                   47857: \'     "
                   47858: ^a     33      2       195
                   47859: ^      "
                   47860: ~a     33      2       196
                   47861: ~      "
                   47862: -a     33      2       197
                   47863: Ua     33      2       198
                   47864: .a     33      2       199
                   47865: :a     33      2       200
                   47866: oa     33      2       202
                   47867: ,a     33      1       203
                   47868: "a     33      2       205
                   47869: Ca     33      1       206
                   47870: va     33      2       207
                   47871: em     100     0       208
                   47872: ---    72      2       225
                   47873: ---    27      2       227
                   47874: ---    44      2       232
                   47875: ---    56      2       233
                   47876: ---    78      2       234
                   47877: ---    27      2       235
                   47878: ---    61      0       241
                   47879: ---    20      0       245
                   47880: ---    22      2       248
                   47881: ---    44      0       249
                   47882: ---    67      0       250
                   47883: ---    44      2       251
                   47884: 0707070014231031151006440057030057030000010305620522627503000003000000003367post.src/devpost.add/H2name H2
                   47885: fontname Helvetica-Condensed-LightOblique
                   47886: ligatures fi fl 0
                   47887: spacewidth 22
                   47888: charset
                   47889: !      22      2       33
                   47890: "      31      2       34
                   47891: dq     "
                   47892: #      44      2       35
                   47893: $      44      2       36
                   47894: %      78      2       37
                   47895: &      61      2       38
                   47896: '      16      2       39
                   47897: (      28      3       40
                   47898: )      28      3       41
                   47899: *      39      2       42
                   47900: +      44      0       43
                   47901: ,      22      1       44
                   47902: hy     33      0       45
                   47903: -      "
                   47904: .      22      0       46
                   47905: /      28      2       47
                   47906: 0      44      2       48
                   47907: 1      44      2       49
                   47908: 2      44      2       50
                   47909: 3      44      2       51
                   47910: 4      44      2       52
                   47911: 5      44      2       53
                   47912: 6      44      2       54
                   47913: 7      44      2       55
                   47914: 8      44      2       56
                   47915: 9      44      2       57
                   47916: :      22      0       58
                   47917: ;      22      1       59
                   47918: ---    44      0       60
                   47919: =      44      0       61
                   47920: ---    44      0       62
                   47921: ?      39      2       63
                   47922: @      80      3       64
                   47923: A      50      2       65
                   47924: B      50      2       66
                   47925: C      56      2       67
                   47926: D      56      2       68
                   47927: E      44      2       69
                   47928: F      44      2       70
                   47929: G      56      2       71
                   47930: H      56      2       72
                   47931: I      22      2       73
                   47932: J      39      2       74
                   47933: K      50      2       75
                   47934: L      44      2       76
                   47935: M      72      2       77
                   47936: N      56      2       78
                   47937: O      56      2       79
                   47938: P      50      2       80
                   47939: Q      56      3       81
                   47940: R      50      2       82
                   47941: S      50      2       83
                   47942: T      44      2       84
                   47943: U      56      2       85
                   47944: V      50      2       86
                   47945: W      72      2       87
                   47946: X      50      2       88
                   47947: Y      50      2       89
                   47948: Z      44      2       90
                   47949: [      28      3       91
                   47950: \      22      2       92
                   47951: bs     "
                   47952: ]      28      3       93
                   47953: ---    44      2       94
                   47954: ---    50      1       95
                   47955: `      22      2       96
                   47956: a      39      0       97
                   47957: b      44      2       98
                   47958: c      39      0       99
                   47959: d      44      2       100
                   47960: e      39      0       101
                   47961: f      22      2       102
                   47962: g      44      1       103
                   47963: h      44      2       104
                   47964: i      22      2       105
                   47965: j      22      3       106
                   47966: k      39      2       107
                   47967: l      22      2       108
                   47968: m      67      0       109
                   47969: n      44      0       110
                   47970: o      44      0       111
                   47971: p      44      1       112
                   47972: q      44      1       113
                   47973: r      28      0       114
                   47974: s      39      0       115
                   47975: t      22      2       116
                   47976: u      44      0       117
                   47977: v      39      0       118
                   47978: w      56      0       119
                   47979: x      39      0       120
                   47980: y      39      1       121
                   47981: z      33      0       122
                   47982: {      35      3       123
                   47983: ---    22      3       124
                   47984: }      35      3       125
                   47985: ---    44      0       126
                   47986: ---    22      1       161
                   47987: ct     44      2       162
                   47988: ps     44      2       163
                   47989: fr     17      2       164
                   47990: yn     44      2       165
                   47991: fn     44      3       166
                   47992: sc     44      3       167
                   47993: cr     44      2       168
                   47994: ---    20      2       169
                   47995: ``     33      2       170
                   47996: ---    50      0       171
                   47997: ---    33      0       172
                   47998: ---    33      0       173
                   47999: fi     44      2       174
                   48000: fl     44      2       175
                   48001: en     50      0       177
                   48002: \-     "
                   48003: dg     44      3       178
                   48004: dd     44      3       179
                   48005: ---    22      0       180
                   48006: pg     56      3       182
                   48007: ---    61      0       183
                   48008: ---    22      1       184
                   48009: ---    33      1       185
                   48010: ''     33      2       186
                   48011: ---    50      0       187
                   48012: ---    100     0       188
                   48013: ---    100     2       189
                   48014: ---    39      1       191
                   48015: ga     33      2       193
                   48016: \`     "
                   48017: aa     33      2       194
                   48018: \'     "
                   48019: ^a     33      2       195
                   48020: ^      "
                   48021: ~a     33      2       196
                   48022: ~      "
                   48023: -a     33      2       197
                   48024: Ua     33      2       198
                   48025: .a     33      2       199
                   48026: :a     33      2       200
                   48027: oa     33      2       202
                   48028: ,a     33      1       203
                   48029: "a     33      2       205
                   48030: Ca     33      1       206
                   48031: va     33      2       207
                   48032: em     100     0       208
                   48033: ---    72      2       225
                   48034: ---    27      2       227
                   48035: ---    44      2       232
                   48036: ---    56      2       233
                   48037: ---    78      2       234
                   48038: ---    27      2       235
                   48039: ---    61      0       241
                   48040: ---    20      0       245
                   48041: ---    22      2       248
                   48042: ---    44      0       249
                   48043: ---    67      0       250
                   48044: ---    44      2       251
                   48045: 0707070014231031161006440057030057030000010305640522627503000003000000003352post.src/devpost.add/H3name H3
                   48046: fontname Helvetica-Condensed
                   48047: ligatures fi fl 0
                   48048: spacewidth 25
                   48049: charset
                   48050: !      33      2       33
                   48051: "      25      2       34
                   48052: dq     "
                   48053: #      50      2       35
                   48054: $      50      2       36
                   48055: %      83      2       37
                   48056: &      67      2       38
                   48057: '      22      2       39
                   48058: (      33      3       40
                   48059: )      33      3       41
                   48060: *      50      2       42
                   48061: +      50      0       43
                   48062: ,      25      1       44
                   48063: hy     33      0       45
                   48064: -      "
                   48065: .      25      0       46
                   48066: /      28      2       47
                   48067: 0      50      2       48
                   48068: 1      50      2       49
                   48069: 2      50      2       50
                   48070: 3      50      2       51
                   48071: 4      50      2       52
                   48072: 5      50      2       53
                   48073: 6      50      2       54
                   48074: 7      50      2       55
                   48075: 8      50      2       56
                   48076: 9      50      2       57
                   48077: :      25      0       58
                   48078: ;      25      1       59
                   48079: ---    50      0       60
                   48080: =      50      0       61
                   48081: ---    50      0       62
                   48082: ?      50      2       63
                   48083: @      80      3       64
                   48084: A      56      2       65
                   48085: B      56      2       66
                   48086: C      56      2       67
                   48087: D      61      2       68
                   48088: E      50      2       69
                   48089: F      44      2       70
                   48090: G      61      2       71
                   48091: H      61      2       72
                   48092: I      28      2       73
                   48093: J      44      2       74
                   48094: K      56      2       75
                   48095: L      50      2       76
                   48096: M      78      2       77
                   48097: N      61      2       78
                   48098: O      61      2       79
                   48099: P      56      2       80
                   48100: Q      61      3       81
                   48101: R      61      2       82
                   48102: S      56      2       83
                   48103: T      50      2       84
                   48104: U      61      2       85
                   48105: V      56      2       86
                   48106: W      83      2       87
                   48107: X      56      2       88
                   48108: Y      56      2       89
                   48109: Z      50      2       90
                   48110: [      33      3       91
                   48111: \      25      2       92
                   48112: bs     "
                   48113: ]      33      3       93
                   48114: ---    50      2       94
                   48115: ---    50      1       95
                   48116: `      22      2       96
                   48117: a      44      0       97
                   48118: b      50      2       98
                   48119: c      44      0       99
                   48120: d      50      2       100
                   48121: e      44      0       101
                   48122: f      28      2       102
                   48123: g      50      1       103
                   48124: h      50      2       104
                   48125: i      22      2       105
                   48126: j      22      3       106
                   48127: k      44      2       107
                   48128: l      22      2       108
                   48129: m      78      0       109
                   48130: n      50      0       110
                   48131: o      50      0       111
                   48132: p      50      1       112
                   48133: q      50      1       113
                   48134: r      33      0       114
                   48135: s      44      0       115
                   48136: t      28      2       116
                   48137: u      50      0       117
                   48138: v      44      0       118
                   48139: w      67      0       119
                   48140: x      44      0       120
                   48141: y      44      1       121
                   48142: z      39      0       122
                   48143: {      27      3       123
                   48144: ---    25      3       124
                   48145: }      27      3       125
                   48146: ---    48      0       126
                   48147: ---    33      1       161
                   48148: ct     50      2       162
                   48149: ps     50      2       163
                   48150: fr     17      2       164
                   48151: yn     50      2       165
                   48152: fn     50      3       166
                   48153: sc     50      3       167
                   48154: cr     50      2       168
                   48155: ---    25      2       169
                   48156: ``     39      2       170
                   48157: ---    50      0       171
                   48158: ---    28      0       172
                   48159: ---    28      0       173
                   48160: fi     50      2       174
                   48161: fl     50      2       175
                   48162: en     50      0       177
                   48163: \-     "
                   48164: dg     50      3       178
                   48165: dd     50      3       179
                   48166: ---    28      0       180
                   48167: pg     44      3       182
                   48168: ---    33      0       183
                   48169: ---    22      1       184
                   48170: ---    39      1       185
                   48171: ''     39      2       186
                   48172: ---    50      0       187
                   48173: ---    100     0       188
                   48174: ---    111     2       189
                   48175: ---    50      1       191
                   48176: ga     33      2       193
                   48177: \`     "
                   48178: aa     33      2       194
                   48179: \'     "
                   48180: ^a     33      2       195
                   48181: ^      "
                   48182: ~a     33      2       196
                   48183: ~      "
                   48184: -a     33      2       197
                   48185: Ua     33      2       198
                   48186: .a     33      2       199
                   48187: :a     33      2       200
                   48188: oa     33      2       202
                   48189: ,a     33      1       203
                   48190: "a     33      2       205
                   48191: Ca     33      1       206
                   48192: va     33      2       207
                   48193: em     100     0       208
                   48194: ---    83      2       225
                   48195: ---    30      2       227
                   48196: ---    50      2       232
                   48197: ---    61      2       233
                   48198: ---    83      2       234
                   48199: ---    30      2       235
                   48200: ---    67      0       241
                   48201: ---    22      0       245
                   48202: ---    22      2       248
                   48203: ---    50      0       249
                   48204: ---    72      0       250
                   48205: ---    50      2       251
                   48206: 0707070014231031171006440057030057030000010305660522627503000003000000003362post.src/devpost.add/H4name H4
                   48207: fontname Helvetica-Condensed-Oblique
                   48208: ligatures fi fl 0
                   48209: spacewidth 25
                   48210: charset
                   48211: !      33      2       33
                   48212: "      25      2       34
                   48213: dq     "
                   48214: #      50      2       35
                   48215: $      50      2       36
                   48216: %      83      2       37
                   48217: &      67      2       38
                   48218: '      22      2       39
                   48219: (      33      3       40
                   48220: )      33      3       41
                   48221: *      50      2       42
                   48222: +      50      0       43
                   48223: ,      25      1       44
                   48224: hy     33      0       45
                   48225: -      "
                   48226: .      25      0       46
                   48227: /      28      2       47
                   48228: 0      50      2       48
                   48229: 1      50      2       49
                   48230: 2      50      2       50
                   48231: 3      50      2       51
                   48232: 4      50      2       52
                   48233: 5      50      2       53
                   48234: 6      50      2       54
                   48235: 7      50      2       55
                   48236: 8      50      2       56
                   48237: 9      50      2       57
                   48238: :      25      0       58
                   48239: ;      25      1       59
                   48240: ---    50      0       60
                   48241: =      50      0       61
                   48242: ---    50      0       62
                   48243: ?      50      2       63
                   48244: @      80      3       64
                   48245: A      56      2       65
                   48246: B      56      2       66
                   48247: C      56      2       67
                   48248: D      61      2       68
                   48249: E      50      2       69
                   48250: F      44      2       70
                   48251: G      61      2       71
                   48252: H      61      2       72
                   48253: I      28      2       73
                   48254: J      44      2       74
                   48255: K      56      2       75
                   48256: L      50      2       76
                   48257: M      78      2       77
                   48258: N      61      2       78
                   48259: O      61      2       79
                   48260: P      56      2       80
                   48261: Q      61      3       81
                   48262: R      61      2       82
                   48263: S      56      2       83
                   48264: T      50      2       84
                   48265: U      61      2       85
                   48266: V      56      2       86
                   48267: W      83      2       87
                   48268: X      56      2       88
                   48269: Y      56      2       89
                   48270: Z      50      2       90
                   48271: [      33      3       91
                   48272: \      25      2       92
                   48273: bs     "
                   48274: ]      33      3       93
                   48275: ---    50      2       94
                   48276: ---    50      1       95
                   48277: `      22      2       96
                   48278: a      44      0       97
                   48279: b      50      2       98
                   48280: c      44      0       99
                   48281: d      50      2       100
                   48282: e      44      0       101
                   48283: f      28      2       102
                   48284: g      50      1       103
                   48285: h      50      2       104
                   48286: i      22      2       105
                   48287: j      22      3       106
                   48288: k      44      2       107
                   48289: l      22      2       108
                   48290: m      78      0       109
                   48291: n      50      0       110
                   48292: o      50      0       111
                   48293: p      50      1       112
                   48294: q      50      1       113
                   48295: r      33      0       114
                   48296: s      44      0       115
                   48297: t      28      2       116
                   48298: u      50      0       117
                   48299: v      44      0       118
                   48300: w      67      0       119
                   48301: x      44      0       120
                   48302: y      44      1       121
                   48303: z      39      0       122
                   48304: {      27      3       123
                   48305: ---    25      3       124
                   48306: }      27      3       125
                   48307: ---    48      0       126
                   48308: ---    33      1       161
                   48309: ct     50      2       162
                   48310: ps     50      2       163
                   48311: fr     17      2       164
                   48312: yn     50      2       165
                   48313: fn     50      3       166
                   48314: sc     50      3       167
                   48315: cr     50      2       168
                   48316: ---    25      2       169
                   48317: ``     39      2       170
                   48318: ---    50      0       171
                   48319: ---    28      0       172
                   48320: ---    28      0       173
                   48321: fi     50      2       174
                   48322: fl     50      2       175
                   48323: en     50      0       177
                   48324: \-     "
                   48325: dg     50      3       178
                   48326: dd     50      3       179
                   48327: ---    28      0       180
                   48328: pg     44      3       182
                   48329: ---    33      0       183
                   48330: ---    22      1       184
                   48331: ---    39      1       185
                   48332: ''     39      2       186
                   48333: ---    50      0       187
                   48334: ---    100     0       188
                   48335: ---    111     2       189
                   48336: ---    50      1       191
                   48337: ga     33      2       193
                   48338: \`     "
                   48339: aa     33      2       194
                   48340: \'     "
                   48341: ^a     33      2       195
                   48342: ^      "
                   48343: ~a     33      2       196
                   48344: ~      "
                   48345: -a     33      2       197
                   48346: Ua     33      2       198
                   48347: .a     33      2       199
                   48348: :a     33      2       200
                   48349: oa     33      2       202
                   48350: ,a     33      1       203
                   48351: "a     33      2       205
                   48352: Ca     33      1       206
                   48353: va     33      2       207
                   48354: em     100     0       208
                   48355: ---    83      2       225
                   48356: ---    30      2       227
                   48357: ---    50      2       232
                   48358: ---    61      2       233
                   48359: ---    83      2       234
                   48360: ---    30      2       235
                   48361: ---    67      0       241
                   48362: ---    22      0       245
                   48363: ---    22      2       248
                   48364: ---    50      0       249
                   48365: ---    72      0       250
                   48366: ---    50      2       251
                   48367: 0707070014231031201006440057030057030000010306000522627503000003000000003357post.src/devpost.add/H5name H5
                   48368: fontname Helvetica-Condensed-Bold
                   48369: ligatures fi fl 0
                   48370: spacewidth 25
                   48371: charset
                   48372: !      33      2       33
                   48373: "      33      2       34
                   48374: dq     "
                   48375: #      50      2       35
                   48376: $      50      2       36
                   48377: %      83      2       37
                   48378: &      67      2       38
                   48379: '      28      2       39
                   48380: (      33      3       40
                   48381: )      33      3       41
                   48382: *      50      2       42
                   48383: +      50      0       43
                   48384: ,      33      1       44
                   48385: hy     33      0       45
                   48386: -      "
                   48387: .      33      0       46
                   48388: /      28      2       47
                   48389: 0      50      2       48
                   48390: 1      50      2       49
                   48391: 2      50      2       50
                   48392: 3      50      2       51
                   48393: 4      50      2       52
                   48394: 5      50      2       53
                   48395: 6      50      2       54
                   48396: 7      50      2       55
                   48397: 8      50      2       56
                   48398: 9      50      2       57
                   48399: :      28      0       58
                   48400: ;      28      1       59
                   48401: ---    50      0       60
                   48402: =      50      0       61
                   48403: ---    50      0       62
                   48404: ?      50      2       63
                   48405: @      83      3       64
                   48406: A      56      2       65
                   48407: B      56      2       66
                   48408: C      56      2       67
                   48409: D      61      2       68
                   48410: E      50      2       69
                   48411: F      50      2       70
                   48412: G      61      2       71
                   48413: H      61      2       72
                   48414: I      28      2       73
                   48415: J      44      2       74
                   48416: K      56      2       75
                   48417: L      50      2       76
                   48418: M      78      2       77
                   48419: N      61      2       78
                   48420: O      61      2       79
                   48421: P      56      2       80
                   48422: Q      61      3       81
                   48423: R      61      2       82
                   48424: S      56      2       83
                   48425: T      50      2       84
                   48426: U      61      2       85
                   48427: V      56      2       86
                   48428: W      83      2       87
                   48429: X      56      2       88
                   48430: Y      56      2       89
                   48431: Z      50      2       90
                   48432: [      33      3       91
                   48433: \      25      2       92
                   48434: bs     "
                   48435: ]      33      3       93
                   48436: ---    50      2       94
                   48437: ---    50      1       95
                   48438: `      28      2       96
                   48439: a      50      0       97
                   48440: b      50      2       98
                   48441: c      44      0       99
                   48442: d      50      2       100
                   48443: e      50      0       101
                   48444: f      28      2       102
                   48445: g      50      1       103
                   48446: h      50      2       104
                   48447: i      28      2       105
                   48448: j      28      3       106
                   48449: k      44      2       107
                   48450: l      28      2       108
                   48451: m      78      0       109
                   48452: n      50      0       110
                   48453: o      50      0       111
                   48454: p      50      1       112
                   48455: q      50      1       113
                   48456: r      33      0       114
                   48457: s      44      0       115
                   48458: t      28      2       116
                   48459: u      50      0       117
                   48460: v      44      0       118
                   48461: w      67      0       119
                   48462: x      44      0       120
                   48463: y      44      1       121
                   48464: z      39      0       122
                   48465: {      27      3       123
                   48466: ---    25      3       124
                   48467: }      27      3       125
                   48468: ---    50      0       126
                   48469: ---    33      1       161
                   48470: ct     50      2       162
                   48471: ps     50      2       163
                   48472: fr     17      2       164
                   48473: yn     50      2       165
                   48474: fn     50      3       166
                   48475: sc     50      3       167
                   48476: cr     50      2       168
                   48477: ---    25      2       169
                   48478: ``     50      2       170
                   48479: ---    50      0       171
                   48480: ---    28      0       172
                   48481: ---    28      0       173
                   48482: fi     50      2       174
                   48483: fl     50      2       175
                   48484: en     50      0       177
                   48485: \-     "
                   48486: dg     50      3       178
                   48487: dd     50      3       179
                   48488: ---    33      0       180
                   48489: pg     55      3       182
                   48490: ---    42      0       183
                   48491: ---    28      1       184
                   48492: ---    50      1       185
                   48493: ''     50      2       186
                   48494: ---    50      0       187
                   48495: ---    100     0       188
                   48496: ---    111     2       189
                   48497: ---    50      1       191
                   48498: ga     33      2       193
                   48499: \`     "
                   48500: aa     33      2       194
                   48501: \'     "
                   48502: ^a     33      2       195
                   48503: ^      "
                   48504: ~a     33      2       196
                   48505: ~      "
                   48506: -a     33      2       197
                   48507: Ua     33      2       198
                   48508: .a     33      2       199
                   48509: :a     33      2       200
                   48510: oa     33      2       202
                   48511: ,a     33      1       203
                   48512: "a     33      2       205
                   48513: Ca     33      1       206
                   48514: va     33      2       207
                   48515: em     100     0       208
                   48516: ---    78      2       225
                   48517: ---    30      2       227
                   48518: ---    50      2       232
                   48519: ---    61      2       233
                   48520: ---    83      2       234
                   48521: ---    30      2       235
                   48522: ---    72      0       241
                   48523: ---    28      0       245
                   48524: ---    28      2       248
                   48525: ---    50      0       249
                   48526: ---    72      0       250
                   48527: ---    50      2       251
                   48528: 0707070014231031211006440057030057030000010306020522627503000003000000003366post.src/devpost.add/H6name H6
                   48529: fontname Helvetica-Condensed-BoldOblique
                   48530: ligatures fi fl 0
                   48531: spacewidth 25
                   48532: charset
                   48533: !      33      2       33
                   48534: "      33      2       34
                   48535: dq     "
                   48536: #      50      2       35
                   48537: $      50      2       36
                   48538: %      83      2       37
                   48539: &      67      2       38
                   48540: '      28      2       39
                   48541: (      33      3       40
                   48542: )      33      3       41
                   48543: *      50      2       42
                   48544: +      50      0       43
                   48545: ,      33      1       44
                   48546: hy     33      0       45
                   48547: -      "
                   48548: .      33      0       46
                   48549: /      28      2       47
                   48550: 0      50      2       48
                   48551: 1      50      2       49
                   48552: 2      50      2       50
                   48553: 3      50      2       51
                   48554: 4      50      2       52
                   48555: 5      50      2       53
                   48556: 6      50      2       54
                   48557: 7      50      2       55
                   48558: 8      50      2       56
                   48559: 9      50      2       57
                   48560: :      28      0       58
                   48561: ;      28      1       59
                   48562: ---    50      0       60
                   48563: =      50      0       61
                   48564: ---    50      0       62
                   48565: ?      50      2       63
                   48566: @      83      3       64
                   48567: A      56      2       65
                   48568: B      56      2       66
                   48569: C      56      2       67
                   48570: D      61      2       68
                   48571: E      50      2       69
                   48572: F      50      2       70
                   48573: G      61      2       71
                   48574: H      61      2       72
                   48575: I      28      2       73
                   48576: J      44      2       74
                   48577: K      56      2       75
                   48578: L      50      2       76
                   48579: M      78      2       77
                   48580: N      61      2       78
                   48581: O      61      2       79
                   48582: P      56      2       80
                   48583: Q      61      3       81
                   48584: R      61      2       82
                   48585: S      56      2       83
                   48586: T      50      2       84
                   48587: U      61      2       85
                   48588: V      56      2       86
                   48589: W      83      2       87
                   48590: X      56      2       88
                   48591: Y      56      2       89
                   48592: Z      50      2       90
                   48593: [      33      3       91
                   48594: \      25      2       92
                   48595: bs     "
                   48596: ]      33      3       93
                   48597: ---    50      2       94
                   48598: ---    50      1       95
                   48599: `      28      2       96
                   48600: a      50      0       97
                   48601: b      50      2       98
                   48602: c      44      0       99
                   48603: d      50      2       100
                   48604: e      50      0       101
                   48605: f      28      2       102
                   48606: g      50      1       103
                   48607: h      50      2       104
                   48608: i      28      2       105
                   48609: j      28      3       106
                   48610: k      44      2       107
                   48611: l      28      2       108
                   48612: m      78      0       109
                   48613: n      50      0       110
                   48614: o      50      0       111
                   48615: p      50      1       112
                   48616: q      50      1       113
                   48617: r      33      0       114
                   48618: s      44      0       115
                   48619: t      28      2       116
                   48620: u      50      0       117
                   48621: v      44      0       118
                   48622: w      67      0       119
                   48623: x      44      0       120
                   48624: y      44      1       121
                   48625: z      39      0       122
                   48626: {      27      3       123
                   48627: ---    25      3       124
                   48628: }      27      3       125
                   48629: ---    50      0       126
                   48630: ---    33      1       161
                   48631: ct     50      2       162
                   48632: ps     50      2       163
                   48633: fr     17      2       164
                   48634: yn     50      2       165
                   48635: fn     50      3       166
                   48636: sc     50      3       167
                   48637: cr     50      2       168
                   48638: ---    25      2       169
                   48639: ``     50      2       170
                   48640: ---    50      0       171
                   48641: ---    28      0       172
                   48642: ---    28      0       173
                   48643: fi     50      2       174
                   48644: fl     50      2       175
                   48645: en     50      0       177
                   48646: \-     "
                   48647: dg     50      3       178
                   48648: dd     50      3       179
                   48649: ---    33      0       180
                   48650: pg     55      3       182
                   48651: ---    42      0       183
                   48652: ---    28      1       184
                   48653: ---    50      1       185
                   48654: ''     50      2       186
                   48655: ---    50      0       187
                   48656: ---    100     0       188
                   48657: ---    111     2       189
                   48658: ---    50      1       191
                   48659: ga     33      2       193
                   48660: \`     "
                   48661: aa     33      2       194
                   48662: \'     "
                   48663: ^a     33      2       195
                   48664: ^      "
                   48665: ~a     33      2       196
                   48666: ~      "
                   48667: -a     33      2       197
                   48668: Ua     33      2       198
                   48669: .a     33      2       199
                   48670: :a     33      2       200
                   48671: oa     33      2       202
                   48672: ,a     33      1       203
                   48673: "a     33      2       205
                   48674: Ca     33      1       206
                   48675: va     33      2       207
                   48676: em     100     0       208
                   48677: ---    78      2       225
                   48678: ---    30      2       227
                   48679: ---    50      2       232
                   48680: ---    61      2       233
                   48681: ---    83      2       234
                   48682: ---    30      2       235
                   48683: ---    72      0       241
                   48684: ---    28      0       245
                   48685: ---    28      2       248
                   48686: ---    50      0       249
                   48687: ---    72      0       250
                   48688: ---    50      2       251
                   48689: 0707070014231031221006440057030057030000010306040522627503000003000000003360post.src/devpost.add/H7name H7
                   48690: fontname Helvetica-Condensed-Black
                   48691: ligatures fi fl 0
                   48692: spacewidth 25
                   48693: charset
                   48694: !      33      2       33
                   48695: "      33      2       34
                   48696: dq     "
                   48697: #      50      2       35
                   48698: $      50      2       36
                   48699: %      83      2       37
                   48700: &      67      2       38
                   48701: '      28      2       39
                   48702: (      28      3       40
                   48703: )      28      3       41
                   48704: *      50      2       42
                   48705: +      50      0       43
                   48706: ,      33      1       44
                   48707: hy     33      0       45
                   48708: -      "
                   48709: .      33      0       46
                   48710: /      28      2       47
                   48711: 0      50      2       48
                   48712: 1      50      2       49
                   48713: 2      50      2       50
                   48714: 3      50      2       51
                   48715: 4      50      2       52
                   48716: 5      50      2       53
                   48717: 6      50      2       54
                   48718: 7      50      2       55
                   48719: 8      50      2       56
                   48720: 9      50      2       57
                   48721: :      28      0       58
                   48722: ;      28      1       59
                   48723: ---    50      0       60
                   48724: =      50      0       61
                   48725: ---    50      0       62
                   48726: ?      50      2       63
                   48727: @      83      3       64
                   48728: A      56      2       65
                   48729: B      56      2       66
                   48730: C      56      2       67
                   48731: D      56      2       68
                   48732: E      50      2       69
                   48733: F      50      2       70
                   48734: G      56      2       71
                   48735: H      56      2       72
                   48736: I      28      2       73
                   48737: J      44      2       74
                   48738: K      56      2       75
                   48739: L      44      2       76
                   48740: M      78      2       77
                   48741: N      56      2       78
                   48742: O      56      2       79
                   48743: P      56      2       80
                   48744: Q      56      3       81
                   48745: R      56      2       82
                   48746: S      50      2       83
                   48747: T      50      2       84
                   48748: U      56      2       85
                   48749: V      56      2       86
                   48750: W      78      2       87
                   48751: X      56      2       88
                   48752: Y      56      2       89
                   48753: Z      44      2       90
                   48754: [      28      3       91
                   48755: \      25      2       92
                   48756: bs     "
                   48757: ]      28      3       93
                   48758: ---    50      2       94
                   48759: ---    50      1       95
                   48760: `      28      2       96
                   48761: a      50      0       97
                   48762: b      50      2       98
                   48763: c      50      0       99
                   48764: d      50      2       100
                   48765: e      50      0       101
                   48766: f      33      2       102
                   48767: g      50      1       103
                   48768: h      50      2       104
                   48769: i      28      2       105
                   48770: j      28      3       106
                   48771: k      50      2       107
                   48772: l      28      2       108
                   48773: m      72      0       109
                   48774: n      50      0       110
                   48775: o      50      0       111
                   48776: p      50      1       112
                   48777: q      50      1       113
                   48778: r      33      0       114
                   48779: s      44      0       115
                   48780: t      33      2       116
                   48781: u      50      0       117
                   48782: v      44      0       118
                   48783: w      67      0       119
                   48784: x      44      0       120
                   48785: y      44      1       121
                   48786: z      39      0       122
                   48787: {      27      3       123
                   48788: ---    25      3       124
                   48789: }      27      3       125
                   48790: ---    50      0       126
                   48791: ---    33      1       161
                   48792: ct     50      2       162
                   48793: ps     50      2       163
                   48794: fr     17      2       164
                   48795: yn     50      2       165
                   48796: fn     50      3       166
                   48797: sc     50      3       167
                   48798: cr     50      2       168
                   48799: ---    25      2       169
                   48800: ``     50      2       170
                   48801: ---    50      0       171
                   48802: ---    28      0       172
                   48803: ---    28      0       173
                   48804: fi     56      2       174
                   48805: fl     56      2       175
                   48806: en     50      0       177
                   48807: \-     "
                   48808: dg     50      3       178
                   48809: dd     50      3       179
                   48810: ---    33      0       180
                   48811: pg     55      3       182
                   48812: ---    42      0       183
                   48813: ---    28      1       184
                   48814: ---    50      1       185
                   48815: ''     50      2       186
                   48816: ---    50      0       187
                   48817: ---    100     0       188
                   48818: ---    111     2       189
                   48819: ---    50      1       191
                   48820: ga     33      2       193
                   48821: \`     "
                   48822: aa     33      2       194
                   48823: \'     "
                   48824: ^a     33      2       195
                   48825: ^      "
                   48826: ~a     33      2       196
                   48827: ~      "
                   48828: -a     33      2       197
                   48829: Ua     33      2       198
                   48830: .a     33      2       199
                   48831: :a     33      2       200
                   48832: oa     33      2       202
                   48833: ,a     33      1       203
                   48834: "a     33      2       205
                   48835: Ca     33      1       206
                   48836: va     33      2       207
                   48837: em     100     0       208
                   48838: ---    78      2       225
                   48839: ---    30      2       227
                   48840: ---    44      2       232
                   48841: ---    56      2       233
                   48842: ---    78      2       234
                   48843: ---    30      2       235
                   48844: ---    72      0       241
                   48845: ---    28      0       245
                   48846: ---    28      2       248
                   48847: ---    50      0       249
                   48848: ---    72      0       250
                   48849: ---    50      2       251
                   48850: 0707070014231031231006440057030057030000010306060522627503000003000000003367post.src/devpost.add/H8name H8
                   48851: fontname Helvetica-Condensed-BlackOblique
                   48852: ligatures fi fl 0
                   48853: spacewidth 25
                   48854: charset
                   48855: !      33      2       33
                   48856: "      33      2       34
                   48857: dq     "
                   48858: #      50      2       35
                   48859: $      50      2       36
                   48860: %      83      2       37
                   48861: &      67      2       38
                   48862: '      28      2       39
                   48863: (      28      3       40
                   48864: )      28      3       41
                   48865: *      50      2       42
                   48866: +      50      0       43
                   48867: ,      33      1       44
                   48868: hy     33      0       45
                   48869: -      "
                   48870: .      33      0       46
                   48871: /      28      2       47
                   48872: 0      50      2       48
                   48873: 1      50      2       49
                   48874: 2      50      2       50
                   48875: 3      50      2       51
                   48876: 4      50      2       52
                   48877: 5      50      2       53
                   48878: 6      50      2       54
                   48879: 7      50      2       55
                   48880: 8      50      2       56
                   48881: 9      50      2       57
                   48882: :      28      0       58
                   48883: ;      28      1       59
                   48884: ---    50      0       60
                   48885: =      50      0       61
                   48886: ---    50      0       62
                   48887: ?      50      2       63
                   48888: @      83      3       64
                   48889: A      56      2       65
                   48890: B      56      2       66
                   48891: C      56      2       67
                   48892: D      56      2       68
                   48893: E      50      2       69
                   48894: F      50      2       70
                   48895: G      56      2       71
                   48896: H      56      2       72
                   48897: I      28      2       73
                   48898: J      44      2       74
                   48899: K      56      2       75
                   48900: L      44      2       76
                   48901: M      78      2       77
                   48902: N      56      2       78
                   48903: O      56      2       79
                   48904: P      56      2       80
                   48905: Q      56      3       81
                   48906: R      56      2       82
                   48907: S      50      2       83
                   48908: T      50      2       84
                   48909: U      56      2       85
                   48910: V      56      2       86
                   48911: W      78      2       87
                   48912: X      56      2       88
                   48913: Y      56      2       89
                   48914: Z      44      2       90
                   48915: [      28      3       91
                   48916: \      25      2       92
                   48917: bs     "
                   48918: ]      28      3       93
                   48919: ---    50      2       94
                   48920: ---    50      1       95
                   48921: `      28      2       96
                   48922: a      50      0       97
                   48923: b      50      2       98
                   48924: c      50      0       99
                   48925: d      50      2       100
                   48926: e      50      0       101
                   48927: f      33      2       102
                   48928: g      50      1       103
                   48929: h      50      2       104
                   48930: i      28      2       105
                   48931: j      28      3       106
                   48932: k      50      2       107
                   48933: l      28      2       108
                   48934: m      72      0       109
                   48935: n      50      0       110
                   48936: o      50      0       111
                   48937: p      50      1       112
                   48938: q      50      1       113
                   48939: r      33      0       114
                   48940: s      44      0       115
                   48941: t      33      2       116
                   48942: u      50      0       117
                   48943: v      44      0       118
                   48944: w      67      0       119
                   48945: x      44      0       120
                   48946: y      44      1       121
                   48947: z      39      0       122
                   48948: {      27      3       123
                   48949: ---    25      3       124
                   48950: }      27      3       125
                   48951: ---    50      0       126
                   48952: ---    33      1       161
                   48953: ct     50      2       162
                   48954: ps     50      2       163
                   48955: fr     17      2       164
                   48956: yn     50      2       165
                   48957: fn     50      3       166
                   48958: sc     50      3       167
                   48959: cr     50      2       168
                   48960: ---    25      2       169
                   48961: ``     50      2       170
                   48962: ---    50      0       171
                   48963: ---    28      0       172
                   48964: ---    28      0       173
                   48965: fi     56      2       174
                   48966: fl     56      2       175
                   48967: en     50      0       177
                   48968: \-     "
                   48969: dg     50      3       178
                   48970: dd     50      3       179
                   48971: ---    33      0       180
                   48972: pg     55      3       182
                   48973: ---    42      0       183
                   48974: ---    28      1       184
                   48975: ---    50      1       185
                   48976: ''     50      2       186
                   48977: ---    50      0       187
                   48978: ---    100     0       188
                   48979: ---    111     2       189
                   48980: ---    50      1       191
                   48981: ga     33      2       193
                   48982: \`     "
                   48983: aa     33      2       194
                   48984: \'     "
                   48985: ^a     33      2       195
                   48986: ^      "
                   48987: ~a     33      2       196
                   48988: ~      "
                   48989: -a     33      2       197
                   48990: Ua     33      2       198
                   48991: .a     33      2       199
                   48992: :a     33      2       200
                   48993: oa     33      2       202
                   48994: ,a     33      1       203
                   48995: "a     33      2       205
                   48996: Ca     33      1       206
                   48997: va     33      2       207
                   48998: em     100     0       208
                   48999: ---    78      2       225
                   49000: ---    30      2       227
                   49001: ---    44      2       232
                   49002: ---    56      2       233
                   49003: ---    78      2       234
                   49004: ---    30      2       235
                   49005: ---    72      0       241
                   49006: ---    28      0       245
                   49007: ---    28      2       248
                   49008: ---    50      0       249
                   49009: ---    72      0       250
                   49010: ---    50      2       251
                   49011: 0707070014231031241006440057030057030000010306200522627503000003000000003355post.src/devpost.add/HCname HC
                   49012: fontname Helvetica-Black
                   49013: ligatures fi fl 0
                   49014: spacewidth 33
                   49015: charset
                   49016: !      33      2       33
                   49017: "      50      2       34
                   49018: dq     "
                   49019: #      66      2       35
                   49020: $      67      2       36
                   49021: %      100     2       37
                   49022: &      89      2       38
                   49023: '      28      2       39
                   49024: (      39      3       40
                   49025: )      39      3       41
                   49026: *      56      2       42
                   49027: +      66      0       43
                   49028: ,      33      1       44
                   49029: hy     33      0       45
                   49030: -      "
                   49031: .      33      0       46
                   49032: /      28      2       47
                   49033: 0      67      2       48
                   49034: 1      67      2       49
                   49035: 2      67      2       50
                   49036: 3      67      2       51
                   49037: 4      67      2       52
                   49038: 5      67      2       53
                   49039: 6      67      2       54
                   49040: 7      67      2       55
                   49041: 8      67      2       56
                   49042: 9      67      2       57
                   49043: :      33      0       58
                   49044: ;      33      1       59
                   49045: ---    66      0       60
                   49046: =      66      0       61
                   49047: ---    66      0       62
                   49048: ?      61      2       63
                   49049: @      74      3       64
                   49050: A      78      2       65
                   49051: B      78      2       66
                   49052: C      78      2       67
                   49053: D      78      2       68
                   49054: E      72      2       69
                   49055: F      67      2       70
                   49056: G      83      2       71
                   49057: H      83      2       72
                   49058: I      39      2       73
                   49059: J      67      2       74
                   49060: K      83      2       75
                   49061: L      67      2       76
                   49062: M      94      2       77
                   49063: N      83      2       78
                   49064: O      83      2       79
                   49065: P      72      2       80
                   49066: Q      83      3       81
                   49067: R      78      2       82
                   49068: S      72      2       83
                   49069: T      72      2       84
                   49070: U      83      2       85
                   49071: V      78      2       86
                   49072: W      100     2       87
                   49073: X      78      2       88
                   49074: Y      78      2       89
                   49075: Z      72      2       90
                   49076: [      39      3       91
                   49077: \      28      2       92
                   49078: bs     "
                   49079: ]      39      3       93
                   49080: ---    61      2       94
                   49081: ---    50      1       95
                   49082: `      28      2       96
                   49083: a      67      0       97
                   49084: b      67      2       98
                   49085: c      67      0       99
                   49086: d      67      2       100
                   49087: e      67      0       101
                   49088: f      38      2       102
                   49089: g      67      1       103
                   49090: h      67      2       104
                   49091: i      33      2       105
                   49092: j      33      3       106
                   49093: k      67      2       107
                   49094: l      33      2       108
                   49095: m      100     0       109
                   49096: n      67      0       110
                   49097: o      67      0       111
                   49098: p      67      1       112
                   49099: q      67      1       113
                   49100: r      44      0       114
                   49101: s      61      0       115
                   49102: t      44      2       116
                   49103: u      67      0       117
                   49104: v      61      0       118
                   49105: w      94      0       119
                   49106: x      67      0       120
                   49107: y      61      1       121
                   49108: z      56      0       122
                   49109: {      39      3       123
                   49110: ---    28      3       124
                   49111: }      39      3       125
                   49112: ---    66      0       126
                   49113: ---    33      1       161
                   49114: ct     67      2       162
                   49115: ps     67      2       163
                   49116: fr     17      2       164
                   49117: yn     67      2       165
                   49118: fn     67      3       166
                   49119: sc     67      3       167
                   49120: cr     66      2       168
                   49121: ---    28      2       169
                   49122: ``     50      2       170
                   49123: ---    67      0       171
                   49124: ---    33      0       172
                   49125: ---    33      0       173
                   49126: fi     67      2       174
                   49127: fl     67      2       175
                   49128: en     50      0       177
                   49129: \-     "
                   49130: dg     67      3       178
                   49131: dd     67      3       179
                   49132: ---    33      0       180
                   49133: pg     85      3       182
                   49134: ---    50      0       183
                   49135: ---    28      1       184
                   49136: ---    50      1       185
                   49137: ''     50      2       186
                   49138: ---    67      0       187
                   49139: ---    100     0       188
                   49140: ---    100     2       189
                   49141: ---    61      1       191
                   49142: ga     33      2       193
                   49143: \`     "
                   49144: aa     33      2       194
                   49145: \'     "
                   49146: ^a     33      2       195
                   49147: ^      "
                   49148: ~a     33      2       196
                   49149: ~      "
                   49150: -a     33      2       197
                   49151: Ua     33      2       198
                   49152: .a     33      2       199
                   49153: :a     33      2       200
                   49154: oa     33      2       202
                   49155: ,a     33      1       203
                   49156: "a     33      2       205
                   49157: Ca     33      1       206
                   49158: va     33      2       207
                   49159: em     100     0       208
                   49160: ---    100     2       225
                   49161: ---    40      2       227
                   49162: ---    67      2       232
                   49163: ---    83      2       233
                   49164: ---    100     2       234
                   49165: ---    40      2       235
                   49166: ---    100     0       241
                   49167: ---    33      0       245
                   49168: ---    33      2       248
                   49169: ---    67      0       249
                   49170: ---    100     0       250
                   49171: ---    67      2       251
                   49172: 0707070014231031251006440057030057030000010306220522627503000003000000003357post.src/devpost.add/HKname HK
                   49173: fontname Helvetica-LightOblique
                   49174: ligatures fi fl 0
                   49175: spacewidth 28
                   49176: charset
                   49177: !      33      2       33
                   49178: "      28      2       34
                   49179: dq     "
                   49180: #      66      2       35
                   49181: $      56      2       36
                   49182: %      89      2       37
                   49183: &      67      2       38
                   49184: '      22      2       39
                   49185: (      33      3       40
                   49186: )      33      3       41
                   49187: *      39      2       42
                   49188: +      66      0       43
                   49189: ,      28      1       44
                   49190: hy     33      0       45
                   49191: -      "
                   49192: .      28      0       46
                   49193: /      28      2       47
                   49194: 0      56      2       48
                   49195: 1      56      2       49
                   49196: 2      56      2       50
                   49197: 3      56      2       51
                   49198: 4      56      2       52
                   49199: 5      56      2       53
                   49200: 6      56      2       54
                   49201: 7      56      2       55
                   49202: 8      56      2       56
                   49203: 9      56      2       57
                   49204: :      28      0       58
                   49205: ;      28      1       59
                   49206: ---    66      0       60
                   49207: =      66      0       61
                   49208: ---    66      0       62
                   49209: ?      50      2       63
                   49210: @      80      3       64
                   49211: A      67      2       65
                   49212: B      67      2       66
                   49213: C      72      2       67
                   49214: D      72      2       68
                   49215: E      61      2       69
                   49216: F      56      2       70
                   49217: G      78      2       71
                   49218: H      72      2       72
                   49219: I      28      2       73
                   49220: J      50      2       74
                   49221: K      67      2       75
                   49222: L      56      2       76
                   49223: M      83      2       77
                   49224: N      72      2       78
                   49225: O      78      2       79
                   49226: P      61      2       80
                   49227: Q      78      3       81
                   49228: R      67      2       82
                   49229: S      61      2       83
                   49230: T      56      2       84
                   49231: U      72      2       85
                   49232: V      61      2       86
                   49233: W      89      2       87
                   49234: X      61      2       88
                   49235: Y      61      2       89
                   49236: Z      61      2       90
                   49237: [      33      3       91
                   49238: \      28      2       92
                   49239: bs     "
                   49240: ]      33      3       93
                   49241: ---    66      2       94
                   49242: ---    50      1       95
                   49243: `      22      2       96
                   49244: a      56      0       97
                   49245: b      61      2       98
                   49246: c      56      0       99
                   49247: d      61      2       100
                   49248: e      56      0       101
                   49249: f      28      2       102
                   49250: g      61      1       103
                   49251: h      56      2       104
                   49252: i      22      2       105
                   49253: j      22      3       106
                   49254: k      50      2       107
                   49255: l      22      2       108
                   49256: m      83      0       109
                   49257: n      56      0       110
                   49258: o      56      0       111
                   49259: p      61      1       112
                   49260: q      61      1       113
                   49261: r      33      0       114
                   49262: s      50      0       115
                   49263: t      28      2       116
                   49264: u      56      0       117
                   49265: v      50      0       118
                   49266: w      72      0       119
                   49267: x      50      0       120
                   49268: y      50      1       121
                   49269: z      50      0       122
                   49270: {      33      3       123
                   49271: ---    22      3       124
                   49272: }      33      3       125
                   49273: ---    66      0       126
                   49274: ---    33      1       161
                   49275: ct     56      2       162
                   49276: ps     56      2       163
                   49277: fr     17      2       164
                   49278: yn     56      2       165
                   49279: fn     56      3       166
                   49280: sc     56      3       167
                   49281: cr     56      2       168
                   49282: ---    22      2       169
                   49283: ``     39      2       170
                   49284: ---    56      0       171
                   49285: ---    39      0       172
                   49286: ---    39      0       173
                   49287: fi     50      2       174
                   49288: fl     50      2       175
                   49289: en     50      0       177
                   49290: \-     "
                   49291: dg     56      3       178
                   49292: dd     56      3       179
                   49293: ---    28      0       180
                   49294: pg     65      3       182
                   49295: ---    50      0       183
                   49296: ---    22      1       184
                   49297: ---    39      1       185
                   49298: ''     39      2       186
                   49299: ---    56      0       187
                   49300: ---    100     0       188
                   49301: ---    100     2       189
                   49302: ---    50      1       191
                   49303: ga     33      2       193
                   49304: \`     "
                   49305: aa     33      2       194
                   49306: \'     "
                   49307: ^a     33      2       195
                   49308: ^      "
                   49309: ~a     33      2       196
                   49310: ~      "
                   49311: -a     33      2       197
                   49312: Ua     33      2       198
                   49313: .a     33      2       199
                   49314: :a     33      2       200
                   49315: oa     33      2       202
                   49316: ,a     33      1       203
                   49317: "a     33      2       205
                   49318: Ca     33      1       206
                   49319: va     33      2       207
                   49320: em     100     0       208
                   49321: ---    100     2       225
                   49322: ---    33      2       227
                   49323: ---    56      2       232
                   49324: ---    78      2       233
                   49325: ---    100     2       234
                   49326: ---    33      2       235
                   49327: ---    89      0       241
                   49328: ---    22      0       245
                   49329: ---    22      2       248
                   49330: ---    56      0       249
                   49331: ---    94      0       250
                   49332: ---    50      2       251
                   49333: 0707070014231031261006440057030057030000010306240522627503000003000000003350post.src/devpost.add/HLname HL
                   49334: fontname Helvetica-Light
                   49335: ligatures fi fl 0
                   49336: spacewidth 28
                   49337: charset
                   49338: !      33      2       33
                   49339: "      28      2       34
                   49340: dq     "
                   49341: #      66      2       35
                   49342: $      56      2       36
                   49343: %      89      2       37
                   49344: &      67      2       38
                   49345: '      22      2       39
                   49346: (      33      3       40
                   49347: )      33      3       41
                   49348: *      39      2       42
                   49349: +      66      0       43
                   49350: ,      28      1       44
                   49351: hy     33      0       45
                   49352: -      "
                   49353: .      28      0       46
                   49354: /      28      2       47
                   49355: 0      56      2       48
                   49356: 1      56      2       49
                   49357: 2      56      2       50
                   49358: 3      56      2       51
                   49359: 4      56      2       52
                   49360: 5      56      2       53
                   49361: 6      56      2       54
                   49362: 7      56      2       55
                   49363: 8      56      2       56
                   49364: 9      56      2       57
                   49365: :      28      0       58
                   49366: ;      28      1       59
                   49367: ---    66      0       60
                   49368: =      66      0       61
                   49369: ---    66      0       62
                   49370: ?      50      2       63
                   49371: @      80      3       64
                   49372: A      67      2       65
                   49373: B      67      2       66
                   49374: C      72      2       67
                   49375: D      72      2       68
                   49376: E      61      2       69
                   49377: F      56      2       70
                   49378: G      78      2       71
                   49379: H      72      2       72
                   49380: I      28      2       73
                   49381: J      50      2       74
                   49382: K      67      2       75
                   49383: L      56      2       76
                   49384: M      83      2       77
                   49385: N      72      2       78
                   49386: O      78      2       79
                   49387: P      61      2       80
                   49388: Q      78      3       81
                   49389: R      67      2       82
                   49390: S      61      2       83
                   49391: T      56      2       84
                   49392: U      72      2       85
                   49393: V      61      2       86
                   49394: W      89      2       87
                   49395: X      61      2       88
                   49396: Y      61      2       89
                   49397: Z      61      2       90
                   49398: [      33      3       91
                   49399: \      28      2       92
                   49400: bs     "
                   49401: ]      33      3       93
                   49402: ---    66      2       94
                   49403: ---    50      1       95
                   49404: `      22      2       96
                   49405: a      56      0       97
                   49406: b      61      2       98
                   49407: c      56      0       99
                   49408: d      61      2       100
                   49409: e      56      0       101
                   49410: f      28      2       102
                   49411: g      61      1       103
                   49412: h      56      2       104
                   49413: i      22      2       105
                   49414: j      22      3       106
                   49415: k      50      2       107
                   49416: l      22      2       108
                   49417: m      83      0       109
                   49418: n      56      0       110
                   49419: o      56      0       111
                   49420: p      61      1       112
                   49421: q      61      1       113
                   49422: r      33      0       114
                   49423: s      50      0       115
                   49424: t      28      2       116
                   49425: u      56      0       117
                   49426: v      50      0       118
                   49427: w      72      0       119
                   49428: x      50      0       120
                   49429: y      50      1       121
                   49430: z      50      0       122
                   49431: {      33      3       123
                   49432: ---    22      3       124
                   49433: }      33      3       125
                   49434: ---    66      0       126
                   49435: ---    33      1       161
                   49436: ct     56      2       162
                   49437: ps     56      2       163
                   49438: fr     17      2       164
                   49439: yn     56      2       165
                   49440: fn     56      3       166
                   49441: sc     56      3       167
                   49442: cr     56      2       168
                   49443: ---    22      2       169
                   49444: ``     39      2       170
                   49445: ---    56      0       171
                   49446: ---    39      0       172
                   49447: ---    39      0       173
                   49448: fi     50      2       174
                   49449: fl     50      2       175
                   49450: en     50      0       177
                   49451: \-     "
                   49452: dg     56      3       178
                   49453: dd     56      3       179
                   49454: ---    28      0       180
                   49455: pg     65      3       182
                   49456: ---    50      0       183
                   49457: ---    22      1       184
                   49458: ---    39      1       185
                   49459: ''     39      2       186
                   49460: ---    56      0       187
                   49461: ---    100     0       188
                   49462: ---    100     2       189
                   49463: ---    50      1       191
                   49464: ga     33      2       193
                   49465: \`     "
                   49466: aa     33      2       194
                   49467: \'     "
                   49468: ^a     33      2       195
                   49469: ^      "
                   49470: ~a     33      2       196
                   49471: ~      "
                   49472: -a     33      2       197
                   49473: Ua     33      2       198
                   49474: .a     33      2       199
                   49475: :a     33      2       200
                   49476: oa     33      2       202
                   49477: ,a     33      1       203
                   49478: "a     33      2       205
                   49479: Ca     33      1       206
                   49480: va     33      2       207
                   49481: em     100     0       208
                   49482: ---    100     2       225
                   49483: ---    33      2       227
                   49484: ---    56      2       232
                   49485: ---    78      2       233
                   49486: ---    100     2       234
                   49487: ---    33      2       235
                   49488: ---    89      0       241
                   49489: ---    22      0       245
                   49490: ---    22      2       248
                   49491: ---    56      0       249
                   49492: ---    94      0       250
                   49493: ---    50      2       251
                   49494: 0707070014231031271006440057030057030000010306260522627503000003000000003364post.src/devpost.add/HYname HY
                   49495: fontname Helvetica-BlackOblique
                   49496: ligatures fi fl 0
                   49497: spacewidth 33
                   49498: charset
                   49499: !      33      2       33
                   49500: "      50      2       34
                   49501: dq     "
                   49502: #      66      2       35
                   49503: $      67      2       36
                   49504: %      100     2       37
                   49505: &      89      2       38
                   49506: '      28      2       39
                   49507: (      39      3       40
                   49508: )      39      3       41
                   49509: *      56      2       42
                   49510: +      66      0       43
                   49511: ,      33      1       44
                   49512: hy     33      0       45
                   49513: -      "
                   49514: .      33      0       46
                   49515: /      28      2       47
                   49516: 0      67      2       48
                   49517: 1      67      2       49
                   49518: 2      67      2       50
                   49519: 3      67      2       51
                   49520: 4      67      2       52
                   49521: 5      67      2       53
                   49522: 6      67      2       54
                   49523: 7      67      2       55
                   49524: 8      67      2       56
                   49525: 9      67      2       57
                   49526: :      33      0       58
                   49527: ;      33      1       59
                   49528: ---    66      0       60
                   49529: =      66      0       61
                   49530: ---    66      0       62
                   49531: ?      61      2       63
                   49532: @      74      3       64
                   49533: A      78      2       65
                   49534: B      78      2       66
                   49535: C      78      2       67
                   49536: D      78      2       68
                   49537: E      72      2       69
                   49538: F      67      2       70
                   49539: G      83      2       71
                   49540: H      83      2       72
                   49541: I      39      2       73
                   49542: J      67      2       74
                   49543: K      83      2       75
                   49544: L      67      2       76
                   49545: M      94      2       77
                   49546: N      83      2       78
                   49547: O      83      2       79
                   49548: P      72      2       80
                   49549: Q      83      3       81
                   49550: R      78      2       82
                   49551: S      72      2       83
                   49552: T      72      2       84
                   49553: U      83      2       85
                   49554: V      78      2       86
                   49555: W      100     2       87
                   49556: X      78      2       88
                   49557: Y      78      2       89
                   49558: Z      72      2       90
                   49559: [      39      3       91
                   49560: \      28      2       92
                   49561: bs     "
                   49562: ]      39      3       93
                   49563: ---    61      2       94
                   49564: ---    50      1       95
                   49565: `      28      2       96
                   49566: a      67      0       97
                   49567: b      67      2       98
                   49568: c      67      0       99
                   49569: d      67      2       100
                   49570: e      67      0       101
                   49571: f      38      2       102
                   49572: g      67      1       103
                   49573: h      67      2       104
                   49574: i      33      2       105
                   49575: j      33      3       106
                   49576: k      67      2       107
                   49577: l      33      2       108
                   49578: m      100     0       109
                   49579: n      67      0       110
                   49580: o      67      0       111
                   49581: p      67      1       112
                   49582: q      67      1       113
                   49583: r      44      0       114
                   49584: s      61      0       115
                   49585: t      44      2       116
                   49586: u      67      0       117
                   49587: v      61      0       118
                   49588: w      94      0       119
                   49589: x      67      0       120
                   49590: y      61      1       121
                   49591: z      56      0       122
                   49592: {      39      3       123
                   49593: ---    28      3       124
                   49594: }      39      3       125
                   49595: ---    66      0       126
                   49596: ---    33      1       161
                   49597: ct     67      2       162
                   49598: ps     67      2       163
                   49599: fr     17      2       164
                   49600: yn     67      2       165
                   49601: fn     67      3       166
                   49602: sc     67      3       167
                   49603: cr     66      2       168
                   49604: ---    28      2       169
                   49605: ``     50      2       170
                   49606: ---    67      0       171
                   49607: ---    33      0       172
                   49608: ---    33      0       173
                   49609: fi     67      2       174
                   49610: fl     67      2       175
                   49611: en     50      0       177
                   49612: \-     "
                   49613: dg     67      3       178
                   49614: dd     67      3       179
                   49615: ---    33      0       180
                   49616: pg     85      3       182
                   49617: ---    50      0       183
                   49618: ---    28      1       184
                   49619: ---    50      1       185
                   49620: ''     50      2       186
                   49621: ---    67      0       187
                   49622: ---    100     0       188
                   49623: ---    100     2       189
                   49624: ---    61      1       191
                   49625: ga     33      2       193
                   49626: \`     "
                   49627: aa     33      2       194
                   49628: \'     "
                   49629: ^a     33      2       195
                   49630: ^      "
                   49631: ~a     33      2       196
                   49632: ~      "
                   49633: -a     33      2       197
                   49634: Ua     33      2       198
                   49635: .a     33      2       199
                   49636: :a     33      2       200
                   49637: oa     33      2       202
                   49638: ,a     33      1       203
                   49639: "a     33      2       205
                   49640: Ca     33      1       206
                   49641: va     33      2       207
                   49642: em     100     0       208
                   49643: ---    100     2       225
                   49644: ---    40      2       227
                   49645: ---    67      2       232
                   49646: ---    83      2       233
                   49647: ---    100     2       234
                   49648: ---    40      2       235
                   49649: ---    100     0       241
                   49650: ---    33      0       245
                   49651: ---    33      2       248
                   49652: ---    67      0       249
                   49653: ---    100     0       250
                   49654: ---    67      2       251
                   49655: 0707070014231031301006440057030057030000010306400522627503000003000000004160post.src/devpost.add/MUfontname Sonata
                   49656: name MU
                   49657: charset
                   49658: ---    15      0       32
                   49659: ---    21      0       33
                   49660: ---    51      2       34
                   49661: ---    22      1       35
                   49662: ---    51      3       36
                   49663: ---    52      1       37
                   49664: ---    61      3       38
                   49665: ---    13      0       39
                   49666: ---    17      2       40
                   49667: ---    17      2       41
                   49668: ---    36      0       42
                   49669: ---    30      0       43
                   49670: ---    18      1       44
                   49671: ---    30      0       45
                   49672: ---    9       0       46
                   49673: ---    17      2       47
                   49674: ---    36      1       48
                   49675: ---    25      1       49
                   49676: ---    34      1       50
                   49677: ---    32      1       51
                   49678: ---    33      1       52
                   49679: ---    30      1       53
                   49680: ---    33      1       54
                   49681: ---    34      1       55
                   49682: ---    33      1       56
                   49683: ---    33      1       57
                   49684: ---    15      1       58
                   49685: ---    27      2       59
                   49686: ---    100     2       61
                   49687: ---    42      0       62
                   49688: ---    69      2       63
                   49689: ---    20      0       64
                   49690: ---    30      1       65
                   49691: ---    67      2       66
                   49692: ---    42      1       67
                   49693: ---    81      0       68
                   49694: ---    30      1       69
                   49695: ---    83      2       70
                   49696: ---    15      0       71
                   49697: ---    30      1       72
                   49698: ---    11      0       73
                   49699: ---    0       1       74
                   49700: ---    0       1       75
                   49701: ---    41      1       76
                   49702: ---    59      0       77
                   49703: ---    30      0       79
                   49704: ---    80      1       80
                   49705: ---    30      3       81
                   49706: ---    20      3       82
                   49707: ---    60      3       83
                   49708: ---    62      0       84
                   49709: ---    66      2       85
                   49710: ---    72      2       86
                   49711: ---    61      0       87
                   49712: ---    30      1       88
                   49713: ---    56      1       89
                   49714: ---    65      3       90
                   49715: ---    15      2       91
                   49716: ---    0       2       92
                   49717: ---    46      2       93
                   49718: ---    6       2       94
                   49719: ---    50      0       95
                   49720: ---    50      0       96
                   49721: ---    30      3       97
                   49722: ---    20      3       98
                   49723: ---    42      1       99
                   49724: ---    75      0       100
                   49725: ---    55      3       101
                   49726: ---    52      3       102
                   49727: ---    14      2       103
                   49728: ---    30      3       104
                   49729: ---    10      1       105
                   49730: ---    0       2       106
                   49731: ---    0       2       107
                   49732: ---    4       2       108
                   49733: ---    6       0       109
                   49734: ---    18      1       110
                   49735: ---    12      1       111
                   49736: ---    45      1       112
                   49737: ---    30      3       113
                   49738: ---    56      3       114
                   49739: ---    23      0       115
                   49740: ---    52      2       116
                   49741: ---    66      1       117
                   49742: ---    26      2       118
                   49743: ---    41      0       119
                   49744: ---    56      3       120
                   49745: ---    30      3       121
                   49746: ---    29      0       122
                   49747: ---    13      2       123
                   49748: ---    0       1       124
                   49749: ---    46      2       125
                   49750: ---    34      0       126
                   49751: ---    17      2       160
                   49752: ---    79      2       161
                   49753: ---    25      0       162
                   49754: ---    24      0       163
                   49755: ---    21      0       164
                   49756: ---    26      0       165
                   49757: ---    23      0       166
                   49758: ---    30      3       167
                   49759: ---    21      3       168
                   49760: ---    15      2       169
                   49761: ---    25      0       170
                   49762: ---    8       2       172
                   49763: ---    30      0       173
                   49764: ---    13      0       174
                   49765: ---    30      1       175
                   49766: ---    23      0       176
                   49767: ---    30      1       177
                   49768: ---    30      0       178
                   49769: ---    34      0       179
                   49770: ---    30      3       180
                   49771: ---    85      0       181
                   49772: ---    31      0       183
                   49773: ---    120     1       184
                   49774: ---    82      1       185
                   49775: ---    37      1       186
                   49776: ---    22      0       187
                   49777: ---    23      0       188
                   49778: ---    48      0       189
                   49779: ---    30      2       190
                   49780: ---    30      3       191
                   49781: ---    30      0       192
                   49782: ---    20      0       193
                   49783: ---    41      2       194
                   49784: ---    57      2       195
                   49785: ---    78      3       196
                   49786: ---    14      1       197
                   49787: ---    56      3       198
                   49788: ---    0       0       199
                   49789: ---    0       1       200
                   49790: ---    28      2       201
                   49791: ---    28      0       202
                   49792: ---    26      1       206
                   49793: ---    30      0       207
                   49794: ---    30      0       208
                   49795: ---    30      0       209
                   49796: ---    26      2       210
                   49797: ---    46      2       211
                   49798: ---    61      2       212
                   49799: ---    28      2       214
                   49800: ---    56      2       215
                   49801: ---    47      2       217
                   49802: ---    56      2       218
                   49803: ---    27      0       220
                   49804: ---    50      2       221
                   49805: ---    44      1       222
                   49806: ---    23      0       224
                   49807: ---    30      1       225
                   49808: ---    30      1       226
                   49809: ---    15      0       227
                   49810: ---    7       1       228
                   49811: ---    35      3       229
                   49812: ---    56      1       231
                   49813: ---    28      0       232
                   49814: ---    9       1       233
                   49815: ---    30      3       234
                   49816: ---    105     3       236
                   49817: ---    15      1       237
                   49818: ---    31      0       238
                   49819: ---    30      1       239
                   49820: ---    0       2       240
                   49821: ---    4       2       241
                   49822: ---    37      2       242
                   49823: ---    28      0       243
                   49824: ---    28      3       244
                   49825: ---    0       0       246
                   49826: ---    30      0       250
                   49827: ---    0       1       251
                   49828: 0707070014231031311006440057030057030000010306430522627503000003000000003347post.src/devpost.add/OAfontname Optima-Regular
                   49829: name OA
                   49830: ligatures fi fl 0
                   49831: spacewidth 28
                   49832: charset
                   49833: !      33      2       33
                   49834: "      33      2       34
                   49835: dq     "
                   49836: #      61      2       35
                   49837: $      56      2       36
                   49838: %      89      2       37
                   49839: &      72      2       38
                   49840: '      28      2       39
                   49841: (      28      3       40
                   49842: )      28      3       41
                   49843: *      44      2       42
                   49844: +      61      0       43
                   49845: ,      28      1       44
                   49846: hy     33      0       45
                   49847: -      "
                   49848: .      28      0       46
                   49849: /      28      2       47
                   49850: 0      56      2       48
                   49851: 1      56      2       49
                   49852: 2      56      2       50
                   49853: 3      56      2       51
                   49854: 4      56      2       52
                   49855: 5      56      2       53
                   49856: 6      56      2       54
                   49857: 7      56      2       55
                   49858: 8      56      2       56
                   49859: 9      56      2       57
                   49860: :      28      0       58
                   49861: ;      28      1       59
                   49862: ---    61      0       60
                   49863: =      61      0       61
                   49864: ---    61      0       62
                   49865: ?      39      2       63
                   49866: @      80      3       64
                   49867: A      67      2       65
                   49868: B      61      2       66
                   49869: C      67      2       67
                   49870: D      78      2       68
                   49871: E      50      2       69
                   49872: F      50      2       70
                   49873: G      78      2       71
                   49874: H      78      2       72
                   49875: I      28      2       73
                   49876: J      28      2       74
                   49877: K      61      2       75
                   49878: L      50      2       76
                   49879: M      89      2       77
                   49880: N      78      2       78
                   49881: O      83      2       79
                   49882: P      56      2       80
                   49883: Q      83      3       81
                   49884: R      61      2       82
                   49885: S      50      2       83
                   49886: T      56      2       84
                   49887: U      78      2       85
                   49888: V      67      2       86
                   49889: W      100     2       87
                   49890: X      61      2       88
                   49891: Y      61      2       89
                   49892: Z      61      2       90
                   49893: [      33      3       91
                   49894: \      50      2       92
                   49895: bs     "
                   49896: ]      33      3       93
                   49897: ---    61      2       94
                   49898: ---    50      1       95
                   49899: `      28      2       96
                   49900: a      50      0       97
                   49901: b      56      2       98
                   49902: c      50      0       99
                   49903: d      56      2       100
                   49904: e      50      0       101
                   49905: f      28      2       102
                   49906: g      50      1       103
                   49907: h      56      2       104
                   49908: i      28      2       105
                   49909: j      28      3       106
                   49910: k      50      2       107
                   49911: l      28      2       108
                   49912: m      83      0       109
                   49913: n      56      0       110
                   49914: o      56      0       111
                   49915: p      56      1       112
                   49916: q      56      1       113
                   49917: r      33      0       114
                   49918: s      39      0       115
                   49919: t      28      2       116
                   49920: u      56      0       117
                   49921: v      50      0       118
                   49922: w      78      0       119
                   49923: x      50      0       120
                   49924: y      50      1       121
                   49925: z      50      0       122
                   49926: {      33      3       123
                   49927: ---    33      3       124
                   49928: }      33      3       125
                   49929: ---    61      0       126
                   49930: ---    33      1       161
                   49931: ct     56      2       162
                   49932: ps     56      2       163
                   49933: fr     17      2       164
                   49934: yn     56      2       165
                   49935: fn     56      3       166
                   49936: sc     50      3       167
                   49937: cr     56      2       168
                   49938: ---    28      2       169
                   49939: ``     44      2       170
                   49940: ---    50      0       171
                   49941: ---    33      0       172
                   49942: ---    33      0       173
                   49943: fi     56      2       174
                   49944: fl     56      2       175
                   49945: en     50      0       177
                   49946: \-     "
                   49947: dg     50      3       178
                   49948: dd     50      3       179
                   49949: ---    28      0       180
                   49950: pg     80      3       182
                   49951: ---    61      0       183
                   49952: ---    28      1       184
                   49953: ---    44      1       185
                   49954: ''     44      2       186
                   49955: ---    50      0       187
                   49956: ---    100     0       188
                   49957: ---    100     2       189
                   49958: ---    39      1       191
                   49959: ga     33      2       193
                   49960: \`     "
                   49961: aa     33      2       194
                   49962: \'     "
                   49963: ^a     33      2       195
                   49964: ^      "
                   49965: ~a     33      2       196
                   49966: ~      "
                   49967: -a     33      2       197
                   49968: Ua     33      2       198
                   49969: .a     33      2       199
                   49970: :a     33      2       200
                   49971: oa     33      2       202
                   49972: ,a     33      1       203
                   49973: "a     33      2       205
                   49974: Ca     33      1       206
                   49975: va     33      2       207
                   49976: em     100     0       208
                   49977: ---    83      2       225
                   49978: ---    32      2       227
                   49979: ---    50      2       232
                   49980: ---    83      2       233
                   49981: ---    100     2       234
                   49982: ---    34      2       235
                   49983: ---    78      0       241
                   49984: ---    28      0       245
                   49985: ---    28      2       248
                   49986: ---    56      0       249
                   49987: ---    89      0       250
                   49988: ---    56      2       251
                   49989: 0707070014231031321006440057030057030000010306450522627503100003000000003345post.src/devpost.add/OBname OB
                   49990: fontname Optima-Bold
                   49991: ligatures fi fl 0
                   49992: spacewidth 28
                   49993: charset
                   49994: !      33      2       33
                   49995: "      33      2       34
                   49996: dq     "
                   49997: #      61      2       35
                   49998: $      56      2       36
                   49999: %      100     2       37
                   50000: &      72      2       38
                   50001: '      28      2       39
                   50002: (      33      3       40
                   50003: )      33      3       41
                   50004: *      44      2       42
                   50005: +      61      0       43
                   50006: ,      28      1       44
                   50007: hy     33      0       45
                   50008: -      "
                   50009: .      28      0       46
                   50010: /      39      2       47
                   50011: 0      56      2       48
                   50012: 1      56      2       49
                   50013: 2      56      2       50
                   50014: 3      56      2       51
                   50015: 4      56      2       52
                   50016: 5      56      2       53
                   50017: 6      56      2       54
                   50018: 7      56      2       55
                   50019: 8      56      2       56
                   50020: 9      56      2       57
                   50021: :      28      0       58
                   50022: ;      28      1       59
                   50023: ---    61      0       60
                   50024: =      61      0       61
                   50025: ---    61      0       62
                   50026: ?      44      2       63
                   50027: @      75      3       64
                   50028: A      67      2       65
                   50029: B      61      2       66
                   50030: C      67      2       67
                   50031: D      78      2       68
                   50032: E      50      2       69
                   50033: F      50      2       70
                   50034: G      78      2       71
                   50035: H      78      2       72
                   50036: I      33      2       73
                   50037: J      33      2       74
                   50038: K      61      2       75
                   50039: L      50      2       76
                   50040: M      89      2       77
                   50041: N      78      2       78
                   50042: O      83      2       79
                   50043: P      56      2       80
                   50044: Q      83      3       81
                   50045: R      61      2       82
                   50046: S      50      2       83
                   50047: T      56      2       84
                   50048: U      78      2       85
                   50049: V      67      2       86
                   50050: W      100     2       87
                   50051: X      61      2       88
                   50052: Y      61      2       89
                   50053: Z      61      2       90
                   50054: [      33      3       91
                   50055: \      52      2       92
                   50056: bs     "
                   50057: ]      33      3       93
                   50058: ---    61      2       94
                   50059: ---    50      1       95
                   50060: `      28      2       96
                   50061: a      50      0       97
                   50062: b      56      2       98
                   50063: c      50      0       99
                   50064: d      56      2       100
                   50065: e      50      0       101
                   50066: f      32      2       102
                   50067: g      50      1       103
                   50068: h      56      2       104
                   50069: i      28      2       105
                   50070: j      28      3       106
                   50071: k      50      2       107
                   50072: l      28      2       108
                   50073: m      83      0       109
                   50074: n      56      0       110
                   50075: o      56      0       111
                   50076: p      56      1       112
                   50077: q      56      1       113
                   50078: r      39      0       114
                   50079: s      39      0       115
                   50080: t      33      2       116
                   50081: u      56      0       117
                   50082: v      50      0       118
                   50083: w      78      0       119
                   50084: x      50      0       120
                   50085: y      50      1       121
                   50086: z      50      0       122
                   50087: {      33      3       123
                   50088: ---    61      3       124
                   50089: }      33      3       125
                   50090: ---    61      0       126
                   50091: ---    33      1       161
                   50092: ct     56      2       162
                   50093: ps     56      2       163
                   50094: fr     17      2       164
                   50095: yn     56      2       165
                   50096: fn     56      3       166
                   50097: sc     56      3       167
                   50098: cr     56      2       168
                   50099: ---    28      2       169
                   50100: ``     50      2       170
                   50101: ---    50      0       171
                   50102: ---    33      0       172
                   50103: ---    33      0       173
                   50104: fi     61      2       174
                   50105: fl     61      2       175
                   50106: en     50      0       177
                   50107: \-     "
                   50108: dg     56      3       178
                   50109: dd     56      3       179
                   50110: ---    28      0       180
                   50111: pg     70      3       182
                   50112: ---    61      0       183
                   50113: ---    28      1       184
                   50114: ---    50      1       185
                   50115: ''     50      2       186
                   50116: ---    50      0       187
                   50117: ---    100     0       188
                   50118: ---    100     2       189
                   50119: ---    44      1       191
                   50120: ga     33      2       193
                   50121: \`     "
                   50122: aa     33      2       194
                   50123: \'     "
                   50124: ^a     33      2       195
                   50125: ^      "
                   50126: ~a     33      2       196
                   50127: ~      "
                   50128: -a     33      2       197
                   50129: Ua     33      2       198
                   50130: .a     33      2       199
                   50131: :a     33      2       200
                   50132: oa     33      2       202
                   50133: ,a     33      1       203
                   50134: "a     33      2       205
                   50135: Ca     33      1       206
                   50136: va     33      2       207
                   50137: em     100     0       208
                   50138: ---    89      2       225
                   50139: ---    33      2       227
                   50140: ---    50      2       232
                   50141: ---    83      2       233
                   50142: ---    100     2       234
                   50143: ---    34      2       235
                   50144: ---    78      0       241
                   50145: ---    28      0       245
                   50146: ---    28      2       248
                   50147: ---    56      0       249
                   50148: ---    89      0       250
                   50149: ---    56      2       251
                   50150: 0707070014231031331006440057030057030000010306600522627503100003000000003347post.src/devpost.add/OIname OI
                   50151: fontname Optima-Oblique
                   50152: ligatures fi fl 0
                   50153: spacewidth 28
                   50154: charset
                   50155: !      33      2       33
                   50156: "      33      2       34
                   50157: dq     "
                   50158: #      61      2       35
                   50159: $      56      2       36
                   50160: %      89      2       37
                   50161: &      72      2       38
                   50162: '      28      2       39
                   50163: (      28      3       40
                   50164: )      28      3       41
                   50165: *      44      2       42
                   50166: +      61      0       43
                   50167: ,      28      1       44
                   50168: hy     33      0       45
                   50169: -      "
                   50170: .      28      0       46
                   50171: /      28      2       47
                   50172: 0      56      2       48
                   50173: 1      56      2       49
                   50174: 2      56      2       50
                   50175: 3      56      2       51
                   50176: 4      56      2       52
                   50177: 5      56      2       53
                   50178: 6      56      2       54
                   50179: 7      56      2       55
                   50180: 8      56      2       56
                   50181: 9      56      2       57
                   50182: :      28      0       58
                   50183: ;      28      1       59
                   50184: ---    61      0       60
                   50185: =      61      0       61
                   50186: ---    61      0       62
                   50187: ?      39      2       63
                   50188: @      80      3       64
                   50189: A      67      2       65
                   50190: B      61      2       66
                   50191: C      67      2       67
                   50192: D      78      2       68
                   50193: E      50      2       69
                   50194: F      50      2       70
                   50195: G      78      2       71
                   50196: H      78      2       72
                   50197: I      28      2       73
                   50198: J      28      2       74
                   50199: K      61      2       75
                   50200: L      50      2       76
                   50201: M      89      2       77
                   50202: N      78      2       78
                   50203: O      83      2       79
                   50204: P      56      2       80
                   50205: Q      83      3       81
                   50206: R      61      2       82
                   50207: S      50      2       83
                   50208: T      56      2       84
                   50209: U      78      2       85
                   50210: V      67      2       86
                   50211: W      100     2       87
                   50212: X      61      2       88
                   50213: Y      61      2       89
                   50214: Z      61      2       90
                   50215: [      33      3       91
                   50216: \      50      2       92
                   50217: bs     "
                   50218: ]      33      3       93
                   50219: ---    61      2       94
                   50220: ---    50      1       95
                   50221: `      28      2       96
                   50222: a      50      0       97
                   50223: b      56      2       98
                   50224: c      50      0       99
                   50225: d      56      2       100
                   50226: e      50      0       101
                   50227: f      28      2       102
                   50228: g      50      1       103
                   50229: h      56      2       104
                   50230: i      28      2       105
                   50231: j      28      3       106
                   50232: k      50      2       107
                   50233: l      28      2       108
                   50234: m      83      0       109
                   50235: n      56      0       110
                   50236: o      56      0       111
                   50237: p      56      1       112
                   50238: q      56      1       113
                   50239: r      33      0       114
                   50240: s      39      0       115
                   50241: t      28      2       116
                   50242: u      56      0       117
                   50243: v      50      0       118
                   50244: w      78      0       119
                   50245: x      50      0       120
                   50246: y      50      1       121
                   50247: z      50      0       122
                   50248: {      33      3       123
                   50249: ---    33      3       124
                   50250: }      33      3       125
                   50251: ---    61      0       126
                   50252: ---    33      1       161
                   50253: ct     56      2       162
                   50254: ps     56      2       163
                   50255: fr     17      2       164
                   50256: yn     56      2       165
                   50257: fn     56      3       166
                   50258: sc     50      3       167
                   50259: cr     56      2       168
                   50260: ---    28      2       169
                   50261: ``     44      2       170
                   50262: ---    50      0       171
                   50263: ---    33      0       172
                   50264: ---    33      0       173
                   50265: fi     56      2       174
                   50266: fl     56      2       175
                   50267: en     50      0       177
                   50268: \-     "
                   50269: dg     50      3       178
                   50270: dd     50      3       179
                   50271: ---    28      0       180
                   50272: pg     80      3       182
                   50273: ---    61      0       183
                   50274: ---    28      1       184
                   50275: ---    44      1       185
                   50276: ''     44      2       186
                   50277: ---    50      0       187
                   50278: ---    100     0       188
                   50279: ---    100     2       189
                   50280: ---    39      1       191
                   50281: ga     33      2       193
                   50282: \`     "
                   50283: aa     33      2       194
                   50284: \'     "
                   50285: ^a     33      2       195
                   50286: ^      "
                   50287: ~a     33      2       196
                   50288: ~      "
                   50289: -a     33      2       197
                   50290: Ua     33      2       198
                   50291: .a     33      2       199
                   50292: :a     33      2       200
                   50293: oa     33      2       202
                   50294: ,a     33      1       203
                   50295: "a     33      2       205
                   50296: Ca     33      1       206
                   50297: va     33      2       207
                   50298: em     100     0       208
                   50299: ---    83      2       225
                   50300: ---    32      2       227
                   50301: ---    50      2       232
                   50302: ---    83      2       233
                   50303: ---    100     2       234
                   50304: ---    34      2       235
                   50305: ---    78      0       241
                   50306: ---    28      0       245
                   50307: ---    28      2       248
                   50308: ---    56      0       249
                   50309: ---    89      0       250
                   50310: ---    56      2       251
                   50311: 0707070014231031341006440057030057030000010306620522627503100003000000003354post.src/devpost.add/OXname OX
                   50312: fontname Optima-BoldOblique
                   50313: ligatures fi fl 0
                   50314: spacewidth 28
                   50315: charset
                   50316: !      33      2       33
                   50317: "      33      2       34
                   50318: dq     "
                   50319: #      61      2       35
                   50320: $      56      2       36
                   50321: %      100     2       37
                   50322: &      72      2       38
                   50323: '      28      2       39
                   50324: (      33      3       40
                   50325: )      33      3       41
                   50326: *      44      2       42
                   50327: +      61      0       43
                   50328: ,      28      1       44
                   50329: hy     33      0       45
                   50330: -      "
                   50331: .      28      0       46
                   50332: /      39      2       47
                   50333: 0      56      2       48
                   50334: 1      56      2       49
                   50335: 2      56      2       50
                   50336: 3      56      2       51
                   50337: 4      56      2       52
                   50338: 5      56      2       53
                   50339: 6      56      2       54
                   50340: 7      56      2       55
                   50341: 8      56      2       56
                   50342: 9      56      2       57
                   50343: :      28      0       58
                   50344: ;      28      1       59
                   50345: ---    61      0       60
                   50346: =      61      0       61
                   50347: ---    61      0       62
                   50348: ?      44      2       63
                   50349: @      75      3       64
                   50350: A      67      2       65
                   50351: B      61      2       66
                   50352: C      67      2       67
                   50353: D      78      2       68
                   50354: E      50      2       69
                   50355: F      50      2       70
                   50356: G      78      2       71
                   50357: H      78      2       72
                   50358: I      33      2       73
                   50359: J      33      2       74
                   50360: K      61      2       75
                   50361: L      50      2       76
                   50362: M      89      2       77
                   50363: N      78      2       78
                   50364: O      83      2       79
                   50365: P      56      2       80
                   50366: Q      83      3       81
                   50367: R      61      2       82
                   50368: S      50      2       83
                   50369: T      56      2       84
                   50370: U      78      2       85
                   50371: V      67      2       86
                   50372: W      100     2       87
                   50373: X      61      2       88
                   50374: Y      61      2       89
                   50375: Z      61      2       90
                   50376: [      33      3       91
                   50377: \      52      2       92
                   50378: bs     "
                   50379: ]      33      3       93
                   50380: ---    61      2       94
                   50381: ---    50      1       95
                   50382: `      28      2       96
                   50383: a      50      0       97
                   50384: b      56      2       98
                   50385: c      50      0       99
                   50386: d      56      2       100
                   50387: e      50      0       101
                   50388: f      32      2       102
                   50389: g      50      1       103
                   50390: h      56      2       104
                   50391: i      28      2       105
                   50392: j      28      3       106
                   50393: k      50      2       107
                   50394: l      28      2       108
                   50395: m      83      0       109
                   50396: n      56      0       110
                   50397: o      56      0       111
                   50398: p      56      1       112
                   50399: q      56      1       113
                   50400: r      39      0       114
                   50401: s      39      0       115
                   50402: t      33      2       116
                   50403: u      56      0       117
                   50404: v      50      0       118
                   50405: w      78      0       119
                   50406: x      50      0       120
                   50407: y      50      1       121
                   50408: z      50      0       122
                   50409: {      33      3       123
                   50410: ---    61      3       124
                   50411: }      33      3       125
                   50412: ---    61      0       126
                   50413: ---    33      1       161
                   50414: ct     56      2       162
                   50415: ps     56      2       163
                   50416: fr     17      2       164
                   50417: yn     56      2       165
                   50418: fn     56      3       166
                   50419: sc     56      3       167
                   50420: cr     56      2       168
                   50421: ---    28      2       169
                   50422: ``     50      2       170
                   50423: ---    50      0       171
                   50424: ---    33      0       172
                   50425: ---    33      0       173
                   50426: fi     61      2       174
                   50427: fl     61      2       175
                   50428: en     50      0       177
                   50429: \-     "
                   50430: dg     56      3       178
                   50431: dd     56      3       179
                   50432: ---    28      0       180
                   50433: pg     70      3       182
                   50434: ---    61      0       183
                   50435: ---    28      1       184
                   50436: ---    50      1       185
                   50437: ''     50      2       186
                   50438: ---    50      0       187
                   50439: ---    100     0       188
                   50440: ---    100     2       189
                   50441: ---    44      1       191
                   50442: ga     33      2       193
                   50443: \`     "
                   50444: aa     33      2       194
                   50445: \'     "
                   50446: ^a     33      2       195
                   50447: ^      "
                   50448: ~a     33      2       196
                   50449: ~      "
                   50450: -a     33      2       197
                   50451: Ua     33      2       198
                   50452: .a     33      2       199
                   50453: :a     33      2       200
                   50454: oa     33      2       202
                   50455: ,a     33      1       203
                   50456: "a     33      2       205
                   50457: Ca     33      1       206
                   50458: va     33      2       207
                   50459: em     100     0       208
                   50460: ---    89      2       225
                   50461: ---    33      2       227
                   50462: ---    50      2       232
                   50463: ---    83      2       233
                   50464: ---    100     2       234
                   50465: ---    34      2       235
                   50466: ---    78      0       241
                   50467: ---    28      0       245
                   50468: ---    28      2       248
                   50469: ---    56      0       249
                   50470: ---    89      0       250
                   50471: ---    56      2       251
                   50472: 0707070014231031351006440057030057030000010306640522627503100003000000003366post.src/devpost.add/a1name a1
                   50473: fontname CenturyOldStyleAbstract-Regular
                   50474: ligatures fi fl 0
                   50475: spacewidth 25
                   50476: charset
                   50477: !      26      2       33
                   50478: "      40      2       34
                   50479: dq     "
                   50480: #      50      2       35
                   50481: $      50      3       36
                   50482: %      58      2       37
                   50483: &      79      2       38
                   50484: '      21      2       39
                   50485: (      40      3       40
                   50486: )      40      3       41
                   50487: *      50      2       42
                   50488: +      50      0       43
                   50489: ,      25      1       44
                   50490: hy     24      0       45
                   50491: -      "
                   50492: .      25      0       46
                   50493: /      53      3       47
                   50494: 0      50      2       48
                   50495: 1      50      2       49
                   50496: 2      50      2       50
                   50497: 3      50      2       51
                   50498: 4      50      2       52
                   50499: 5      50      2       53
                   50500: 6      50      2       54
                   50501: 7      50      2       55
                   50502: 8      50      2       56
                   50503: 9      50      2       57
                   50504: :      25      0       58
                   50505: ;      25      1       59
                   50506: ---    50      0       60
                   50507: =      50      0       61
                   50508: ---    50      0       62
                   50509: ?      40      2       63
                   50510: @      85      2       64
                   50511: A      66      2       65
                   50512: B      69      2       66
                   50513: C      69      2       67
                   50514: D      76      2       68
                   50515: E      66      2       69
                   50516: F      61      2       70
                   50517: G      74      2       71
                   50518: H      76      2       72
                   50519: I      34      2       73
                   50520: J      40      3       74
                   50521: K      71      2       75
                   50522: L      58      2       76
                   50523: M      95      2       77
                   50524: N      76      2       78
                   50525: O      76      2       79
                   50526: P      61      2       80
                   50527: Q      76      3       81
                   50528: R      63      2       82
                   50529: S      55      2       83
                   50530: T      63      2       84
                   50531: U      74      2       85
                   50532: V      66      2       86
                   50533: W      95      2       87
                   50534: X      63      2       88
                   50535: Y      63      2       89
                   50536: Z      58      2       90
                   50537: [      40      3       91
                   50538: \      25      2       92
                   50539: bs     "
                   50540: ]      40      3       93
                   50541: ---    50      2       94
                   50542: ---    50      1       95
                   50543: `      21      2       96
                   50544: a      47      0       97
                   50545: b      55      2       98
                   50546: c      47      0       99
                   50547: d      55      2       100
                   50548: e      50      0       101
                   50549: f      29      2       102
                   50550: g      55      1       103
                   50551: h      58      2       104
                   50552: i      26      2       105
                   50553: j      24      3       106
                   50554: k      55      2       107
                   50555: l      26      2       108
                   50556: m      84      0       109
                   50557: n      55      0       110
                   50558: o      53      0       111
                   50559: p      53      1       112
                   50560: q      55      1       113
                   50561: r      40      0       114
                   50562: s      45      0       115
                   50563: t      31      2       116
                   50564: u      55      0       117
                   50565: v      47      0       118
                   50566: w      71      0       119
                   50567: x      53      0       120
                   50568: y      50      1       121
                   50569: z      45      0       122
                   50570: {      40      3       123
                   50571: ---    25      2       124
                   50572: }      40      3       125
                   50573: ---    50      0       126
                   50574: ---    26      1       161
                   50575: ct     50      2       162
                   50576: ps     50      2       163
                   50577: fr     9       2       164
                   50578: yn     50      2       165
                   50579: fn     50      3       166
                   50580: sc     50      3       167
                   50581: cr     50      2       168
                   50582: ---    21      2       169
                   50583: ``     40      2       170
                   50584: ---    47      0       171
                   50585: ---    29      0       172
                   50586: ---    29      0       173
                   50587: fi     58      2       174
                   50588: fl     55      2       175
                   50589: en     50      0       177
                   50590: \-     "
                   50591: dg     50      3       178
                   50592: dd     50      3       179
                   50593: ---    25      0       180
                   50594: pg     66      3       182
                   50595: ---    66      0       183
                   50596: ---    21      1       184
                   50597: ---    40      1       185
                   50598: ''     40      2       186
                   50599: ---    47      0       187
                   50600: ---    100     0       188
                   50601: ---    92      2       189
                   50602: ---    40      1       191
                   50603: ga     29      2       193
                   50604: \`     "
                   50605: aa     29      2       194
                   50606: \'     "
                   50607: ^a     37      2       195
                   50608: ^      "
                   50609: ~a     50      2       196
                   50610: ~      "
                   50611: -a     47      2       197
                   50612: Ua     50      2       198
                   50613: .a     26      2       199
                   50614: :a     47      2       200
                   50615: oa     34      2       202
                   50616: ,a     34      1       203
                   50617: "a     40      2       205
                   50618: Ca     37      1       206
                   50619: va     37      2       207
                   50620: em     100     0       208
                   50621: ---    103     2       225
                   50622: ---    34      2       227
                   50623: ---    58      2       232
                   50624: ---    76      2       233
                   50625: ---    108     2       234
                   50626: ---    34      2       235
                   50627: ---    76      0       241
                   50628: ---    26      0       245
                   50629: ---    26      2       248
                   50630: ---    53      0       249
                   50631: ---    84      0       250
                   50632: ---    58      2       251
                   50633: 0707070014231031361006440057030057030000010306660522627503100003000000003365post.src/devpost.add/a2name a2
                   50634: fontname CenturyOldStyleAbstract-Italic
                   50635: ligatures fi fl 0
                   50636: spacewidth 27
                   50637: charset
                   50638: !      31      2       33
                   50639: "      35      2       34
                   50640: dq     "
                   50641: #      54      0       35
                   50642: $      54      3       36
                   50643: %      70      2       37
                   50644: &      75      2       38
                   50645: '      21      2       39
                   50646: (      46      3       40
                   50647: )      46      3       41
                   50648: *      59      2       42
                   50649: +      54      0       43
                   50650: ,      27      1       44
                   50651: hy     25      0       45
                   50652: -      "
                   50653: .      27      0       46
                   50654: /      46      3       47
                   50655: 0      54      2       48
                   50656: 1      54      0       49
                   50657: 2      54      2       50
                   50658: 3      54      2       51
                   50659: 4      54      0       52
                   50660: 5      54      0       53
                   50661: 6      54      2       54
                   50662: 7      54      0       55
                   50663: 8      54      2       56
                   50664: 9      54      2       57
                   50665: :      27      0       58
                   50666: ;      27      1       59
                   50667: ---    54      0       60
                   50668: =      54      0       61
                   50669: ---    54      0       62
                   50670: ?      48      2       63
                   50671: @      78      2       64
                   50672: A      67      2       65
                   50673: B      68      2       66
                   50674: C      65      2       67
                   50675: D      75      2       68
                   50676: E      66      2       69
                   50677: F      61      2       70
                   50678: G      72      2       71
                   50679: H      77      2       72
                   50680: I      36      2       73
                   50681: J      34      3       74
                   50682: K      68      2       75
                   50683: L      58      2       76
                   50684: M      90      2       77
                   50685: N      74      2       78
                   50686: O      74      2       79
                   50687: P      59      2       80
                   50688: Q      75      3       81
                   50689: R      65      2       82
                   50690: S      57      2       83
                   50691: T      63      2       84
                   50692: U      72      2       85
                   50693: V      62      2       86
                   50694: W      88      2       87
                   50695: X      64      2       88
                   50696: Y      61      2       89
                   50697: Z      57      2       90
                   50698: [      46      3       91
                   50699: \      27      2       92
                   50700: bs     "
                   50701: ]      46      3       93
                   50702: ---    54      2       94
                   50703: ---    50      1       95
                   50704: `      21      2       96
                   50705: a      54      0       97
                   50706: b      46      2       98
                   50707: c      41      0       99
                   50708: d      50      2       100
                   50709: e      42      0       101
                   50710: f      25      3       102
                   50711: g      45      1       103
                   50712: h      52      2       104
                   50713: i      31      2       105
                   50714: j      27      3       106
                   50715: k      48      2       107
                   50716: l      27      2       108
                   50717: m      82      0       109
                   50718: n      56      0       110
                   50719: o      47      0       111
                   50720: p      50      1       112
                   50721: q      49      1       113
                   50722: r      40      0       114
                   50723: s      35      0       115
                   50724: t      30      0       116
                   50725: u      56      0       117
                   50726: v      47      0       118
                   50727: w      69      0       119
                   50728: x      41      0       120
                   50729: y      40      1       121
                   50730: z      39      0       122
                   50731: {      46      3       123
                   50732: ---    27      2       124
                   50733: }      46      3       125
                   50734: ---    54      0       126
                   50735: ---    31      1       161
                   50736: ct     54      0       162
                   50737: ps     54      2       163
                   50738: fr     5       2       164
                   50739: yn     54      0       165
                   50740: fn     54      3       166
                   50741: sc     59      3       167
                   50742: cr     54      0       168
                   50743: ---    19      2       169
                   50744: ``     37      2       170
                   50745: ---    45      0       171
                   50746: ---    29      0       172
                   50747: ---    29      0       173
                   50748: fi     52      3       174
                   50749: fl     52      3       175
                   50750: en     50      0       177
                   50751: \-     "
                   50752: dg     59      3       178
                   50753: dd     59      3       179
                   50754: ---    27      0       180
                   50755: pg     61      3       182
                   50756: ---    61      0       183
                   50757: ---    21      1       184
                   50758: ---    37      1       185
                   50759: ''     37      2       186
                   50760: ---    45      0       187
                   50761: ---    100     0       188
                   50762: ---    103     2       189
                   50763: ---    48      1       191
                   50764: ga     39      2       193
                   50765: \`     "
                   50766: aa     31      2       194
                   50767: \'     "
                   50768: ^a     40      2       195
                   50769: ^      "
                   50770: ~a     51      2       196
                   50771: ~      "
                   50772: -a     47      0       197
                   50773: Ua     51      2       198
                   50774: .a     26      2       199
                   50775: :a     46      2       200
                   50776: oa     32      2       202
                   50777: ,a     35      1       203
                   50778: "a     39      2       205
                   50779: Ca     34      1       206
                   50780: va     40      2       207
                   50781: em     100     0       208
                   50782: ---    94      2       225
                   50783: ---    32      2       227
                   50784: ---    58      2       232
                   50785: ---    74      2       233
                   50786: ---    107     2       234
                   50787: ---    32      2       235
                   50788: ---    69      0       241
                   50789: ---    31      0       245
                   50790: ---    27      2       248
                   50791: ---    47      0       249
                   50792: ---    71      0       250
                   50793: ---    53      2       251
                   50794: 0707070014231031371006440057030057030000010307000522627503100003000000003367post.src/devpost.add/c1name c1
                   50795: fontname CenturyOldStyleCondensed-Regular
                   50796: ligatures fi fl 0
                   50797: spacewidth 25
                   50798: charset
                   50799: !      26      2       33
                   50800: "      40      2       34
                   50801: dq     "
                   50802: #      50      2       35
                   50803: $      50      3       36
                   50804: %      58      2       37
                   50805: &      79      2       38
                   50806: '      21      2       39
                   50807: (      40      3       40
                   50808: )      40      3       41
                   50809: *      50      2       42
                   50810: +      50      0       43
                   50811: ,      25      1       44
                   50812: hy     24      0       45
                   50813: -      "
                   50814: .      25      0       46
                   50815: /      53      3       47
                   50816: 0      50      2       48
                   50817: 1      50      2       49
                   50818: 2      50      2       50
                   50819: 3      50      2       51
                   50820: 4      50      2       52
                   50821: 5      50      2       53
                   50822: 6      50      2       54
                   50823: 7      50      2       55
                   50824: 8      50      2       56
                   50825: 9      50      2       57
                   50826: :      25      0       58
                   50827: ;      25      1       59
                   50828: ---    50      0       60
                   50829: =      50      0       61
                   50830: ---    50      0       62
                   50831: ?      40      2       63
                   50832: @      85      2       64
                   50833: A      66      2       65
                   50834: B      69      2       66
                   50835: C      69      2       67
                   50836: D      76      2       68
                   50837: E      66      2       69
                   50838: F      61      2       70
                   50839: G      74      2       71
                   50840: H      76      2       72
                   50841: I      34      2       73
                   50842: J      40      3       74
                   50843: K      71      2       75
                   50844: L      58      2       76
                   50845: M      95      2       77
                   50846: N      76      2       78
                   50847: O      76      2       79
                   50848: P      61      2       80
                   50849: Q      76      3       81
                   50850: R      63      2       82
                   50851: S      55      2       83
                   50852: T      63      2       84
                   50853: U      74      2       85
                   50854: V      66      2       86
                   50855: W      95      2       87
                   50856: X      63      2       88
                   50857: Y      63      2       89
                   50858: Z      58      2       90
                   50859: [      40      3       91
                   50860: \      25      2       92
                   50861: bs     "
                   50862: ]      40      3       93
                   50863: ---    50      2       94
                   50864: ---    50      1       95
                   50865: `      21      2       96
                   50866: a      47      0       97
                   50867: b      55      2       98
                   50868: c      47      0       99
                   50869: d      55      2       100
                   50870: e      50      0       101
                   50871: f      29      2       102
                   50872: g      55      1       103
                   50873: h      58      2       104
                   50874: i      26      2       105
                   50875: j      24      3       106
                   50876: k      55      2       107
                   50877: l      26      2       108
                   50878: m      84      0       109
                   50879: n      55      0       110
                   50880: o      53      0       111
                   50881: p      53      1       112
                   50882: q      55      1       113
                   50883: r      40      0       114
                   50884: s      45      0       115
                   50885: t      31      2       116
                   50886: u      55      0       117
                   50887: v      47      0       118
                   50888: w      71      0       119
                   50889: x      53      0       120
                   50890: y      50      1       121
                   50891: z      45      0       122
                   50892: {      40      3       123
                   50893: ---    25      2       124
                   50894: }      40      3       125
                   50895: ---    50      0       126
                   50896: ---    26      1       161
                   50897: ct     50      2       162
                   50898: ps     50      2       163
                   50899: fr     9       2       164
                   50900: yn     50      2       165
                   50901: fn     50      3       166
                   50902: sc     50      3       167
                   50903: cr     50      2       168
                   50904: ---    21      2       169
                   50905: ``     40      2       170
                   50906: ---    47      0       171
                   50907: ---    29      0       172
                   50908: ---    29      0       173
                   50909: fi     58      2       174
                   50910: fl     55      2       175
                   50911: en     50      0       177
                   50912: \-     "
                   50913: dg     50      3       178
                   50914: dd     50      3       179
                   50915: ---    25      0       180
                   50916: pg     66      3       182
                   50917: ---    66      0       183
                   50918: ---    21      1       184
                   50919: ---    40      1       185
                   50920: ''     40      2       186
                   50921: ---    47      0       187
                   50922: ---    100     0       188
                   50923: ---    92      2       189
                   50924: ---    40      1       191
                   50925: ga     29      2       193
                   50926: \`     "
                   50927: aa     29      2       194
                   50928: \'     "
                   50929: ^a     37      2       195
                   50930: ^      "
                   50931: ~a     50      2       196
                   50932: ~      "
                   50933: -a     47      2       197
                   50934: Ua     50      2       198
                   50935: .a     26      2       199
                   50936: :a     47      2       200
                   50937: oa     34      2       202
                   50938: ,a     34      1       203
                   50939: "a     40      2       205
                   50940: Ca     37      1       206
                   50941: va     37      2       207
                   50942: em     100     0       208
                   50943: ---    103     2       225
                   50944: ---    34      2       227
                   50945: ---    58      2       232
                   50946: ---    76      2       233
                   50947: ---    108     2       234
                   50948: ---    34      2       235
                   50949: ---    76      0       241
                   50950: ---    26      0       245
                   50951: ---    26      2       248
                   50952: ---    53      0       249
                   50953: ---    84      0       250
                   50954: ---    58      2       251
                   50955: 0707070014231031401006440057030057030000010307020522627503100003000000003366post.src/devpost.add/c2name c2
                   50956: fontname CenturyOldStyleCondensed-Italic
                   50957: ligatures fi fl 0
                   50958: spacewidth 27
                   50959: charset
                   50960: !      31      2       33
                   50961: "      35      2       34
                   50962: dq     "
                   50963: #      54      0       35
                   50964: $      54      3       36
                   50965: %      70      2       37
                   50966: &      75      2       38
                   50967: '      21      2       39
                   50968: (      46      3       40
                   50969: )      46      3       41
                   50970: *      59      2       42
                   50971: +      54      0       43
                   50972: ,      27      1       44
                   50973: hy     25      0       45
                   50974: -      "
                   50975: .      27      0       46
                   50976: /      46      3       47
                   50977: 0      54      2       48
                   50978: 1      54      0       49
                   50979: 2      54      2       50
                   50980: 3      54      2       51
                   50981: 4      54      0       52
                   50982: 5      54      0       53
                   50983: 6      54      2       54
                   50984: 7      54      0       55
                   50985: 8      54      2       56
                   50986: 9      54      2       57
                   50987: :      27      0       58
                   50988: ;      27      1       59
                   50989: ---    54      0       60
                   50990: =      54      0       61
                   50991: ---    54      0       62
                   50992: ?      48      2       63
                   50993: @      78      2       64
                   50994: A      67      2       65
                   50995: B      68      2       66
                   50996: C      65      2       67
                   50997: D      75      2       68
                   50998: E      66      2       69
                   50999: F      61      2       70
                   51000: G      72      2       71
                   51001: H      77      2       72
                   51002: I      36      2       73
                   51003: J      34      3       74
                   51004: K      68      2       75
                   51005: L      58      2       76
                   51006: M      90      2       77
                   51007: N      74      2       78
                   51008: O      74      2       79
                   51009: P      59      2       80
                   51010: Q      75      3       81
                   51011: R      65      2       82
                   51012: S      57      2       83
                   51013: T      63      2       84
                   51014: U      72      2       85
                   51015: V      62      2       86
                   51016: W      88      2       87
                   51017: X      64      2       88
                   51018: Y      61      2       89
                   51019: Z      57      2       90
                   51020: [      46      3       91
                   51021: \      27      2       92
                   51022: bs     "
                   51023: ]      46      3       93
                   51024: ---    54      2       94
                   51025: ---    50      1       95
                   51026: `      21      2       96
                   51027: a      54      0       97
                   51028: b      46      2       98
                   51029: c      41      0       99
                   51030: d      50      2       100
                   51031: e      42      0       101
                   51032: f      25      3       102
                   51033: g      45      1       103
                   51034: h      52      2       104
                   51035: i      31      2       105
                   51036: j      27      3       106
                   51037: k      48      2       107
                   51038: l      27      2       108
                   51039: m      82      0       109
                   51040: n      56      0       110
                   51041: o      47      0       111
                   51042: p      50      1       112
                   51043: q      49      1       113
                   51044: r      40      0       114
                   51045: s      35      0       115
                   51046: t      30      0       116
                   51047: u      56      0       117
                   51048: v      47      0       118
                   51049: w      69      0       119
                   51050: x      41      0       120
                   51051: y      40      1       121
                   51052: z      39      0       122
                   51053: {      46      3       123
                   51054: ---    27      2       124
                   51055: }      46      3       125
                   51056: ---    54      0       126
                   51057: ---    31      1       161
                   51058: ct     54      0       162
                   51059: ps     54      2       163
                   51060: fr     5       2       164
                   51061: yn     54      0       165
                   51062: fn     54      3       166
                   51063: sc     59      3       167
                   51064: cr     54      0       168
                   51065: ---    19      2       169
                   51066: ``     37      2       170
                   51067: ---    45      0       171
                   51068: ---    29      0       172
                   51069: ---    29      0       173
                   51070: fi     52      3       174
                   51071: fl     52      3       175
                   51072: en     50      0       177
                   51073: \-     "
                   51074: dg     59      3       178
                   51075: dd     59      3       179
                   51076: ---    27      0       180
                   51077: pg     61      3       182
                   51078: ---    61      0       183
                   51079: ---    21      1       184
                   51080: ---    37      1       185
                   51081: ''     37      2       186
                   51082: ---    45      0       187
                   51083: ---    100     0       188
                   51084: ---    103     2       189
                   51085: ---    48      1       191
                   51086: ga     39      2       193
                   51087: \`     "
                   51088: aa     31      2       194
                   51089: \'     "
                   51090: ^a     40      2       195
                   51091: ^      "
                   51092: ~a     51      2       196
                   51093: ~      "
                   51094: -a     47      0       197
                   51095: Ua     51      2       198
                   51096: .a     26      2       199
                   51097: :a     46      2       200
                   51098: oa     32      2       202
                   51099: ,a     35      1       203
                   51100: "a     39      2       205
                   51101: Ca     34      1       206
                   51102: va     40      2       207
                   51103: em     100     0       208
                   51104: ---    94      2       225
                   51105: ---    32      2       227
                   51106: ---    58      2       232
                   51107: ---    74      2       233
                   51108: ---    107     2       234
                   51109: ---    32      2       235
                   51110: ---    69      0       241
                   51111: ---    31      0       245
                   51112: ---    27      2       248
                   51113: ---    47      0       249
                   51114: ---    71      0       250
                   51115: ---    53      2       251
                   51116: 0707070014231031411006440057030057030000010307040522627503100003000000003366post.src/devpost.add/c3name c3
                   51117: fontname CenturyOldStyleCondensed-Bold
                   51118: ligatures fi fl 0
                   51119: spacewidth 33
                   51120: charset
                   51121: !      34      2       33
                   51122: "      40      2       34
                   51123: dq     "
                   51124: #      56      2       35
                   51125: $      66      3       36
                   51126: %      79      2       37
                   51127: &      84      2       38
                   51128: '      28      2       39
                   51129: (      39      3       40
                   51130: )      39      3       41
                   51131: *      56      2       42
                   51132: +      56      0       43
                   51133: ,      33      1       44
                   51134: hy     32      0       45
                   51135: -      "
                   51136: .      33      0       46
                   51137: /      51      3       47
                   51138: 0      66      2       48
                   51139: 1      66      2       49
                   51140: 2      66      2       50
                   51141: 3      66      2       51
                   51142: 4      66      2       52
                   51143: 5      66      2       53
                   51144: 6      66      2       54
                   51145: 7      66      2       55
                   51146: 8      66      2       56
                   51147: 9      66      2       57
                   51148: :      33      0       58
                   51149: ;      33      1       59
                   51150: ---    56      0       60
                   51151: =      56      0       61
                   51152: ---    56      0       62
                   51153: ?      47      2       63
                   51154: @      72      2       64
                   51155: A      69      2       65
                   51156: B      76      2       66
                   51157: C      70      2       67
                   51158: D      80      2       68
                   51159: E      71      2       69
                   51160: F      64      2       70
                   51161: G      78      2       71
                   51162: H      83      2       72
                   51163: I      41      2       73
                   51164: J      48      2       74
                   51165: K      76      2       75
                   51166: L      63      2       76
                   51167: M      94      2       77
                   51168: N      80      2       78
                   51169: O      81      2       79
                   51170: P      72      2       80
                   51171: Q      81      3       81
                   51172: R      72      2       82
                   51173: S      61      2       83
                   51174: T      60      2       84
                   51175: U      78      2       85
                   51176: V      64      2       86
                   51177: W      97      2       87
                   51178: X      68      2       88
                   51179: Y      67      2       89
                   51180: Z      59      2       90
                   51181: [      39      3       91
                   51182: \      28      2       92
                   51183: bs     "
                   51184: ]      39      3       93
                   51185: ---    56      2       94
                   51186: ---    50      1       95
                   51187: `      28      2       96
                   51188: a      53      0       97
                   51189: b      60      2       98
                   51190: c      52      0       99
                   51191: d      62      2       100
                   51192: e      54      0       101
                   51193: f      30      2       102
                   51194: g      52      3       103
                   51195: h      62      2       104
                   51196: i      31      2       105
                   51197: j      27      3       106
                   51198: k      60      2       107
                   51199: l      30      2       108
                   51200: m      92      0       109
                   51201: n      62      0       110
                   51202: o      57      0       111
                   51203: p      61      1       112
                   51204: q      60      1       113
                   51205: r      44      0       114
                   51206: s      50      0       115
                   51207: t      33      2       116
                   51208: u      63      0       117
                   51209: v      50      0       118
                   51210: w      74      0       119
                   51211: x      53      0       120
                   51212: y      49      1       121
                   51213: z      44      0       122
                   51214: {      39      3       123
                   51215: ---    28      2       124
                   51216: }      39      3       125
                   51217: ---    56      0       126
                   51218: ---    34      1       161
                   51219: ct     66      2       162
                   51220: ps     66      2       163
                   51221: fr     10      2       164
                   51222: yn     66      2       165
                   51223: fn     66      3       166
                   51224: sc     56      3       167
                   51225: cr     66      2       168
                   51226: ---    22      2       169
                   51227: ``     52      2       170
                   51228: ---    58      0       171
                   51229: ---    37      0       172
                   51230: ---    37      0       173
                   51231: fi     62      2       174
                   51232: fl     61      2       175
                   51233: en     50      0       177
                   51234: \-     "
                   51235: dg     56      3       178
                   51236: dd     56      3       179
                   51237: ---    33      0       180
                   51238: pg     62      3       182
                   51239: ---    62      0       183
                   51240: ---    28      1       184
                   51241: ---    52      1       185
                   51242: ''     52      2       186
                   51243: ---    58      0       187
                   51244: ---    100     0       188
                   51245: ---    118     2       189
                   51246: ---    47      1       191
                   51247: ga     34      2       193
                   51248: \`     "
                   51249: aa     34      2       194
                   51250: \'     "
                   51251: ^a     45      2       195
                   51252: ^      "
                   51253: ~a     56      2       196
                   51254: ~      "
                   51255: -a     53      2       197
                   51256: Ua     56      2       198
                   51257: .a     29      2       199
                   51258: :a     51      2       200
                   51259: oa     34      2       202
                   51260: ,a     37      1       203
                   51261: "a     50      2       205
                   51262: Ca     38      1       206
                   51263: va     45      2       207
                   51264: em     100     0       208
                   51265: ---    109     2       225
                   51266: ---    40      2       227
                   51267: ---    63      2       232
                   51268: ---    81      2       233
                   51269: ---    114     2       234
                   51270: ---    40      2       235
                   51271: ---    83      0       241
                   51272: ---    31      0       245
                   51273: ---    30      2       248
                   51274: ---    57      0       249
                   51275: ---    90      0       250
                   51276: ---    58      2       251
                   51277: 0707070014231031421006440057030057030000010307060522627503100004400000002013post.src/devpost.add/devpost.add.mkMAKE=/bin/make
                   51278: MAKEFILE=devpost.add.mk
                   51279: 
                   51280: SYSTEM=SYSV
                   51281: VERSION=3.2
                   51282: 
                   51283: GROUP=bin
                   51284: OWNER=bin
                   51285: 
                   51286: FONTDIR=/usr/lib/font
                   51287: FONTFILES=??
                   51288: 
                   51289: all :
                   51290: 
                   51291: install : all
                   51292:        @if [ ! -d $(FONTDIR) ]; then \
                   51293:            mkdir $(FONTDIR); \
                   51294:            chmod 755 $(FONTDIR); \
                   51295:            chgrp $(GROUP) $(FONTDIR); \
                   51296:            chown $(OWNER) $(FONTDIR); \
                   51297:        fi
                   51298:        @if [ ! -d $(FONTDIR)/devpost ]; then \
                   51299:            mkdir $(FONTDIR)/devpost; \
                   51300:            chmod 755 $(FONTDIR)/devpost; \
                   51301:            chgrp $(GROUP) $(FONTDIR)/devpost; \
                   51302:            chown $(OWNER) $(FONTDIR)/devpost; \
                   51303:        fi
                   51304:        cp $(FONTFILES) $(FONTDIR)/devpost
                   51305:        @for i in $(FONTFILES); do \
                   51306:            chmod 644 $(FONTDIR)/devpost/$$i; \
                   51307:            chgrp $(GROUP) $(FONTDIR)/devpost/$$i; \
                   51308:            chown $(OWNER) $(FONTDIR)/devpost/$$i; \
                   51309:        done
                   51310: 
                   51311: clean :
                   51312: 
                   51313: clobber : clean
                   51314: 
                   51315: changes :
                   51316:        @trap "" 1 2 3 15; \
                   51317:        sed \
                   51318:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
                   51319:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
                   51320:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
                   51321:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
                   51322:            -e "s'^FONTDIR=.*'FONTDIR=$(FONTDIR)'" \
                   51323:        $(MAKEFILE) >XXX.mk; \
                   51324:        mv XXX.mk $(MAKEFILE)
                   51325: 
                   51326: 0707070014230547760407550057030057030000021527350522633074000002200000000000post.src/download0707070014230547771006440057030057030000011527360522627503100003100000000756post.src/download/README
                   51327: A simple program that scans PostScript files for %%DocumentFonts:
                   51328: comments and prepends requested host resident font files to the
                   51329: input. Written for Unix 4.0 lp.
                   51330: 
                   51331: Downloaded fonts are the ones named in the %%DocumentFonts: comment
                   51332: and listed in a special map file (which can be selected using the
                   51333: -m option). See example.map and comments in download.c for examples
                   51334: of map files. By default map files and font files are in *hostfontdir.
                   51335: It's initialized using HOSTDIR (file ../common/path.h).
                   51336: 
                   51337: 0707070014230550001006440057030057030000011527370522627503100003500000000443post.src/download/download.h/*
                   51338:  *
                   51339:  * The font data for a printer is saved in an array of the following type.
                   51340:  *
                   51341:  */
                   51342: 
                   51343: typedef struct map {
                   51344:        char    *font;          /* a request for this PostScript font */
                   51345:        char    *file;          /* means copy this unix file */
                   51346:        int     downloaded;     /* TRUE after *file is downloaded */
                   51347: } Map;
                   51348: 
                   51349: Map    *allocate();
                   51350: 
                   51351: 0707070014230550061006400057030057030000011527660522633073700003600000003434post.src/download/download.mkMAKE=/bin/make
                   51352: MAKEFILE=download.mk
                   51353: 
                   51354: SYSTEM=V9
                   51355: VERSION=3.3.2
                   51356: 
                   51357: GROUP=bin
                   51358: OWNER=bin
                   51359: 
                   51360: HOSTDIR=/usr/lib/font/postscript
                   51361: MAN1DIR=/tmp
                   51362: POSTBIN=/usr/bin/postscript
                   51363: POSTLIB=/usr/lib/postscript
                   51364: 
                   51365: COMMONDIR=../common
                   51366: 
                   51367: CFLGS=-O
                   51368: LDFLGS=-s
                   51369: 
                   51370: CFLAGS=$(CFLGS) -I$(COMMONDIR)
                   51371: LDFLAGS=$(LDFLGS)
                   51372: 
                   51373: HFILES=download.h\
                   51374:        $(COMMONDIR)/comments.h\
                   51375:        $(COMMONDIR)/ext.h\
                   51376:        $(COMMONDIR)/gen.h\
                   51377:        $(COMMONDIR)/path.h
                   51378: 
                   51379: OFILES=download.o\
                   51380:        $(COMMONDIR)/glob.o\
                   51381:        $(COMMONDIR)/misc.o\
                   51382:        $(COMMONDIR)/tempnam.o
                   51383: 
                   51384: all : download
                   51385: 
                   51386: install : all
                   51387:        @if [ ! -d "$(POSTBIN)" ]; then \
                   51388:            mkdir $(POSTBIN); \
                   51389:            chmod 755 $(POSTBIN); \
                   51390:            chgrp $(GROUP) $(POSTBIN); \
                   51391:            chown $(OWNER) $(POSTBIN); \
                   51392:        fi
                   51393:        cp download $(POSTBIN)/download
                   51394:        @chmod 755 $(POSTBIN)/download
                   51395:        @chgrp $(GROUP) $(POSTBIN)/download
                   51396:        @chown $(OWNER) $(POSTBIN)/download
                   51397:        cp download.1 $(MAN1DIR)/download.1
                   51398:        @chmod 644 $(MAN1DIR)/download.1
                   51399:        @chgrp $(GROUP) $(MAN1DIR)/download.1
                   51400:        @chown $(OWNER) $(MAN1DIR)/download.1
                   51401: 
                   51402: clean :
                   51403:        rm -f *.o
                   51404: 
                   51405: clobber : clean
                   51406:        rm -f download
                   51407: 
                   51408: download : $(OFILES)
                   51409:        $(CC) $(CFLAGS) $(LDFLAGS) -o download $(OFILES)
                   51410: 
                   51411: download.o : $(HFILES)
                   51412: 
                   51413: $(COMMONDIR)/glob.o\
                   51414: $(COMMONDIR)/misc.o\
                   51415: $(COMMONDIR)/tempnam.o :
                   51416:        @cd $(COMMONDIR); $(MAKE) -f common.mk SYSTEM=$(SYSTEM) `basename $@`
                   51417: 
                   51418: changes :
                   51419:        @trap "" 1 2 3 15; \
                   51420:        sed \
                   51421:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
                   51422:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
                   51423:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
                   51424:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
                   51425:            -e "s'^HOSTDIR=.*'HOSTDIR=$(HOSTDIR)'" \
                   51426:            -e "s'^MAN1DIR=.*'MAN1DIR=$(MAN1DIR)'" \
                   51427:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
                   51428:            -e "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" \
                   51429:        $(MAKEFILE) >XXX.mk; \
                   51430:        mv XXX.mk $(MAKEFILE); \
                   51431:        sed \
                   51432:            -e "s'^.ds dH.*'.ds dH $(HOSTDIR)'" \
                   51433:        download.1 >XXX.1; \
                   51434:        mv XXX.1 download.1
                   51435: 
                   51436: 0707070014230550021006440057030057030000011527420522627503100003600000001664post.src/download/example.map%
                   51437: % An example font map table that extends the standard collection of 13
                   51438: % fonts to the 35 made popular by the LaserWriter Plus.
                   51439: %
                   51440: % First string is full PostScript font name, exactly as it would appear
                   51441: % in a %%DocumentFonts comment. Second string is the name of the Unix
                   51442: % file relative to *hostfontdir, unless that string begins with a /, in
                   51443: % which case it's taken as the full pathname.
                   51444: %
                   51445: 
                   51446:        Palatino-Roman                  PA
                   51447:        Palatino-Italic                 PI
                   51448:        Palatino-Bold                   PB
                   51449:        Palatino-BoldItalic             PX
                   51450:        Helvetica-Narrow                Hr
                   51451:        Helvetica-Narrow-Oblique        Hi
                   51452:        Helvetica-Narrow-Bold           Hb
                   51453:        Helvetica-Narrow-BoldOblique    Hx
                   51454:        Bookman-Light                   KR
                   51455:        Bookman-LightItalic             KI
                   51456:        Bookman-Demi                    KB
                   51457:        Bookman-DemiItalic              KX
                   51458:        AvantGarde-Book                 AR
                   51459:        AvantGarde-BookOblique          AI
                   51460:        AvantGarde-Demi                 AB
                   51461:        AvantGarde-DemiOblique          AX
                   51462:        NewCenturySchlbk-Roman          NR
                   51463:        NewCenturySchlbk-Italic         NI
                   51464:        NewCenturySchlbk-Bold           NB
                   51465:        NewCenturySchlbk-BoldItalic     NX
                   51466:        ZapfDingbats                    ZD
                   51467:        ZapfChancery-MediumItalic       ZI
                   51468:        
                   51469: 0707070014230550031006440057030057030000011527500522627503100003500000034165post.src/download/download.c/*
                   51470:  *
                   51471:  * download - host resident font downloader
                   51472:  *
                   51473:  * Prepends host resident fonts to PostScript input files. The program assumes
                   51474:  * the input files are part of a single PostScript job and that requested fonts
                   51475:  * can be downloaded at the start of each input file. Downloaded fonts are the
                   51476:  * ones named in a %%DocumentFonts: comment and listed in a special map table.
                   51477:  * Map table pathnames (supplied using the -m option) that begin with a / are
                   51478:  * taken as is. Otherwise the final pathname is built using *hostfontdir (-H
                   51479:  * option), *mapname (-m option), and *suffix.
                   51480:  *
                   51481:  * The map table consists of fontname-filename pairs, separated by white space.
                   51482:  * Comments are introduced by % (as in PostScript) and extend to the end of the
                   51483:  * current line. The only fonts that can be downloaded are the ones listed in
                   51484:  * the active map table that point the program to a readable Unix file. A request
                   51485:  * for an unlisted font or inaccessible file is ignored. All font requests are
                   51486:  * ignored if the map table can't be read. In that case the program simply copies
                   51487:  * the input files to stdout.
                   51488:  *
                   51489:  * An example (but not one to follow) of what can be in a map table is,
                   51490:  *
                   51491:  *     %
                   51492:  *     % Map requests for Bookman-Light to file *hostfontdir/KR
                   51493:  *     %
                   51494:  *
                   51495:  *       Bookman-Light         KR      % Keeping everything (including the map
                   51496:  *                                     % table) in *hostfontdir seems like the
                   51497:  *                                     % cleanest approach.
                   51498:  *
                   51499:  *     %
                   51500:  *     % Map Palatino-Roman to file *hostfontdir/palatino/Roman
                   51501:  *     %
                   51502:  *       Palatino-Roman        palatino/Roman
                   51503:  *
                   51504:  *     % Map ZapfDingbats to file /usr/lib/host/dingbats
                   51505:  *
                   51506:  *       ZapfDingbats          /usr/lib/host/dingbats
                   51507:  *
                   51508:  * Once again, file names that begin with a / are taken as is. All others have
                   51509:  * *hostfontdir/ prepended to the file string associated with a particular font.
                   51510:  *
                   51511:  * Map table can be associated with a printer model (e.g. a LaserWriter), a
                   51512:  * printer destination, or whatever - the choice is up to an administrator.
                   51513:  * By destination may be best if your spooler is running several private
                   51514:  * printers. Host resident fonts are usually purchased under a license that
                   51515:  * restricts their use to a limited number of printers. A font licensed for
                   51516:  * a single printer should only be used on that printer.
                   51517:  *
                   51518:  * Was written quickly, so there's much room for improvement. Undoubtedly should
                   51519:  * be a more general program (e.g. scan for other comments).
                   51520:  *
                   51521:  */
                   51522: 
                   51523: #include <stdio.h>
                   51524: #include <signal.h>
                   51525: #include <fcntl.h>
                   51526: #include <sys/types.h>
                   51527: #include <sys/stat.h>
                   51528: 
                   51529: #include "comments.h"                  /* PostScript file structuring comments */
                   51530: #include "gen.h"                       /* general purpose definitions */
                   51531: #include "path.h"                      /* for temporary directory */
                   51532: #include "ext.h"                       /* external variable declarations */
                   51533: #include "download.h"                  /* a few special definitions */
                   51534: 
                   51535: char   *temp_dir = TEMPDIR;            /* temp directory - for copying stdin */
                   51536: char   *hostfontdir = HOSTDIR;         /* host resident directory */
                   51537: char   *mapname = "map";               /* map table - usually in *hostfontdir */
                   51538: char   *suffix = "";                   /* appended to the map table pathname */
                   51539: Map    *map = NULL;                    /* device font map table */
                   51540: char   *stringspace = NULL;            /* for storing font and file strings */
                   51541: int    next = 0;                       /* next free slot in map[] */
                   51542: 
                   51543: char   *residentfonts = NULL;          /* list of printer resident fonts */
                   51544: char   *printer = NULL;                /* printer name - only for Unix 4.0 lp */
                   51545: 
                   51546: char   buf[2048];                      /* input file line buffer */
                   51547: char   *comment = DOCUMENTFONTS;       /* look for this comment */
                   51548: int    atend = FALSE;                  /* TRUE only if a comment says so */
                   51549: 
                   51550: FILE   *fp_in = stdin;                 /* next input file */
                   51551: FILE   *fp_temp = NULL;                /* for copying stdin */
                   51552: 
                   51553: /*****************************************************************************/
                   51554: 
                   51555: main(agc, agv)
                   51556: 
                   51557:     int                agc;
                   51558:     char       *agv[];
                   51559: 
                   51560: {
                   51561: 
                   51562: /*
                   51563:  *
                   51564:  * Host resident font downloader. The input files are assumed to be part of a
                   51565:  * single PostScript job.
                   51566:  *
                   51567:  */
                   51568: 
                   51569:     argc = agc;                                /* other routines may want them */
                   51570:     argv = agv;
                   51571: 
                   51572:     prog_name = argv[0];               /* just for error messages */
                   51573: 
                   51574:     init_signals();                    /* sets up interrupt handling */
                   51575:     options();                         /* first get command line options */
                   51576:     readmap();                         /* read the font map table */
                   51577:     readresident();                    /* and the optional resident font list */
                   51578:     arguments();                       /* then process non-option arguments */
                   51579:     done();                            /* and clean things up */
                   51580: 
                   51581:     exit(x_stat);                      /* not much could be wrong */
                   51582: 
                   51583: }   /* End of main */
                   51584: 
                   51585: /*****************************************************************************/
                   51586: 
                   51587: init_signals()
                   51588: 
                   51589: {
                   51590: 
                   51591: /*
                   51592:  *
                   51593:  * Makes sure we handle interrupts properly.
                   51594:  *
                   51595:  */
                   51596: 
                   51597:     if ( signal(SIGINT, interrupt) == SIG_IGN ) {
                   51598:        signal(SIGINT, SIG_IGN);
                   51599:        signal(SIGQUIT, SIG_IGN);
                   51600:        signal(SIGHUP, SIG_IGN);
                   51601:     } else {
                   51602:        signal(SIGHUP, interrupt);
                   51603:        signal(SIGQUIT, interrupt);
                   51604:     }   /* End else */
                   51605: 
                   51606:     signal(SIGTERM, interrupt);
                   51607: 
                   51608: }   /* End of init_signals */
                   51609: 
                   51610: /*****************************************************************************/
                   51611: 
                   51612: options()
                   51613: 
                   51614: {
                   51615: 
                   51616:     int                ch;                     /* return value from getopt() */
                   51617:     char       *optnames = "c:fm:p:r:H:T:DI";
                   51618: 
                   51619:     extern char        *optarg;                /* used by getopt() */
                   51620:     extern int optind;
                   51621: 
                   51622: /*
                   51623:  *
                   51624:  * Reads and processes the command line options.
                   51625:  *
                   51626:  */
                   51627: 
                   51628:     while ( (ch = getopt(argc, argv, optnames)) != EOF ) {
                   51629:        switch ( ch ) {
                   51630:            case 'c':                   /* look for this comment */
                   51631:                    comment = optarg;
                   51632:                    break;
                   51633: 
                   51634:            case 'f':                   /* force a complete input file scan */
                   51635:                    atend = TRUE;
                   51636:                    break;
                   51637: 
                   51638:            case 'm':                   /* printer map table name */
                   51639:                    mapname = optarg;
                   51640:                    break;
                   51641: 
                   51642:            case 'p':                   /* printer name - for Unix 4.0 lp */
                   51643:                    printer = optarg;
                   51644:                    break;
                   51645: 
                   51646:            case 'r':                   /* resident font list */
                   51647:                    residentfonts = optarg;
                   51648:                    break;
                   51649: 
                   51650:            case 'H':                   /* host resident font directory */
                   51651:                    hostfontdir = optarg;
                   51652:                    break;
                   51653: 
                   51654:            case 'T':                   /* temporary file directory */
                   51655:                    temp_dir = optarg;
                   51656:                    break;
                   51657: 
                   51658:            case 'D':                   /* debug flag */
                   51659:                    debug = ON;
                   51660:                    break;
                   51661: 
                   51662:            case 'I':                   /* ignore FATAL errors */
                   51663:                    ignore = ON;
                   51664:                    break;
                   51665: 
                   51666:            case '?':                   /* don't understand the option */
                   51667:                    error(FATAL, "");
                   51668:                    break;
                   51669: 
                   51670:            default:                    /* don't know what to do for ch */
                   51671:                    error(FATAL, "missing case for option %c\n", ch);
                   51672:                    break;
                   51673:        }   /* End switch */
                   51674:     }   /* End while */
                   51675: 
                   51676:     argc -= optind;                    /* get ready for non-option args */
                   51677:     argv += optind;
                   51678: 
                   51679: }   /* End of options */
                   51680: 
                   51681: /*****************************************************************************/
                   51682: 
                   51683: readmap()
                   51684: 
                   51685: {
                   51686: 
                   51687:     char       *path;
                   51688:     char       *ptr;
                   51689:     int                fd;
                   51690:     struct stat        sbuf;
                   51691: 
                   51692: /*
                   51693:  *
                   51694:  * Initializes the map table by reading an ASCII mapping file. If mapname begins
                   51695:  * with a / it's the map table. Otherwise hostfontdir, mapname, and suffix are
                   51696:  * combined to build the final pathname. If we can open the file we read it all
                   51697:  * into memory, erase comments, and separate the font and file name pairs. When
                   51698:  * we leave next points to the next free slot in the map[] array. If it's zero
                   51699:  * nothing was in the file or we couldn't open it.
                   51700:  *
                   51701:  */
                   51702: 
                   51703:     if ( hostfontdir == NULL || mapname == NULL )
                   51704:        return;
                   51705: 
                   51706:     if ( *mapname != '/' ) {
                   51707:        if ( (path = malloc(strlen(hostfontdir) + strlen(mapname) +
                   51708:                                                strlen(suffix) + 2)) == NULL )
                   51709:            error(FATAL, "no memory");
                   51710:        sprintf(path, "%s/%s%s", hostfontdir, mapname, suffix);
                   51711:     } else path = mapname;
                   51712: 
                   51713:     if ( (fd = open(path, 0)) != -1 ) {
                   51714:        if ( fstat(fd, &sbuf) == -1 )
                   51715:            error(FATAL, "can't fstat %s", path);
                   51716:        if ( (stringspace = malloc(sbuf.st_size + 2)) == NULL )
                   51717:            error(FATAL, "no memory");
                   51718:        if ( read(fd, stringspace, sbuf.st_size) == -1 )
                   51719:            error(FATAL, "can't read %s", path);
                   51720:        close(fd);
                   51721: 
                   51722:        stringspace[sbuf.st_size] = '\n';       /* just to be safe */
                   51723:        stringspace[sbuf.st_size+1] = '\0';
                   51724:        for ( ptr = stringspace; *ptr != '\0'; ptr++ )  /* erase comments */
                   51725:            if ( *ptr == '%' )
                   51726:                for ( ; *ptr != '\n' ; ptr++ )
                   51727:                    *ptr = ' ';
                   51728: 
                   51729:        for ( ptr = stringspace; ; next++ ) {
                   51730:            if ( (next % 50) == 0 )
                   51731:                map = allocate(map, next+50);
                   51732:            map[next].downloaded = FALSE;
                   51733:            map[next].font = strtok(ptr, " \t\n");
                   51734:            map[next].file = strtok(ptr = NULL, " \t\n");
                   51735:            if ( map[next].font == NULL )
                   51736:                break;
                   51737:            if ( map[next].file == NULL )
                   51738:                error(FATAL, "map table format error - check %s", path);
                   51739:        }   /* End for */
                   51740:     }  /* End if */
                   51741: 
                   51742: }   /* End of readmap */
                   51743: 
                   51744: /*****************************************************************************/
                   51745: 
                   51746: readresident()
                   51747: 
                   51748: {
                   51749: 
                   51750:     FILE       *fp;
                   51751:     char       *path;
                   51752:     int                ch;
                   51753:     int                n;
                   51754: 
                   51755: /*
                   51756:  *
                   51757:  * Reads a file that lists the resident fonts for a particular printer and marks
                   51758:  * each font as already downloaded. Nothing's done if the file can't be read or
                   51759:  * there's no mapping file. Comments, as in the map file, begin with a % and
                   51760:  * extend to the end of the line. Added for Unix 4.0 lp.
                   51761:  *
                   51762:  */
                   51763: 
                   51764:     if ( next == 0 || (printer == NULL && residentfonts == NULL) )
                   51765:        return;
                   51766: 
                   51767:     if ( printer != NULL ) {           /* use Unix 4.0 lp pathnames */
                   51768:        sprintf(buf, "/etc/lp/printers/%s/residentfonts", printer);
                   51769:        path = buf;
                   51770:     } else path = residentfonts;
                   51771: 
                   51772:     if ( (fp = fopen(path, "r")) != NULL ) {
                   51773:        while ( fscanf(fp, "%s", buf) != EOF )
                   51774:            if ( buf[0] == '%' )
                   51775:                while ( (ch = getc(fp)) != EOF && ch != '\n' ) ;
                   51776:            else if ( (n = lookup(buf)) < next )
                   51777:                map[n].downloaded = TRUE;
                   51778:        fclose(fp);
                   51779:     }  /* End if */
                   51780: 
                   51781: }   /* End of readresident */
                   51782: 
                   51783: /*****************************************************************************/
                   51784: 
                   51785: arguments()
                   51786: 
                   51787: {
                   51788: 
                   51789: /*
                   51790:  *
                   51791:  * Makes sure all the non-option command line arguments are processed. If we get
                   51792:  * here and there aren't any arguments left, or if '-' is one of the input files
                   51793:  * we'll translate stdin. Assumes input files are part of a single PostScript
                   51794:  * job and fonts can be downloaded at the start of each file.
                   51795:  *
                   51796:  */
                   51797: 
                   51798:     if ( argc < 1 )
                   51799:        download();
                   51800:     else {
                   51801:        while ( argc > 0 ) {
                   51802:            fp_temp = NULL;
                   51803:            if ( strcmp(*argv, "-") == 0 )
                   51804:                fp_in = stdin;
                   51805:            else if ( (fp_in = fopen(*argv, "r")) == NULL )
                   51806:                error(FATAL, "can't open %s", *argv);
                   51807:            download();
                   51808:            if ( fp_in != stdin )
                   51809:                fclose(fp_in);
                   51810:            if ( fp_temp != NULL )
                   51811:                fclose(fp_temp);
                   51812:            argc--;
                   51813:            argv++;
                   51814:        }   /* End while */
                   51815:     }  /* End else */
                   51816: 
                   51817: }   /* End of arguments */
                   51818: 
                   51819: /*****************************************************************************/
                   51820: 
                   51821: done()
                   51822: 
                   51823: {
                   51824: 
                   51825: /*
                   51826:  *
                   51827:  * Clean things up before we quit.
                   51828:  *
                   51829:  */
                   51830: 
                   51831:     if ( temp_file != NULL )
                   51832:        unlink(temp_file);
                   51833: 
                   51834: }   /* End of done */
                   51835: 
                   51836: /*****************************************************************************/
                   51837: 
                   51838: download()
                   51839: 
                   51840: {
                   51841: 
                   51842:     int                infontlist = FALSE;
                   51843: 
                   51844: /*
                   51845:  *
                   51846:  * If next is zero the map table is empty and all we do is copy the input file
                   51847:  * to stdout. Otherwise we read the input file looking for %%DocumentFonts: or
                   51848:  * continuation comments, add any accessible fonts to the output file, and then
                   51849:  * append the input file. When reading stdin we append lines to fp_temp and
                   51850:  * recover them when we're ready to copy the input file. fp_temp will often
                   51851:  * only contain part of stdin - if there's no %%DocumentFonts: (atend) comment
                   51852:  * we stop reading fp_in after the header.
                   51853:  *
                   51854:  */
                   51855: 
                   51856:     if ( next > 0 ) {
                   51857:        if ( fp_in == stdin ) {
                   51858:            if ( (temp_file = tempnam(temp_dir, "post")) == NULL )
                   51859:                error(FATAL, "can't generate temp file name");
                   51860:            if ( (fp_temp = fopen(temp_file, "w+r")) == NULL )
                   51861:                error(FATAL, "can't open %s", temp_file);
                   51862:            unlink(temp_file);
                   51863:            temp_file = NULL;
                   51864:        }   /* End if */
                   51865: 
                   51866:        while ( fgets(buf, sizeof(buf), fp_in) != NULL ) {
                   51867:            if ( fp_temp != NULL )
                   51868:                fprintf(fp_temp, "%s", buf);
                   51869:            if ( buf[0] != '%' || buf[1] != '%' ) {
                   51870:                if ( (buf[0] != '%' || buf[1] != '!') && atend == FALSE )
                   51871:                    break;
                   51872:                infontlist = FALSE;
                   51873:            } else if ( strncmp(buf, comment, strlen(comment)) == 0 ) {
                   51874:                copyfonts(buf);
                   51875:                infontlist = TRUE;
                   51876:            } else if ( buf[2] == '+' && infontlist == TRUE )
                   51877:                copyfonts(buf);
                   51878:            else infontlist = FALSE;
                   51879:        }   /* End while */
                   51880:     }  /* End if */
                   51881: 
                   51882:     copyinput();
                   51883: 
                   51884: }   /* End of download */
                   51885: 
                   51886: /*****************************************************************************/
                   51887: 
                   51888: copyfonts(list)
                   51889: 
                   51890:     char       *list;
                   51891: 
                   51892: {
                   51893: 
                   51894:     char       *font;
                   51895:     char       *path;
                   51896:     int                n;
                   51897: 
                   51898: /*
                   51899:  *
                   51900:  * list points to a %%DocumentFonts: or continuation comment. What follows the
                   51901:  * the keyword will be a list of fonts separated by white space (or (atend)).
                   51902:  * Look for each font in the map table and if it's found copy the font file to
                   51903:  * stdout (once only).
                   51904:  *
                   51905:  */
                   51906: 
                   51907:     strtok(list, " \n");               /* skip to the font list */
                   51908: 
                   51909:     while ( (font = strtok(NULL, " \t\n")) != NULL ) {
                   51910:        if ( strcmp(font, ATEND) == 0 ) {
                   51911:            atend = TRUE;
                   51912:            break;
                   51913:        }   /* End if */
                   51914:        if ( (n = lookup(font)) < next ) {
                   51915:            if ( *map[n].file != '/' ) {
                   51916:                if ( (path = malloc(strlen(hostfontdir)+strlen(map[n].file)+2)) == NULL )
                   51917:                    error(FATAL, "no memory");
                   51918:                sprintf(path, "%s/%s", hostfontdir, map[n].file);
                   51919:                cat(path);
                   51920:                free(path);
                   51921:            } else cat(map[n].file);
                   51922:            map[n].downloaded = TRUE;
                   51923:        }   /* End if */
                   51924:     }  /* End while */
                   51925: 
                   51926: }   /* End of copyfonts */
                   51927: 
                   51928: /*****************************************************************************/
                   51929: 
                   51930: copyinput()
                   51931: 
                   51932: {
                   51933: 
                   51934: /*
                   51935:  *
                   51936:  * Copies the input file to stdout. If fp_temp isn't NULL seek to the start and
                   51937:  * add it to the output file - it's a partial (or complete) copy of stdin made
                   51938:  * by download(). Then copy fp_in, but only seek to the start if it's not stdin.
                   51939:  *
                   51940:  */
                   51941: 
                   51942:     if ( fp_temp != NULL ) {
                   51943:        fseek(fp_temp, 0L, 0);
                   51944:        while ( fgets(buf, sizeof(buf), fp_temp) != NULL )
                   51945:            printf("%s", buf);
                   51946:     }  /* End if */
                   51947: 
                   51948:     if ( fp_in != stdin )
                   51949:        fseek(fp_in, 0L, 0);
                   51950: 
                   51951:     while ( fgets(buf, sizeof(buf), fp_in) != NULL )
                   51952:        printf("%s", buf);
                   51953: 
                   51954: }   /* End of copyinput */
                   51955: 
                   51956: /*****************************************************************************/
                   51957: 
                   51958: lookup(font)
                   51959: 
                   51960:     char       *font;
                   51961: 
                   51962: {
                   51963: 
                   51964:     int                i;
                   51965: 
                   51966: /*
                   51967:  *
                   51968:  * Looks for *font in the map table. Return the map table index if found and
                   51969:  * not yet downloaded - otherwise return next.
                   51970:  *
                   51971:  */
                   51972: 
                   51973:     for ( i = 0; i < next; i++ )
                   51974:        if ( strcmp(font, map[i].font) == 0 ) {
                   51975:            if ( map[i].downloaded == TRUE )
                   51976:                i = next;
                   51977:            break;
                   51978:        }   /* End if */
                   51979: 
                   51980:     return(i);
                   51981: 
                   51982: }   /* End of lookup */
                   51983: 
                   51984: /*****************************************************************************/
                   51985: 
                   51986: Map *allocate(ptr, num)
                   51987: 
                   51988:     Map                *ptr;
                   51989:     int                num;
                   51990: 
                   51991: {
                   51992: 
                   51993: /*
                   51994:  *
                   51995:  * Allocates space for num Map elements. Calls malloc() if ptr is NULL and
                   51996:  * realloc() otherwise.
                   51997:  *
                   51998:  */
                   51999: 
                   52000:     if ( ptr == NULL )
                   52001:        ptr = (Map *)malloc(num * sizeof(Map));
                   52002:     else ptr = (Map *)realloc(ptr, num * sizeof(Map));
                   52003: 
                   52004:     if ( ptr == NULL )
                   52005:        error(FATAL, "no map memory");
                   52006: 
                   52007:     return(ptr);
                   52008: 
                   52009: }   /* End of allocate */
                   52010: 
                   52011: /*****************************************************************************/
                   52012: 
                   52013: 0707070014230550121006400057030057030000011530300522633074000003500000007101post.src/download/download.1.ds dH /usr/lib/font/postscript
                   52014: .TH DOWNLOAD 1 "DWB 3.2"
                   52015: .SH NAME
                   52016: download \- host-resident PostScript font download
                   52017: .SH SYNOPSIS
                   52018: \*(mBdownload\f1
                   52019: .OP "" options []
                   52020: .OP "" files []
                   52021: .SH DESCRIPTION
                   52022: .B download
                   52023: prepends host-resident fonts to
                   52024: .I files
                   52025: and writes the results on the standard output.
                   52026: If no
                   52027: .I files
                   52028: are specified, or if
                   52029: .OP \-
                   52030: is one of the input
                   52031: .IR files ,
                   52032: the standard input is read.
                   52033: .B download
                   52034: assumes the input
                   52035: .I files
                   52036: are a single PostScript job and that requested fonts
                   52037: can be included at the start of each input
                   52038: .IR file .
                   52039: The following
                   52040: .I options
                   52041: are understood:
                   52042: .TP 1.0i
                   52043: .OP \-f
                   52044: Force a complete scan of each input
                   52045: .I file.
                   52046: In the absence of an explicit comment pointing
                   52047: .I download
                   52048: to the end of the file, the default scan stops
                   52049: immediately after the PostScript header comments.
                   52050: .TP 1.0i
                   52051: .OP \-m name
                   52052: Use
                   52053: .I name
                   52054: as the font map table.
                   52055: A
                   52056: .I name
                   52057: that begins with
                   52058: .MW /
                   52059: is the full pathname of the
                   52060: map table.
                   52061: Otherwise
                   52062: .I name
                   52063: is relative to the host font directory.
                   52064: .TP 1.0i
                   52065: .OP \-p printer
                   52066: Read the printer-resident font list from file
                   52067: .br
                   52068: .MI /etc/lp/printers/ printer /residentfonts \f1.
                   52069: .br
                   52070: Fonts named in this file will not be downloaded.
                   52071: The
                   52072: .OP \-p
                   52073: option is for use with Unix 4.0 lp.
                   52074: Other spoolers should use the
                   52075: .OP \-r
                   52076: option.
                   52077: .TP 1.0i
                   52078: .OP \-r file
                   52079: Read the list of printer-resident fonts from
                   52080: .I file.
                   52081: Fonts named in this file will not be downloaded.
                   52082: .TP 1.0i
                   52083: .OP \-H dir
                   52084: Use
                   52085: .I dir
                   52086: as the host font directory.
                   52087: The default is
                   52088: .MR \*(dH .
                   52089: .TP 1.0i
                   52090: .OP \-T dir
                   52091: Use
                   52092: .I dir
                   52093: as the temporary file directory.
                   52094: Only used to make a copy of standard input.
                   52095: By default
                   52096: .I dir
                   52097: is set to
                   52098: .MR /tmp .
                   52099: .PP
                   52100: Requested fonts are named in a
                   52101: .MW %%DocumentFonts:
                   52102: comment in the input
                   52103: .IR files .
                   52104: Available fonts are the ones listed in the map table
                   52105: selected using the
                   52106: .OP \-m
                   52107: option.
                   52108: .PP
                   52109: The map table consists of fontname\-filename pairs.
                   52110: The fontname is the full name of the PostScript font,
                   52111: exactly as it would appear in a
                   52112: .MW %%DocumentFonts:
                   52113: comment.
                   52114: The filename is the pathname of the host resident font.
                   52115: A filename that begins with a
                   52116: .MW /
                   52117: is used as is,
                   52118: otherwise the pathname is relative to the host font
                   52119: directory.
                   52120: Comments are introduced by
                   52121: .MW %
                   52122: (as in PostScript) and
                   52123: extend to the end of the line.
                   52124: .PP
                   52125: The only candidates for downloading are fonts listed
                   52126: in the map table that point
                   52127: .B download
                   52128: to readable files.
                   52129: A font is downloaded at most once per job.
                   52130: Requests for unlisted fonts or inaccessible files
                   52131: are ignored.
                   52132: All requests are ignored if the map table can't be read.
                   52133: .SH EXAMPLES
                   52134: A map table used to control the downloading
                   52135: of the Bookman font family might be,
                   52136: .EX -1
                   52137: %
                   52138: % The first string is the full PostScript font name. The second string
                   52139: % is the file name - relative the host font directory unless it begins
                   52140: % with a /.
                   52141: %
                   52142: 
                   52143:   Bookman-Light            KR
                   52144:   Bookman-LightItalic      KI
                   52145:   Bookman-Demi             KB
                   52146:   Bookman-DemiItalic       KX
                   52147: .EE
                   52148: Use file
                   52149: .MW myprinter
                   52150: (in the default host font directory) as the
                   52151: map table:
                   52152: .EX
                   52153: download -m myprinter \f2file
                   52154: .EE
                   52155: Set the host font directory to
                   52156: .MW /tmp/font
                   52157: and use
                   52158: .MW /tmp/font/xxx
                   52159: as the map table:
                   52160: .EX
                   52161: download -H /tmp/font -mxxx \f2file
                   52162: .EE
                   52163: .SH DIAGNOSTICS
                   52164: 0 exit status is returned if
                   52165: .I files
                   52166: were successfully processed.
                   52167: .SH BUGS
                   52168: .B download
                   52169: should be part of a more general program.
                   52170: .PP
                   52171: .B download
                   52172: does not look for
                   52173: .MW %%PageFonts:
                   52174: comments
                   52175: and there is no way to force multiple downloads of
                   52176: a particular font.
                   52177: .PP
                   52178: Using full pathnames, either in map tables or for the map table
                   52179: name, is not often recommended.
                   52180: .SH SEE ALSO
                   52181: .BR dpost (1),
                   52182: .BR postdaisy (1),
                   52183: .BR postdmd (1),
                   52184: .BR postio (1),
                   52185: .BR postmd (1),
                   52186: .BR postprint (1),
                   52187: .BR posttek (1)
                   52188: 0707070014231031431006440057030057030000010231460522634431100001700000002663post.src/NOTES Directory dpost is DWB 3.3 version without UTF changes. dpost.utf is
                   52189:  stuff for Plan 9. Both build and install dpost, so only pick one. The
                   52190:  makefile I sent (postscript.mk) builds dpost.utf.
                   52191: 
                   52192:  Left READING set to ONEBYTE in common/gen.h. Expect dpost errors unless
                   52193:  'x E UTF' is added to troff output or READING set to UTFENCODING. Easy
                   52194:  to make 'x E UTF' anything else too.
                   52195: 
                   52196:  Left RUNELIB defined in common/rune.h so rune.c stuff is used when
                   52197:  dpost.utf is built.
                   52198: 
                   52199:  UTF.enc is in directory psencoding. Install and link to Default.enc on
                   52200:  Plan 9.
                   52201: 
                   52202:  Carmela requested two new characters: \(bs for backslash and \(dq for
                   52203:  double quote. Both are in devLatin1 and devpost tables. Carmela also
                   52204:  asked for a bunch of her devpost accent characters in devLatin1. Added
                   52205:  them to the end of the devLatin1 tables.
                   52206: 
                   52207:  A word of warning about devLatin1. Carmela, Peter and others complained
                   52208:  about - and hyphens being too long in the Latin1 fonts. I used Abode's
                   52209:  choice but nobody liked it. New devLatin1 tables use a smaller character
                   52210:  for hy. Looks better (I guess) but a width change affects line and page
                   52211:  breaks!! Not sure what you want to do. Complaints on this one go to
                   52212:  npn and carmela!!!
                   52213: 
                   52214:  Didn't take your suggested pathname change in download. Didn't want to
                   52215:  risk breaking Unix 4.0 lp. What's there is bogus but was only for Unix
                   52216:  4.0. The -r option accomplishes something similiar but needs a full path.
                   52217: 
                   52218:  postio.mk is very different and not tested on V9.
                   52219: 
                   52220: 0707070014230735420407550057030057030000020011070522633074300002000000000000post.src/grabit0707070014230732661006400057030057030000010000700522633074200003200000002732post.src/grabit/grabit.mkMAKE=/bin/make
                   52221: MAKEFILE=grabit.mk
                   52222: 
                   52223: OWNER=bin
                   52224: GROUP=bin
                   52225: 
                   52226: MAN1DIR=/tmp
                   52227: MAN5DIR=/usr/man/p_man/man5
                   52228: POSTBIN=/usr/bin/postscript
                   52229: POSTLIB=/usr/lib/postscript
                   52230: 
                   52231: all : grabit
                   52232: 
                   52233: install : all
                   52234:        @if [ ! -d "$(POSTBIN)" ]; then \
                   52235:            mkdir $(POSTBIN); \
                   52236:            chmod 755 $(POSTBIN); \
                   52237:            chgrp $(GROUP) $(POSTBIN); \
                   52238:            chown $(OWNER) $(POSTBIN); \
                   52239:        fi
                   52240:        @if [ ! -d "$(POSTLIB)" ]; then \
                   52241:            mkdir $(POSTLIB); \
                   52242:            chmod 755 $(POSTLIB); \
                   52243:            chgrp $(GROUP) $(POSTLIB); \
                   52244:            chown $(OWNER) $(POSTLIB); \
                   52245:        fi
                   52246:        cp grabit $(POSTBIN)/grabit
                   52247:        @chmod 755 $(POSTBIN)/grabit
                   52248:        @chgrp $(GROUP) $(POSTBIN)/grabit
                   52249:        @chown $(OWNER) $(POSTBIN)/grabit
                   52250:        cp grabit.ps $(POSTLIB)/grabit.ps
                   52251:        @chmod 644 $(POSTLIB)/grabit.ps
                   52252:        @chgrp $(GROUP) $(POSTLIB)/grabit.ps
                   52253:        @chown $(OWNER) $(POSTLIB)/grabit.ps
                   52254:        cp grabit.1 $(MAN1DIR)/grabit.1
                   52255:        @chmod 644 $(MAN1DIR)/grabit.1
                   52256:        @chgrp $(GROUP) $(MAN1DIR)/grabit.1
                   52257:        @chown $(OWNER) $(MAN1DIR)/grabit.1
                   52258: 
                   52259: clean :
                   52260: 
                   52261: clobber : clean
                   52262:        rm -f grabit
                   52263: 
                   52264: grabit : grabit.sh
                   52265:        sed "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" grabit.sh >grabit
                   52266:        @chmod 755 grabit
                   52267: 
                   52268: changes :
                   52269:        @trap "" 1 2 3 15; \
                   52270:        sed \
                   52271:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
                   52272:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
                   52273:            -e "s'^MAN1DIR=.*'MAN1DIR=$(MAN1DIR)'" \
                   52274:            -e "s'^MAN5DIR=.*'MAN5DIR=$(MAN5DIR)'" \
                   52275:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
                   52276:            -e "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" \
                   52277:        $(MAKEFILE) >XXX.mk; \
                   52278:        mv XXX.mk $(MAKEFILE); \
                   52279:        sed \
                   52280:            -e "s'^.ds dQ.*'.ds dQ $(POSTLIB)'" \
                   52281:        grabit.1 >XXX.1; \
                   52282:        mv XXX.1 grabit.1
                   52283: 
                   52284: 0707070014230735441006440057030057030000010014500522627503200003200000030161post.src/grabit/grabit.ps%
                   52285: % Dump a PostScript object, occasionally in a form that can be sent back
                   52286: % through the interpreter. Similiar to Adobe's == procedure, but output
                   52287: % is usually easier to read. No binding so operators like rcheck and exec
                   52288: % can be conviently redefined.
                   52289: %
                   52290: 
                   52291: /GrabitDict 100 dict dup begin
                   52292: 
                   52293: /recursive true def
                   52294: /scratchstring 200 string def
                   52295: /slowdown 100 def
                   52296: 
                   52297: /column 0 def
                   52298: /lastcolumn 80 def
                   52299: /level 0 def
                   52300: /multiline 100 array def
                   52301: /nextname 0 def
                   52302: /arraylength 0 def
                   52303: /lengthonly false def
                   52304: 
                   52305: /GrabitSetup {
                   52306:        counttomark {OmitNames exch true put} repeat pop
                   52307:        0 0 moveto              % for hardcopy output
                   52308: } def
                   52309: 
                   52310: /OmitNames 30 dict def         % ignore these names
                   52311: /OtherDicts 200 dict def       % unrecognized dictionaries
                   52312: 
                   52313: %
                   52314: % All strings returned to the host go through Print. First pass through an
                   52315: % array has lengthonly set to true.
                   52316: %
                   52317: 
                   52318: /Print {
                   52319:        dup type /stringtype ne {scratchstring cvs} if
                   52320:        lengthonly {
                   52321:                length arraylength add /arraylength exch def
                   52322:        }{
                   52323:                dup length column add /column exch def
                   52324:                print flush
                   52325:                slowdown {1 pop} repeat
                   52326:        } ifelse
                   52327: } def
                   52328: 
                   52329: /Indent {level {(    ) Print} repeat} def
                   52330: /Newline {(\n) Print lengthonly not {/column 0 def} if} def
                   52331: 
                   52332: /NextLevel {/level level 1 add def multiline level 0 put} def
                   52333: /LastLevel {/level level 1 sub def} def
                   52334: 
                   52335: %
                   52336: % Make a unique name for each unrecognized dictionary and remember the name
                   52337: % and dictionary in OtherDicts.
                   52338: %
                   52339: 
                   52340: /Register {
                   52341:        dup type /dicttype eq {
                   52342:                /nextname nextname 1 add def
                   52343:                dup (UnknownDict   ) dup
                   52344:                (UnknownDict) length nextname (   ) cvs putinterval
                   52345:                0 (UnknownDict) length nextname (   ) cvs length add getinterval cvn
                   52346:                exch OtherDicts 3 1 roll put
                   52347:        } if
                   52348: } def
                   52349: 
                   52350: %
                   52351: % Replace array or dictionary values by known names. Lookups are in the
                   52352: % standard PostScript dictionaries and in OtherDicts. If found replace
                   52353: % the value by the name and make it executable so nametype omits the
                   52354: % leading /.
                   52355: %
                   52356: 
                   52357: /Replace {
                   52358:        false
                   52359:        1 index type /dicttype eq {pop true} if
                   52360:        1 index type /arraytype eq 2 index xcheck not and {pop true} if
                   52361:        {
                   52362:                false
                   52363:                [userdict systemdict statusdict serverdict OtherDicts] {
                   52364:                        {
                   52365:                                3 index eq
                   52366:                                        {exch pop exch pop cvx true exit}
                   52367:                                        {pop}
                   52368:                                ifelse
                   52369:                        } forall
                   52370:                        dup {exit} if
                   52371:                } forall
                   52372:                pop
                   52373:        } if
                   52374: } def
                   52375: 
                   52376: %
                   52377: % Simple type handlers. In some cases (e.g. savetype) what's returned can't
                   52378: % be sent back through the interpreter.
                   52379: %
                   52380: 
                   52381: /booleantype {{(true )}{(false )} ifelse Print} def
                   52382: /marktype {pop (mark ) Print} def
                   52383: /nulltype {pop (null ) Print} def
                   52384: /integertype {Print ( ) Print} def
                   52385: /realtype {Print ( ) Print} def
                   52386: /filetype {pop (-file- ) Print} def
                   52387: /fonttype {pop (-fontID- ) Print} def
                   52388: /savetype {pop (-saveobj- ) Print} def
                   52389: 
                   52390: %
                   52391: % Special formatting for operators is enabled if the flag in multiline
                   52392: % (for the current level) is set to 1. In that case each operator, after
                   52393: % being printed, is looked up in OperatorDict. If found the value is used
                   52394: % as an index into the OperatorProcs array and the object at that index
                   52395: % is retrieved and executed. Currently only used to choose the operators
                   52396: % that end a line.
                   52397: %
                   52398: 
                   52399: /operatortype {
                   52400:        dup Print ( ) Print
                   52401:        multiline level get 1 eq {
                   52402:                scratchstring cvs cvn dup OperatorDict exch known {
                   52403:                        OperatorDict exch get
                   52404:                        OperatorProcs exch get exec
                   52405:                }{
                   52406:                        pop
                   52407:                        column lastcolumn gt {Newline Indent} if
                   52408:                } ifelse
                   52409:        }{pop} ifelse
                   52410: } def
                   52411: 
                   52412: %
                   52413: % Executable names are passed to operatortype. Non-executable names get a
                   52414: % leading /.
                   52415: %
                   52416: 
                   52417: /nametype {
                   52418:        dup xcheck {
                   52419:                operatortype
                   52420:        }{
                   52421:                (/) Print Print ( ) Print
                   52422:        } ifelse
                   52423: } def
                   52424: 
                   52425: %
                   52426: % Arrays are processed in two passes. The first computes the length of the
                   52427: % string returned to the host without any special formatting. If it extends
                   52428: % past the last column special formatting is enabled by setting a flag in
                   52429: % array multiline. Arrays are processed in a for loop so the last element
                   52430: % easily recognized. At that point special fortmatting is disabled.
                   52431: %
                   52432: 
                   52433: /packedarraytype {arraytype} def
                   52434: 
                   52435: /arraytype {
                   52436:        NextLevel
                   52437:        lengthonly not {
                   52438:                /lengthonly true def
                   52439:                /arraylength 0 def
                   52440:                dup dup type exec
                   52441:                arraylength 20 gt arraylength column add lastcolumn gt and {
                   52442:                        multiline level 1 put
                   52443:                } if
                   52444:                /lengthonly false def
                   52445:        } if
                   52446: 
                   52447:        dup rcheck not {
                   52448:                (-array- ) Print pop
                   52449:        }{
                   52450:                dup xcheck {({)}{([)} ifelse Print
                   52451:                multiline level get 0 ne {Newline Indent}{( ) Print} ifelse
                   52452:                0 1 2 index length 1 sub {
                   52453:                        2 copy exch length 1 sub eq multiline level get 1 eq and {
                   52454:                                multiline level 2 put
                   52455:                        } if
                   52456:                        2 copy get exch pop
                   52457:                        dup type /dicttype eq {
                   52458:                                Replace
                   52459:                                dup type /dicttype eq {
                   52460:                                        dup Register Replace
                   52461:                                        recursive {
                   52462:                                                2 copy cvlit
                   52463:                                                /def load 3 1 roll
                   52464:                                                count 3 roll
                   52465:                                        } if
                   52466:                                        exch pop
                   52467:                                } if
                   52468:                        } if
                   52469:                        dup type exec
                   52470:                        dup xcheck not multiline level get 1 eq and {
                   52471:                                0 index type /arraytype eq
                   52472:                                1 index type /packedarray eq or
                   52473:                                1 index type /stringtype eq or {Newline Indent} if
                   52474:                        } if
                   52475:                } for
                   52476:                multiline level get 0 ne {Newline LastLevel Indent NextLevel} if
                   52477:                xcheck {(} )}{(] )} ifelse Print
                   52478:        } ifelse
                   52479:        LastLevel
                   52480: } def
                   52481: 
                   52482: %
                   52483: % Dictionary handler. Try to replace the value by a name before processing
                   52484: % the dictionary.
                   52485: %
                   52486: 
                   52487: /dicttype {
                   52488:        dup
                   52489:        rcheck not {
                   52490:                (-dictionary- ) Print pop
                   52491:        }{
                   52492:                dup maxlength Print ( dict dup begin) Print Newline
                   52493:                NextLevel
                   52494:                {
                   52495:                        1 index OmitNames exch known {
                   52496:                                pop pop
                   52497:                        }{
                   52498:                                Indent
                   52499:                                Replace         % arrays and dicts by known names
                   52500:                                Register        % new dictionaries in OtherDicts
                   52501:                                exch
                   52502:                                cvlit dup type exec     % key first - force a /
                   52503:                                dup type exec           % then the value
                   52504:                                (def) Print Newline
                   52505:                        } ifelse
                   52506:                } forall
                   52507:                LastLevel
                   52508:                Indent
                   52509:                (end ) Print
                   52510:        } ifelse
                   52511: } def
                   52512: 
                   52513: %
                   52514: % Strings containing characters not in AsciiDict are returned in hex. All
                   52515: % others are ASCII strings and use AsciiDict for character mapping.
                   52516: %
                   52517: 
                   52518: /onecharstring ( ) def
                   52519: /twocharstring (  ) def
                   52520: 
                   52521: /stringtype {
                   52522:        dup
                   52523:        rcheck not {
                   52524:                (-string- ) Print
                   52525:        }{
                   52526:                /hexit false def
                   52527:                dup {
                   52528:                        onecharstring 0 3 -1 roll put
                   52529:                        AsciiDict onecharstring cvn known not {
                   52530:                                /hexit true def exit
                   52531:                        } if
                   52532:                } forall
                   52533: 
                   52534:                hexit {(<)}{(\()} ifelse Print
                   52535:                0 1 2 index length 1 sub {
                   52536:                        2 copy 1 getinterval exch pop
                   52537:                        hexit {
                   52538:                                0 get /n exch def
                   52539:                                n -4 bitshift 16#F and 16 twocharstring cvrs pop
                   52540:                                n 16#F and twocharstring 1 1 getinterval 16 exch cvrs pop
                   52541:                                twocharstring
                   52542:                        }{cvn AsciiDict exch get} ifelse
                   52543:                        Print
                   52544:                        column lastcolumn gt {
                   52545:                                hexit not {(\\) Print} if
                   52546:                                Newline
                   52547:                        } if
                   52548:                } for
                   52549:                hexit {(> )}{(\) )} ifelse Print
                   52550:        } ifelse
                   52551:        pop
                   52552: } def
                   52553: 
                   52554: %
                   52555: % ASCII characters and replacement strings. Ensures the returned string will
                   52556: % reproduce the original when passed through the scanner. Strings containing
                   52557: % characters not in this list should be returned as hex strings.
                   52558: %
                   52559: 
                   52560: /AsciiDict 128 dict dup begin
                   52561:        (\n) cvn (\\n) def
                   52562:        (\r) cvn (\\r) def
                   52563:        (\t) cvn (\\t) def
                   52564:        (\b) cvn (\\b) def
                   52565:        (\f) cvn (\\f) def
                   52566:        ( ) cvn ( ) def
                   52567:        (!) cvn (!) def
                   52568:        (") cvn (") def
                   52569:        (#) cvn (#) def
                   52570:        ($) cvn ($) def
                   52571:        (%) cvn (\\%) def
                   52572:        (&) cvn (&) def
                   52573:        (') cvn (') def
                   52574:        (\() cvn (\\\() def
                   52575:        (\)) cvn (\\\)) def
                   52576:        (*) cvn (*) def
                   52577:        (+) cvn (+) def
                   52578:        (,) cvn (,) def
                   52579:        (-) cvn (-) def
                   52580:        (.) cvn (.) def
                   52581:        (/) cvn (/) def
                   52582:        (0) cvn (0) def
                   52583:        (1) cvn (1) def
                   52584:        (2) cvn (2) def
                   52585:        (3) cvn (3) def
                   52586:        (4) cvn (4) def
                   52587:        (5) cvn (5) def
                   52588:        (6) cvn (6) def
                   52589:        (7) cvn (7) def
                   52590:        (8) cvn (8) def
                   52591:        (9) cvn (9) def
                   52592:        (:) cvn (:) def
                   52593:        (;) cvn (;) def
                   52594:        (<) cvn (<) def
                   52595:        (=) cvn (=) def
                   52596:        (>) cvn (>) def
                   52597:        (?) cvn (?) def
                   52598:        (@) cvn (@) def
                   52599:        (A) cvn (A) def
                   52600:        (B) cvn (B) def
                   52601:        (C) cvn (C) def
                   52602:        (D) cvn (D) def
                   52603:        (E) cvn (E) def
                   52604:        (F) cvn (F) def
                   52605:        (G) cvn (G) def
                   52606:        (H) cvn (H) def
                   52607:        (I) cvn (I) def
                   52608:        (J) cvn (J) def
                   52609:        (K) cvn (K) def
                   52610:        (L) cvn (L) def
                   52611:        (M) cvn (M) def
                   52612:        (N) cvn (N) def
                   52613:        (O) cvn (O) def
                   52614:        (P) cvn (P) def
                   52615:        (Q) cvn (Q) def
                   52616:        (R) cvn (R) def
                   52617:        (S) cvn (S) def
                   52618:        (T) cvn (T) def
                   52619:        (U) cvn (U) def
                   52620:        (V) cvn (V) def
                   52621:        (W) cvn (W) def
                   52622:        (X) cvn (X) def
                   52623:        (Y) cvn (Y) def
                   52624:        (Z) cvn (Z) def
                   52625:        ([) cvn ([) def
                   52626:        (\\) cvn (\\\\) def
                   52627:        (]) cvn (]) def
                   52628:        (^) cvn (^) def
                   52629:        (_) cvn (_) def
                   52630:        (`) cvn (`) def
                   52631:        (a) cvn (a) def
                   52632:        (b) cvn (b) def
                   52633:        (c) cvn (c) def
                   52634:        (d) cvn (d) def
                   52635:        (e) cvn (e) def
                   52636:        (f) cvn (f) def
                   52637:        (g) cvn (g) def
                   52638:        (h) cvn (h) def
                   52639:        (i) cvn (i) def
                   52640:        (j) cvn (j) def
                   52641:        (k) cvn (k) def
                   52642:        (l) cvn (l) def
                   52643:        (m) cvn (m) def
                   52644:        (n) cvn (n) def
                   52645:        (o) cvn (o) def
                   52646:        (p) cvn (p) def
                   52647:        (q) cvn (q) def
                   52648:        (r) cvn (r) def
                   52649:        (s) cvn (s) def
                   52650:        (t) cvn (t) def
                   52651:        (u) cvn (u) def
                   52652:        (v) cvn (v) def
                   52653:        (w) cvn (w) def
                   52654:        (x) cvn (x) def
                   52655:        (y) cvn (y) def
                   52656:        (z) cvn (z) def
                   52657:        ({) cvn ({) def
                   52658:        (|) cvn (|) def
                   52659:        (}) cvn (}) def
                   52660:        (~) cvn (~) def
                   52661: end def
                   52662: 
                   52663: %
                   52664: % OperatorDict can help format procedure listings. The value assigned to each
                   52665: % name is used as an index into the OperatorProcs array. The procedure at that
                   52666: % index is fetched and executed after the named operator is printed. What's in
                   52667: % OperatorDict is a matter of taste rather than correctness. The default list
                   52668: % represents our choice of which of Adobe's operators should end a line.
                   52669: %
                   52670: 
                   52671: /OperatorProcs [{} {Newline Indent}] def
                   52672: 
                   52673: /OperatorDict 250 dict def
                   52674: 
                   52675: OperatorDict   /arc                    1 put
                   52676: OperatorDict   /arcn                   1 put
                   52677: OperatorDict   /ashow                  1 put
                   52678: OperatorDict   /awidthshow             1 put
                   52679: OperatorDict   /banddevice             1 put
                   52680: OperatorDict   /begin                  1 put
                   52681: OperatorDict   /charpath               1 put
                   52682: OperatorDict   /clear                  1 put
                   52683: OperatorDict   /cleardictstack         1 put
                   52684: OperatorDict   /cleartomark            1 put
                   52685: OperatorDict   /clip                   1 put
                   52686: OperatorDict   /clippath               1 put
                   52687: OperatorDict   /closefile              1 put
                   52688: OperatorDict   /closepath              1 put
                   52689: OperatorDict   /concat                 1 put
                   52690: OperatorDict   /copypage               1 put
                   52691: OperatorDict   /curveto                1 put
                   52692: OperatorDict   /def                    1 put
                   52693: OperatorDict   /end                    1 put
                   52694: OperatorDict   /eoclip                 1 put
                   52695: OperatorDict   /eofill                 1 put
                   52696: OperatorDict   /erasepage              1 put
                   52697: OperatorDict   /exec                   1 put
                   52698: OperatorDict   /exit                   1 put
                   52699: OperatorDict   /fill                   1 put
                   52700: OperatorDict   /flattenpath            1 put
                   52701: OperatorDict   /flush                  1 put
                   52702: OperatorDict   /flushfile              1 put
                   52703: OperatorDict   /for                    1 put
                   52704: OperatorDict   /forall                 1 put
                   52705: OperatorDict   /framedevice            1 put
                   52706: OperatorDict   /grestore               1 put
                   52707: OperatorDict   /grestoreall            1 put
                   52708: OperatorDict   /gsave                  1 put
                   52709: OperatorDict   /handleerror            1 put
                   52710: OperatorDict   /if                     1 put
                   52711: OperatorDict   /ifelse                 1 put
                   52712: OperatorDict   /image                  1 put
                   52713: OperatorDict   /imagemask              1 put
                   52714: OperatorDict   /initclip               1 put
                   52715: OperatorDict   /initgraphics           1 put
                   52716: OperatorDict   /initmatrix             1 put
                   52717: OperatorDict   /kshow                  1 put
                   52718: OperatorDict   /lineto                 1 put
                   52719: OperatorDict   /loop                   1 put
                   52720: OperatorDict   /moveto                 1 put
                   52721: OperatorDict   /newpath                1 put
                   52722: OperatorDict   /nulldevice             1 put
                   52723: OperatorDict   /pathforall             1 put
                   52724: OperatorDict   /print                  1 put
                   52725: OperatorDict   /prompt                 1 put
                   52726: OperatorDict   /put                    1 put
                   52727: OperatorDict   /putinterval            1 put
                   52728: OperatorDict   /quit                   1 put
                   52729: OperatorDict   /rcurveto               1 put
                   52730: OperatorDict   /renderbands            1 put
                   52731: OperatorDict   /repeat                 1 put
                   52732: OperatorDict   /resetfile              1 put
                   52733: OperatorDict   /restore                1 put
                   52734: OperatorDict   /reversepath            1 put
                   52735: OperatorDict   /rlineto                1 put
                   52736: OperatorDict   /rmoveto                1 put
                   52737: OperatorDict   /rotate                 1 put
                   52738: OperatorDict   /run                    1 put
                   52739: OperatorDict   /scale                  1 put
                   52740: OperatorDict   /setcachedevice         1 put
                   52741: OperatorDict   /setcachelimit          1 put
                   52742: OperatorDict   /setcacheparams         1 put
                   52743: OperatorDict   /setcharwidth           1 put
                   52744: OperatorDict   /setdash                1 put
                   52745: OperatorDict   /setdefaulttimeouts     1 put
                   52746: OperatorDict   /setdostartpage         1 put
                   52747: OperatorDict   /seteescratch           1 put
                   52748: OperatorDict   /setflat                1 put
                   52749: OperatorDict   /setfont                1 put
                   52750: OperatorDict   /setgray                1 put
                   52751: OperatorDict   /sethsbcolor            1 put
                   52752: OperatorDict   /setidlefonts           1 put
                   52753: OperatorDict   /setjobtimeout          1 put
                   52754: OperatorDict   /setlinecap             1 put
                   52755: OperatorDict   /setlinejoin            1 put
                   52756: OperatorDict   /setlinewidth           1 put
                   52757: OperatorDict   /setmargins             1 put
                   52758: OperatorDict   /setmatrix              1 put
                   52759: OperatorDict   /setmiterlimit          1 put
                   52760: OperatorDict   /setpacking             1 put
                   52761: OperatorDict   /setpagetype            1 put
                   52762: OperatorDict   /setprintname           1 put
                   52763: OperatorDict   /setrgbcolor            1 put
                   52764: OperatorDict   /setsccbatch            1 put
                   52765: OperatorDict   /setsccinteractive      1 put
                   52766: OperatorDict   /setscreen              1 put
                   52767: OperatorDict   /settransfer            1 put
                   52768: OperatorDict   /show                   1 put
                   52769: OperatorDict   /showpage               1 put
                   52770: OperatorDict   /start                  1 put
                   52771: OperatorDict   /stop                   1 put
                   52772: OperatorDict   /store                  1 put
                   52773: OperatorDict   /stroke                 1 put
                   52774: OperatorDict   /strokepath             1 put
                   52775: OperatorDict   /translate              1 put
                   52776: OperatorDict   /widthshow              1 put
                   52777: OperatorDict   /write                  1 put
                   52778: OperatorDict   /writehexstring         1 put
                   52779: OperatorDict   /writestring            1 put
                   52780: 
                   52781: end def
                   52782: 
                   52783: %
                   52784: % Put an object on the stack and call Grabit. Output continues until stack
                   52785: % is empty. For example,
                   52786: %
                   52787: %              /letter load Grabit
                   52788: %
                   52789: % prints a listing of the letter procedure.
                   52790: %
                   52791: 
                   52792: /Grabit {
                   52793:        /saveobj save def
                   52794:        GrabitDict begin
                   52795:                {
                   52796:                        count 0 eq {exit} if
                   52797:                        count {dup type exec} repeat
                   52798:                        (\n) print flush
                   52799:                } loop
                   52800:        end
                   52801:        currentpoint                    % for hardcopy output
                   52802:        saveobj restore
                   52803:        moveto
                   52804: } def
                   52805: 
                   52806: 0707070014230735451006440057030057030000010011550522627503200003200000002271post.src/grabit/grabit.sh#
                   52807: # Print a listing of an object, often a dictionary or an array. Something
                   52808: # like ==, but the output is often easier to read and closer to PostScript
                   52809: # that can be sent back through the interpreter.
                   52810: #
                   52811: 
                   52812: POSTLIB=/usr/lib/postscript
                   52813: PROLOGUE=$POSTLIB/grabit.ps
                   52814: 
                   52815: COPYFILE=
                   52816: RECURSIVE=true
                   52817: OMITNAMES="/Grabit /GrabitDict"
                   52818: 
                   52819: NONCONFORMING="%!PS"
                   52820: ENDPROLOG="%%EndProlog"
                   52821: BEGINSETUP="%%BeginSetup"
                   52822: ENDSETUP="%%EndSetup"
                   52823: TRAILER="%%Trailer"
                   52824: 
                   52825: SETUP=GrabitSetup
                   52826: 
                   52827: while [ -n "$1" ]; do
                   52828:     case $1 in
                   52829:        -d)  RECURSIVE=false;;
                   52830: 
                   52831:        -o)  shift; OMITNAMES="$OMITNAMES $1";;
                   52832:        -o*) OMITNAMES="$OMITNAMES `echo $1 | sed s/-o//`";;
                   52833: 
                   52834:        -C)  shift; COPYFILE="$COPYFILE $1";;
                   52835:        -C*) COPYFILE="$COPYFILE `echo $1 | sed s/-C//`";;
                   52836: 
                   52837:        -L)  shift; PROLOGUE=$1;;
                   52838:        -L*) PROLOGUE=`echo $1 | sed s/-L//`;;
                   52839: 
                   52840:        --)  shift; break;;
                   52841: 
                   52842:        -*)  echo "$0: illegal option $1" >&2; exit 1;;
                   52843: 
                   52844:        *)   break;;
                   52845:     esac
                   52846:     shift
                   52847: done
                   52848: 
                   52849: echo $NONCONFORMING
                   52850: cat $PROLOGUE
                   52851: echo $ENDPROLOG
                   52852: echo $BEGINSETUP
                   52853: cat ${COPYFILE:-/dev/null}
                   52854: echo "GrabitDict begin"
                   52855: echo "/recursive $RECURSIVE def"
                   52856: 
                   52857: echo mark
                   52858: for i in $OMITNAMES; do
                   52859:     case $i in
                   52860:        /*) echo "$i";;
                   52861:        ?*) echo "/$i";;
                   52862:     esac
                   52863: done
                   52864: echo GrabitSetup
                   52865: 
                   52866: echo end
                   52867: echo $ENDSETUP
                   52868: 
                   52869: for i do
                   52870:     echo "$i Grabit"
                   52871: done
                   52872: 
                   52873: 0707070014230733311006400057030057030000011776300522633074300003100000003520post.src/grabit/grabit.1.ds dQ /usr/lib/postscript
                   52874: .TH GRABIT 1 "DWB 3.2"
                   52875: .SH NAME
                   52876: .B grabit
                   52877: \- recover the text representation of PostScript objects
                   52878: .SH SYNOPSIS
                   52879: \*(mBgrabit\f1
                   52880: .OP "" options []
                   52881: .OP "" object
                   52882: \&...
                   52883: .SH DESCRIPTION
                   52884: .B Grabit
                   52885: builds a PostScript program that generates a text representation
                   52886: of one or more PostScript
                   52887: .IR object s.
                   52888: The program is written on the standard output.
                   52889: The following
                   52890: .I options
                   52891: are understood:
                   52892: .TP 1.0i
                   52893: .OP \-d
                   52894: Do not automatically dump the contents of unrecognized dictionary
                   52895: objects found in PostScript arrays.
                   52896: .TP 1.0i
                   52897: .OP \-C file
                   52898: Copy
                   52899: .I file
                   52900: into the PostScript program.
                   52901: .I file
                   52902: must contain legitimate PostScript.
                   52903: .TP 1.0i
                   52904: .OP \-L file
                   52905: Use
                   52906: .I file
                   52907: as the PostScript prologue.
                   52908: .br
                   52909: The default is
                   52910: .MR \*(dQ/grabit.ps .
                   52911: .PP
                   52912: When the program built by
                   52913: .B grabit
                   52914: is sent to a PostScript printer the text representation of each
                   52915: .I object
                   52916: is normally returned to the host computer over the printer's serial port.
                   52917: Use
                   52918: .BR hardcopy (1)
                   52919: if you do not have access to the port.
                   52920: .PP
                   52921: Each argument should be a PostScript
                   52922: .I object
                   52923: or commands that generate a PostScript
                   52924: .IR object .
                   52925: The program built by
                   52926: .B grabit
                   52927: produces results that are often close to legitimate PostScript that
                   52928: can be successfully sent through an interpreter.
                   52929: .SH EXAMPLES
                   52930: .PP
                   52931: If you can read and write 
                   52932: .MW /dev/tty00
                   52933: and there is a PostScript printer on
                   52934: the other end, then
                   52935: recover the readable portions of the
                   52936: .MW userdict
                   52937: and
                   52938: .MW statusdict
                   52939: dictionaries:
                   52940: .EX
                   52941: grabit userdict statusdict | postio -l/dev/tty00 -t
                   52942: .EE
                   52943: Otherwise get a printout of the dictionaries:
                   52944: .EX
                   52945: grabit userdict statusdict | hardcopy | lp ...
                   52946: .EE
                   52947: Arguments should be PostScript code that leaves an object on the stack.
                   52948: Dump the contents of Adobe's
                   52949: .MW internaldict
                   52950: dictionary:
                   52951: .EX
                   52952: grabit "1183615869 internaldict" | postio -l/dev/tty00 -t
                   52953: .EE
                   52954: .SH FILES
                   52955: .MW \*(dQ/grabit.ps
                   52956: .SH SEE ALSO
                   52957: .BR hardcopy (1),
                   52958: .BR postio (1)
                   52959: 0707070014230642640407550057030057030000021711540522633074500002200000000000post.src/hardcopy0707070014230642651006440057030057030000011711550522627503200003600000003137post.src/hardcopy/hardcopy.sh#
                   52960: # Generate paper output from the data that a PostScript program normally
                   52961: # sends back to a host computer using file output operators.
                   52962: #
                   52963: 
                   52964: POSTLIB=/usr/lib/postscript
                   52965: PROLOGUE=$POSTLIB/hardcopy.ps
                   52966: 
                   52967: OPTIONS=
                   52968: MODE=portrait
                   52969: 
                   52970: NONCONFORMING="%!PS"
                   52971: ENDPROLOG="%%EndProlog"
                   52972: BEGINSETUP="%%BeginSetup"
                   52973: ENDSETUP="%%EndSetup"
                   52974: TRAILER="%%Trailer"
                   52975: 
                   52976: SETUP=HardcopySetup
                   52977: DONE="(%stdout)(w) file -1 write"
                   52978: 
                   52979: while [ -n "$1" ]; do
                   52980:     case $1 in
                   52981:        -c)  shift; OPTIONS="$OPTIONS /#copies $1 store";;
                   52982:        -c*) OPTIONS="$OPTIONS /#copies `echo $1 | sed s/-c//` store";;
                   52983: 
                   52984:        -f)  shift; OPTIONS="$OPTIONS /font /$1 def";;
                   52985:        -f*) OPTIONS="$OPTIONS /font /`echo $1 | sed s/-f//` def";;
                   52986: 
                   52987:        -p)  shift; MODE=$1;;
                   52988:        -p*) MODE=`echo $1 | sed s/-p//`;;
                   52989: 
                   52990:        -m)  shift; OPTIONS="$OPTIONS /magnification $1 def";;
                   52991:        -m*) OPTIONS="$OPTIONS /magnification `echo $1 | sed s/-m//` def";;
                   52992: 
                   52993:        -s)  shift; OPTIONS="$OPTIONS /pointsize $1 def";;
                   52994:        -s*) OPTIONS="$OPTIONS /pointsize `echo $1 | sed s/-s//` def";;
                   52995: 
                   52996:        -x)  shift; OPTIONS="$OPTIONS /xoffset $1 def";;
                   52997:        -x*) OPTIONS="$OPTIONS /xoffset `echo $1 | sed s/-x//` def";;
                   52998: 
                   52999:        -y)  shift; OPTIONS="$OPTIONS /yoffset $1 def";;
                   53000:        -y*) OPTIONS="$OPTIONS /yoffset `echo $1 | sed s/-y//` def";;
                   53001: 
                   53002:        -L)  shift; PROLOGUE=$1;;
                   53003:        -L*) PROLOGUE=`echo $1 | sed s/-L//`;;
                   53004: 
                   53005:        --)  shift; break;;
                   53006: 
                   53007:        -*)  echo "$0: illegal option $1" >&2; exit 1;;
                   53008: 
                   53009:        *)   break;;
                   53010:     esac
                   53011:     shift
                   53012: done
                   53013: 
                   53014: case "$MODE" in
                   53015:     l*) OPTIONS="$OPTIONS /landscape true def";;
                   53016:     *)  OPTIONS="$OPTIONS /landscape false def";;
                   53017: esac
                   53018: 
                   53019: echo $NONCONFORMING
                   53020: cat $PROLOGUE
                   53021: echo $ENDPROLOG
                   53022: echo $BEGINSETUP
                   53023: echo $OPTIONS
                   53024: echo $SETUP
                   53025: echo $ENDSETUP
                   53026: 
                   53027: cat $*
                   53028: 
                   53029: echo $TRAILER
                   53030: echo $DONE
                   53031: 
                   53032: 0707070014230642661006440057030057030000011711700522627503200003600000007544post.src/hardcopy/hardcopy.ps%
                   53033: % Redefiniton of the PostScript file output operators so results go to paper.
                   53034: % Complicated and slow, but the implementation doesn't place many demands on
                   53035: % included PostScript. About all that's required is gentle treatment of the
                   53036: % graphics state between write calls.
                   53037: %
                   53038: 
                   53039: /#copies 1 store
                   53040: /aspectratio 1 def
                   53041: /font /Courier def
                   53042: /formsperpage 1 def
                   53043: /landscape false def
                   53044: /magnification 1 def
                   53045: /orientation 0 def
                   53046: /pointsize 10 def
                   53047: /rotation 1 def
                   53048: /xoffset .1 def
                   53049: /yoffset .1 def
                   53050: 
                   53051: /roundpage true def
                   53052: /useclippath true def
                   53053: /pagebbox [0 0 612 792] def
                   53054: 
                   53055: /inch {72 mul} def
                   53056: /min {2 copy gt {exch} if pop} def
                   53057: 
                   53058: /HardcopySetup {
                   53059:        landscape {/orientation 90 orientation add def} if
                   53060:        font findfont 1 1.1 div scalefont setfont
                   53061: 
                   53062:        pagedimensions
                   53063:        xcenter ycenter translate
                   53064:        orientation rotation mul rotate
                   53065:        width 2 div neg height 2 div translate
                   53066:        xoffset inch yoffset inch neg translate
                   53067:        pointsize 1.1 mul dup scale
                   53068:        magnification dup aspectratio mul scale
                   53069:        height width div 1 min dup scale
                   53070:        0 -1 translate
                   53071:        0 0 moveto
                   53072: } def
                   53073: 
                   53074: /pagedimensions {
                   53075:        useclippath {
                   53076:                /pagebbox [clippath pathbbox newpath] def
                   53077:                roundpage currentdict /roundpagebbox known and {roundpagebbox} if
                   53078:        } if
                   53079:        pagebbox aload pop
                   53080:        4 -1 roll exch 4 1 roll 4 copy
                   53081:        landscape {4 2 roll} if
                   53082:        sub /width exch def
                   53083:        sub /height exch def
                   53084:        add 2 div /xcenter exch def
                   53085:        add 2 div /ycenter exch def
                   53086: } def
                   53087: 
                   53088: %
                   53089: % Unbind the operators in an executable array or packedarray. Leaves the
                   53090: % unbound array or the original object on the stack.
                   53091: %
                   53092: 
                   53093: /Unbind {
                   53094:        0 index xcheck
                   53095:        1 index type /arraytype eq
                   53096:        2 index type /packedarraytype eq or and {
                   53097:                dup length array copy cvx
                   53098:                dup 0 exch {
                   53099:                        dup type /operatortype eq {
                   53100:                                (                          ) cvs cvn cvx
                   53101:                        } if
                   53102: 
                   53103:                        dup type /dicttype eq {
                   53104:                                dup maxlength dict exch {
                   53105:                                        Unbind
                   53106:                                        3 copy put pop pop
                   53107:                                } forall
                   53108:                        } if
                   53109: 
                   53110:                        0 index xcheck
                   53111:                        1 index type /arraytype eq
                   53112:                        2 index type /packedarraytype eq or and {
                   53113:                                Unbind
                   53114:                        } if
                   53115: 
                   53116:                        3 copy put pop
                   53117:                        1 add
                   53118:                } forall
                   53119:                pop
                   53120:        } if
                   53121: } def
                   53122: 
                   53123: %
                   53124: % New write operator - don't bind the definition! Expands tabs and backspaces,
                   53125: % wraps long lines, and starts a new page whenever necessary. The code that
                   53126: % handles newlines assumes lines are separated by one vertical unit.
                   53127: %
                   53128: 
                   53129: /write {
                   53130:        true exch
                   53131: 
                   53132:       %%case '\b':
                   53133:        dup 8#10 eq {
                   53134:                ( ) stringwidth pop neg 0 rmoveto
                   53135:                currentpoint pop 0 lt {
                   53136:                        currentpoint exch pop 0 exch moveto
                   53137:                } if
                   53138:                exch pop false exch
                   53139:        } if
                   53140: 
                   53141:       %%case '\t':
                   53142:        dup 8#11 eq {
                   53143:                currentpoint pop ( ) stringwidth pop div round cvi
                   53144:                8 mod 8 exch sub {
                   53145:                        2 index 8#40 write
                   53146:                } repeat
                   53147:                exch pop false exch
                   53148:        } if
                   53149: 
                   53150:       %%case '\n':
                   53151:        dup 8#12 eq {
                   53152:                currentpoint 0 exch 1 sub moveto pop
                   53153: 
                   53154:                gsave clippath pathbbox pop pop exch pop grestore
                   53155:                currentpoint exch pop 1 sub ge {
                   53156:                        2 index 8#14 write
                   53157:                } if
                   53158:                exch pop false exch
                   53159:        } if
                   53160: 
                   53161:       %%case '\f':
                   53162:        dup 8#14 eq {
                   53163:                gsave showpage grestore
                   53164:                0 0 moveto
                   53165:                exch pop false exch
                   53166:        } if
                   53167: 
                   53168:       %%case '\r':
                   53169:        dup 8#15 eq {
                   53170:                currentpoint 0 exch moveto pop
                   53171:                exch pop false exch
                   53172:        } if
                   53173: 
                   53174:       %%case EOF:
                   53175:        dup -1 eq {
                   53176:                currentpoint 0 ne exch 0 ne or {
                   53177:                        2 index 8#14 write
                   53178:                } if
                   53179:                exch pop false exch
                   53180:        } if
                   53181: 
                   53182:       %%default:
                   53183:        exch {
                   53184:                dup
                   53185:                gsave clippath pathbbox pop 3 1 roll pop pop grestore 
                   53186:                ( ) stringwidth pop currentpoint pop add le {
                   53187:                        2 index 8#12 write
                   53188:                } if
                   53189:                ( ) dup 0 4 -1 roll put show
                   53190:        } if
                   53191: 
                   53192:        pop             % the character
                   53193:        pop             % and file object
                   53194: } def
                   53195: 
                   53196: %
                   53197: % All the other file output operators call our redefined write operator.
                   53198: %
                   53199: 
                   53200: /print {
                   53201:        (%stdout) (w) file exch {1 index exch write} forall
                   53202:        pop
                   53203: } def
                   53204: 
                   53205: /writestring {
                   53206:        {1 index exch write} forall
                   53207:        pop
                   53208: } def
                   53209: 
                   53210: /writehexstring {
                   53211:        (0123456789ABCDEF) 3 1 roll {
                   53212:                dup
                   53213:                3 index exch -4 bitshift 16#F and get 2 index exch write
                   53214:                2 index exch 16#F and get 1 index exch write
                   53215:        } forall
                   53216:        pop pop
                   53217: } def
                   53218: 
                   53219: %
                   53220: % Unbind and redefine the remaining file output procedures.
                   53221: %
                   53222: 
                   53223: /= dup load Unbind def
                   53224: /== dup load Unbind def
                   53225: /stack dup load Unbind def
                   53226: /pstack dup load Unbind def
                   53227: 
                   53228: 0707070014230642671006440057030057030000011711570522627503200003100000000602post.src/hardcopy/READMERedirect output of the print operator to paper. Particularly useful if
                   53229: you're trying to extract information from a printer, but you don't have
                   53230: access to the data the printer returns to the host.
                   53231: 
                   53232: For example,
                   53233: 
                   53234:        FontDirectory {pop ==} forall
                   53235: 
                   53236: names all the fonts registered in the FontDirectory dictionary. Simple,
                   53237: but only if you can read the data returned to the host by the printer.
                   53238: 
                   53239: 0707070014230640011006400057030057030000011722500522633074500003500000005143post.src/hardcopy/hardcopy.1.ds dQ /usr/lib/postscript
                   53240: .TH HARDCOPY 1 "DWB 3.2"
                   53241: .SH NAME
                   53242: .B hardcopy
                   53243: \- redirects output from PostScript file operators to paper
                   53244: .SH SYNOPSIS
                   53245: \*(mBhardcopy\f1
                   53246: .OP "" options []
                   53247: .OP "" files []
                   53248: .SH DESCRIPTION
                   53249: .B hardcopy
                   53250: surrounds
                   53251: .I files
                   53252: with PostScript that redirects file output to paper,
                   53253: and writes the results on the standard output.
                   53254: If no
                   53255: .I files
                   53256: are specified, or if
                   53257: .OP \-
                   53258: is one of the input
                   53259: .IR files ,
                   53260: the standard input is read.
                   53261: The following
                   53262: .I options
                   53263: are understood:
                   53264: .TP 0.75i
                   53265: .OP \-c num
                   53266: Print
                   53267: .I num
                   53268: copies of each page.
                   53269: By default only one copy is printed.
                   53270: .TP 0.75i
                   53271: .OP \-f name
                   53272: Print
                   53273: .I files
                   53274: using font
                   53275: .IR name ,
                   53276: which should be the name of a constant width font.
                   53277: The default font is Courier.
                   53278: .TP 0.75i
                   53279: .OP \-m num
                   53280: Magnify each page by the factor
                   53281: .IR num .
                   53282: Pages are scaled uniformly about the origin,
                   53283: which is located near the upper left corner of
                   53284: each page.
                   53285: The default magnification is 1.0.
                   53286: .TP 0.75i
                   53287: .OP \-p mode
                   53288: Print
                   53289: .I files
                   53290: in either \*(mBportrait\fP or \*(mBlandscape\fP
                   53291: .IR mode .
                   53292: Only the first character of
                   53293: .I mode
                   53294: is significant.
                   53295: The default
                   53296: .I mode
                   53297: is \*(mBportrait\fP.
                   53298: .TP 0.75i
                   53299: .OP \-s num
                   53300: Print
                   53301: .I files
                   53302: using point size
                   53303: .IR num .
                   53304: When printing in landscape mode
                   53305: .I num
                   53306: is scaled by a factor that depends on the
                   53307: imaging area of the device.
                   53308: The default size for portrait mode is 10.
                   53309: .TP 0.75i
                   53310: .OP \-x num
                   53311: Translate the origin
                   53312: .I num
                   53313: inches along the positive x axis.
                   53314: The default
                   53315: coordinate system has the origin fixed near the
                   53316: upper left corner of the page, with positive
                   53317: x to the right and positive y down the page.
                   53318: Positive
                   53319: .I num
                   53320: moves everything right.
                   53321: The default offset is 0.25 inches.
                   53322: .TP 0.75i
                   53323: .OP \-y num
                   53324: Translate the origin
                   53325: .I num
                   53326: inches along the positive y axis.
                   53327: Positive
                   53328: .I num
                   53329: moves text down the page.
                   53330: The default offset is 0.25 inches.
                   53331: .TP 0.75i
                   53332: .OP \-L file
                   53333: Use
                   53334: .I file
                   53335: as the PostScript prologue.
                   53336: .br
                   53337: The default is
                   53338: .MR \*(dQ/hardcopy.ps .
                   53339: .PP
                   53340: .B hardcopy
                   53341: generates paper output from data that a PostScript program
                   53342: normally sends back to a host computer.
                   53343: It is particularly useful for recovering data from a printer
                   53344: that does not allow access to its serial port.
                   53345: .SH EXAMPLES
                   53346: For a list of ROM based fonts type:
                   53347: .EX
                   53348: echo 'FontDirectory {pop ==} forall' | hardcopy | lp \(el
                   53349: .EE
                   53350: To recover the version number of the PostScript interpreter:
                   53351: .EX
                   53352: echo 'version ==' | hardcopy -pland | lp \(el
                   53353: .EE
                   53354: To build and print a width table for font
                   53355: .MW R
                   53356: type:
                   53357: .EX
                   53358: trofftable -TLatin1 R | hardcopy | lp \(el
                   53359: .EE
                   53360: .SH WARNINGS
                   53361: Results are unpredictable if the input
                   53362: .I files
                   53363: make changes to the graphics state.
                   53364: .SH FILES
                   53365: .MW \*(dQ/hardcopy.ps
                   53366: .SH SEE ALSO
                   53367: .BR buildtables (1),
                   53368: .BR postio (1),
                   53369: .BR trofftable (1)
                   53370: 0707070014230640001006400057030057030000011713560522633074400003600000003016post.src/hardcopy/hardcopy.mkMAKE=/bin/make
                   53371: MAKEFILE=hardcopy.mk
                   53372: 
                   53373: OWNER=bin
                   53374: GROUP=bin
                   53375: 
                   53376: MAN1DIR=/tmp
                   53377: MAN5DIR=/usr/man/p_man/man5
                   53378: POSTLIB=/usr/lib/postscript
                   53379: POSTBIN=/usr/bin/postscript
                   53380: 
                   53381: all : hardcopy
                   53382: 
                   53383: install : all
                   53384:        @if [ ! -d "$(POSTBIN)" ]; then \
                   53385:            mkdir $(POSTBIN); \
                   53386:            chmod 755 $(POSTBIN); \
                   53387:            chgrp $(GROUP) $(POSTBIN); \
                   53388:            chown $(OWNER) $(POSTBIN); \
                   53389:        fi
                   53390:        @if [ ! -d "$(POSTLIB)" ]; then \
                   53391:            mkdir $(POSTLIB); \
                   53392:            chmod 755 $(POSTLIB); \
                   53393:            chgrp $(GROUP) $(POSTLIB); \
                   53394:            chown $(OWNER) $(POSTLIB); \
                   53395:        fi
                   53396:        cp hardcopy $(POSTBIN)/hardcopy
                   53397:        @chmod 755 $(POSTBIN)/hardcopy
                   53398:        @chgrp $(GROUP) $(POSTBIN)/hardcopy
                   53399:        @chown $(OWNER) $(POSTBIN)/hardcopy
                   53400:        cp hardcopy.ps $(POSTLIB)/hardcopy.ps
                   53401:        @chmod 644 $(POSTLIB)/hardcopy.ps
                   53402:        @chgrp $(GROUP) $(POSTLIB)/hardcopy.ps
                   53403:        @chown $(OWNER) $(POSTLIB)/hardcopy.ps
                   53404:        cp hardcopy.1 $(MAN1DIR)/hardcopy.1
                   53405:        @chmod 644 $(MAN1DIR)/hardcopy.1
                   53406:        @chgrp $(GROUP) $(MAN1DIR)/hardcopy.1
                   53407:        @chown $(OWNER) $(MAN1DIR)/hardcopy.1
                   53408: 
                   53409: 
                   53410: clean :
                   53411: 
                   53412: clobber : clean
                   53413:        rm -f hardcopy
                   53414: 
                   53415: hardcopy : hardcopy.sh
                   53416:        sed "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" hardcopy.sh >hardcopy
                   53417:        @chmod 755 hardcopy
                   53418: 
                   53419: changes :
                   53420:        @trap "" 1 2 3 15; \
                   53421:        sed \
                   53422:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
                   53423:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
                   53424:            -e "s'^MAN1DIR=.*'MAN1DIR=$(MAN1DIR)'" \
                   53425:            -e "s'^MAN5DIR=.*'MAN5DIR=$(MAN5DIR)'" \
                   53426:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
                   53427:            -e "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" \
                   53428:        $(MAKEFILE) >XXX.mk; \
                   53429:        mv XXX.mk $(MAKEFILE); \
                   53430:        sed \
                   53431:            -e "s'^.ds dQ.*'.ds dQ $(POSTLIB)'" \
                   53432:        hardcopy.1 >XXX.1; \
                   53433:        mv XXX.1 hardcopy.1
                   53434: 
                   53435: 
                   53436: 0707070014230735470407550057030057030000020011170522633100500002000000000000post.src/mcolor0707070014230735501006440057030057030000010012140522627503200003100000004007post.src/mcolor/color.sr.ds Dc black
                   53437: .ds Cc \*(Dc
                   53438: .de CL \" Color selection macro
                   53439: .      \"
                   53440: .      \"      $1=color (e.g. .CL red) or
                   53441: .      \"      $1=textcolor on backgroundcolor (e.g. .CL "red on blue")
                   53442: .      \"      $1=red green blue rgb (e.g. .CL ".2 .3 .4 rgb") or
                   53443: .      \"      $1=hue saturation brightness hsb (e.g. .CL ".5 .6 .7 hsb")
                   53444: .      \"      $2=text
                   53445: .      \"
                   53446: .      \" If no arguments are given the default color (usually black) will be
                   53447: .      \" restored. If $2 is omitted the color selected by $1 remains in effect
                   53448: .      \" until another color is selected. If two arguments are given $2 will be
                   53449: .      \" printed in color $1 and then the default color will be restored.
                   53450: .      \"
                   53451: .      \" The color of the text and the background can be selected by setting $1
                   53452: .      \" to "textcolor on backgroundcolor" where textcolor and backgroundcolor
                   53453: .      \" can be any of the known colors. For example use .CL "white on black"
                   53454: .      \" for reverse video printing. Changing color in a word can be accomplished
                   53455: .      \" by preceeding the characters with a \X'SetColor:val' command, where val
                   53456: .      \" is the color you wish to use. Named colors are case independent.
                   53457: .      \"
                   53458: .      \" Implementation details are device dependent and are handled in the
                   53459: .      \" appropriate post-processor. Requesting a color that's not available
                   53460: .      \" (eg. not defined in /usr/lib/postscript/color.ps) results in the use
                   53461: .      \" of default colors - black or white on black for reverse video mode.
                   53462: .      \"
                   53463: .      \" All colors may not be supported on every output device, and the direct
                   53464: .      \" specification of a color via an explicit rgb or hsb argument may also
                   53465: .      \" be device dependent. In any case, to be safe on PostScript devices, all
                   53466: .      \" numeric paramenters in the direct rgb or hsb specifications should lie
                   53467: .      \" between 0 and 1 (inclusive). The names of the currently available colors
                   53468: .      \" on PostScript printers are listed in file /usr/lib/postscript/color.ps.
                   53469: .      \"
                   53470: .mk Ov
                   53471: .if \\n(.$=0 .ds Cc \\*(Dc
                   53472: .if \\n(.$=1 .ds Cc \\$1
                   53473: .if \\n(.$<2 \\X'SetColor:\\*(Cc'
                   53474: .if \\n(.$=2 \\X'SetColor:\\$1'\\c
                   53475: .if \\n(.$=2 'sp |\\n(Ovu
                   53476: .if \\n(.$=2 \\$2
                   53477: .if \\n(.$=2 .mk Ov
                   53478: .if \\n(.$=2 \\X'SetColor:\\*(Cc'\\c
                   53479: 'sp |\\n(Ovu
                   53480: ..
                   53481: 0707070014230733361006400057030057030000010014750522633100500003100000002066post.src/mcolor/mcolor.5.ds dP /usr/lib/postscript
                   53482: .ds dT /usr/lib/tmac
                   53483: .TH MCOLOR 5
                   53484: .SH NAME
                   53485: .B mcolor
                   53486: \- color and reverse video macro
                   53487: .SH SYNOPSIS
                   53488: \*(mBtroff \-mcolor\f1
                   53489: .OP "" options []
                   53490: .OP "" files []
                   53491: .SH DESCRIPTION
                   53492: .B mcolor
                   53493: is a macro package for color selection and reverse video printing
                   53494: on PostScript printers.
                   53495: The package is compatible with most existing macro packages
                   53496: and includes the following macro:
                   53497: .TP 1.25i
                   53498: .MI .CL "\0color\0text"
                   53499: Prints
                   53500: .I text
                   53501: in
                   53502: .IR color .
                   53503: No arguments restores the default color (black).
                   53504: If
                   53505: .I text
                   53506: is omitted the selected
                   53507: .I color
                   53508: remains in effect until another
                   53509: .I color
                   53510: is selected.
                   53511: If two arguments are given the
                   53512: .I text
                   53513: is printed in
                   53514: .I color
                   53515: and then the default color is restored.
                   53516: .PP
                   53517: Both the text and background color can be selected.
                   53518: A
                   53519: .I color
                   53520: argument of
                   53521: .RI `` color1
                   53522: .MW on
                   53523: .IR color2 ''
                   53524: prints text in
                   53525: .I color1
                   53526: on a background in
                   53527: .I color2 .
                   53528: .PP
                   53529: Named colors must be listed in the
                   53530: ``colordict''
                   53531: dictionary in file
                   53532: .MR \*(dP/color.ps .
                   53533: .SH FILES
                   53534: .MW \*(dT/tmac.color
                   53535: .br
                   53536: .MW \*(dP/color.ps
                   53537: .SH SEE ALSO
                   53538: .BR troff (1),
                   53539: .BR dpost (1),
                   53540: .BR mps (5)
                   53541: 0707070014230732631006400057030057030000010014600522633100500003200000002056post.src/mcolor/mcolor.mk#
                   53542: # Not installing the man page.
                   53543: #
                   53544: 
                   53545: MAKE=/bin/make
                   53546: MAKEFILE=mcolor.mk
                   53547: 
                   53548: SYSTEM=V9
                   53549: VERSION=3.3.2
                   53550: 
                   53551: OWNER=bin
                   53552: GROUP=bin
                   53553: 
                   53554: POSTLIB=/usr/lib/postscript
                   53555: TMACDIR=/usr/lib/tmac
                   53556: 
                   53557: all :
                   53558:        @cp color.sr tmac.color
                   53559: 
                   53560: install : all
                   53561:        @if [ ! -d $(TMACDIR) ]; then \
                   53562:            mkdir $(TMACDIR); \
                   53563:            chmod 755 $(TMACDIR); \
                   53564:            chgrp $(GROUP) $(TMACDIR); \
                   53565:            chown $(OWNER) $(TMACDIR); \
                   53566:        fi
                   53567:        cp tmac.color $(TMACDIR)/tmac.color
                   53568:        @chmod 644 $(TMACDIR)/tmac.color
                   53569:        @chgrp $(GROUP) $(TMACDIR)/tmac.color
                   53570:        @chown $(OWNER) $(TMACDIR)/tmac.color
                   53571: 
                   53572: clean :
                   53573:        rm -f tmac.color
                   53574: 
                   53575: clobber : clean
                   53576: 
                   53577: changes :
                   53578:        @trap "" 1 2 3 15; \
                   53579:        sed \
                   53580:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
                   53581:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
                   53582:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
                   53583:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
                   53584:            -e "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" \
                   53585:            -e "s'^TMACDIR=.*'TMACDIR=$(TMACDIR)'" \
                   53586:        $(MAKEFILE) >X$(MAKEFILE); \
                   53587:        mv X$(MAKEFILE) $(MAKEFILE); \
                   53588:        sed \
                   53589:            -e "s'^.ds dP.*'.ds dP $(POSTLIB)'" \
                   53590:            -e "s'^.ds dT.*'.ds dT $(TMACDIR)'" \
                   53591:        mcolor.5 >Xmcolor.5; \
                   53592:        mv Xmcolor.5 mcolor.5
                   53593: 
                   53594: 0707070014230642720407550057030057030000021711770522633074700002300000000000post.src/mpictures0707070014230642731006440057030057030000011712120522627503300003700000010340post.src/mpictures/pictures.sr.de PI       \" Picture Include
                   53595: .      \" $1=file(page) $2=height,width,yoff,xoff $3=flags
                   53596: .      \" Height, width, xoff, and yoff are for the frame, flags is for the
                   53597: .      \" picture. Default dimensions are inches.
                   53598: \\X'PI:\\n(.o:\\n(.i:\\n(.l:\\n(.t:\\$1:\\$2:\\$3:'\\c
                   53599: ..
                   53600: .nr FT 0
                   53601: .de BP \" Begin a Picture
                   53602: .      \"
                   53603: .      \" $1=file(page) $2=height $3=width $4=position $5=offset $6=flags $7=label
                   53604: .      \"
                   53605: .      \" Height, width, position, and offset are for the frame, flags is for
                   53606: .      \" the picture. The postion flag should be l, c, r, or "". Omitting the
                   53607: .      \" position argument is also allowed for compatibility with the original
                   53608: .      \" version of the macro. In that case offset is taken relative to your
                   53609: .      \" left margin.
                   53610: .if \\n(FT>1 .EP
                   53611: .      \" Need these when we switch environments.
                   53612: .nr Ov \\n(.v
                   53613: .nr Oi \\n(.i
                   53614: .nr Ol \\n(.l
                   53615: .      \" Remember the arguments - sometimes as both a string and number register.
                   53616: .nr $2 \\$2i
                   53617: .nr $3 \\$3i
                   53618: .nr $4 \\$4i
                   53619: .ds $4 \\$4
                   53620: .nr $5 \\$5i
                   53621: .ds $5 \\$6
                   53622: .ds $6 \\$7
                   53623: .      \" Accept a few unadvertised position flags.
                   53624: .if '\\*($4'L' .ds $4 l
                   53625: .if '\\*($4'C' .ds $4 c
                   53626: .if '\\*($4'R' .ds $4 r
                   53627: .      \" A null with more than three arguments means l.
                   53628: .if \\n(.$>3 .if '\\*($4'' .ds $4 l
                   53629: .      \" Default frame dimensions if missing, zero, or null.
                   53630: .if !\\n($2>0 .nr $2 3.0i
                   53631: .if !\\n($3>0 .nr $3 \\n(.lu-\\n(.iu-\\n($4u
                   53632: .if !\\n($3>0 .nr $3 \\n($2u
                   53633: .      \" Figure out the offset that will be used the rest of the way.
                   53634: .if '\\*($4'l' .nr $4 \\n($5u
                   53635: .if '\\*($4'c' .nr $4 (\\n(.lu-\\n(.iu-\\n($3u)/2u+\\n($5u
                   53636: .if '\\*($4'r' .nr $4 \\n(.lu-\\n(.iu-\\n($3u+\\n($5u
                   53637: .      \" If we haven't recognized the position flag assume it wasn't given and
                   53638: .      \" treat argument four as an offset from the left.
                   53639: .if !'\\*($4'l' .if !'\\*($4'c' .if !'\\*($4'r' .ds $5 \\$5
                   53640: .if !'\\*($4'l' .if !'\\*($4'c' .if !'\\*($4'r' .ds $6 \\$6
                   53641: .      \" Set increments for line length and indent.
                   53642: .nr Ii \\n($3u+\\n($4u+.1i
                   53643: .nr Il \\n(.lu-\\n(.iu-\\n($4u+.1i
                   53644: .      \" Set the frame type to one of:
                   53645: .      \"      0 - frame is as wide as a line of text - skip over it.
                   53646: .      \"      1 - fits in left or right margins
                   53647: .      \"      2 - fill with text on the right
                   53648: .      \"      3 - on the left
                   53649: .      \"      4 - or on both sides of the frame
                   53650: .      \"      5 - only set in EP if FT was 4 and now filling on the right.
                   53651: .      \" Assume the frame is as wide as a line of text, then check dimensions
                   53652: .      \" to see what's really true. The order of these tests is important!
                   53653: .nr FT 0
                   53654: .if \\n($4u>1.0i .nr FT 3
                   53655: .if \\n($4u+\\n(.iu>=\\n(.lu .nr FT 1
                   53656: .if \\n($3u+\\n($4u+\\n(.iu+1.0i<\\n(.lu .nr FT 2
                   53657: .if \\n($3u+\\n($4u<=0 .nr FT 1
                   53658: .if \\n(FT=2 .if \\n($4u>1.0i .nr FT 4
                   53659: .      \" Ask for some vertical space - labeled pictures need a little extra,
                   53660: .      \" margin pictures a little less.
                   53661: .if \\n(FT=1 .if '\\*($6'' .ne \\n($2u
                   53662: .if \\n(FT=1 .if !'\\*($6'' .ne \\n($2u+2v
                   53663: .if !\\n(FT=1 .if '\\*($6'' .ne \\n($2u+3v
                   53664: .if !\\n(FT=1 .if !'\\*($6'' .ne \\n($2u+5v
                   53665: .      \" Save our place, draw the picture, label it, and return. Need precise
                   53666: .      \" control of when \X'...' is put out - thus the new environment.
                   53667: .mk Oh
                   53668: .ev 1
                   53669: .in \\n(Oiu
                   53670: .ll \\n(Olu
                   53671: .vs \\n(Ovu
                   53672: .if \\n(FT=1 .sp -1v
                   53673: .if \\n(FT=1 .PI \\$1 \\n($2u,\\n($3u,\\n(.vu,\\n($4u t\\*($5
                   53674: .if !\\n(FT=1 .PI \\$1 \\n($2u,\\n($3u,\\n(.vu,\\n($4u \\*($5
                   53675: .in
                   53676: .ll
                   53677: .vs
                   53678: .ev
                   53679: .lt \\n($3u
                   53680: .tl \(ts\(ts\\h'\\n($4u+\\n(.iu'\\v'\\n($2u+1.5v'\\*($6\\v'-\\n($2u-1.5v'\\h'-\\n($4u-\\n(.iu'\(ts\(ts
                   53681: .lt
                   53682: 'sp |\\n(Ohu
                   53683: .      \" Figure out what to do with the text that follows.
                   53684: .if !'\\*($6'' .nr $2 +2v
                   53685: .if \\n(FT=0 .sp \\n($2u+2v
                   53686: .if \\n(FT=1 .nr FT 0
                   53687: .if \\n(FT=2 'in +\\n(Iiu
                   53688: .if \\n(FT>2 .ll -\\n(Ilu
                   53689: .if \\n(FT>1 .di BB
                   53690: .if \\n(FT>1 .dt \\n($2u+2v+1u EP
                   53691: .      \" Clean things up.
                   53692: .rr $2
                   53693: .rr $3
                   53694: .rr $4
                   53695: .rm $4
                   53696: .rr $5
                   53697: .rm $5
                   53698: .rm $6
                   53699: .rr Oh
                   53700: .rr Oi
                   53701: .rr Ol
                   53702: .rr Ov
                   53703: .if \\n(FT=0 .EP
                   53704: ..
                   53705: .de EP \" End the Picture - Normally called from a trap, although it can be used
                   53706: .      \" on its own to mark the end of a picture.
                   53707: .nr Ot 0
                   53708: .if \\n(.tu<\\n(.pu .nr Ot \\n(.tu
                   53709: .if \\n(Ot>0 .if \\n(FT=4 .nr FT 3
                   53710: .if \\n(FT<2 .nr Ot 0
                   53711: .if \\n(Ot>0 .br
                   53712: .if \\n(FT=5 .nr Ot 0
                   53713: .if \\n(FT>1 \{\
                   53714: .      ev 1
                   53715: .      eo
                   53716: .      br
                   53717: .      di
                   53718: .      nf
                   53719: .      in 0
                   53720: .      BB
                   53721: .      in
                   53722: .      fi
                   53723: .      ec
                   53724: .      ev
                   53725: .      rm BB\}
                   53726: .if \\n(FT=5 \{\
                   53727: .      nr FT 2
                   53728: '      sp |\\n(Nhu+1v\}
                   53729: .if \\n(FT=4 \{\
                   53730: .      mk Nh
                   53731: .      nr Nh -1v
                   53732: .      nr FT 5
                   53733: '      sp -\\n(dnu+1v
                   53734: '      in +\\n(Iiu
                   53735: .      ll +\\n(Ilu
                   53736: .      di BB
                   53737: .      dt \\n(dnu-2v+1u EP\}
                   53738: .if \\n(FT=2 'in -\\n(Iiu
                   53739: .if \\n(FT=3 .ll +\\n(Ilu
                   53740: .if \\n(FT<4 .nr FT 0
                   53741: .if \\n(Ot>0 .sp \\n(Otu
                   53742: .rr Ot
                   53743: .if \\n(FT=0 \{\
                   53744: .      rr Nh
                   53745: .      rr Ii
                   53746: .      rr Il\}
                   53747: ..
                   53748: 0707070014230637741006400057030057030000011563000522633074700003700000010664post.src/mpictures/mpictures.5.ds dT /usr/lib/tmac
                   53749: .TH MPICTURES 5
                   53750: .SH NAME
                   53751: .B mpictures
                   53752: \- picture inclusion macros
                   53753: .SH SYNOPSIS
                   53754: \*(mBtroff \-mpictures\f1
                   53755: .OP "" options []
                   53756: .OP "" files []
                   53757: .SH DESCRIPTION
                   53758: .B mpictures
                   53759: is a macro package used to include PostScript pictures in
                   53760: .B troff
                   53761: documents.
                   53762: The package is compatible with many existing
                   53763: .B troff
                   53764: macro packages and includes the following three macros:
                   53765: .TP
                   53766: .MI .BP "\0file\0height\0width\0position\0offset\0flags\0label"
                   53767: .sp 0.3v
                   53768: Places the picture
                   53769: .I file
                   53770: in the space set aside by
                   53771: .IR height ,
                   53772: .IR width ,
                   53773: .IR position ,
                   53774: and
                   53775: .IR offset ,
                   53776: which together define and position the picture frame.
                   53777: The macro arguments are:
                   53778: .in +0.75i
                   53779: .de XX
                   53780: .sp 3p
                   53781: .ti -0.75i
                   53782: \f2\\$1\fP
                   53783: .sp -1v
                   53784: ..
                   53785: .XX file
                   53786: Pathname of a PostScript picture
                   53787: .IR file .
                   53788: Appending
                   53789: .MI ( n )
                   53790: to
                   53791: .I file
                   53792: selects page number
                   53793: .I n
                   53794: from a multiple-page picture
                   53795: .IR file .
                   53796: By default the first page in
                   53797: .I file
                   53798: is selected.
                   53799: .XX height
                   53800: Vertical extent of the frame.
                   53801: The default is
                   53802: .MR 3i .
                   53803: .XX width
                   53804: Horizontal extent of the frame.
                   53805: The default is the current length of a line of text.
                   53806: .XX position
                   53807: One of
                   53808: .MR l ,
                   53809: .MR c ,
                   53810: or
                   53811: .MW r
                   53812: used to align the left, center, or
                   53813: right of the frame with the corresponding position
                   53814: on the current line of text.
                   53815: The default is
                   53816: .MR l .
                   53817: .XX offset
                   53818: Moves the frame right (positive) or left (negative)
                   53819: from the selected
                   53820: .IR position .
                   53821: The default is
                   53822: .MR 0i .
                   53823: .XX flags
                   53824: A string built from one or more of the following:
                   53825: .in +0.5i
                   53826: .sp 3p
                   53827: .de YY
                   53828: .br
                   53829: .ti -0.5i
                   53830: \*(mW\\$1\f1
                   53831: .sp -1v
                   53832: ..
                   53833: .YY a[\f2d\*(mW]
                   53834: Rotate the picture clockwise
                   53835: .I d
                   53836: degrees.
                   53837: If
                   53838: .I d
                   53839: is omitted, 90 degrees is added to the
                   53840: current angle, which starts at zero.
                   53841: .YY o
                   53842: Outline the picture with a box.
                   53843: .YY s
                   53844: Freely scale both picture dimensions.
                   53845: .YY w
                   53846: White out (erase) the area to be occupied by the picture.
                   53847: .YY l
                   53848: Attach the picture to the left side of the frame.
                   53849: .YY r
                   53850: Attach the picture to the right side of the frame.
                   53851: .YY t
                   53852: Attach the picture to the top of the frame.
                   53853: .YY b
                   53854: Attach the picture to the bottom of the frame.
                   53855: .in -0.5i
                   53856: .XX label
                   53857: Place
                   53858: .I label
                   53859: 1.5 vertical lines below the frame.
                   53860: .in -0.75i
                   53861: .sp 0.3v
                   53862: If there is room
                   53863: .MW .BP
                   53864: fills text around the frame.
                   53865: Everything destined for either side of the frame first
                   53866: goes into a diversion and only reappears when the accumulated
                   53867: text sweeps past the trap set by
                   53868: .MW .BP
                   53869: or when the diversion is explicitly closed
                   53870: by the
                   53871: .MW .EP
                   53872: macro (see below).
                   53873: .sp 0.5v
                   53874: Null arguments, represented by
                   53875: .MR \&"" ,
                   53876: are replaced by the defaults as noted above.
                   53877: .TP
                   53878: .MI .PI "\0file\0height,\|width,\|yoffset,\|xoffset\0flags"
                   53879: .sp 0.3v
                   53880: A low level macro used by
                   53881: .MR .BP .
                   53882: It can help if you are trying to do things that
                   53883: .MW .BP
                   53884: will not allow or does not do well.
                   53885: The two arguments not already described are:
                   53886: .in +0.75i
                   53887: .XX xoffset
                   53888: Moves the frame right (positive) or left (negative) from the
                   53889: left margin.
                   53890: The default is
                   53891: .MR 0i .
                   53892: .XX yoffset
                   53893: Moves the frame down (positive) or up (negative) from
                   53894: the current baseline.
                   53895: The default is
                   53896: .MR 0i .
                   53897: .in -0.75i
                   53898: .sp 0.3v
                   53899: The second argument is a comma separated list of four numbers,
                   53900: and although defaults are available, supplying values for all
                   53901: four numbers is recommended.
                   53902: .br
                   53903: .ne 2v
                   53904: .TP
                   53905: .MW .EP
                   53906: Ends a picture started by
                   53907: .MW .BP .
                   53908: An explicit
                   53909: .MW .EP
                   53910: call is not often required.
                   53911: Instead
                   53912: .MW .EP
                   53913: is usually called by
                   53914: .MW .BP
                   53915: at the bottom of each frame.
                   53916: .PP
                   53917: Much of what is done depends on file structuring comments
                   53918: commonly found in PostScript files.
                   53919: If the comments needed to isolate a particular page are missing
                   53920: the entire
                   53921: .I file
                   53922: is included.
                   53923: If a
                   53924: .MW %%BoundingBox
                   53925: comment is missing the picture is
                   53926: assumed to fill an 8.5\(mu11-inch page.
                   53927: A picture
                   53928: .I file
                   53929: that cannot be read when the
                   53930: .B troff
                   53931: postprocessor runs is replaced by white space.
                   53932: Nothing done in
                   53933: .MW .BP
                   53934: or
                   53935: .MW .PI
                   53936: guarantees the picture has not been placed off the page.
                   53937: All dimensions should be explicitly given in inches.
                   53938: .SH BUGS
                   53939: A picture and associated text can silently disappear if
                   53940: the diversion trap set by
                   53941: .MW .BP
                   53942: is not reached.
                   53943: Including a call to
                   53944: .MW .EP
                   53945: at the end of the paper
                   53946: should recover whatever appears to be missing.
                   53947: .PP
                   53948: Macros in other packages occasionally break the adjustments
                   53949: made to the line length and indent when text is being placed
                   53950: around a picture.
                   53951: .PP
                   53952: A missing or improper
                   53953: .MW %%BoundingBox
                   53954: comment often
                   53955: explains why a picture does not properly fill the space
                   53956: that has been set aside.
                   53957: .SH FILES
                   53958: .MW \*(dT/tmac.pictures
                   53959: .SH SEE ALSO
                   53960: .BR troff (1),
                   53961: .BR dpost (1),
                   53962: .BR picpack (1),
                   53963: .BR mps (5)
                   53964: .SH REFERENCE
                   53965: R. L. Drechsler and A. R. Wilks,
                   53966: .ul
                   53967: PostScript Pictures in Troff Documents
                   53968: 0707070014230637731006400057030057030000011577770522633074600004000000001740post.src/mpictures/mpictures.mk#
                   53969: # Not installing the man page.
                   53970: #
                   53971: 
                   53972: MAKE=/bin/make
                   53973: MAKEFILE=mpictures.mk
                   53974: 
                   53975: SYSTEM=V9
                   53976: VERSION=3.3.2
                   53977: 
                   53978: OWNER=bin
                   53979: GROUP=bin
                   53980: 
                   53981: TMACDIR=/usr/lib/tmac
                   53982: 
                   53983: all :
                   53984:        @cp pictures.sr tmac.pictures
                   53985: 
                   53986: install : all
                   53987:        @if [ ! -d $(TMACDIR) ]; then \
                   53988:            mkdir $(TMACDIR); \
                   53989:            chmod 755 $(TMACDIR); \
                   53990:            chgrp $(GROUP) $(TMACDIR); \
                   53991:            chown $(OWNER) $(TMACDIR); \
                   53992:        fi
                   53993:        cp tmac.pictures $(TMACDIR)/tmac.pictures
                   53994:        @chmod 644 $(TMACDIR)/tmac.pictures
                   53995:        @chgrp $(GROUP) $(TMACDIR)/tmac.pictures
                   53996:        @chown $(OWNER) $(TMACDIR)/tmac.pictures
                   53997: 
                   53998: clean :
                   53999:        rm -f tmac.pictures
                   54000: 
                   54001: clobber : clean
                   54002: 
                   54003: changes :
                   54004:        @trap "" 1 2 3 15; \
                   54005:        sed \
                   54006:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
                   54007:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
                   54008:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
                   54009:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
                   54010:            -e "s'^TMACDIR=.*'TMACDIR=$(TMACDIR)'" \
                   54011:        $(MAKEFILE) >X$(MAKEFILE); \
                   54012:        mv X$(MAKEFILE) $(MAKEFILE); \
                   54013:        sed \
                   54014:            -e "s'^.ds dT.*'.ds dT $(TMACDIR)'" \
                   54015:        mpictures.5 >Xmpictures.5; \
                   54016:        mv Xmpictures.5 mpictures.5
                   54017: 
                   54018: 0707070014230735530407550057030057030000020011570522627503300001600000000000post.src/misc0707070014230735541004440057030057030000010014640522627503300002700000003144post.src/misc/lp.model
                   54019: #       qmsps800        mac 10/22/86
                   54020: #
                   54021: LPDEST=`basename $0`
                   54022: QMS_FILE="$1"
                   54023: DATE="`date +%D`"
                   54024: TIME="`date +%T`"
                   54025: owner="$2"
                   54026: site=`uname`
                   54027: port="`/usr/bin/lpstat -v$LPDEST | sed -e 's/.*: //'`"
                   54028: filter_cmd="/usr/lbin/postscript/postio"
                   54029: filter="$filter_cmd -l $port"
                   54030: landscape="" formsperpage=""
                   54031: path=/usr/lbin/postscript
                   54032: printer=postprint
                   54033: bannerflag=ON
                   54034: prev="| $path/postreverse"
                   54035: 
                   54036: for i in $5
                   54037: do
                   54038:         case "$i" in
                   54039:                 L2)
                   54040:                         formsperpage="-n2"
                   54041:                         ;;
                   54042:                 land)
                   54043:                         landscape="-pland"
                   54044:                         ;;
                   54045:                 dpost|postprint|posttek|postbgi|postdmd|postio)
                   54046:                         printer="$i"
                   54047:                         ;;
                   54048: 
                   54049:                 postreverse)
                   54050:                         prev=""
                   54051:                         ;;
                   54052:                 nobanner)
                   54053:                         bannerflag=OFF
                   54054:                         ;;
                   54055:                 F*)
                   54056:                         QMS_FILE="`expr $i : 'F\(.*\)'`"
                   54057:                         ;;
                   54058:         esac
                   54059: done
                   54060: 
                   54061: if [ -n "$filter_cmd" -a ! -x "$filter_cmd" ]
                   54062: then
                   54063:         disable -r"can't execute filter: $filter_cmd" $LPDEST
                   54064:         exit 1
                   54065: fi
                   54066: 
                   54067: shift; shift; shift; shift; shift
                   54068: files="$*"
                   54069: cp /usr/spool/lp/model/banner.ps /tmp/ban.$$
                   54070: echo "($QMS_FILE) ($LPDEST) ($TIME) ($DATE) ($owner) banner" >> /tmp/ban.$$
                   54071: if [ "$printer" = "postio" ]
                   54072:         then
                   54073:         eval $filter $files 2> /dev/null
                   54074: else
                   54075:         eval $path/$printer $landscape $formsperpage $files $prev | $filter 2> /dev/null
                   54076:         fi
                   54077: if [ "$bannerflag" = "ON" ]
                   54078:         then
                   54079:         eval $filter /tmp/ban.$$ 2> /dev/null
                   54080:         fi
                   54081: rm -f /tmp/ban.$$
                   54082: exit 0
                   54083: 
                   54084: 0707070014230735551004440057030057030000010012170522627503300002500000000763post.src/misc/READMEMiscellaneous programs - all are unsupported.
                   54085: 
                   54086:   ibmfont.c    IBM PC to Unix font conversion program
                   54087:   laserbar.[c1]        Barcode filter and man page - Jan Wolitzky
                   54088:   lp.model     Sample lp interface (not for Unix 4.0) - Maryann Csaszar
                   54089:   macfont.c    Macintosh to Unix font conversion program
                   54090:   pscrypt.c    Quick implementation of Adobe's encryption/decryption algorithm
                   54091:   setbaud.ps   Example of how to change the printer's baudrate
                   54092: 
                   54093: Use make to compile C programs. For example,
                   54094: 
                   54095:        make macfont
                   54096: 
                   54097: compiles macfont.c.
                   54098: 
                   54099: 0707070014230735561004440057030057030000010015000522627503300003000000013025post.src/misc/macfont.c/*
                   54100:  *
                   54101:  * Program that converts Macintosh font files to a format that works on Unix
                   54102:  * systems. Essentially all the information needed came from the Adobe paper
                   54103:  * "Supporting Downloadable PostScript Fonts". To use the program type,
                   54104:  *
                   54105:  *     macfont font.mac >font.unix
                   54106:  *
                   54107:  * where font.mac is the font file, exactly as it came over from a Macintosh,
                   54108:  * and font.unix is equivalent host resident font file usable on Unix systems.
                   54109:  * 
                   54110:  */
                   54111: 
                   54112: #include <stdio.h>
                   54113: #include <signal.h>
                   54114: 
                   54115: #define OFF            0
                   54116: #define ON             1
                   54117: 
                   54118: #define NON_FATAL      0
                   54119: #define FATAL          1
                   54120: 
                   54121: #define FALSE          0
                   54122: #define TRUE           1
                   54123: 
                   54124: char   **argv;
                   54125: int    argc;
                   54126: 
                   54127: char   *prog_name;
                   54128: 
                   54129: int    x_stat;
                   54130: int    debug = OFF;
                   54131: int    ignore = OFF;
                   54132: 
                   54133: FILE   *fp_in = stdin;
                   54134: FILE   *fp_out = stdout;
                   54135: 
                   54136: /*****************************************************************************/
                   54137: 
                   54138: main(agc, agv)
                   54139: 
                   54140:     int                agc;
                   54141:     char       *agv[];
                   54142: 
                   54143: {
                   54144: 
                   54145: /*
                   54146:  *
                   54147:  * Macintosh to Unix font converter.
                   54148:  *
                   54149:  */
                   54150: 
                   54151:     argc = agc;
                   54152:     argv = agv;
                   54153:     prog_name = argv[0];
                   54154: 
                   54155:     options();
                   54156:     arguments();
                   54157:     exit(x_stat);
                   54158: 
                   54159: }   /* End of main */
                   54160: 
                   54161: /*****************************************************************************/
                   54162: 
                   54163: options()
                   54164: 
                   54165: {
                   54166: 
                   54167:     int                ch;
                   54168:     char       *names = "DI";
                   54169: 
                   54170:     extern char        *optarg;
                   54171:     extern int optind;
                   54172: 
                   54173: /*
                   54174:  *
                   54175:  * Command line options.
                   54176:  *
                   54177:  */
                   54178: 
                   54179:     while ( (ch = getopt(argc, argv, names)) != EOF ) {
                   54180:        switch ( ch ) {
                   54181:            case 'D':                   /* debug flag */
                   54182:                    debug = ON;
                   54183:                    break;
                   54184: 
                   54185:            case 'I':                   /* ignore FATAL errors */
                   54186:                    ignore = ON;
                   54187:                    break;
                   54188: 
                   54189:            case '?':                   /* don't understand the option */
                   54190:                    error(FATAL, "");
                   54191:                    break;
                   54192: 
                   54193:            default:                    /* don't know what to do for ch */
                   54194:                    error(FATAL, "missing case for option %c\n", ch);
                   54195:                    break;
                   54196:        }   /* End switch */
                   54197:     }   /* End while */
                   54198: 
                   54199:     argc -= optind;
                   54200:     argv += optind;
                   54201: 
                   54202: }   /* End of options */
                   54203: 
                   54204: /*****************************************************************************/
                   54205: 
                   54206: arguments()
                   54207: 
                   54208: {
                   54209: 
                   54210: 
                   54211: /*
                   54212:  *
                   54213:  * Everything else is an input file. No arguments or '-' means stdin.
                   54214:  *
                   54215:  */
                   54216: 
                   54217:     if ( argc < 1 )
                   54218:        conv();
                   54219:     else
                   54220:        while ( argc > 0 ) {
                   54221:            if ( strcmp(*argv, "-") == 0 )
                   54222:                fp_in = stdin;
                   54223:            else if ( (fp_in = fopen(*argv, "r")) == NULL )
                   54224:                error(FATAL, "can't open %s", *argv);
                   54225:            conv();
                   54226:            if ( fp_in != stdin )
                   54227:                fclose(fp_in);
                   54228:            argc--;
                   54229:            argv++;
                   54230:        }   /* End while */
                   54231: 
                   54232: }   /* End of arguments */
                   54233: 
                   54234: /*****************************************************************************/
                   54235: 
                   54236: conv()
                   54237: 
                   54238: {
                   54239: 
                   54240:     int                blocksize;
                   54241:     int                blocktype;
                   54242: 
                   54243: /*
                   54244:  *
                   54245:  * The first four bytes (in a block) are the block size, the fifth is the block
                   54246:  * type, and the sixth always appears to be NULL. Type 0 blocks are comments and
                   54247:  * are always skipped. Type 1 blocks are ASCII text, type 2 is binary data that
                   54248:  * should be converted to hex, while type 5 blocks represent the end of the font
                   54249:  * file. Commment block lengths appear to be from the first byte, while other
                   54250:  * lengths seem to be measured from block type byte (ie. the fifth byte). Type
                   54251:  * four blocks aren't used, while type 3 blocks mean an end of file indication
                   54252:  * should be sent to the printer. Haven't done anything with type 3 blocks.
                   54253:  *
                   54254:  */
                   54255: 
                   54256:     while ( 1 ) {
                   54257:        blocksize = getint(fp_in);
                   54258:        blocktype = getc(fp_in);
                   54259:        getc(fp_in);
                   54260:        if ( debug == ON )
                   54261:            fprintf(stderr, "blocktype = %d, blocksize = %d\n", blocktype, blocksize);
                   54262:        switch ( blocktype ) {
                   54263:            case 0:                     /* comment - skip blockcount bytes */
                   54264:                fseek(fp_in, (long) blocksize - 6, 1);
                   54265:                break;
                   54266: 
                   54267:            case 1:
                   54268:                asciitext(blocksize - 2);
                   54269:                break;
                   54270: 
                   54271:            case 2:
                   54272:                hexdata(blocksize - 2);
                   54273:                break;
                   54274: 
                   54275:            case 3:
                   54276:            case 4:
                   54277:                error(FATAL, "resource type %d not implemented", blocktype);
                   54278:                break;
                   54279: 
                   54280:            case 5:
                   54281:                return;
                   54282: 
                   54283:            default:
                   54284:                error(FATAL, "unknown resource type %d", blocktype);
                   54285:        }   /* End switch */
                   54286:     }  /* End while */
                   54287: 
                   54288: }   /* End of conv */
                   54289: 
                   54290: /*****************************************************************************/
                   54291: 
                   54292: asciitext(count)
                   54293: 
                   54294:     int                count;                  /* bytes left in the block */
                   54295: 
                   54296: {
                   54297: 
                   54298:     int                ch;
                   54299:     int                i = 0;
                   54300: 
                   54301: /*
                   54302:  *
                   54303:  * Handles type 1 (ie. ASCII text) blocks. Changing carriage returns to newlines
                   54304:  * is all I've done.
                   54305:  *
                   54306:  */
                   54307: 
                   54308:     for ( i = 0; i < count; i++ ) {
                   54309:        if ( (ch = getc(fp_in)) == '\r' )
                   54310:            ch = '\n';
                   54311:        putc(ch, fp_out);
                   54312:     }  /* End for */
                   54313:        
                   54314: }   /* End of asciitext */
                   54315: 
                   54316: /*****************************************************************************/
                   54317: 
                   54318: hexdata(count)
                   54319: 
                   54320:     int                count;                  /* bytes left in the block */
                   54321: 
                   54322: {
                   54323: 
                   54324:     int                i;
                   54325:     int                n;
                   54326: 
                   54327: /*
                   54328:  *
                   54329:  * Reads the next count bytes and converts each byte to hex. Also starts a new
                   54330:  * line every 80 hex characters.
                   54331:  *
                   54332:  */
                   54333: 
                   54334:     for ( i = 0, n = 0; i < count; i++ ) {
                   54335:        fprintf(fp_out, "%.2X", getc(fp_in));
                   54336:        if ( (++n % 40) == 0 )
                   54337:            putc('\n', fp_out);
                   54338:     }  /* End for */
                   54339:        
                   54340: }   /* End of hexdata */
                   54341: 
                   54342: /*****************************************************************************/
                   54343: 
                   54344: getint()
                   54345: 
                   54346: {
                   54347: 
                   54348:     int                val;
                   54349:     int                i;
                   54350: 
                   54351: /*
                   54352:  *
                   54353:  * Reads the next four bytes into an integer and returns the value to the caller.
                   54354:  * First two bytes are probably always 0.
                   54355:  *
                   54356:  */
                   54357: 
                   54358:     for ( i = 0, val = (getc(fp_in) & 0377); i < 3; i++ )
                   54359:        val = (val << 8) | (getc(fp_in) & 0377);
                   54360: 
                   54361:     return(val);
                   54362: 
                   54363: }   /* End of getint */ 
                   54364: 
                   54365: /*****************************************************************************/
                   54366: 
                   54367: error(kind, mesg, a1, a2, a3)
                   54368: 
                   54369: 
                   54370:     int                kind;
                   54371:     char       *mesg;
                   54372:     unsigned   a1, a2, a3;
                   54373: 
                   54374: {
                   54375: 
                   54376: /*
                   54377:  *
                   54378:  * Print *mesg then quit if kind is FATAL.
                   54379:  *
                   54380:  */
                   54381: 
                   54382:     if ( mesg != NULL && *mesg != '\0' ) {
                   54383:        fprintf(stderr, "%s: ", prog_name);
                   54384:        fprintf(stderr, mesg, a1, a2, a3);
                   54385:        putc('\n', stderr);
                   54386:     }  /* End if */
                   54387: 
                   54388:     if ( kind == FATAL && ignore == OFF )
                   54389:        exit(x_stat | 01);
                   54390: 
                   54391: }   /* End of error */
                   54392: 
                   54393: /*****************************************************************************/
                   54394: 
                   54395: 0707070014230735571004440057030057030000010015100522627503300003100000010626post.src/misc/laserbar.c/* laserbar -- filter to print barcodes on postscript printer */
                   54396: 
                   54397: #define MAIN 1
                   54398: 
                   54399: #define        LABEL   01
                   54400: #define        NFLAG   02
                   54401: #define        SFLAG   04
                   54402: 
                   54403: #include <stdio.h>
                   54404: #include <ctype.h>
                   54405: 
                   54406: static int code39[256] = {
                   54407:        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                   54408:        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                   54409: /*     sp    !     "     #     $     %     &     '     */
                   54410:        0304, 0,    0,    0,    0250, 0052, 0,    0,   
                   54411: /*     (     )     *     +     ,     -     -     /     */
                   54412:        0,    0,    0224, 0212, 0,    0205, 0604, 0242,
                   54413: /*     0     1     2     3     4     5     6     7     */
                   54414:        0064, 0441, 0141, 0540, 0061, 0460, 0160, 0045,
                   54415: /*     8     9     :     ;     <     =     >     ?     */
                   54416:        0444, 0144, 0,    0,    0,    0,    0,    0,   
                   54417: /*     @     A     B     C     D     E     F     G     */
                   54418:        0,    0411, 0111, 0510, 0031, 0430, 0130, 0015,
                   54419: /*     H     I     J     K     L     M     N     O     */
                   54420:        0414, 0114, 0034, 0403, 0103, 0502, 0023, 0422,
                   54421: /*     P     Q     R     S     T     U     V     W     */
                   54422:        0122, 0007, 0406, 0106, 0026, 0601, 0301, 0700,
                   54423: /*     X     Y     Z     [     \     ]     ^     _     */
                   54424:        0221, 0620, 0320, 0,    0,    0,    0,    0,
                   54425: /*     `     a     b     c     d     e     f     g     */
                   54426:        0,    0411, 0111, 0510, 0031, 0430, 0130, 0015,
                   54427: /*     h     i     j     k     l     m     n     o     */
                   54428:        0414, 0114, 0034, 0403, 0103, 0502, 0023, 0422,
                   54429: /*     p     q     r     s     t     u     v     w     */
                   54430:        0122, 0007, 0406, 0106, 0026, 0601, 0301, 0700,
                   54431: /*     x     y     z     {     |     }     ~     del   */
                   54432:        0221, 0620, 0320, 0,    0,    0,    0,    0,
                   54433:        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                   54434:        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                   54435:        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                   54436:        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                   54437:        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                   54438:        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                   54439:        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                   54440:        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                   54441: };
                   54442: 
                   54443: static void barprt();
                   54444: void laserbar();
                   54445: 
                   54446: #ifdef MAIN
                   54447: 
                   54448: main(argc, argv)
                   54449: char **argv;
                   54450: {
                   54451:        int c, flags = 0, error = 0;
                   54452:        double rotate = 0, xoffset = 0, yoffset = 0, xscale = 1, yscale = 1;
                   54453:        extern char *optarg;
                   54454:        extern int optind;
                   54455:        extern double atof();
                   54456:        extern void exit();
                   54457: 
                   54458:        while ((c = getopt(argc, argv, "r:x:y:X:Y:lns")) != EOF) {
                   54459:                switch(c) {
                   54460:                    case 'r':
                   54461:                        rotate = atof(optarg);
                   54462:                        break;
                   54463:                    case 'x':
                   54464:                        xoffset = atof(optarg);
                   54465:                        break;
                   54466:                    case 'y':
                   54467:                        yoffset = atof(optarg);
                   54468:                        break;
                   54469:                    case 'X':
                   54470:                        xscale = atof(optarg);
                   54471:                        break;
                   54472:                    case 'Y':
                   54473:                        yscale = atof(optarg);
                   54474:                        break;
                   54475:                    case 'l':
                   54476:                        flags |= LABEL;
                   54477:                        break;
                   54478:                    case 'n':
                   54479:                        flags |= NFLAG;
                   54480:                        break;
                   54481:                    case 's':
                   54482:                        flags |= SFLAG;
                   54483:                        break;
                   54484:                    case '?':
                   54485:                        ++error;
                   54486:                }
                   54487:        }
                   54488:        if ((argc - optind) != 1)
                   54489:                ++error;
                   54490:        if (error) {
                   54491:                (void) fprintf(stderr,
                   54492: "Usage: %s [-r rotate] [-x xoffset] [-y yoffset] [-X xscale] [-Y yscale] [-lns] string\n",
                   54493:                    *argv);
                   54494:                exit(1);
                   54495:        }
                   54496:        laserbar(stdout, argv[optind], rotate, xoffset, yoffset, xscale, yscale, flags);
                   54497:        return 0;
                   54498: }
                   54499: 
                   54500: #endif MAIN
                   54501: 
                   54502: static int right = 0;
                   54503: 
                   54504: void
                   54505: laserbar(fp, str, rotate, xoffset, yoffset, xscale, yscale, flags)
                   54506: FILE *fp;
                   54507: char *str;
                   54508: double rotate, xoffset, yoffset, xscale, yscale;
                   54509: int flags;
                   54510: {
                   54511:        xoffset *= 72.;
                   54512:        yoffset *= 72.;
                   54513:        (void) fprintf(fp, "gsave %s\n", (flags & NFLAG) ? "newpath" : "");
                   54514:        if (xoffset || yoffset)
                   54515:                (void) fprintf(fp, "%f %f moveto\n", xoffset, yoffset);
                   54516:        if (xscale != 1 || yscale != 1)
                   54517:                (void) fprintf(fp, "%f %f scale\n", xscale, yscale);
                   54518:        if (rotate)
                   54519:                (void) fprintf(fp, "%f rotate\n", rotate);
                   54520:        (void) fputs("/Helvetica findfont 16 scalefont setfont\n", fp);
                   54521:        (void) fputs("/w { 0 rmoveto gsave 3 setlinewidth 0 -72 rlineto stroke grestore } def\n", fp);
                   54522:        (void) fputs("/n { 0 rmoveto gsave 1 setlinewidth 0 -72 rlineto stroke grestore } def\n", fp);
                   54523:        (void) fputs("/l { gsave 2 -88 rmoveto show grestore } def\n", fp);
                   54524:        barprt(fp, '*', 0);
                   54525:        while (*str)
                   54526:                barprt(fp, *(str++), (flags & LABEL));
                   54527:        barprt(fp, '*', 0);
                   54528:        (void) fprintf(fp, "%sgrestore\n", (flags & SFLAG) ? "showpage " : "");
                   54529:        right = 0;
                   54530: }
                   54531: 
                   54532: static void
                   54533: barprt(fp, c, label)
                   54534: FILE *fp;
                   54535: int c, label;
                   54536: {
                   54537:        int i, mask, bar, wide;
                   54538: 
                   54539:        if (!(i = code39[c]))
                   54540:                return;
                   54541:        if (islower(c))
                   54542:                c = toupper(c);
                   54543:        if (label)
                   54544:                (void) fprintf(fp, "(%c) l", c);
                   54545:        else
                   54546:                (void) fputs("     ", fp);
                   54547:        for (bar = 1, mask = 0400; mask; bar = 1 - bar, mask >>= 1) {
                   54548:                wide = mask & i;
                   54549:                if (bar) {
                   54550:                        if (wide)
                   54551:                                ++right;
                   54552:                        (void) fprintf(fp, " %d %s", right, wide ? "w" : "n");
                   54553:                        right = (wide ? 2 : 1);
                   54554:                }
                   54555:                else
                   54556:                        right += (wide ? 3 : 1);
                   54557:        }
                   54558:        (void) fputs("\n", fp);
                   54559:        ++right;
                   54560: }
                   54561: 0707070014230735601004440057030057030000010014770522627503300003100000000226post.src/misc/setbaud.ps%
                   54562: % Sets baud rate to 9600, options to 0 assuming the password is 0.
                   54563: %
                   54564: 
                   54565: serverdict begin
                   54566:        0 exitserver
                   54567:        statusdict begin
                   54568:                25 9600 0 setsccbatch
                   54569:        end
                   54570: 0707070014230735611004440057030057030000010015200522627503300003000000012333post.src/misc/ibmfont.c/*
                   54571:  *
                   54572:  * Program that converts IBM font files to a format that works on Unix systems.
                   54573:  * Essentially all the information needed came from the Adobe paper "Supporting
                   54574:  * Downloadable PostScript Fonts". To use the program type,
                   54575:  *
                   54576:  *     ibmfont font.ibm >font.unix
                   54577:  *
                   54578:  * where font.ibm is the font file, exactly as it came over from an IBM PC,
                   54579:  * and font.unix is equivalent host resident font file usable on Unix systems.
                   54580:  * 
                   54581:  */
                   54582: 
                   54583: #include <stdio.h>
                   54584: #include <signal.h>
                   54585: 
                   54586: #define OFF            0
                   54587: #define ON             1
                   54588: 
                   54589: #define NON_FATAL      0
                   54590: #define FATAL          1
                   54591: 
                   54592: #define FALSE          0
                   54593: #define TRUE           1
                   54594: 
                   54595: char   **argv;
                   54596: int    argc;
                   54597: 
                   54598: char   *prog_name;
                   54599: 
                   54600: int    x_stat;
                   54601: int    debug = OFF;
                   54602: int    ignore = OFF;
                   54603: 
                   54604: FILE   *fp_in = stdin;
                   54605: FILE   *fp_out = stdout;
                   54606: 
                   54607: /*****************************************************************************/
                   54608: 
                   54609: main(agc, agv)
                   54610: 
                   54611:     int                agc;
                   54612:     char       *agv[];
                   54613: 
                   54614: {
                   54615: 
                   54616: /*
                   54617:  *
                   54618:  * IBM PC to Unix font converter.
                   54619:  *
                   54620:  */
                   54621: 
                   54622:     argc = agc;
                   54623:     argv = agv;
                   54624:     prog_name = argv[0];
                   54625: 
                   54626:     options();
                   54627:     arguments();
                   54628:     exit(x_stat);
                   54629: 
                   54630: }   /* End of main */
                   54631: 
                   54632: /*****************************************************************************/
                   54633: 
                   54634: options()
                   54635: 
                   54636: {
                   54637: 
                   54638:     int                ch;
                   54639:     char       *names = "DI";
                   54640: 
                   54641:     extern char        *optarg;
                   54642:     extern int optind;
                   54643: 
                   54644: /*
                   54645:  *
                   54646:  * Command line options.
                   54647:  *
                   54648:  */
                   54649: 
                   54650:     while ( (ch = getopt(argc, argv, names)) != EOF ) {
                   54651:        switch ( ch ) {
                   54652:            case 'D':                   /* debug flag */
                   54653:                    debug = ON;
                   54654:                    break;
                   54655: 
                   54656:            case 'I':                   /* ignore FATAL errors */
                   54657:                    ignore = ON;
                   54658:                    break;
                   54659: 
                   54660:            case '?':                   /* don't understand the option */
                   54661:                    error(FATAL, "");
                   54662:                    break;
                   54663: 
                   54664:            default:                    /* don't know what to do for ch */
                   54665:                    error(FATAL, "missing case for option %c\n", ch);
                   54666:                    break;
                   54667:        }   /* End switch */
                   54668:     }   /* End while */
                   54669: 
                   54670:     argc -= optind;
                   54671:     argv += optind;
                   54672: 
                   54673: }   /* End of options */
                   54674: 
                   54675: /*****************************************************************************/
                   54676: 
                   54677: arguments()
                   54678: 
                   54679: {
                   54680: 
                   54681: /*
                   54682:  *
                   54683:  * Everything esle is an input file. No arguments or '-' means stdin.
                   54684:  *
                   54685:  */
                   54686: 
                   54687: 
                   54688:     if ( argc < 1 )
                   54689:        conv();
                   54690:     else
                   54691:        while ( argc > 0 ) {
                   54692:            if ( strcmp(*argv, "-") == 0 )
                   54693:                fp_in = stdin;
                   54694:            else if ( (fp_in = fopen(*argv, "r")) == NULL )
                   54695:                error(FATAL, "can't open %s", *argv);
                   54696:            conv();
                   54697:            if ( fp_in != stdin )
                   54698:                fclose(fp_in);
                   54699:            argc--;
                   54700:            argv++;
                   54701:        }   /* End while */
                   54702: 
                   54703: }   /* End of arguments */
                   54704: 
                   54705: /*****************************************************************************/
                   54706: 
                   54707: conv()
                   54708: 
                   54709: {
                   54710: 
                   54711:     int                blocksize;
                   54712:     int                blocktype;
                   54713:     int                seg;
                   54714:     long       ftell();
                   54715: 
                   54716: /*
                   54717:  *
                   54718:  * Font files on the IBM PC are stored in a compressed binary format. Individual
                   54719:  * segments in the file are preceeded by a header that looks like,
                   54720:  *
                   54721:  *             Byte 1:         128
                   54722:  *             Byte 2:         segment type (1=ASCII, 2=TOHEX, or 3=EOF)
                   54723:  *             Bytes 3-6:      length of the segment
                   54724:  *             Bytes 7 ...     data
                   54725:  *
                   54726:  */
                   54727: 
                   54728:     while ( 1 ) {
                   54729:        seg = ftell(fp_in);
                   54730:        if ( getc(fp_in) != 128 )
                   54731:            error(FATAL, "bad file format");
                   54732:        blocktype = getc(fp_in);
                   54733:        blocksize = getint(fp_in);
                   54734:        if ( debug == ON ) {
                   54735:            fprintf(stderr, "blocktype = %d, blocksize = %d\n", blocktype, blocksize);
                   54736:            fprintf(stderr, "start=0%o, end=0%o\n", seg, seg+blocksize+6);
                   54737:            fprintf(stderr, "start=%d, end=%d\n", seg, seg+blocksize+6);
                   54738:        }   /* End if */
                   54739:        switch ( blocktype ) {
                   54740:            case 1:
                   54741:                asciitext(blocksize);
                   54742:                break;
                   54743: 
                   54744:            case 2:
                   54745:                hexdata(blocksize);
                   54746:                break;
                   54747: 
                   54748:            case 3:
                   54749:                return;
                   54750: 
                   54751:            default:
                   54752:                error(FATAL, "unknown resource type %d", blocktype);
                   54753:        }   /* End switch */
                   54754:     }  /* End while */
                   54755: 
                   54756: }   /* End of conv */
                   54757: 
                   54758: /*****************************************************************************/
                   54759: 
                   54760: asciitext(count)
                   54761: 
                   54762:     int                count;                  /* bytes left in the block */
                   54763: 
                   54764: {
                   54765: 
                   54766:     int                ch;
                   54767:     int                i = 0;
                   54768: 
                   54769: /*
                   54770:  *
                   54771:  * Handles type 1 (ie. ASCII text) blocks. Changing carriage returns to newlines
                   54772:  * is all I've done.
                   54773:  *
                   54774:  */
                   54775: 
                   54776:     for ( i = 0; i < count; i++ ) {
                   54777:        if ( (ch = getc(fp_in)) == '\r' )
                   54778:            ch = '\n';
                   54779:        putc(ch, fp_out);
                   54780:     }  /* End for */
                   54781:        
                   54782: }   /* End of asciitext */
                   54783: 
                   54784: /*****************************************************************************/
                   54785: 
                   54786: hexdata(count)
                   54787: 
                   54788:     int                count;                  /* bytes left in the block */
                   54789: 
                   54790: {
                   54791: 
                   54792:     int                i;
                   54793:     int                n;
                   54794: 
                   54795: /*
                   54796:  *
                   54797:  * Reads the next count bytes and converts each byte to hex. Also starts a new
                   54798:  * line every 80 hex characters.
                   54799:  *
                   54800:  */
                   54801: 
                   54802:     for ( i = 0, n = 0; i < count; i++ ) {
                   54803:        fprintf(fp_out, "%.2X", getc(fp_in));
                   54804:        if ( (++n % 40) == 0 )
                   54805:            putc('\n', fp_out);
                   54806:     }  /* End for */
                   54807:        
                   54808: }   /* End of hexdata */
                   54809: 
                   54810: /*****************************************************************************/
                   54811: 
                   54812: getint()
                   54813: 
                   54814: {
                   54815: 
                   54816:     int                val;
                   54817: 
                   54818: /*
                   54819:  *
                   54820:  * Reads the next four bytes into an integer and returns the value to the caller.
                   54821:  * First two bytes are probably always 0.
                   54822:  *
                   54823:  */
                   54824: 
                   54825:     val = getc(fp_in);
                   54826:     val |= (getc(fp_in) << 8);
                   54827:     val |= (getc(fp_in) << 16);
                   54828:     val |= (getc(fp_in) << 24);
                   54829: 
                   54830:     return(val);
                   54831: 
                   54832: }   /* End of getint */ 
                   54833: 
                   54834: /*****************************************************************************/
                   54835: 
                   54836: error(kind, mesg, a1, a2, a3)
                   54837: 
                   54838:     int                kind;
                   54839:     char       *mesg;
                   54840:     unsigned   a1, a2, a3;
                   54841: 
                   54842: {
                   54843: 
                   54844: /*
                   54845:  *
                   54846:  * Print mesg and quit if kind is FATAL.
                   54847:  *
                   54848:  */
                   54849: 
                   54850:     if ( mesg != NULL && *mesg != '\0' ) {
                   54851:        fprintf(stderr, "%s: ", prog_name);
                   54852:        fprintf(stderr, mesg, a1, a2, a3);
                   54853:        putc('\n', stderr);
                   54854:     }  /* End if */
                   54855: 
                   54856:     if ( kind == FATAL && ignore == OFF )
                   54857:        exit(x_stat | 01);
                   54858: 
                   54859: }   /* End of error */
                   54860: 
                   54861: /*****************************************************************************/
                   54862: 
                   54863: 0707070014230735621004440057030057030000010015300522627503300003000000014610post.src/misc/pscrypt.c/*
                   54864:  *
                   54865:  * Adobe's encryption/decryption algorithm for eexec and show. Runs in
                   54866:  * eexec mode unless told otherwise. Use,
                   54867:  *
                   54868:  *             pscrypt file.cypher > file.clear
                   54869:  *
                   54870:  * to decrypt eexec input. Assumes file.cypher is hex with the key as the
                   54871:  * first four bytes, and writes file.clear as binary (omitting the key).
                   54872:  * Use
                   54873:  *
                   54874:  *             pscrypt -e12ab34ef file.clear >file.cypher
                   54875:  *
                   54876:  * to encrypt file.clear (for eexec) using 12ab34ef as the key. Input is
                   54877:  * binary and output is hex. The key must be given as a hex number. Use
                   54878:  * -sshow to encrypt or decrypt a CharString or Subr,
                   54879:  *
                   54880:  *             pscrypt -sshow file.cypher > file.clear
                   54881:  *
                   54882:  * Use -b or -x to read binary or hex input, and -B or -X to output binary
                   54883:  * or hex.
                   54884:  *
                   54885:  */
                   54886: 
                   54887: #include <stdio.h>
                   54888: #include <ctype.h>
                   54889: 
                   54890: #define ENCRYPT                0
                   54891: #define DECRYPT                1
                   54892: 
                   54893: #define NOTSET         -1
                   54894: #define BINARY         0
                   54895: #define HEX            1
                   54896: #define LINELENGTH     40
                   54897: 
                   54898: #define CHARSTRING     4330
                   54899: #define EEXEC          55665
                   54900: #define MAGIC1         52845
                   54901: #define MAGIC2         22719
                   54902: 
                   54903: int    argc;
                   54904: char   **argv;
                   54905: 
                   54906: int    mode = DECRYPT;
                   54907: int    input = NOTSET;
                   54908: int    output = NOTSET;
                   54909: int    outoffset = NOTSET;
                   54910: int    inoffset = NOTSET;
                   54911: 
                   54912: int    cryptkey = 0;                   /* encryption key set with -e */
                   54913: int    linelength = LINELENGTH;        /* only for hex output */
                   54914: int    lastchar = 0;
                   54915: 
                   54916: unsigned long  seed = EEXEC;
                   54917: unsigned long  key;
                   54918: 
                   54919: FILE   *fp_in = stdin;
                   54920: 
                   54921: /*****************************************************************************/
                   54922: 
                   54923: main(agc, agv)
                   54924: 
                   54925:     int                agc;
                   54926:     char       *agv[];
                   54927: 
                   54928: {
                   54929: 
                   54930: /*
                   54931:  *
                   54932:  * Implementation of the encryption/decryption used by eexec and show.
                   54933:  *
                   54934:  */
                   54935: 
                   54936:     argc = agc;
                   54937:     argv = agv;
                   54938: 
                   54939:     options();
                   54940:     initialize();
                   54941:     arguments();
                   54942: 
                   54943:     exit(0);
                   54944: 
                   54945: }   /* End of main */
                   54946: 
                   54947: /*****************************************************************************/
                   54948: 
                   54949: options()
                   54950: 
                   54951: {
                   54952: 
                   54953:     int                ch;
                   54954:     char       *names = "bde:l:os:xBSX";
                   54955: 
                   54956:     extern char        *optarg;
                   54957:     extern int optind;
                   54958: 
                   54959: /*
                   54960:  *
                   54961:  * Command line options.
                   54962:  *
                   54963:  */
                   54964: 
                   54965:     while ( (ch = getopt(argc, argv, names)) != EOF )
                   54966:        switch ( ch ) {
                   54967:            case 'b':                   /* binary input */
                   54968:                    input = BINARY;
                   54969:                    break;
                   54970: 
                   54971:            case 'd':                   /* decrypt */
                   54972:                    mode = DECRYPT;
                   54973:                    break;
                   54974: 
                   54975:            case 'e':                   /* encrypt */
                   54976:                    mode = ENCRYPT;
                   54977:                    if ( *optarg == '0' && *optarg == 'x' )
                   54978:                        optarg += 2;
                   54979:                    sscanf(optarg, "%8x", &cryptkey);
                   54980:                    break;
                   54981: 
                   54982:            case 'l':                   /* line length hex output */
                   54983:                    linelength = atoi(optarg);
                   54984:                    break;
                   54985: 
                   54986:            case 'o':                   /* output all bytes - debugging */
                   54987:                    outoffset = 0;
                   54988:                    break;
                   54989: 
                   54990:            case 's':                   /* seed */
                   54991:                    if ( *optarg == 'e' )
                   54992:                        seed = EEXEC;
                   54993:                    else if ( *optarg == 's' )
                   54994:                        seed = CHARSTRING;
                   54995:                    else if ( *optarg == '0' && *(optarg+1) == 'x' )
                   54996:                        sscanf(optarg+2, "%x", &seed);
                   54997:                    else if ( *optarg == '0' )
                   54998:                        sscanf(optarg, "%o", &seed);
                   54999:                    else sscanf(optarg, "%d", &seed);
                   55000:                    break;
                   55001: 
                   55002:            case 'x':                   /* hex input */
                   55003:                    input = HEX;
                   55004:                    break;
                   55005: 
                   55006:            case 'B':                   /* binary output */
                   55007:                    output = BINARY;
                   55008:                    break;
                   55009: 
                   55010:            case 'X':                   /* hex output */
                   55011:                    output = HEX;
                   55012:                    break;
                   55013: 
                   55014:            case '?':                   /* don't understand the option */
                   55015:                    fprintf(stderr, "bad option -%c\n", ch);
                   55016:                    exit(1);
                   55017:                    break;
                   55018: 
                   55019:            default:                    /* don't know what to do for ch */
                   55020:                    fprintf(stderr, "missing case for option -%c\n", ch);
                   55021:                    exit(1);
                   55022:                    break;
                   55023:        }   /* End switch */
                   55024: 
                   55025:     argc -= optind;                    /* get ready for non-option args */
                   55026:     argv += optind;
                   55027: 
                   55028: }   /* End of options */
                   55029: 
                   55030: /*****************************************************************************/
                   55031: 
                   55032: initialize()
                   55033: 
                   55034: {
                   55035: 
                   55036: /*
                   55037:  *
                   55038:  * Initialization that has to be done after the options.
                   55039:  *
                   55040:  */
                   55041: 
                   55042:     key = seed;
                   55043: 
                   55044:     if ( mode == DECRYPT ) {
                   55045:        input = (input == NOTSET) ? HEX : input;
                   55046:        output = (output == NOTSET) ? BINARY : output;
                   55047:        inoffset = (inoffset == NOTSET) ? 0 : inoffset;
                   55048:        outoffset = (outoffset == NOTSET) ? -4 : outoffset;
                   55049:     } else {
                   55050:        input = (input == NOTSET) ? BINARY : input;
                   55051:        output = (output == NOTSET) ? HEX : output;
                   55052:        inoffset = (inoffset == NOTSET) ? 4 : inoffset;
                   55053:        outoffset = (outoffset == NOTSET) ? 0 : outoffset;
                   55054:     }  /* End else */
                   55055: 
                   55056:     if ( linelength <= 0 )
                   55057:        linelength = LINELENGTH;
                   55058: 
                   55059: }   /* End of initialize */
                   55060: 
                   55061: /*****************************************************************************/
                   55062: 
                   55063: arguments()
                   55064: 
                   55065: {
                   55066: 
                   55067: /*
                   55068:  *
                   55069:  * Everything left is an input file. No arguments or '-' means stdin.
                   55070:  *
                   55071:  */
                   55072: 
                   55073:     if ( argc < 1 )
                   55074:        crypt();
                   55075:     else
                   55076:        while ( argc > 0 ) {
                   55077:            if ( strcmp(*argv, "-") == 0 )
                   55078:                fp_in = stdin;
                   55079:            else if ( (fp_in = fopen(*argv, "r")) == NULL ) {
                   55080:                fprintf(stderr, "can't open %s\n", *argv);
                   55081:                exit(1);
                   55082:            }   /* End if */
                   55083:            crypt();
                   55084:            if ( fp_in != stdin )
                   55085:                fclose(fp_in);
                   55086:            argc--;
                   55087:            argv++;
                   55088:        }   /* End while */
                   55089: 
                   55090: }   /* End of arguments */
                   55091: 
                   55092: /*****************************************************************************/
                   55093: 
                   55094: crypt()
                   55095: 
                   55096: {
                   55097: 
                   55098:     unsigned int       cypher;
                   55099:     unsigned int       clear;
                   55100: 
                   55101: /*
                   55102:  *
                   55103:  * Runs the encryption/decryption algorithm.
                   55104:  *
                   55105:  */
                   55106: 
                   55107:     while ( lastchar != EOF ) {
                   55108:        cypher = nextbyte();
                   55109:        clear = ((key >> 8) ^ cypher) & 0xFF;
                   55110:        key = (key + (mode == DECRYPT ? cypher : clear)) * MAGIC1 + MAGIC2;
                   55111:        if ( ++outoffset > 0 && lastchar != EOF ) {
                   55112:            if ( output == HEX ) {
                   55113:                printf("%.2X", clear);
                   55114:                if ( linelength > 0 && (outoffset % linelength) == 0 )
                   55115:                    putchar('\n');
                   55116:            } else putchar(clear);
                   55117:        }   /* End if */
                   55118:     }  /* End while */
                   55119: 
                   55120: }   /* End of crypt */
                   55121: 
                   55122: /*****************************************************************************/
                   55123: 
                   55124: nextbyte()
                   55125: 
                   55126: {
                   55127: 
                   55128:     int                val = EOF;
                   55129: 
                   55130: /*
                   55131:  *
                   55132:  * Returns the next byte. Uses cryptkey (i.e. what followed -e) while inoffset is
                   55133:  * positive, otherwise reads (hex or binary) from fp_in.
                   55134:  *
                   55135:  */
                   55136: 
                   55137:     if ( inoffset-- > 0 )
                   55138:        val = (cryptkey >> (inoffset*8)) & 0xFF;
                   55139:     else if ( input == HEX ) {
                   55140:        if ( (val = nexthexchar()) != EOF )
                   55141:            val = (val << 4) | nexthexchar();
                   55142:     } else if ( input == BINARY )
                   55143:        val = Getc(fp_in);
                   55144: 
                   55145:     return(val);
                   55146: 
                   55147: }   /* End of nextbyte */
                   55148: 
                   55149: /*****************************************************************************/
                   55150: 
                   55151: nexthexchar()
                   55152: 
                   55153: {
                   55154: 
                   55155:     int                ch;
                   55156: 
                   55157: /*
                   55158:  *
                   55159:  * Reads the next hex character.
                   55160:  *
                   55161:  */
                   55162: 
                   55163:     while ( (ch = Getc(fp_in)) != EOF && ! isxdigit(ch) ) ;
                   55164: 
                   55165:     if ( isdigit(ch) )
                   55166:        ch -= '0';
                   55167:     else if ( isupper(ch) )
                   55168:        ch -= 'A' - 10;
                   55169:     else if ( islower(ch) )
                   55170:        ch -= 'a' - 10;
                   55171: 
                   55172:     return(ch);
                   55173: 
                   55174: }   /* End of nexthexchar */
                   55175: 
                   55176: /*****************************************************************************/
                   55177: 
                   55178: Getc(fp)
                   55179: 
                   55180:     FILE       *fp;
                   55181: 
                   55182: {
                   55183: 
                   55184: /*
                   55185:  *
                   55186:  * Reads the next byte from *fp, sets lastchar, and returns the character.
                   55187:  *
                   55188:  */
                   55189: 
                   55190:     return(lastchar = getc(fp));
                   55191: 
                   55192: }   /* End of Getc */
                   55193: 
                   55194: /*****************************************************************************/
                   55195: 
                   55196: 0707070014230735631004440057030057030000010014660522627503300003100000003244post.src/misc/laserbar.1.TH LASERBAR 1
                   55197: .SH NAME
                   55198: laserbar \- produce bar codes on a PostScript laser printer
                   55199: .SH SYNOPSIS
                   55200: .B laserbar
                   55201: [\fB-r\fP rotate] [\fB-x\fP xoffset] [\fB-y\fP yoffset]
                   55202: [\fB-X\fP xscale] [\fB-Y\fP yscale] [\fB-lns\fP] string
                   55203: .SH DESCRIPTION
                   55204: .I Laserbar
                   55205: prints on the standard output the PostScript text that will produce
                   55206: (on a suitable laser printer) the \s-2CODE-39\s+2 bar code
                   55207: corresponding to
                   55208: .I string.
                   55209: The \fBr\fP option may be used to specify a rotation (in
                   55210: degrees) of the bar code.
                   55211: The \fBx\fP, \fBy\fP, \fBX\fP, and \fBY\fP options may be used to specify
                   55212: an x- or y-axis offset (in inches) or scaling factor, respectively.
                   55213: (The offset is measured from the lower left corner of the page
                   55214: to the upper left corner of the bar
                   55215: code.  By default, the bar code produced is one inch high, and is scaled
                   55216: so that the narrowest elements are each 1/72-inch \- i.e., one point \- wide.)
                   55217: If the \fBl\fP option is specified, the bar code produced is labeled.
                   55218: If the \fBn\fP option is specified, the resulting PostScript text
                   55219: includes a leading \f(CWnewpath\fP command, so that the text may stand
                   55220: alone or precede any other PostScript commands.
                   55221: If the \fBs\fP option is specified, the resulting PostScript text includes 
                   55222: a trailing \f(CWshowpage\fP command, so that the text may stand alone
                   55223: or follow any other PostScript commands.
                   55224: .P
                   55225: This manual page (if it appears with a bar code printed on it) was
                   55226: produced by something like the following sequence:
                   55227: .IP
                   55228: .ft CW
                   55229: laserbar -x 2.5 -y 3 -l -n ABC123xyz > tempfile
                   55230: .br
                   55231: troff -man -Tpost laserbar.1 | dpost >> tempfile
                   55232: .br
                   55233: prt -dprinter -lpostscript tempfile
                   55234: .ft P
                   55235: .SH SEE ALSO
                   55236: laserbar(3), prt(1), dpost(1), postbgi(1), postprint(1), postdmd(1), posttek(1), etc.
                   55237: 0707070014231310670407550057030057030000021027270522633075100002100000000000post.src/picpack0707070014231307541006400057030057030000011033650522633075000003400000002737post.src/picpack/picpack.mkMAKE=/bin/make
                   55238: MAKEFILE=picpack.mk
                   55239: 
                   55240: SYSTEM=V9
                   55241: VERSION=3.3.2
                   55242: 
                   55243: GROUP=bin
                   55244: OWNER=bin
                   55245: 
                   55246: MAN1DIR=/tmp
                   55247: POSTBIN=/usr/bin/postscript
                   55248: 
                   55249: COMMONDIR=../common
                   55250: 
                   55251: CFLGS=-O
                   55252: LDFLGS=-s
                   55253: 
                   55254: CFLAGS=$(CFLGS) -I$(COMMONDIR)
                   55255: LDFLAGS=$(LDFLGS)
                   55256: 
                   55257: HFILES=$(COMMONDIR)/ext.h\
                   55258:        $(COMMONDIR)/gen.h\
                   55259:        $(COMMONDIR)/path.h
                   55260: 
                   55261: OFILES=picpack.o\
                   55262:        $(COMMONDIR)/glob.o\
                   55263:        $(COMMONDIR)/misc.o\
                   55264:        $(COMMONDIR)/tempnam.o
                   55265: 
                   55266: all : picpack
                   55267: 
                   55268: install : all
                   55269:        @if [ ! -d "$(POSTBIN)" ]; then \
                   55270:            mkdir $(POSTBIN); \
                   55271:            chmod 755 $(POSTBIN); \
                   55272:            chgrp $(GROUP) $(POSTBIN); \
                   55273:            chown $(OWNER) $(POSTBIN); \
                   55274:        fi
                   55275:        cp picpack $(POSTBIN)/picpack
                   55276:        @chmod 755 $(POSTBIN)/picpack
                   55277:        @chgrp $(GROUP) $(POSTBIN)/picpack
                   55278:        @chown $(OWNER) $(POSTBIN)/picpack
                   55279:        cp picpack.1 $(MAN1DIR)/picpack.1
                   55280:        @chmod 644 $(MAN1DIR)/picpack.1
                   55281:        @chgrp $(GROUP) $(MAN1DIR)/picpack.1
                   55282:        @chown $(OWNER) $(MAN1DIR)/picpack.1
                   55283: 
                   55284: clean :
                   55285:        rm -f *.o
                   55286: 
                   55287: clobber : clean
                   55288:        rm -f picpack
                   55289: 
                   55290: picpack : $(OFILES)
                   55291:        $(CC) $(CFLAGS) $(LDFLAGS) -o picpack $(OFILES)
                   55292: 
                   55293: picpack.o : $(HFILES)
                   55294: 
                   55295: $(COMMONDIR)/glob.o\
                   55296: $(COMMONDIR)/misc.o\
                   55297: $(COMMONDIR)/tempnam.o :
                   55298:        @cd $(COMMONDIR); $(MAKE) -f common.mk SYSTEM=$(SYSTEM) `basename $@`
                   55299: 
                   55300: changes :
                   55301:        @trap "" 1 2 3 15; \
                   55302:        sed \
                   55303:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
                   55304:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
                   55305:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
                   55306:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
                   55307:            -e "s'^MAN1DIR=.*'MAN1DIR=$(MAN1DIR)'" \
                   55308:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
                   55309:        $(MAKEFILE) >XXX.mk; \
                   55310:        mv XXX.mk $(MAKEFILE)
                   55311: 
                   55312: 0707070014231310711006440057030057030000011030000522627503400003300000030265post.src/picpack/picpack.c/*
                   55313:  *
                   55314:  * picpack - picture packing pre-processor
                   55315:  *
                   55316:  * A trivial troff pre-processor that copies files to stdout, expanding picture
                   55317:  * requests into an in-line format that's passed transparently through troff and
                   55318:  * handled by dpost. The program is an attempt to address requirements, expressed
                   55319:  * by several organizations, of being able to store a document as a single file
                   55320:  * (usually troff input) that can then be sent through dpost and ultimately to
                   55321:  * a PostScript printer.
                   55322:  *
                   55323:  * The program looks for strings listed in the keys[] array at the start of each
                   55324:  * line. When a picture request (as listed in keys[]) is found the second string
                   55325:  * on the line is taken to be a picture file pathname that's added (in transparent
                   55326:  * mode) to the output file. In addition each in-line picture file is preceeded by
                   55327:  * device control command (again passed through in transparent mode) that looks
                   55328:  * like,
                   55329:  *
                   55330:  *     x X InlinePicture filename bytes
                   55331:  *
                   55332:  * where bytes is the size of the picture file (which begins on the next line)
                   55333:  * and filename is the pathname of the picture file. dpost uses both arguments to
                   55334:  * manage in-line pictures (in a big temp file). To handle pictures in diversions
                   55335:  * picpack reads each input file twice. The first pass looks for picture inclusion
                   55336:  * requests and copies each picture file transparently to the output file, while
                   55337:  * second pass just copies the input file to the output file. Things could still
                   55338:  * break, but the two pass method should handle most jobs.
                   55339:  *
                   55340:  * The recognized in-line picture requests are saved in keys[] and by default only
                   55341:  * expand .BP and .PI macro calls. The -k option changes the recognized strings,
                   55342:  * and may be needed if you've built your own picture inclusion macros on top of
                   55343:  * .BP or .PI or decided to list each picture file at the start of your input file
                   55344:  * using a dummy macro. For example you could require every in-line picture be
                   55345:  * named by a dummy macro (say .iP), then the command line,
                   55346:  *
                   55347:  *     picpack -k.iP file > file.pack
                   55348:  *
                   55349:  * hits on lines that begin with .iP (rather than .BP or .PI), and the only files
                   55350:  * pulled in would be ones named as the second argument to the new .iP macro. The
                   55351:  * -k option accepts a space or comma separated list of up to 10 different key
                   55352:  * strings. picpack imposes no contraints on key strings, other than not allowing
                   55353:  * spaces or commas. A key string can begin with \" and in that case it would be
                   55354:  * troff comment.
                   55355:  *
                   55356:  * Although the program will help some users, there are obvious disadvantages.
                   55357:  * Perhaps the most important is that troff output files (with in-line pictures
                   55358:  * included) don't fit the device independent language accepted by important post
                   55359:  * processors like proof, and that means you won't be able to reliably preview a
                   55360:  * packed file on your 5620 or whatever. Another potential problem is that picture
                   55361:  * files can be large. Packing everything together in a single file at an early
                   55362:  * stage has a better chance of exceeding your system's ulimit.
                   55363:  *
                   55364:  */
                   55365: 
                   55366: #include       <stdio.h>
                   55367: #include       <sys/types.h>
                   55368: #include       <sys/stat.h>
                   55369: 
                   55370: #include       "gen.h"                 /* general purpose definitions */
                   55371: #include       "ext.h"                 /* external variable definitions */
                   55372: #include       "path.h"                /* just for TEMPDIR definition */
                   55373: 
                   55374: char           *keys[11] = {".BP", ".PI", NULL};
                   55375: int            quiet = FALSE;
                   55376: 
                   55377: FILE           *fp_in = stdin;         /* input */
                   55378: FILE           *fp_out = stdout;       /* and output files */
                   55379: 
                   55380: /*****************************************************************************/
                   55381: 
                   55382: main(agc, agv)
                   55383: 
                   55384:     int                agc;
                   55385:     char       *agv[];
                   55386: 
                   55387: {
                   55388: 
                   55389: /*
                   55390:  *
                   55391:  * A picture packing pre-processor that copies input files to stdout, expanding
                   55392:  * picture requests (as listed in keys[]) to an in-line format that can be passed
                   55393:  * through troff (using transparent mode) and handled later by dpost.
                   55394:  *
                   55395:  */
                   55396: 
                   55397:     argc = agc;                                /* global so everyone can use them */
                   55398:     argv = agv;
                   55399: 
                   55400:     prog_name = argv[0];               /* just for error messages */
                   55401: 
                   55402:     options();                         /* command line options */
                   55403:     arguments();                       /* translate all the input files */
                   55404:     done();                            /* clean things up */
                   55405: 
                   55406:     exit(x_stat);                      /* everything probably went OK */
                   55407: 
                   55408: }   /* End of main */
                   55409: 
                   55410: /*****************************************************************************/
                   55411: 
                   55412: options()
                   55413: 
                   55414: {
                   55415: 
                   55416:     int                ch;                     /* name returned by getopt() */
                   55417: 
                   55418:     extern char        *optarg;                /* option argument set by getopt() */
                   55419:     extern int optind;
                   55420: 
                   55421: /*
                   55422:  *
                   55423:  * Handles the command line options.
                   55424:  *
                   55425:  */
                   55426: 
                   55427:     while ( (ch = getopt(argc, argv, "k:qDI")) != EOF )  {
                   55428:        switch ( ch )  {
                   55429:            case 'k':                   /* new expansion key strings */
                   55430:                    newkeys(optarg);
                   55431:                    break;
                   55432: 
                   55433:            case 'q':                   /* disables "missing picture" messages */
                   55434:                    quiet = TRUE;
                   55435:                    break;
                   55436: 
                   55437:            case 'D':                   /* debug flag */
                   55438:                    debug = ON;
                   55439:                    break;
                   55440: 
                   55441:            case 'I':                   /* ignore FATAL errors */
                   55442:                    ignore = ON;
                   55443:                    break;
                   55444: 
                   55445:            case '?':                   /* don't know the option */
                   55446:                    error(FATAL, "");
                   55447:                    break;
                   55448: 
                   55449:            default:
                   55450:                    error(FATAL, "missing case for option %c", ch);
                   55451:                    break;
                   55452:        }   /* End switch */
                   55453:     }  /* End while */
                   55454: 
                   55455:     argc -= optind;                    /* get ready for non-options args */
                   55456:     argv += optind;
                   55457: 
                   55458: }   /* End of options */
                   55459: 
                   55460: /*****************************************************************************/
                   55461: 
                   55462: newkeys(list)
                   55463: 
                   55464:     char       *list;                  /* comma or space separated key strings */
                   55465: 
                   55466: {
                   55467: 
                   55468:     char       *p;                     /* next key string from *list */
                   55469:     int                i;                      /* goes in keys[i] */
                   55470:     int                n;                      /* last key string slot in keys[] */
                   55471: 
                   55472: /*
                   55473:  *
                   55474:  * Separates *list into space or comma separated strings and adds each to the
                   55475:  * keys[] array. The strings in keys[] are used to locate the picture inclusion
                   55476:  * requests that are translated to the in-line format. The keys array must end
                   55477:  * with a NULL pointer and by default only expands .BP and .PI macro calls.
                   55478:  *
                   55479:  */
                   55480: 
                   55481:     n = (sizeof(keys) / sizeof(char *)) - 1;
                   55482: 
                   55483:     for ( i = 0, p = strtok(list, " ,"); p != NULL; i++, p = strtok(NULL, " ,") )
                   55484:        if ( i >= n )
                   55485:            error(FATAL, "too many key strings");
                   55486:        else keys[i] = p;
                   55487: 
                   55488:     keys[i] = NULL;
                   55489: 
                   55490: }   /* End of newkeys */
                   55491: 
                   55492: /*****************************************************************************/
                   55493: 
                   55494: arguments()
                   55495: 
                   55496: {
                   55497: 
                   55498:     FILE       *copystdin();
                   55499: 
                   55500: /*
                   55501:  *
                   55502:  * Makes sure all the non-option command line arguments are processed. If we get
                   55503:  * here and there aren't any arguments left, or if '-' is one of the input files
                   55504:  * we process stdin, after copying it to a temporary file.
                   55505:  *
                   55506:  */
                   55507: 
                   55508:     if ( argc < 1 )  {
                   55509:        fp_in = copystdin();
                   55510:        picpack();
                   55511:     } else
                   55512:        while ( argc > 0 ) {
                   55513:            if ( strcmp(*argv, "-") == 0 )
                   55514:                fp_in = copystdin();
                   55515:            else if ( (fp_in = fopen(*argv, "r")) == NULL )
                   55516:                error(FATAL, "can't open %s", *argv);
                   55517:            picpack();
                   55518:            fclose(fp_in);
                   55519:            argc--;
                   55520:            argv++;
                   55521:        }   /* End while */
                   55522: 
                   55523: }   /* End of arguments */
                   55524: 
                   55525: /*****************************************************************************/
                   55526: 
                   55527: FILE *copystdin()
                   55528: 
                   55529: {
                   55530: 
                   55531:     char       *tfile;                 /* temporary file name */
                   55532:     int                fd_out;                 /* and its file descriptor */
                   55533:     FILE       *fp;                    /* return value - the new input file */
                   55534: 
                   55535: /*
                   55536:  *
                   55537:  * Copies stdin to a temp file, unlinks the file, and returns the file pointer
                   55538:  * for the new temporary file to the caller. Needed because we read each input
                   55539:  * file twice in an attempt to handle pictures in diversions.
                   55540:  *
                   55541:  */
                   55542: 
                   55543:     if ( (tfile = tempnam(TEMPDIR, "post")) == NULL )
                   55544:        error(FATAL, "can't generate temp file name");
                   55545: 
                   55546:     if ( (fd_out = creat(tfile, 0660)) == -1 )
                   55547:        error(FATAL, "can't create %s", tfile);
                   55548: 
                   55549:     copyfile(fileno(stdin), fd_out);
                   55550:     close(fd_out);
                   55551: 
                   55552:     if ( (fp = fopen(tfile, "r")) == NULL )
                   55553:        error(FATAL, "can't open %s", tfile);
                   55554: 
                   55555:     unlink(tfile);
                   55556:     return(fp);
                   55557: 
                   55558: }   /* End of copystdin */
                   55559: 
                   55560: /*****************************************************************************/
                   55561: 
                   55562: copyfile(fd_in, fd_out)
                   55563: 
                   55564:     int                fd_in;                  /* input */
                   55565:     int                fd_out;                 /* and output files */
                   55566: 
                   55567: {
                   55568: 
                   55569:     char       buf[512];               /* internal buffer for reads and writes */
                   55570:     int                count;                  /* number of bytes put in buf[] */
                   55571: 
                   55572: /*
                   55573:  *
                   55574:  * Copies file fd_in to fd_out. Handles the second pass for each input file and
                   55575:  * also used to copy stdin to a temporary file.
                   55576:  *
                   55577:  */
                   55578: 
                   55579:     while ( (count = read(fd_in, buf, sizeof(buf))) > 0 )
                   55580:        if ( write(fd_out, buf, count) != count )
                   55581:            error(FATAL, "write error");
                   55582: 
                   55583: }   /* End of copyfile */
                   55584: 
                   55585: /*****************************************************************************/
                   55586: 
                   55587: done()
                   55588: 
                   55589: {
                   55590: 
                   55591: /*
                   55592:  *
                   55593:  * Finished with all the input files - unlink the temporary file that was used
                   55594:  * to record the in-line picture file pathnames.
                   55595:  *
                   55596:  */
                   55597: 
                   55598:     if ( temp_file != NULL )
                   55599:        unlink(temp_file);
                   55600: 
                   55601: }   /* End of done */
                   55602: 
                   55603: /*****************************************************************************/
                   55604: 
                   55605: picpack()
                   55606: 
                   55607: {
                   55608: 
                   55609:     char       line[512];              /* next input line */
                   55610:     char       name[100];              /* picture file names - from BP or PI */
                   55611:     int                i;                      /* for looking through keys[] */
                   55612: 
                   55613: /*
                   55614:  *
                   55615:  * Handles the two passes over the next input file. First pass compares the start
                   55616:  * of each line in *fp_in with the key strings saved in the keys[] array. If a
                   55617:  * match is found inline() is called to copy the picture file (ie. the file named
                   55618:  * as the second string in line[]) to stdout, provided the file hasn't previously
                   55619:  * been copied. The second pass goes back to the start of fp_in and copies it all
                   55620:  * to the output file.
                   55621:  *
                   55622:  */
                   55623: 
                   55624:     while ( fgets(line, sizeof(line), fp_in) != NULL )  {
                   55625:        for ( i = 0; keys[i] != NULL; i++ )
                   55626:            if ( strncmp(line, keys[i], strlen(keys[i])) == 0 )  {
                   55627:                if ( sscanf(line, "%*s %s", name) == 1 )  {
                   55628:                    strtok(name, "(");
                   55629:                    if ( gotpicfile(name) == FALSE )
                   55630:                        inline(name);
                   55631:                }   /* End if */
                   55632:            }   /* End if */
                   55633:     }  /* End while */
                   55634: 
                   55635:     fflush(fp_out);                    /* second pass - copy fp_in to fp_out */
                   55636:     fseek(fp_in, 0L, 0);
                   55637:     copyfile(fileno(fp_in), fileno(fp_out));
                   55638: 
                   55639: }   /* End of picpack */
                   55640: 
                   55641: /*****************************************************************************/
                   55642: 
                   55643: inline(name)
                   55644: 
                   55645:     char       *name;                  /* name of the in-line picture file */
                   55646: 
                   55647: {
                   55648: 
                   55649:     long       size;                   /* size in bytes - from fstat */
                   55650:     FILE       *fp;                    /* for reading *name */
                   55651:     int                ch;                     /* next character from picture file */
                   55652:     int                lastch = '\n';          /* so we know when to put out \! */
                   55653: 
                   55654:     struct stat        sbuf;                   /* for the picture file size */
                   55655: 
                   55656: /*
                   55657:  *
                   55658:  * Copies the picture file *name to the output file in an in-line format that can
                   55659:  * be passed through troff and recovered later by dpost. Transparent mode is used
                   55660:  * so each line starts with \! and all \ characters must be escaped. The in-line
                   55661:  * picture sequence begins with an "x X InlinePicture" device control command that
                   55662:  * names the picture file and gives its size (in bytes).
                   55663:  *
                   55664:  */
                   55665: 
                   55666:     if ( (fp = fopen(name, "r")) != NULL )  {
                   55667:        fstat(fileno(fp), &sbuf);
                   55668:        if ( (size = sbuf.st_size) > 0 )  {
                   55669:            fprintf(fp_out, "\\!x X InlinePicture %s %ld\n", name, size);
                   55670:            while ( (ch = getc(fp)) != EOF )  {
                   55671:                if ( lastch == '\n' )
                   55672:                    fprintf(fp_out, "\\!");
                   55673:                if ( ch == '\\' )
                   55674:                    putc('\\', fp_out);
                   55675:                putc(lastch = ch, fp_out);
                   55676:            }   /* End while */
                   55677:            if ( lastch != '\n' )
                   55678:                putc('\n', fp_out);
                   55679:        }    /* End if */
                   55680:        fclose(fp);
                   55681:        addpicfile(name);
                   55682:     } else if ( quiet == FALSE )
                   55683:        error(NON_FATAL, "can't read picture file %s", name);
                   55684: 
                   55685: }   /* End of inline */
                   55686: 
                   55687: /*****************************************************************************/
                   55688: 
                   55689: gotpicfile(name)
                   55690: 
                   55691:     char       *name;
                   55692: 
                   55693: {
                   55694: 
                   55695:     char       buf[100];
                   55696:     FILE       *fp_pic;
                   55697: 
                   55698: /*
                   55699:  *
                   55700:  * Checks the list of previously added picture files in *temp_file and returns
                   55701:  * FALSE if it's a new file and TRUE otherwise. Probably should open the temp
                   55702:  * file once for update and leave it open, rather than opening and closing it
                   55703:  * every time.
                   55704:  *
                   55705:  */
                   55706: 
                   55707:     if ( temp_file != NULL )
                   55708:        if ( (fp_pic = fopen(temp_file, "r")) != NULL )  {
                   55709:            while ( fscanf(fp_pic, "%s", buf) != EOF )
                   55710:                if ( strcmp(buf, name) == 0 )  {
                   55711:                    fclose(fp_pic);
                   55712:                    return(TRUE);
                   55713:                }   /* End if */
                   55714:            fclose(fp_pic);
                   55715:        }   /* End if */
                   55716: 
                   55717:     return(FALSE);
                   55718: 
                   55719: }   /* End of gotpicfile */
                   55720: 
                   55721: /*****************************************************************************/
                   55722: 
                   55723: addpicfile(name)
                   55724: 
                   55725:     char       *name;
                   55726: 
                   55727: {
                   55728: 
                   55729:     FILE       *fp_pic;
                   55730: 
                   55731: /*
                   55732:  *
                   55733:  * Adds string *name to the list of in-line picture files that's maintained in
                   55734:  * *temp_file. Should undoubtedly open the file once for update and use fseek()
                   55735:  * to move around in the file!
                   55736:  *
                   55737:  */
                   55738: 
                   55739:     if ( temp_file == NULL )
                   55740:        if ( (temp_file = tempnam(TEMPDIR, "picpac")) == NULL )
                   55741:            return;
                   55742: 
                   55743:     if ( (fp_pic = fopen(temp_file, "a")) != NULL )  {
                   55744:        fprintf(fp_pic, "%s\n", name);
                   55745:        fclose(fp_pic);
                   55746:     }  /* End if */
                   55747: 
                   55748: }   /* End of addpicfile */
                   55749: 
                   55750: /*****************************************************************************/
                   55751: 
                   55752: 0707070014231310721006440057030057030000011030250522627503400003300000005252post.src/picpack/picpack.1.TH PICPACK 1
                   55753: .SH NAME
                   55754: .B picpack
                   55755: \- PostScript picture packing preprocessor
                   55756: .SH SYNOPSIS
                   55757: \*(mBpicpack\f1
                   55758: .OP "" options []
                   55759: .OP "" files []
                   55760: .SH DESCRIPTION
                   55761: .B picpack
                   55762: copies
                   55763: .I files
                   55764: to stdout, expanding picture inclusion requests
                   55765: (marked by the
                   55766: .MW .BP
                   55767: or
                   55768: .MW .PI
                   55769: macros) into an in-line
                   55770: format that can be passed through
                   55771: .B troff
                   55772: and handled by
                   55773: .BR dpost .
                   55774: If no
                   55775: .I files
                   55776: are specified
                   55777: or if
                   55778: .OP \-
                   55779: is one of the input
                   55780: .I files
                   55781: standard input is read.
                   55782: The following
                   55783: .I options
                   55784: are understood:
                   55785: .TP 0.75i
                   55786: .OP \-k list
                   55787: .I list
                   55788: is a comma- or space-separated string of words used to locate
                   55789: picture inclusion requests.
                   55790: The start of every line in the input
                   55791: .I files
                   55792: is compared with each word in
                   55793: .I list .
                   55794: If there is a match, the second string on the line is
                   55795: taken as the pathname of a picture file that is added
                   55796: to the output file.
                   55797: The default
                   55798: .I list
                   55799: is
                   55800: .RM `` ".BP .PI ''.
                   55801: .TP
                   55802: .OP \-q
                   55803: Suppress ``missing picture file'' error messages.
                   55804: .PP
                   55805: .B picpack
                   55806: is a trivial preprocessor that, in a sense, duplicates some of the
                   55807: picture inclusion capabilities already available in
                   55808: .BR dpost .
                   55809: .B picpack
                   55810: should not be used if your formatting command line includes
                   55811: a call to
                   55812: .BR dpost .
                   55813: Its only purpose is to combine picture files with text in a single
                   55814: file that can be passed through
                   55815: .B troff
                   55816: and unpacked, at some later time, by
                   55817: .BR dpost .
                   55818: The original picture inclusion mechanism, with files are pulled in by
                   55819: .BR dpost ,
                   55820: is the preferred approach.
                   55821: .SH EXAMPLES
                   55822: A typical application might be in a distributed printing environment
                   55823: where everything up to
                   55824: .B troff
                   55825: is run by the user and everything after
                   55826: .B troff
                   55827: is handled by a spooling daemon (perhaps
                   55828: .BR lp ).
                   55829: In that case the command line would be,
                   55830: .EX
                   55831: pic  \f2file\fP | tbl | eqn | picpack | troff -mm -Tpost | lp
                   55832: .EE
                   55833: A poor example, although one that should still work, would be,
                   55834: .EX
                   55835: pic  \f2file\fP | tbl | eqn | picpack | troff -mm -Tpost | dpost >\f2file\fP.ps
                   55836: .EE
                   55837: In this case picture inclusion requests could (and should) be handled by
                   55838: .BR dpost .
                   55839: Running
                   55840: .B picpack
                   55841: is not needed or even recommended.
                   55842: It should be dropped from any pipeline that includes a call to
                   55843: .BR dpost .
                   55844: .SH DIAGNOSTICS
                   55845: A 0 exit status is returned if
                   55846: .I files
                   55847: were successfully processed.
                   55848: .SH WARNINGS
                   55849: .PP
                   55850: Combining pictures and text using the capabilities available in
                   55851: .B dpost
                   55852: is the recommended approach and is always guaranteed to be more
                   55853: efficient than
                   55854: .BR picpack .
                   55855: Running
                   55856: .B picpack
                   55857: and
                   55858: .B dpost
                   55859: in the same pipeline makes little sense.
                   55860: .PP
                   55861: Using
                   55862: .B picpack
                   55863: will likely result in files that can no longer be reliably passed
                   55864: through other important
                   55865: .B troff
                   55866: postprocessors like
                   55867: .BR proof .
                   55868: At present
                   55869: .B picpack
                   55870: is only guaranteed to work with
                   55871: .BR dpost .
                   55872: .SH SEE ALSO
                   55873: .BR dpost (1),
                   55874: .BR troff (1)
                   55875: 0707070014230265620407550057030057030000020675370522633075200002100000000000post.src/postbgi0707070014230265771006400057030057030000010664560522633075200003400000003742post.src/postbgi/postbgi.mkMAKE=/bin/make
                   55876: MAKEFILE=postbgi.mk
                   55877: 
                   55878: SYSTEM=V9
                   55879: VERSION=3.3.2
                   55880: 
                   55881: GROUP=bin
                   55882: OWNER=bin
                   55883: 
                   55884: MAN1DIR=/tmp
                   55885: POSTBIN=/usr/bin/postscript
                   55886: POSTLIB=/usr/lib/postscript
                   55887: 
                   55888: COMMONDIR=../common
                   55889: 
                   55890: CFLGS=-O
                   55891: LDFLGS=-s
                   55892: 
                   55893: CFLAGS=$(CFLGS) -I$(COMMONDIR)
                   55894: LDFLAGS=$(LDFLGS)
                   55895: 
                   55896: HFILES=postbgi.h\
                   55897:        $(COMMONDIR)/comments.h\
                   55898:        $(COMMONDIR)/ext.h\
                   55899:        $(COMMONDIR)/gen.h\
                   55900:        $(COMMONDIR)/path.h
                   55901: 
                   55902: OFILES=postbgi.o\
                   55903:        $(COMMONDIR)/glob.o\
                   55904:        $(COMMONDIR)/misc.o\
                   55905:        $(COMMONDIR)/request.o
                   55906: 
                   55907: all : postbgi
                   55908: 
                   55909: install : all
                   55910:        @if [ ! -d "$(POSTBIN)" ]; then \
                   55911:            mkdir $(POSTBIN); \
                   55912:            chmod 755 $(POSTBIN); \
                   55913:            chgrp $(GROUP) $(POSTBIN); \
                   55914:            chown $(OWNER) $(POSTBIN); \
                   55915:        fi
                   55916:        @if [ ! -d "$(POSTLIB)" ]; then \
                   55917:            mkdir $(POSTLIB); \
                   55918:            chmod 755 $(POSTLIB); \
                   55919:            chgrp $(GROUP) $(POSTLIB); \
                   55920:            chown $(OWNER) $(POSTLIB); \
                   55921:        fi
                   55922:        cp postbgi $(POSTBIN)/postbgi
                   55923:        @chmod 755 $(POSTBIN)/postbgi
                   55924:        @chgrp $(GROUP) $(POSTBIN)/postbgi
                   55925:        @chown $(OWNER) $(POSTBIN)/postbgi
                   55926:        cp postbgi.ps $(POSTLIB)/postbgi.ps
                   55927:        @chmod 644 $(POSTLIB)/postbgi.ps
                   55928:        @chgrp $(GROUP) $(POSTLIB)/postbgi.ps
                   55929:        @chown $(OWNER) $(POSTLIB)/postbgi.ps
                   55930:        cp postbgi.1 $(MAN1DIR)/postbgi.1
                   55931:        @chmod 644 $(MAN1DIR)/postbgi.1
                   55932:        @chgrp $(GROUP) $(MAN1DIR)/postbgi.1
                   55933:        @chown $(OWNER) $(MAN1DIR)/postbgi.1
                   55934: 
                   55935: clean :
                   55936:        rm -f *.o
                   55937: 
                   55938: clobber : clean
                   55939:        rm -f postbgi
                   55940: 
                   55941: postbgi : $(OFILES)
                   55942:        $(CC) $(CFLAGS) $(LDFLAGS) -o postbgi $(OFILES) -lm
                   55943: 
                   55944: postbgi.o : $(HFILES)
                   55945: 
                   55946: $(COMMONDIR)/glob.o\
                   55947: $(COMMONDIR)/misc.o\
                   55948: $(COMMONDIR)/request.o :
                   55949:        @cd $(COMMONDIR); $(MAKE) -f common.mk `basename $@`
                   55950: 
                   55951: changes :
                   55952:        @trap "" 1 2 3 15; \
                   55953:        sed \
                   55954:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
                   55955:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
                   55956:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
                   55957:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
                   55958:            -e "s'^MAN1DIR=.*'MAN1DIR=$(MAN1DIR)'" \
                   55959:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
                   55960:            -e "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" \
                   55961:        $(MAKEFILE) >XXX.mk; \
                   55962:        mv XXX.mk $(MAKEFILE); \
                   55963:        sed \
                   55964:            -e "s'^.ds dQ.*'.ds dQ $(POSTLIB)'" \
                   55965:        postbgi.1 >XXX.1; \
                   55966:        mv XXX.1 postbgi.1
                   55967: 
                   55968: 0707070014230265641006440057030057030000010675700522627503400003300000117472post.src/postbgi/postbgi.c/*
                   55969:  *
                   55970:  * postbgi - BGI (Basic Graphical Instructions) to PostScript translator.
                   55971:  *
                   55972:  * A simple program that translates BGI files into PostScript. Probably only
                   55973:  * useful in Computer Centers that support STARE or PRISM plotters. Most of the
                   55974:  * code was borrowed from the corresponding program that was written for printers
                   55975:  * that understand Impress.
                   55976:  *
                   55977:  * Extending the original program to handle PRISM jobs was not trivial. Graphics
                   55978:  * packages that support PRISM occasionally use BGI commands that I ignored in the
                   55979:  * STARE implementation. Subroutines, color requests, patterns (for filling), and
                   55980:  * filled trapeziods were the most important omissions. All are now implemented,
                   55981:  * and at present only repeats, filled slices, and raster rectangles are missing.
                   55982:  *
                   55983:  * Pattern filling results were not always predictable or even good, unless the
                   55984:  * halftone screen definitions were changed and scaling was adjusted so one pixel
                   55985:  * in user space mapped into an integral number of device space pixels. Doing that
                   55986:  * makes the resulting PostScript output device dependent, but was often necessary.
                   55987:  * I've added two booleans to the PostScript prologue (fixscreen and scaletodevice)
                   55988:  * that control what's done. By default both are false (check postbgi.ps) but can
                   55989:  * be set to true on the command line using the -P option or by hand by changing
                   55990:  * the definitions in the prologue. A command line that would set fixscreen and
                   55991:  * scaletodevice true would look like,
                   55992:  *
                   55993:  *     postbgi -P"/fixscreen true" -P"/scaletodevice true" file >file.ps
                   55994:  *
                   55995:  * Several other approaches are available if you want to have your spooler handle
                   55996:  * STARE and PRISM jobs differently. A boolean called prism is defined in the
                   55997:  * prologue (postbgi.ps) and if it's set to true PostScript procedure setup will
                   55998:  * set fixscreen and scaletodevice to true before anything important is done. That
                   55999:  * means the following command line,
                   56000:  *
                   56001:  *     postbgi -P"/prism true" file >file.ps
                   56002:  *
                   56003:  * accomplishes the same things as the last example. Two different prologue files,
                   56004:  * one for STARE jobs and the other for PRISM, could be used and the spooler could
                   56005:  * point postbgi to the appropriate one using the -L option. In that case the only
                   56006:  * important difference in the two prologues would be the definition of prism. The
                   56007:  * prologue used for PRISM jobs would have prism set to true, while the STARE
                   56008:  * prologue would have it set to false.
                   56009:  *
                   56010:  * Also included is code that ties lines to device space coordinates. What you get
                   56011:  * is a consistent line thickness, but placement of lines won't be exact. It's a
                   56012:  * trade-off that should be right for most jobs. Everything is implemented in the
                   56013:  * prologue (postbgi.ps) and nothing will be done if the linewidth is zero or if
                   56014:  * the boolean fixlinewidth (again in postbgi.ps) is false. Once again the -P
                   56015:  * option can be used to set fixlinewidth to whatever you choose.
                   56016:  *
                   56017:  * BGI supports color mixing but PostScript doesn't. BGI files that expect to mix
                   56018:  * colors won't print properly. PostScript's fill operator overlays whatever has
                   56019:  * already been put down. Implementing color mixing would have been a terribly
                   56020:  * difficult job - not worth the effort!
                   56021:  *
                   56022:  * The PostScript prologue is copied from *prologue before any of the input files
                   56023:  * are translated. The program expects that the following PostScript procedures
                   56024:  * are defined in that file:
                   56025:  *
                   56026:  *     setup
                   56027:  *
                   56028:  *       mark ... setup -
                   56029:  *
                   56030:  *         Handles special initialization stuff that depends on how the program
                   56031:  *         was called. Expects to find a mark followed by key/value pairs on the
                   56032:  *         stack. The def operator is applied to each pair up to the mark, then
                   56033:  *         the default state is set up.
                   56034:  *
                   56035:  *     pagesetup
                   56036:  *
                   56037:  *       page pagesetup -
                   56038:  *
                   56039:  *         Does whatever is needed to set things up for the next page. Expects
                   56040:  *         to find the current page number on the stack.
                   56041:  *
                   56042:  *     v
                   56043:  *
                   56044:  *       dx1 dy1 ... dxn dyn x y v -
                   56045:  *
                   56046:  *         Draws the vector described by the numbers on the stack. The top two
                   56047:  *         numbers are the coordinates of the starting point. The rest of the
                   56048:  *         numbers are relative displacements from the preceeding point.
                   56049:  *
                   56050:  *     pp
                   56051:  *
                   56052:  *       x1 y1 ... xn yn string pp -
                   56053:  *
                   56054:  *         Prints string, which is always a single character, at the points
                   56055:  *         represented by the rest of the numbers on the stack.
                   56056:  *
                   56057:  *     R
                   56058:  *
                   56059:  *       n deltax deltay x y R -
                   56060:  *
                   56061:  *         Creates a rectangular path with its lower left corner at (x, y) and
                   56062:  *         sides of length deltax and deltay. The resulting path is stroked if
                   56063:  *         n is 0 and filled otherwise.
                   56064:  *
                   56065:  *     T
                   56066:  *
                   56067:  *       dx3 dy3 dx2 dy2 dx1 dy1 x y T -
                   56068:  *
                   56069:  *         Fills a trapezoid starting at (x, y) and having relative displacements
                   56070:  *         given by the (dx, dy) pairs.
                   56071:  *
                   56072:  *     t
                   56073:  *
                   56074:  *       angle x y string t -
                   56075:  *
                   56076:  *         Prints string starting at (x, y) using an orientation of angle degrees.
                   56077:  *         The PostScript procedure can handle any angle, but BGI files will only
                   56078:  *         request 0 or 90 degrees. Text printed at any other orientation will be
                   56079:  *         vector generated.
                   56080:  *
                   56081:  *     p
                   56082:  *
                   56083:  *       x y p -
                   56084:  *
                   56085:  *         Called to mark the point (x, y). It fills a small circle, that right
                   56086:  *         now has a constant radius. This stuff could probably be much more
                   56087:  *         efficient?
                   56088:  *
                   56089:  *     l
                   56090:  *
                   56091:  *       array l -
                   56092:  *
                   56093:  *         Sets the line drawing mode according to the description given in
                   56094:  *         array. The arrays that describe the different line styles are declared
                   56095:  *         in STYLES (file posttek.h), although it would be better to have them
                   56096:  *         defined in the prologue.
                   56097:  *
                   56098:  *     c
                   56099:  *
                   56100:  *       red green blue c -
                   56101:  *
                   56102:  *         Sets the current PostScript RGB color using setrgbcolor. Also used for
                   56103:  *         selecting appropriate patterns as colors.
                   56104:  *
                   56105:  *     f
                   56106:  *
                   56107:  *       bgisize f -
                   56108:  *
                   56109:  *         Changes the size of the font that's used to print text. bgisize is a
                   56110:  *         grid separation in a 5 by 7 array in which characters are assumed to
                   56111:  *         be built.
                   56112:  *
                   56113:  *     done
                   56114:  *
                   56115:  *       done
                   56116:  *
                   56117:  *         Makes sure the last page is printed. Only needed when we're printing
                   56118:  *         more than one page on each sheet of paper.
                   56119:  *
                   56120:  * The default line width is zero, which forces lines to be one pixel wide. That
                   56121:  * works well for 'write to black' engines but won't be right for 'write to white'
                   56122:  * engines. The line width can be changed using the -w option, or you can change
                   56123:  * the initialization of linewidth in the prologue. Code in the prologue supports
                   56124:  * the generation of uniform width lines when linewidth is non-zero and boolean
                   56125:  * fixlinewidth is true.
                   56126:  *
                   56127:  * Many default values, like the magnification and orientation, are defined in 
                   56128:  * the prologue, which is where they belong. If they're changed (by options), an
                   56129:  * appropriate definition is made after the prologue is added to the output file.
                   56130:  * The -P option passes arbitrary PostScript through to the output file. Among
                   56131:  * other things it can be used to set (or change) values that can't be accessed by
                   56132:  * other options.
                   56133:  *
                   56134:  */
                   56135: 
                   56136: #include <stdio.h>
                   56137: #include <fcntl.h>
                   56138: #include <signal.h>
                   56139: #include <math.h>
                   56140: #include <ctype.h>
                   56141: 
                   56142: #include "comments.h"                  /* PostScript file structuring comments */
                   56143: #include "gen.h"                       /* general purpose definitions */
                   56144: #include "path.h"                      /* for the prologue */
                   56145: #include "ext.h"                       /* external variable declarations */
                   56146: #include "postbgi.h"                   /* a few definitions just used here */
                   56147: 
                   56148: char   *optnames = "a:c:f:m:n:o:p:w:x:y:A:C:E:J:L:P:R:DI";
                   56149: 
                   56150: char   *prologue = POSTBGI;            /* default PostScript prologue */
                   56151: char   *formfile = FORMFILE;           /* stuff for multiple pages per sheet */
                   56152: 
                   56153: int    formsperpage = 1;               /* page images on each piece of paper */
                   56154: int    copies = 1;                     /* and this many copies of each sheet */
                   56155: 
                   56156: char   *styles[] = STYLES;             /* descriptions of line styles */
                   56157: 
                   56158: int    hpos = 0;                       /* current horizontal */
                   56159: int    vpos = 0;                       /* and vertical position */
                   56160: 
                   56161: int    bgisize = BGISIZE;              /* just the character grid spacing */
                   56162: int    linespace;                      /* distance between lines of text */
                   56163: 
                   56164: int    bgimode;                        /* character or graph mode */
                   56165: 
                   56166: int    in_subr = FALSE;                /* currently defining a subroutine */
                   56167: int    in_global = FALSE;              /* to save space with subroutine defs */
                   56168: int    subr_id = 0;                    /* defining this subroutine */
                   56169: int    shpos = 0;                      /* starting horizontal */
                   56170: int    svpos = 0;                      /* and vertical positions - subroutines */
                   56171: Disp   displacement[64];               /* dx and dy after a subroutine call */
                   56172: 
                   56173: Fontmap        fontmap[] = FONTMAP;            /* for translating font names */
                   56174: char   *fontname = "Courier";          /* use this PostScript font */
                   56175: 
                   56176: int    page = 0;                       /* page we're working on */
                   56177: int    printed = 0;                    /* printed this many pages */
                   56178: 
                   56179: FILE   *fp_in = stdin;                 /* read from this file */
                   56180: FILE   *fp_out = NULL;                 /* and write stuff here */
                   56181: FILE   *fp_acct = NULL;                /* for accounting data */
                   56182: 
                   56183: /*****************************************************************************/
                   56184: 
                   56185: main(agc, agv)
                   56186: 
                   56187:     int                agc;
                   56188:     char       *agv[];
                   56189: 
                   56190: {
                   56191: 
                   56192: /*
                   56193:  *
                   56194:  * A program that converts BGI (Basic Graphical Instructions) files generated by
                   56195:  * packages like GRAFPAC and DISSPLA into PostScript. It does an adequate job but
                   56196:  * is far from perfect. A few things still haven't been implemented (eg. repeats
                   56197:  * and raster rectangles), but what's here should be good enough for most of our
                   56198:  * STARE and PRISM jobs. Color mixing (in PRISM jobs) won't work on PostScript
                   56199:  * printers, and there's no chance I'll implement it!
                   56200:  *
                   56201:  */
                   56202: 
                   56203:     argc = agc;                                /* global so everyone can use them */
                   56204:     argv = agv;
                   56205: 
                   56206:     prog_name = argv[0];               /* just for error messages */
                   56207: 
                   56208:     init_signals();                    /* set up interrupt handling */
                   56209:     header();                          /* PostScript header comments */
                   56210:     options();                         /* command line options */
                   56211:     setup();                           /* for PostScript */
                   56212:     arguments();                       /* followed by each input file */
                   56213:     done();                            /* print the last page etc. */
                   56214:     account();                         /* job accounting data */
                   56215: 
                   56216:     exit(x_stat);                      /* everything probably went OK */
                   56217: 
                   56218: }   /* End of main */
                   56219: 
                   56220: /*****************************************************************************/
                   56221: 
                   56222: init_signals()
                   56223: 
                   56224: {
                   56225: 
                   56226: /*
                   56227:  *
                   56228:  * Make sure we handle interrupts.
                   56229:  *
                   56230:  */
                   56231: 
                   56232:     if ( signal(SIGINT, interrupt) == SIG_IGN )  {
                   56233:        signal(SIGINT, SIG_IGN);
                   56234:        signal(SIGQUIT, SIG_IGN);
                   56235:        signal(SIGHUP, SIG_IGN);
                   56236:     } else {
                   56237:        signal(SIGHUP, interrupt);
                   56238:        signal(SIGQUIT, interrupt);
                   56239:     }   /* End else */
                   56240: 
                   56241:     signal(SIGTERM, interrupt);
                   56242: 
                   56243: }   /* End of init_signals */
                   56244: 
                   56245: /*****************************************************************************/
                   56246: 
                   56247: header()
                   56248: 
                   56249: {
                   56250: 
                   56251:     int                ch;                     /* return value from getopt() */
                   56252:     int                old_optind = optind;    /* for restoring optind - should be 1 */
                   56253: 
                   56254: /*
                   56255:  *
                   56256:  * Scans the option list looking for things, like the prologue file, that we need
                   56257:  * right away but could be changed from the default. Doing things this way is an
                   56258:  * attempt to conform to Adobe's latest file structuring conventions. In particular
                   56259:  * they now say there should be nothing executed in the prologue, and they have
                   56260:  * added two new comments that delimit global initialization calls. Once we know
                   56261:  * where things really are we write out the job header, follow it by the prologue,
                   56262:  * and then add the ENDPROLOG and BEGINSETUP comments.
                   56263:  *
                   56264:  */
                   56265: 
                   56266:     while ( (ch = getopt(argc, argv, optnames)) != EOF )
                   56267:        if ( ch == 'L' )
                   56268:            prologue = optarg;
                   56269:        else if ( ch == '?' )
                   56270:            error(FATAL, "");
                   56271: 
                   56272:     optind = old_optind;               /* get ready for option scanning */
                   56273: 
                   56274:     fprintf(stdout, "%s", CONFORMING);
                   56275:     fprintf(stdout, "%s %s\n", VERSION, PROGRAMVERSION);
                   56276:     fprintf(stdout, "%s %s\n", DOCUMENTFONTS, ATEND);
                   56277:     fprintf(stdout, "%s %s\n", PAGES, ATEND);
                   56278:     fprintf(stdout, "%s", ENDCOMMENTS);
                   56279: 
                   56280:     if ( cat(prologue) == FALSE )
                   56281:        error(FATAL, "can't read %s", prologue);
                   56282: 
                   56283:     fprintf(stdout, "%s", ENDPROLOG);
                   56284:     fprintf(stdout, "%s", BEGINSETUP);
                   56285:     fprintf(stdout, "mark\n");
                   56286: 
                   56287: }   /* End of header */
                   56288: 
                   56289: /*****************************************************************************/
                   56290: 
                   56291: options()
                   56292: 
                   56293: {
                   56294: 
                   56295:     int                ch;                     /* option name - from getopt() */
                   56296: 
                   56297: /*
                   56298:  *
                   56299:  * Reads and processes the command line options.
                   56300:  *
                   56301:  */
                   56302: 
                   56303:     while ( (ch = getopt(argc, argv, optnames)) != EOF )  {
                   56304:        switch ( ch )  {
                   56305:            case 'a':                   /* aspect ratio */
                   56306:                    fprintf(stdout, "/aspectratio %s def\n", optarg);
                   56307:                    break;
                   56308: 
                   56309:            case 'c':                   /* copies */
                   56310:                    copies = atoi(optarg);
                   56311:                    fprintf(stdout, "/#copies %s def\n", optarg);
                   56312:                    break;
                   56313: 
                   56314:            case 'f':                   /* new font */
                   56315:                    fontname = get_font(optarg);
                   56316:                    fprintf(stdout, "/font /%s def\n", fontname);
                   56317:                    break;
                   56318: 
                   56319:            case 'm':                   /* magnification */
                   56320:                    fprintf(stdout, "/magnification %s def\n", optarg);
                   56321:                    break;
                   56322: 
                   56323:            case 'n':                   /* forms per page */
                   56324:                    formsperpage = atoi(optarg);
                   56325:                    fprintf(stdout, "%s %s\n", FORMSPERPAGE, optarg);
                   56326:                    fprintf(stdout, "/formsperpage %s def\n", optarg);
                   56327:                    break;
                   56328: 
                   56329:            case 'o':                   /* output page list */
                   56330:                    out_list(optarg);
                   56331:                    break;
                   56332: 
                   56333:            case 'p':                   /* landscape or portrait mode */
                   56334:                    if ( *optarg == 'l' )
                   56335:                        fprintf(stdout, "/landscape true def\n");
                   56336:                    else fprintf(stdout, "/landscape false def\n");
                   56337:                    break;
                   56338: 
                   56339:            case 'w':                   /* line width */
                   56340:                    fprintf(stdout, "/linewidth %s def\n", optarg);
                   56341:                    break;
                   56342: 
                   56343:            case 'x':                   /* shift horizontally */
                   56344:                    fprintf(stdout, "/xoffset %s def\n", optarg);
                   56345:                    break;
                   56346: 
                   56347:            case 'y':                   /* and vertically on the page */
                   56348:                    fprintf(stdout, "/yoffset %s def\n", optarg);
                   56349:                    break;
                   56350: 
                   56351:            case 'A':                   /* force job accounting */
                   56352:            case 'J':
                   56353:                    if ( (fp_acct = fopen(optarg, "a")) == NULL )
                   56354:                        error(FATAL, "can't open accounting file %s", optarg);
                   56355:                    break;
                   56356: 
                   56357:            case 'C':                   /* copy file straight to output */
                   56358:                    if ( cat(optarg) == FALSE )
                   56359:                        error(FATAL, "can't read %s", optarg);
                   56360:                    break;
                   56361: 
                   56362:            case 'E':                   /* text font encoding */
                   56363:                    fontencoding = optarg;
                   56364:                    break;
                   56365: 
                   56366:            case 'L':                   /* Postscript prologue file */
                   56367:                    prologue = optarg;
                   56368:                    break;
                   56369: 
                   56370:            case 'P':                   /* PostScript pass through */
                   56371:                    fprintf(stdout, "%s\n", optarg);
                   56372:                    break;
                   56373: 
                   56374:            case 'R':                   /* special global or page level request */
                   56375:                    saverequest(optarg);
                   56376:                    break;
                   56377: 
                   56378:            case 'D':                   /* debug flag */
                   56379:                    debug = ON;
                   56380:                    break;
                   56381: 
                   56382:            case 'I':                   /* ignore FATAL errors */
                   56383:                    ignore = ON;
                   56384:                    break;
                   56385: 
                   56386:            case '?':                   /* don't know the option */
                   56387:                    error(FATAL, "");
                   56388:                    break;
                   56389: 
                   56390:            default:                    /* don't know what to do for ch */
                   56391:                    error(FATAL, "missing case for option %c", ch);
                   56392:                    break;
                   56393:        }   /* End switch */
                   56394:     }  /* End while */
                   56395: 
                   56396:     argc -= optind;                    /* get ready for non-option args */
                   56397:     argv += optind;
                   56398: 
                   56399: }   /* End of options */
                   56400: 
                   56401: /*****************************************************************************/
                   56402: 
                   56403: char *get_font(name)
                   56404: 
                   56405:     char       *name;                  /* name the user asked for */
                   56406: 
                   56407: {
                   56408: 
                   56409:     int                i;                      /* for looking through fontmap[] */
                   56410: 
                   56411: /*
                   56412:  *
                   56413:  * Called from options() to map a user's font name into a legal PostScript name.
                   56414:  * If the lookup fails *name is returned to the caller. That should let you choose
                   56415:  * any PostScript font.
                   56416:  *
                   56417:  */
                   56418: 
                   56419:     for ( i = 0; fontmap[i].name != NULL; i++ )
                   56420:        if ( strcmp(name, fontmap[i].name) == 0 )
                   56421:            return(fontmap[i].val);
                   56422: 
                   56423:     return(name);
                   56424: 
                   56425: }   /* End of get_font */
                   56426: 
                   56427: /*****************************************************************************/
                   56428: 
                   56429: setup()
                   56430: 
                   56431: {
                   56432: 
                   56433: /*
                   56434:  *
                   56435:  * Handles things that must be done after the options are read but before the
                   56436:  * input files are processed.
                   56437:  *
                   56438:  */
                   56439: 
                   56440:     writerequest(0, stdout);           /* global requests eg. manual feed */
                   56441:     setencoding(fontencoding);
                   56442:     fprintf(stdout, "setup\n");
                   56443: 
                   56444:     if ( formsperpage > 1 )  {
                   56445:        if ( cat(formfile) == FALSE )
                   56446:            error(FATAL, "can't read %s", formfile);
                   56447:        fprintf(stdout, "%d setupforms\n", formsperpage);
                   56448:     }  /* End if */
                   56449: 
                   56450:     fprintf(stdout, "%s", ENDSETUP);
                   56451: 
                   56452: }   /* End of setup */
                   56453: 
                   56454: /*****************************************************************************/
                   56455: 
                   56456: arguments()
                   56457: 
                   56458: {
                   56459: 
                   56460: /*
                   56461:  *
                   56462:  * Makes sure all the non-option command line options are processed. If we get
                   56463:  * here and there aren't any arguments left, or if '-' is one of the input files
                   56464:  * we'll process stdin.
                   56465:  *
                   56466:  */
                   56467: 
                   56468:     if ( argc < 1 )
                   56469:        conv();
                   56470:     else
                   56471:        while ( argc > 0 )  {
                   56472:            if ( strcmp(*argv, "-") == 0 )
                   56473:                fp_in = stdin;
                   56474:            else if ( (fp_in = fopen(*argv, "r")) == NULL )
                   56475:                error(FATAL, "can't open %s", *argv);
                   56476:            conv();
                   56477:            if ( fp_in != stdin )
                   56478:                fclose(fp_in);
                   56479:            argc--;
                   56480:            argv++;
                   56481:        }   /* End while */
                   56482: 
                   56483: }   /* End of arguments */
                   56484: 
                   56485: /*****************************************************************************/
                   56486: 
                   56487: done()
                   56488: 
                   56489: {
                   56490: 
                   56491: /*
                   56492:  *
                   56493:  * Finished with the last input file, so mark the end of the pages, make sure the
                   56494:  * last page is printed, and restore the initial environment.
                   56495:  *
                   56496:  */
                   56497: 
                   56498:     fprintf(stdout, "%s", TRAILER);
                   56499:     fprintf(stdout, "done\n");
                   56500:     fprintf(stdout, "%s %s\n", DOCUMENTFONTS, fontname);
                   56501:     fprintf(stdout, "%s %d\n", PAGES, printed);
                   56502: 
                   56503: }   /* End of done */
                   56504: 
                   56505: /*****************************************************************************/
                   56506: 
                   56507: account()
                   56508: 
                   56509: {
                   56510: 
                   56511: /*
                   56512:  *
                   56513:  * Writes an accounting record to *fp_acct, provided it's not NULL.
                   56514:  *
                   56515:  */
                   56516: 
                   56517:     if ( fp_acct != NULL )
                   56518:        fprintf(fp_acct, " print %d\n copies %d\n", printed, copies);
                   56519: 
                   56520: }   /* End of account */
                   56521: 
                   56522: /*****************************************************************************/
                   56523: 
                   56524: conv()
                   56525: 
                   56526: {
                   56527: 
                   56528:     int                ch;                     /* next input character */
                   56529: 
                   56530: /*
                   56531:  *
                   56532:  * Controls the conversion of BGI files into PostScript. Not everything has been
                   56533:  * implemented, but what's been done should be good enough for our purposes.
                   56534:  *
                   56535:  */
                   56536: 
                   56537:     redirect(-1);                      /* get ready for the first page */
                   56538:     bgimode = 0;
                   56539:     formfeed();
                   56540: 
                   56541:     while ( (ch = get_char()) != EOF )  {
                   56542:        switch ( ch )  {
                   56543:                case BRCHAR:                    /* rotated character mode */
                   56544:                            bgimode = ch;
                   56545:                            text(90);
                   56546:                            break;
                   56547: 
                   56548:                case BCHAR:                     /* graphical character mode */
                   56549:                            bgimode = ch;
                   56550:                            text(0);
                   56551:                            break;
                   56552: 
                   56553:                case BGRAPH:                    /* graphical master mode */
                   56554:                            bgimode = ch;
                   56555:                            break;
                   56556: 
                   56557:                case BSUB:                      /* subroutine definition */
                   56558:                            subr_def();
                   56559:                            break;
                   56560: 
                   56561:                case BRET:                      /* end of subroutine */
                   56562:                            subr_end();
                   56563:                            break;
                   56564: 
                   56565:                case BCALL:                     /* subroutine call */
                   56566:                            subr_call();
                   56567:                            break;
                   56568: 
                   56569:                case BEND:                      /* end display - page */
                   56570:                            formfeed();
                   56571:                            break;
                   56572: 
                   56573:                case BERASE:                    /* erase - shouldn't be used */
                   56574:                            error(FATAL, "BGI erase opcode obsolete");
                   56575:                            break;
                   56576: 
                   56577:                case BREP:                      /* repeat */
                   56578:                            error(FATAL, "Repeat not implemented");
                   56579:                            repeat();
                   56580:                            break;
                   56581: 
                   56582:                case BSETX:                     /* new x coordinate */
                   56583:                            hgoto(get_int(0));
                   56584:                            break;
                   56585: 
                   56586:                case BSETY:                     /* new y coordinate */
                   56587:                            vgoto(get_int(0));
                   56588:                            break;
                   56589: 
                   56590:                case BSETXY:                    /* new x and y coordinates */
                   56591:                            hgoto(get_int(0));
                   56592:                            vgoto(get_int(0));
                   56593:                            break;
                   56594: 
                   56595:                case BINTEN:                    /* mark the current point */
                   56596:                            fprintf(fp_out, "%d %d p\n", hpos, vpos);
                   56597:                            break;
                   56598: 
                   56599:                case BVISX:                     /* visible x */
                   56600:                            vector(X_COORD, VISIBLE);
                   56601:                            break;
                   56602: 
                   56603:                case BINVISX:                   /* invisible x */
                   56604:                            vector(X_COORD, INVISIBLE);
                   56605:                            break;
                   56606: 
                   56607:                case BVISY:                     /* visible y */
                   56608:                            vector(Y_COORD, VISIBLE);
                   56609:                            break;
                   56610: 
                   56611:                case BINVISY:                   /* invisible y */
                   56612:                            vector(Y_COORD, INVISIBLE);
                   56613:                            break;
                   56614: 
                   56615:                case BVEC:                      /* arbitrary vector */
                   56616:                            vector(LONGVECTOR, VISIBLE);
                   56617:                            break;
                   56618: 
                   56619:                case BSVEC:                     /* short vector */
                   56620:                            vector(SHORTVECTOR, VISIBLE);
                   56621:                            break;
                   56622: 
                   56623:                case BRECT:                     /* draw rectangle */
                   56624:                            rectangle(OUTLINE);
                   56625:                            break;
                   56626: 
                   56627:                case BPOINT1:                   /* point plot 1 */
                   56628:                case BPOINT:                    /* point plot 2 */
                   56629:                            point_plot(ch, get_char());
                   56630:                            break;
                   56631: 
                   56632:                case BLINE:                     /* line plot */
                   56633:                            line_plot();
                   56634:                            break;
                   56635: 
                   56636:                case BLTY:                      /* line type */
                   56637:                            fprintf(fp_out, "%s l\n", styles[get_data()]);
                   56638:                            break;
                   56639: 
                   56640:                case BARC:                      /* circular arc */
                   56641:                            arc(OUTLINE);
                   56642:                            break;
                   56643: 
                   56644:                case BFARC:                     /* filled circle */
                   56645:                            arc(FILL);
                   56646:                            break;
                   56647: 
                   56648:                case BFRECT:                    /* filled rectangle */
                   56649:                            rectangle(FILL);
                   56650:                            break;
                   56651: 
                   56652:                case BRASRECT:                  /* raster rectangle */
                   56653:                            error(FATAL, "Raster Rectangle not implemented");
                   56654:                            break;
                   56655: 
                   56656:                case BCOL:                      /* select color */
                   56657:                            set_color(get_data());
                   56658:                            break;
                   56659: 
                   56660:                case BFTRAPH:                   /* filled trapezoid */
                   56661:                            trapezoid();
                   56662:                            break;
                   56663: 
                   56664:                case BPAT:                      /* pattern for area filling */
                   56665:                            pattern();
                   56666:                            break;
                   56667: 
                   56668:                case BCSZ:                      /* change BGI character 'size' */
                   56669:                            setsize(get_data());
                   56670:                            break;
                   56671: 
                   56672:                case BNOISE:                    /* from bad file format */
                   56673:                            break;
                   56674: 
                   56675:                default:                        /* don't recognize the code */
                   56676:                            error(FATAL, "bad BGI command %d (0%o)", ch, ch);
                   56677:                            break;
                   56678:        }   /* End switch */
                   56679: 
                   56680:        if ( debug == ON )
                   56681:            fprintf(stderr, "\n");
                   56682:     }  /* End while */
                   56683: 
                   56684:     formfeed();                                        /* in case BEND was missing */
                   56685: 
                   56686: }   /* End of conv */
                   56687: 
                   56688: /*****************************************************************************/
                   56689: 
                   56690: hgoto(n)
                   56691: 
                   56692:     int                n;                      /* new horizontal position */
                   56693: 
                   56694: {
                   56695: 
                   56696: /*
                   56697:  *
                   56698:  * Sets the current BGI horizontal position to n.
                   56699:  *
                   56700:  */
                   56701: 
                   56702:     hpos = n;
                   56703: 
                   56704: }   /* End of hgoto */
                   56705: 
                   56706: /*****************************************************************************/
                   56707: 
                   56708: vgoto(n)
                   56709: 
                   56710:     int                n;                      /* move to this vertical position */
                   56711: 
                   56712: {
                   56713: 
                   56714: /*
                   56715:  *
                   56716:  * Sets the absolute vertical position to n.
                   56717:  * 
                   56718:  */
                   56719: 
                   56720:     vpos = n;
                   56721: 
                   56722: }   /* End of vgoto */
                   56723: 
                   56724: /*****************************************************************************/
                   56725: 
                   56726: setsize(n)
                   56727: 
                   56728:     int                n;                      /* BGI size - just a grid separation */
                   56729: 
                   56730: {
                   56731: 
                   56732: /*
                   56733:  *
                   56734:  * Called when we're supposed to change the BGI character size to n. The BGI
                   56735:  * size is the grid separation in a 5 by 7 array in which characters are assumed
                   56736:  * to be built.
                   56737:  *
                   56738:  */
                   56739: 
                   56740:     bgisize = n;
                   56741:     linespace = LINESPACE(bgisize);
                   56742: 
                   56743:     fprintf(fp_out, "%d f\n", bgisize);
                   56744: 
                   56745:     if ( debug == ON )
                   56746:        fprintf(stderr, "BGI size = %d\n", n);
                   56747: 
                   56748: }   /* End of setsize */
                   56749: 
                   56750: /*****************************************************************************/
                   56751: 
                   56752: repeat()
                   56753: 
                   56754: {
                   56755: 
                   56756:     int                count;                  /* repeat this many times */
                   56757:     int                ch;                     /* next input character */
                   56758: 
                   56759: /*
                   56760:  *
                   56761:  * Haven't implemented repeats, although it wouldn't be difficult. Apparently it's
                   56762:  * not used by any graphics packages that generate BGI.
                   56763:  *
                   56764:  */
                   56765: 
                   56766:     count = get_int();                 /* get the repeat count */
                   56767: 
                   56768:     while ( (ch = get_char()) != EOF  &&  ch != BENDR ) ;
                   56769: 
                   56770: }   /* End of repeat */
                   56771: 
                   56772: /*****************************************************************************/
                   56773: 
                   56774: text(angle)
                   56775: 
                   56776:     int                angle;                  /* either 0 or 90 degrees */
                   56777: 
                   56778: {
                   56779: 
                   56780:     int                ch;                     /* next character from file *fp_in */
                   56781: 
                   56782: /*
                   56783:  *
                   56784:  * Called from conv() after we've entered one of the graphical character modes.
                   56785:  * Characters are read from the input file and printed until the next mode change
                   56786:  * opcode is found (or until EOF). angle will be 90 for rotated character mode
                   56787:  * and 0 otherwise.
                   56788:  *
                   56789:  *
                   56790:  */
                   56791: 
                   56792:     fprintf(fp_out, "%d %d %d(", angle, hpos, vpos);
                   56793: 
                   56794:     while ( (ch = get_char()) != EOF )  {
                   56795:        if ( ch == BGRAPH || ch == BCHAR || ch == BRCHAR )  {
                   56796:            ungetc(ch, fp_in);
                   56797:            position--;
                   56798:            break;
                   56799:        }   /* End if */
                   56800: 
                   56801:        switch ( ch )  {
                   56802:            case '\012':
                   56803:                vgoto(vpos - linespace);
                   56804: 
                   56805:            case '\015':
                   56806:                hgoto(0);
                   56807:                fprintf(fp_out, ")t\n%d %d %d(", angle, hpos, vpos);
                   56808:                break;
                   56809: 
                   56810:            case '(':
                   56811:            case ')':
                   56812:            case '\\':
                   56813:                putc('\\', fp_out);
                   56814: 
                   56815:            default:
                   56816:                if ( isascii(ch) && isprint(ch) )
                   56817:                    putc(ch, fp_out);
                   56818:                else fprintf(fp_out, "\\%.3o", ch & 0377);
                   56819:                break;
                   56820:        }   /* End switch */
                   56821:     }  /* End while */
                   56822: 
                   56823:     fprintf(fp_out, ") t\n");
                   56824: 
                   56825: }   /* End of text */
                   56826: 
                   56827: /*****************************************************************************/
                   56828: 
                   56829: formfeed()
                   56830: 
                   56831: {
                   56832: 
                   56833:     int                ch;                     /* repeat count for this page */
                   56834: 
                   56835: /*
                   56836:  *
                   56837:  * Does whatever is needed to print the last page and get ready for the next one.
                   56838:  * It's called, from conv(), after a BEND code is processed. I'm ignoring the
                   56839:  * copy count that's expected to follow each page.
                   56840:  *
                   56841:  */
                   56842: 
                   56843:     if ( bgimode == BGRAPH && (ch = get_char()) != EOF  &&  ! (ch & MSB) )  {
                   56844:        ungetc(ch, fp_in);
                   56845:        position--;
                   56846:     }  /* End if */
                   56847: 
                   56848:     if ( fp_out == stdout )            /* count the last page */
                   56849:        printed++;
                   56850: 
                   56851:     fprintf(fp_out, "cleartomark\n");
                   56852:     fprintf(fp_out, "showpage\n");
                   56853:     fprintf(fp_out, "saveobj restore\n");
                   56854:     fprintf(fp_out, "%s %d %d\n", ENDPAGE, page, printed);
                   56855: 
                   56856:     while ( (ch = get_char()) == 0 ) ; /* skip any NULL characters */
                   56857:     ungetc(ch, fp_in);
                   56858:     position--;
                   56859: 
                   56860:     if ( ungetc(getc(fp_in), fp_in) == EOF )
                   56861:        redirect(-1);
                   56862:     else redirect(++page);
                   56863: 
                   56864:     fprintf(fp_out, "%s %d %d\n", PAGE, page, printed+1);
                   56865:     fprintf(fp_out, "/saveobj save def\n");
                   56866:     fprintf(fp_out, "mark\n");
                   56867:     writerequest(printed+1, fp_out);
                   56868:     fprintf(fp_out, "%d pagesetup\n", printed+1);
                   56869: 
                   56870:     setsize(bgisize);
                   56871:     hpos = vpos = 0;
                   56872: 
                   56873: }    /* End of formfeed */
                   56874: 
                   56875: /*****************************************************************************/
                   56876: 
                   56877: subr_def()
                   56878: 
                   56879: {
                   56880: 
                   56881: /*
                   56882:  *
                   56883:  * Starts a subroutine definition. All subroutines are defined as PostScript
                   56884:  * procedures that begin with the character S and end with the subroutine's id
                   56885:  * (a number between 0 and 63 - I guess). The primary, and perhaps only use of
                   56886:  * subroutines is in special color plots produced by several graphics libraries,
                   56887:  * and even there it's not all that common. I've also chosen not to worry about
                   56888:  * nested subroutine definitions - that would certainly be overkill!
                   56889:  *
                   56890:  * All subroutines set up their own (translated) coordinate system, do their work
                   56891:  * in that system, and restore things when they exit. To make everything work
                   56892:  * properly we save the current point (in shpos and svpos), set our position to
                   56893:  * (0, 0), and restore things at the end of the subroutine definition. That means
                   56894:  * hpos and vpos measure the relative displacement after a subroutine returns, and
                   56895:  * we save those values in the displacement[] array. The displacements are used
                   56896:  * (in subr_call()) to properly adjust our position after each subroutine call,
                   56897:  * and all subroutines are called with the current x and y coordinates on top of
                   56898:  * the stack.
                   56899:  *
                   56900:  */
                   56901: 
                   56902:     if ( in_subr == TRUE )             /* a nested subroutine definition?? */
                   56903:        error(FATAL, "can't handle nested subroutine definitions");
                   56904: 
                   56905:     if ( (subr_id = get_data()) == EOF )
                   56906:        error(FATAL, "missing subroutine identifier");
                   56907: 
                   56908:     if ( in_global == FALSE )  {       /* just used to reduce file size some */
                   56909:        fprintf(fp_out, "cleartomark\n");
                   56910:        fprintf(fp_out, "saveobj restore\n");
                   56911:        fprintf(fp_out, "%s", BEGINGLOBAL);
                   56912:        in_global = TRUE;
                   56913:     }  /* End if */
                   56914: 
                   56915:     fprintf(fp_out, "/S%d {\n", subr_id);
                   56916:     fprintf(fp_out, "gsave translate\n");
                   56917: 
                   56918:     shpos = hpos;                      /* save our current position */
                   56919:     svpos = vpos;
                   56920: 
                   56921:     hgoto(0);                          /* start at the origin */
                   56922:     vgoto(0);
                   56923: 
                   56924:     in_subr = TRUE;                    /* in a subroutine definition */
                   56925: 
                   56926: }   /* End of subr_def */
                   56927: 
                   56928: /*****************************************************************************/
                   56929: 
                   56930: subr_end()
                   56931: 
                   56932: {
                   56933: 
                   56934:     int                ch;                     /* for looking at next opcode */
                   56935: 
                   56936: /*
                   56937:  *
                   56938:  * Handles stuff needed at the end of each subroutine. Want to remember the change
                   56939:  * in horizontal and vertical positions for each subroutine so we can adjust our
                   56940:  * position after each call - just in case. The current position was set to (0, 0)
                   56941:  * before we started the subroutine definition, so when we get here hpos and vpos
                   56942:  * are the relative displacements after the subroutine is called. They're saved in
                   56943:  * the displacement[] array and used to adjust the current position when we return
                   56944:  * from a subroutine.
                   56945:  *
                   56946:  */
                   56947: 
                   56948:     if ( in_subr == FALSE )            /* not in a subroutine definition?? */
                   56949:        error(FATAL, "subroutine end without corresponding start");
                   56950: 
                   56951:     fprintf(fp_out, "grestore\n");
                   56952:     fprintf(fp_out, "} def\n");
                   56953: 
                   56954:     if ( in_global == TRUE && (ch = get_char()) != BSUB )  {
                   56955:        fprintf(fp_out, "%s", ENDGLOBAL);
                   56956:        fprintf(fp_out, "/saveobj save def\n");
                   56957:        fprintf(fp_out, "mark\n");
                   56958:        in_global = FALSE;
                   56959:     }  /* End if */
                   56960: 
                   56961:     ungetc(ch, fp_in);                 /* put back the next opcode */
                   56962: 
                   56963:     displacement[subr_id].dx = hpos;
                   56964:     displacement[subr_id].dy = vpos;
                   56965: 
                   56966:     hgoto(shpos);                      /* back to where we started */
                   56967:     vgoto(svpos);
                   56968: 
                   56969:     in_subr = FALSE;                   /* done with the definition */
                   56970: 
                   56971: }   /* End of subr_end */
                   56972: 
                   56973: /*****************************************************************************/
                   56974: 
                   56975: subr_call()
                   56976: 
                   56977: {
                   56978: 
                   56979:     int                ch;                     /* next byte from *fp_in */
                   56980:     int                id;                     /* subroutine id if ch wasn't an opcode */
                   56981: 
                   56982: /*
                   56983:  *
                   56984:  * Handles subroutine calls. Everything that follows the BCALL opcode (up to the
                   56985:  * next opcode) is taken as a subroutine identifier - thus the loop that generates
                   56986:  * the subroutine calls.
                   56987:  *
                   56988:  */
                   56989: 
                   56990:     while ( (ch = get_char()) != EOF && (ch & MSB) )  {
                   56991:        id = ch & DMASK;
                   56992:        fprintf(fp_out, "%d %d S%d\n", hpos, vpos, id);
                   56993: 
                   56994:        hgoto(hpos + displacement[id].dx);      /* adjust our position */
                   56995:        vgoto(vpos + displacement[id].dy);
                   56996:     }  /* End while */
                   56997: 
                   56998:     ungetc(ch, fp_in);
                   56999: 
                   57000: }   /* End of subr_call */
                   57001: 
                   57002: /*****************************************************************************/
                   57003: 
                   57004: vector(var, mode)
                   57005: 
                   57006:     int                var;                    /* coordinate that varies next? */
                   57007:     int                mode;                   /* VISIBLE or INVISIBLE vectors */
                   57008: 
                   57009: {
                   57010: 
                   57011:     int                ch;                     /* next character from *fp_in */
                   57012:     int                x, y;                   /* line drawn to this point */
                   57013:     int                count = 0;              /* number of points so far */
                   57014: 
                   57015: /*
                   57016:  *
                   57017:  * Handles plotting of all types of BGI vectors. If it's a manhattan vector var
                   57018:  * specifies which coordinate will be changed by the next number in the input
                   57019:  * file.
                   57020:  *
                   57021:  */
                   57022: 
                   57023:     x = hpos;                          /* set up the first point */
                   57024:     y = vpos;
                   57025: 
                   57026:     while ( (ch = get_char()) != EOF  &&  ch & MSB )  {
                   57027:        if ( var == X_COORD )           /* next length is change in x */
                   57028:            x += get_int(ch);
                   57029:        else if ( var == Y_COORD )      /* it's the change in y */
                   57030:            y += get_int(ch);
                   57031:        else if ( var == LONGVECTOR )  {        /* long vector */
                   57032:            x += get_int(ch);
                   57033:            y += get_int(0);
                   57034:        } else {                        /* must be a short vector */
                   57035:            x += ((ch & MSBMAG) * ((ch & SGNB) ? -1 : 1));
                   57036:            y += (((ch = get_data()) & MSBMAG) * ((ch & SGNB) ? -1 : 1));
                   57037:        }   /* End else */
                   57038: 
                   57039:        if ( mode == VISIBLE )  {       /* draw the line segment */
                   57040:            fprintf(fp_out, "%d %d\n", hpos - x, vpos - y);
                   57041:            count++;
                   57042:        }   /* End if */
                   57043: 
                   57044:        hgoto(x);                       /* adjust the current BGI position */
                   57045:        vgoto(y);
                   57046: 
                   57047:        if ( var == X_COORD )           /* vertical length comes next */
                   57048:            var = Y_COORD;
                   57049:        else if ( var == Y_COORD )      /* change horizontal next */
                   57050:            var = X_COORD;
                   57051:     }  /* End while */
                   57052: 
                   57053:     if ( count > 0 )
                   57054:        fprintf(fp_out, "%d %d v\n", hpos, vpos);
                   57055: 
                   57056:     ungetc(ch, fp_in);                 /* it wasn't part of the vector */
                   57057:     position--;
                   57058: 
                   57059: }   /* End of vector */
                   57060: 
                   57061: /*****************************************************************************/
                   57062: 
                   57063: rectangle(mode)
                   57064: 
                   57065:     int                mode;                   /* FILL or OUTLINE the rectangle */
                   57066: 
                   57067: {
                   57068: 
                   57069:     int                deltax;                 /* displacement for horizontal side */
                   57070:     int                deltay;                 /* same but for vertical sides */
                   57071: 
                   57072: /*
                   57073:  *
                   57074:  * Draws a rectangle and either outlines or fills it, depending on the value of
                   57075:  * mode. Would be clearer, and perhaps better, if {stroke} or {fill} were put on
                   57076:  * the stack instead of 0 or 1. R could then define the path and just do an exec
                   57077:  * to fill or stroke it.
                   57078:  *
                   57079:  */
                   57080: 
                   57081:     deltax = get_int(0);               /* get the height and width */
                   57082:     deltay = get_int(0);
                   57083: 
                   57084:     if ( mode == OUTLINE )
                   57085:        fprintf(fp_out, "0 %d %d %d %d R\n", deltax, deltay, hpos, vpos);
                   57086:     else fprintf(fp_out, "1 %d %d %d %d R\n", deltax, deltay, hpos, vpos);
                   57087: 
                   57088: }   /* End of rectangle */
                   57089: 
                   57090: /*****************************************************************************/
                   57091: 
                   57092: trapezoid()
                   57093: 
                   57094: {
                   57095: 
                   57096:     int                kind;                   /* which sides are parallel */
                   57097:     int                d[6];                   /* true displacements - depends on kind */
                   57098: 
                   57099: /*
                   57100:  *
                   57101:  * Handles filled trapeziods. A data byte of 0101 following the opcode means the
                   57102:  * horizontal sides are parallel, 0102 means the vertical sides are parallel.
                   57103:  * Filling is handled by eofill so we don't need to get things in the right order.
                   57104:  *
                   57105:  */
                   57106: 
                   57107:     kind = get_data();
                   57108: 
                   57109:     d[0] = get_int(0);
                   57110:     d[1] = 0;
                   57111:     d[2] = get_int(0);
                   57112:     d[3] = get_int(0);
                   57113:     d[4] = get_int(0);
                   57114:     d[5] = 0;
                   57115: 
                   57116:     if ( kind == 2 )  {                        /* parallel sides are vertical */
                   57117:        d[1] = d[0];
                   57118:        d[0] = 0;
                   57119:        d[5] = d[4];
                   57120:        d[4] = 0;
                   57121:     }  /* End if */
                   57122: 
                   57123:     fprintf(fp_out, "%d %d %d %d %d %d %d %d T\n", d[4], d[5], d[2], d[3], d[0], d[1], hpos, vpos);
                   57124: 
                   57125: }   /* End of trapezoid */
                   57126: 
                   57127: /*****************************************************************************/
                   57128: 
                   57129: point_plot(mode, ch)
                   57130: 
                   57131:     int                mode;                   /* plotting mode BPOINT or BPOINT1 */
                   57132:     int                ch;                     /* will be placed at the points */
                   57133: 
                   57134: {
                   57135: 
                   57136:     int                c;                      /* next character from input file */
                   57137:     int                x, y;                   /* ch gets put here next */
                   57138:     int                deltax;                 /* x increment for BPOINT1 mode */
                   57139: 
                   57140: /*
                   57141:  *
                   57142:  * The two point plot modes are used to place a character at selected points. The
                   57143:  * difference in the two modes, namely BPOINT and BPOINT1, is the way we get the
                   57144:  * coordinates of the next point. In BPOINT1 the two bytes immediately following
                   57145:  * ch select a constant horizontal change, while both coordinates are given for
                   57146:  * all points in BPOINT mode.
                   57147:  *
                   57148:  */
                   57149: 
                   57150:     if ( mode == BPOINT1 )  {          /* first integer is change in x */
                   57151:        deltax = get_int(0);
                   57152:        x = hpos - deltax;
                   57153:     }  /* End if */
                   57154: 
                   57155:     while ( (c = get_char()) != EOF  &&  (c & MSB) )  {
                   57156:        if ( mode == BPOINT1 )  {       /* only read y coordinate */
                   57157:            y = get_int(c);
                   57158:            x += deltax;
                   57159:        } else {                        /* get new x and y from input file */
                   57160:            x = get_int(c);
                   57161:            y = get_int(0);
                   57162:        }   /* End else */
                   57163: 
                   57164:        hgoto(x);                       /* adjust BGI position */
                   57165:        vgoto(y);
                   57166: 
                   57167:        fprintf(fp_out, "%d %d\n", hpos, vpos);
                   57168:     }  /* End while */
                   57169: 
                   57170:     putc('(', fp_out);
                   57171: 
                   57172:     switch ( ch )  {
                   57173:        case '(':
                   57174:        case ')':
                   57175:        case '\\':
                   57176:                putc('\\', fp_out);
                   57177: 
                   57178:        default:
                   57179:                putc(ch, fp_out);
                   57180:     }  /* End switch */
                   57181: 
                   57182:     fprintf(fp_out, ")pp\n");
                   57183: 
                   57184:     ungetc(c, fp_in);                  /* it wasn't part of the point plot */
                   57185:     position--;
                   57186: 
                   57187: }   /* End of point_plot */
                   57188: 
                   57189: /*****************************************************************************/
                   57190: 
                   57191: line_plot()
                   57192: 
                   57193: {
                   57194: 
                   57195:     int                c;                      /* next input character from fp_in */
                   57196:     int                deltax;                 /* change in x coordinate */
                   57197:     int                x0, y0;                 /* starting point for next segment */
                   57198:     int                x1, y1;                 /* endpoint of the line */
                   57199:     int                count = 0;              /* number of points so far */
                   57200: 
                   57201: /*
                   57202:  *
                   57203:  * Essentially the same format as BPOINT1, except that in this case we connect
                   57204:  * pairs of points by line segments.
                   57205:  *
                   57206:  */
                   57207: 
                   57208:     deltax = get_int(0);               /* again the change in x is first */
                   57209: 
                   57210:     x1 = hpos;                         /* so it works first time through */
                   57211:     y1 = get_int(0);
                   57212: 
                   57213:     while ( (c = get_char()) != EOF  &&  (c & MSB) )  {
                   57214:        x0 = x1;                        /* line starts here */
                   57215:        y0 = y1;
                   57216: 
                   57217:        x1 += deltax;                   /* and ends at this point */
                   57218:        y1 = get_int(c);
                   57219: 
                   57220:        fprintf(fp_out, "%d %d\n", -deltax, y0 - y1);
                   57221:        count++;
                   57222:     }  /* End while */
                   57223: 
                   57224:     hgoto(x1);                         /* adjust current BGI position */
                   57225:     vgoto(y1);
                   57226: 
                   57227:     if ( count > 0 )
                   57228:        fprintf(fp_out, "%d %d v\n", hpos, vpos);
                   57229: 
                   57230:     ungetc(c, fp_in);                  /* wasn't part of the line */
                   57231:     position--;
                   57232: 
                   57233: }   /* End of line_plot */
                   57234: 
                   57235: /*****************************************************************************/
                   57236: 
                   57237: arc(mode)
                   57238: 
                   57239:     int                mode;                   /* FILL or OUTLINE the path */
                   57240: 
                   57241: {
                   57242: 
                   57243:     int                dx1, dy1;               /* displacements for first point */
                   57244:     int                dx2, dy2;               /* same for the second point */
                   57245:     int                radius;                 /* of the arc */
                   57246:     int                angle1, angle2;         /* starting and ending angles */
                   57247: 
                   57248: /*
                   57249:  *
                   57250:  * Called whenever we need to draw an arc. I'm ignoring filled slices for now.
                   57251:  *
                   57252:  */
                   57253: 
                   57254:     dx1 = get_int(0);                  /* displacements relative to center */
                   57255:     dy1 = get_int(0);
                   57256:     dx2 = get_int(0);
                   57257:     dy2 = get_int(0);
                   57258: 
                   57259:     radius = get_int(0);               /* and the radius */
                   57260: 
                   57261:     if ( radius == 0 )                 /* nothing to do */
                   57262:        return;
                   57263: 
                   57264:     angle1 = (atan2((double) dy1, (double) dx1) * 360) / (2 * PI) + .5;
                   57265:     angle2 = (atan2((double) dy2, (double) dx2) * 360) / (2 * PI) + .5;
                   57266: 
                   57267:     fprintf(fp_out, "%d %d %d %d %d arcn stroke\n", hpos, vpos, radius, angle1, angle2);
                   57268: 
                   57269: }   /* End of arc */
                   57270: 
                   57271: /*****************************************************************************/
                   57272: 
                   57273: pattern()
                   57274: 
                   57275: {
                   57276: 
                   57277:     double     red = 0;                /* color components */
                   57278:     double     green = 0;
                   57279:     double     blue = 0;
                   57280:     int                kind;                   /* corse or fine pattern */
                   57281:     int                val;                    /* next color data byte */
                   57282:     int                i;                      /* loop index */
                   57283: 
                   57284: /*
                   57285:  *
                   57286:  * Handles patterns by setting the current color based of the values assigned to
                   57287:  * the next four data bytes. BGI supports two kinds of patterns (fine or coarse)
                   57288:  * but I'm handling each in the same way - for now. In a fine pattern the four
                   57289:  * data bytes assign a color to four individual pixels (upperleft first) while
                   57290:  * in a coarse pattern the four colors are assigned to groups of four pixels,
                   57291:  * for a total of 16. Again the first color goes to the group in the upper left
                   57292:  * corner. The byte immediately following the BPAT opcode selects fine (040) or
                   57293:  * coarse (041) patterns. The PostScript RGB color is assigned by averaging the
                   57294:  * RED, GREEN, and BLUE components assigned to the four pixels (or groups of
                   57295:  * pixels). Acceptable results, but there's no distinction between fine and
                   57296:  * coarse patterns.
                   57297:  *
                   57298:  */
                   57299: 
                   57300:     if ( (kind = get_char()) == EOF )
                   57301:        error(FATAL, "bad pattern command");
                   57302: 
                   57303:     for ( i = 0; i < 4; i++ )  {
                   57304:        val = get_data();
                   57305:        red += get_color(val, RED);
                   57306:        green += get_color(val, GREEN);
                   57307:        blue += get_color(val, BLUE);
                   57308:     }  /* End for */
                   57309: 
                   57310:     fprintf(fp_out, "%g %g %g c\n", red/4, green/4, blue/4);
                   57311: 
                   57312: }   /* End of pattern */
                   57313: 
                   57314: /*****************************************************************************/
                   57315: 
                   57316: get_color(val, component)
                   57317: 
                   57318:     int                val;                    /* color data byte */
                   57319:     int                component;              /* RED, GREEN, or BLUE component */
                   57320: 
                   57321: {
                   57322: 
                   57323: 
                   57324:     int                primary;                /* color mixing mode - bits 2 to 4 */
                   57325:     int                plane;                  /* primary color plane - bits 5 to 7 */
                   57326:     unsigned   rgbcolor;               /* PostScript expects an RGB triple */
                   57327: 
                   57328: /*
                   57329:  *
                   57330:  * Picks the requested color component (RED, GREEN, or BLUE) from val and returns
                   57331:  * the result to the caller. BGI works with Cyan, Yellow, and Magenta so the one's
                   57332:  * complement stuff (following the exclusive or'ing) recovers the RED, BLUE, and
                   57333:  * GREEN components that PostScript's setrgbcolor operator needs. The PostScript
                   57334:  * interpreter in the ColorScript 100 has a setcmycolor operator, but it's not
                   57335:  * generally available so I've decided to stick with setrgbcolor.
                   57336:  *
                   57337:  */
                   57338: 
                   57339:     primary = (val >> 3) & 07;
                   57340:     plane = val & 07;
                   57341:     rgbcolor = (~(primary ^ plane)) & 07;
                   57342: 
                   57343:     if ( debug == ON )
                   57344:        fprintf(stderr, "val = %o, primary = %o, plane = %o, rgbcolor = %o\n",
                   57345:                val, primary, plane, rgbcolor);
                   57346: 
                   57347:     switch ( component )  {
                   57348:        case RED:
                   57349:                return(rgbcolor>>2);
                   57350: 
                   57351:        case GREEN:
                   57352:                return(rgbcolor&01);
                   57353: 
                   57354:        case BLUE:
                   57355:                return((rgbcolor>>1)&01);
                   57356: 
                   57357:        default:
                   57358:                error(FATAL, "unknown color component");
                   57359:                return(0);
                   57360:     }  /* End switch */
                   57361: 
                   57362: }   /* End of get_color */
                   57363: 
                   57364: /*****************************************************************************/
                   57365: 
                   57366: set_color(val)
                   57367: 
                   57368:     int                val;                    /* color data byte */
                   57369: 
                   57370: {
                   57371: 
                   57372: /*
                   57373:  *
                   57374:  * Arranges to have the color set to the value requested in the BGI data byte val.
                   57375:  *
                   57376:  */
                   57377: 
                   57378:     fprintf(fp_out, "%d %d %d c\n", get_color(val, RED), get_color(val, GREEN), get_color(val, BLUE));
                   57379: 
                   57380: }   /* End of set_color */
                   57381: 
                   57382: /*****************************************************************************/
                   57383: 
                   57384: get_int(highbyte)
                   57385: 
                   57386:     int                highbyte;               /* already read this byte */
                   57387: 
                   57388: {
                   57389: 
                   57390:     int                lowbyte;                /* this and highbyte make the int */
                   57391: 
                   57392: /*
                   57393:  *
                   57394:  * Figures out the value on the integer (sign magnitude form) that's next in the
                   57395:  * input file. If highbyte is nonzero we'll use it and the next byte to build the
                   57396:  * integer, otherwise two bytes are read from fp_in.
                   57397:  *
                   57398:  */
                   57399: 
                   57400: 
                   57401:     if ( highbyte == 0 )               /* need to read the first byte */
                   57402:        highbyte = get_data();
                   57403: 
                   57404:     lowbyte = get_data();              /* always need the second byte */
                   57405: 
                   57406:     return(highbyte & SGNB ? -MAG(highbyte, lowbyte) : MAG(highbyte, lowbyte));
                   57407: 
                   57408: }   /* End of get_int */
                   57409: 
                   57410: /*****************************************************************************/
                   57411: 
                   57412: get_data()
                   57413: 
                   57414: {
                   57415: 
                   57416:     int                val;                    /* data value returned to caller */
                   57417: 
                   57418: /*
                   57419:  *
                   57420:  * Called when we expect to find a single data character in the input file. The
                   57421:  * data bit is turned off and the resulting value is returned to the caller.
                   57422:  *
                   57423:  */
                   57424: 
                   57425:     if ( (val = get_char()) == EOF  ||  ! (val & MSB) )
                   57426:        error(FATAL, "missing data value");
                   57427: 
                   57428:     return(val & DMASK);
                   57429: 
                   57430: }   /* End of get_data */
                   57431: 
                   57432: /*****************************************************************************/
                   57433: 
                   57434: get_char()
                   57435: 
                   57436: {
                   57437: 
                   57438:     int                ch;                     /* character we just read */
                   57439: 
                   57440: /*
                   57441:  *
                   57442:  * Reads the next character from file *fp_in and returns the value to the caller.
                   57443:  * This routine isn't really needed, but we may want to deal directly with some
                   57444:  * screwball file formats so I thought it would probably be a good idea to isolate
                   57445:  * all the input in one routine that could be easily changed.
                   57446:  *
                   57447:  */
                   57448: 
                   57449:     if ( (ch = getc(fp_in)) != EOF )  {
                   57450:        position++;
                   57451:        ch &= CHMASK;
                   57452:     }  /* End if */
                   57453: 
                   57454:     if ( debug == ON )
                   57455:        fprintf(stderr, "%o ", ch);
                   57456: 
                   57457:     return(ch);
                   57458: 
                   57459: }   /* End of get_char */
                   57460: 
                   57461: /*****************************************************************************/
                   57462: 
                   57463: redirect(pg)
                   57464: 
                   57465:     int                pg;                     /* next page we're printing */
                   57466: 
                   57467: {
                   57468: 
                   57469:     static FILE        *fp_null = NULL;        /* if output is turned off */
                   57470: 
                   57471: /*
                   57472:  *
                   57473:  * If we're not supposed to print page pg, fp_out will be directed to /dev/null,
                   57474:  * otherwise output goes to stdout.
                   57475:  *
                   57476:  */
                   57477: 
                   57478:     if ( pg >= 0 && in_olist(pg) == ON )
                   57479:        fp_out = stdout;
                   57480:     else if ( (fp_out = fp_null) == NULL )
                   57481:        fp_out = fp_null = fopen("/dev/null", "w");
                   57482: 
                   57483: }   /* End of redirect */
                   57484: 
                   57485: /*****************************************************************************/
                   57486: 
                   57487: 0707070014230265651006440057030057030000010675520522627503400003300000012631post.src/postbgi/postbgi.h/*
                   57488:  *
                   57489:  * BGI opcodes.
                   57490:  *
                   57491:  */
                   57492: 
                   57493: #define BRCHAR         033             /* rotated character mode */
                   57494: #define BCHAR          034             /* graphical character mode */
                   57495: #define BGRAPH         035             /* graphical master mode */
                   57496: 
                   57497: #define BSUB           042             /* subroutine definition */
                   57498: #define BRET           043             /* end of subroutine */
                   57499: #define BCALL          044             /* subroutine call */
                   57500: 
                   57501: #define BEND           045             /* end page */
                   57502: #define BERASE         046             /* erase - obsolete */
                   57503: #define BREP           047             /* repeat */
                   57504: #define BENDR          050             /* end repeat */
                   57505: 
                   57506: #define BSETX          051             /* set horizontal position */
                   57507: #define BSETY          052             /* set vertical position */
                   57508: #define BSETXY         053             /* set horizontal and vertical positions */
                   57509: #define BINTEN         054             /* intensify - mark current pixel */
                   57510: 
                   57511: #define BVISX          055             /* manhattan vector - change x first */
                   57512: #define BINVISX                056             /* same as BVISX but nothing drawn */
                   57513: #define BVISY          057             /* manhattan vector - change y first */
                   57514: #define BINVISY                060             /* same as BVISY but nothing drawn */
                   57515: 
                   57516: #define BVEC           061             /* arbitrary long vector */
                   57517: #define BSVEC          062             /* arbitrary short vector */
                   57518: #define BRECT          063             /* outline rectangle */
                   57519: #define BPOINT1                064             /* point plot - mode 1 */
                   57520: #define BPOINT         065             /* point plot - mode 2 */
                   57521: #define BLINE          066             /* line plot */
                   57522: 
                   57523: #define BCSZ           067             /* set character size */
                   57524: #define BLTY           070             /* select line type */
                   57525: #define BARC           071             /* draw circular arc */
                   57526: #define BFARC          072             /* filled circular arc */
                   57527: #define BFRECT         073             /* filled rectangle */
                   57528: #define BRASRECT       074             /* raster rectangle */
                   57529: #define BCOL           075             /* select color */
                   57530: #define BFTRAPH                076             /* filled trapezoid */
                   57531: #define BPAT           077             /* pattern are for filling - no info */
                   57532: 
                   57533: #define BNOISE         0               /* from bad file format */
                   57534: 
                   57535: /*
                   57536:  *
                   57537:  * Character size is controlled by the spacing of dots in a 5x7 dot matrix, which
                   57538:  * by default is set to BGISIZE.
                   57539:  *
                   57540:  */
                   57541: 
                   57542: #define BGISIZE                2               /* default character grid spacing */
                   57543: 
                   57544: /*
                   57545:  *
                   57546:  * Definitions used to decode the bytes read from a BGI file.
                   57547:  *
                   57548:  */
                   57549: 
                   57550: #define CHMASK         0177            /* characters only use 7 bits */
                   57551: #define DMASK          077             /* data values use lower 6 bits */
                   57552: #define MSB            0100            /* used to check for data or opcode */
                   57553: #define SGNB           040             /* sign bit for integers */
                   57554: #define MSBMAG         037             /* mag of most sig byte in a BGI int */
                   57555: 
                   57556: /*
                   57557:  *
                   57558:  * Descriptions of BGI vectors and what's done when they're drawn.
                   57559:  *
                   57560:  */
                   57561: 
                   57562: #define X_COORD                0               /* change x next in manhattan vector */
                   57563: #define Y_COORD                1               /* same but y change comes next */
                   57564: #define LONGVECTOR     2               /* arbitrary long vector */
                   57565: #define SHORTVECTOR    3               /* components given in 6 bits */
                   57566: 
                   57567: #define VISIBLE                0               /* really draw the vector */
                   57568: #define INVISIBLE      1               /* just move the current position */
                   57569: 
                   57570: /*
                   57571:  *
                   57572:  * What's done with a closed path.
                   57573:  *
                   57574:  */
                   57575: 
                   57576: #define OUTLINE                0               /* outline the defined path */
                   57577: #define FILL           1               /* fill it in */
                   57578: 
                   57579: /*
                   57580:  *
                   57581:  * BGI line style definitions. They're used as an index into the STYLES array,
                   57582:  * which really belongs in the prologue.
                   57583:  *
                   57584:  */
                   57585: 
                   57586: #define SOLID          0
                   57587: #define DOTTED         1
                   57588: #define SHORTDASH      2
                   57589: #define DASH           3
                   57590: #define LONGDASH       4
                   57591: #define DOTDASH                5
                   57592: #define THREEDOT       6
                   57593: 
                   57594: #define STYLES                                                         \
                   57595:                                                                        \
                   57596:        {                                                               \
                   57597:            "[]",                                                       \
                   57598:            "[.5 2]",                                                   \
                   57599:            "[2 4]",                                                    \
                   57600:            "[4 4]",                                                    \
                   57601:            "[8 4]",                                                    \
                   57602:            "[.5 2 4 2]",                                               \
                   57603:            "[.5 2 .5 2 .5 2 4 2]"                                      \
                   57604:        }
                   57605: 
                   57606: /*
                   57607:  *
                   57608:  * Three constants used to choose which component (RED, GREEN, or BLUE) we're
                   57609:  * interested in. BGI colors are specified as a single data byte and pulling a
                   57610:  * particular  component out of the BGI color byte is handled by procedure
                   57611:  * get_color().
                   57612:  *
                   57613:  */
                   57614: 
                   57615: #define RED            0
                   57616: #define GREEN          1
                   57617: #define BLUE           2
                   57618: 
                   57619: /*
                   57620:  *
                   57621:  * An array of type Disp is used to save the horizontal and vertical displacements
                   57622:  * that result after a subroutine has been called. Needed so we can properly adjust
                   57623:  * our horizontal and vertical positions after a subroutine call. Entries are made
                   57624:  * immediately after a subroutine is defined and used after the call. Subroutine
                   57625:  * names are integers that range from 0 to 63 (assigned in the BG file) and the
                   57626:  * name is used as an index into the Disp array when we save or retrieve the
                   57627:  * displacement.
                   57628:  *
                   57629:  */
                   57630: 
                   57631: typedef struct {
                   57632:        int     dx;                     /* horizontal and */
                   57633:        int     dy;                     /* vertical displacements */
                   57634: } Disp;
                   57635: 
                   57636: /*
                   57637:  *
                   57638:  * An array of type Fontmap helps convert font names requested by users into
                   57639:  * legitimate PostScript names. The array is initialized using FONTMAP, which must
                   57640:  * end with and entry that has NULL defined as its name field.
                   57641:  *
                   57642:  */
                   57643: 
                   57644: typedef struct {
                   57645:        char    *name;                  /* user's font name */
                   57646:        char    *val;                   /* corresponding PostScript name */
                   57647: } Fontmap;
                   57648: 
                   57649: #define FONTMAP                                                                \
                   57650:                                                                        \
                   57651:        {                                                               \
                   57652:            "R", "Courier",                                             \
                   57653:            "I", "Courier-Oblique",                                     \
                   57654:            "B", "Courier-Bold",                                        \
                   57655:            "CO", "Courier",                                            \
                   57656:            "CI", "Courier-Oblique",                                    \
                   57657:            "CB", "Courier-Bold",                                       \
                   57658:            "CW", "Courier",                                            \
                   57659:            "PO", "Courier",                                            \
                   57660:            "courier", "Courier",                                       \
                   57661:            "cour", "Courier",                                          \
                   57662:            "co", "Courier",                                            \
                   57663:            NULL, NULL                                                  \
                   57664:        }
                   57665: 
                   57666: /*
                   57667:  *
                   57668:  * Two macros that are useful in processing BGI files:
                   57669:  *
                   57670:  *       MAG(A, B)    - Takes bytes A and B which have been read from a BGI file
                   57671:  *                      and returns the magnitude of the integer represented by
                   57672:  *                      the two bytes.
                   57673:  *
                   57674:  *       LINESPACE(A) - Takes BGI size A and returns the number of address units
                   57675:  *                      that can be used for a reasonable interline spacing.
                   57676:  *
                   57677:  */
                   57678: 
                   57679: #define MAG(A, B)      (((A & MSBMAG) << 6) | (B & DMASK))
                   57680: #define LINESPACE(A)   (8 * A)
                   57681: 
                   57682: /*
                   57683:  *
                   57684:  * Some of the non-integer valued functions in postdmd.c.
                   57685:  *
                   57686:  */
                   57687: 
                   57688: char   *get_font();
                   57689: 
                   57690: 0707070014230265661006440057030057030000010677100522627503400003000000001447post.src/postbgi/README
                   57691: BGI (Basic Graphical Instructions) to PostScript translator. Probably
                   57692: not useful outside the Computer Centers. Added code to tie lines to
                   57693: device space coordinates. Helps eliminate variations in line widths
                   57694: noticeable when users selected a non-zero linewidth with the -w option.
                   57695: 
                   57696: Much that was omitted from early versions of the program has been
                   57697: implemented. What's in place will handle most STARE (black and white)
                   57698: and PRISM (color) BGI jobs. PRISM jobs often fill regions with color,
                   57699: and need require device specific tuning to get things just right. An
                   57700: easy solution is add "-P/prism true def" option to the postbgi command
                   57701: line when you translate PRISM jobs.
                   57702: 
                   57703: A typical command line for STARE jobs would be,
                   57704: 
                   57705:        postbgi file >file.ps
                   57706: 
                   57707: while for PRISM jobs use,
                   57708: 
                   57709:        postbgi -P"/prism true def" file >file.ps
                   57710: 
                   57711: 0707070014230266641006400057030057030000010700100522633075200003300000010325post.src/postbgi/postbgi.1.ds dQ /usr/lib/postscript
                   57712: .TH POSTBGI 1 "DWB 3.2"
                   57713: .SH NAME
                   57714: .B postbgi
                   57715: \- PostScript translator for
                   57716: .SM BGI
                   57717: (Basic Graphical Instructions) files
                   57718: .SH SYNOPSIS
                   57719: \*(mBpostbgi\f1
                   57720: .OP "" options []
                   57721: .OP "" files []
                   57722: .SH DESCRIPTION
                   57723: .B postbgi
                   57724: translates
                   57725: .SM BGI
                   57726: (Basic Graphical Instructions)
                   57727: .I files
                   57728: into PostScript and writes the results on the
                   57729: standard output.
                   57730: If no
                   57731: .I files
                   57732: are specified, or if
                   57733: .OP \-
                   57734: is one of the input
                   57735: .IR files ,
                   57736: the standard input is read.
                   57737: The following
                   57738: .I options
                   57739: are understood:
                   57740: .TP 0.75i
                   57741: .OP \-c num
                   57742: Print
                   57743: .I num
                   57744: copies of each page.
                   57745: By default only one copy is printed.
                   57746: .TP
                   57747: .OP \-f name
                   57748: Print text using font
                   57749: .IR name .
                   57750: Any PostScript font can be used,
                   57751: although the best results will only be
                   57752: obtained with constant width fonts.
                   57753: The default font is Courier.
                   57754: .TP
                   57755: .OP \-m num
                   57756: Magnify each logical page by the factor
                   57757: .IR num .
                   57758: Pages are scaled uniformly about the origin,
                   57759: which by default is located at the center of
                   57760: each page.
                   57761: The default magnification is 1.0.
                   57762: .TP
                   57763: .OP \-n num
                   57764: Print
                   57765: .I num
                   57766: logical pages on each piece of paper,
                   57767: where
                   57768: .I num
                   57769: can be any positive integer.
                   57770: By default
                   57771: .I num
                   57772: is set to 1.
                   57773: .TP
                   57774: .OP \-o list
                   57775: Print pages whose numbers are given in the comma-separated
                   57776: .IR list .
                   57777: The list contains single numbers
                   57778: .I N
                   57779: and ranges
                   57780: .IR N1\-\|N2 .
                   57781: A missing
                   57782: .I N1
                   57783: means the lowest numbered page, a missing
                   57784: .I N2
                   57785: means the highest.
                   57786: .TP
                   57787: .OP \-p mode
                   57788: Print
                   57789: .I files
                   57790: in either \*(mBportrait\fP or \*(mBlandscape\fP
                   57791: .IR mode .
                   57792: Only the first character of
                   57793: .I mode
                   57794: is significant.
                   57795: The default
                   57796: .I mode
                   57797: is \*(mBportrait\fP.
                   57798: .TP
                   57799: .OP \-w num
                   57800: Set the line width used for graphics to
                   57801: .I num
                   57802: points, where a point is approximately 1/72
                   57803: of an inch.
                   57804: By default
                   57805: .I num
                   57806: is set to 0 points, which forces lines to be
                   57807: one pixel wide.
                   57808: .TP
                   57809: .OP \-x num
                   57810: Translate the origin
                   57811: .I num
                   57812: inches along the positive x axis.
                   57813: The default
                   57814: coordinate system has the origin fixed at the
                   57815: center of the page, with positive
                   57816: x to the right and positive y up the page.
                   57817: Positive
                   57818: .I num
                   57819: moves everything right.
                   57820: The default offset is 0 inches.
                   57821: .TP
                   57822: .OP \-y num
                   57823: Translate the origin
                   57824: .I num
                   57825: inches along the positive y axis.
                   57826: Positive
                   57827: .I num
                   57828: moves everything up the page.
                   57829: The default offset is 0 inches.
                   57830: .TP
                   57831: .OP \-E name
                   57832: Set the character encoding for text fonts to
                   57833: .IR name .
                   57834: Requesting
                   57835: .I name
                   57836: means include file
                   57837: .MI \*(dQ name .enc \f1.
                   57838: A nonexistent encoding file is silently ignored.
                   57839: The default selects file
                   57840: .MR \*(dQ/Default.enc .
                   57841: .TP
                   57842: .OP \-L file
                   57843: Use
                   57844: .I file
                   57845: as the PostScript prologue.
                   57846: .br
                   57847: The default is
                   57848: .MR \*(dQ/postbgi.ps .
                   57849: .PP
                   57850: Three options allow insertion of arbitrary PostScript
                   57851: at controlled points in the translation process:
                   57852: .TP 0.75i
                   57853: .OP \-C file
                   57854: Copy
                   57855: .I file
                   57856: to the output file;
                   57857: .I file
                   57858: must contain legitimate PostScript.
                   57859: .TP
                   57860: .OP \-P string
                   57861: Include
                   57862: .I string
                   57863: in the output file;
                   57864: .I string
                   57865: must be legitimate PostScript.
                   57866: .TP
                   57867: .OP \-R action
                   57868: Requests special
                   57869: .I action
                   57870: (e.g.,
                   57871: .MR manualfeed )
                   57872: on a per page or global basis.
                   57873: The
                   57874: .I action
                   57875: string can be given as
                   57876: .IR request ,
                   57877: .IM request : page\f1\|,
                   57878: or
                   57879: .IM request : page : file\f1\|.
                   57880: If
                   57881: .I page
                   57882: is omitted or given as 0, the request
                   57883: applies to all pages.
                   57884: If
                   57885: .I file
                   57886: is omitted, the request
                   57887: lookup is done in
                   57888: .MR \*(dQ/ps.requests .
                   57889: .PP
                   57890: .B postbgi
                   57891: can handle
                   57892: .SM STARE
                   57893: (black and white) and
                   57894: .SM PRISM
                   57895: (color)
                   57896: .SM BGI
                   57897: jobs.
                   57898: By default plots are rigidly scaled to fill the page, which produces
                   57899: the good results for most
                   57900: .SM STARE
                   57901: jobs.
                   57902: .SM PRISM
                   57903: jobs typically fill regions with colors, and often require device
                   57904: specific tuning to produce acceptable results.
                   57905: Adding the
                   57906: .MW \-P"/prism\ true\ def"
                   57907: option is strongly recommended when
                   57908: .B postbgi
                   57909: is translating
                   57910: .SM PRISM
                   57911: jobs.
                   57912: .br
                   57913: .ne 7v
                   57914: .SH EXAMPLES
                   57915: For most
                   57916: .SM STARE
                   57917: jobs,
                   57918: .EX
                   57919: postbgi  \f2file
                   57920: .EE
                   57921: gives good results, while
                   57922: .EX
                   57923: postbgi \-P"/prism true def"  \f2file
                   57924: .EE
                   57925: is recommended when translating
                   57926: .SM PRISM
                   57927: jobs.
                   57928: .SH DIAGNOSTICS
                   57929: A 0 exit status is returned if
                   57930: .I files
                   57931: were successfully processed.
                   57932: .SH BUGS
                   57933: The default line width is too small for write-white
                   57934: print engines, like the one used by the PS-2400.
                   57935: Several
                   57936: .SM BGI
                   57937: opcodes have not been implemented.
                   57938: .SH FILES
                   57939: .MW \*(dQ/postbgi.ps
                   57940: .br
                   57941: .MW \*(dQ/forms.ps
                   57942: .br
                   57943: .MW \*(dQ/ps.requests
                   57944: .SH SEE ALSO
                   57945: .BR dpost (1),
                   57946: .BR postdaisy (1),
                   57947: .BR postdmd (1),
                   57948: .BR postio (1),
                   57949: .BR postmd (1),
                   57950: .BR postprint (1),
                   57951: .BR postreverse (1),
                   57952: .BR posttek (1),
                   57953: .BR psencoding (1)
                   57954: 0707070014230265701006440057030057030000010677300522627503400003400000006016post.src/postbgi/postbgi.ps%
                   57955: % Version 3.3.2 prologue for BGI files - STARE or PRISM.
                   57956: %
                   57957: 
                   57958: /#copies 1 store
                   57959: /aspectratio 1 def
                   57960: /fixlinewidth true def
                   57961: /fixscreen false def
                   57962: /font /Courier def
                   57963: /formsperpage 1 def
                   57964: /landscape false def
                   57965: /linewidth 0 def
                   57966: /magnification 1 def
                   57967: /margin 0 def
                   57968: /orientation 0 def
                   57969: /prism false def
                   57970: /resolution 128 def
                   57971: /rotation 1 def
                   57972: /scaletodevice false def
                   57973: /screenheight 1280 def
                   57974: /screenwidth 1024 def
                   57975: /xoffset 0 def
                   57976: /yoffset 0 def
                   57977: 
                   57978: /devres 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt def
                   57979: 
                   57980: /useclippath true def
                   57981: /pagebbox [0 0 612 792] def
                   57982: 
                   57983: /inch {72 mul} bind def
                   57984: /min {2 copy gt {exch} if pop} bind def
                   57985: 
                   57986: /kshow {kshow} bind def                % so later references don't bind
                   57987: /show {show} bind def
                   57988: 
                   57989: /setup {
                   57990:        counttomark 2 idiv {def} repeat pop
                   57991: 
                   57992:        landscape {/orientation 90 orientation add def} if
                   57993:        prism {/fixscreen true def /scaletodevice true def} if
                   57994:        prism linewidth 0 eq and {/linewidth .3 def} if
                   57995:        fixscreen {devres 4 div orientation currentscreen 3 1 roll pop pop setscreen} if
                   57996: 
                   57997:        pagedimensions
                   57998:        /scaling
                   57999:                scaletodevice
                   58000:                        {devres resolution div truncate 72 mul devres div dup}
                   58001:                        {height margin sub screenheight div width margin sub screenwidth div}
                   58002:                ifelse
                   58003:        min def
                   58004:        xcenter ycenter translate
                   58005:        orientation rotation mul rotate
                   58006:        xoffset inch yoffset inch translate
                   58007:        magnification dup aspectratio mul scale
                   58008:        scaling scaling scale
                   58009:        screenwidth 2 div neg screenheight 2 div neg translate
                   58010: 
                   58011:        tietodevicespace
                   58012:        linewidth scaling div setlinewidth
                   58013:        1 setlinecap
                   58014:        newpath
                   58015: } def
                   58016: 
                   58017: /pagedimensions {
                   58018:        useclippath {
                   58019:                /pagebbox [clippath pathbbox newpath] def
                   58020:        } if
                   58021:        pagebbox aload pop
                   58022:        4 -1 roll exch 4 1 roll 4 copy
                   58023:        landscape {4 2 roll} if
                   58024:        sub /width exch def
                   58025:        sub /height exch def
                   58026:        add 2 div /xcenter exch def
                   58027:        add 2 div /ycenter exch def
                   58028:        userdict /gotpagebbox true put
                   58029: } def
                   58030: 
                   58031: /pagesetup {/page exch def} bind def
                   58032: 
                   58033: /tietodevicespace {
                   58034:        fixlinewidth linewidth 0 gt and linewidth 1 lt and {
                   58035:                /moveto {
                   58036:                        2 copy /Y exch def /X exch def
                   58037:                        transform round exch round exch itransform
                   58038:                        moveto
                   58039:                } bind def
                   58040:                /lineto {
                   58041:                        2 copy /Y exch def /X exch def
                   58042:                        transform round exch round exch itransform
                   58043:                        lineto
                   58044:                } bind def
                   58045:                /rlineto {Y add exch X add exch lineto} bind def
                   58046:                /v V 0 get bind def
                   58047:        } if
                   58048: } def
                   58049: 
                   58050: /V [{moveto counttomark 2 idiv {rlineto} repeat stroke}] def
                   58051: /v V 0 get bind def
                   58052: /p {linewidth 2 div 0 360 arc fill} bind def
                   58053: /pp {/ch exch def counttomark 2 idiv {moveto xc yc rmoveto ch show} repeat} bind def
                   58054: 
                   58055: /l {{scaling div} forall counttomark array astore 0 setdash} bind def
                   58056: /c {setrgbcolor} bind def
                   58057: 
                   58058: /T {newpath moveto rlineto rlineto rlineto closepath eofill} bind def
                   58059: 
                   58060: /R {
                   58061:        newpath moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath
                   58062:        0 eq {stroke} {eofill} ifelse
                   58063: } bind def
                   58064: 
                   58065: /f {
                   58066:        dup dup
                   58067:        /charwidth exch 6 mul def
                   58068:        /xc exch -2.5 mul def
                   58069:        /yc exch -3.5 mul def
                   58070:        font findfont charwidth .6 div scalefont setfont
                   58071: } bind def
                   58072: 
                   58073: /t {
                   58074:        /str exch def
                   58075:        gsave
                   58076:        translate rotate
                   58077:        xc yc moveto
                   58078:        currentpoint
                   58079:        {
                   58080:                pop pop
                   58081:                exch charwidth add exch
                   58082:                moveto currentpoint
                   58083:        } str kshow
                   58084:        pop pop
                   58085:        grestore
                   58086: } bind def
                   58087: 
                   58088: /done {/lastpage where {pop lastpage} if} def
                   58089: 0707070014230642760407550057030057030000021712350522633075400002300000000000post.src/postdaisy0707070014230637751006400057030057030000011711740522633075300004000000004021post.src/postdaisy/postdaisy.mkMAKE=/bin/make
                   58090: MAKEFILE=postdaisy.mk
                   58091: 
                   58092: SYSTEM=V9
                   58093: VERSION=3.3.2
                   58094: 
                   58095: GROUP=bin
                   58096: OWNER=bin
                   58097: 
                   58098: MAN1DIR=/tmp
                   58099: POSTBIN=/usr/bin/postscript
                   58100: POSTLIB=/usr/lib/postscript
                   58101: 
                   58102: COMMONDIR=../common
                   58103: 
                   58104: CFLGS=-O
                   58105: LDFLGS=-s
                   58106: 
                   58107: CFLAGS=$(CFLGS) -I$(COMMONDIR)
                   58108: LDFLAGS=$(LDFLGS)
                   58109: 
                   58110: HFILES=postdaisy.h \
                   58111:        $(COMMONDIR)/comments.h\
                   58112:        $(COMMONDIR)/ext.h\
                   58113:        $(COMMONDIR)/gen.h\
                   58114:        $(COMMONDIR)/path.h
                   58115: 
                   58116: OFILES=postdaisy.o\
                   58117:        $(COMMONDIR)/glob.o\
                   58118:        $(COMMONDIR)/misc.o\
                   58119:        $(COMMONDIR)/request.o
                   58120: 
                   58121: all : postdaisy
                   58122: 
                   58123: install : all
                   58124:        @if [ ! -d "$(POSTBIN)" ]; then \
                   58125:            mkdir $(POSTBIN); \
                   58126:            chmod 755 $(POSTBIN); \
                   58127:            chgrp $(GROUP) $(POSTBIN); \
                   58128:            chown $(OWNER) $(POSTBIN); \
                   58129:        fi
                   58130:        @if [ ! -d "$(POSTLIB)" ]; then \
                   58131:            mkdir $(POSTLIB); \
                   58132:            chmod 755 $(POSTLIB); \
                   58133:            chgrp $(GROUP) $(POSTLIB); \
                   58134:            chown $(OWNER) $(POSTLIB); \
                   58135:        fi
                   58136:        cp postdaisy $(POSTBIN)/postdaisy
                   58137:        @chmod 755 $(POSTBIN)/postdaisy
                   58138:        @chgrp $(GROUP) $(POSTBIN)/postdaisy
                   58139:        @chown $(OWNER) $(POSTBIN)/postdaisy
                   58140:        cp postdaisy.ps $(POSTLIB)/postdaisy.ps
                   58141:        @chmod 644 $(POSTLIB)/postdaisy.ps
                   58142:        @chgrp $(GROUP) $(POSTLIB)/postdaisy.ps
                   58143:        @chown $(OWNER) $(POSTLIB)/postdaisy.ps
                   58144:        cp postdaisy.1 $(MAN1DIR)/postdaisy.1
                   58145:        @chmod 644 $(MAN1DIR)/postdaisy.1
                   58146:        @chgrp $(GROUP) $(MAN1DIR)/postdaisy.1
                   58147:        @chown $(OWNER) $(MAN1DIR)/postdaisy.1
                   58148: 
                   58149: clean :
                   58150:        rm -f *.o
                   58151: 
                   58152: clobber : clean
                   58153:        rm -f postdaisy
                   58154: 
                   58155: postdaisy : $(OFILES)
                   58156:        $(CC) $(CFLAGS) $(LDFLAGS) -o postdaisy $(OFILES)
                   58157: 
                   58158: postdaisy.o : $(HFILES)
                   58159: 
                   58160: $(COMMONDIR)/glob.o\
                   58161: $(COMMONDIR)/misc.o\
                   58162: $(COMMONDIR)/request.o :
                   58163:        @cd $(COMMONDIR); $(MAKE) -f common.mk `basename $@`
                   58164: 
                   58165: changes :
                   58166:        @trap "" 1 2 3 15; \
                   58167:        sed \
                   58168:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
                   58169:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
                   58170:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
                   58171:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
                   58172:            -e "s'^MAN1DIR=.*'MAN1DIR=$(MAN1DIR)'" \
                   58173:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
                   58174:            -e "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" \
                   58175:        $(MAKEFILE) >XXX.mk; \
                   58176:        mv XXX.mk $(MAKEFILE); \
                   58177:        sed \
                   58178:            -e "s'^.ds dQ.*'.ds dQ $(POSTLIB)'" \
                   58179:        postdaisy.1 >XXX.1; \
                   58180:        mv XXX.1 postdaisy.1
                   58181: 
                   58182: 0707070014230643001006440057030057030000011712530522627503500003700000004056post.src/postdaisy/postdaisy.h/*
                   58183:  *
                   58184:  * Definitions used by the PostScript translator for Diablo 1640 files.
                   58185:  *
                   58186:  * Diablo printers have horizontal and vertical resolutions of 120 and 48 dpi.
                   58187:  * We'll use a single resolution of 240 dpi and let the program scale horizontal
                   58188:  * and vertical positions by HSCALE and VSCALE.
                   58189:  *
                   58190:  */
                   58191: 
                   58192: #define RES            240
                   58193: #define HSCALE         2
                   58194: #define VSCALE         5
                   58195: 
                   58196: /*
                   58197:  *
                   58198:  * HMI is the default character spacing and VMI is the line spacing. Both values
                   58199:  * are in terms of the 240 dpi resolution.
                   58200:  *
                   58201:  */
                   58202: 
                   58203: #define HMI            (12 * HSCALE)
                   58204: #define VMI            (8 * VSCALE)
                   58205: 
                   58206: /*
                   58207:  *
                   58208:  * Paper dimensions don't seem to be all that important. They're just used to
                   58209:  * set the right and bottom margins. Both are given in terms of the 240 dpi
                   58210:  * resolution.
                   58211:  *
                   58212:  */
                   58213: 
                   58214: #define LEFTMARGIN     0
                   58215: #define RIGHTMARGIN    3168
                   58216: #define TOPMARGIN      0
                   58217: #define BOTTOMMARGIN   2640
                   58218: 
                   58219: /*
                   58220:  *
                   58221:  * ROWS and COLUMNS set the dimensions of the horizontal and vertical tab arrays.
                   58222:  * The way I've implemented both kinds of tabs leaves something to be desired, but
                   58223:  * it was simple and should be good enough for now. If arrays are going to be used
                   58224:  * to mark tab stops I probably should use malloc() to get enough space once the
                   58225:  * initial hmi and vmi are know.
                   58226:  *
                   58227:  */
                   58228: 
                   58229: #define ROWS           400
                   58230: #define COLUMNS                200
                   58231: 
                   58232: /*
                   58233:  *
                   58234:  * An array of type Fontmap helps convert font names requested by users into
                   58235:  * legitimate PostScript names. The array is initialized using FONTMAP, which must
                   58236:  * end with an entry that has NULL defined as its name field.
                   58237:  *
                   58238:  */
                   58239: 
                   58240: typedef struct {
                   58241:        char    *name;                  /* user's font name */
                   58242:        char    *val;                   /* corresponding PostScript name */
                   58243: } Fontmap;
                   58244: 
                   58245: #define FONTMAP                                                                \
                   58246:                                                                        \
                   58247:        {                                                               \
                   58248:            "R", "Courier",                                             \
                   58249:            "I", "Courier-Oblique",                                     \
                   58250:            "B", "Courier-Bold",                                        \
                   58251:            "CO", "Courier",                                            \
                   58252:            "CI", "Courier-Oblique",                                    \
                   58253:            "CB", "Courier-Bold",                                       \
                   58254:            "CW", "Courier",                                            \
                   58255:            "PO", "Courier",                                            \
                   58256:            "courier", "Courier",                                       \
                   58257:            "cour", "Courier",                                          \
                   58258:            "co", "Courier",                                            \
                   58259:            NULL, NULL                                                  \
                   58260:        }
                   58261: 
                   58262: /*
                   58263:  *
                   58264:  * Some of the non-integer functions in postdaisy.c.
                   58265:  *
                   58266:  */
                   58267: 
                   58268: char   *get_font();
                   58269: 
                   58270: 0707070014230643011006440057030057030000011712700522627503500003700000067263post.src/postdaisy/postdaisy.c/*
                   58271:  *
                   58272:  * postdaisy - PostScript translator for Diablo 1640 files.
                   58273:  *
                   58274:  * A program that translates Diablo 1640 files into PostScript. Absolutely nothing
                   58275:  * is guaranteed. Quite a few things haven't been implemented, and what's been
                   58276:  * done isn't well tested. Most of the documentation used to write this program
                   58277:  * was taken from the 'Diablo Emulator' section of a recent Imagen manual.
                   58278:  *
                   58279:  * Some of document comments that are generated may not be right. Most of the test
                   58280:  * files I used produced a trailing blank page. I've put a check in formfeed() that
                   58281:  * won't print the last page if it doesn't contain any text, but PAGES comments may
                   58282:  * not be right. The DOCUMENTFONTS comment will also be wrong if auto underline or
                   58283:  * bold printing have been turned on by escape commands.
                   58284:  *
                   58285:  * The brute force approach used to implement horizontal and vertical tabs leaves
                   58286:  * much to be desired, and may not work for very small initial hmi and vmi values.
                   58287:  * At the very least I should have used malloc() to get space for the two tabstop
                   58288:  * arrays after hmi and vmi are known!
                   58289:  *
                   58290:  * Reverse printing mode hasn't been tested at all, but what's here should be
                   58291:  * close even though it's not efficient.
                   58292:  *
                   58293:  * The PostScript prologue is copied from *prologue before any of the input files
                   58294:  * are translated. The program expects that the following PostScript procedures
                   58295:  * are defined in that file:
                   58296:  *
                   58297:  *     setup
                   58298:  *
                   58299:  *       mark ... setup -
                   58300:  *
                   58301:  *         Handles special initialization stuff that depends on how this program
                   58302:  *         was called. Expects to find a mark followed by key/value pairs on the
                   58303:  *         stack. The def operator is applied to each pair up to the mark, then
                   58304:  *         the default state is set up.
                   58305:  *
                   58306:  *     pagesetup
                   58307:  *
                   58308:  *       page pagesetup -
                   58309:  *
                   58310:  *         Does whatever is needed to set things up for the next page. Expects to
                   58311:  *         find the current page number on the stack.
                   58312:  *
                   58313:  *     t
                   58314:  *
                   58315:  *       mark str1 x1 str2 x2 ... strn xn y hmi t mark
                   58316:  *
                   58317:  *         Handles all the text on the stack. Characters in the strings are
                   58318:  *         printed using hmi as the character advance, and all strings are at
                   58319:  *         vertical position y. Each string is begins at the horizontal position
                   58320:  *         that preceeds it.
                   58321:  *
                   58322:  *     f
                   58323:  *
                   58324:  *       font f -
                   58325:  *
                   58326:  *         Use font f, where f is the full PostScript font name. Only used when
                   58327:  *         we switch to auto underline (Courier-Italic) or bold (Courier-Bold)
                   58328:  *         printing.
                   58329:  *
                   58330:  *     done
                   58331:  *
                   58332:  *       done
                   58333:  *
                   58334:  *         Makes sure the last page is printed. Only needed when we're printing
                   58335:  *         more than one page on each sheet of paper.
                   58336:  *
                   58337:  * Many default values, like the magnification and orientation, are defined in 
                   58338:  * the prologue, which is where they belong. If they're changed (by options), an
                   58339:  * appropriate definition is made after the prologue is added to the output file.
                   58340:  * The -P option passes arbitrary PostScript through to the output file. Among
                   58341:  * other things it can be used to set (or change) values that can't be accessed by
                   58342:  * other options.
                   58343:  *
                   58344:  */
                   58345: 
                   58346: #include <stdio.h>
                   58347: #include <signal.h>
                   58348: #include <ctype.h>
                   58349: #include <fcntl.h>
                   58350: 
                   58351: #include "comments.h"                  /* PostScript file structuring comments */
                   58352: #include "gen.h"                       /* general purpose definitions */
                   58353: #include "path.h"                      /* for the prologue */
                   58354: #include "ext.h"                       /* external variable declarations */
                   58355: #include "postdaisy.h"                 /* a few special definitions */
                   58356: 
                   58357: char   *optnames = "a:c:f:h:l:m:n:o:p:r:s:v:x:y:A:C:E:J:L:P:DI";
                   58358: 
                   58359: char   *prologue = POSTDAISY;          /* default PostScript prologue */
                   58360: char   *formfile = FORMFILE;           /* stuff for multiple pages per sheet */
                   58361: 
                   58362: int    formsperpage = 1;               /* page images on each piece of paper */
                   58363: int    copies = 1;                     /* and this many copies of each sheet */
                   58364: 
                   58365: char   htabstops[COLUMNS];             /* horizontal */
                   58366: char   vtabstops[ROWS];                /* and vertical tabs */
                   58367: 
                   58368: int    res = RES;                      /* input file resolution - sort of */
                   58369: 
                   58370: int    hmi = HMI;                      /* horizontal motion index - 1/120 inch */
                   58371: int    vmi = VMI;                      /* vertical motion index - 1/48 inch */
                   58372: int    ohmi = HMI;                     /* original hmi */
                   58373: int    ovmi = VMI;                     /* and vmi - for tabs and char size */
                   58374: 
                   58375: int    hpos = 0;                       /* current horizontal */
                   58376: int    vpos = 0;                       /* and vertical position */
                   58377: 
                   58378: int    lastx = -1;                     /* printer's last horizontal */
                   58379: int    lasty = -1;                     /* and vertical position */
                   58380: int    lasthmi = -1;                   /* hmi for current text strings */
                   58381: 
                   58382: int    lastc = -1;                     /* last printed character */
                   58383: int    prevx = -1;                     /* at this position */
                   58384: 
                   58385: int    leftmargin = LEFTMARGIN;        /* page margins */
                   58386: int    rightmargin = RIGHTMARGIN;
                   58387: int    topmargin = TOPMARGIN;
                   58388: int    bottommargin = BOTTOMMARGIN;
                   58389: 
                   58390: int    stringcount = 0;                /* number of strings on the stack */
                   58391: int    stringstart = 1;                /* column where current one starts */
                   58392: int    advance = 1;                    /* -1 if in backward print mode */
                   58393: 
                   58394: int    lfiscr = OFF;                   /* line feed implies carriage return */
                   58395: int    crislf = OFF;                   /* carriage return implies line feed */
                   58396: 
                   58397: int    linespp = 0;                    /* lines per page if it's positive */
                   58398: int    markedpage = FALSE;             /* helps prevent trailing blank page */
                   58399: int    page = 0;                       /* page we're working on */
                   58400: int    printed = 0;                    /* printed this many pages */
                   58401: 
                   58402: Fontmap        fontmap[] = FONTMAP;            /* for translating font names */
                   58403: char   *fontname = "Courier";          /* use this PostScript font */
                   58404: int    shadowprint = OFF;              /* automatic bold printing if ON */
                   58405: 
                   58406: FILE   *fp_in;                         /* read from this file */
                   58407: FILE   *fp_out = stdout;               /* and write stuff here */
                   58408: FILE   *fp_acct = NULL;                /* for accounting data */
                   58409: 
                   58410: /*****************************************************************************/
                   58411: 
                   58412: main(agc, agv)
                   58413: 
                   58414:     int                agc;
                   58415:     char       *agv[];
                   58416: 
                   58417: {
                   58418: 
                   58419: /*
                   58420:  *
                   58421:  * A simple program that translates Diablo 1640 files into PostScript. Nothing
                   58422:  * is guaranteed - the program not well tested and doesn't implement everything.
                   58423:  *
                   58424:  */
                   58425: 
                   58426:     argc = agc;                                /* other routines may want them */
                   58427:     argv = agv;
                   58428: 
                   58429:     prog_name = argv[0];               /* really just for error messages */
                   58430: 
                   58431:     init_signals();                    /* sets up interrupt handling */
                   58432:     header();                          /* PostScript header comments */
                   58433:     options();                         /* handle the command line options */
                   58434:     setup();                           /* for PostScript */
                   58435:     arguments();                       /* followed by each input file */
                   58436:     done();                            /* print the last page etc. */
                   58437:     account();                         /* job accounting data */
                   58438: 
                   58439:     exit(x_stat);                      /* not much could be wrong */
                   58440: 
                   58441: }   /* End of main */
                   58442: 
                   58443: /*****************************************************************************/
                   58444: 
                   58445: init_signals()
                   58446: 
                   58447: {
                   58448: 
                   58449: /*
                   58450:  *
                   58451:  * Makes sure we handle interrupts.
                   58452:  *
                   58453:  */
                   58454: 
                   58455:     if ( signal(SIGINT, interrupt) == SIG_IGN )  {
                   58456:        signal(SIGINT, SIG_IGN);
                   58457:        signal(SIGQUIT, SIG_IGN);
                   58458:        signal(SIGHUP, SIG_IGN);
                   58459:     } else {
                   58460:        signal(SIGHUP, interrupt);
                   58461:        signal(SIGQUIT, interrupt);
                   58462:     }   /* End else */
                   58463: 
                   58464:     signal(SIGTERM, interrupt);
                   58465: 
                   58466: }   /* End of init_signals */
                   58467: 
                   58468: /*****************************************************************************/
                   58469: 
                   58470: header()
                   58471: 
                   58472: {
                   58473: 
                   58474:     int                ch;                     /* return value from getopt() */
                   58475:     int                old_optind = optind;    /* for restoring optind - should be 1 */
                   58476: 
                   58477: /*
                   58478:  *
                   58479:  * Scans the option list looking for things, like the prologue file, that we need
                   58480:  * right away but could be changed from the default. Doing things this way is an
                   58481:  * attempt to conform to Adobe's latest file structuring conventions. In particular
                   58482:  * they now say there should be nothing executed in the prologue, and they have
                   58483:  * added two new comments that delimit global initialization calls. Once we know
                   58484:  * where things really are we write out the job header, follow it by the prologue,
                   58485:  * and then add the ENDPROLOG and BEGINSETUP comments.
                   58486:  *
                   58487:  */
                   58488: 
                   58489:     while ( (ch = getopt(argc, argv, optnames)) != EOF )
                   58490:        if ( ch == 'L' )
                   58491:            prologue = optarg;
                   58492:        else if ( ch == '?' )
                   58493:            error(FATAL, "");
                   58494: 
                   58495:     optind = old_optind;               /* get ready for option scanning */
                   58496: 
                   58497:     fprintf(stdout, "%s", CONFORMING);
                   58498:     fprintf(stdout, "%s %s\n", VERSION, PROGRAMVERSION);
                   58499:     fprintf(stdout, "%s %s\n", DOCUMENTFONTS, ATEND);
                   58500:     fprintf(stdout, "%s %s\n", PAGES, ATEND);
                   58501:     fprintf(stdout, "%s", ENDCOMMENTS);
                   58502: 
                   58503:     if ( cat(prologue) == FALSE )
                   58504:        error(FATAL, "can't read %s", prologue);
                   58505: 
                   58506:     if ( DOROUND )
                   58507:        cat(ROUNDPAGE);
                   58508: 
                   58509:     fprintf(stdout, "%s", ENDPROLOG);
                   58510:     fprintf(stdout, "%s", BEGINSETUP);
                   58511:     fprintf(stdout, "mark\n");
                   58512: 
                   58513: }   /* End of header */
                   58514: 
                   58515: /*****************************************************************************/
                   58516: 
                   58517: options()
                   58518: 
                   58519: {
                   58520: 
                   58521:     int                ch;                     /* return value from getopt() */
                   58522:     int                n;                      /* for CR and LF modes */
                   58523: 
                   58524: /*
                   58525:  *
                   58526:  * Reads and processes the command line options. Added the -P option so arbitrary
                   58527:  * PostScript code can be passed through. Expect it could be useful for changing
                   58528:  * definitions in the prologue for which options have not been defined.
                   58529:  *
                   58530:  * Although any PostScript font can be used, things will only work for constant
                   58531:  * width fonts.
                   58532:  *
                   58533:  */
                   58534: 
                   58535:     while ( (ch = getopt(argc, argv, optnames)) != EOF )  {
                   58536:        switch ( ch )  {
                   58537:            case 'a':                   /* aspect ratio */
                   58538:                    fprintf(stdout, "/aspectratio %s def\n", optarg);
                   58539:                    break;
                   58540: 
                   58541:            case 'c':                   /* copies */
                   58542:                    copies = atoi(optarg);
                   58543:                    fprintf(stdout, "/#copies %s store\n", optarg);
                   58544:                    break;
                   58545: 
                   58546:            case 'f':                   /* use this PostScript font */
                   58547:                    fontname = get_font(optarg);
                   58548:                    fprintf(stdout, "/font /%s def\n", fontname);
                   58549:                    break;
                   58550: 
                   58551:            case 'h':                   /* default character spacing */
                   58552:                    ohmi = hmi = atoi(optarg) * HSCALE;
                   58553:                    fprintf(stdout, "/hmi %s def\n", optarg);
                   58554:                    break;
                   58555: 
                   58556:            case 'l':                   /* lines per page */
                   58557:                    linespp = atoi(optarg);
                   58558:                    break;
                   58559: 
                   58560:            case 'm':                   /* magnification */
                   58561:                    fprintf(stdout, "/magnification %s def\n", optarg);
                   58562:                    break;
                   58563: 
                   58564:            case 'n':                   /* forms per page */
                   58565:                    formsperpage = atoi(optarg);
                   58566:                    fprintf(stdout, "%s %s\n", FORMSPERPAGE, optarg);
                   58567:                    fprintf(stdout, "/formsperpage %s def\n", optarg);
                   58568:                    break;
                   58569: 
                   58570:            case 'o':                   /* output page list */
                   58571:                    out_list(optarg);
                   58572:                    break;
                   58573: 
                   58574:            case 'p':                   /* landscape or portrait mode */
                   58575:                    if ( *optarg == 'l' )
                   58576:                        fprintf(stdout, "/landscape true def\n");
                   58577:                    else fprintf(stdout, "/landscape false def\n");
                   58578:                    break;
                   58579: 
                   58580:            case 'r':                   /* set CR and LF modes */
                   58581:                    n = atoi(optarg);
                   58582:                    if ( n & 01 )
                   58583:                        lfiscr = ON;
                   58584:                    else lfiscr = OFF;
                   58585:                    if ( n & 02 )
                   58586:                        crislf = ON;
                   58587:                    else crislf = OFF;
                   58588:                    break;
                   58589: 
                   58590:            case 's':                   /* point size */
                   58591:                    fprintf(stdout, "/pointsize %s def\n", optarg);
                   58592:                    break;
                   58593: 
                   58594:            case 'v':                   /* default line spacing */
                   58595:                    ovmi = vmi = atoi(optarg) * VSCALE;
                   58596:                    break;
                   58597: 
                   58598:            case 'x':                   /* shift things horizontally */
                   58599:                    fprintf(stdout, "/xoffset %s def\n", optarg);
                   58600:                    break;
                   58601: 
                   58602:            case 'y':                   /* and vertically on the page */
                   58603:                    fprintf(stdout, "/yoffset %s def\n", optarg);
                   58604:                    break;
                   58605: 
                   58606:            case 'A':                   /* force job accounting */
                   58607:            case 'J':
                   58608:                    if ( (fp_acct = fopen(optarg, "a")) == NULL )
                   58609:                        error(FATAL, "can't open accounting file %s", optarg);
                   58610:                    break;
                   58611: 
                   58612:            case 'C':                   /* copy file straight to output */
                   58613:                    if ( cat(optarg) == FALSE )
                   58614:                        error(FATAL, "can't read %s", optarg);
                   58615:                    break;
                   58616: 
                   58617:            case 'E':                   /* text font encoding */
                   58618:                    fontencoding = optarg;
                   58619:                    break;
                   58620: 
                   58621:            case 'L':                   /* PostScript prologue file */
                   58622:                    prologue = optarg;
                   58623:                    break;
                   58624: 
                   58625:            case 'P':                   /* PostScript pass through */
                   58626:                    fprintf(stdout, "%s\n", optarg);
                   58627:                    break;
                   58628: 
                   58629:            case 'R':                   /* special global or page level request */
                   58630:                    saverequest(optarg);
                   58631:                    break;
                   58632: 
                   58633:            case 'D':                   /* debug flag */
                   58634:                    debug = ON;
                   58635:                    break;
                   58636: 
                   58637:            case 'I':                   /* ignore FATAL errors */
                   58638:                    ignore = ON;
                   58639:                    break;
                   58640: 
                   58641:            case '?':                   /* don't understand the option */
                   58642:                    error(FATAL, "");
                   58643:                    break;
                   58644: 
                   58645:            default:                    /* don't know what to do for ch */
                   58646:                    error(FATAL, "missing case for option %c\n", ch);
                   58647:                    break;
                   58648:        }   /* End switch */
                   58649:     }   /* End while */
                   58650: 
                   58651:     argc -= optind;                    /* get ready for non-option args */
                   58652:     argv += optind;
                   58653: 
                   58654: }   /* End of options */
                   58655: 
                   58656: /*****************************************************************************/
                   58657: 
                   58658: char *get_font(name)
                   58659: 
                   58660:     char       *name;                  /* name the user asked for */
                   58661: 
                   58662: {
                   58663: 
                   58664:     int                i;                      /* for looking through fontmap[] */
                   58665: 
                   58666: /*
                   58667:  *
                   58668:  * Called from options() to map a user's font name into a legal PostScript name.
                   58669:  * If the lookup fails *name is returned to the caller. That should let you choose
                   58670:  * any PostScript font, although things will only work well for constant width
                   58671:  * fonts.
                   58672:  *
                   58673:  */
                   58674: 
                   58675:     for ( i = 0; fontmap[i].name != NULL; i++ )
                   58676:        if ( strcmp(name, fontmap[i].name) == 0 )
                   58677:            return(fontmap[i].val);
                   58678: 
                   58679:     return(name);
                   58680: 
                   58681: }   /* End of get_font */
                   58682: 
                   58683: /*****************************************************************************/
                   58684: 
                   58685: setup()
                   58686: 
                   58687: {
                   58688: 
                   58689: /*
                   58690:  *
                   58691:  * Handles things that must be done after the options are read but before the
                   58692:  * input files are processed.
                   58693:  *
                   58694:  */
                   58695: 
                   58696:     writerequest(0, stdout);           /* global requests eg. manual feed */
                   58697:     setencoding(fontencoding);
                   58698:     fprintf(stdout, "setup\n");
                   58699: 
                   58700:     if ( formsperpage > 1 )  {
                   58701:        if ( cat(formfile) == FALSE )
                   58702:            error(FATAL, "can't read %s", formfile);
                   58703:        fprintf(stdout, "%d setupforms\n", formsperpage);
                   58704:     }  /* End if */
                   58705: 
                   58706:     fprintf(stdout, "%s", ENDSETUP);
                   58707: 
                   58708: }   /* End of setup */
                   58709: 
                   58710: /*****************************************************************************/
                   58711: 
                   58712: arguments()
                   58713: 
                   58714: {
                   58715: 
                   58716: /*
                   58717:  *
                   58718:  * Makes sure all the non-option command line arguments are processed. If we get
                   58719:  * here and there aren't any arguments left, or if '-' is one of the input files
                   58720:  * we'll process stdin.
                   58721:  *
                   58722:  */
                   58723: 
                   58724:     fp_in = stdin;
                   58725: 
                   58726:     if ( argc < 1 )
                   58727:        text();
                   58728:     else {                             /* at least one argument is left */
                   58729:        while ( argc > 0 )  {
                   58730:            if ( strcmp(*argv, "-") == 0 )
                   58731:                fp_in = stdin;
                   58732:            else if ( (fp_in = fopen(*argv, "r")) == NULL )
                   58733:                error(FATAL, "can't open %s", *argv);
                   58734:            text();
                   58735:            if ( fp_in != stdin )
                   58736:                fclose(fp_in);
                   58737:            argc--;
                   58738:            argv++;
                   58739:        }   /* End while */
                   58740:     }   /* End else */
                   58741: 
                   58742: }   /* End of arguments */
                   58743: 
                   58744: /*****************************************************************************/
                   58745: 
                   58746: done()
                   58747: 
                   58748: {
                   58749: 
                   58750: /*
                   58751:  *
                   58752:  * Finished with all the input files, so mark the end of the pages, make sure the
                   58753:  * last page is printed, and restore the initial environment.
                   58754:  *
                   58755:  */
                   58756: 
                   58757:     fprintf(stdout, "%s", TRAILER);
                   58758:     fprintf(stdout, "done\n");
                   58759:     fprintf(stdout, "%s %s\n", DOCUMENTFONTS, fontname);
                   58760:     fprintf(stdout, "%s %d\n", PAGES, printed);
                   58761: 
                   58762: }   /* End of done */
                   58763: 
                   58764: /*****************************************************************************/
                   58765: 
                   58766: account()
                   58767: 
                   58768: {
                   58769: 
                   58770: /*
                   58771:  *
                   58772:  * Writes an accounting record to *fp_acct provided it's not NULL. Accounting
                   58773:  * is requested using the -A or -J options.
                   58774:  *
                   58775:  */
                   58776: 
                   58777:     if ( fp_acct != NULL )
                   58778:        fprintf(fp_acct, " print %d\n copies %d\n", printed, copies);
                   58779: 
                   58780: }   /* End of account */
                   58781: 
                   58782: /*****************************************************************************/
                   58783: 
                   58784: text()
                   58785: 
                   58786: {
                   58787: 
                   58788:     int                ch;                     /* next input character */
                   58789: 
                   58790: /*
                   58791:  *
                   58792:  * Translates the next input file into PostScript. The redirect(-1) call forces
                   58793:  * the initial output to go to /dev/null - so the stuff formfeed() does at the
                   58794:  * end of each page doesn't go to stdout.
                   58795:  *
                   58796:  */
                   58797: 
                   58798:     redirect(-1);                      /* get ready for the first page */
                   58799:     formfeed();                                /* force PAGE comment etc. */
                   58800:     inittabs();
                   58801: 
                   58802:     while ( (ch = getc(fp_in)) != EOF )
                   58803:        switch ( ch )  {
                   58804:            case '\010':                /* backspace */
                   58805:                    backspace();
                   58806:                    break;
                   58807: 
                   58808:            case '\011':                /* horizontal tab */
                   58809:                    htab();
                   58810:                    break;
                   58811: 
                   58812:            case '\012':                /* new line */
                   58813:                    linefeed();
                   58814:                    break;
                   58815: 
                   58816:            case '\013':                /* vertical tab */
                   58817:                    vtab();
                   58818:                    break;
                   58819: 
                   58820:            case '\014':                /* form feed */
                   58821:                    formfeed();
                   58822:                    break;
                   58823: 
                   58824:            case '\015':                /* carriage return */
                   58825:                    carriage();
                   58826:                    break;
                   58827: 
                   58828:            case '\016':                /* extended character set - SO */
                   58829:                    break;
                   58830: 
                   58831:            case '\017':                /* extended character set - SI */
                   58832:                    break;
                   58833: 
                   58834:            case '\031':                /* next char from supplementary set */
                   58835:                    break;
                   58836: 
                   58837:            case '\033':                /* 2 or 3 byte escape sequence */
                   58838:                    escape();
                   58839:                    break;
                   58840: 
                   58841:            default:
                   58842:                    oput(ch);
                   58843:                    break;
                   58844:        }   /* End switch */
                   58845: 
                   58846:     formfeed();                                /* next file starts on a new page? */
                   58847: 
                   58848: }   /* End of text */
                   58849: 
                   58850: /*****************************************************************************/
                   58851: 
                   58852: inittabs()
                   58853: 
                   58854: {
                   58855: 
                   58856:     int                i;                      /* loop index */
                   58857: 
                   58858: /*
                   58859:  *
                   58860:  * Initializes the horizontal and vertical tab arrays. The way tabs are handled is
                   58861:  * quite inefficient and may not work for all initial hmi or vmi values.
                   58862:  *
                   58863:  */
                   58864: 
                   58865:     for ( i = 0; i < COLUMNS; i++ )
                   58866:        htabstops[i] = ((i % 8) == 0) ? ON : OFF;
                   58867: 
                   58868:     for ( i = 0; i < ROWS; i++ )
                   58869:        vtabstops[i] = ((i * ovmi) > BOTTOMMARGIN) ? ON : OFF;
                   58870: 
                   58871: }   /* End of inittabs */
                   58872: 
                   58873: /*****************************************************************************/
                   58874: 
                   58875: cleartabs()
                   58876: 
                   58877: {
                   58878: 
                   58879:     int                i;                      /* loop index */
                   58880: 
                   58881: /*
                   58882:  *
                   58883:  * Clears all horizontal and vertical tab stops.
                   58884:  *
                   58885:  */
                   58886: 
                   58887:     for ( i = 0; i < ROWS; i++ )
                   58888:        htabstops[i] = OFF;
                   58889: 
                   58890:     for ( i = 0; i < COLUMNS; i++ )
                   58891:        vtabstops[i] = OFF;
                   58892: 
                   58893: }   /* End of cleartabs */
                   58894: 
                   58895: /*****************************************************************************/
                   58896: 
                   58897: formfeed()
                   58898: 
                   58899: {
                   58900: 
                   58901: /*
                   58902:  *
                   58903:  * Called whenever we've finished with the last page and want to get ready for the
                   58904:  * next one. Also used at the beginning and end of each input file, so we have to
                   58905:  * be careful about what's done. I've added a simple test before the showpage that
                   58906:  * should eliminate the extra blank page that was put out at the end of many jobs,
                   58907:  * but the PAGES comments may be wrong.
                   58908:  *
                   58909:  */
                   58910: 
                   58911:     if ( fp_out == stdout )            /* count the last page */
                   58912:        printed++;
                   58913: 
                   58914:     endline();                         /* print the last line */
                   58915: 
                   58916:     fprintf(fp_out, "cleartomark\n");
                   58917:     if ( feof(fp_in) == 0 || markedpage == TRUE )
                   58918:        fprintf(fp_out, "showpage\n");
                   58919:     fprintf(fp_out, "saveobj restore\n");
                   58920:     fprintf(fp_out, "%s %d %d\n", ENDPAGE, page, printed);
                   58921: 
                   58922:     if ( ungetc(getc(fp_in), fp_in) == EOF )
                   58923:        redirect(-1);
                   58924:     else redirect(++page);
                   58925: 
                   58926:     fprintf(fp_out, "%s %d %d\n", PAGE, page, printed+1);
                   58927:     fprintf(fp_out, "/saveobj save def\n");
                   58928:     fprintf(fp_out, "mark\n");
                   58929:     writerequest(printed+1, fp_out);
                   58930:     fprintf(fp_out, "%d pagesetup\n", printed+1);
                   58931: 
                   58932:     vgoto(topmargin);
                   58933:     hgoto(leftmargin);
                   58934: 
                   58935:     markedpage = FALSE;
                   58936: 
                   58937: }   /* End of formfeed */
                   58938: 
                   58939: /*****************************************************************************/
                   58940: 
                   58941: linefeed()
                   58942: 
                   58943: {
                   58944: 
                   58945:     int                line = 0;               /* current line - based on ovmi */
                   58946: 
                   58947: /*
                   58948:  *
                   58949:  * Adjust our current vertical position. If we've passed the bottom of the page
                   58950:  * or exceeded the number of lines per page, print it and go to the upper left
                   58951:  * corner of the next page. This routine is also called from carriage() if crislf
                   58952:  * is ON.
                   58953:  *
                   58954:  */
                   58955: 
                   58956:     vmot(vmi);
                   58957: 
                   58958:     if ( lfiscr == ON )
                   58959:        hgoto(leftmargin);
                   58960: 
                   58961:     if ( linespp > 0 )                 /* means something so see where we are */
                   58962:        line = vpos / ovmi + 1;
                   58963: 
                   58964:     if ( vpos > bottommargin || line > linespp )
                   58965:        formfeed();
                   58966: 
                   58967: }   /* End of linefeed */
                   58968: 
                   58969: /*****************************************************************************/
                   58970: 
                   58971: carriage()
                   58972: 
                   58973: {
                   58974: 
                   58975: /*
                   58976:  *
                   58977:  * Handles carriage return character. If crislf is ON we'll generate a line feed
                   58978:  * every time we get a carriage return character.
                   58979:  *
                   58980:  */
                   58981: 
                   58982:     if ( shadowprint == ON )           /* back to normal mode */
                   58983:        changefont(fontname);
                   58984: 
                   58985:     advance = 1;
                   58986:     shadowprint = OFF;
                   58987: 
                   58988:     hgoto(leftmargin);
                   58989: 
                   58990:     if ( crislf == ON )
                   58991:        linefeed();
                   58992: 
                   58993: }   /* End of carriage */
                   58994: 
                   58995: /*****************************************************************************/
                   58996: 
                   58997: htab()
                   58998: 
                   58999: {
                   59000: 
                   59001:     int                col;                    /* 'column' we'll be at next */
                   59002:     int                i;                      /* loop index */
                   59003: 
                   59004: /*
                   59005:  *
                   59006:  * Tries to figure out where the next tab stop is. Wasn't positive about this
                   59007:  * one, since hmi can change. I'll assume columns are determined by the original
                   59008:  * value of hmi. That fixes them on the page, which seems to make more sense than
                   59009:  * letting them float all over the place.
                   59010:  *
                   59011:  */
                   59012: 
                   59013:     endline();
                   59014: 
                   59015:     col = hpos/ohmi + 1;
                   59016:     for ( i = col; i < ROWS; i++ )
                   59017:        if ( htabstops[i] == ON )  {
                   59018:            col = i;
                   59019:            break;
                   59020:        }   /* End if */
                   59021: 
                   59022:     hgoto(col * ohmi);
                   59023:     lastx = hpos;
                   59024: 
                   59025: }   /* End of htab */
                   59026: 
                   59027: /*****************************************************************************/
                   59028: 
                   59029: vtab()
                   59030: 
                   59031: {
                   59032: 
                   59033:     int                line;                   /* line we'll be at next */
                   59034:     int                i;                      /* loop index */
                   59035: 
                   59036: /*
                   59037:  *
                   59038:  * Looks for the next vertical tab stop in the vtabstops[] array and moves to that
                   59039:  * line. If we don't find a tab we'll just move down one line - shouldn't happen.
                   59040:  *
                   59041:  */
                   59042: 
                   59043:     endline();
                   59044: 
                   59045:     line = vpos/ovmi + 1;
                   59046:     for ( i = line; i < COLUMNS; i++ )
                   59047:        if ( vtabstops[i] == ON )  {
                   59048:            line = i;
                   59049:            break;
                   59050:        }   /* End if */
                   59051: 
                   59052:     vgoto(line * ovmi);
                   59053: 
                   59054: }   /* End of vtab */
                   59055: 
                   59056: /*****************************************************************************/
                   59057: 
                   59058: backspace()
                   59059: 
                   59060: {
                   59061: 
                   59062: /*
                   59063:  *
                   59064:  * Moves backwards a distance equal to the current value of hmi, but don't go
                   59065:  * past the left margin.
                   59066:  *
                   59067:  */
                   59068: 
                   59069:     endline();
                   59070: 
                   59071:     if ( hpos - leftmargin >= hmi )
                   59072:        hmot(-hmi);
                   59073:     else hgoto(leftmargin);            /* maybe just ignore the backspace?? */
                   59074: 
                   59075:     lastx = hpos;
                   59076: 
                   59077: }   /* End of backspace */
                   59078: 
                   59079: /*****************************************************************************/
                   59080: 
                   59081: escape()
                   59082: 
                   59083: {
                   59084: 
                   59085:     int                ch;                     /* control character */
                   59086: 
                   59087: /*
                   59088:  *
                   59089:  * Handles special codes that are expected to follow an escape character. The
                   59090:  * initial escape character is followed by one or two bytes.
                   59091:  *
                   59092:  */
                   59093: 
                   59094:     switch ( ch = getc(fp_in) ) {
                   59095:        case 'T':                       /* top margin */
                   59096:                topmargin = vpos;
                   59097:                break;
                   59098: 
                   59099:        case 'L':                       /* bottom margin */
                   59100:                bottommargin = vpos;
                   59101:                break;
                   59102: 
                   59103:        case 'C':                       /* clear top and bottom margins */
                   59104:                bottommargin = BOTTOMMARGIN;
                   59105:                topmargin = TOPMARGIN;
                   59106:                break;
                   59107: 
                   59108:        case '9':                       /* left margin */
                   59109:                leftmargin = hpos;
                   59110:                break;
                   59111: 
                   59112:        case '0':                       /* right margin */
                   59113:                rightmargin = hpos;
                   59114:                break;
                   59115: 
                   59116:        case '1':                       /* set horizontal tab */
                   59117:                htabstops[hpos/ohmi] = ON;
                   59118:                break;
                   59119: 
                   59120:        case '8':                       /* clear horizontal tab at hpos */
                   59121:                htabstops[hpos/ohmi] = OFF;
                   59122:                break;
                   59123: 
                   59124:        case '-':                       /* set vertical tab */
                   59125:                vtabstops[vpos/ovmi] = ON;
                   59126:                break;
                   59127: 
                   59128:        case '2':                       /* clear all tabs */
                   59129:                cleartabs();
                   59130:                break;
                   59131: 
                   59132:        case '\014':                    /* set lines per page */
                   59133:                linespp = getc(fp_in);
                   59134:                break;
                   59135: 
                   59136:        case '\037':                    /* set hmi to next byte minus 1 */
                   59137:                hmi = HSCALE * (getc(fp_in) - 1);
                   59138:                break;
                   59139: 
                   59140:        case 'S':                       /* reset hmi to default */
                   59141:                hmi = ohmi;
                   59142:                break;
                   59143: 
                   59144:        case '\011':                    /* move to column given by next byte */
                   59145:                hgoto((getc(fp_in)-1) * ohmi);
                   59146:                break;
                   59147: 
                   59148:        case '?':                       /* do carriage return after line feed */
                   59149:                lfiscr = ON;
                   59150:                break;
                   59151: 
                   59152:        case '!':                       /* don't generate carriage return */
                   59153:                lfiscr = OFF;
                   59154:                break;
                   59155: 
                   59156:        case '5':                       /* forward print mode */
                   59157:                advance = 1;
                   59158:                break;
                   59159: 
                   59160:        case '6':                       /* backward print mode */
                   59161:                advance = -1;
                   59162:                break;
                   59163: 
                   59164:        case '\036':                    /* set vmi to next byte minus 1 */
                   59165:                vmi = VSCALE * (getc(fp_in) - 1);
                   59166:                break;
                   59167: 
                   59168:        case '\013':                    /* move to line given by next byte */
                   59169:                vgoto((getc(fp_in)-1) * ovmi);
                   59170:                break;
                   59171: 
                   59172:        case 'U':                       /* positive half line feed */
                   59173:                vmot(vmi/2);
                   59174:                break;
                   59175: 
                   59176:        case 'D':                       /* negative half line feed */
                   59177:                vmot(-vmi/2);
                   59178:                break;
                   59179: 
                   59180:        case '\012':                    /* negative line feed */
                   59181:                vmot(-vmi);
                   59182:                break;
                   59183: 
                   59184:        case '\015':                    /* clear all margins */
                   59185:                bottommargin = BOTTOMMARGIN;
                   59186:                topmargin = TOPMARGIN;
                   59187:                leftmargin = BOTTOMMARGIN;
                   59188:                rightmargin = RIGHTMARGIN;
                   59189:                break;
                   59190: 
                   59191:        case 'E':                       /* auto underscore - use italic font */
                   59192:                changefont("/Courier-Oblique");
                   59193:                break;
                   59194: 
                   59195:        case 'R':                       /* disable auto underscore */
                   59196:                changefont(fontname);
                   59197:                break;
                   59198: 
                   59199:        case 'O':                       /* bold/shadow printing */
                   59200:        case 'W':
                   59201:                changefont("/Courier-Bold");
                   59202:                shadowprint = ON;
                   59203:                break;
                   59204: 
                   59205:        case '&':                       /* disable bold printing */
                   59206:                changefont(fontname);
                   59207:                shadowprint = OFF;
                   59208:                break;
                   59209: 
                   59210:        case '/':                       /* ignored 2 byte escapes */
                   59211:        case '\\':
                   59212:        case '<':
                   59213:        case '>':
                   59214:        case '%':
                   59215:        case '=':
                   59216:        case '.':
                   59217:        case '4':
                   59218:        case 'A':
                   59219:        case 'B':
                   59220:        case 'M':
                   59221:        case 'N':
                   59222:        case 'P':
                   59223:        case 'Q':
                   59224:        case 'X':
                   59225:        case '\010':
                   59226:                break;
                   59227: 
                   59228:        case ',':                       /* ignored 3 byte escapes */
                   59229:        case '\016':
                   59230:        case '\021':
                   59231:                getc(fp_in);
                   59232:                break;
                   59233: 
                   59234:        case '3':                       /* graphics mode - should quit! */
                   59235:        case '7':
                   59236:        case 'G':
                   59237:        case 'V':
                   59238:        case 'Y':
                   59239:        case 'Z':
                   59240:                error(FATAL, "graphics mode is not implemented");
                   59241:                break;
                   59242: 
                   59243:        default:
                   59244:                error(FATAL, "missing case for escape o%o\n", ch);
                   59245:                break;
                   59246:     }  /* End switch */
                   59247: 
                   59248: }   /* End of escape */
                   59249: 
                   59250: /*****************************************************************************/
                   59251: 
                   59252: vmot(n)
                   59253: 
                   59254:     int                n;                      /* move this far vertically */
                   59255: 
                   59256: {
                   59257: 
                   59258: /*
                   59259:  *
                   59260:  * Move vertically n units from where we are.
                   59261:  *
                   59262:  */
                   59263: 
                   59264:     vpos += n;
                   59265: 
                   59266: }   /* End of vmot */
                   59267: 
                   59268: /*****************************************************************************/
                   59269: 
                   59270: vgoto(n)
                   59271: 
                   59272:     int                n;                      /* new vertical position */
                   59273: 
                   59274: {
                   59275: 
                   59276: /*
                   59277:  *
                   59278:  * Moves to absolute vertical position n.
                   59279:  *
                   59280:  */
                   59281: 
                   59282:     vpos = n;
                   59283: 
                   59284: }   /* End of vgoto */
                   59285: 
                   59286: /*****************************************************************************/
                   59287: 
                   59288: hmot(n)
                   59289: 
                   59290:     int                n;                      /* move this horizontally */
                   59291: 
                   59292: {
                   59293: 
                   59294: /*
                   59295:  *
                   59296:  * Moves horizontally n units from our current position.
                   59297:  *
                   59298:  */
                   59299: 
                   59300:     hpos += n * advance;
                   59301: 
                   59302:     if ( hpos < leftmargin )
                   59303:        hpos = leftmargin;
                   59304: 
                   59305: }   /* End of hmot */
                   59306: 
                   59307: /*****************************************************************************/
                   59308: 
                   59309: hgoto(n)
                   59310: 
                   59311:     int                n;                      /* go to this horizontal position */
                   59312: 
                   59313: {
                   59314: 
                   59315: /*
                   59316:  *
                   59317:  * Moves to absolute horizontal position n.
                   59318:  *
                   59319:  */
                   59320: 
                   59321:     hpos = n;
                   59322: 
                   59323: }   /* End of hgoto */
                   59324: 
                   59325: /*****************************************************************************/
                   59326: 
                   59327: changefont(name)
                   59328: 
                   59329:     char       *name;
                   59330: 
                   59331: {
                   59332: 
                   59333: /*
                   59334:  *
                   59335:  * Changes the current font. Used to get in and out of auto underscore and bold
                   59336:  * printing.
                   59337:  *
                   59338:  */
                   59339: 
                   59340:     endline();
                   59341:     fprintf(fp_out, "%s f\n", name);
                   59342: 
                   59343: }   /* End of changefont */
                   59344: 
                   59345: /*****************************************************************************/
                   59346: 
                   59347: startline()
                   59348: 
                   59349: {
                   59350: 
                   59351: /*
                   59352:  *
                   59353:  * Called whenever we want to be certain we're ready to start pushing characters
                   59354:  * into an open string on the stack. If stringcount is positive we've already
                   59355:  * started, so there's nothing to do. The first string starts in column 1.
                   59356:  *
                   59357:  */
                   59358: 
                   59359:     if ( stringcount < 1 )  {
                   59360:        putc('(', fp_out);
                   59361:        stringstart = lastx = hpos;
                   59362:        lasty = vpos;
                   59363:        lasthmi = hmi;
                   59364:        lastc = -1;
                   59365:        prevx = -1;
                   59366:        stringcount = 1;
                   59367:     }  /* End if */
                   59368: 
                   59369: }   /* End of startline */
                   59370: 
                   59371: /*****************************************************************************/
                   59372: 
                   59373: endline()
                   59374: 
                   59375: {
                   59376: 
                   59377: /*
                   59378:  *
                   59379:  * Generates a call to the PostScript procedure that processes the text on the
                   59380:  * the stack - provided stringcount is positive.
                   59381:  *
                   59382:  */
                   59383: 
                   59384:     if ( stringcount > 0 )
                   59385:        fprintf(fp_out, ")%d %d %d t\n", stringstart, lasty, lasthmi);
                   59386: 
                   59387:     stringcount = 0;
                   59388: 
                   59389: }   /* End of endline */
                   59390: 
                   59391: /*****************************************************************************/
                   59392: 
                   59393: endstring()
                   59394: 
                   59395: {
                   59396: 
                   59397: /*
                   59398:  *
                   59399:  * Takes the string we've been working on and adds it to the output file. Called
                   59400:  * when we need to adjust our horizontal position before starting a new string.
                   59401:  * Also called from endline() when we're done with the current line.
                   59402:  *
                   59403:  */
                   59404: 
                   59405:     if ( stringcount > 0 )  {
                   59406:        fprintf(fp_out, ")%d(", stringstart);
                   59407:        lastx = stringstart = hpos;
                   59408:        stringcount++;
                   59409:     }  /* End if */
                   59410: 
                   59411: }   /* End of endstring */
                   59412: 
                   59413: /*****************************************************************************/
                   59414: 
                   59415: oput(ch)
                   59416: 
                   59417:     int                ch;                     /* next output character */
                   59418: 
                   59419: {
                   59420: 
                   59421: /*
                   59422:  *
                   59423:  * Responsible for adding all printing characters from the input file to the
                   59424:  * open string on top of the stack. The only other characters that end up in
                   59425:  * that string are the quotes required for special characters. Reverse printing
                   59426:  * mode hasn't been tested but it should be close. hpos and lastx should disagree
                   59427:  * each time (except after startline() does something), and that should force a
                   59428:  * call to endstring() for every character.
                   59429:  *
                   59430:  */
                   59431: 
                   59432:     if ( stringcount > 100 )           /* don't put too much on the stack */
                   59433:        endline();
                   59434: 
                   59435:     if ( vpos != lasty )
                   59436:        endline();
                   59437: 
                   59438:     if ( advance == -1 )               /* for reverse printing - move first */
                   59439:        hmot(hmi);
                   59440: 
                   59441:     startline();
                   59442: 
                   59443:     if ( lastc != ch || hpos != prevx )  {
                   59444:        if ( lastx != hpos )
                   59445:            endstring();
                   59446: 
                   59447:        if ( isascii(ch) && isprint(ch) ) {
                   59448:            if ( ch == '\\' || ch == '(' || ch == ')' )
                   59449:                putc('\\', fp_out);
                   59450:            putc(ch, fp_out);
                   59451:        } else fprintf(fp_out, "\\%.3o", ch & 0377);
                   59452: 
                   59453:        lastc = ch;
                   59454:        prevx = hpos;
                   59455:        lastx += lasthmi;
                   59456:     }  /* End if */
                   59457: 
                   59458:     if ( advance != -1 )
                   59459:        hmot(hmi);
                   59460: 
                   59461:     markedpage = TRUE;
                   59462: 
                   59463: }   /* End of oput */
                   59464: 
                   59465: /*****************************************************************************/
                   59466: 
                   59467: redirect(pg)
                   59468: 
                   59469:     int                pg;                     /* next page we're printing */
                   59470: 
                   59471: {
                   59472: 
                   59473:     static FILE        *fp_null = NULL;        /* if output is turned off */
                   59474: 
                   59475: /*
                   59476:  *
                   59477:  * If we're not supposed to print page pg, fp_out will be directed to /dev/null,
                   59478:  * otherwise output goes to stdout.
                   59479:  *
                   59480:  */
                   59481: 
                   59482:     if ( pg >= 0 && in_olist(pg) == ON )
                   59483:        fp_out = stdout;
                   59484:     else if ( (fp_out = fp_null) == NULL )
                   59485:        fp_out = fp_null = fopen("/dev/null", "w");
                   59486: 
                   59487: }   /* End of redirect */
                   59488: 
                   59489: /*****************************************************************************/
                   59490: 
                   59491: 0707070014230643021006440057030057030000011712360522627503500003200000000127post.src/postdaisy/README
                   59492: Diablo 630 to PostScript translator. Not terribly useful, and much has
                   59493: been omitted.
                   59494: 
                   59495: 0707070014230637761006400057030057030000011712300522633075400003700000007451post.src/postdaisy/postdaisy.1.ds dQ /usr/lib/postscript
                   59496: .TH POSTDAISY 1 "DWB 3.2"
                   59497: .SH NAME
                   59498: .B postdaisy
                   59499: \- PostScript translator for Diablo 630 files
                   59500: .SH SYNOPSIS
                   59501: \*(mBpostdaisy\f1
                   59502: .OP "" options []
                   59503: .OP "" files []
                   59504: .SH DESCRIPTION
                   59505: .B postdaisy
                   59506: translates Diablo 630 daisy-wheel
                   59507: .I files
                   59508: into PostScript and writes the results on the
                   59509: standard output.
                   59510: If no
                   59511: .I files
                   59512: are specified, or if
                   59513: .OP \-
                   59514: is one of the input
                   59515: .IR files ,
                   59516: the standard input is read.
                   59517: The following
                   59518: .I options
                   59519: are understood:
                   59520: .TP 0.75i
                   59521: .OP \-c num
                   59522: Print
                   59523: .I num
                   59524: copies of each page.
                   59525: By default only one copy is printed.
                   59526: .TP
                   59527: .OP \-f name
                   59528: Print
                   59529: .I files
                   59530: using font
                   59531: .IR name .
                   59532: Any PostScript font can be used,
                   59533: although the best results will only be
                   59534: obtained with constant width fonts.
                   59535: The default font is Courier.
                   59536: .TP
                   59537: .OP \-h num
                   59538: Set the initial horizontal motion index to
                   59539: .IR num .
                   59540: Determines the character advance and the default
                   59541: point size, unless the
                   59542: .OP \-s
                   59543: option is used.
                   59544: The default is 12.
                   59545: .TP
                   59546: .OP \-m num
                   59547: Magnify each logical page by the factor
                   59548: .IR num .
                   59549: Pages are scaled uniformly about the origin,
                   59550: which is located near the upper left corner of
                   59551: each page.
                   59552: The default magnification is 1.0.
                   59553: .TP
                   59554: .OP \-n num
                   59555: Print
                   59556: .I num
                   59557: logical pages on each piece of paper,
                   59558: where
                   59559: .I num
                   59560: can be any positive integer.
                   59561: By default
                   59562: .I num
                   59563: is set to 1.
                   59564: .TP
                   59565: .OP \-o list
                   59566: Print pages whose numbers are given in the comma-separated
                   59567: .IR list .
                   59568: The list contains single numbers
                   59569: .I N
                   59570: and ranges
                   59571: .IR N1\-\|N2 .
                   59572: A missing
                   59573: .I N1
                   59574: means the lowest numbered page, a missing
                   59575: .I N2
                   59576: means the highest.
                   59577: .TP
                   59578: .OP \-p mode
                   59579: Print
                   59580: .I files
                   59581: in either \*(mBportrait\fP or \*(mBlandscape\fP
                   59582: .IR mode .
                   59583: Only the first character of
                   59584: .I mode
                   59585: is significant.
                   59586: The default
                   59587: .I mode
                   59588: is \*(mBportrait\fP.
                   59589: .TP
                   59590: .OP \-r num
                   59591: Selects carriage return and line feed behavior.
                   59592: If
                   59593: .I num
                   59594: is 1 a line feed generates a carriage return.
                   59595: If
                   59596: .I num
                   59597: is 2 a carriage return generates a line feed.
                   59598: Setting
                   59599: .I num
                   59600: to 3 enables both modes.
                   59601: .TP
                   59602: .OP \-s num
                   59603: Use point size
                   59604: .I num
                   59605: instead of the default value set by the
                   59606: initial horizontal motion index.
                   59607: .TP
                   59608: .OP \-v num
                   59609: Set the initial vertical motion index to
                   59610: .IR num .
                   59611: The default is 8.
                   59612: .TP
                   59613: .OP \-x num
                   59614: Translate the origin
                   59615: .I num
                   59616: inches along the positive x axis.
                   59617: The default
                   59618: coordinate system has the origin fixed near the
                   59619: upper left corner of the page, with positive
                   59620: x to the right and positive y down the page.
                   59621: Positive
                   59622: .I num
                   59623: moves everything right.
                   59624: The default offset is 0.25 inches.
                   59625: .TP
                   59626: .OP \-y num
                   59627: Translate the origin
                   59628: .I num
                   59629: inches along the positive y axis.
                   59630: Positive
                   59631: .I num
                   59632: moves text down the page.
                   59633: The default offset is 0.25 inches.
                   59634: .TP
                   59635: .OP \-E name
                   59636: Set the character encoding for text fonts to
                   59637: .IR name .
                   59638: Requesting
                   59639: .I name
                   59640: means include file
                   59641: .MI \*(dQ/ name .enc \f1.
                   59642: A nonexistent encoding file is silently ignored.
                   59643: The default selects file
                   59644: .MR \*(dQ/Default.enc .
                   59645: .TP
                   59646: .OP \-L file
                   59647: Use
                   59648: .I file
                   59649: as the PostScript prologue.
                   59650: .br
                   59651: The default is
                   59652: .MR \*(dQ/postdaisy.ps .
                   59653: .PP
                   59654: Three options allow insertion of arbitrary PostScript
                   59655: at controlled points in the translation process:
                   59656: .TP 0.75i
                   59657: .OP \-C file
                   59658: Copy
                   59659: .I file
                   59660: to the output file;
                   59661: .I file
                   59662: must contain legitimate PostScript.
                   59663: .TP
                   59664: .OP \-P string
                   59665: Include
                   59666: .I string
                   59667: in output file;
                   59668: .I string
                   59669: must be legitimate PostScript.
                   59670: .TP
                   59671: .OP \-R action
                   59672: Requests special
                   59673: .I action
                   59674: (e.g.,
                   59675: .MR manualfeed )
                   59676: on a per page or global basis.
                   59677: The
                   59678: .I action
                   59679: string can be given as
                   59680: .IR request ,
                   59681: .IM request : page\f1\|,
                   59682: or
                   59683: .IM request : page : file\f1\|.
                   59684: If
                   59685: .I page
                   59686: is omitted or given as 0, the request
                   59687: applies to all pages.
                   59688: If
                   59689: .I file
                   59690: is omitted, the request
                   59691: lookup is done in
                   59692: .MR \*(dQ/ps.requests .
                   59693: .SH DIAGNOSTICS
                   59694: A 0 exit status is returned if
                   59695: .I files
                   59696: were successfully processed.
                   59697: .SH FILES
                   59698: .MW \*(dQ/postdaisy.ps
                   59699: .br
                   59700: .MW \*(dQ/forms.ps
                   59701: .br
                   59702: .MW \*(dQ/ps.requests
                   59703: .SH SEE ALSO
                   59704: .BR dpost (1),
                   59705: .BR postdmd (1),
                   59706: .BR postio (1),
                   59707: .BR postmd (1),
                   59708: .BR postprint (1),
                   59709: .BR postreverse (1),
                   59710: .BR posttek (1),
                   59711: .BR psencoding (1)
                   59712: 0707070014230643041006440057030057030000011712560522627503500004000000003367post.src/postdaisy/postdaisy.ps%
                   59713: % Version 3.3.2 prologue for Diablo 1640 files.
                   59714: %
                   59715: 
                   59716: /#copies 1 store
                   59717: /aspectratio 1 def
                   59718: /font /Courier def
                   59719: /formsperpage 1 def
                   59720: /hmi 12 def
                   59721: /landscape false def
                   59722: /magnification 1 def
                   59723: /margin 10 def
                   59724: /orientation 0 def
                   59725: /resolution 240 def
                   59726: /rotation 1 def
                   59727: /xoffset .25 def
                   59728: /yoffset .25 def
                   59729: 
                   59730: /roundpage true def
                   59731: /useclippath true def
                   59732: /pagebbox [0 0 612 792] def
                   59733: 
                   59734: /inch {72 mul} bind def
                   59735: /min {2 copy gt {exch} if pop} bind def
                   59736: 
                   59737: /ashow {ashow} bind def                % so later references don't bind
                   59738: /stringwidth {stringwidth} bind def
                   59739: 
                   59740: /setup {
                   59741:        counttomark 2 idiv {def} repeat pop
                   59742: 
                   59743:        landscape {/orientation 90 orientation add def} if
                   59744:        /scaling 72 resolution div def
                   59745:        currentdict /pointsize known not {/pointsize hmi def} if
                   59746:        font findfont pointsize scaling div scalefont setfont
                   59747:        /charwidth (M) stringwidth pop def
                   59748: 
                   59749:        pagedimensions
                   59750:        xcenter ycenter translate
                   59751:        orientation rotation mul rotate
                   59752:        width 2 div neg height 2 div translate
                   59753:        xoffset inch yoffset inch neg translate
                   59754:        margin 2 div dup neg translate
                   59755:        magnification dup aspectratio mul scale
                   59756:        height width div 1 min dup scale
                   59757:        scaling dup scale
                   59758: } def
                   59759: 
                   59760: /pagedimensions {
                   59761:        useclippath userdict /gotpagebbox known not and {
                   59762:                /pagebbox [clippath pathbbox newpath] def
                   59763:                roundpage currentdict /roundpagebbox known and {roundpagebbox} if
                   59764:        } if
                   59765:        pagebbox aload pop
                   59766:        4 -1 roll exch 4 1 roll 4 copy
                   59767:        landscape {4 2 roll} if
                   59768:        sub /width exch def
                   59769:        sub /height exch def
                   59770:        add 2 div /xcenter exch def
                   59771:        add 2 div /ycenter exch def
                   59772:        userdict /gotpagebbox true put
                   59773: } def
                   59774: 
                   59775: /pagesetup {/page exch def 0 0 moveto} bind def
                   59776: 
                   59777: /t {
                   59778:        charwidth sub /advance exch def
                   59779:        neg /y exch def
                   59780:        counttomark 2 idiv {y moveto advance 0 3 -1 roll ashow} repeat
                   59781: } bind def
                   59782: 
                   59783: /f {findfont pointsize scaling div scalefont setfont} bind def
                   59784: 
                   59785: /done {/lastpage where {pop lastpage} if} def
                   59786: 0707070014230643051006440057030057030000011713700522627503500004000000067255post.src/postdaisy/Opostdaisy.c/*
                   59787:  *
                   59788:  * postdaisy - PostScript translator for Diablo 1640 files.
                   59789:  *
                   59790:  * A program that translates Diablo 1640 files into PostScript. Absolutely nothing
                   59791:  * is guaranteed. Quite a few things haven't been implemented, and what's been
                   59792:  * done isn't well tested. Most of the documentation used to write this program
                   59793:  * was taken from the 'Diablo Emulator' section of a recent Imagen manual.
                   59794:  *
                   59795:  * Some of document comments that are generated may not be right. Most of the test
                   59796:  * files I used produced a trailing blank page. I've put a check in formfeed() that
                   59797:  * won't print the last page if it doesn't contain any text, but PAGES comments may
                   59798:  * not be right. The DOCUMENTFONTS comment will also be wrong if auto underline or
                   59799:  * bold printing have been turned on by escape commands.
                   59800:  *
                   59801:  * The brute force approach used to implement horizontal and vertical tabs leaves
                   59802:  * much to be desired, and may not work for very small initial hmi and vmi values.
                   59803:  * At the very least I should have used malloc() to get space for the two tabstop
                   59804:  * arrays after hmi and vmi are known!
                   59805:  *
                   59806:  * Reverse printing mode hasn't been tested at all, but what's here should be
                   59807:  * close even though it's not efficient.
                   59808:  *
                   59809:  * The PostScript prologue is copied from *prologue before any of the input files
                   59810:  * are translated. The program expects that the following PostScript procedures
                   59811:  * are defined in that file:
                   59812:  *
                   59813:  *     setup
                   59814:  *
                   59815:  *       mark ... setup -
                   59816:  *
                   59817:  *         Handles special initialization stuff that depends on how this program
                   59818:  *         was called. Expects to find a mark followed by key/value pairs on the
                   59819:  *         stack. The def operator is applied to each pair up to the mark, then
                   59820:  *         the default state is set up.
                   59821:  *
                   59822:  *     pagesetup
                   59823:  *
                   59824:  *       page pagesetup -
                   59825:  *
                   59826:  *         Does whatever is needed to set things up for the next page. Expects to
                   59827:  *         find the current page number on the stack.
                   59828:  *
                   59829:  *     t
                   59830:  *
                   59831:  *       mark str1 x1 str2 x2 ... strn xn y hmi t mark
                   59832:  *
                   59833:  *         Handles all the text on the stack. Characters in the strings are
                   59834:  *         printed using hmi as the character advance, and all strings are at
                   59835:  *         vertical position y. Each string is begins at the horizontal position
                   59836:  *         that preceeds it.
                   59837:  *
                   59838:  *     f
                   59839:  *
                   59840:  *       font f -
                   59841:  *
                   59842:  *         Use font f, where f is the full PostScript font name. Only used when
                   59843:  *         we switch to auto underline (Courier-Italic) or bold (Courier-Bold)
                   59844:  *         printing.
                   59845:  *
                   59846:  *     done
                   59847:  *
                   59848:  *       done
                   59849:  *
                   59850:  *         Makes sure the last page is printed. Only needed when we're printing
                   59851:  *         more than one page on each sheet of paper.
                   59852:  *
                   59853:  * Many default values, like the magnification and orientation, are defined in 
                   59854:  * the prologue, which is where they belong. If they're changed (by options), an
                   59855:  * appropriate definition is made after the prologue is added to the output file.
                   59856:  * The -P option passes arbitrary PostScript through to the output file. Among
                   59857:  * other things it can be used to set (or change) values that can't be accessed by
                   59858:  * other options.
                   59859:  *
                   59860:  */
                   59861: 
                   59862: #include <stdio.h>
                   59863: #include <signal.h>
                   59864: #include <ctype.h>
                   59865: #include <fcntl.h>
                   59866: 
                   59867: #include "comments.h"                  /* PostScript file structuring comments */
                   59868: #include "gen.h"                       /* general purpose definitions */
                   59869: #include "path.h"                      /* for the prologue */
                   59870: #include "ext.h"                       /* external variable declarations */
                   59871: #include "postdaisy.h"                 /* a few special definitions */
                   59872: 
                   59873: char   *optnames = "a:c:f:h:l:m:n:o:p:r:s:v:x:y:A:C:E:J:L:P:DI";
                   59874: 
                   59875: char   *prologue = POSTDAISY;          /* default PostScript prologue */
                   59876: char   *formfile = FORMFILE;           /* stuff for multiple pages per sheet */
                   59877: 
                   59878: int    formsperpage = 1;               /* page images on each piece of paper */
                   59879: int    copies = 1;                     /* and this many copies of each sheet */
                   59880: 
                   59881: char   htabstops[COLUMNS];             /* horizontal */
                   59882: char   vtabstops[ROWS];                /* and vertical tabs */
                   59883: 
                   59884: int    res = RES;                      /* input file resolution - sort of */
                   59885: 
                   59886: int    hmi = HMI;                      /* horizontal motion index - 1/120 inch */
                   59887: int    vmi = VMI;                      /* vertical motion index - 1/48 inch */
                   59888: int    ohmi = HMI;                     /* original hmi */
                   59889: int    ovmi = VMI;                     /* and vmi - for tabs and char size */
                   59890: 
                   59891: int    hpos = 0;                       /* current horizontal */
                   59892: int    vpos = 0;                       /* and vertical position */
                   59893: 
                   59894: int    lastx = -1;                     /* printer's last horizontal */
                   59895: int    lasty = -1;                     /* and vertical position */
                   59896: int    lasthmi = -1;                   /* hmi for current text strings */
                   59897: 
                   59898: int    lastc = -1;                     /* last printed character */
                   59899: int    prevx = -1;                     /* at this position */
                   59900: 
                   59901: int    leftmargin = LEFTMARGIN;        /* page margins */
                   59902: int    rightmargin = RIGHTMARGIN;
                   59903: int    topmargin = TOPMARGIN;
                   59904: int    bottommargin = BOTTOMMARGIN;
                   59905: 
                   59906: int    stringcount = 0;                /* number of strings on the stack */
                   59907: int    stringstart = 1;                /* column where current one starts */
                   59908: int    advance = 1;                    /* -1 if in backward print mode */
                   59909: 
                   59910: int    lfiscr = OFF;                   /* line feed implies carriage return */
                   59911: int    crislf = OFF;                   /* carriage return implies line feed */
                   59912: 
                   59913: int    linespp = 0;                    /* lines per page if it's positive */
                   59914: int    markedpage = FALSE;             /* helps prevent trailing blank page */
                   59915: int    page = 0;                       /* page we're working on */
                   59916: int    printed = 0;                    /* printed this many pages */
                   59917: 
                   59918: Fontmap        fontmap[] = FONTMAP;            /* for translating font names */
                   59919: char   *fontname = "Courier";          /* use this PostScript font */
                   59920: int    shadowprint = OFF;              /* automatic bold printing if ON */
                   59921: 
                   59922: FILE   *fp_in;                         /* read from this file */
                   59923: FILE   *fp_out = stdout;               /* and write stuff here */
                   59924: FILE   *fp_acct = NULL;                /* for accounting data */
                   59925: 
                   59926: /*****************************************************************************/
                   59927: 
                   59928: main(agc, agv)
                   59929: 
                   59930:     int                agc;
                   59931:     char       *agv[];
                   59932: 
                   59933: {
                   59934: 
                   59935: /*
                   59936:  *
                   59937:  * A simple program that translates Diablo 1640 files into PostScript. Nothing
                   59938:  * is guaranteed - the program not well tested and doesn't implement everything.
                   59939:  *
                   59940:  */
                   59941: 
                   59942:     argc = agc;                                /* other routines may want them */
                   59943:     argv = agv;
                   59944: 
                   59945:     prog_name = argv[0];               /* really just for error messages */
                   59946: 
                   59947:     init_signals();                    /* sets up interrupt handling */
                   59948:     header();                          /* PostScript header comments */
                   59949:     options();                         /* handle the command line options */
                   59950:     setup();                           /* for PostScript */
                   59951:     arguments();                       /* followed by each input file */
                   59952:     done();                            /* print the last page etc. */
                   59953:     account();                         /* job accounting data */
                   59954: 
                   59955:     exit(x_stat);                      /* not much could be wrong */
                   59956: 
                   59957: }   /* End of main */
                   59958: 
                   59959: /*****************************************************************************/
                   59960: 
                   59961: init_signals()
                   59962: 
                   59963: {
                   59964: 
                   59965:     int                interrupt();            /* signal handler */
                   59966: 
                   59967: /*
                   59968:  *
                   59969:  * Makes sure we handle interrupts.
                   59970:  *
                   59971:  */
                   59972: 
                   59973:     if ( signal(SIGINT, interrupt) == SIG_IGN )  {
                   59974:        signal(SIGINT, SIG_IGN);
                   59975:        signal(SIGQUIT, SIG_IGN);
                   59976:        signal(SIGHUP, SIG_IGN);
                   59977:     } else {
                   59978:        signal(SIGHUP, interrupt);
                   59979:        signal(SIGQUIT, interrupt);
                   59980:     }   /* End else */
                   59981: 
                   59982:     signal(SIGTERM, interrupt);
                   59983: 
                   59984: }   /* End of init_signals */
                   59985: 
                   59986: /*****************************************************************************/
                   59987: 
                   59988: header()
                   59989: 
                   59990: {
                   59991: 
                   59992:     int                ch;                     /* return value from getopt() */
                   59993:     int                old_optind = optind;    /* for restoring optind - should be 1 */
                   59994: 
                   59995: /*
                   59996:  *
                   59997:  * Scans the option list looking for things, like the prologue file, that we need
                   59998:  * right away but could be changed from the default. Doing things this way is an
                   59999:  * attempt to conform to Adobe's latest file structuring conventions. In particular
                   60000:  * they now say there should be nothing executed in the prologue, and they have
                   60001:  * added two new comments that delimit global initialization calls. Once we know
                   60002:  * where things really are we write out the job header, follow it by the prologue,
                   60003:  * and then add the ENDPROLOG and BEGINSETUP comments.
                   60004:  *
                   60005:  */
                   60006: 
                   60007:     while ( (ch = getopt(argc, argv, optnames)) != EOF )
                   60008:        if ( ch == 'L' )
                   60009:            prologue = optarg;
                   60010:        else if ( ch == '?' )
                   60011:            error(FATAL, "");
                   60012: 
                   60013:     optind = old_optind;               /* get ready for option scanning */
                   60014: 
                   60015:     fprintf(stdout, "%s", CONFORMING);
                   60016:     fprintf(stdout, "%s %s\n", VERSION, PROGRAMVERSION);
                   60017:     fprintf(stdout, "%s %s\n", DOCUMENTFONTS, ATEND);
                   60018:     fprintf(stdout, "%s %s\n", PAGES, ATEND);
                   60019:     fprintf(stdout, "%s", ENDCOMMENTS);
                   60020: 
                   60021:     if ( cat(prologue) == FALSE )
                   60022:        error(FATAL, "can't read %s", prologue);
                   60023: 
                   60024:     if ( DOROUND )
                   60025:        cat(ROUNDPAGE);
                   60026: 
                   60027:     fprintf(stdout, "%s", ENDPROLOG);
                   60028:     fprintf(stdout, "%s", BEGINSETUP);
                   60029:     fprintf(stdout, "mark\n");
                   60030: 
                   60031: }   /* End of header */
                   60032: 
                   60033: /*****************************************************************************/
                   60034: 
                   60035: options()
                   60036: 
                   60037: {
                   60038: 
                   60039:     int                ch;                     /* return value from getopt() */
                   60040:     int                n;                      /* for CR and LF modes */
                   60041: 
                   60042: /*
                   60043:  *
                   60044:  * Reads and processes the command line options. Added the -P option so arbitrary
                   60045:  * PostScript code can be passed through. Expect it could be useful for changing
                   60046:  * definitions in the prologue for which options have not been defined.
                   60047:  *
                   60048:  * Although any PostScript font can be used, things will only work for constant
                   60049:  * width fonts.
                   60050:  *
                   60051:  */
                   60052: 
                   60053:     while ( (ch = getopt(argc, argv, optnames)) != EOF )  {
                   60054:        switch ( ch )  {
                   60055:            case 'a':                   /* aspect ratio */
                   60056:                    fprintf(stdout, "/aspectratio %s def\n", optarg);
                   60057:                    break;
                   60058: 
                   60059:            case 'c':                   /* copies */
                   60060:                    copies = atoi(optarg);
                   60061:                    fprintf(stdout, "/#copies %s store\n", optarg);
                   60062:                    break;
                   60063: 
                   60064:            case 'f':                   /* use this PostScript font */
                   60065:                    fontname = get_font(optarg);
                   60066:                    fprintf(stdout, "/font /%s def\n", fontname);
                   60067:                    break;
                   60068: 
                   60069:            case 'h':                   /* default character spacing */
                   60070:                    ohmi = hmi = atoi(optarg) * HSCALE;
                   60071:                    fprintf(stdout, "/hmi %s def\n", optarg);
                   60072:                    break;
                   60073: 
                   60074:            case 'l':                   /* lines per page */
                   60075:                    linespp = atoi(optarg);
                   60076:                    break;
                   60077: 
                   60078:            case 'm':                   /* magnification */
                   60079:                    fprintf(stdout, "/magnification %s def\n", optarg);
                   60080:                    break;
                   60081: 
                   60082:            case 'n':                   /* forms per page */
                   60083:                    formsperpage = atoi(optarg);
                   60084:                    fprintf(stdout, "%s %s\n", FORMSPERPAGE, optarg);
                   60085:                    fprintf(stdout, "/formsperpage %s def\n", optarg);
                   60086:                    break;
                   60087: 
                   60088:            case 'o':                   /* output page list */
                   60089:                    out_list(optarg);
                   60090:                    break;
                   60091: 
                   60092:            case 'p':                   /* landscape or portrait mode */
                   60093:                    if ( *optarg == 'l' )
                   60094:                        fprintf(stdout, "/landscape true def\n");
                   60095:                    else fprintf(stdout, "/landscape false def\n");
                   60096:                    break;
                   60097: 
                   60098:            case 'r':                   /* set CR and LF modes */
                   60099:                    n = atoi(optarg);
                   60100:                    if ( n & 01 )
                   60101:                        lfiscr = ON;
                   60102:                    else lfiscr = OFF;
                   60103:                    if ( n & 02 )
                   60104:                        crislf = ON;
                   60105:                    else crislf = OFF;
                   60106:                    break;
                   60107: 
                   60108:            case 's':                   /* point size */
                   60109:                    fprintf(stdout, "/pointsize %s def\n", optarg);
                   60110:                    break;
                   60111: 
                   60112:            case 'v':                   /* default line spacing */
                   60113:                    ovmi = vmi = atoi(optarg) * VSCALE;
                   60114:                    break;
                   60115: 
                   60116:            case 'x':                   /* shift things horizontally */
                   60117:                    fprintf(stdout, "/xoffset %s def\n", optarg);
                   60118:                    break;
                   60119: 
                   60120:            case 'y':                   /* and vertically on the page */
                   60121:                    fprintf(stdout, "/yoffset %s def\n", optarg);
                   60122:                    break;
                   60123: 
                   60124:            case 'A':                   /* force job accounting */
                   60125:            case 'J':
                   60126:                    if ( (fp_acct = fopen(optarg, "a")) == NULL )
                   60127:                        error(FATAL, "can't open accounting file %s", optarg);
                   60128:                    break;
                   60129: 
                   60130:            case 'C':                   /* copy file straight to output */
                   60131:                    if ( cat(optarg) == FALSE )
                   60132:                        error(FATAL, "can't read %s", optarg);
                   60133:                    break;
                   60134: 
                   60135:            case 'E':                   /* text font encoding */
                   60136:                    fontencoding = optarg;
                   60137:                    break;
                   60138: 
                   60139:            case 'L':                   /* PostScript prologue file */
                   60140:                    prologue = optarg;
                   60141:                    break;
                   60142: 
                   60143:            case 'P':                   /* PostScript pass through */
                   60144:                    fprintf(stdout, "%s\n", optarg);
                   60145:                    break;
                   60146: 
                   60147:            case 'R':                   /* special global or page level request */
                   60148:                    saverequest(optarg);
                   60149:                    break;
                   60150: 
                   60151:            case 'D':                   /* debug flag */
                   60152:                    debug = ON;
                   60153:                    break;
                   60154: 
                   60155:            case 'I':                   /* ignore FATAL errors */
                   60156:                    ignore = ON;
                   60157:                    break;
                   60158: 
                   60159:            case '?':                   /* don't understand the option */
                   60160:                    error(FATAL, "");
                   60161:                    break;
                   60162: 
                   60163:            default:                    /* don't know what to do for ch */
                   60164:                    error(FATAL, "missing case for option %c\n", ch);
                   60165:                    break;
                   60166:        }   /* End switch */
                   60167:     }   /* End while */
                   60168: 
                   60169:     argc -= optind;                    /* get ready for non-option args */
                   60170:     argv += optind;
                   60171: 
                   60172: }   /* End of options */
                   60173: 
                   60174: /*****************************************************************************/
                   60175: 
                   60176: char *get_font(name)
                   60177: 
                   60178:     char       *name;                  /* name the user asked for */
                   60179: 
                   60180: {
                   60181: 
                   60182:     int                i;                      /* for looking through fontmap[] */
                   60183: 
                   60184: /*
                   60185:  *
                   60186:  * Called from options() to map a user's font name into a legal PostScript name.
                   60187:  * If the lookup fails *name is returned to the caller. That should let you choose
                   60188:  * any PostScript font, although things will only work well for constant width
                   60189:  * fonts.
                   60190:  *
                   60191:  */
                   60192: 
                   60193:     for ( i = 0; fontmap[i].name != NULL; i++ )
                   60194:        if ( strcmp(name, fontmap[i].name) == 0 )
                   60195:            return(fontmap[i].val);
                   60196: 
                   60197:     return(name);
                   60198: 
                   60199: }   /* End of get_font */
                   60200: 
                   60201: /*****************************************************************************/
                   60202: 
                   60203: setup()
                   60204: 
                   60205: {
                   60206: 
                   60207: /*
                   60208:  *
                   60209:  * Handles things that must be done after the options are read but before the
                   60210:  * input files are processed.
                   60211:  *
                   60212:  */
                   60213: 
                   60214:     writerequest(0, stdout);           /* global requests eg. manual feed */
                   60215:     setencoding(fontencoding);
                   60216:     fprintf(stdout, "setup\n");
                   60217: 
                   60218:     if ( formsperpage > 1 )  {
                   60219:        if ( cat(formfile) == FALSE )
                   60220:            error(FATAL, "can't read %s", formfile);
                   60221:        fprintf(stdout, "%d setupforms\n", formsperpage);
                   60222:     }  /* End if */
                   60223: 
                   60224:     fprintf(stdout, "%s", ENDSETUP);
                   60225: 
                   60226: }   /* End of setup */
                   60227: 
                   60228: /*****************************************************************************/
                   60229: 
                   60230: arguments()
                   60231: 
                   60232: {
                   60233: 
                   60234: /*
                   60235:  *
                   60236:  * Makes sure all the non-option command line arguments are processed. If we get
                   60237:  * here and there aren't any arguments left, or if '-' is one of the input files
                   60238:  * we'll process stdin.
                   60239:  *
                   60240:  */
                   60241: 
                   60242:     fp_in = stdin;
                   60243: 
                   60244:     if ( argc < 1 )
                   60245:        text();
                   60246:     else {                             /* at least one argument is left */
                   60247:        while ( argc > 0 )  {
                   60248:            if ( strcmp(*argv, "-") == 0 )
                   60249:                fp_in = stdin;
                   60250:            else if ( (fp_in = fopen(*argv, "r")) == NULL )
                   60251:                error(FATAL, "can't open %s", *argv);
                   60252:            text();
                   60253:            if ( fp_in != stdin )
                   60254:                fclose(fp_in);
                   60255:            argc--;
                   60256:            argv++;
                   60257:        }   /* End while */
                   60258:     }   /* End else */
                   60259: 
                   60260: }   /* End of arguments */
                   60261: 
                   60262: /*****************************************************************************/
                   60263: 
                   60264: done()
                   60265: 
                   60266: {
                   60267: 
                   60268: /*
                   60269:  *
                   60270:  * Finished with all the input files, so mark the end of the pages, make sure the
                   60271:  * last page is printed, and restore the initial environment.
                   60272:  *
                   60273:  */
                   60274: 
                   60275:     fprintf(stdout, "%s", TRAILER);
                   60276:     fprintf(stdout, "done\n");
                   60277:     fprintf(stdout, "%s %s\n", DOCUMENTFONTS, fontname);
                   60278:     fprintf(stdout, "%s %d\n", PAGES, printed);
                   60279: 
                   60280: }   /* End of done */
                   60281: 
                   60282: /*****************************************************************************/
                   60283: 
                   60284: account()
                   60285: 
                   60286: {
                   60287: 
                   60288: /*
                   60289:  *
                   60290:  * Writes an accounting record to *fp_acct provided it's not NULL. Accounting
                   60291:  * is requested using the -A or -J options.
                   60292:  *
                   60293:  */
                   60294: 
                   60295:     if ( fp_acct != NULL )
                   60296:        fprintf(fp_acct, " print %d\n copies %d\n", printed, copies);
                   60297: 
                   60298: }   /* End of account */
                   60299: 
                   60300: /*****************************************************************************/
                   60301: 
                   60302: text()
                   60303: 
                   60304: {
                   60305: 
                   60306:     int                ch;                     /* next input character */
                   60307: 
                   60308: /*
                   60309:  *
                   60310:  * Translates the next input file into PostScript. The redirect(-1) call forces
                   60311:  * the initial output to go to /dev/null - so the stuff formfeed() does at the
                   60312:  * end of each page doesn't go to stdout.
                   60313:  *
                   60314:  */
                   60315: 
                   60316:     redirect(-1);                      /* get ready for the first page */
                   60317:     formfeed();                                /* force PAGE comment etc. */
                   60318:     inittabs();
                   60319: 
                   60320:     while ( (ch = getc(fp_in)) != EOF )
                   60321:        switch ( ch )  {
                   60322:            case '\010':                /* backspace */
                   60323:                    backspace();
                   60324:                    break;
                   60325: 
                   60326:            case '\011':                /* horizontal tab */
                   60327:                    htab();
                   60328:                    break;
                   60329: 
                   60330:            case '\012':                /* new line */
                   60331:                    linefeed();
                   60332:                    break;
                   60333: 
                   60334:            case '\013':                /* vertical tab */
                   60335:                    vtab();
                   60336:                    break;
                   60337: 
                   60338:            case '\014':                /* form feed */
                   60339:                    formfeed();
                   60340:                    break;
                   60341: 
                   60342:            case '\015':                /* carriage return */
                   60343:                    carriage();
                   60344:                    break;
                   60345: 
                   60346:            case '\016':                /* extended character set - SO */
                   60347:                    break;
                   60348: 
                   60349:            case '\017':                /* extended character set - SI */
                   60350:                    break;
                   60351: 
                   60352:            case '\031':                /* next char from supplementary set */
                   60353:                    break;
                   60354: 
                   60355:            case '\033':                /* 2 or 3 byte escape sequence */
                   60356:                    escape();
                   60357:                    break;
                   60358: 
                   60359:            default:
                   60360:                    if ( isascii(ch) && isprint(ch) )
                   60361:                        oput(ch);
                   60362:                    break;
                   60363:        }   /* End switch */
                   60364: 
                   60365:     formfeed();                                /* next file starts on a new page? */
                   60366: 
                   60367: }   /* End of text */
                   60368: 
                   60369: /*****************************************************************************/
                   60370: 
                   60371: inittabs()
                   60372: 
                   60373: {
                   60374: 
                   60375:     int                i;                      /* loop index */
                   60376: 
                   60377: /*
                   60378:  *
                   60379:  * Initializes the horizontal and vertical tab arrays. The way tabs are handled is
                   60380:  * quite inefficient and may not work for all initial hmi or vmi values.
                   60381:  *
                   60382:  */
                   60383: 
                   60384:     for ( i = 0; i < COLUMNS; i++ )
                   60385:        htabstops[i] = ((i % 8) == 0) ? ON : OFF;
                   60386: 
                   60387:     for ( i = 0; i < ROWS; i++ )
                   60388:        vtabstops[i] = ((i * ovmi) > BOTTOMMARGIN) ? ON : OFF;
                   60389: 
                   60390: }   /* End of inittabs */
                   60391: 
                   60392: /*****************************************************************************/
                   60393: 
                   60394: cleartabs()
                   60395: 
                   60396: {
                   60397: 
                   60398:     int                i;                      /* loop index */
                   60399: 
                   60400: /*
                   60401:  *
                   60402:  * Clears all horizontal and vertical tab stops.
                   60403:  *
                   60404:  */
                   60405: 
                   60406:     for ( i = 0; i < ROWS; i++ )
                   60407:        htabstops[i] = OFF;
                   60408: 
                   60409:     for ( i = 0; i < COLUMNS; i++ )
                   60410:        vtabstops[i] = OFF;
                   60411: 
                   60412: }   /* End of cleartabs */
                   60413: 
                   60414: /*****************************************************************************/
                   60415: 
                   60416: formfeed()
                   60417: 
                   60418: {
                   60419: 
                   60420: /*
                   60421:  *
                   60422:  * Called whenever we've finished with the last page and want to get ready for the
                   60423:  * next one. Also used at the beginning and end of each input file, so we have to
                   60424:  * be careful about what's done. I've added a simple test before the showpage that
                   60425:  * should eliminate the extra blank page that was put out at the end of many jobs,
                   60426:  * but the PAGES comments may be wrong.
                   60427:  *
                   60428:  */
                   60429: 
                   60430:     if ( fp_out == stdout )            /* count the last page */
                   60431:        printed++;
                   60432: 
                   60433:     endline();                         /* print the last line */
                   60434: 
                   60435:     fprintf(fp_out, "cleartomark\n");
                   60436:     if ( feof(fp_in) == 0 || markedpage == TRUE )
                   60437:        fprintf(fp_out, "showpage\n");
                   60438:     fprintf(fp_out, "saveobj restore\n");
                   60439:     fprintf(fp_out, "%s %d %d\n", ENDPAGE, page, printed);
                   60440: 
                   60441:     if ( ungetc(getc(fp_in), fp_in) == EOF )
                   60442:        redirect(-1);
                   60443:     else redirect(++page);
                   60444: 
                   60445:     fprintf(fp_out, "%s %d %d\n", PAGE, page, printed+1);
                   60446:     fprintf(fp_out, "/saveobj save def\n");
                   60447:     fprintf(fp_out, "mark\n");
                   60448:     writerequest(printed+1, fp_out);
                   60449:     fprintf(fp_out, "%d pagesetup\n", printed+1);
                   60450: 
                   60451:     vgoto(topmargin);
                   60452:     hgoto(leftmargin);
                   60453: 
                   60454:     markedpage = FALSE;
                   60455: 
                   60456: }   /* End of formfeed */
                   60457: 
                   60458: /*****************************************************************************/
                   60459: 
                   60460: linefeed()
                   60461: 
                   60462: {
                   60463: 
                   60464:     int                line = 0;               /* current line - based on ovmi */
                   60465: 
                   60466: /*
                   60467:  *
                   60468:  * Adjust our current vertical position. If we've passed the bottom of the page
                   60469:  * or exceeded the number of lines per page, print it and go to the upper left
                   60470:  * corner of the next page. This routine is also called from carriage() if crislf
                   60471:  * is ON.
                   60472:  *
                   60473:  */
                   60474: 
                   60475:     vmot(vmi);
                   60476: 
                   60477:     if ( lfiscr == ON )
                   60478:        hgoto(leftmargin);
                   60479: 
                   60480:     if ( linespp > 0 )                 /* means something so see where we are */
                   60481:        line = vpos / ovmi + 1;
                   60482: 
                   60483:     if ( vpos > bottommargin || line > linespp )
                   60484:        formfeed();
                   60485: 
                   60486: }   /* End of linefeed */
                   60487: 
                   60488: /*****************************************************************************/
                   60489: 
                   60490: carriage()
                   60491: 
                   60492: {
                   60493: 
                   60494: /*
                   60495:  *
                   60496:  * Handles carriage return character. If crislf is ON we'll generate a line feed
                   60497:  * every time we get a carriage return character.
                   60498:  *
                   60499:  */
                   60500: 
                   60501:     if ( shadowprint == ON )           /* back to normal mode */
                   60502:        changefont(fontname);
                   60503: 
                   60504:     advance = 1;
                   60505:     shadowprint = OFF;
                   60506: 
                   60507:     hgoto(leftmargin);
                   60508: 
                   60509:     if ( crislf == ON )
                   60510:        linefeed();
                   60511: 
                   60512: }   /* End of carriage */
                   60513: 
                   60514: /*****************************************************************************/
                   60515: 
                   60516: htab()
                   60517: 
                   60518: {
                   60519: 
                   60520:     int                col;                    /* 'column' we'll be at next */
                   60521:     int                i;                      /* loop index */
                   60522: 
                   60523: /*
                   60524:  *
                   60525:  * Tries to figure out where the next tab stop is. Wasn't positive about this
                   60526:  * one, since hmi can change. I'll assume columns are determined by the original
                   60527:  * value of hmi. That fixes them on the page, which seems to make more sense than
                   60528:  * letting them float all over the place.
                   60529:  *
                   60530:  */
                   60531: 
                   60532:     endline();
                   60533: 
                   60534:     col = hpos/ohmi + 1;
                   60535:     for ( i = col; i < ROWS; i++ )
                   60536:        if ( htabstops[i] == ON )  {
                   60537:            col = i;
                   60538:            break;
                   60539:        }   /* End if */
                   60540: 
                   60541:     hgoto(col * ohmi);
                   60542:     lastx = hpos;
                   60543: 
                   60544: }   /* End of htab */
                   60545: 
                   60546: /*****************************************************************************/
                   60547: 
                   60548: vtab()
                   60549: 
                   60550: {
                   60551: 
                   60552:     int                line;                   /* line we'll be at next */
                   60553:     int                i;                      /* loop index */
                   60554: 
                   60555: /*
                   60556:  *
                   60557:  * Looks for the next vertical tab stop in the vtabstops[] array and moves to that
                   60558:  * line. If we don't find a tab we'll just move down one line - shouldn't happen.
                   60559:  *
                   60560:  */
                   60561: 
                   60562:     endline();
                   60563: 
                   60564:     line = vpos/ovmi + 1;
                   60565:     for ( i = line; i < COLUMNS; i++ )
                   60566:        if ( vtabstops[i] == ON )  {
                   60567:            line = i;
                   60568:            break;
                   60569:        }   /* End if */
                   60570: 
                   60571:     vgoto(line * ovmi);
                   60572: 
                   60573: }   /* End of vtab */
                   60574: 
                   60575: /*****************************************************************************/
                   60576: 
                   60577: backspace()
                   60578: 
                   60579: {
                   60580: 
                   60581: /*
                   60582:  *
                   60583:  * Moves backwards a distance equal to the current value of hmi, but don't go
                   60584:  * past the left margin.
                   60585:  *
                   60586:  */
                   60587: 
                   60588:     endline();
                   60589: 
                   60590:     if ( hpos - leftmargin >= hmi )
                   60591:        hmot(-hmi);
                   60592:     else hgoto(leftmargin);            /* maybe just ignore the backspace?? */
                   60593: 
                   60594:     lastx = hpos;
                   60595: 
                   60596: }   /* End of backspace */
                   60597: 
                   60598: /*****************************************************************************/
                   60599: 
                   60600: escape()
                   60601: 
                   60602: {
                   60603: 
                   60604:     int                ch;                     /* control character */
                   60605: 
                   60606: /*
                   60607:  *
                   60608:  * Handles special codes that are expected to follow an escape character. The
                   60609:  * initial escape character is followed by one or two bytes.
                   60610:  *
                   60611:  */
                   60612: 
                   60613:     switch ( ch = getc(fp_in) ) {
                   60614:        case 'T':                       /* top margin */
                   60615:                topmargin = vpos;
                   60616:                break;
                   60617: 
                   60618:        case 'L':                       /* bottom margin */
                   60619:                bottommargin = vpos;
                   60620:                break;
                   60621: 
                   60622:        case 'C':                       /* clear top and bottom margins */
                   60623:                bottommargin = BOTTOMMARGIN;
                   60624:                topmargin = TOPMARGIN;
                   60625:                break;
                   60626: 
                   60627:        case '9':                       /* left margin */
                   60628:                leftmargin = hpos;
                   60629:                break;
                   60630: 
                   60631:        case '0':                       /* right margin */
                   60632:                rightmargin = hpos;
                   60633:                break;
                   60634: 
                   60635:        case '1':                       /* set horizontal tab */
                   60636:                htabstops[hpos/ohmi] = ON;
                   60637:                break;
                   60638: 
                   60639:        case '8':                       /* clear horizontal tab at hpos */
                   60640:                htabstops[hpos/ohmi] = OFF;
                   60641:                break;
                   60642: 
                   60643:        case '-':                       /* set vertical tab */
                   60644:                vtabstops[vpos/ovmi] = ON;
                   60645:                break;
                   60646: 
                   60647:        case '2':                       /* clear all tabs */
                   60648:                cleartabs();
                   60649:                break;
                   60650: 
                   60651:        case '\014':                    /* set lines per page */
                   60652:                linespp = getc(fp_in);
                   60653:                break;
                   60654: 
                   60655:        case '\037':                    /* set hmi to next byte minus 1 */
                   60656:                hmi = HSCALE * (getc(fp_in) - 1);
                   60657:                break;
                   60658: 
                   60659:        case 'S':                       /* reset hmi to default */
                   60660:                hmi = ohmi;
                   60661:                break;
                   60662: 
                   60663:        case '\011':                    /* move to column given by next byte */
                   60664:                hgoto((getc(fp_in)-1) * ohmi);
                   60665:                break;
                   60666: 
                   60667:        case '?':                       /* do carriage return after line feed */
                   60668:                lfiscr = ON;
                   60669:                break;
                   60670: 
                   60671:        case '!':                       /* don't generate carriage return */
                   60672:                lfiscr = OFF;
                   60673:                break;
                   60674: 
                   60675:        case '5':                       /* forward print mode */
                   60676:                advance = 1;
                   60677:                break;
                   60678: 
                   60679:        case '6':                       /* backward print mode */
                   60680:                advance = -1;
                   60681:                break;
                   60682: 
                   60683:        case '\036':                    /* set vmi to next byte minus 1 */
                   60684:                vmi = VSCALE * (getc(fp_in) - 1);
                   60685:                break;
                   60686: 
                   60687:        case '\013':                    /* move to line given by next byte */
                   60688:                vgoto((getc(fp_in)-1) * ovmi);
                   60689:                break;
                   60690: 
                   60691:        case 'U':                       /* positive half line feed */
                   60692:                vmot(vmi/2);
                   60693:                break;
                   60694: 
                   60695:        case 'D':                       /* negative half line feed */
                   60696:                vmot(-vmi/2);
                   60697:                break;
                   60698: 
                   60699:        case '\012':                    /* negative line feed */
                   60700:                vmot(-vmi);
                   60701:                break;
                   60702: 
                   60703:        case '\015':                    /* clear all margins */
                   60704:                bottommargin = BOTTOMMARGIN;
                   60705:                topmargin = TOPMARGIN;
                   60706:                leftmargin = BOTTOMMARGIN;
                   60707:                rightmargin = RIGHTMARGIN;
                   60708:                break;
                   60709: 
                   60710:        case 'E':                       /* auto underscore - use italic font */
                   60711:                changefont("/Courier-Oblique");
                   60712:                break;
                   60713: 
                   60714:        case 'R':                       /* disable auto underscore */
                   60715:                changefont(fontname);
                   60716:                break;
                   60717: 
                   60718:        case 'O':                       /* bold/shadow printing */
                   60719:        case 'W':
                   60720:                changefont("/Courier-Bold");
                   60721:                shadowprint = ON;
                   60722:                break;
                   60723: 
                   60724:        case '&':                       /* disable bold printing */
                   60725:                changefont(fontname);
                   60726:                shadowprint = OFF;
                   60727:                break;
                   60728: 
                   60729:        case '/':                       /* ignored 2 byte escapes */
                   60730:        case '\\':
                   60731:        case '<':
                   60732:        case '>':
                   60733:        case '%':
                   60734:        case '=':
                   60735:        case '.':
                   60736:        case '4':
                   60737:        case 'A':
                   60738:        case 'B':
                   60739:        case 'M':
                   60740:        case 'N':
                   60741:        case 'P':
                   60742:        case 'Q':
                   60743:        case 'X':
                   60744:        case '\010':
                   60745:                break;
                   60746: 
                   60747:        case ',':                       /* ignored 3 byte escapes */
                   60748:        case '\016':
                   60749:        case '\021':
                   60750:                getc(fp_in);
                   60751:                break;
                   60752: 
                   60753:        case '3':                       /* graphics mode - should quit! */
                   60754:        case '7':
                   60755:        case 'G':
                   60756:        case 'V':
                   60757:        case 'Y':
                   60758:        case 'Z':
                   60759:                error(FATAL, "graphics mode is not implemented");
                   60760:                break;
                   60761: 
                   60762:        default:
                   60763:                error(FATAL, "missing case for escape o%o\n", ch);
                   60764:                break;
                   60765:     }  /* End switch */
                   60766: 
                   60767: }   /* End of escape */
                   60768: 
                   60769: /*****************************************************************************/
                   60770: 
                   60771: vmot(n)
                   60772: 
                   60773:     int                n;                      /* move this far vertically */
                   60774: 
                   60775: {
                   60776: 
                   60777: /*
                   60778:  *
                   60779:  * Move vertically n units from where we are.
                   60780:  *
                   60781:  */
                   60782: 
                   60783:     vpos += n;
                   60784: 
                   60785: }   /* End of vmot */
                   60786: 
                   60787: /*****************************************************************************/
                   60788: 
                   60789: vgoto(n)
                   60790: 
                   60791:     int                n;                      /* new vertical position */
                   60792: 
                   60793: {
                   60794: 
                   60795: /*
                   60796:  *
                   60797:  * Moves to absolute vertical position n.
                   60798:  *
                   60799:  */
                   60800: 
                   60801:     vpos = n;
                   60802: 
                   60803: }   /* End of vgoto */
                   60804: 
                   60805: /*****************************************************************************/
                   60806: 
                   60807: hmot(n)
                   60808: 
                   60809:     int                n;                      /* move this horizontally */
                   60810: 
                   60811: {
                   60812: 
                   60813: /*
                   60814:  *
                   60815:  * Moves horizontally n units from our current position.
                   60816:  *
                   60817:  */
                   60818: 
                   60819:     hpos += n * advance;
                   60820: 
                   60821:     if ( hpos < leftmargin )
                   60822:        hpos = leftmargin;
                   60823: 
                   60824: }   /* End of hmot */
                   60825: 
                   60826: /*****************************************************************************/
                   60827: 
                   60828: hgoto(n)
                   60829: 
                   60830:     int                n;                      /* go to this horizontal position */
                   60831: 
                   60832: {
                   60833: 
                   60834: /*
                   60835:  *
                   60836:  * Moves to absolute horizontal position n.
                   60837:  *
                   60838:  */
                   60839: 
                   60840:     hpos = n;
                   60841: 
                   60842: }   /* End of hgoto */
                   60843: 
                   60844: /*****************************************************************************/
                   60845: 
                   60846: changefont(name)
                   60847: 
                   60848:     char       *name;
                   60849: 
                   60850: {
                   60851: 
                   60852: /*
                   60853:  *
                   60854:  * Changes the current font. Used to get in and out of auto underscore and bold
                   60855:  * printing.
                   60856:  *
                   60857:  */
                   60858: 
                   60859:     endline();
                   60860:     fprintf(fp_out, "%s f\n", name);
                   60861: 
                   60862: }   /* End of changefont */
                   60863: 
                   60864: /*****************************************************************************/
                   60865: 
                   60866: startline()
                   60867: 
                   60868: {
                   60869: 
                   60870: /*
                   60871:  *
                   60872:  * Called whenever we want to be certain we're ready to start pushing characters
                   60873:  * into an open string on the stack. If stringcount is positive we've already
                   60874:  * started, so there's nothing to do. The first string starts in column 1.
                   60875:  *
                   60876:  */
                   60877: 
                   60878:     if ( stringcount < 1 )  {
                   60879:        putc('(', fp_out);
                   60880:        stringstart = lastx = hpos;
                   60881:        lasty = vpos;
                   60882:        lasthmi = hmi;
                   60883:        lastc = -1;
                   60884:        prevx = -1;
                   60885:        stringcount = 1;
                   60886:     }  /* End if */
                   60887: 
                   60888: }   /* End of startline */
                   60889: 
                   60890: /*****************************************************************************/
                   60891: 
                   60892: endline()
                   60893: 
                   60894: {
                   60895: 
                   60896: /*
                   60897:  *
                   60898:  * Generates a call to the PostScript procedure that processes the text on the
                   60899:  * the stack - provided stringcount is positive.
                   60900:  *
                   60901:  */
                   60902: 
                   60903:     if ( stringcount > 0 )
                   60904:        fprintf(fp_out, ")%d %d %d t\n", stringstart, lasty, lasthmi);
                   60905: 
                   60906:     stringcount = 0;
                   60907: 
                   60908: }   /* End of endline */
                   60909: 
                   60910: /*****************************************************************************/
                   60911: 
                   60912: endstring()
                   60913: 
                   60914: {
                   60915: 
                   60916: /*
                   60917:  *
                   60918:  * Takes the string we've been working on and adds it to the output file. Called
                   60919:  * when we need to adjust our horizontal position before starting a new string.
                   60920:  * Also called from endline() when we're done with the current line.
                   60921:  *
                   60922:  */
                   60923: 
                   60924:     if ( stringcount > 0 )  {
                   60925:        fprintf(fp_out, ")%d(", stringstart);
                   60926:        lastx = stringstart = hpos;
                   60927:        stringcount++;
                   60928:     }  /* End if */
                   60929: 
                   60930: }   /* End of endstring */
                   60931: 
                   60932: /*****************************************************************************/
                   60933: 
                   60934: oput(ch)
                   60935: 
                   60936:     int                ch;                     /* next output character */
                   60937: 
                   60938: {
                   60939: 
                   60940: /*
                   60941:  *
                   60942:  * Responsible for adding all printing characters from the input file to the
                   60943:  * open string on top of the stack. The only other characters that end up in
                   60944:  * that string are the quotes required for special characters. Reverse printing
                   60945:  * mode hasn't been tested but it should be close. hpos and lastx should disagree
                   60946:  * each time (except after startline() does something), and that should force a
                   60947:  * call to endstring() for every character.
                   60948:  *
                   60949:  */
                   60950: 
                   60951:     if ( stringcount > 100 )           /* don't put too much on the stack */
                   60952:        endline();
                   60953: 
                   60954:     if ( vpos != lasty )
                   60955:        endline();
                   60956: 
                   60957:     if ( advance == -1 )               /* for reverse printing - move first */
                   60958:        hmot(hmi);
                   60959: 
                   60960:     startline();
                   60961: 
                   60962:     if ( lastc != ch || hpos != prevx )  {
                   60963:        if ( lastx != hpos )
                   60964:            endstring();
                   60965: 
                   60966:        if ( ch == '\\' || ch == '(' || ch == ')' )
                   60967:            putc('\\', fp_out);
                   60968:        putc(ch, fp_out);
                   60969: 
                   60970:        lastc = ch;
                   60971:        prevx = hpos;
                   60972:        lastx += lasthmi;
                   60973:     }  /* End if */
                   60974: 
                   60975:     if ( advance != -1 )
                   60976:        hmot(hmi);
                   60977: 
                   60978:     markedpage = TRUE;
                   60979: 
                   60980: }   /* End of oput */
                   60981: 
                   60982: /*****************************************************************************/
                   60983: 
                   60984: redirect(pg)
                   60985: 
                   60986:     int                pg;                     /* next page we're printing */
                   60987: 
                   60988: {
                   60989: 
                   60990:     static FILE        *fp_null = NULL;        /* if output is turned off */
                   60991: 
                   60992: /*
                   60993:  *
                   60994:  * If we're not supposed to print page pg, fp_out will be directed to /dev/null,
                   60995:  * otherwise output goes to stdout.
                   60996:  *
                   60997:  */
                   60998: 
                   60999:     if ( pg >= 0 && in_olist(pg) == ON )
                   61000:        fp_out = stdout;
                   61001:     else if ( (fp_out = fp_null) == NULL )
                   61002:        fp_out = fp_null = fopen("/dev/null", "w");
                   61003: 
                   61004: }   /* End of redirect */
                   61005: 
                   61006: /*****************************************************************************/
                   61007: 
                   61008: 0707070014230735640407550057030057030000020015370522633075500002100000000000post.src/postdmd0707070014230735651006440057030057030000010015060522627503500003000000001317post.src/postdmd/README
                   61009: DMD bitmap to PostScript translator. Much of the code came from abm,
                   61010: which was written by Guy Riddle.
                   61011: 
                   61012: By default 6 byte patterns are used to encode the output bitmap. Use
                   61013: the -b option to change the pattern size. Bitmaps are unpacked one
                   61014: scanline at a time and re-encoded in a format that looks like,
                   61015: 
                   61016:        bytes patterns count
                   61017: 
                   61018: where bytes and count are decimal integers and patterns is a series
                   61019: of hex digits. Bytes is the number of bytes represented by the hex
                   61020: pattern, and count is the number of additional times the pattern
                   61021: should be repeated. For example,
                   61022: 
                   61023:        2 FFFF 4
                   61024:        5 FFFFFFFFFF 1
                   61025:        10 FFFFFFFFFFFFFFFFFFFF 0
                   61026: 
                   61027: all represent 10 consecutive bytes of ones. Scanlines are terminated
                   61028: by a 0 on a line by itself.
                   61029: 
                   61030: 0707070014230732611006400057030057030000010015760522633075500003400000003714post.src/postdmd/postdmd.mkMAKE=/bin/make
                   61031: MAKEFILE=postdmd.mk
                   61032: 
                   61033: SYSTEM=V9
                   61034: VERSION=3.3.2
                   61035: 
                   61036: GROUP=bin
                   61037: OWNER=bin
                   61038: 
                   61039: MAN1DIR=/tmp
                   61040: POSTBIN=/usr/bin/postscript
                   61041: POSTLIB=/usr/lib/postscript
                   61042: 
                   61043: COMMONDIR=../common
                   61044: 
                   61045: CFLGS=-O
                   61046: LDFLGS=-s
                   61047: 
                   61048: CFLAGS=$(CFLGS) -I$(COMMONDIR)
                   61049: LDFLAGS=$(LDFLGS)
                   61050: 
                   61051: HFILES=$(COMMONDIR)/comments.h\
                   61052:        $(COMMONDIR)/ext.h\
                   61053:        $(COMMONDIR)/gen.h\
                   61054:        $(COMMONDIR)/path.h
                   61055: 
                   61056: OFILES=postdmd.o\
                   61057:        $(COMMONDIR)/glob.o\
                   61058:        $(COMMONDIR)/misc.o\
                   61059:        $(COMMONDIR)/request.o
                   61060: 
                   61061: all : postdmd
                   61062: 
                   61063: install : all
                   61064:        @if [ ! -d "$(POSTBIN)" ]; then \
                   61065:            mkdir $(POSTBIN); \
                   61066:            chmod 755 $(POSTBIN); \
                   61067:            chgrp $(GROUP) $(POSTBIN); \
                   61068:            chown $(OWNER) $(POSTBIN); \
                   61069:        fi
                   61070:        @if [ ! -d "$(POSTLIB)" ]; then \
                   61071:            mkdir $(POSTLIB); \
                   61072:            chmod 755 $(POSTLIB); \
                   61073:            chgrp $(GROUP) $(POSTLIB); \
                   61074:            chown $(OWNER) $(POSTLIB); \
                   61075:        fi
                   61076:        cp postdmd $(POSTBIN)/postdmd
                   61077:        @chmod 755 $(POSTBIN)/postdmd
                   61078:        @chgrp $(GROUP) $(POSTBIN)/postdmd
                   61079:        @chown $(OWNER) $(POSTBIN)/postdmd
                   61080:        cp postdmd.ps $(POSTLIB)/postdmd.ps
                   61081:        @chmod 644 $(POSTLIB)/postdmd.ps
                   61082:        @chgrp $(GROUP) $(POSTLIB)/postdmd.ps
                   61083:        @chown $(OWNER) $(POSTLIB)/postdmd.ps
                   61084:        cp postdmd.1 $(MAN1DIR)/postdmd.1
                   61085:        @chmod 644 $(MAN1DIR)/postdmd.1
                   61086:        @chgrp $(GROUP) $(MAN1DIR)/postdmd.1
                   61087:        @chown $(OWNER) $(MAN1DIR)/postdmd.1
                   61088: 
                   61089: clean :
                   61090:        rm -f *.o
                   61091: 
                   61092: clobber : clean
                   61093:        rm -f postdmd
                   61094: 
                   61095: postdmd : $(OFILES)
                   61096:        $(CC) $(CFLAGS) $(LDFLAGS) -o postdmd $(OFILES)
                   61097: 
                   61098: postdmd.o : $(HFILES)
                   61099: 
                   61100: $(COMMONDIR)/glob.o\
                   61101: $(COMMONDIR)/misc.o\
                   61102: $(COMMONDIR)/request.o :
                   61103:        @cd $(COMMONDIR); $(MAKE) -f common.mk `basename $@`
                   61104: 
                   61105: changes :
                   61106:        @trap "" 1 2 3 15; \
                   61107:        sed \
                   61108:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
                   61109:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
                   61110:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
                   61111:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
                   61112:            -e "s'^MAN1DIR=.*'MAN1DIR=$(MAN1DIR)'" \
                   61113:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
                   61114:            -e "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" \
                   61115:        $(MAKEFILE) >XXX.mk; \
                   61116:        mv XXX.mk $(MAKEFILE); \
                   61117:        sed \
                   61118:            -e "s'^.ds dQ.*'.ds dQ $(POSTLIB)'" \
                   61119:        postdmd.1 >XXX.1; \
                   61120:        mv XXX.1 postdmd.1
                   61121: 
                   61122: 0707070014230735671006440057030057030000010015400522627503500003300000050035post.src/postdmd/postdmd.c/*
                   61123:  *
                   61124:  * postdmd - PostScript translator for DMD bitmap files.
                   61125:  *
                   61126:  * A simple program that can be used to print DMD bitmaps on PostScript printers.
                   61127:  * Much of the code was borrowed from abm, which was written by Guy Riddle.
                   61128:  *
                   61129:  * Although the program supports two different input bitmap formats, by far the
                   61130:  * most important is the Eighth (and Ninth) Edition bitfile format. A bitmap in
                   61131:  * the bitfile format begins with a 10 byte header with the first two bytes set to
                   61132:  * zero. The next 8 bytes set the x and y coordinates of the bitmap's origin and
                   61133:  * corner (ie. the upper left and lower right corners). The compressed raster data
                   61134:  * follows the header and consists of control bytes followed an appropriate number
                   61135:  * of data bytes. Control bytes (ie. n) less than 127 means read the next 2*n bytes 
                   61136:  * of raster data directly from the input file, while if n is larger than 128 we
                   61137:  * read two bytes from the input file and replicate the bytes n-128 times. After
                   61138:  * each scan line is recovered it's exclusive-or'd with the preceeding line to
                   61139:  * generate the real raster data.
                   61140:  *
                   61141:  * After each raster line is recovered postdmd encodes it in a slightly different
                   61142:  * format that's designed to be unpacked by a PostScript procedure that's defined
                   61143:  * in the prologue. By default no exclusive-or'ing is done and packing of pattern
                   61144:  * data can be based on any number of bytes rather than just the next two bytes.
                   61145:  * By default 6 byte patterns are used, but any number can be selected with the -b
                   61146:  * option. A non-positive argument (eg. -b0) disables all pattern encoding. Larger
                   61147:  * patterns increase the size of the output file, but reduce the work load that's
                   61148:  * forced on the PostScript interpreter. The default choices I've made (ie. 6 byte
                   61149:  * patterns and no exclusive-or'ing) do a decent balancing job across currently
                   61150:  * available PostScript printers. Larger patterns (eg. -b16) increase the output
                   61151:  * file size, but may be appropriate if you're running at a high baud rate (eg.
                   61152:  * 19.2KB), while smaller patter size (eg. -b4) may help if you've got a printer
                   61153:  * with a fast processor (eg. a PS-810).
                   61154:  *
                   61155:  * The encoding produced by the program (and decoded on the printer) looks like,
                   61156:  * 
                   61157:  *     bytes patterns count
                   61158:  * 
                   61159:  * where bytes and count are decimal integers and patterns is a hex string. Bytes
                   61160:  * is the number of bytes represented by the hex patterns and count is the number
                   61161:  * of additional times the patterns should be repeated. For example,
                   61162:  * 
                   61163:  *     2 FFFF 4
                   61164:  *     5 FFFFFFFFFF 1
                   61165:  *     10 FFFFFFFFFFFFFFFFFFFF 0
                   61166:  * 
                   61167:  * all represent 10 consecutive bytes of ones. Scanlines are terminated by a 0 on
                   61168:  * a line by itself.
                   61169:  *
                   61170:  * The PostScript prologue is copied from *prologue before any of the input files
                   61171:  * are translated. The program expects that the following PostScript procedures
                   61172:  * are defined in that file:
                   61173:  *
                   61174:  *     setup
                   61175:  *
                   61176:  *       mark ... setup -
                   61177:  *
                   61178:  *         Handles special initialization stuff that depends on how this program
                   61179:  *         was called. Expects to find a mark followed by key/value pairs on the
                   61180:  *         stack. The def operator is applied to each pair up to the mark, then
                   61181:  *         the default state is set up.
                   61182:  *
                   61183:  *     pagesetup
                   61184:  *
                   61185:  *       page pagesetup -
                   61186:  *
                   61187:  *         Does whatever is needed to set things up for the next page. Expects
                   61188:  *         to find the current page number on the stack.
                   61189:  *
                   61190:  *     bitmap
                   61191:  *
                   61192:  *       v8format flip scanlength scanlines bitmap -
                   61193:  *
                   61194:  *         Prints the bitmap that's read from standard input. The bitmap consists
                   61195:  *         of scanlines lines, each of which includes scanlength pixels. If
                   61196:  *         v8format is true the picture is assumed to be an Eighth Edition bitmap,
                   61197:  *         and the exclusive-or'ing will be done on the printer.
                   61198:  *
                   61199:  *     done
                   61200:  *
                   61201:  *       done
                   61202:  *
                   61203:  *         Makes sure the last page is printed. Only needed when we're printing
                   61204:  *         more than one page on each sheet of paper.
                   61205:  *
                   61206:  * Many default values, like the magnification and orientation, are defined in 
                   61207:  * the prologue, which is where they belong. If they're changed (by options), an
                   61208:  * appropriate definition is made after the prologue is added to the output file.
                   61209:  * The -P option passes arbitrary PostScript through to the output file. Among
                   61210:  * other things it can be used to set (or change) values that can't be accessed by
                   61211:  * other options.
                   61212:  *
                   61213:  */
                   61214: 
                   61215: #include <stdio.h>
                   61216: #include <signal.h>
                   61217: #include <ctype.h>
                   61218: #include <fcntl.h>
                   61219: 
                   61220: #include "comments.h"                  /* PostScript file structuring comments */
                   61221: #include "gen.h"                       /* general purpose definitions */
                   61222: #include "path.h"                      /* for the prologue */
                   61223: #include "ext.h"                       /* external variable declarations */
                   61224: 
                   61225: char   *optnames = "a:b:c:fm:n:o:p:ux:y:A:C:E:J:L:P:DI";
                   61226: 
                   61227: char   *prologue = POSTDMD;            /* default PostScript prologue */
                   61228: char   *formfile = FORMFILE;           /* stuff for multiple pages per sheet */
                   61229: 
                   61230: int    bbox[2] = {0, 0};               /* upper right coordinates only */
                   61231: 
                   61232: int    formsperpage = 1;               /* page images on each piece of paper */
                   61233: int    copies = 1;                     /* and this many copies of each sheet */
                   61234: 
                   61235: int    bytespp = 6;                    /* bytes per pattern - on output */
                   61236: int    flip = FALSE;                   /* ones complement the bitmap */
                   61237: int    v8undo = TRUE;                  /* xor'ing done on host if TRUE */
                   61238: int    v8format = FALSE;               /* for Eighth Edition bitmaps */
                   61239: 
                   61240: int    page = 0;                       /* last page we worked on */
                   61241: int    printed = 0;                    /* and the number of pages printed */
                   61242: 
                   61243: int    patterns;                       /* 16 bit patterns per scan line */
                   61244: int    scanlines;                      /* lines in the bitmap */
                   61245: int    patcount = 0;                   /* should be patterns * scanlines */
                   61246: 
                   61247: char   *raster = NULL;                 /* next raster line */
                   61248: char   *prevrast = NULL;               /* and the previous one - v8format */
                   61249: char   *rptr;                          /* next free byte in raster */
                   61250: char   *eptr;                          /* one past the last byte in raster */
                   61251: 
                   61252: FILE   *fp_in = NULL;                  /* read from this file */
                   61253: FILE   *fp_out = stdout;               /* and write stuff here */
                   61254: FILE   *fp_acct = NULL;                /* for accounting data */
                   61255: 
                   61256: /*****************************************************************************/
                   61257: 
                   61258: main(agc, agv)
                   61259: 
                   61260:     int                agc;
                   61261:     char       *agv[];
                   61262: 
                   61263: {
                   61264: 
                   61265: /*
                   61266:  *
                   61267:  * A simple program that translates DMD bitmap files into PostScript. There can
                   61268:  * be more than one bitmap per file, but none can be split across input files.
                   61269:  * Each bitmap goes on a page by itself.
                   61270:  *
                   61271:  */
                   61272: 
                   61273:     argc = agc;                                /* other routines may want them */
                   61274:     argv = agv;
                   61275: 
                   61276:     prog_name = argv[0];               /* really just for error messages */
                   61277: 
                   61278:     init_signals();                    /* sets up interrupt handling */
                   61279:     header();                          /* PostScript header comments */
                   61280:     options();                         /* handle the command line options */
                   61281:     setup();                           /* for PostScript */
                   61282:     arguments();                       /* followed by each input file */
                   61283:     done();                            /* print the last page etc. */
                   61284:     account();                         /* job accounting data */
                   61285: 
                   61286:     exit(x_stat);                      /* not much could be wrong */
                   61287: 
                   61288: }   /* End of main */
                   61289: 
                   61290: /*****************************************************************************/
                   61291: 
                   61292: init_signals()
                   61293: 
                   61294: {
                   61295: 
                   61296: /*
                   61297:  *
                   61298:  * Make sure we handle interrupts.
                   61299:  *
                   61300:  */
                   61301: 
                   61302:     if ( signal(SIGINT, interrupt) == SIG_IGN )  {
                   61303:        signal(SIGINT, SIG_IGN);
                   61304:        signal(SIGQUIT, SIG_IGN);
                   61305:        signal(SIGHUP, SIG_IGN);
                   61306:     } else {
                   61307:        signal(SIGHUP, interrupt);
                   61308:        signal(SIGQUIT, interrupt);
                   61309:     }   /* End else */
                   61310: 
                   61311:     signal(SIGTERM, interrupt);
                   61312: 
                   61313: }   /* End of init_signals */
                   61314: 
                   61315: /*****************************************************************************/
                   61316: 
                   61317: header()
                   61318: 
                   61319: {
                   61320: 
                   61321:     int                ch;                     /* return value from getopt() */
                   61322:     int                old_optind = optind;    /* for restoring optind - should be 1 */
                   61323: 
                   61324: /*
                   61325:  *
                   61326:  * Scans the option list looking for things, like the prologue file, that we need
                   61327:  * right away but could be changed from the default. Doing things this way is an
                   61328:  * attempt to conform to Adobe's latest file structuring conventions. In particular
                   61329:  * they now say there should be nothing executed in the prologue, and they have
                   61330:  * added two new comments that delimit global initialization calls. Once we know
                   61331:  * where things really are we write out the job header, follow it by the prologue,
                   61332:  * and then add the ENDPROLOG and BEGINSETUP comments.
                   61333:  *
                   61334:  */
                   61335: 
                   61336:     while ( (ch = getopt(argc, argv, optnames)) != EOF )
                   61337:        if ( ch == 'L' )
                   61338:            prologue = optarg;
                   61339:        else if ( ch == '?' )
                   61340:            error(FATAL, "");
                   61341: 
                   61342:     optind = old_optind;               /* get ready for option scanning */
                   61343: 
                   61344:     fprintf(stdout, "%s", CONFORMING);
                   61345:     fprintf(stdout, "%s %s\n", VERSION, PROGRAMVERSION);
                   61346:     fprintf(stdout, "%s %s\n", DOCUMENTFONTS, ATEND);
                   61347:     fprintf(stdout, "%s %s\n", PAGES, ATEND);
                   61348:     fprintf(stdout, "%s", ENDCOMMENTS);
                   61349: 
                   61350:     if ( cat(prologue) == FALSE )
                   61351:        error(FATAL, "can't read %s", prologue);
                   61352: 
                   61353:     fprintf(stdout, "%s", ENDPROLOG);
                   61354:     fprintf(stdout, "%s", BEGINSETUP);
                   61355:     fprintf(stdout, "mark\n");
                   61356: 
                   61357: }   /* End of header */
                   61358: 
                   61359: /*****************************************************************************/
                   61360: 
                   61361: options()
                   61362: 
                   61363: {
                   61364: 
                   61365:     int                ch;                     /* return value from getopt() */
                   61366: 
                   61367: /*
                   61368:  *
                   61369:  * Reads and processes the command line options. Added the -P option so arbitrary
                   61370:  * PostScript code can be passed through. Expect it could be useful for changing
                   61371:  * definitions in the prologue for which options have not been defined.
                   61372:  *
                   61373:  */
                   61374: 
                   61375:     while ( (ch = getopt(argc, argv, optnames)) != EOF )  {
                   61376:        switch ( ch )  {
                   61377:            case 'a':                   /* aspect ratio */
                   61378:                    fprintf(stdout, "/aspectratio %s def\n", optarg);
                   61379:                    break;
                   61380: 
                   61381:            case 'b':                   /* bytes per pattern */
                   61382:                    bytespp = atoi(optarg);
                   61383:                    break;
                   61384: 
                   61385:            case 'c':                   /* copies */
                   61386:                    copies = atoi(optarg);
                   61387:                    fprintf(stdout, "/#copies %s store\n", optarg);
                   61388:                    break;
                   61389: 
                   61390:            case 'f':                   /* ones complement - sort of */
                   61391:                    flip = TRUE;
                   61392:                    break;
                   61393: 
                   61394:            case 'm':                   /* magnification */
                   61395:                    fprintf(stdout, "/magnification %s def\n", optarg);
                   61396:                    break;
                   61397: 
                   61398:            case 'n':                   /* forms per page */
                   61399:                    formsperpage = atoi(optarg);
                   61400:                    fprintf(stdout, "%s %s\n", FORMSPERPAGE, optarg);
                   61401:                    fprintf(stdout, "/formsperpage %s def\n", optarg);
                   61402:                    break;
                   61403: 
                   61404:            case 'o':                   /* output page list */
                   61405:                    out_list(optarg);
                   61406:                    break;
                   61407: 
                   61408:            case 'p':                   /* landscape or portrait mode */
                   61409:                    if ( *optarg == 'l' )
                   61410:                        fprintf(stdout, "/landscape true def\n");
                   61411:                    else fprintf(stdout, "/landscape false def\n");
                   61412:                    break;
                   61413: 
                   61414:            case 'u':                   /* don't undo Eighth Edition bitmaps */
                   61415:                    v8undo = FALSE;
                   61416:                    break;
                   61417: 
                   61418:            case 'x':                   /* shift things horizontally */
                   61419:                    fprintf(stdout, "/xoffset %s def\n", optarg);
                   61420:                    break;
                   61421: 
                   61422:            case 'y':                   /* and vertically on the page */
                   61423:                    fprintf(stdout, "/yoffset %s def\n", optarg);
                   61424:                    break;
                   61425: 
                   61426:            case 'A':                   /* force job accounting */
                   61427:            case 'J':
                   61428:                    if ( (fp_acct = fopen(optarg, "a")) == NULL )
                   61429:                        error(FATAL, "can't open accounting file %s", optarg);
                   61430:                    break;
                   61431: 
                   61432:            case 'C':                   /* copy file straight to output */
                   61433:                    if ( cat(optarg) == FALSE )
                   61434:                        error(FATAL, "can't read %s", optarg);
                   61435:                    break;
                   61436: 
                   61437:            case 'E':                   /* text font encoding - unnecessary */
                   61438:                    fontencoding = optarg;
                   61439:                    break;
                   61440: 
                   61441:            case 'L':                   /* PostScript prologue file */
                   61442:                    prologue = optarg;
                   61443:                    break;
                   61444: 
                   61445:            case 'P':                   /* PostScript pass through */
                   61446:                    fprintf(stdout, "%s\n", optarg);
                   61447:                    break;
                   61448: 
                   61449:            case 'R':                   /* special global or page level request */
                   61450:                    saverequest(optarg);
                   61451:                    break;
                   61452: 
                   61453:            case 'D':                   /* debug flag */
                   61454:                    debug = ON;
                   61455:                    break;
                   61456: 
                   61457:            case 'I':                   /* ignore FATAL errors */
                   61458:                    ignore = ON;
                   61459:                    break;
                   61460: 
                   61461:            case '?':                   /* don't understand the option */
                   61462:                    error(FATAL, "");
                   61463:                    break;
                   61464: 
                   61465:            default:                    /* don't know what to do for ch */
                   61466:                    error(FATAL, "missing case for option %c\n", ch);
                   61467:                    break;
                   61468:        }   /* End switch */
                   61469:     }   /* End while */
                   61470: 
                   61471:     argc -= optind;                    /* get ready for non-option args */
                   61472:     argv += optind;
                   61473: 
                   61474: }   /* End of options */
                   61475: 
                   61476: /*****************************************************************************/
                   61477: 
                   61478: setup()
                   61479: 
                   61480: {
                   61481: 
                   61482: /*
                   61483:  *
                   61484:  * Handles things that must be done after the options are read but before the
                   61485:  * input files are processed.
                   61486:  *
                   61487:  */
                   61488: 
                   61489:     writerequest(0, stdout);           /* global requests eg. manual feed */
                   61490:     setencoding(fontencoding);         /* unnecessary */
                   61491:     fprintf(stdout, "setup\n");
                   61492: 
                   61493:     if ( formsperpage > 1 )  {         /* followed by stuff for multiple pages */
                   61494:        if ( cat(formfile) == FALSE )
                   61495:            error(FATAL, "can't read %s", formfile);
                   61496:        fprintf(stdout, "%d setupforms\n", formsperpage);
                   61497:     }  /* End if */
                   61498: 
                   61499:     fprintf(stdout, "%s", ENDSETUP);
                   61500: 
                   61501: }   /* End of setup */
                   61502: 
                   61503: /*****************************************************************************/
                   61504: 
                   61505: arguments()
                   61506: 
                   61507: {
                   61508: 
                   61509:     FILE       *fp;                    /* next input file */
                   61510: 
                   61511: /*
                   61512:  *
                   61513:  * Makes sure all the non-option command line arguments are processed. If we get
                   61514:  * here and there aren't any arguments left, or if '-' is one of the input files
                   61515:  * we'll process stdin.
                   61516:  *
                   61517:  */
                   61518: 
                   61519:     if ( argc < 1 )
                   61520:        bitmap(stdin);
                   61521:     else  {                            /* at least one argument is left */
                   61522:        while ( argc > 0 )  {
                   61523:            if ( strcmp(*argv, "-") == 0 )
                   61524:                fp = stdin;
                   61525:            else if ( (fp = fopen(*argv, "r")) == NULL )
                   61526:                error(FATAL, "can't open %s", *argv);
                   61527:            bitmap(fp);
                   61528:            if ( fp != stdin )
                   61529:                fclose(fp);
                   61530:            argc--;
                   61531:            argv++;
                   61532:        }   /* End while */
                   61533:     }   /* End else */
                   61534: 
                   61535: }   /* End of arguments */
                   61536: 
                   61537: /*****************************************************************************/
                   61538: 
                   61539: done()
                   61540: 
                   61541: {
                   61542: 
                   61543: /*
                   61544:  *
                   61545:  * Finished with all the input files, so mark the end of the pages with a TRAILER
                   61546:  * comment, make sure the last page prints, and add things like the PAGES comment
                   61547:  * that can only be determined after all the input files have been read.
                   61548:  *
                   61549:  */
                   61550: 
                   61551:     fprintf(stdout, "%s", TRAILER);
                   61552:     fprintf(stdout, "done\n");
                   61553:     fprintf(stdout, "%s 0 0 %d %d\n", BOUNDINGBOX, (bbox[0]*72+100)/100, (bbox[1]*72+100)/100);
                   61554:     fprintf(stdout, "%s %d\n", PAGES, printed);
                   61555: 
                   61556: }   /* End of done */
                   61557: 
                   61558: /*****************************************************************************/
                   61559: 
                   61560: account()
                   61561: 
                   61562: {
                   61563: 
                   61564: /*
                   61565:  *
                   61566:  * Writes an accounting record to *fp_acct provided it's not NULL. Accounting is
                   61567:  * requested using the -A or -J options.
                   61568:  *
                   61569:  */
                   61570: 
                   61571:     if ( fp_acct != NULL )
                   61572:        fprintf(fp_acct, " print %d\n copies %d\n", printed, copies);
                   61573: 
                   61574: }   /* End of account */
                   61575: 
                   61576: /*****************************************************************************/
                   61577: 
                   61578: bitmap(fp)
                   61579: 
                   61580:     FILE       *fp;                    /* next input file */
                   61581: 
                   61582: {
                   61583: 
                   61584:     int                count;                  /* pattern repeats this many times */
                   61585:     long       total;                  /* expect this many patterns */
                   61586: 
                   61587: /*
                   61588:  *
                   61589:  * Reads all the bitmaps from the next input file, translates each one into
                   61590:  * PostScript, and arranges to have one bitmap printed on each page. Multiple
                   61591:  * bitmaps per input file work.
                   61592:  *
                   61593:  */
                   61594: 
                   61595:     fp_in = fp;                                /* everyone reads from this file */
                   61596: 
                   61597:     while ( dimensions() == TRUE )  {
                   61598:        patcount = 0;
                   61599:        total = scanlines * patterns;
                   61600: 
                   61601:        bbox[0] = MAX(bbox[0], patterns*16);    /* for BoundingBox comment */
                   61602:        bbox[1] = MAX(bbox[1], scanlines);
                   61603: 
                   61604:        redirect(++page);
                   61605:        fprintf(fp_out, "%s %d %d\n", PAGE, page, printed+1);
                   61606:        fprintf(fp_out, "/saveobj save def\n");
                   61607:        writerequest(printed+1, fp_out);
                   61608: 
                   61609:        fprintf(fp_out, "%s ", (v8format == TRUE && v8undo == FALSE) ? "true" : "false");
                   61610:        fprintf(fp_out, "%s ", (flip == TRUE) ? "true" : "false");
                   61611:        fprintf(fp_out, "%d %d bitmap\n", patterns * 16, scanlines);
                   61612: 
                   61613:        while ( patcount != total && (count = getc(fp)) != EOF )  {
                   61614:            addrast(count);
                   61615:            patcount += (count & 0177);
                   61616:            if ( patcount % patterns == 0 )
                   61617:                putrast();
                   61618:        }   /* End while */
                   61619: 
                   61620:        if ( debug == ON )
                   61621:            fprintf(stderr, "patterns = %d, scanlines = %d, patcount = %d\n", patterns, scanlines, patcount);
                   61622: 
                   61623:        if ( total != patcount )
                   61624:            error(FATAL, "bitmap format error");
                   61625: 
                   61626:        if ( fp_out == stdout ) printed++;
                   61627: 
                   61628:        fprintf(fp_out, "showpage\n");
                   61629:        fprintf(fp_out, "saveobj restore\n");
                   61630:        fprintf(fp_out, "%s %d %d\n", ENDPAGE, page, printed);
                   61631:     }  /* End while */
                   61632: 
                   61633: }   /* End of bitmap */
                   61634: 
                   61635: /*****************************************************************************/
                   61636: 
                   61637: dimensions()
                   61638: 
                   61639: {
                   61640: 
                   61641:     int                ox, oy;                 /* coordinates of the origin */
                   61642:     int                cx, cy;                 /* and right corner of the bitmap */
                   61643:     int                i;                      /* loop index */
                   61644: 
                   61645: /*
                   61646:  *
                   61647:  * Determines the dimensions and type of the next bitmap. Eighth edition bitmaps
                   61648:  * have a zero in the first 16 bits. If valid dimensions are read TRUE is returned
                   61649:  * to the caller. Changed so the check of whether we're done (by testing scanlines
                   61650:  * or patterns) comes before the malloc().
                   61651:  *
                   61652:  */
                   61653: 
                   61654:     if ( (scanlines = getint()) == 0 )  {
                   61655:        ox = getint();
                   61656:        oy = getint();
                   61657:        cx = getint();
                   61658:        cy = getint();
                   61659:        scanlines = cy - oy;
                   61660:        patterns = (cx - ox + 15) / 16;
                   61661:        v8format = TRUE;
                   61662:     } else patterns = getint();
                   61663: 
                   61664:     if ( scanlines <= 0 || patterns <= 0 )     /* done - don't do the malloc() */
                   61665:        return(FALSE);
                   61666: 
                   61667:     if ( raster != NULL ) free(raster);
                   61668:     if ( prevrast != NULL ) free(prevrast);
                   61669: 
                   61670:     if ( (rptr = raster = (char *) malloc(patterns * 2)) == NULL )
                   61671:        error(FATAL, "no memory");
                   61672: 
                   61673:     if ( (prevrast = (char *) malloc(patterns * 2)) == NULL )
                   61674:        error(FATAL, "no memory");
                   61675: 
                   61676:     for ( i = 0; i < patterns * 2; i++ )
                   61677:        *(prevrast+i) = 0377;
                   61678: 
                   61679:     eptr = rptr + patterns * 2;
                   61680: 
                   61681:     return(TRUE);
                   61682: 
                   61683: }   /* End of dimensions */
                   61684: 
                   61685: /*****************************************************************************/
                   61686: 
                   61687: addrast(count)
                   61688: 
                   61689:     int                count;                  /* repeat count for next pattern */
                   61690: 
                   61691: {
                   61692: 
                   61693:     int                size;                   /* number of bytes in next pattern */
                   61694:     int                l, h;                   /* high and low bytes */
                   61695:     int                i, j;                   /* loop indices */
                   61696: 
                   61697: /*
                   61698:  *
                   61699:  * Reads the input file and adds the appropriate number of bytes to the output
                   61700:  * raster line. If count has bit 7 on, one 16 bit pattern is read and repeated
                   61701:  * count & 0177 times. If bit 7 is off, count is the number of patterns read from
                   61702:  * fp_in - each one repeated once.
                   61703:  *
                   61704:  */
                   61705: 
                   61706:     if ( count & 0200 )  {
                   61707:        size = 1;
                   61708:        count &= 0177;
                   61709:     } else {
                   61710:        size = count;
                   61711:        count = 1;
                   61712:     }  /* End else */
                   61713: 
                   61714:     for ( i = size; i > 0; i-- )  {
                   61715:        if ( (l = getc(fp_in)) == EOF || (h = getc(fp_in)) == EOF )
                   61716:            return;
                   61717:        for ( j = count; j > 0; j-- )  {
                   61718:            *rptr++ = l;
                   61719:            *rptr++ = h;
                   61720:        }   /* End for */
                   61721:     }  /* End for */
                   61722: 
                   61723: }   /* End of addrast */
                   61724: 
                   61725: /*****************************************************************************/
                   61726: 
                   61727: putrast()
                   61728: 
                   61729: {
                   61730: 
                   61731:     char       *p1, *p2;               /* starting and ending patterns */
                   61732:     int                n;                      /* set to bytes per pattern */
                   61733:     int                i;                      /* loop index */
                   61734: 
                   61735: /*
                   61736:  *
                   61737:  * Takes the scanline that's been saved in *raster, encodes it according to the
                   61738:  * value that's been assigned to bytespp, and writes the result to *fp_out. Each
                   61739:  * line in the output bitmap is terminated by a 0 on a line by itself.
                   61740:  *
                   61741:  */
                   61742: 
                   61743:     n = (bytespp <= 0) ? 2 * patterns : bytespp;
                   61744: 
                   61745:     if ( v8format == TRUE && v8undo == TRUE )
                   61746:        for ( i = 0; i < patterns * 2; i++ )
                   61747:            *(raster+i) = (*(prevrast+i) ^= *(raster+i));
                   61748: 
                   61749:     for ( p1 = raster, p2 = raster + n; p1 < eptr; p1 = p2 )
                   61750:        if ( patncmp(p1, n) == TRUE )  {
                   61751:            while ( patncmp(p2, n) == TRUE ) p2 += n;
                   61752:            p2 += n;
                   61753:            fprintf(fp_out, "%d ", n);
                   61754:            for ( i = 0; i < n; i++, p1++ )
                   61755:                fprintf(fp_out, "%.2X", ((int) *p1) & 0377);
                   61756:            fprintf(fp_out, " %d\n", (p2 - p1) / n);
                   61757:        } else {
                   61758:            while ( p2 < eptr && patncmp(p2, n) == FALSE ) p2 += n;
                   61759:            if ( p2 > eptr ) p2 = eptr;
                   61760:            fprintf(fp_out, "%d ", p2 - p1);
                   61761:            while ( p1 < p2 )
                   61762:                fprintf(fp_out, "%.2X", ((int) *p1++) & 0377);
                   61763:            fprintf(fp_out, " 0\n");
                   61764:        }   /* End else */
                   61765: 
                   61766:     fprintf(fp_out, "0\n");
                   61767: 
                   61768:     rptr = raster;
                   61769: 
                   61770: }   /* End of putrast */
                   61771: 
                   61772: /*****************************************************************************/
                   61773: 
                   61774: patncmp(p1, n)
                   61775: 
                   61776:     char       *p1;                    /* first patterns starts here */
                   61777:     int                n;                      /* and extends this many bytes */
                   61778: 
                   61779: {
                   61780: 
                   61781:     char       *p2;                    /* address of the second pattern */
                   61782: 
                   61783: /*
                   61784:  *
                   61785:  * Compares the two n byte patterns *p1 and *(p1+n). FALSE is returned if they're
                   61786:  * different or extend past the end of the current raster line.
                   61787:  *
                   61788:  */
                   61789: 
                   61790:     p2 = p1 + n;
                   61791: 
                   61792:     for ( ; n > 0; n--, p1++, p2++ )
                   61793:        if ( p2 >= eptr || *p1 != *p2 )
                   61794:            return(FALSE);
                   61795: 
                   61796:     return(TRUE);
                   61797: 
                   61798: }   /* End of patncmp */
                   61799: 
                   61800: /*****************************************************************************/
                   61801: 
                   61802: getint()
                   61803: 
                   61804: {
                   61805: 
                   61806:     int                h, l;                   /* high and low bytes */
                   61807: 
                   61808: /*
                   61809:  *
                   61810:  * Reads the next two bytes from *fp_in and returns the resulting integer.
                   61811:  *
                   61812:  */
                   61813: 
                   61814:     if ( (l = getc(fp_in)) == EOF || (h = getc(fp_in)) == EOF )
                   61815:        return(-1);
                   61816: 
                   61817:     return((h & 0377) << 8 | (l & 0377));
                   61818: 
                   61819: }   /* End of getint */
                   61820: 
                   61821: /*****************************************************************************/
                   61822: 
                   61823: redirect(pg)
                   61824: 
                   61825:     int                pg;                     /* next page we're printing */
                   61826: 
                   61827: {
                   61828: 
                   61829:     static FILE        *fp_null = NULL;        /* if output is turned off */
                   61830: 
                   61831: /*
                   61832:  *
                   61833:  * If we're not supposed to print page pg, fp_out will be directed to /dev/null,
                   61834:  * otherwise output goes to stdout.
                   61835:  *
                   61836:  */
                   61837: 
                   61838:     if ( pg >= 0 && in_olist(pg) == ON )
                   61839:        fp_out = stdout;
                   61840:     else if ( (fp_out = fp_null) == NULL )
                   61841:        fp_out = fp_null = fopen("/dev/null", "w");
                   61842: 
                   61843: }   /* End of redirect */
                   61844: 
                   61845: /*****************************************************************************/
                   61846: 
                   61847: 0707070014230732621006400057030057030000010016100522633075500003300000007146post.src/postdmd/postdmd.1.ds dQ /usr/lib/postscript
                   61848: .TH POSTDMD 1
                   61849: .SH NAME
                   61850: .B postdmd
                   61851: \- PostScript translator for
                   61852: .SM DMD
                   61853: bitmap files
                   61854: .SH SYNOPSIS
                   61855: \*(mBpostdmd\f1
                   61856: .OP "" options []
                   61857: .OP "" files []
                   61858: .SH DESCRIPTION
                   61859: .B postdmd
                   61860: translates
                   61861: .SM DMD
                   61862: bitmap
                   61863: .IR files ,
                   61864: as produced by
                   61865: .BR dmdps ,
                   61866: or
                   61867: .I files
                   61868: written in the Ninth Edition
                   61869: .BR bitfile (9.5)
                   61870: format
                   61871: into PostScript and writes the results on the
                   61872: standard output.
                   61873: If no
                   61874: .I files
                   61875: are specified, or if
                   61876: .OP \-
                   61877: is one of the input
                   61878: .IR files ,
                   61879: the standard input is read.
                   61880: The following
                   61881: .I options
                   61882: are understood:
                   61883: .TP 0.75i
                   61884: .OP \-b num
                   61885: Pack the bitmap in the output file using
                   61886: .I num
                   61887: byte patterns.
                   61888: A value of 0 turns off all packing of the output file.
                   61889: By default
                   61890: .I num
                   61891: is 6.
                   61892: .TP
                   61893: .OP \-c num
                   61894: Print
                   61895: .I num
                   61896: copies of each page.
                   61897: By default only one copy is printed.
                   61898: .TP
                   61899: .OP \-f
                   61900: Flip the sense of the bits in
                   61901: .I files
                   61902: before printing the bitmaps.
                   61903: .TP
                   61904: .OP \-m num
                   61905: Magnify each logical page by the factor
                   61906: .IR num .
                   61907: Pages are scaled uniformly about the origin,
                   61908: which by default is located at the center of
                   61909: each page.
                   61910: The default magnification is 1.0.
                   61911: .TP
                   61912: .OP \-n num
                   61913: Print
                   61914: .I num
                   61915: logical pages on each piece of paper,
                   61916: where
                   61917: .I num
                   61918: can be any positive integer.
                   61919: By default
                   61920: .I num
                   61921: is set to 1.
                   61922: .TP
                   61923: .OP \-o list
                   61924: Print pages whose numbers are given in the comma-separated
                   61925: .IR list .
                   61926: The list contains single numbers
                   61927: .I N
                   61928: and ranges
                   61929: .IR N1\-\|N2 .
                   61930: A missing
                   61931: .I N1
                   61932: means the lowest numbered page, a missing
                   61933: .I N2
                   61934: means the highest.
                   61935: .TP
                   61936: .OP \-p mode
                   61937: Print
                   61938: .I files
                   61939: in either \*(mBportrait\fP or \*(mBlandscape\fP
                   61940: .IR mode .
                   61941: Only the first character of
                   61942: .I mode
                   61943: is significant.
                   61944: The default
                   61945: .I mode
                   61946: is \*(mBportrait\fP.
                   61947: .TP
                   61948: .OP \-u
                   61949: Disables much of the unpacking for Eighth
                   61950: Edition bitmap files.
                   61951: Usually results in smaller output files that take longer to print.
                   61952: Not a recommended option.
                   61953: .TP
                   61954: .OP \-x num
                   61955: Translate the origin
                   61956: .I num
                   61957: inches along the positive x axis.
                   61958: The default
                   61959: coordinate system has the origin fixed at the
                   61960: center of the page, with positive
                   61961: x to the right and positive y up the page.
                   61962: Positive
                   61963: .I num
                   61964: moves everything right.
                   61965: The default offset is 0 inches.
                   61966: .TP
                   61967: .OP \-y num
                   61968: Translate the origin
                   61969: .I num
                   61970: inches along the positive y axis.
                   61971: Positive
                   61972: .I num
                   61973: moves everything up the page.
                   61974: The default offset is 0.
                   61975: .TP
                   61976: .TP
                   61977: .OP \-L file
                   61978: Use
                   61979: .I file
                   61980: as the PostScript prologue.
                   61981: .br
                   61982: The default is
                   61983: .MR \*(dQ/postdmd.ps .
                   61984: .PP
                   61985: Three options allow insertion of arbitrary PostScript
                   61986: at controlled points in the translation process:
                   61987: .TP 0.75i
                   61988: .OP \-C file
                   61989: Copy
                   61990: .I file
                   61991: to the output file;
                   61992: .I file
                   61993: must contain legitimate PostScript.
                   61994: .TP
                   61995: .OP \-P string
                   61996: Include
                   61997: .I string
                   61998: in the output file;
                   61999: .I string
                   62000: must be legitimate PostScript.
                   62001: .TP
                   62002: .OP \-R action
                   62003: Requests special
                   62004: .I action
                   62005: (e.g.,
                   62006: .MR manualfeed )
                   62007: on a per page or global basis.
                   62008: The
                   62009: .I action
                   62010: string can be given as
                   62011: .IR request,
                   62012: .IM request : page\f1\|,
                   62013: or
                   62014: .IM request : page : file\f1\|.
                   62015: If
                   62016: .I page
                   62017: is omitted or given as 0, the request applies to all pages.
                   62018: If
                   62019: .I file
                   62020: is omitted, the request lookup is done in
                   62021: .MR \*(dQ/ps.requests .
                   62022: .PP
                   62023: Only one bitmap is printed on each logical page, and each of the input
                   62024: .I files
                   62025: must contain complete descriptions of at least one bitmap.
                   62026: Decreasing the pattern size using the
                   62027: .OP \-b
                   62028: option may help throughput on printers with fast processors
                   62029: (e.g., \s-1PS\s+1-810),
                   62030: while increasing the pattern size will often be the right move
                   62031: on older models
                   62032: (.e.g, \s-1PS\s+1-800).
                   62033: .SH DIAGNOSTICS
                   62034: A 0 exit status is returned if
                   62035: .I files
                   62036: were successfully processed.
                   62037: .br
                   62038: .ne 4v
                   62039: .SH FILES
                   62040: .MW \*(dQ/postdmd.ps
                   62041: .br
                   62042: .MW \*(dQ/forms.ps
                   62043: .br
                   62044: .MW \*(dQ/ps.requests
                   62045: .SH SEE ALSO
                   62046: .BR dpost (1),
                   62047: .BR postdaisy (1),
                   62048: .BR postio (1),
                   62049: .BR postmd (1),
                   62050: .BR postprint (1),
                   62051: .BR postreverse (1),
                   62052: .BR posttek (1)
                   62053: 0707070014230735711006440057030057030000010015150522627503500003400000005002post.src/postdmd/postdmd.ps%
                   62054: % Version 3.3.2 prologue for DMD bitmap files.
                   62055: %
                   62056: 
                   62057: /#copies 1 store
                   62058: /aspectratio 1 def
                   62059: /formsperpage 1 def
                   62060: /landscape false def
                   62061: /magnification 1 def
                   62062: /margin 0 def
                   62063: /orientation 0 def
                   62064: /rotation 1 def
                   62065: /screenres 100 def
                   62066: /xoffset 0 def
                   62067: /yoffset 0 def
                   62068: 
                   62069: /useclippath true def
                   62070: /pagebbox [0 0 612 792] def
                   62071: 
                   62072: /inch {72 mul} bind def
                   62073: /min {2 copy gt {exch} if pop} bind def
                   62074: 
                   62075: /setup {
                   62076:        counttomark 2 idiv {def} repeat pop
                   62077: 
                   62078:        landscape {/orientation 90 orientation add def} if
                   62079: 
                   62080:        pagedimensions
                   62081:        xcenter ycenter translate
                   62082:        orientation rotation mul rotate
                   62083:        xoffset inch yoffset inch translate
                   62084:        magnification dup aspectratio mul scale
                   62085: 
                   62086:        /height height margin sub def
                   62087:        /width width margin sub def
                   62088: } def
                   62089: 
                   62090: /pagedimensions {
                   62091:        useclippath {
                   62092:                /pagebbox [clippath pathbbox newpath] def
                   62093:        } if
                   62094:        pagebbox aload pop
                   62095:        4 -1 roll exch 4 1 roll 4 copy
                   62096:        landscape {4 2 roll} if
                   62097:        sub /width exch def
                   62098:        sub /height exch def
                   62099:        add 2 div /xcenter exch def
                   62100:        add 2 div /ycenter exch def
                   62101:        userdict /gotpagebbox true put
                   62102: } def
                   62103: 
                   62104: /pagesetup {/page exch def} bind def
                   62105: 
                   62106: /bitmap {
                   62107:        /scanlines exch def
                   62108:        /scanlength exch def
                   62109:        /flip exch def
                   62110:        /v8format exch def
                   62111: 
                   62112:        /bytelength scanlength 8 idiv def
                   62113:        /picstr bytelength string def
                   62114:        /lpicstr bytelength string def
                   62115:        /bytelength bytelength 1 sub def
                   62116: 
                   62117:        gsave
                   62118: 
                   62119: % First the overall scaling.
                   62120: 
                   62121:        height scanlines div width scanlength div min
                   62122:        72 screenres div min
                   62123:        dup scale
                   62124: 
                   62125: % Followed by the one for the unit square.
                   62126: 
                   62127:        scanlength neg 2 div scanlines neg 2 div translate
                   62128:        scanlength scanlines scale
                   62129:        v8format {getv8bitmap} {getbitmap} ifelse
                   62130:        grestore
                   62131: } bind def
                   62132: 
                   62133: /getbitmap {
                   62134:        scanlength scanlines flip [scanlength 0 0 scanlines neg 0 scanlines] {
                   62135:                0 {
                   62136:                        currentfile token pop dup
                   62137:                        0 eq {pop pop exit} if
                   62138:                        /charcount exch def
                   62139:                        picstr 1 index charcount getinterval
                   62140:                        /repl exch def
                   62141:                        currentfile repl readhexstring pop pop
                   62142:                        charcount add
                   62143:                        currentfile token pop {
                   62144:                                picstr 1 index repl putinterval
                   62145:                                charcount add
                   62146:                        } repeat
                   62147:                } loop
                   62148:                picstr
                   62149:        } imagemask
                   62150: } bind def
                   62151: 
                   62152: /getv8bitmap {
                   62153:        scanlength scanlines flip not [scanlength 0 0 scanlines neg 0 scanlines] {
                   62154:                0 {
                   62155:                        currentfile token pop dup
                   62156:                        0 eq {pop pop exit} if
                   62157:                        /charcount exch def
                   62158:                        picstr 1 index charcount getinterval
                   62159:                        /repl exch def
                   62160:                        currentfile repl readhexstring pop pop
                   62161:                        charcount add
                   62162:                        currentfile token pop {
                   62163:                                picstr 1 index repl putinterval
                   62164:                                charcount add
                   62165:                        } repeat
                   62166:                } loop
                   62167:                0 0 picstr {
                   62168:                        exch lpicstr exch get xor
                   62169:                        lpicstr exch 2 index exch put
                   62170:                        1 add dup
                   62171:                } forall
                   62172:                pop pop lpicstr
                   62173:        } imagemask
                   62174: } bind def
                   62175: 
                   62176: /done {/lastpage where {pop lastpage} if} def
                   62177: 0707070014230101030407550057030057030000020322170522633075700002100000000000post.src/postgif0707070014230102111006400057030057030000010225450522633075700003300000005276post.src/postgif/postgif.1.ds dQ /usr/lib/postscript
                   62178: .TH POSTGIF 1
                   62179: .SH NAME
                   62180: .B postgif
                   62181: \- PostScript translator for
                   62182: .SM GIF
                   62183: files
                   62184: .SH SYNOPSIS
                   62185: \*(mBpostgif\f1
                   62186: .OP "" options []
                   62187: .OP "" files []
                   62188: .SH DESCRIPTION
                   62189: .B postgif
                   62190: translates Graphics Interchange Format (\s-1GIF\s+1)
                   62191: .I files
                   62192: into PostScript and writes the results on the
                   62193: standard output.
                   62194: If no
                   62195: .I files
                   62196: are specified, or if
                   62197: .OP \-
                   62198: is one of the input
                   62199: .IR files ,
                   62200: the standard input is read.
                   62201: The following
                   62202: .I options
                   62203: are understood:
                   62204: .TP 0.75i
                   62205: .OP \-c num
                   62206: Print
                   62207: .I num
                   62208: copies of each page.
                   62209: By default only one copy is printed.
                   62210: .TP
                   62211: .OP \-f
                   62212: Flip the sense of the bits in
                   62213: .I files
                   62214: before printing the pixmaps.
                   62215: .TP
                   62216: .OP \-g
                   62217: Generate picture in gray instead of color
                   62218: .TP
                   62219: .OP \-m num
                   62220: Magnify each logical page by the factor
                   62221: .IR num .
                   62222: Pages are scaled uniformly about the origin,
                   62223: which by default is located at the center of
                   62224: each page.
                   62225: The default magnification is 1.0.
                   62226: .TP
                   62227: .OP \-n num
                   62228: Print
                   62229: .I num
                   62230: logical pages on each piece of paper,
                   62231: where
                   62232: .I num
                   62233: can be any positive integer.
                   62234: By default
                   62235: .I num
                   62236: is set to 1.
                   62237: .TP
                   62238: .OP \-o list
                   62239: Print pages whose numbers are given in the comma-separated
                   62240: .IR list .
                   62241: The list contains single numbers
                   62242: .I N
                   62243: and ranges
                   62244: .IR N1\-\|N2 .
                   62245: A missing
                   62246: .I N1
                   62247: means the lowest numbered page, a missing
                   62248: .I N2
                   62249: means the highest.
                   62250: .TP
                   62251: .OP \-p mode
                   62252: Print
                   62253: .I files
                   62254: in either \*(mBportrait\fP or \*(mBlandscape\fP
                   62255: .IR mode .
                   62256: Only the first character of
                   62257: .I mode
                   62258: is significant.
                   62259: The default
                   62260: .I mode
                   62261: is \*(mBportrait\fP.
                   62262: .TP
                   62263: .OP \-x num
                   62264: Translate the origin
                   62265: .I num
                   62266: inches along the positive x axis.
                   62267: The default
                   62268: coordinate system has the origin fixed at the
                   62269: center of the page, with positive
                   62270: x to the right and positive y up the page.
                   62271: Positive
                   62272: .I num
                   62273: moves everything right.
                   62274: The default offset is 0 inches.
                   62275: .TP
                   62276: .OP \-y num
                   62277: Translate the origin
                   62278: .I num
                   62279: inches along the positive y axis.
                   62280: Positive
                   62281: .I num
                   62282: moves everything up the page.
                   62283: The default offset is 0.
                   62284: .TP
                   62285: .OP \-L file
                   62286: Use
                   62287: .I file
                   62288: as the PostScript prologue.
                   62289: .br
                   62290: The default is
                   62291: .MR \*(dQ/postgif.ps .
                   62292: .PP
                   62293: Two options allow insertion of arbitrary PostScript
                   62294: at controlled points in the translation process:
                   62295: .TP 0.75i
                   62296: .OP \-C file
                   62297: Copy
                   62298: .I file
                   62299: to the output file;
                   62300: .I file
                   62301: must contain legitimate PostScript.
                   62302: .TP
                   62303: .OP \-P string
                   62304: Include
                   62305: .I string
                   62306: in the output file;
                   62307: .I string
                   62308: must be legitimate PostScript.
                   62309: .PP
                   62310: Only one pixmap is printed on each logical page,
                   62311: and each of the input
                   62312: .I files
                   62313: must contain complete descriptions of at least one pixmap.
                   62314: .SH DIAGNOSTICS
                   62315: A 0 exit status is returned if
                   62316: .I files
                   62317: were successfully processed.
                   62318: .br
                   62319: .ne 1i
                   62320: .SH FILES
                   62321: .MW \*(dQ/postgif.ps
                   62322: .br
                   62323: .MW \*(dQ/forms.ps
                   62324: .SH SEE ALSO
                   62325: .BR dpost (1),
                   62326: .BR postdaisy (1),
                   62327: .BR postdmd (1),
                   62328: .BR postio (1),
                   62329: .BR postmd (1),
                   62330: .BR postprint (1),
                   62331: .BR postreverse (1),
                   62332: .BR posttek (1),
                   62333: .BR psencoding (1)
                   62334: 0707070014230077041006400057030057030000010311160522633075700003400000003720post.src/postgif/postgif.mkMAKE=/bin/make
                   62335: MAKEFILE=postgif.mk
                   62336: 
                   62337: SYSTEM=V9
                   62338: VERSION=3.3.2
                   62339: 
                   62340: GROUP=bin
                   62341: OWNER=bin
                   62342: 
                   62343: MAN1DIR=/tmp
                   62344: POSTBIN=/usr/bin/postscript
                   62345: POSTLIB=/usr/lib/postscript
                   62346: 
                   62347: COMMONDIR=../common
                   62348: 
                   62349: CFLGS=-O
                   62350: LDFLGS=-s
                   62351: 
                   62352: CFLAGS=$(CFLGS) -I$(COMMONDIR)
                   62353: LDFLAGS=$(LDFLGS)
                   62354: 
                   62355: HFILES=$(COMMONDIR)/comments.h\
                   62356:        $(COMMONDIR)/ext.h\
                   62357:        $(COMMONDIR)/gen.h\
                   62358:        $(COMMONDIR)/path.h
                   62359: 
                   62360: OFILES=postgif.o\
                   62361:        $(COMMONDIR)/glob.o\
                   62362:        $(COMMONDIR)/misc.o\
                   62363:        $(COMMONDIR)/request.o
                   62364: 
                   62365: all : postgif
                   62366: 
                   62367: install : all
                   62368:        @if [ ! -d "$(POSTBIN)" ]; then \
                   62369:            mkdir $(POSTBIN); \
                   62370:            chmod 755 $(POSTBIN); \
                   62371:            chgrp $(GROUP) $(POSTBIN); \
                   62372:            chown $(OWNER) $(POSTBIN); \
                   62373:        fi
                   62374:        @if [ ! -d "$(POSTLIB)" ]; then \
                   62375:            mkdir $(POSTLIB); \
                   62376:            chmod 755 $(POSTLIB); \
                   62377:            chgrp $(GROUP) $(POSTLIB); \
                   62378:            chown $(OWNER) $(POSTLIB); \
                   62379:        fi
                   62380:        cp postgif $(POSTBIN)/postgif
                   62381:        @chmod 755 $(POSTBIN)/postgif
                   62382:        @chgrp $(GROUP) $(POSTBIN)/postgif
                   62383:        @chown $(OWNER) $(POSTBIN)/postgif
                   62384:        cp postgif.ps $(POSTLIB)/postgif.ps
                   62385:        @chmod 644 $(POSTLIB)/postgif.ps
                   62386:        @chgrp $(GROUP) $(POSTLIB)/postgif.ps
                   62387:        @chown $(OWNER) $(POSTLIB)/postgif.ps
                   62388:        cp postgif.1 $(MAN1DIR)/postgif.1
                   62389:        @chmod 644 $(MAN1DIR)/postgif.1
                   62390:        @chgrp $(GROUP) $(MAN1DIR)/postgif.1
                   62391:        @chown $(OWNER) $(MAN1DIR)/postgif.1
                   62392: 
                   62393: clean :
                   62394:        rm -f *.o
                   62395: 
                   62396: clobber : clean
                   62397:        rm -f postgif
                   62398: 
                   62399: postgif : $(OFILES)
                   62400:        $(CC) $(CFLAGS) $(LDFLAGS) -o postgif $(OFILES) -lm
                   62401: 
                   62402: postgif.o : $(HFILES)
                   62403: 
                   62404: $(COMMONDIR)/glob.o\
                   62405: $(COMMONDIR)/misc.o\
                   62406: $(COMMONDIR)/request.o :
                   62407:        @cd $(COMMONDIR); $(MAKE) -f common.mk `basename $@`
                   62408: 
                   62409: changes :
                   62410:        @trap "" 1 2 3 15; \
                   62411:        sed \
                   62412:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
                   62413:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
                   62414:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
                   62415:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
                   62416:            -e "s'^MAN1DIR=.*'MAN1DIR=$(MAN1DIR)'" \
                   62417:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
                   62418:            -e "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" \
                   62419:        $(MAKEFILE) >XXX.mk; \
                   62420:        mv XXX.mk $(MAKEFILE); \
                   62421:        sed \
                   62422:            -e "s'^.ds dQ.*'.ds dQ $(POSTLIB)'" \
                   62423:        postgif.1 >XXX.1; \
                   62424:        mv XXX.1 postgif.1
                   62425: 
                   62426: 0707070014230101061006440057030057030000010322000522627503600003300000044005post.src/postgif/postgif.c
                   62427: #include <stdio.h>
                   62428: #include <string.h>
                   62429: #include <signal.h>
                   62430: #include <ctype.h>
                   62431: #include <fcntl.h>
                   62432: 
                   62433: #include "comments.h"
                   62434: #include "gen.h"
                   62435: #include "path.h"
                   62436: #include "ext.h"
                   62437: 
                   62438: #define dbprt  if (debug) fprintf
                   62439: 
                   62440: char   *optnames = "a:c:fglm:n:o:p:x:y:C:E:DG:IL:P:";
                   62441: char    *prologue = POSTGIF;           /* default PostScript prologue */
                   62442: char    *formfile = FORMFILE;           /* stuff for multiple pages per sheet */
                   62443: int     formsperpage = 1;               /* page images on each piece of paper */
                   62444: int    copies = 1;                     /* and this many copies of each sheet */
                   62445: int     page = 0;                       /* last page we worked on */
                   62446: int     printed = 0;                    /* and the number of pages printed */
                   62447: 
                   62448: extern char *malloc();
                   62449: extern void free();
                   62450: extern double atof(), pow();
                   62451: 
                   62452: unsigned char ibuf[BUFSIZ];
                   62453: unsigned char *cmap, *gcmap, *lcmap;
                   62454: unsigned char *gmap, *ggmap, *lgmap;
                   62455: unsigned char *pmap;
                   62456: double gamma;
                   62457: float cr = 0.3, cg = 0.59, cb = 0.11;
                   62458: int maplength, gmaplength, lmaplength;
                   62459: int scrwidth, scrheight;
                   62460: int gcolormap, lcolormap;
                   62461: int bitperpixel, background;
                   62462: int imageleft, imagetop;
                   62463: int imagewidth, imageheight;
                   62464: int interlaced, lbitperpixel;
                   62465: int gray = 0;
                   62466: int gammaflag = 0;
                   62467: int negative = 0;
                   62468: int terminate = 0;
                   62469: int codesize, clearcode, endcode, curstblsize, pmindex, byteinibuf, bitsleft;
                   62470: int prefix[4096], suffix[4096], cstbl[4096];
                   62471: int bburx = -32767, bbury = -32767;
                   62472: FILE *fp_in = NULL;
                   62473: FILE *fp_out = stdout;
                   62474: 
                   62475: char *
                   62476: allocate(size)
                   62477:     int size;
                   62478: {
                   62479:     char *p;
                   62480: 
                   62481:     if ((p = malloc(size)) == NULL) error(FATAL, "not enough memory");
                   62482:     return(p);
                   62483: }
                   62484: 
                   62485: void
                   62486: puthex(c, fp)
                   62487:     unsigned char c;
                   62488:     FILE *fp;
                   62489: {
                   62490:     static char hextbl[16] = {
                   62491:        '0', '1', '2', '3', '4', '5', '6', '7',
                   62492:        '8', '9', 'a', 'b', 'c', 'd', 'e', 'f',
                   62493:     };
                   62494: 
                   62495:     putc(hextbl[(c >> 4) & 017], fp);
                   62496:     putc(hextbl[c & 017], fp);
                   62497: }
                   62498: 
                   62499: void
                   62500: setcolormap(bp)
                   62501:     int bp;
                   62502: {
                   62503:     int i, entries = 1, scale = 1;
                   62504:     unsigned char *p, *q;
                   62505: 
                   62506:     for (i = 0; i < bp; i++) entries *= 2;
                   62507:     for (i = 0; i < 8 - bp; i++) scale *= 2;
                   62508:     gcmap = (unsigned char *) allocate(entries*3);
                   62509:     ggmap = (unsigned char *) allocate(entries);
                   62510:     gmaplength = entries;
                   62511:     for (i = 0, p = gcmap, q = ggmap; i < 256; i += scale, p += 3, q++) {
                   62512:        if (negative) {
                   62513:            *p = 255 - i; p[1] = *p; p[2] = *p;
                   62514:            *q = *p;
                   62515:        }
                   62516:        else {
                   62517:            *p = i; p[1] = i; p[2] = i;
                   62518:            *q = i;
                   62519:        }
                   62520:     }
                   62521:     if (gammaflag)
                   62522:        for (i = 0, p = gcmap; i < 256; i += scale, p += 3) {
                   62523:            *p = (unsigned char) (pow((double) *p/256.0, gamma)*256);
                   62524:            p[1] = *p; p[2] = *p;
                   62525:        }
                   62526: dbprt(stderr,"default color map:\n");
                   62527: for (i = 0; i < entries*3; i += 3)
                   62528: dbprt(stderr, "%d, %d, %d\n", gcmap[i], gcmap[i+1], gcmap[i+2]);
                   62529: }
                   62530: 
                   62531: void
                   62532: readgcolormap(bp)
                   62533:     int bp;
                   62534: {
                   62535:     int i, entries = 1;
                   62536:     unsigned char *p, *q;
                   62537: 
                   62538:     for (i = 0; i < bp; i++) entries *= 2;
                   62539:     gcmap = (unsigned char *) allocate(entries*3);
                   62540:     ggmap = (unsigned char *) allocate(entries);
                   62541:     gmaplength = entries;
                   62542:     fread(gcmap, sizeof(*gcmap), entries*3, fp_in);
                   62543:     if (negative)
                   62544:        for (i = 0, p = gcmap; i < entries*3; i++, p++) *p = 255 - *p;
                   62545:     for (i = 0, p = gcmap, q = ggmap; i < entries; i++, p += 3, q++)
                   62546:        *q = cr*(int)p[0] + cg*(int)p[1] + cb*(int)p[2] + 0.5;
                   62547:     if (gammaflag)
                   62548:        for (i = 0, p = gcmap; i < entries*3; i++, p++)
                   62549:            *p = (unsigned char) (pow((double) *p/256.0, gamma)*256);
                   62550: dbprt(stderr,"global color map:\n");
                   62551: for (i = 0; i < entries*3; i += 3)
                   62552: dbprt(stderr, "%d, %d, %d\n", gcmap[i], gcmap[i+1], gcmap[i+2]);
                   62553: }
                   62554: 
                   62555: void
                   62556: readlcolormap(bp)
                   62557:     int bp;
                   62558: {
                   62559:     int i, entries = 1;
                   62560:     unsigned char *p, *q;
                   62561: 
                   62562:     for (i = 0; i < bp; i++) entries *= 2;
                   62563:     lcmap = (unsigned char *) allocate(entries*3);
                   62564:     lgmap = (unsigned char *) allocate(entries);
                   62565:     lmaplength = entries;
                   62566:     fread(lcmap, sizeof(*lcmap), entries*3, fp_in);
                   62567:     if (negative)
                   62568:        for (i = 0, p = lcmap; i < entries*3; i++, p++) *p = 255 - *p;
                   62569:     for (i = 0, p = lcmap, q = lgmap; i < entries; i++, p += 3, q++)
                   62570:        *q = cr*(int)p[0] + cg*(int)p[1] + cb*(int)p[2] + 0.5;
                   62571:     if (gammaflag)
                   62572:        for (i = 0, p = lcmap; i < entries*3; i++, p++)
                   62573:            *p = (unsigned char) (pow((double) *p/256.0, gamma)*256);
                   62574: dbprt(stderr,"local color map:\n");
                   62575: for (i = 0; i < entries*3; i += 3)
                   62576: dbprt(stderr, "%d, %d, %d\n", lcmap[i], lcmap[i+1], lcmap[i+2]);
                   62577: }
                   62578: 
                   62579: void
                   62580: initstbl()
                   62581: {
                   62582:     int i, entries = 1, *p, *s;
                   62583: 
                   62584:     for (i = 0; i < codesize; i++) entries *= 2;
                   62585:     clearcode = entries;
                   62586:     endcode = clearcode + 1;
                   62587:     for (i = 0, p = prefix, s = suffix; i <= endcode; i++, p++, s++) {
                   62588:        *p = endcode;
                   62589:        *s = i;
                   62590:     }
                   62591:     curstblsize = endcode + 1;
                   62592:     pmindex = 0;
                   62593:     byteinibuf = 0;
                   62594:     bitsleft = 0;
                   62595: }
                   62596: 
                   62597: int
                   62598: nextbyte()
                   62599: {
                   62600:     static ibufindex;
                   62601: 
                   62602:     if (byteinibuf) {
                   62603:        byteinibuf--;
                   62604:        ibufindex++;
                   62605:     }
                   62606:     else {
                   62607:        fread(ibuf, sizeof(*ibuf), 1, fp_in);
                   62608:        byteinibuf = ibuf[0];
                   62609: dbprt(stderr, "byte count: %d\n", byteinibuf);
                   62610:        if (byteinibuf) fread(ibuf, sizeof(*ibuf), byteinibuf, fp_in);
                   62611:        else error(FATAL, "encounter zero byte count block before end code");
                   62612:        ibufindex = 0;
                   62613:        byteinibuf--;
                   62614:        ibufindex++;
                   62615:     }
                   62616:     return(ibuf[ibufindex-1]);
                   62617: }
                   62618: 
                   62619: int masktbl[25] = {
                   62620:     0, 01, 03, 07, 017, 037, 077, 0177, 0377, 0777, 01777, 03777, 07777,
                   62621:     017777, 037777, 077777, 0177777, 0377777, 0777777, 01777777, 03777777,
                   62622:     07777777, 017777777, 037777777, 077777777
                   62623: };
                   62624: 
                   62625: int
                   62626: getcode()
                   62627: {
                   62628:     int cs, c;
                   62629:     static int oldc;
                   62630: 
                   62631:     if (curstblsize < 4096) cs = cstbl[curstblsize];
                   62632:     else cs = 12;
                   62633:     while (bitsleft < cs) {
                   62634:        oldc = (oldc & masktbl[bitsleft]) | ((nextbyte() & 0377) << bitsleft);
                   62635:        bitsleft += 8;
                   62636:     }
                   62637:     c = oldc & masktbl[cs];
                   62638:     oldc = oldc >> cs;
                   62639:     bitsleft -= cs;
                   62640: /* dbprt(stderr, "code: %d %d %d\n", curstblsize, cs, c); */
                   62641:     return(c);
                   62642: }
                   62643: 
                   62644: void
                   62645: putcode(c)
                   62646:     int c;
                   62647: {
                   62648:     if (prefix[c] != endcode) {
                   62649:        putcode(prefix[c]);
                   62650:        pmap[pmindex] = suffix[c];
                   62651:        pmindex++;
                   62652:     }
                   62653:     else {
                   62654:        pmap[pmindex] = suffix[c];
                   62655:        pmindex++;
                   62656:     }
                   62657: }
                   62658: 
                   62659: int
                   62660: firstof(c)
                   62661:     int c;
                   62662: {
                   62663:     while (prefix[c] != endcode) c = prefix[c];
                   62664:     return(suffix[c]);
                   62665: }
                   62666: 
                   62667: void
                   62668: writeimage()
                   62669: {
                   62670:     int i, j, k;
                   62671: 
                   62672: dbprt(stderr, "pmindex: %d\n", pmindex);
                   62673:     fputs("save\n", fp_out);
                   62674:     fprintf(fp_out, "/codestr %d string def\n", imagewidth);
                   62675:     if (!gray) {
                   62676:        fprintf(fp_out, "/colortbl currentfile %d string readhexstring\n",
                   62677:            maplength*3);
                   62678:         for (i = 0; i < maplength; i++) puthex(cmap[i], fp_out);
                   62679:         fputs("\n", fp_out);
                   62680:         for (i = maplength ; i < maplength*2; i++) puthex(cmap[i], fp_out);
                   62681:         fputs("\n", fp_out);
                   62682:         for (i = maplength*2 ; i < maplength*3; i++) puthex(cmap[i], fp_out);
                   62683:         fputs("\npop def\n", fp_out);
                   62684:        fprintf(fp_out, "/graytbl currentfile %d string readhexstring\n",
                   62685:            maplength);
                   62686:         for (i = 0; i < maplength; i++) puthex(gmap[i], fp_out);
                   62687:         fputs("\npop def\n", fp_out);
                   62688:     }
                   62689:     fprintf(fp_out, "%s %d %d %d %d gifimage\n",
                   62690:        gray ? "true" : "false", imagewidth, imageheight,
                   62691:        scrwidth - imageleft - imagewidth, scrheight - imagetop - imageheight);
                   62692:     if (gray) {
                   62693:        if (interlaced) {
                   62694:            int *iltbl;
                   62695: 
                   62696:            iltbl = (int *) allocate(imageheight*sizeof(int));
                   62697:            j = 0;
                   62698:            for (i = 0; i < imageheight; i += 8) {
                   62699:                iltbl[i] = j;
                   62700:                j += imagewidth;
                   62701:            }
                   62702: dbprt(stderr, "pass1: %d\n", j);
                   62703:            for (i = 4; i < imageheight; i += 8) {
                   62704:                iltbl[i] = j;
                   62705:                j += imagewidth;
                   62706:            }
                   62707: dbprt(stderr, "pass2: %d\n", j);
                   62708:            for (i = 2; i < imageheight; i += 4) {
                   62709:                iltbl[i] = j;
                   62710:                j += imagewidth;
                   62711:            }
                   62712: dbprt(stderr, "pass3: %d\n", j);
                   62713:            for (i = 1; i < imageheight; i += 2) {
                   62714:                iltbl[i] = j;
                   62715:                j += imagewidth;
                   62716:            }
                   62717: dbprt(stderr, "pass4: %d\n", j);
                   62718: 
                   62719:            for (i = 0; i < imageheight; i++) {
                   62720:                k = iltbl[i];
                   62721:                for (j = 0; j < imagewidth; j++, k++)
                   62722:                    puthex(gmap[pmap[k]], fp_out);
                   62723:                fputs("\n", fp_out);
                   62724:            }
                   62725:        }
                   62726:        else {
                   62727:            for (i = 0, k = 0; i < imageheight; i++) {
                   62728:                for (j = 0; j < imagewidth; j++, k++)
                   62729:                    puthex(gmap[pmap[k]], fp_out);
                   62730:                fputs("\n", fp_out);
                   62731:            }
                   62732:        }
                   62733:     }
                   62734:     else {
                   62735:        if (interlaced) {
                   62736:            int *iltbl;
                   62737: 
                   62738:            iltbl = (int *) allocate(imageheight*sizeof(int));
                   62739:            j = 0;
                   62740:            for (i = 0; i < imageheight; i += 8) {
                   62741:                iltbl[i] = j;
                   62742:                j += imagewidth;
                   62743:            }
                   62744: dbprt(stderr, "pass1: %d\n", j);
                   62745:            for (i = 4; i < imageheight; i += 8) {
                   62746:                iltbl[i] = j;
                   62747:                j += imagewidth;
                   62748:            }
                   62749: dbprt(stderr, "pass2: %d\n", j);
                   62750:            for (i = 2; i < imageheight; i += 4) {
                   62751:                iltbl[i] = j;
                   62752:                j += imagewidth;
                   62753:            }
                   62754: dbprt(stderr, "pass3: %d\n", j);
                   62755:            for (i = 1; i < imageheight; i += 2) {
                   62756:                iltbl[i] = j;
                   62757:                j += imagewidth;
                   62758:            }
                   62759: dbprt(stderr, "pass4: %d\n", j);
                   62760: 
                   62761:            for (i = 0; i < imageheight; i++) {
                   62762:                k = iltbl[i];
                   62763:                for (j = 0; j < imagewidth; j++, k++) puthex(pmap[k], fp_out);
                   62764:                fputs("\n", fp_out);
                   62765:            }
                   62766:        }
                   62767:        else {
                   62768:            for (i = 0, k = 0; i < imageheight; i++) {
                   62769:                for (j = 0; j < imagewidth; j++, k++) puthex(pmap[k], fp_out);
                   62770:                fputs("\n", fp_out);
                   62771:            }
                   62772:        }
                   62773:     }
                   62774:     fputs("restore\n", fp_out);
                   62775: }
                   62776: 
                   62777: void
                   62778: readimage()
                   62779: {
                   62780:     int bytecount, zerobytecount = 0;
                   62781:     int code, oldcode;
                   62782: 
                   62783:     fread(ibuf, sizeof(*ibuf), 9, fp_in);
                   62784:     imageleft = ibuf[0] + 256*ibuf[1];
                   62785:     imagetop = ibuf[2] + 256*ibuf[3];
                   62786:     imagewidth = ibuf[4] + 256*ibuf[5];
                   62787:     imageheight = ibuf[6] + 256*ibuf[7];
                   62788:     lcolormap = ibuf[8] & 0200;
                   62789:     interlaced = ibuf[8] & 0100;
                   62790:     lbitperpixel = (ibuf[8] & 07) + 1;
                   62791: dbprt(stderr, "imageleft: %d\n", imageleft);
                   62792: dbprt(stderr, "imagetop: %d\n", imagetop);
                   62793: dbprt(stderr, "imagewidth: %d\n", imagewidth);
                   62794: dbprt(stderr, "imgaeheight: %d\n", imageheight);
                   62795: dbprt(stderr, "lcolormap: %d\n", lcolormap ? 1 : 0);
                   62796: dbprt(stderr, "interlaced: %d\n", interlaced ? 1 : 0);
                   62797: dbprt(stderr, "lbitperpixel: %d\n", lbitperpixel);
                   62798:     if (lcolormap) {
                   62799:        readlcolormap(lbitperpixel);
                   62800:        cmap = lcmap;
                   62801:        gmap = lgmap;
                   62802:        maplength = lmaplength;
                   62803:     }
                   62804: 
                   62805: dbprt(stderr, "start reading raster data\n");
                   62806:     fread(ibuf, sizeof(*ibuf), 1, fp_in);
                   62807:     codesize = ibuf[0];
                   62808: dbprt(stderr, "codesize: %d\n", codesize);
                   62809:     pmap = (unsigned char *) allocate(imagewidth*imageheight);
                   62810:     initstbl();
                   62811:     while ((code = getcode()) != endcode) {
                   62812:        if (code == clearcode) {
                   62813:            curstblsize = endcode + 1;
                   62814:            code = getcode();
                   62815:            putcode(code);
                   62816:            oldcode = code;
                   62817:        }
                   62818:        else if (code < curstblsize) {
                   62819:            putcode(code);
                   62820:            prefix[curstblsize] = oldcode;
                   62821:            suffix[curstblsize] = firstof(code);
                   62822:            curstblsize++;
                   62823:            oldcode = code;
                   62824:        }
                   62825:        else {
                   62826:           if (code != curstblsize) error(FATAL, "code out of order");
                   62827:           prefix[curstblsize] = oldcode;
                   62828:           suffix[curstblsize] = firstof(oldcode);
                   62829:           curstblsize++;
                   62830:           putcode(curstblsize-1);
                   62831:           oldcode = code;
                   62832:        }
                   62833:     }
                   62834: dbprt(stderr, "finish reading raster data\n");
                   62835: 
                   62836:     /* read the rest of the raster data */
                   62837:     do {
                   62838:        fread(ibuf, sizeof(*ibuf), 1, fp_in);
                   62839:        bytecount = ibuf[0];
                   62840: dbprt(stderr, "byte count: %d\n", bytecount);
                   62841:        if (bytecount) fread(ibuf, sizeof(*ibuf), bytecount, fp_in);
                   62842:        else zerobytecount = 1;
                   62843:     } while (!zerobytecount);
                   62844: 
                   62845:     writeimage();
                   62846: 
                   62847:     if (lcolormap) {
                   62848:        cmap = gcmap;
                   62849:        gmap = ggmap;
                   62850:        maplength = gmaplength;
                   62851:        free(lcmap);
                   62852:        free(lgmap);
                   62853:     }
                   62854: }
                   62855: 
                   62856: void
                   62857: readextensionblock()
                   62858: {
                   62859:     int functioncode, bytecount, zerobytecount = 0;
                   62860: 
                   62861:     fread(ibuf, sizeof(*ibuf), 1, fp_in);
                   62862:     functioncode = ibuf[0];
                   62863: dbprt(stderr, "function code: %d\n", functioncode);
                   62864:     do {
                   62865:        fread(ibuf, sizeof(*ibuf), 1, fp_in);
                   62866:        bytecount = ibuf[0];
                   62867: dbprt(stderr, "byte count: %d\n", bytecount);
                   62868:        if (bytecount) fread(ibuf, sizeof(*ibuf), bytecount, fp_in);
                   62869:        else zerobytecount = 1;
                   62870:     } while (!zerobytecount);
                   62871: }
                   62872: 
                   62873: void
                   62874: writebgscr()
                   62875: {
                   62876:     fprintf(fp_out, "%s %d %d\n", PAGE, page, printed+1);
                   62877:     fputs("/saveobj save def\n", fp_out);
                   62878:     fprintf(fp_out, "%s: %d %d %d %d\n",
                   62879:        "%%PageBoundingBox", 0, 0, scrwidth, scrheight);
                   62880:     if (scrwidth > bburx) bburx = scrwidth;
                   62881:     if (scrheight > bbury) bbury = scrheight;
                   62882:     fprintf(fp_out, "%d %d gifscreen\n", scrwidth, scrheight);
                   62883: }
                   62884: 
                   62885: void
                   62886: writeendscr()
                   62887: {
                   62888:     if ( fp_out == stdout ) printed++;
                   62889:     fputs("showpage\n", fp_out);
                   62890:     fputs("saveobj restore\n", fp_out);
                   62891:     fprintf(fp_out, "%s %d %d\n", ENDPAGE, page, printed);
                   62892: }
                   62893: 
                   62894: void
                   62895: redirect(pg)
                   62896:     int                pg;                     /* next page we're printing */
                   62897: {
                   62898:     static FILE        *fp_null = NULL;        /* if output is turned off */
                   62899: 
                   62900:     if ( pg >= 0 && in_olist(pg) == ON )
                   62901:        fp_out = stdout;
                   62902:     else if ( (fp_out = fp_null) == NULL )
                   62903:        fp_out = fp_null = fopen("/dev/null", "w");
                   62904: 
                   62905: }
                   62906: 
                   62907: void
                   62908: readgif()
                   62909: {
                   62910:     int i, j, k;
                   62911: 
                   62912:     for (i = 0, j = 1, k = 0; i < 13; i++) {
                   62913:        for (; k < j; k++) cstbl[k] = i;
                   62914:        j *= 2;
                   62915:     }
                   62916: 
                   62917:     fread(ibuf, sizeof(*ibuf), 6, fp_in);
                   62918: dbprt(stderr, "%.6s\n", ibuf);
                   62919:     if (strncmp((char *)ibuf, "GIF87a", 6) != 0) {
                   62920:        fread(ibuf, sizeof(*ibuf), 122, fp_in);
                   62921:        fread(ibuf, sizeof(*ibuf), 6, fp_in);
                   62922: dbprt(stderr, "%.6s\n", ibuf);
                   62923:        if (strncmp((char *)ibuf, "GIF87a", 6) != 0)
                   62924:                 error(FATAL, "wrong GIF signature");
                   62925:     }
                   62926:     fread(ibuf, sizeof(*ibuf), 7, fp_in);
                   62927:     scrwidth = ibuf[0] + 256*ibuf[1];
                   62928:     scrheight = ibuf[2] + 256*ibuf[3];
                   62929:     gcolormap = ibuf[4] & 0200;
                   62930:     bitperpixel = (ibuf[4] & 07) + 1;
                   62931:     background = ibuf[5];
                   62932: dbprt(stderr, "scrwidth: %d\n", scrwidth);
                   62933: dbprt(stderr, "scrheight: %d\n", scrheight);
                   62934: dbprt(stderr, "gcolormap: %d\n", gcolormap ? 1 : 0);
                   62935: dbprt(stderr, "bitperpixel: %d\n", bitperpixel);
                   62936: dbprt(stderr, "background: %d\n", background);
                   62937:     if (ibuf[6] != 0) error(FATAL, "wrong screen descriptor");
                   62938:     if (gcolormap) readgcolormap(bitperpixel);
                   62939:     else setcolormap(bitperpixel);
                   62940: 
                   62941:     redirect(++page);
                   62942:     writebgscr();
                   62943: 
                   62944:     cmap = gcmap;
                   62945:     gmap = ggmap;
                   62946:     maplength = gmaplength;
                   62947: 
                   62948:     do {
                   62949:        fread(ibuf, sizeof(*ibuf), 1, fp_in);
                   62950:        if (ibuf[0] == ',') readimage();
                   62951:        else if (ibuf[0] == ';') terminate = 1;
                   62952:        else if (ibuf[0] == '!') readextensionblock();
                   62953:        else
                   62954:        error(FATAL, "wrong image separator character or wrong GIF terminator");
                   62955:     } while (!terminate);
                   62956: 
                   62957:     writeendscr();
                   62958: 
                   62959:     free(gcmap);
                   62960:     free(ggmap);
                   62961: }
                   62962: 
                   62963: void
                   62964: init_signals()
                   62965: {
                   62966: 
                   62967:     if ( signal(SIGINT, interrupt) == SIG_IGN )  {
                   62968:         signal(SIGINT, SIG_IGN);
                   62969:         signal(SIGQUIT, SIG_IGN);
                   62970:         signal(SIGHUP, SIG_IGN);
                   62971:     }
                   62972:     else {
                   62973:         signal(SIGHUP, interrupt);
                   62974:         signal(SIGQUIT, interrupt);
                   62975:     }
                   62976: 
                   62977:     signal(SIGTERM, interrupt);
                   62978: }
                   62979: 
                   62980: void
                   62981: header()
                   62982: {
                   62983:     int         ch;                     /* return value from getopt() */
                   62984:     int         old_optind = optind;    /* for restoring optind - should be 1 */
                   62985: 
                   62986:     while ( (ch = getopt(argc, argv, optnames)) != EOF )
                   62987:         if ( ch == 'L' )
                   62988:             prologue = optarg;
                   62989:         else if ( ch == '?' )
                   62990:             error(FATAL, "");
                   62991: 
                   62992:     optind = old_optind;                /* get ready for option scanning */
                   62993: 
                   62994:     fprintf(stdout, "%s", CONFORMING);
                   62995:     fprintf(stdout, "%s %s\n", VERSION, PROGRAMVERSION);
                   62996:     fprintf(stdout, "%s %s\n", BOUNDINGBOX, ATEND);
                   62997:     fprintf(stdout, "%s %s\n", PAGES, ATEND);
                   62998:     fprintf(stdout, "%s", ENDCOMMENTS);
                   62999: 
                   63000:     if ( cat(prologue) == FALSE )
                   63001:         error(FATAL, "can't read %s", prologue);
                   63002: 
                   63003:     fprintf(stdout, "%s", ENDPROLOG);
                   63004:     fprintf(stdout, "%s", BEGINSETUP);
                   63005:     fprintf(stdout, "mark\n");
                   63006: 
                   63007: }
                   63008: 
                   63009: void
                   63010: options()
                   63011: {
                   63012:     int                ch;                     /* return value from getopt() */
                   63013: 
                   63014:     while ( (ch = getopt(argc, argv, optnames)) != EOF )  {
                   63015:        switch ( ch )  {
                   63016: 
                   63017:            case 'a':                   /* aspect ratio */
                   63018:                    fprintf(stdout, "/aspectratio %s def\n", optarg);
                   63019:                    break;
                   63020: 
                   63021:            case 'c':                   /* copies */
                   63022:                    copies = atoi(optarg);
                   63023:                    fprintf(stdout, "/#copies %s store\n", optarg);
                   63024:                    break;
                   63025: 
                   63026:            case 'f':
                   63027:                    negative = TRUE;
                   63028:                    break;
                   63029: 
                   63030:            case 'g':
                   63031:                    gray = TRUE;
                   63032:                    break;
                   63033: 
                   63034:            case 'l':
                   63035:                    fprintf(stdout, "/alignment true def\n");
                   63036:                    break;
                   63037: 
                   63038:            case 'm':                   /* magnification */
                   63039:                    fprintf(stdout, "/magnification %s def\n", optarg);
                   63040:                    break;
                   63041: 
                   63042:            case 'n':                   /* forms per page */
                   63043:                    formsperpage = atoi(optarg);
                   63044:                    fprintf(stdout, "%s %s\n", FORMSPERPAGE, optarg);
                   63045:                    fprintf(stdout, "/formsperpage %s def\n", optarg);
                   63046:                    break;
                   63047: 
                   63048:            case 'o':                   /* output page list */
                   63049:                    out_list(optarg);
                   63050:                    break;
                   63051: 
                   63052:            case 'p':                   /* landscape or portrait mode */
                   63053:                    if ( *optarg == 'l' )
                   63054:                        fprintf(stdout, "/landscape true def\n");
                   63055:                    else fprintf(stdout, "/landscape false def\n");
                   63056:                    break;
                   63057: 
                   63058:            case 'x':                   /* shift things horizontally */
                   63059:                    fprintf(stdout, "/xoffset %s def\n", optarg);
                   63060:                    break;
                   63061: 
                   63062:            case 'y':                   /* and vertically on the page */
                   63063:                    fprintf(stdout, "/yoffset %s def\n", optarg);
                   63064:                    break;
                   63065: 
                   63066:            case 'C':                   /* copy file straight to output */
                   63067:                    if ( cat(optarg) == FALSE )
                   63068:                        error(FATAL, "can't read %s", optarg);
                   63069:                    break;
                   63070: 
                   63071:            case 'E':                   /* text font encoding - unnecessary */
                   63072:                    fontencoding = optarg;
                   63073:                    break;
                   63074: 
                   63075:            case 'D':                   /* debug flag */
                   63076:                    debug = ON;
                   63077:                    break;
                   63078: 
                   63079:            case 'G':
                   63080:                    gammaflag = ON;
                   63081:                    gamma = atof(optarg);
                   63082:                    break;
                   63083: 
                   63084:            case 'I':                   /* ignore FATAL errors */
                   63085:                    ignore = ON;
                   63086:                    break;
                   63087: 
                   63088:            case 'L':                   /* PostScript prologue file */
                   63089:                    prologue = optarg;
                   63090:                    break;
                   63091: 
                   63092:            case 'P':                   /* PostScript pass through */
                   63093:                    fprintf(stdout, "%s\n", optarg);
                   63094:                    break;
                   63095: 
                   63096:            case '?':                   /* don't understand the option */
                   63097:                    error(FATAL, "");
                   63098:                    break;
                   63099: 
                   63100:            default:                    /* don't know what to do for ch */
                   63101:                    error(FATAL, "missing case for option %c\n", ch);
                   63102:                    break;
                   63103: 
                   63104:        }
                   63105:     }
                   63106: 
                   63107:     argc -= optind;                    /* get ready for non-option args */
                   63108:     argv += optind;
                   63109: }
                   63110: 
                   63111: void
                   63112: setup()
                   63113: {
                   63114:     /*setencoding(fontencoding);*/
                   63115:     fprintf(stdout, "setup\n");
                   63116: 
                   63117:     if ( formsperpage > 1 )  {          /* followed by stuff for multiple pages
                   63118: */
                   63119:         if ( cat(formfile) == FALSE )
                   63120:             error(FATAL, "can't read %s", formfile);
                   63121:         fprintf(stdout, "%d setupforms\n", formsperpage);
                   63122:     }   /* End if */
                   63123: 
                   63124:     fprintf(stdout, "%s", ENDSETUP);
                   63125: 
                   63126: }
                   63127: 
                   63128: void
                   63129: arguments()
                   63130: {
                   63131:     if ( argc < 1 ) {
                   63132:        fp_in = stdin;
                   63133:        readgif();
                   63134:     }
                   63135:     else  {                            /* at least one argument is left */
                   63136:        while ( argc > 0 )  {
                   63137:            if ( strcmp(*argv, "-") == 0 )
                   63138:                fp_in = stdin;
                   63139:            else if ( (fp_in = fopen(*argv, "r")) == NULL )
                   63140:                error(FATAL, "can't open %s", *argv);
                   63141:            readgif();
                   63142:            if ( fp_in != stdin )
                   63143:                fclose(fp_in);
                   63144:            argc--;
                   63145:            argv++;
                   63146:        }
                   63147:     }
                   63148: }
                   63149: 
                   63150: void
                   63151: done()
                   63152: {
                   63153:     fprintf(stdout, "%s", TRAILER);
                   63154:     fprintf(stdout, "done\n");
                   63155:     fprintf(stdout, "%s 0 0 %d %d\n", BOUNDINGBOX, bburx, bbury);
                   63156:     fprintf(stdout, "%s %d\n", PAGES, printed); 
                   63157: }
                   63158: 
                   63159: main(agc, agv)
                   63160:     int agc;
                   63161:     char *agv[];
                   63162: {
                   63163:     argc = agc;
                   63164:     argv = agv;
                   63165:     prog_name = argv[0];
                   63166: 
                   63167:     init_signals();
                   63168:     header();
                   63169:     options();
                   63170:     setup();
                   63171:     arguments();
                   63172:     done();
                   63173: 
                   63174:     exit(0);
                   63175: }
                   63176: 
                   63177: 0707070014230101071006440057030057030000010322300522627503600003400000043614post.src/postgif/Opostgif.c
                   63178: #include <stdio.h>
                   63179: #include <string.h>
                   63180: #include <signal.h>
                   63181: #include <ctype.h>
                   63182: #include <fcntl.h>
                   63183: 
                   63184: #include "comments.h"
                   63185: #include "gen.h"
                   63186: #include "path.h"
                   63187: #include "ext.h"
                   63188: 
                   63189: #define dbprt  if (debug) fprintf
                   63190: 
                   63191: char   *optnames = "a:c:fglm:n:o:p:x:y:C:DG:IL:P:";
                   63192: char    *prologue = POSTGIF;           /* default PostScript prologue */
                   63193: char    *formfile = FORMFILE;           /* stuff for multiple pages per sheet */
                   63194: int     formsperpage = 1;               /* page images on each piece of paper */
                   63195: int    copies = 1;                     /* and this many copies of each sheet */
                   63196: int     page = 0;                       /* last page we worked on */
                   63197: int     printed = 0;                    /* and the number of pages printed */
                   63198: 
                   63199: extern char *malloc();
                   63200: extern void free();
                   63201: extern double atof(), pow();
                   63202: 
                   63203: unsigned char ibuf[BUFSIZ];
                   63204: unsigned char *cmap, *gcmap, *lcmap;
                   63205: unsigned char *gmap, *ggmap, *lgmap;
                   63206: unsigned char *pmap;
                   63207: double gamma;
                   63208: float cr = 0.3, cg = 0.59, cb = 0.11;
                   63209: int maplength, gmaplength, lmaplength;
                   63210: int scrwidth, scrheight;
                   63211: int gcolormap, lcolormap;
                   63212: int bitperpixel, background;
                   63213: int imageleft, imagetop;
                   63214: int imagewidth, imageheight;
                   63215: int interlaced, lbitperpixel;
                   63216: int gray = 0;
                   63217: int gammaflag = 0;
                   63218: int negative = 0;
                   63219: int terminate = 0;
                   63220: int codesize, clearcode, endcode, curstblsize, pmindex, byteinibuf, bitsleft;
                   63221: int prefix[4096], suffix[4096], cstbl[4096];
                   63222: int bburx = -32767, bbury = -32767;
                   63223: FILE *fp_in = NULL;
                   63224: FILE *fp_out = stdout;
                   63225: 
                   63226: char *
                   63227: allocate(size)
                   63228:     int size;
                   63229: {
                   63230:     char *p;
                   63231: 
                   63232:     if ((p = malloc(size)) == NULL) error(FATAL, "not enough memory");
                   63233:     return(p);
                   63234: }
                   63235: 
                   63236: void
                   63237: puthex(c, fp)
                   63238:     unsigned char c;
                   63239:     FILE *fp;
                   63240: {
                   63241:     static char hextbl[16] = {
                   63242:        '0', '1', '2', '3', '4', '5', '6', '7',
                   63243:        '8', '9', 'a', 'b', 'c', 'd', 'e', 'f',
                   63244:     };
                   63245: 
                   63246:     putc(hextbl[(c >> 4) & 017], fp);
                   63247:     putc(hextbl[c & 017], fp);
                   63248: }
                   63249: 
                   63250: void
                   63251: setcolormap(bp)
                   63252:     int bp;
                   63253: {
                   63254:     int i, entries = 1, scale = 1;
                   63255:     unsigned char *p, *q;
                   63256: 
                   63257:     for (i = 0; i < bp; i++) entries *= 2;
                   63258:     for (i = 0; i < 8 - bp; i++) scale *= 2;
                   63259:     gcmap = (unsigned char *) allocate(entries*3);
                   63260:     ggmap = (unsigned char *) allocate(entries);
                   63261:     gmaplength = entries;
                   63262:     for (i = 0, p = gcmap, q = ggmap; i < 256; i += scale, p += 3, q++) {
                   63263:        if (negative) {
                   63264:            *p = 255 - i; p[1] = *p; p[2] = *p;
                   63265:            *q = *p;
                   63266:        }
                   63267:        else {
                   63268:            *p = i; p[1] = i; p[2] = i;
                   63269:            *q = i;
                   63270:        }
                   63271:     }
                   63272:     if (gammaflag)
                   63273:        for (i = 0, p = gcmap; i < 256; i += scale, p += 3) {
                   63274:            *p = (unsigned char) (pow((double) *p/256.0, gamma)*256);
                   63275:            p[1] = *p; p[2] = *p;
                   63276:        }
                   63277: dbprt(stderr,"default color map:\n");
                   63278: for (i = 0; i < entries*3; i += 3)
                   63279: dbprt(stderr, "%d, %d, %d\n", gcmap[i], gcmap[i+1], gcmap[i+2]);
                   63280: }
                   63281: 
                   63282: void
                   63283: readgcolormap(bp)
                   63284:     int bp;
                   63285: {
                   63286:     int i, entries = 1;
                   63287:     unsigned char *p, *q;
                   63288: 
                   63289:     for (i = 0; i < bp; i++) entries *= 2;
                   63290:     gcmap = (unsigned char *) allocate(entries*3);
                   63291:     ggmap = (unsigned char *) allocate(entries);
                   63292:     gmaplength = entries;
                   63293:     fread(gcmap, sizeof(*gcmap), entries*3, fp_in);
                   63294:     if (negative)
                   63295:        for (i = 0, p = gcmap; i < entries*3; i++, p++) *p = 255 - *p;
                   63296:     for (i = 0, p = gcmap, q = ggmap; i < entries; i++, p += 3, q++)
                   63297:        *q = cr*p[0] + cg*p[1] + cb*p[2] + 0.5;
                   63298:     if (gammaflag)
                   63299:        for (i = 0, p = gcmap; i < entries*3; i++, p++)
                   63300:            *p = (unsigned char) (pow((double) *p/256.0, gamma)*256);
                   63301: dbprt(stderr,"global color map:\n");
                   63302: for (i = 0; i < entries*3; i += 3)
                   63303: dbprt(stderr, "%d, %d, %d\n", gcmap[i], gcmap[i+1], gcmap[i+2]);
                   63304: }
                   63305: 
                   63306: void
                   63307: readlcolormap(bp)
                   63308:     int bp;
                   63309: {
                   63310:     int i, entries = 1;
                   63311:     unsigned char *p, *q;
                   63312: 
                   63313:     for (i = 0; i < bp; i++) entries *= 2;
                   63314:     lcmap = (unsigned char *) allocate(entries*3);
                   63315:     lgmap = (unsigned char *) allocate(entries);
                   63316:     lmaplength = entries;
                   63317:     fread(lcmap, sizeof(*lcmap), entries*3, fp_in);
                   63318:     if (negative)
                   63319:        for (i = 0, p = lcmap; i < entries*3; i++, p++) *p = 255 - *p;
                   63320:     for (i = 0, p = lcmap, q = lgmap; i < entries; i++, p += 3, q++)
                   63321:        *q = cr*p[0] + cg*p[1] + cb*p[2] + 0.5;
                   63322:     if (gammaflag)
                   63323:        for (i = 0, p = lcmap; i < entries*3; i++, p++)
                   63324:            *p = (unsigned char) (pow((double) *p/256.0, gamma)*256);
                   63325: dbprt(stderr,"local color map:\n");
                   63326: for (i = 0; i < entries*3; i += 3)
                   63327: dbprt(stderr, "%d, %d, %d\n", lcmap[i], lcmap[i+1], lcmap[i+2]);
                   63328: }
                   63329: 
                   63330: void
                   63331: initstbl()
                   63332: {
                   63333:     int i, entries = 1, *p, *s;
                   63334: 
                   63335:     for (i = 0; i < codesize; i++) entries *= 2;
                   63336:     clearcode = entries;
                   63337:     endcode = clearcode + 1;
                   63338:     for (i = 0, p = prefix, s = suffix; i <= endcode; i++, p++, s++) {
                   63339:        *p = endcode;
                   63340:        *s = i;
                   63341:     }
                   63342:     curstblsize = endcode + 1;
                   63343:     pmindex = 0;
                   63344:     byteinibuf = 0;
                   63345:     bitsleft = 0;
                   63346: }
                   63347: 
                   63348: int
                   63349: nextbyte()
                   63350: {
                   63351:     static ibufindex;
                   63352: 
                   63353:     if (byteinibuf) {
                   63354:        byteinibuf--;
                   63355:        ibufindex++;
                   63356:     }
                   63357:     else {
                   63358:        fread(ibuf, sizeof(*ibuf), 1, fp_in);
                   63359:        byteinibuf = ibuf[0];
                   63360: dbprt(stderr, "byte count: %d\n", byteinibuf);
                   63361:        if (byteinibuf) fread(ibuf, sizeof(*ibuf), byteinibuf, fp_in);
                   63362:        else error(FATAL, "encounter zero byte count block before end code");
                   63363:        ibufindex = 0;
                   63364:        byteinibuf--;
                   63365:        ibufindex++;
                   63366:     }
                   63367:     return(ibuf[ibufindex-1]);
                   63368: }
                   63369: 
                   63370: int masktbl[25] = {
                   63371:     0, 01, 03, 07, 017, 037, 077, 0177, 0377, 0777, 01777, 03777, 07777,
                   63372:     017777, 037777, 077777, 0177777, 0377777, 0777777, 01777777, 03777777,
                   63373:     07777777, 017777777, 037777777, 077777777
                   63374: };
                   63375: 
                   63376: int
                   63377: getcode()
                   63378: {
                   63379:     int cs, c;
                   63380:     static int oldc;
                   63381: 
                   63382:     if (curstblsize < 4096) cs = cstbl[curstblsize];
                   63383:     else cs = 12;
                   63384:     while (bitsleft < cs) {
                   63385:        oldc = (oldc & masktbl[bitsleft]) | ((nextbyte() & 0377) << bitsleft);
                   63386:        bitsleft += 8;
                   63387:     }
                   63388:     c = oldc & masktbl[cs];
                   63389:     oldc = oldc >> cs;
                   63390:     bitsleft -= cs;
                   63391: /* dbprt(stderr, "code: %d %d %d\n", curstblsize, cs, c); */
                   63392:     return(c);
                   63393: }
                   63394: 
                   63395: void
                   63396: putcode(c)
                   63397:     int c;
                   63398: {
                   63399:     if (prefix[c] != endcode) {
                   63400:        putcode(prefix[c]);
                   63401:        pmap[pmindex] = suffix[c];
                   63402:        pmindex++;
                   63403:     }
                   63404:     else {
                   63405:        pmap[pmindex] = suffix[c];
                   63406:        pmindex++;
                   63407:     }
                   63408: }
                   63409: 
                   63410: int
                   63411: firstof(c)
                   63412:     int c;
                   63413: {
                   63414:     while (prefix[c] != endcode) c = prefix[c];
                   63415:     return(suffix[c]);
                   63416: }
                   63417: 
                   63418: void
                   63419: writeimage()
                   63420: {
                   63421:     int i, j, k;
                   63422: 
                   63423: dbprt(stderr, "pmindex: %d\n", pmindex);
                   63424:     fputs("save\n", fp_out);
                   63425:     fprintf(fp_out, "/codestr %d string def\n", imagewidth);
                   63426:     if (!gray) {
                   63427:        fprintf(fp_out, "/colortbl currentfile %d string readhexstring\n",
                   63428:            maplength*3);
                   63429:         for (i = 0; i < maplength; i++) puthex(cmap[i], fp_out);
                   63430:         fputs("\n", fp_out);
                   63431:         for (i = maplength ; i < maplength*2; i++) puthex(cmap[i], fp_out);
                   63432:         fputs("\n", fp_out);
                   63433:         for (i = maplength*2 ; i < maplength*3; i++) puthex(cmap[i], fp_out);
                   63434:         fputs("\npop def\n", fp_out);
                   63435:        fprintf(fp_out, "/graytbl currentfile %d string readhexstring\n",
                   63436:            maplength);
                   63437:         for (i = 0; i < maplength; i++) puthex(gmap[i], fp_out);
                   63438:         fputs("\npop def\n", fp_out);
                   63439:     }
                   63440:     fprintf(fp_out, "%s %d %d %d %d gifimage\n",
                   63441:        gray ? "true" : "false", imagewidth, imageheight,
                   63442:        scrwidth - imageleft - imagewidth, scrheight - imagetop - imageheight);
                   63443:     if (gray) {
                   63444:        if (interlaced) {
                   63445:            int *iltbl;
                   63446: 
                   63447:            iltbl = (int *) allocate(imageheight*sizeof(int));
                   63448:            j = 0;
                   63449:            for (i = 0; i < imageheight; i += 8) {
                   63450:                iltbl[i] = j;
                   63451:                j += imagewidth;
                   63452:            }
                   63453: dbprt(stderr, "pass1: %d\n", j);
                   63454:            for (i = 4; i < imageheight; i += 8) {
                   63455:                iltbl[i] = j;
                   63456:                j += imagewidth;
                   63457:            }
                   63458: dbprt(stderr, "pass2: %d\n", j);
                   63459:            for (i = 2; i < imageheight; i += 4) {
                   63460:                iltbl[i] = j;
                   63461:                j += imagewidth;
                   63462:            }
                   63463: dbprt(stderr, "pass3: %d\n", j);
                   63464:            for (i = 1; i < imageheight; i += 2) {
                   63465:                iltbl[i] = j;
                   63466:                j += imagewidth;
                   63467:            }
                   63468: dbprt(stderr, "pass4: %d\n", j);
                   63469: 
                   63470:            for (i = 0; i < imageheight; i++) {
                   63471:                k = iltbl[i];
                   63472:                for (j = 0; j < imagewidth; j++, k++)
                   63473:                    puthex(gmap[pmap[k]], fp_out);
                   63474:                fputs("\n", fp_out);
                   63475:            }
                   63476:        }
                   63477:        else {
                   63478:            for (i = 0, k = 0; i < imageheight; i++) {
                   63479:                for (j = 0; j < imagewidth; j++, k++)
                   63480:                    puthex(gmap[pmap[k]], fp_out);
                   63481:                fputs("\n", fp_out);
                   63482:            }
                   63483:        }
                   63484:     }
                   63485:     else {
                   63486:        if (interlaced) {
                   63487:            int *iltbl;
                   63488: 
                   63489:            iltbl = (int *) allocate(imageheight*sizeof(int));
                   63490:            j = 0;
                   63491:            for (i = 0; i < imageheight; i += 8) {
                   63492:                iltbl[i] = j;
                   63493:                j += imagewidth;
                   63494:            }
                   63495: dbprt(stderr, "pass1: %d\n", j);
                   63496:            for (i = 4; i < imageheight; i += 8) {
                   63497:                iltbl[i] = j;
                   63498:                j += imagewidth;
                   63499:            }
                   63500: dbprt(stderr, "pass2: %d\n", j);
                   63501:            for (i = 2; i < imageheight; i += 4) {
                   63502:                iltbl[i] = j;
                   63503:                j += imagewidth;
                   63504:            }
                   63505: dbprt(stderr, "pass3: %d\n", j);
                   63506:            for (i = 1; i < imageheight; i += 2) {
                   63507:                iltbl[i] = j;
                   63508:                j += imagewidth;
                   63509:            }
                   63510: dbprt(stderr, "pass4: %d\n", j);
                   63511: 
                   63512:            for (i = 0; i < imageheight; i++) {
                   63513:                k = iltbl[i];
                   63514:                for (j = 0; j < imagewidth; j++, k++) puthex(pmap[k], fp_out);
                   63515:                fputs("\n", fp_out);
                   63516:            }
                   63517:        }
                   63518:        else {
                   63519:            for (i = 0, k = 0; i < imageheight; i++) {
                   63520:                for (j = 0; j < imagewidth; j++, k++) puthex(pmap[k], fp_out);
                   63521:                fputs("\n", fp_out);
                   63522:            }
                   63523:        }
                   63524:     }
                   63525:     fputs("restore\n", fp_out);
                   63526: }
                   63527: 
                   63528: void
                   63529: readimage()
                   63530: {
                   63531:     int bytecount, zerobytecount = 0;
                   63532:     int code, oldcode;
                   63533: 
                   63534:     fread(ibuf, sizeof(*ibuf), 9, fp_in);
                   63535:     imageleft = ibuf[0] + 256*ibuf[1];
                   63536:     imagetop = ibuf[2] + 256*ibuf[3];
                   63537:     imagewidth = ibuf[4] + 256*ibuf[5];
                   63538:     imageheight = ibuf[6] + 256*ibuf[7];
                   63539:     lcolormap = ibuf[8] & 0200;
                   63540:     interlaced = ibuf[8] & 0100;
                   63541:     lbitperpixel = (ibuf[8] & 07) + 1;
                   63542: dbprt(stderr, "imageleft: %d\n", imageleft);
                   63543: dbprt(stderr, "imagetop: %d\n", imagetop);
                   63544: dbprt(stderr, "imagewidth: %d\n", imagewidth);
                   63545: dbprt(stderr, "imgaeheight: %d\n", imageheight);
                   63546: dbprt(stderr, "lcolormap: %d\n", lcolormap ? 1 : 0);
                   63547: dbprt(stderr, "interlaced: %d\n", interlaced ? 1 : 0);
                   63548: dbprt(stderr, "lbitperpixel: %d\n", lbitperpixel);
                   63549:     if (lcolormap) {
                   63550:        readlcolormap(lbitperpixel);
                   63551:        cmap = lcmap;
                   63552:        gmap = lgmap;
                   63553:        maplength = lmaplength;
                   63554:     }
                   63555: 
                   63556: dbprt(stderr, "start reading raster data\n");
                   63557:     fread(ibuf, sizeof(*ibuf), 1, fp_in);
                   63558:     codesize = ibuf[0];
                   63559: dbprt(stderr, "codesize: %d\n", codesize);
                   63560:     pmap = (unsigned char *) allocate(imagewidth*imageheight);
                   63561:     initstbl();
                   63562:     while ((code = getcode()) != endcode) {
                   63563:        if (code == clearcode) {
                   63564:            curstblsize = endcode + 1;
                   63565:            code = getcode();
                   63566:            putcode(code);
                   63567:            oldcode = code;
                   63568:        }
                   63569:        else if (code < curstblsize) {
                   63570:            putcode(code);
                   63571:            prefix[curstblsize] = oldcode;
                   63572:            suffix[curstblsize] = firstof(code);
                   63573:            curstblsize++;
                   63574:            oldcode = code;
                   63575:        }
                   63576:        else {
                   63577:           if (code != curstblsize) error(FATAL, "code out of order");
                   63578:           prefix[curstblsize] = oldcode;
                   63579:           suffix[curstblsize] = firstof(oldcode);
                   63580:           curstblsize++;
                   63581:           putcode(curstblsize-1);
                   63582:           oldcode = code;
                   63583:        }
                   63584:     }
                   63585: dbprt(stderr, "finish reading raster data\n");
                   63586: 
                   63587:     /* read the rest of the raster data */
                   63588:     do {
                   63589:        fread(ibuf, sizeof(*ibuf), 1, fp_in);
                   63590:        bytecount = ibuf[0];
                   63591: dbprt(stderr, "byte count: %d\n", bytecount);
                   63592:        if (bytecount) fread(ibuf, sizeof(*ibuf), bytecount, fp_in);
                   63593:        else zerobytecount = 1;
                   63594:     } while (!zerobytecount);
                   63595: 
                   63596:     writeimage();
                   63597: 
                   63598:     if (lcolormap) {
                   63599:        cmap = gcmap;
                   63600:        gmap = ggmap;
                   63601:        maplength = gmaplength;
                   63602:        free(lcmap);
                   63603:        free(lgmap);
                   63604:     }
                   63605: }
                   63606: 
                   63607: void
                   63608: readextensionblock()
                   63609: {
                   63610:     int functioncode, bytecount, zerobytecount = 0;
                   63611: 
                   63612:     fread(ibuf, sizeof(*ibuf), 1, fp_in);
                   63613:     functioncode = ibuf[0];
                   63614: dbprt(stderr, "function code: %d\n", functioncode);
                   63615:     do {
                   63616:        fread(ibuf, sizeof(*ibuf), 1, fp_in);
                   63617:        bytecount = ibuf[0];
                   63618: dbprt(stderr, "byte count: %d\n", bytecount);
                   63619:        if (bytecount) fread(ibuf, sizeof(*ibuf), bytecount, fp_in);
                   63620:        else zerobytecount = 1;
                   63621:     } while (!zerobytecount);
                   63622: }
                   63623: 
                   63624: void
                   63625: writebgscr()
                   63626: {
                   63627:     fprintf(fp_out, "%s %d %d\n", PAGE, page, printed+1);
                   63628:     fputs("/saveobj save def\n", fp_out);
                   63629:     fprintf(fp_out, "%s: %d %d %d %d\n",
                   63630:        "%%PageBoundingBox", 0, 0, scrwidth, scrheight);
                   63631:     if (scrwidth > bburx) bburx = scrwidth;
                   63632:     if (scrheight > bbury) bbury = scrheight;
                   63633:     fprintf(fp_out, "%d %d gifscreen\n", scrwidth, scrheight);
                   63634: }
                   63635: 
                   63636: void
                   63637: writeendscr()
                   63638: {
                   63639:     if ( fp_out == stdout ) printed++;
                   63640:     fputs("showpage\n", fp_out);
                   63641:     fputs("saveobj restore\n", fp_out);
                   63642:     fprintf(fp_out, "%s %d %d\n", ENDPAGE, page, printed);
                   63643: }
                   63644: 
                   63645: void
                   63646: redirect(pg)
                   63647:     int                pg;                     /* next page we're printing */
                   63648: {
                   63649:     static FILE        *fp_null = NULL;        /* if output is turned off */
                   63650: 
                   63651:     if ( pg >= 0 && in_olist(pg) == ON )
                   63652:        fp_out = stdout;
                   63653:     else if ( (fp_out = fp_null) == NULL )
                   63654:        fp_out = fp_null = fopen("/dev/null", "w");
                   63655: 
                   63656: }
                   63657: 
                   63658: void
                   63659: readgif()
                   63660: {
                   63661:     int i, j, k;
                   63662: 
                   63663:     for (i = 0, j = 1, k = 0; i < 13; i++) {
                   63664:        for (; k < j; k++) cstbl[k] = i;
                   63665:        j *= 2;
                   63666:     }
                   63667: 
                   63668:     fread(ibuf, sizeof(*ibuf), 6, fp_in);
                   63669: dbprt(stderr, "%.6s\n", ibuf);
                   63670:     if (strncmp(ibuf, "GIF87a", 6) != 0) {
                   63671:        fread(ibuf, sizeof(*ibuf), 122, fp_in);
                   63672:        fread(ibuf, sizeof(*ibuf), 6, fp_in);
                   63673: dbprt(stderr, "%.6s\n", ibuf);
                   63674:        if (strncmp(ibuf, "GIF87a", 6) != 0)
                   63675:                 error(FATAL, "wrong GIF signature");
                   63676:     }
                   63677:     fread(ibuf, sizeof(*ibuf), 7, fp_in);
                   63678:     scrwidth = ibuf[0] + 256*ibuf[1];
                   63679:     scrheight = ibuf[2] + 256*ibuf[3];
                   63680:     gcolormap = ibuf[4] & 0200;
                   63681:     bitperpixel = (ibuf[4] & 07) + 1;
                   63682:     background = ibuf[5];
                   63683: dbprt(stderr, "scrwidth: %d\n", scrwidth);
                   63684: dbprt(stderr, "scrheight: %d\n", scrheight);
                   63685: dbprt(stderr, "gcolormap: %d\n", gcolormap ? 1 : 0);
                   63686: dbprt(stderr, "bitperpixel: %d\n", bitperpixel);
                   63687: dbprt(stderr, "background: %d\n", background);
                   63688:     if (ibuf[6] != 0) error(FATAL, "wrong screen descriptor");
                   63689:     if (gcolormap) readgcolormap(bitperpixel);
                   63690:     else setcolormap(bitperpixel);
                   63691: 
                   63692:     redirect(++page);
                   63693:     writebgscr();
                   63694: 
                   63695:     cmap = gcmap;
                   63696:     gmap = ggmap;
                   63697:     maplength = gmaplength;
                   63698: 
                   63699:     do {
                   63700:        fread(ibuf, sizeof(*ibuf), 1, fp_in);
                   63701:        if (ibuf[0] == ',') readimage();
                   63702:        else if (ibuf[0] == ';') terminate = 1;
                   63703:        else if (ibuf[0] == '!') readextensionblock();
                   63704:        else
                   63705:        error(FATAL, "wrong image separator character or wrong GIF terminator");
                   63706:     } while (!terminate);
                   63707: 
                   63708:     writeendscr();
                   63709: 
                   63710:     free(gcmap);
                   63711:     free(ggmap);
                   63712: }
                   63713: 
                   63714: void
                   63715: init_signals()
                   63716: {
                   63717:     int         interrupt();            /* signal handler */
                   63718: 
                   63719:     if ( signal(SIGINT, interrupt) == SIG_IGN )  {
                   63720:         signal(SIGINT, SIG_IGN);
                   63721:         signal(SIGQUIT, SIG_IGN);
                   63722:         signal(SIGHUP, SIG_IGN);
                   63723:     }
                   63724:     else {
                   63725:         signal(SIGHUP, interrupt);
                   63726:         signal(SIGQUIT, interrupt);
                   63727:     }
                   63728: 
                   63729:     signal(SIGTERM, interrupt);
                   63730: }
                   63731: 
                   63732: void
                   63733: header()
                   63734: {
                   63735:     int         ch;                     /* return value from getopt() */
                   63736:     int         old_optind = optind;    /* for restoring optind - should be 1 */
                   63737: 
                   63738:     while ( (ch = getopt(argc, argv, optnames)) != EOF )
                   63739:         if ( ch == 'L' )
                   63740:             prologue = optarg;
                   63741:         else if ( ch == '?' )
                   63742:             error(FATAL, "");
                   63743: 
                   63744:     optind = old_optind;                /* get ready for option scanning */
                   63745: 
                   63746:     fprintf(stdout, "%s", CONFORMING);
                   63747:     fprintf(stdout, "%s %s\n", VERSION, PROGRAMVERSION);
                   63748:     fprintf(stdout, "%s %s\n", BOUNDINGBOX, ATEND);
                   63749:     fprintf(stdout, "%s %s\n", PAGES, ATEND);
                   63750:     fprintf(stdout, "%s", ENDCOMMENTS);
                   63751: 
                   63752:     if ( cat(prologue) == FALSE )
                   63753:         error(FATAL, "can't read %s", prologue);
                   63754: 
                   63755:     fprintf(stdout, "%s", ENDPROLOG);
                   63756:     fprintf(stdout, "%s", BEGINSETUP);
                   63757:     fprintf(stdout, "mark\n");
                   63758: 
                   63759: }
                   63760: 
                   63761: void
                   63762: options()
                   63763: {
                   63764:     int                ch;                     /* return value from getopt() */
                   63765: 
                   63766:     while ( (ch = getopt(argc, argv, optnames)) != EOF )  {
                   63767:        switch ( ch )  {
                   63768: 
                   63769:            case 'a':                   /* aspect ratio */
                   63770:                    fprintf(stdout, "/aspectratio %s def\n", optarg);
                   63771:                    break;
                   63772: 
                   63773:            case 'c':                   /* copies */
                   63774:                    copies = atoi(optarg);
                   63775:                    fprintf(stdout, "/#copies %s store\n", optarg);
                   63776:                    break;
                   63777: 
                   63778:            case 'f':
                   63779:                    negative = TRUE;
                   63780:                    break;
                   63781: 
                   63782:            case 'g':
                   63783:                    gray = TRUE;
                   63784:                    break;
                   63785: 
                   63786:            case 'l':
                   63787:                    fprintf(stdout, "/alignment true def\n");
                   63788:                    break;
                   63789: 
                   63790:            case 'm':                   /* magnification */
                   63791:                    fprintf(stdout, "/magnification %s def\n", optarg);
                   63792:                    break;
                   63793: 
                   63794:            case 'n':                   /* forms per page */
                   63795:                    formsperpage = atoi(optarg);
                   63796:                    fprintf(stdout, "%s %s\n", FORMSPERPAGE, optarg);
                   63797:                    fprintf(stdout, "/formsperpage %s def\n", optarg);
                   63798:                    break;
                   63799: 
                   63800:            case 'o':                   /* output page list */
                   63801:                    out_list(optarg);
                   63802:                    break;
                   63803: 
                   63804:            case 'p':                   /* landscape or portrait mode */
                   63805:                    if ( *optarg == 'l' )
                   63806:                        fprintf(stdout, "/landscape true def\n");
                   63807:                    else fprintf(stdout, "/landscape false def\n");
                   63808:                    break;
                   63809: 
                   63810:            case 'x':                   /* shift things horizontally */
                   63811:                    fprintf(stdout, "/xoffset %s def\n", optarg);
                   63812:                    break;
                   63813: 
                   63814:            case 'y':                   /* and vertically on the page */
                   63815:                    fprintf(stdout, "/yoffset %s def\n", optarg);
                   63816:                    break;
                   63817: 
                   63818:            case 'C':                   /* copy file straight to output */
                   63819:                    if ( cat(optarg) == FALSE )
                   63820:                        error(FATAL, "can't read %s", optarg);
                   63821:                    break;
                   63822: 
                   63823:            case 'D':                   /* debug flag */
                   63824:                    debug = ON;
                   63825:                    break;
                   63826: 
                   63827:            case 'G':
                   63828:                    gammaflag = ON;
                   63829:                    gamma = atof(optarg);
                   63830:                    break;
                   63831: 
                   63832:            case 'I':                   /* ignore FATAL errors */
                   63833:                    ignore = ON;
                   63834:                    break;
                   63835: 
                   63836:            case 'L':                   /* PostScript prologue file */
                   63837:                    prologue = optarg;
                   63838:                    break;
                   63839: 
                   63840:            case 'P':                   /* PostScript pass through */
                   63841:                    fprintf(stdout, "%s\n", optarg);
                   63842:                    break;
                   63843: 
                   63844:            case '?':                   /* don't understand the option */
                   63845:                    error(FATAL, "");
                   63846:                    break;
                   63847: 
                   63848:            default:                    /* don't know what to do for ch */
                   63849:                    error(FATAL, "missing case for option %c\n", ch);
                   63850:                    break;
                   63851: 
                   63852:        }
                   63853:     }
                   63854: 
                   63855:     argc -= optind;                    /* get ready for non-option args */
                   63856:     argv += optind;
                   63857: }
                   63858: 
                   63859: void
                   63860: setup()
                   63861: {
                   63862:     fprintf(stdout, "setup\n");
                   63863: 
                   63864:     if ( formsperpage > 1 )  {          /* followed by stuff for multiple pages
                   63865: */
                   63866:         if ( cat(formfile) == FALSE )
                   63867:             error(FATAL, "can't read %s", formfile);
                   63868:         fprintf(stdout, "%d setupforms\n", formsperpage);
                   63869:     }   /* End if */
                   63870: 
                   63871:     fprintf(stdout, "%s", ENDSETUP);
                   63872: 
                   63873: }
                   63874: 
                   63875: void
                   63876: arguments()
                   63877: {
                   63878:     if ( argc < 1 ) {
                   63879:        fp_in = stdin;
                   63880:        readgif();
                   63881:     }
                   63882:     else  {                            /* at least one argument is left */
                   63883:        while ( argc > 0 )  {
                   63884:            if ( strcmp(*argv, "-") == 0 )
                   63885:                fp_in = stdin;
                   63886:            else if ( (fp_in = fopen(*argv, "r")) == NULL )
                   63887:                error(FATAL, "can't open %s", *argv);
                   63888:            readgif();
                   63889:            if ( fp_in != stdin )
                   63890:                fclose(fp_in);
                   63891:            argc--;
                   63892:            argv++;
                   63893:        }
                   63894:     }
                   63895: }
                   63896: 
                   63897: void
                   63898: done()
                   63899: {
                   63900:     fprintf(stdout, "%s", TRAILER);
                   63901:     fprintf(stdout, "done\n");
                   63902:     fprintf(stdout, "%s 0 0 %d %d\n", BOUNDINGBOX, bburx, bbury);
                   63903:     fprintf(stdout, "%s %d\n", PAGES, printed); 
                   63904: }
                   63905: 
                   63906: main(agc, agv)
                   63907:     int agc;
                   63908:     char *agv[];
                   63909: {
                   63910:     argc = agc;
                   63911:     argv = agv;
                   63912:     prog_name = argv[0];
                   63913: 
                   63914:     init_signals();
                   63915:     header();
                   63916:     options();
                   63917:     setup();
                   63918:     arguments();
                   63919:     done();
                   63920: 
                   63921:     exit(0);
                   63922: }
                   63923: 
                   63924: 0707070014230101101006440057030057030000010322450522627503600003400000004347post.src/postgif/postgif.ps%
                   63925: % Version 3.3.2 prologue for GIF pixmap files.
                   63926: %
                   63927: 
                   63928: /#copies 1 store
                   63929: /aspectratio 1 def
                   63930: /formsperpage 1 def
                   63931: /landscape false def
                   63932: /magnification 1 def
                   63933: /margin 0 def
                   63934: /orientation 0 def
                   63935: /rotation 1 def
                   63936: /xoffset 0 def
                   63937: /yoffset 0 def
                   63938: 
                   63939: /useclippath true def
                   63940: /pagebbox [0 0 612 792] def
                   63941: 
                   63942: /inch {72 mul} bind def
                   63943: /min {2 copy gt {exch} if pop} bind def
                   63944: 
                   63945: /setup {
                   63946:        counttomark 2 idiv {def} repeat pop
                   63947: 
                   63948:        landscape {/orientation 90 orientation add def} if
                   63949: 
                   63950:        pagedimensions
                   63951:        xcenter ycenter translate
                   63952:        orientation rotation mul rotate
                   63953:        xoffset inch yoffset inch translate
                   63954:        magnification dup aspectratio mul scale
                   63955: 
                   63956:        /height height margin sub def
                   63957:        /width width margin sub def
                   63958: } def
                   63959: 
                   63960: /pagedimensions {
                   63961:        useclippath {
                   63962:                /pagebbox [clippath pathbbox newpath] def
                   63963:        } if
                   63964:        pagebbox aload pop
                   63965:        4 -1 roll exch 4 1 roll 4 copy
                   63966:        landscape {4 2 roll} if
                   63967:        sub /width exch def
                   63968:        sub /height exch def
                   63969:        add 2 div /xcenter exch def
                   63970:        add 2 div /ycenter exch def
                   63971:        userdict /gotpagebbox true put
                   63972: } def
                   63973: 
                   63974: /pagesetup {/page exch def} bind def
                   63975: 
                   63976: /done {/lastpage where {pop lastpage} if} def
                   63977: 
                   63978: /alignment false def
                   63979: 
                   63980: /gifscreen { % scrwidth scrheight $
                   63981:     2 copy
                   63982: 
                   63983:     alignment {
                   63984:        100 dup dtransform exch 100 exch div abs exch 100 exch div abs
                   63985:        2 copy scale
                   63986:        /height exch height exch div def
                   63987:        /width exch width exch div def
                   63988:     } if
                   63989: 
                   63990:     height exch div exch width exch div
                   63991:     2 copy lt { pop } { exch pop } ifelse
                   63992: 
                   63993:     alignment { cvi } if
                   63994: 
                   63995:     dup scale
                   63996: 
                   63997:     neg 2 div exch neg 2 div exch translate
                   63998: } def
                   63999: 
                   64000: /gifimage { % gray imagewidth imageheight xorigin yorigin $
                   64001:     translate
                   64002:     2 copy scale
                   64003:     /imageheight exch def
                   64004:     /imagewidth exch def
                   64005:     /gray exch def
                   64006:     imagewidth imageheight 8 [imagewidth 0 0 imageheight neg 0 imageheight]
                   64007:     gray {
                   64008:        { currentfile codestr readhexstring pop } image
                   64009:     } {
                   64010:        /colorimage where {
                   64011:            pop
                   64012:            /picstr imagewidth 3 mul string def
                   64013:            { currentfile codestr readhexstring pop pop
                   64014:                0 1 imagewidth 1 sub {
                   64015:                    picstr exch dup 3 mul exch colortbl exch codestr exch get
                   64016:                    3 mul 3 getinterval putinterval
                   64017:                } for picstr
                   64018:            } false 3 colorimage
                   64019:        } {
                   64020:            { currentfile codestr readhexstring pop pop
                   64021:                0 1 imagewidth 1 sub {
                   64022:                    codestr exch dup graytbl exch codestr exch get get put
                   64023:                } for codestr
                   64024:            } image
                   64025:        } ifelse
                   64026:     } ifelse
                   64027: } def
                   64028: 0707070014231405030407550057030057030000021222660522633076100002000000000000post.src/postio0707070014231405041006440057030057030000011222670522627503600002700000001622post.src/postio/READMESerial communications program for PostScript printers.
                   64029: 
                   64030: Runs as a single read/write process (by default). Use the -R2 option
                   64031: or set splitme to TRUE (file postio.c) to get separate read and write
                   64032: processes. Although not the default, we recommend using separate read
                   64033: and write processes.
                   64034: 
                   64035: Sends occasional status queries (control Ts) while transmitting files.
                   64036: Use the -q option or set quiet (file postio.c) to TRUE to disable status
                   64037: queries.
                   64038: 
                   64039: Datakit connections are supported on System V and Ninth Edition systems.
                   64040: The syntax (for connecting to a Datakit destination) varies. Check the
                   64041: SYSV and V9 versions of setupline() in file ifdef.c.
                   64042: 
                   64043: Set DKHOST and DKSTREAMS to TRUE in postio.mk for streams based DKHOST
                   64044: support. When DKSTREAMS is TRUE postio.mk uses "dknetty" as the stream
                   64045: module. Settings like DKSTREAMS=dkty select a different stream module
                   64046: and may be required for full Datakit support on some systems.
                   64047: 
                   64048: 0707070014231405051006440057030057030000011223000522627503600003000000056437post.src/postio/ifdef.c/*
                   64049:  *
                   64050:  * Conditionally compiled routines for setting up and reading the line. Things
                   64051:  * were getting out of hand with all the ifdefs, and even though this defeats
                   64052:  * part of the purpose of conditional complilation directives, I think it's easier
                   64053:  * to follow this way. Thanks to Alan Buckwalter for the System V DKHOST code.
                   64054:  *
                   64055:  * postio now can be run as separate read and write processes, but requires that
                   64056:  * you write a procedure called resetline() and perhaps modify readline() some.
                   64057:  * I've already tested the code on System V and it seems to work. Ninth Edition
                   64058:  * and BSD code may be missing.
                   64059:  *
                   64060:  * By request I've changed the way some of the setupline() procedures (eg. in the
                   64061:  * System V implementation) handle things when no line has been given. If line is
                   64062:  * NULL the new setupline() procedures try to continue, assuming whoever called
                   64063:  * postio connected stdout to the printer. Things will only work if we can read
                   64064:  * and write stdout!
                   64065:  *
                   64066:  */
                   64067: 
                   64068: #include <stdio.h>
                   64069: #include <ctype.h>
                   64070: #include <fcntl.h>
                   64071: #include <signal.h>
                   64072: #include <sys/types.h>
                   64073: #include <errno.h>
                   64074: 
                   64075: #include "ifdef.h"                     /* conditional header file inclusion */
                   64076: #include "gen.h"                       /* general purpose definitions */
                   64077: 
                   64078: FILE   *fp_ttyi, *fp_ttyo;
                   64079: char   *ptr = mesg;
                   64080: 
                   64081: extern int     window_size;
                   64082: 
                   64083: /*****************************************************************************/
                   64084: 
                   64085: #ifdef SYSV
                   64086: setupline()
                   64087: 
                   64088: {
                   64089: 
                   64090:     struct termio      termio;
                   64091: 
                   64092: /*
                   64093:  *
                   64094:  * Line initialization for SYSV. For now if no line is given (ie. line == NULL )
                   64095:  * we continue on as before using stdout as ttyi and ttyo. Doesn't work when we're
                   64096:  * running in interactive mode or forcing stuff that comes back from the printer
                   64097:  * to stdout. Both cases are now caught by a test that's been added to routine
                   64098:  * initialize(). The change is primarily for the version of lp that's available
                   64099:  * with SVR3.2.
                   64100:  *
                   64101:  */
                   64102: 
                   64103: #ifdef DKHOST
                   64104:     if ( line != NULL && *line != '/' )  {
                   64105:        if ( strncmp(line, "DK:", 3) == 0 )
                   64106:            line += 3;
                   64107:        dkhost_connect();
                   64108: #ifdef DKSTREAMS
                   64109:        if ( ioctl(ttyi, I_PUSH, DKSTREAMS) == -1 )
                   64110:            error(FATAL, "ioctl error - %s", DKSTREAMS);
                   64111:        if ( ioctl(ttyi, I_PUSH, "ldterm") == -1 )
                   64112:            error(FATAL, "ioctl error - ldterm");
                   64113: #endif
                   64114:     } else
                   64115: #endif
                   64116: 
                   64117:     if ( line == NULL )
                   64118:        ttyi = fileno(stdout);
                   64119:     else if ( (ttyi = open(line, O_RDWR)) == -1 )
                   64120:        error(FATAL, "can't open %s", line);
                   64121: 
                   64122:     if ( (ttyo = dup(ttyi)) == -1 )
                   64123:        error(FATAL, "can't dup file descriptor for %s", line);
                   64124: 
                   64125:     if ( stopbits == 1 )
                   64126:        stopbits = 0;
                   64127:     else stopbits = CSTOPB;
                   64128: 
                   64129:     if ( fcntl(ttyi, F_SETFL, O_NDELAY) == -1 )
                   64130:        error(FATAL, "fcntl error - F_SETFL");
                   64131: 
                   64132:     if ( ioctl(ttyi, TCGETA, &termio) == -1 )
                   64133:        error(FATAL, "ioctl error - TCGETA");
                   64134: 
                   64135:     termio.c_iflag = IXON | IGNCR;
                   64136:     termio.c_oflag = 0;
                   64137:     termio.c_cflag = HUPCL | CREAD | CS8 | stopbits | baudrate;
                   64138:     termio.c_lflag = 0;
                   64139:     termio.c_cc[VMIN] = termio.c_cc[VTIME] = 0;
                   64140: 
                   64141:     if ( ioctl(ttyi, TCSETA, &termio) == -1 )
                   64142:        error(FATAL, "ioctl error - TCSETA");
                   64143: 
                   64144:     if ( ioctl(ttyi, TCFLSH, 2) == -1 )
                   64145:        error(FATAL, "ioctl error - TCFLSH");
                   64146: 
                   64147:     fp_ttyi = fdopen(ttyi, "r");
                   64148: 
                   64149: }   /* End of setupline */
                   64150: 
                   64151: /*****************************************************************************/
                   64152: 
                   64153: resetline()
                   64154: 
                   64155: {
                   64156: 
                   64157:     int                        flags;          /* for turning O_NDELAY off */
                   64158:     struct termio      termio;         /* so we can reset flow control */
                   64159: 
                   64160: /*
                   64161:  *
                   64162:  * Only used if we're running the program as separate read and write processes.
                   64163:  * Called from split() after the initial connection has been made and returns
                   64164:  * TRUE if two processes should work. Don't know if the O_NDELAY stuff is really
                   64165:  * needed, but setting c_cc[VMIN] to 1 definitely is. If we leave it be (as a 0)
                   64166:  * the read in readline() won't block!
                   64167:  *
                   64168:  */
                   64169: 
                   64170:     if ( (flags = fcntl(ttyi, F_GETFL, 0)) == -1 )
                   64171:        error(FATAL, "fcntl error - F_GETFL");
                   64172: 
                   64173:     flags &= ~O_NDELAY;
                   64174: 
                   64175:     if ( fcntl(ttyi, F_SETFL, flags) == -1 )
                   64176:        error(FATAL, "fcntl error - F_SETFL");
                   64177: 
                   64178:     if ( ioctl(ttyi, TCGETA, &termio) == -1 )
                   64179:        error(FATAL, "ioctl error - TCGETA");
                   64180: 
                   64181:     termio.c_iflag &= ~IXANY;
                   64182:     termio.c_iflag |= IXON | IXOFF;
                   64183:     termio.c_cc[VMIN] = 1;
                   64184:     termio.c_cc[VTIME] = 0;
                   64185: 
                   64186:     if ( ioctl(ttyi, TCSETA, &termio) == -1 )
                   64187:        error(FATAL, "ioctl error - TCSETA");
                   64188: 
                   64189:     return(TRUE);
                   64190: 
                   64191: }   /* End of resetline */
                   64192: 
                   64193: /*****************************************************************************/
                   64194: 
                   64195: setupstdin(mode)
                   64196: 
                   64197:     int                mode;                   /* what to do with stdin settings */
                   64198: 
                   64199: {
                   64200: 
                   64201:     struct termio              termio;
                   64202: 
                   64203:     static int                 saved = FALSE;
                   64204:     static struct termio       oldtermio;
                   64205: 
                   64206: /*
                   64207:  *
                   64208:  * Save (mode = 0), reset (mode = 1), or restore (mode = 2) the tty settings for
                   64209:  * stdin. Expect something like raw mode with no echo will be set up. Explicit
                   64210:  * code to ensure blocking reads probably isn't needed because blocksize is set
                   64211:  * to 1 when we're in interactive mode, but I've included it anyway.
                   64212:  *
                   64213:  */
                   64214: 
                   64215:     if ( interactive == TRUE )
                   64216:        switch ( mode )  {
                   64217:            case 0:
                   64218:                if ( isatty(0) != 1 )
                   64219:                    error(FATAL, "stdin not a terminal - can't run interactive mode");
                   64220:                if ( ioctl(0, TCGETA, &oldtermio) == -1 )
                   64221:                    error(FATAL, "can't save terminal settings");
                   64222:                saved = TRUE;
                   64223:                break;
                   64224: 
                   64225:            case 1:
                   64226:                termio = oldtermio;
                   64227:                termio.c_lflag &= ~(ICANON | ECHO | ECHOE | ECHOK | ECHONL);
                   64228:                termio.c_cc[VMIN] = 1;
                   64229:                termio.c_cc[VTIME] = 0;
                   64230:                ioctl(0, TCSETA, &termio);
                   64231:                break;
                   64232: 
                   64233:            case 2:
                   64234:                if ( saved == TRUE )
                   64235:                    ioctl(0, TCSETA, &oldtermio);
                   64236:                break;
                   64237:        }   /* End switch */
                   64238: 
                   64239: }   /* End of setupstdin */
                   64240: 
                   64241: /*****************************************************************************/
                   64242: 
                   64243: readline()
                   64244: 
                   64245: {
                   64246: 
                   64247:     int                n;                      /* read() return value */
                   64248:     int                ch;                     /* for interactive mode */
                   64249: 
                   64250:     static int tries = 0;              /* consecutive times read returned 0 */
                   64251: 
                   64252: /*
                   64253:  *
                   64254:  * Reads characters coming back from the printer on ttyi up to a newline (or EOF)
                   64255:  * or until no more characters are available. Characters are put in mesg[], the
                   64256:  * string is terminated with '\0' when we're done with a line and TRUE is returned
                   64257:  * to the caller. If complete line wasn't available FALSE is returned. Interactive
                   64258:  * mode should loop here forever, except during start(), echoing characters to
                   64259:  * stdout. If it happens to leave FALSE should be returned. The non-blocking read
                   64260:  * gets us out until split() is called.
                   64261:  *
                   64262:  * Some users (apparently just on 3B2 DKHOST systems) have had problems with the
                   64263:  * two process implementation that's forced me to kludge things up some. When a
                   64264:  * printer (on those systems) is turned off while postio is transmitting files
                   64265:  * the write process hangs in writeblock() (postio.c) - it's typically in the
                   64266:  * middle of a write() call, while the read() call (below) continually returns 0.
                   64267:  * In the original code readline() returned FALSE when read() returned 0 and we
                   64268:  * get into a loop that never ends - because the write process is hung. In the
                   64269:  * one process implementation having read return 0 is legitimate because the line
                   64270:  * is opened for no delay, but with two processes the read() blocks and a return
                   64271:  * value of 0 should never occur. From my point of view the real problem is that
                   64272:  * the write() call hangs on 3B2 DKHOST systems and apparently doesn't anywhere
                   64273:  * else. If the write returned anything less than or equal to 0 writeblock() would
                   64274:  * shut things down. The kludge I've implemented counts the number of consecutive
                   64275:  * times read() returns a 0 and if it exceeds a limit (100) the read process will
                   64276:  * shut things down. In fact one return of 0 from read() when we're in the two
                   64277:  * process mode is undoubtedly sufficient and no counting should be necessary!!!
                   64278:  * Moving the check to getstatus() should also work and is probably where things
                   64279:  * belong.
                   64280:  *
                   64281:  */
                   64282: 
                   64283:     if ( interactive == FALSE )  {
                   64284:        while ( (n = read(ttyi, ptr, 1)) != 0 )  {
                   64285:            if ( n < 0 )
                   64286:                if ( errno == EINTR )
                   64287:                    continue;
                   64288:                else error(FATAL, "error reading %s", line);
                   64289:            tries = 0;
                   64290:            if ( *ptr == '\n' || *ptr == '\004' || ptr >= endmesg )  {
                   64291:                *(ptr+1) = '\0';
                   64292:                if ( *ptr == '\004' )
                   64293:                    strcpy(ptr, "%%[ status: endofjob ]%%\n");
                   64294:                ptr = mesg;
                   64295:                return(TRUE);
                   64296:            }   /* End if */
                   64297:            ptr++;
                   64298:        }   /* End while */
                   64299:        if ( canread == TRUE && canwrite == FALSE )     /* read process kludge */
                   64300:            if ( ++tries > 100 )
                   64301:                error(FATAL, "printer appears to be offline - shutting down");
                   64302:        return(FALSE);
                   64303:     }  /* End if */
                   64304: 
                   64305:     if ( canwrite == TRUE )            /* don't block during start() */
                   64306:        return(FALSE);
                   64307: 
                   64308:     while ( (ch = getc(fp_ttyi)) != EOF )
                   64309:        putc(ch, stdout);
                   64310:     return(FALSE);
                   64311: 
                   64312: }   /* End of readline */
                   64313: #endif
                   64314: 
                   64315: /*****************************************************************************/
                   64316: 
                   64317: #ifdef V9
                   64318: #include <ipc.h>
                   64319: 
                   64320: char   tbuf[256];                      /* temporary input buffer */
                   64321: char   *nptr = tbuf;                   /* next character comes from here */
                   64322: char   *eptr = tbuf;                   /* one past the last character in tbuf */
                   64323: 
                   64324: setupline()
                   64325: 
                   64326: {
                   64327: 
                   64328:     struct sgttyb      sgtty;
                   64329:     struct ttydevb     ttydev;         /* for setting up the line */
                   64330:     static struct tchars       tchar = { '\377',       /* interrupt */
                   64331:                                          '\377',       /* quit */
                   64332:                                          '\021',       /* start output */
                   64333:                                          '\023',       /* stop output */
                   64334:                                          '\377',       /* end-of-file */
                   64335:                                          '\377'        /* input delimiter */
                   64336:                                        };
                   64337: 
                   64338: /*
                   64339:  *
                   64340:  * Line initialization for V9.
                   64341:  *
                   64342:  */
                   64343: 
                   64344:     if ( line == NULL )  {
                   64345:        ttyi = ttyo = 1;
                   64346:        return;
                   64347:     }  /* End if */
                   64348:     alarm(120);                        /* watch for hanging opens */
                   64349:     if ( line[0] == '/' ) {
                   64350:        if ( (ttyi = open(line, O_RDWR)) == -1 )
                   64351:        error(FATAL, "can't open %s", line);
                   64352:     } else if ((ttyi = ipcopen(ipcpath(line, "dk", 0), "")) < 0) {
                   64353:                sleep(5);       /* wait for Datakit to hangup */
                   64354:                if ((ttyi = ipcopen(ipcpath(line, "dk", 0), "")) < 0) {
                   64355:                        fprintf(stderr, "%s", errstr);
                   64356:                        error(FATAL, "can't ipcopen %s", line);
                   64357:                }
                   64358:     }
                   64359:     alarm(0);
                   64360: 
                   64361:     if ( (ttyo = dup(ttyi)) == -1 )
                   64362:        error(FATAL, "can't dup file descriptor for %s", line);
                   64363: 
                   64364:     if ( ioctl(ttyi, FIOPUSHLD, &tty_ld) == -1 )
                   64365:        error(FATAL, "ioctl error - FIOPUSHLD");
                   64366: 
                   64367:     if ( ioctl(ttyi, TIOCGDEV, &ttydev) == -1 )
                   64368:        error(FATAL, "ioctl error - TIOCGDEV");
                   64369: 
                   64370:     if ( ioctl(ttyi, TIOCGETP, &sgtty) == -1 )
                   64371:        error(FATAL, "ioctl error - TIOCGETP");
                   64372: 
                   64373:     sgtty.sg_flags &= ~ECHO;
                   64374:     sgtty.sg_flags &= ~CRMOD;
                   64375:     sgtty.sg_flags |= CBREAK;
                   64376:     ttydev.ispeed = baudrate;
                   64377:     ttydev.ospeed = baudrate;
                   64378: 
                   64379:     if ( ioctl(ttyi, TIOCSDEV, &ttydev) == -1 )
                   64380:        error(FATAL, "ioctl error - TIOCSDEV");
                   64381: 
                   64382:     if ( ioctl(ttyi, TIOCSETP, &sgtty) == -1 )
                   64383:        error(FATAL, "ioctl error - TIOCSETP");
                   64384: 
                   64385:     if ( ioctl(ttyi, TIOCSETC, &tchar) == -1 )
                   64386:        error(FATAL, "ioctl error - TIOCSETC");
                   64387: 
                   64388:     fp_ttyi = fdopen(ttyi, "r");
                   64389: 
                   64390: }   /* End of setupline */
                   64391: 
                   64392: /*****************************************************************************/
                   64393: 
                   64394: resetline()
                   64395: 
                   64396: {
                   64397: 
                   64398:     struct sgttyb      sgtty;
                   64399: 
                   64400: /*
                   64401:  *
                   64402:  * Only used if we're running the program as separate read and write processes.
                   64403:  * Called from split() after the initial connection has been made and returns
                   64404:  * TRUE if two processes should work. Haven't tested or even compiled the stuff
                   64405:  * for separate read and write processes on Ninth Edition systems - no guarantees
                   64406:  * even though we return TRUE!
                   64407:  *
                   64408:  */
                   64409: 
                   64410:     if ( ioctl(ttyi, TIOCGETP, &sgtty) == -1 )
                   64411:        error(FATAL, "ioctl error - TIOCGETP");
                   64412: 
                   64413:     sgtty.sg_flags |= TANDEM;
                   64414: 
                   64415:     if ( ioctl(ttyi, TIOCSETP, &sgtty) == -1 )
                   64416:        error(FATAL, "ioctl error - TIOCSETP");
                   64417: 
                   64418:     return(TRUE);
                   64419: 
                   64420: }   /* End of resetline */
                   64421: 
                   64422: /*****************************************************************************/
                   64423: 
                   64424: setupstdin(mode)
                   64425: 
                   64426:     int                mode;                   /* what to do with stdin settings */
                   64427: 
                   64428: {
                   64429: 
                   64430:     struct sgttyb              sgtty;
                   64431: 
                   64432:     static int                 saved = FALSE;
                   64433:     static struct sgttyb       oldsgtty;
                   64434: 
                   64435: /*
                   64436:  *
                   64437:  * Save (mode = 0), reset (mode = 1), or restore (mode = 2) the tty settings for
                   64438:  * stdin. Expect something like raw mode with no echo will be set up. Need to make
                   64439:  * sure interrupt and quit still work - they're the only good way to exit when
                   64440:  * we're running interactive mode. I haven't tested or even compiled this code
                   64441:  * so there are no guarantees.
                   64442:  *
                   64443:  */
                   64444: 
                   64445:     if ( interactive == TRUE )
                   64446:        switch ( mode )  {
                   64447:            case 0:
                   64448:                if ( ioctl(0, TIOCGETP, &oldsgtty) == -1 )
                   64449:                    error(FATAL, "can't save terminal settings");
                   64450:                saved = TRUE;
                   64451:                break;
                   64452: 
                   64453:            case 1:
                   64454:                sgtty = oldsgtty;
                   64455:                sgtty.sg_flags &= ~ECHO;
                   64456:                sgtty.sg_flags |= CBREAK;
                   64457:                ioctl(0, TIOCSETP, &sgtty);
                   64458:                break;
                   64459: 
                   64460:            case 2:
                   64461:                if ( saved == TRUE )
                   64462:                    ioctl(0, TIOCSETP, &oldsgtty);
                   64463:                break;
                   64464:        }   /* End switch */
                   64465: 
                   64466: }   /* End of setupstdin */
                   64467: 
                   64468: /*****************************************************************************/
                   64469: 
                   64470: readline()
                   64471: 
                   64472: {
                   64473: 
                   64474:     int                n;                      /* read() return value */
                   64475:     int                ch;                     /* for interactive mode */
                   64476: 
                   64477: /*
                   64478:  *
                   64479:  * Reads characters coming back from the printer on ttyi up to a newline (or EOF)
                   64480:  * and transfers each line to the mesg[] array. Everything available on ttyi is
                   64481:  * initially stored in tbuf[] and a line at a time is transferred from there to
                   64482:  * mesg[]. The string in mesg[] is terminated with a '\0' and TRUE is returned to
                   64483:  * the caller when we find a newline, EOF, or reach the end of the mesg[] array.
                   64484:  * If nothing is available on ttyi we return FALSE if a single process is being
                   64485:  * used for reads and writes, while in the two process implementation we force a
                   64486:  * one character read. Interactive mode loops here forever, except during start(),
                   64487:  * echoing everything that comes back on ttyi to stdout. The performance of a
                   64488:  * simple getc/putc loop for interactive mode was unacceptable when run under mux
                   64489:  * and has been replaced by more complicated code. When layers wasn't involved
                   64490:  * the getc/putc loop worked well.
                   64491:  *
                   64492:  */
                   64493: 
                   64494:     if ( interactive == FALSE )  {
                   64495:        while ( 1 )  {
                   64496:            while ( nptr < eptr )  {    /* grab characters from tbuf */
                   64497:                *ptr = *nptr++;
                   64498:                if ( *ptr == '\r' ) continue;
                   64499:                if ( *ptr == '\n' || *ptr == '\004' || ptr >= endmesg )  {
                   64500:                    *(ptr+1) = '\0';
                   64501:                    if ( *ptr == '\004' )
                   64502:                        strcpy(ptr, "%%[ status: endofjob ]%%\n");
                   64503:                    ptr = mesg;
                   64504:                    return(TRUE);
                   64505:                }   /* End if */
                   64506:                ++ptr;
                   64507:            }   /* End for */
                   64508: 
                   64509:            nptr = eptr = tbuf;
                   64510:            if ( ioctl(ttyi, FIONREAD, &n) < 0 )
                   64511:                if ( errno == EINTR )
                   64512:                    continue;
                   64513:                else error(FATAL, "ioctl error - FIONREAD");
                   64514:            if ( n <= 0 )
                   64515:                if ( canwrite == TRUE )
                   64516:                    return(FALSE);
                   64517:            n = ((n < 1) ? 1 : ((n < sizeof(tbuf)) ? n : sizeof(tbuf)));
                   64518:            if ( (n = read(ttyi, tbuf, n)) < 0 )
                   64519:                if ( errno == EINTR )
                   64520:                    continue;
                   64521:                else error(FATAL, "error reading line %s", line);
                   64522:            else eptr = nptr + n;
                   64523:        }   /* End while */
                   64524:     }  /* End if */
                   64525: 
                   64526:     if ( canwrite == TRUE )            /* don't block during start() */
                   64527:        return(FALSE);
                   64528: 
                   64529:     while ( 1 )  {                     /* only interactive mode gets here */
                   64530:        if ( ioctl(ttyi, FIONREAD, &n) < 0 )
                   64531:            error(FATAL, "ioctl error - FIONREAD");
                   64532:        n = ((n < 1) ? 1 : ((n < sizeof(tbuf)) ? n : sizeof(tbuf)));
                   64533:        if ( (n = read(ttyi, tbuf, n)) < 0 )
                   64534:            error(FATAL, "error reading line %s", line);
                   64535:        else if ( n == 0 )              /* should not happen */
                   64536:            error(FATAL, "end of file in interactive mode");
                   64537:        if ( write(1, tbuf, n) != n )
                   64538:            error(FATAL, "error writing to stdout");
                   64539:     }  /* End while */
                   64540: 
                   64541:     return(FALSE);
                   64542: 
                   64543: }   /* End of readline */
                   64544: #endif
                   64545: 
                   64546: /*****************************************************************************/
                   64547: 
                   64548: #ifdef BSD4_2
                   64549: setupline()
                   64550: 
                   64551: {
                   64552: 
                   64553:     struct sgttyb      sgtty;
                   64554:     static struct tchars       tchar = { '\377',       /* interrupt */
                   64555:                                          '\377',       /* quit */
                   64556:                                          '\021',       /* start output */
                   64557:                                          '\023',       /* stop output */
                   64558:                                          '\377',       /* end-of-file */
                   64559:                                          '\377'        /* input delimiter */
                   64560:                                        };
                   64561:     long       lmodes;
                   64562:     int                disc = NTTYDISC;
                   64563: 
                   64564: /*
                   64565:  *
                   64566:  * Line initialization for BSD4_2. As in the System V code, if no line is given
                   64567:  * (ie. line == NULL) we continue on as before using stdout as ttyi and ttyo.
                   64568:  *
                   64569:  */
                   64570: 
                   64571:     if ( line == NULL )
                   64572:        ttyi = fileno(stdout);
                   64573:     else if ( (ttyi = open(line, O_RDWR)) == -1 )
                   64574:        error(FATAL, "can't open %s", line);
                   64575: 
                   64576:     if ( (ttyo = dup(ttyi)) == -1 )
                   64577:        error(FATAL, "can't dup file descriptor for %s", line);
                   64578: 
                   64579:     if (ioctl(ttyi, TIOCSETD, &disc) == -1 )
                   64580:        error(FATAL, "ioctl error - TIOCSETD");
                   64581: 
                   64582:     if ( ioctl(ttyi, TIOCGETP, &sgtty) == -1 )
                   64583:        error(FATAL, "ioctl error - TIOCGETP");
                   64584: 
                   64585:     if ( ioctl(ttyi, TIOCLGET, &lmodes) == -1 )
                   64586:        error(FATAL, "ioctl error - TIOCLGET");
                   64587: 
                   64588:     sgtty.sg_flags &= ~ECHO;
                   64589:     sgtty.sg_flags &= ~CRMOD;
                   64590:     sgtty.sg_flags |= CBREAK;
                   64591:     sgtty.sg_ispeed = baudrate;
                   64592:     sgtty.sg_ospeed = baudrate;
                   64593:     lmodes |= LDECCTQ;
                   64594: 
                   64595:     if ( ioctl(ttyi, TIOCSETP, &sgtty) == -1 )
                   64596:        error(FATAL, "ioctl error - TIOCSETP");
                   64597: 
                   64598:     if ( ioctl(ttyi, TIOCSETC, &tchar) == -1 )
                   64599:        error(FATAL, "ioctl error - TIOCSETC");
                   64600: 
                   64601:     if ( ioctl(ttyi, TIOCLSET, &lmodes) == -1 )
                   64602:        error(FATAL, "ioctl error - TIOCLSET");
                   64603: 
                   64604:     fp_ttyi = fdopen(ttyi, "r");
                   64605: 
                   64606: }   /* End of setupline */
                   64607: 
                   64608: /*****************************************************************************/
                   64609: 
                   64610: resetline()
                   64611: 
                   64612: {
                   64613: 
                   64614:     struct sgttyb      sgtty;
                   64615: 
                   64616: /*
                   64617:  *
                   64618:  * Only used if we're running the program as separate read and write processes.
                   64619:  * Called from split() after the initial connection has been made and returns
                   64620:  * TRUE if two processes should work. Haven't tested or even compiled the stuff
                   64621:  * for separate read and write processes on Berkeley systems - no guarantees
                   64622:  * even though we return TRUE!
                   64623:  *
                   64624:  */
                   64625: 
                   64626:     if ( ioctl(ttyi, TIOCGETP, &sgtty) == -1 )
                   64627:        error(FATAL, "ioctl error - TIOCGETP");
                   64628: 
                   64629:     sgtty.sg_flags |= TANDEM;
                   64630: 
                   64631:     if ( ioctl(ttyi, TIOCSETP, &sgtty) == -1 )
                   64632:        error(FATAL, "ioctl error - TIOCSETP");
                   64633: 
                   64634:     return(TRUE);
                   64635: 
                   64636: }   /* End of resetline */
                   64637: 
                   64638: /*****************************************************************************/
                   64639: 
                   64640: setupstdin(mode)
                   64641: 
                   64642:     int                mode;                   /* what to do with stdin settings */
                   64643: 
                   64644: {
                   64645: 
                   64646:     struct sgttyb              sgtty;
                   64647: 
                   64648:     static int                 saved = FALSE;
                   64649:     static struct sgttyb       oldsgtty;
                   64650: 
                   64651: /*
                   64652:  *
                   64653:  * Save (mode = 0), reset (mode = 1), or restore (mode = 2) the tty settings for
                   64654:  * stdin. Expect something like raw mode with no echo will be set up. Need to make
                   64655:  * sure interrupt and quit still work - they're the only good way to exit when
                   64656:  * we're running interactive mode. I haven't tested or even compiled this code
                   64657:  * so there are no guarantees.
                   64658:  *
                   64659:  */
                   64660: 
                   64661:     if ( interactive == TRUE )
                   64662:        switch ( mode )  {
                   64663:            case 0:
                   64664:                if ( isatty(0) != 1 )
                   64665:                    error(FATAL, "stdin not a terminal - can't run interactive mode");
                   64666:                if ( ioctl(0, TIOCGETP, &oldsgtty) == -1 )
                   64667:                    error(FATAL, "can't save terminal settings");
                   64668:                saved = TRUE;
                   64669:                break;
                   64670: 
                   64671:            case 1:
                   64672:                sgtty = oldsgtty;
                   64673:                sgtty.sg_flags &= ~ECHO;
                   64674:                sgtty.sg_flags |= CBREAK;
                   64675:                ioctl(0, TIOCSETP, &sgtty);
                   64676:                break;
                   64677: 
                   64678:            case 2:
                   64679:                if ( saved == TRUE )
                   64680:                    ioctl(0, TIOCSETP, &oldsgtty);
                   64681:                break;
                   64682:        }   /* End switch */
                   64683: 
                   64684: }   /* End of setupstdin */
                   64685: 
                   64686: /*****************************************************************************/
                   64687: 
                   64688: readline()
                   64689: 
                   64690: {
                   64691: 
                   64692:     int                n;                      /* read() return value */
                   64693:     int                ch;                     /* for interactive mode */
                   64694: 
                   64695: /*
                   64696:  *
                   64697:  * Reads characters coming back from the printer on ttyo up to a newline (or EOF)
                   64698:  * or until no more characters are available. Characters are put in mesg[], the
                   64699:  * string is terminated with '\0' when we're done with a line and TRUE is returned
                   64700:  * to the caller. If complete line wasn't available FALSE is returned. Interactive
                   64701:  * mode should loop here forever, except during start(), echoing characters to
                   64702:  * stdout. If it happens to leave FALSE should be returned. Probably should read
                   64703:  * everything available on ttyi into a temporary buffer and work from there rather
                   64704:  * than reading one character at a time.
                   64705:  *
                   64706:  */
                   64707: 
                   64708:     if ( interactive == FALSE )  {
                   64709:        while ( 1 )  {
                   64710:            if ( ioctl(ttyi, FIONREAD, &n) < 0 )
                   64711:                if ( errno == EINTR )
                   64712:                    continue;
                   64713:                else error(FATAL, "ioctl error - FIONREAD");
                   64714:            if ( n <= 0 )
                   64715:                if ( canwrite == TRUE )
                   64716:                    return(FALSE);
                   64717:                else n = 1;
                   64718:            for ( ; n > 0; n-- )  {
                   64719:                /*if ( read(ttyi, ptr, 1) < 0 )*/
                   64720:                if ( (*ptr = getc(fp_ttyi)) == EOF )
                   64721:                    if ( errno == EINTR )
                   64722:                        continue;
                   64723:                    else error(FATAL, "error reading %s", line);
                   64724:                if ( *ptr == '\r' ) continue;
                   64725:                if ( *ptr == '\n' || *ptr == '\004' || ptr >= endmesg )  {
                   64726:                    *(ptr+1) = '\0';
                   64727:                    if ( *ptr == '\004' )
                   64728:                        strcpy(ptr, "%%[ status: endofjob ]%%\n");
                   64729:                    ptr = mesg;
                   64730:                    return(TRUE);
                   64731:                }   /* End if */
                   64732:                ++ptr;
                   64733:            }   /* End for */
                   64734:        }   /* End while */
                   64735:     }  /* End if */
                   64736: 
                   64737:     if ( canwrite == TRUE )            /* don't block during start() */
                   64738:        return(FALSE);
                   64739: 
                   64740:     while ( (ch = getc(fp_ttyi)) != EOF )
                   64741:        putc(ch, stdout);
                   64742:     return(FALSE);
                   64743: 
                   64744: }   /* End of readline */
                   64745: 
                   64746: /*****************************************************************************/
                   64747: 
                   64748: /*     @(#)strspn.c    1.2     */
                   64749: /*LINTLIBRARY*/
                   64750: /*
                   64751:  * Return the number of characters in the maximum leading segment
                   64752:  * of string which consists solely of characters from charset.
                   64753:  */
                   64754: int
                   64755: strspn(string, charset)
                   64756: char   *string;
                   64757: register char  *charset;
                   64758: {
                   64759:        register char *p, *q;
                   64760: 
                   64761:        for(q=string; *q != '\0'; ++q) {
                   64762:                for(p=charset; *p != '\0' && *p != *q; ++p)
                   64763:                        ;
                   64764:                if(*p == '\0')
                   64765:                        break;
                   64766:        }
                   64767:        return(q-string);
                   64768: }
                   64769: 
                   64770: /*     @(#)strpbrk.c   1.2     */
                   64771: /*LINTLIBRARY*/
                   64772: /*
                   64773:  * Return ptr to first occurance of any character from `brkset'
                   64774:  * in the character string `string'; NULL if none exists.
                   64775:  */
                   64776: 
                   64777: char *
                   64778: strpbrk(string, brkset)
                   64779: register char *string, *brkset;
                   64780: {
                   64781:        register char *p;
                   64782: 
                   64783:        do {
                   64784:                for(p=brkset; *p != '\0' && *p != *string; ++p)
                   64785:                        ;
                   64786:                if(*p != '\0')
                   64787:                        return(string);
                   64788:        }
                   64789:        while(*string++);
                   64790:        return((char*)0);
                   64791: }
                   64792: 
                   64793: /*     @(#)strtok.c    1.2     */
                   64794: /*     3.0 SID #       1.2     */
                   64795: /*LINTLIBRARY*/
                   64796: /*
                   64797:  * uses strpbrk and strspn to break string into tokens on
                   64798:  * sequentially subsequent calls.  returns NULL when no
                   64799:  * non-separator characters remain.
                   64800:  * `subsequent' calls are calls with first argument NULL.
                   64801:  */
                   64802: 
                   64803: 
                   64804: extern int strspn();
                   64805: extern char *strpbrk();
                   64806: 
                   64807: char *
                   64808: strtok(string, sepset)
                   64809: char   *string, *sepset;
                   64810: {
                   64811:        register char   *p, *q, *r;
                   64812:        static char     *savept;
                   64813: 
                   64814:        /*first or subsequent call*/
                   64815:        p = (string == (char*)0)? savept: string;
                   64816: 
                   64817:        if(p == 0)              /* return if no tokens remaining */
                   64818:                return((char*)0);
                   64819: 
                   64820:        q = p + strspn(p, sepset);      /* skip leading separators */
                   64821: 
                   64822:        if(*q == '\0')          /* return if no tokens remaining */
                   64823:                return((char*)0);
                   64824: 
                   64825:        if((r = strpbrk(q, sepset)) == (char*)0)        /* move past token */
                   64826:                savept = 0;     /* indicate this is last token */
                   64827:        else {
                   64828:                *r = '\0';
                   64829:                savept = ++r;
                   64830:        }
                   64831:        return(q);
                   64832: }
                   64833: #endif
                   64834: 
                   64835: /*****************************************************************************/
                   64836: 
                   64837: #ifdef DKHOST
                   64838: 
                   64839: #ifndef DKSTREAMS
                   64840: short  dkrmode[3] = {DKR_TIME, 0, 0};
                   64841: #endif
                   64842: 
                   64843: dkhost_connect()
                   64844: 
                   64845: {
                   64846: 
                   64847:     int                ofd;                    /* for saving and restoring stderr */
                   64848:     int                dfd;
                   64849:     int                retrytime = 5;
                   64850: 
                   64851: /*
                   64852:  *
                   64853:  * Tries to connect to a Datakit destination. The extra stuff I've added to save
                   64854:  * and later restore stderr is primarily for our spooling setup at Murray Hill.
                   64855:  * postio is usually called with stderr directed to a file that will be returned
                   64856:  * to the user when the job finishes printing. Problems encountered by dkdial(),
                   64857:  * like busy messages, go to stderr but don't belong in the user's mail. They'll
                   64858:  * be temporarily directed to the log file. After we've connected stderr will be
                   64859:  * restored.
                   64860:  *
                   64861:  */
                   64862: 
                   64863:     if ( *line == '\0' )
                   64864:        error(FATAL, "incomplete Datakit line");
                   64865: 
                   64866:     if ( fp_log != NULL && fp_log != stderr )  {       /* redirect dkdial errors */
                   64867:        ofd = dup(2);
                   64868:        close(2);
                   64869:        dup(fileno(fp_log));
                   64870:     }  /* End if */
                   64871: 
                   64872:     while ( (dfd = ttyi = dkdial(line)) < 0 )  {
                   64873:        if ( retrytime < 0 )
                   64874:            error(FATAL, "can't connect to %s", line);
                   64875:        sleep(retrytime++);
                   64876:        if ( retrytime > 60 )
                   64877:            retrytime = 60;
                   64878:     }  /* End while */
                   64879: 
                   64880:     if ( fp_log != NULL && fp_log != stderr )  {       /* restore stderr */
                   64881:        close(2);
                   64882:        dup(ofd);
                   64883:        close(ofd);
                   64884:     }  /* End if */
                   64885: 
                   64886: #ifndef DKSTREAMS
                   64887:     if ( ioctl(ttyi, DIOCRMODE, dkrmode) == -1 )
                   64888:        error(FATAL, "ioctl error - DIOCRMODE");
                   64889: 
                   64890: #ifdef DIOURPWD
                   64891:     if ( window_size > 0 ) {
                   64892:        short   dkparm[3];
                   64893: 
                   64894:        dkparm[0] = dkminor(ttyi);
                   64895:        dkparm[1] = 1;
                   64896:        dkparm[2] = window_size;
                   64897:        if ( ioctl(ttyi, DIOURPWD, dkparm) < 0 || ioctl(ttyi, DIOCFLUSH, 0) < 0 )
                   64898:            error(NON_FATAL, "WSA failed");
                   64899:     }  /* End if */
                   64900: #endif
                   64901: 
                   64902:     line = dtnamer(dkminor(ttyi));
                   64903: 
                   64904:     if ( (ttyi = open(line, O_RDWR)) == -1 )
                   64905:        error(FATAL, "can't open %s", line);
                   64906: 
                   64907:     close(dfd);
                   64908: #endif
                   64909: 
                   64910: }   /* End of dkhost_connect */
                   64911: #endif
                   64912: 
                   64913: /*****************************************************************************/
                   64914: 
                   64915: 0707070014231405061006440057030057030000011222050522627503600003000000002561post.src/postio/ifdef.h/*
                   64916:  *
                   64917:  * Conditional compilation definitions needed in ifdef.c and postio.c.
                   64918:  *
                   64919:  */
                   64920: 
                   64921: #ifdef SYSV
                   64922: #include <termio.h>
                   64923: 
                   64924: #ifdef DKSTREAMS
                   64925: #include <sys/stream.h>
                   64926: #include <sys/stropts.h>
                   64927: #endif
                   64928: 
                   64929: #endif
                   64930: 
                   64931: #ifdef V9
                   64932: #include <sys/filio.h>
                   64933: #include <sys/ttyio.h>
                   64934: 
                   64935: extern int     tty_ld;
                   64936: #endif
                   64937: 
                   64938: #ifdef BSD4_2
                   64939: #include <sgtty.h>
                   64940: #include <sys/time.h>
                   64941: #include <errno.h>
                   64942: 
                   64943: #define FD_ZERO(s) (s) = 0
                   64944: #define FD_SET(n,s) (s) |= 1 << (n)
                   64945: 
                   64946: extern int     errno;
                   64947: #endif
                   64948: 
                   64949: #ifdef DKHOST
                   64950: #include <dk.h>
                   64951: #include <sysexits.h>
                   64952: 
                   64953: extern char    *dtnamer();
                   64954: extern int     dkminor();
                   64955: #endif
                   64956: 
                   64957: /*
                   64958:  *
                   64959:  * External variable declarations - most (if not all) are defined in postio.c and
                   64960:  * needed by the routines in ifdef.c.
                   64961:  *
                   64962:  */
                   64963: 
                   64964: extern char    *line;                  /* printer is on this line */
                   64965: extern int     ttyi;                   /* input */
                   64966: extern int     ttyo;                   /* and output file descriptors */
                   64967: extern FILE    *fp_log;                /* just for DKHOST stuff */
                   64968: 
                   64969: extern char    mesg[];                 /* exactly what came back on ttyi */
                   64970: extern char    *endmesg;               /* one in front of last free slot in mesg */
                   64971: extern int     next;                   /* next character goes in mesg[next] */
                   64972: 
                   64973: extern short   baudrate;               /* printer is running at this speed */
                   64974: extern int     stopbits;               /* and expects this many stop bits */
                   64975: extern int     interactive;            /* TRUE for interactive mode */
                   64976: 
                   64977: extern int     whatami;                /* a READ or WRITE process - or both */
                   64978: extern int     canread;                /* allows reads */
                   64979: extern int     canwrite;               /* and writes if TRUE */
                   64980: 
                   64981: 0707070014231405071006440057030057030000011223600522627503600003100000015777post.src/postio/postio.1.TH POSTIO 1 "DWB 3.2"
                   64982: .SH NAME
                   64983: .B postio
                   64984: \- serial interface for PostScript printers
                   64985: .SH SYNOPSIS
                   64986: \*(mBpostio\f1
                   64987: .OP \-l line
                   64988: .OP "" options []
                   64989: .OP "" files []
                   64990: .SH DESCRIPTION
                   64991: .B postio
                   64992: sends
                   64993: .I files
                   64994: to the PostScript printer attached to
                   64995: .IR line .
                   64996: If no
                   64997: .I files
                   64998: are specified the standard input is sent.
                   64999: The first group of
                   65000: .I options
                   65001: should be sufficient for most applications:
                   65002: .TP 0.75i
                   65003: .OP \-b speed
                   65004: Transmit data over
                   65005: .I line
                   65006: at baud rate
                   65007: .I speed.
                   65008: Recognized baud rates are 1200, 2400, 4800, 9600, and 19200.
                   65009: The default
                   65010: .I speed
                   65011: is 9600 baud.
                   65012: .TP
                   65013: .OP \-c
                   65014: Do not send
                   65015: .MR ^C s
                   65016: (interrupts) to the printer,
                   65017: which means
                   65018: .B postio
                   65019: does not force a busy printer into the idle state.
                   65020: .TP
                   65021: .OP \-l line
                   65022: Connect to printer attached to
                   65023: .IR line .
                   65024: In most cases there is no default and
                   65025: .B postio
                   65026: must be able to read and write
                   65027: .IR line .
                   65028: If
                   65029: .I line
                   65030: does not begin with
                   65031: .MW /
                   65032: it is treated as a Datakit destination.
                   65033: .TP
                   65034: .OP \-q
                   65035: Prevents status queries while
                   65036: .I files
                   65037: are being sent to the printer.
                   65038: When status queries are disabled a dummy message is appended
                   65039: to the log file before each block is transmitted.
                   65040: .TP
                   65041: .OP \-B num
                   65042: Set internal buffer size for reading and writing
                   65043: .I files
                   65044: to
                   65045: .I num
                   65046: bytes
                   65047: (default is 2048 bytes).
                   65048: .TP
                   65049: .OP \-D
                   65050: Enable debug mode.
                   65051: Guarantees that everything read on
                   65052: .I line
                   65053: will be added to the log file (standard error by default).
                   65054: .TP
                   65055: .OP \-L file
                   65056: Data received on
                   65057: .I line
                   65058: gets put in
                   65059: .IR file .
                   65060: The default log
                   65061: .I file
                   65062: is standard error.
                   65063: Printer or status messages that do not indicate a change in state
                   65064: are not normally written to
                   65065: .I file
                   65066: but can be forced out using the
                   65067: .OP \-D
                   65068: option.
                   65069: .TP
                   65070: .OP \-P string
                   65071: Send
                   65072: .I string
                   65073: to the printer before any of the input files.
                   65074: The default
                   65075: .I string
                   65076: is simple PostScript code that disables timeouts.
                   65077: .TP
                   65078: .OP \-R num
                   65079: Run
                   65080: .B postio
                   65081: as a single process if
                   65082: .I num
                   65083: is 1 or as separate read and write processes if
                   65084: .I num
                   65085: is 2.
                   65086: By default
                   65087: .B postio
                   65088: runs as a single process.
                   65089: .PP
                   65090: The next two
                   65091: .I options
                   65092: are provided for users who expect to run
                   65093: .B postio
                   65094: on their own.
                   65095: Neither is suitable for use in spooler interface
                   65096: programs:
                   65097: .TP 0.35i
                   65098: .OP \-i
                   65099: Run the program in interactive mode.
                   65100: Any
                   65101: .I files
                   65102: are sent first and followed by the standard input.
                   65103: Forces separate read and write processes
                   65104: and overrides many other options.
                   65105: To exit interactive mode use your interrupt or quit character.
                   65106: To get a friendly interactive connection with the printer type
                   65107: .MW executive
                   65108: on a line by itself.
                   65109: .TP
                   65110: .OP \-t
                   65111: Data received on
                   65112: .I line
                   65113: and not recognized as printer or status information is written to
                   65114: the standard output.
                   65115: Forces separate read and write processes.
                   65116: Convenient if you have a PostScript program that
                   65117: will be returning useful data to the host.
                   65118: .PP
                   65119: The last option is not generally recommended and should only
                   65120: be used if all else fails to provide a reliable connection:
                   65121: .TP 0.35i
                   65122: .OP \-S
                   65123: Slow the transmission of data to the printer.
                   65124: Severely limits throughput, runs as a single process,
                   65125: disables the
                   65126: .OP \-q
                   65127: option, limits the internal buffer size to 1024 bytes,
                   65128: can use an excessive amount of
                   65129: .SM CPU
                   65130: time, and does nothing in interactive mode.
                   65131: .PP
                   65132: Best performance is usually obtained by using
                   65133: a large internal buffer
                   65134: .OP -B "" ) (
                   65135: and by running the program as separate read and write processes
                   65136: .OP \-R2 "" ). (
                   65137: Inability to fork the additional process causes
                   65138: .B postio
                   65139: to continue as a single read/write process.
                   65140: When one process is used, only data sent to the printer is flow-controlled.
                   65141: .PP
                   65142: The options are not all mutually exclusive.
                   65143: The
                   65144: .OP \-i
                   65145: option always wins, selecting its own settings for whatever is
                   65146: needed to run interactive mode, independent of anything else
                   65147: found on the command line.
                   65148: Interactive mode runs as separate read and write processes
                   65149: and few of the other
                   65150: .I options
                   65151: accomplish anything in the presence of the
                   65152: .OP \-i
                   65153: option.
                   65154: The
                   65155: .OP \-t
                   65156: option needs a reliable two way connection to the printer and
                   65157: therefore tries to force separate read and write processes.
                   65158: The
                   65159: .OP \-S
                   65160: option relies on the status query mechanism, so
                   65161: .OP \-q
                   65162: is disabled and the program runs as a single process.
                   65163: .PP
                   65164: In most cases
                   65165: .B postio
                   65166: starts by making a connection to
                   65167: .I line
                   65168: and then attempts to force the printer into the
                   65169: .SM IDLE
                   65170: state by sending an appropriate sequence of
                   65171: .MW ^T
                   65172: (status query), 
                   65173: .MW ^C
                   65174: (interrupt), and
                   65175: .MW ^D
                   65176: (end of job) characters.
                   65177: When the printer goes
                   65178: .SM IDLE
                   65179: .I files
                   65180: are transmitted along with an occasional
                   65181: .MW ^T
                   65182: (unless the
                   65183: .OP \-q
                   65184: option was used).
                   65185: After all the
                   65186: .I files
                   65187: are sent the program waits until it is reasonably sure the
                   65188: job is complete.
                   65189: Printer generated error messages received at any time
                   65190: except while establishing the initial connection
                   65191: (or when running interactive mode) cause
                   65192: .B postio
                   65193: to exit with a non-zero status.
                   65194: In addition to being added to the log file, printer error messages
                   65195: are also echoed to standard error.
                   65196: .SH EXAMPLES
                   65197: Run as a single process at 9600 baud and send
                   65198: .I file1
                   65199: and
                   65200: .I file2
                   65201: to the printer attached to
                   65202: .MR /dev/tty01 :
                   65203: .EX
                   65204: postio -l /dev/tty01  \f2file1  file2
                   65205: .EE
                   65206: Same as above except two processes are used,
                   65207: the internal buffer is set to 4096 bytes,
                   65208: and data returned by the printer gets put in file
                   65209: .MR log :
                   65210: .EX
                   65211: postio -R2 -B4096 -l/dev/tty01 -Llog  \f2file1  file2
                   65212: .EE
                   65213: Establish an interactive connection with the printer at Datakit
                   65214: destination
                   65215: .MR my/printer :
                   65216: .EX
                   65217: postio -i -l my/printer
                   65218: .EE
                   65219: Send file
                   65220: .MW program
                   65221: to the printer connected to
                   65222: .MR /dev/tty22 ,
                   65223: recover any data in file
                   65224: .MR results ,
                   65225: and put log messages in file
                   65226: .MR log :
                   65227: .EX
                   65228: postio -t -l /dev/tty22 -L log program >results
                   65229: .EE
                   65230: .SH DIAGNOSTICS
                   65231: A 0 exit status is returned if the files ran successfully.
                   65232: System errors (e.g., ``can't open the line'') set the low order
                   65233: bit in the exit status, while PostScript errors set bit 1.
                   65234: An exit status of 2 usually means the printer
                   65235: detected a PostScript error in the input
                   65236: .IR files .
                   65237: .SH WARNINGS
                   65238: .PP
                   65239: The input
                   65240: .I files
                   65241: are handled as a single PostScript job.
                   65242: Sending several different jobs, each with their own internal
                   65243: end of job mark
                   65244: .RM ( ^D )
                   65245: is not guaranteed to work properly.
                   65246: .B postio
                   65247: may quit before all the jobs have completed and could be restarted
                   65248: before the last one finishes.
                   65249: .PP
                   65250: All the capabilities described above may not be available on every
                   65251: machine or even across the different versions of
                   65252: .SM UNIX
                   65253: that are currently supported by the program.
                   65254: For example, the code needed to connect to a Datakit destination may only
                   65255: work on System\ V and may require that the
                   65256: .SM DKHOST
                   65257: software package be available at compile time.
                   65258: .PP
                   65259: There may be no default
                   65260: .I line
                   65261: so using
                   65262: .OP \-l
                   65263: option is strongly recommended.
                   65264: If omitted
                   65265: .B postio
                   65266: may attempt to connect to the printer using the standard output.
                   65267: If Datakit is involved the
                   65268: .OP \-b
                   65269: may be ineffective and attempts by
                   65270: .B postio
                   65271: to flow control data in both directions may not work.
                   65272: The
                   65273: .OP \-q
                   65274: option can help if the printer is connected to \s-1RADIAN\s+1.
                   65275: The
                   65276: .OP \-S
                   65277: option is not generally recommended and should only be used if
                   65278: all else fails to establish a reliable connection.
                   65279: .SH SEE ALSO
                   65280: .BR buildtables (1),
                   65281: .BR dpost (1),
                   65282: .BR postdaisy (1),
                   65283: .BR postdmd (1),
                   65284: .BR postmd (1),
                   65285: .BR postprint (1),
                   65286: .BR postreverse (1),
                   65287: .BR posttek (1),
                   65288: .BR printfont (1)
                   65289: 0707070014231405101006440057030057030000011224000522627503600003100000107251post.src/postio/postio.c/*
                   65290:  *
                   65291:  * postio - RS-232 serial interface for PostScript printers
                   65292:  *
                   65293:  * A simple program that manages input and output for PostScript printers. Much
                   65294:  * has been added and changed from early versions of the program, but the basic
                   65295:  * philosophy is still the same. Don't send real data until we're certain we've
                   65296:  * connected to a PostScript printer that's in the idle state and try to hold the
                   65297:  * connection until the job is completely done. It's more work than you might
                   65298:  * expect is necessary, but should provide a reasonably reliable spooler interface
                   65299:  * that can return error indications to the caller via the program's exit status.
                   65300:  *
                   65301:  * I've added code that will let you split the program into separate read/write
                   65302:  * processes. Although it's not the default it should be useful if you have a file
                   65303:  * that will be returning useful data from the printer. The two process stuff was
                   65304:  * laid down on top of the single process code and both methods still work. The
                   65305:  * implementation isn't as good as it could be, but didn't require many changes
                   65306:  * to the original program (despite the fact that there are now many differences).
                   65307:  *
                   65308:  * By default the program still runs as a single process. The -R2 option forces
                   65309:  * separate read and write processes after the intial connection is made. If you
                   65310:  * want that as the default initialize splitme (below) to TRUE. In addition the
                   65311:  * -t option that's used to force stuff not recognized as status reports to stdout
                   65312:  * also tries to run as two processes (by setting splitme to TRUE). It will only
                   65313:  * work if the required code (ie. resetline() in ifdef.c) has been implemented
                   65314:  * for your Unix system. I've only tested the System V code.
                   65315:  *
                   65316:  * Code needed to support interactive mode has also been added, although again it's
                   65317:  * not as efficient as it could be. It depends on the system dependent procedures
                   65318:  * resetline() and setupstdin() (file ifdef.c) and for now is only guaranteed to
                   65319:  * work on System V. Can be requested using the -i option.
                   65320:  *
                   65321:  * Quiet mode (-q option) is also new, but was needed for some printers connected
                   65322:  * to RADIAN. If you're running in quiet mode no status requests will be sent to
                   65323:  * the printer while files are being transmitted (ie. in send()).
                   65324:  *
                   65325:  * The program expects to receive printer status lines that look like,
                   65326:  *
                   65327:  *     %%[ status: idle; source: serial 25 ]%%
                   65328:  *     %%[ status: waiting; source: serial 25 ]%%
                   65329:  *     %%[ status: initializing; source: serial 25 ]%%
                   65330:  *     %%[ status: busy; source: serial 25 ]%%
                   65331:  *     %%[ status: printing; source: serial 25 ]%%
                   65332:  *     %%[ status: PrinterError: out of paper; source: serial 25 ]%%
                   65333:  *     %%[ status: PrinterError: no paper tray; source: serial 25 ]%%
                   65334:  *
                   65335:  * although this list isn't complete. Sending a '\024' (control T) character forces
                   65336:  * the return of a status report. PostScript errors detected on the printer result
                   65337:  * in the immediate transmission of special error messages that look like,
                   65338:  *
                   65339:  *     %%[ Error: undefined; OffendingCommand: xxx ]%%
                   65340:  *     %%[ Flushing: rest of job (to end-of-file) will be ignored ]%%
                   65341:  *
                   65342:  * although we only use the Error and Flushing keywords. Finally conditions, like
                   65343:  * being out of paper, result in other messages being sent back from the printer
                   65344:  * over the communications line. Typical PrinterError messages look like,
                   65345:  *
                   65346:  *     %%[ PrinterError: out of paper; source: serial 25 ]%%
                   65347:  *     %%[ PrinterError: paper jam; source: serial 25 ]%%
                   65348:  *
                   65349:  * although we only use the PrinterError keyword rather than trying to recognize
                   65350:  * all possible printer errors.
                   65351:  *
                   65352:  * The implications of using one process and only flow controlling data going to
                   65353:  * the printer are obvious. Job transmission should be reliable, but there can be
                   65354:  * data loss in stuff sent back from the printer. Usually that only caused problems
                   65355:  * with jobs designed to run on the printer and return useful data back over the
                   65356:  * communications line. If that's the kind of job you're sending call postio with
                   65357:  * the -t option. That should force the program to split into separate read and
                   65358:  * write processes and everything not bracketed by "%%[ " and " ]%%" strings goes
                   65359:  * to stdout. In otherwords the data you're expecting should be separated from the
                   65360:  * status stuff that goes to the log file (or stderr). The -R2 option does almost
                   65361:  * the same thing (ie. separate read and write processes), but everything that
                   65362:  * comes back from the printer goes to the log file (stderr by default) and you'll
                   65363:  * have to separate your data from any printer messages.
                   65364:  *
                   65365:  * A typical command line might be,
                   65366:  *
                   65367:  *     postio -l /dev/tty01 -b 9600 -L log file1 file2
                   65368:  *
                   65369:  * where -l selects the line, -b sets the baud rate, and -L selects the printer
                   65370:  * log file. Since there's no default line, at least not right now, you'll always
                   65371:  * need to use the -l option, and if you don't choose a log file stderr will be
                   65372:  * used. If you have a program that will be returning data the command line might
                   65373:  * look like,
                   65374:  *
                   65375:  *     postio -t -l/dev/tty01 -b9600 -Llog file >results
                   65376:  *
                   65377:  * Status stuff goes to file log while the data you're expecting back from the
                   65378:  * printer gets put in file results.
                   65379:  *
                   65380:  */
                   65381: 
                   65382: #include <stdio.h>
                   65383: #include <ctype.h>
                   65384: #include <fcntl.h>
                   65385: #include <signal.h>
                   65386: #include <sys/types.h>
                   65387: #include <errno.h>
                   65388: 
                   65389: #include "ifdef.h"                     /* conditional compilation stuff */
                   65390: #include "gen.h"                       /* general purpose definitions */
                   65391: #include "postio.h"                    /* some special definitions */
                   65392: 
                   65393: char   **argv;                         /* global so everyone can use them */
                   65394: int    argc;
                   65395: 
                   65396: char   *prog_name = "";                /* really just for error messages */
                   65397: int    x_stat = 0;                     /* program exit status */
                   65398: int    debug = OFF;                    /* debug flag */
                   65399: int    ignore = OFF;                   /* what's done for FATAL errors */
                   65400: 
                   65401: char   *line = NULL;                   /* printer is on this tty line */
                   65402: short  baudrate = BAUDRATE;            /* and running at this baud rate */
                   65403: Baud   baudtable[] = BAUDTABLE;        /* converts strings to termio values */
                   65404: 
                   65405: int    stopbits = 1;                   /* number of stop bits */
                   65406: int    tostdout = FALSE;               /* non-status stuff goes to stdout? */
                   65407: int    quiet = FALSE;                  /* no status queries in send() if TRUE */
                   65408: int    interactive = FALSE;            /* interactive mode */
                   65409: char   *postbegin = POSTBEGIN;         /* preceeds all the input files */
                   65410: int    useslowsend = FALSE;            /* not recommended! */
                   65411: int    sendctrlC = TRUE;               /* interrupt with ctrl-C when BUSY */
                   65412: int    window_size = -1;               /* for Datakit - use -w */
                   65413: 
                   65414: char   *block = NULL;                  /* input file buffer */
                   65415: int    blocksize = BLOCKSIZE;          /* and its size in bytes */
                   65416: int    head = 0;                       /* block[head] is the next character */
                   65417: int    tail = 0;                       /* one past the last byte in block[] */
                   65418: 
                   65419: int    splitme = FALSE;                /* into READ and WRITE processes if TRUE */
                   65420: int    whatami = READWRITE;            /* a READ or WRITE process - or both */
                   65421: int    canread = TRUE;                 /* allow reads */
                   65422: int    canwrite = TRUE;                /* and writes if TRUE */
                   65423: int    otherpid = -1;                  /* who gets signals if greater than 1 */
                   65424: int    joinsig = SIGTRAP;              /* reader gets this when writing is done */
                   65425: int    writedone = FALSE;              /* and then sets this to TRUE */
                   65426: 
                   65427: char   mesg[MESGSIZE];                 /* exactly what came back on ttyi */
                   65428: char   sbuf[MESGSIZE];                 /* for parsing the message */
                   65429: int    next = 0;                       /* next character goes in mesg[next] */
                   65430: char   *mesgptr = NULL;                /* printer message starts here in mesg[] */
                   65431: char   *endmesg = NULL;                /* as far as readline() can go in mesg[] */
                   65432: 
                   65433: Status status[] = STATUS;              /* for converting status strings */
                   65434: int    nostatus = NOSTATUS;            /* default getstatus() return value */
                   65435: 
                   65436: int    currentstate = NOTCONNECTED;    /* what's happening START, SEND, or DONE */
                   65437: 
                   65438: int    ttyi = 0;                       /* input */
                   65439: int    ttyo = 2;                       /* and output file descriptors */
                   65440: 
                   65441: FILE   *fp_log = stderr;               /* log file for stuff from the printer */
                   65442: 
                   65443: /*****************************************************************************/
                   65444: 
                   65445: main(agc, agv)
                   65446: 
                   65447:     int                agc;
                   65448:     char       *agv[];
                   65449: 
                   65450: {
                   65451: 
                   65452: /*
                   65453:  *
                   65454:  * A simple program that manages input and output for PostScript printers. Can run
                   65455:  * as a single process or as separate read/write processes. What's done depends on
                   65456:  * the value assigned to splitme when split() is called.
                   65457:  *
                   65458:  */
                   65459: 
                   65460:     argc = agc;                                /* other routines may want them */
                   65461:     argv = agv;
                   65462: 
                   65463:     prog_name = argv[0];               /* really just for error messages */
                   65464: 
                   65465:     init_signals();                    /* sets up interrupt handling */
                   65466:     options();                         /* get command line options */
                   65467:     initialize();                      /* must be done after options() */
                   65468:     start();                           /* make sure the printer is ready */
                   65469:     split();                           /* into read/write processes - maybe */
                   65470:     arguments();                       /* then send each input file */
                   65471:     done();                            /* wait until the printer is finished */
                   65472:     cleanup();                         /* make sure the write process stops */
                   65473: 
                   65474:     exit(x_stat);                      /* everything probably went OK */
                   65475: 
                   65476: }   /* End of main */
                   65477: 
                   65478: /*****************************************************************************/
                   65479: 
                   65480: init_signals()
                   65481: 
                   65482: {
                   65483: 
                   65484:     void       interrupt();            /* handles them if we catch signals */
                   65485: 
                   65486: /*
                   65487:  *
                   65488:  * Makes sure we handle interrupts. The proper way to kill the program, if
                   65489:  * necessary, is to do a kill -15. That forces a call to interrupt(), which in
                   65490:  * turn tries to reset the printer and then exits with a non-zero status. If the
                   65491:  * program is running as two processes, sending SIGTERM to either the parent or
                   65492:  * child should clean things up.
                   65493:  *
                   65494:  */
                   65495: 
                   65496:     if ( signal(SIGINT, interrupt) == SIG_IGN )  {
                   65497:        signal(SIGINT, SIG_IGN);
                   65498:        signal(SIGQUIT, SIG_IGN);
                   65499:        signal(SIGHUP, SIG_IGN);
                   65500:     } else {
                   65501:        signal(SIGHUP, interrupt);
                   65502:        signal(SIGQUIT, interrupt);
                   65503:     }  /* End else */
                   65504: 
                   65505:     signal(SIGTERM, interrupt);
                   65506: 
                   65507: }   /* End of init_sig */
                   65508: 
                   65509: /*****************************************************************************/
                   65510: 
                   65511: options()
                   65512: 
                   65513: {
                   65514: 
                   65515:     int                ch;                     /* return value from getopt() */
                   65516:     char       *optnames = "b:cil:qs:tw:B:L:P:R:SDI";
                   65517: 
                   65518:     extern char        *optarg;                /* used by getopt() */
                   65519:     extern int optind;
                   65520: 
                   65521: /*
                   65522:  *
                   65523:  * Reads and processes the command line options. The -R2, -t, and -i options all
                   65524:  * force separate read and write processes by eventually setting splitme to TRUE
                   65525:  * (check initialize()). The -S option is not recommended and should only be used
                   65526:  * as a last resort!
                   65527:  *
                   65528:  */
                   65529: 
                   65530:     while ( (ch = getopt(argc, argv, optnames)) != EOF )  {
                   65531:        switch ( ch )  {
                   65532:            case 'b':                   /* baud rate string */
                   65533:                    baudrate = getbaud(optarg);
                   65534:                    break;
                   65535: 
                   65536:            case 'c':                   /* no ctrl-C's */
                   65537:                    sendctrlC = FALSE;
                   65538:                    break;
                   65539: 
                   65540:            case 'i':                   /* interactive mode */
                   65541:                    interactive = TRUE;
                   65542:                    break;
                   65543: 
                   65544:            case 'l':                   /* printer line */
                   65545:                    line = optarg;
                   65546:                    break;
                   65547: 
                   65548:            case 'q':                   /* no status queries - for RADIAN? */
                   65549:                    quiet = TRUE;
                   65550:                    break;
                   65551: 
                   65552:            case 's':                   /* use 2 stop bits - for UNISON? */
                   65553:                    if ( (stopbits = atoi(optarg)) < 1 || stopbits > 2 )
                   65554:                        stopbits = 1;
                   65555:                    break;
                   65556: 
                   65557:            case 't':                   /* non-status stuff goes to stdout */
                   65558:                    tostdout = TRUE;
                   65559:                    break;
                   65560: 
                   65561:            case 'w':                   /* Datakit window size */
                   65562:                    window_size = atoi(optarg);
                   65563:                    break;
                   65564: 
                   65565:            case 'B':                   /* set the job buffer size */
                   65566:                    if ( (blocksize = atoi(optarg)) <= 0 )
                   65567:                        blocksize = BLOCKSIZE;
                   65568:                    break;
                   65569: 
                   65570:            case 'L':                   /* printer log file */
                   65571:                    if ( (fp_log = fopen(optarg, "w")) == NULL )  {
                   65572:                        fp_log = stderr;
                   65573:                        error(NON_FATAL, "can't open log file %s", optarg);
                   65574:                    }   /* End if */
                   65575:                    break;
                   65576: 
                   65577:            case 'P':                   /* initial PostScript code */
                   65578:                    postbegin = optarg;
                   65579:                    break;
                   65580: 
                   65581:            case 'R':                   /* run as one or two processes */
                   65582:                    if ( atoi(optarg) == 2 )
                   65583:                        splitme = TRUE;
                   65584:                    else splitme = FALSE;
                   65585:                    break;
                   65586: 
                   65587:            case 'S':                   /* slow and kludged up version of send */
                   65588:                    useslowsend = TRUE;
                   65589:                    break;
                   65590: 
                   65591:            case 'D':                   /* debug flag */
                   65592:                    debug = ON;
                   65593:                    break;
                   65594: 
                   65595:            case 'I':                   /* ignore FATAL errors */
                   65596:                    ignore = ON;
                   65597:                    break;
                   65598: 
                   65599:            case '?':                   /* don't understand the option */
                   65600:                    error(FATAL, "");
                   65601:                    break;
                   65602: 
                   65603:            default:                    /* don't know what to do for ch */
                   65604:                    error(FATAL, "missing case for option %c\n", ch);
                   65605:                    break;
                   65606:        }   /* End switch */
                   65607:     }   /* End while */
                   65608: 
                   65609:     argc -= optind;                    /* get ready for non-option args */
                   65610:     argv += optind;
                   65611: 
                   65612: }   /* End of options */
                   65613: 
                   65614: /*****************************************************************************/
                   65615: 
                   65616: getbaud(rate)
                   65617: 
                   65618:     char       *rate;                  /* string representing the baud rate */
                   65619: 
                   65620: {
                   65621: 
                   65622:     int                i;                      /* for looking through baudtable[] */
                   65623: 
                   65624: /*
                   65625:  *
                   65626:  * Called from options() to convert a baud rate string into an appropriate termio
                   65627:  * value. *rate is looked up in baudtable[] and if it's found, the corresponding
                   65628:  * value is returned to the caller.
                   65629:  *
                   65630:  */
                   65631: 
                   65632:     for ( i = 0; baudtable[i].rate != NULL; i++ )
                   65633:        if ( strcmp(rate, baudtable[i].rate) == 0 )
                   65634:            return(baudtable[i].val);
                   65635: 
                   65636:     error(FATAL, "don't recognize baud rate %s", rate);
                   65637: 
                   65638: }   /* End of getbaud */
                   65639: 
                   65640: /*****************************************************************************/
                   65641: 
                   65642: initialize()
                   65643: 
                   65644: {
                   65645: 
                   65646: /*
                   65647:  *
                   65648:  * Initialization, a few checks, and a call to setupline() (file ifdef.c) to open
                   65649:  * and configure the communications line. Settings for interactive mode always
                   65650:  * take precedence. The setupstdin() call with an argument of 0 saves the current
                   65651:  * terminal settings if interactive mode has been requested - otherwise nothing's
                   65652:  * done. Unbuffering stdout (via the setbuf() call) isn't really needed on System V
                   65653:  * since it's flushed whenever terminal input is requested. It's more efficient if
                   65654:  * we buffer the stdout (on System V) but safer (for other versions of Unix) if we
                   65655:  * include the setbuf() call.
                   65656:  *
                   65657:  */
                   65658: 
                   65659:     whatami = READWRITE;               /* always run start() as one process */
                   65660:     canread = canwrite = TRUE;
                   65661: 
                   65662:     if ( tostdout == TRUE )            /* force separate read/write processes */
                   65663:        splitme = TRUE;
                   65664: 
                   65665:     if ( interactive == TRUE )  {      /* interactive mode settings always win */
                   65666:        quiet = FALSE;
                   65667:        tostdout = FALSE;
                   65668:        splitme = TRUE;
                   65669:        blocksize = 1;
                   65670:        postbegin = NULL;
                   65671:        useslowsend = FALSE;
                   65672:        nostatus = INTERACTIVE;
                   65673:        setbuf(stdout, NULL);
                   65674:     }  /* End if */
                   65675: 
                   65676:     if ( useslowsend == TRUE )  {      /* last resort only - not recommended */
                   65677:        quiet = FALSE;
                   65678:        splitme = FALSE;
                   65679:        if ( blocksize > 1024 )         /* don't send too much all at once */
                   65680:            blocksize = 1024;
                   65681:     }  /* End if */
                   65682: 
                   65683:     if ( tostdout == TRUE && fp_log == stderr )
                   65684:        fp_log = NULL;
                   65685: 
                   65686:     if ( line == NULL && (interactive == TRUE || tostdout == TRUE) )
                   65687:        error(FATAL, "a printer line must be supplied - use the -l option");
                   65688: 
                   65689:     if ( (block = malloc(blocksize)) == NULL )
                   65690:        error(FATAL, "no memory");
                   65691: 
                   65692:     endmesg = mesg + sizeof mesg - 2;  /* one byte from last position in mesg */
                   65693: 
                   65694:     setupline();                       /* configure the communications line */
                   65695:     setupstdin(0);                     /* save current stdin terminal settings */
                   65696: 
                   65697: }   /* End of initialize */
                   65698: 
                   65699: /*****************************************************************************/
                   65700: 
                   65701: start()
                   65702: 
                   65703: {
                   65704: 
                   65705: /*
                   65706:  *
                   65707:  * Tries to put the printer in the IDLE state before anything important is sent.
                   65708:  * Run as a single process no matter what has been assigned to splitme. Separate
                   65709:  * read and write processes, if requested, will be created after we're done here.
                   65710:  *
                   65711:  */
                   65712: 
                   65713:     logit("printer startup\n");
                   65714: 
                   65715:     currentstate = START;
                   65716:     clearline();
                   65717: 
                   65718:     while ( 1 )
                   65719:        switch ( getstatus(1) )  {
                   65720:            case IDLE:
                   65721:            case INTERACTIVE:
                   65722:                    if ( postbegin != NULL && *postbegin != '\0' )
                   65723:                        Write(ttyo, postbegin, strlen(postbegin));
                   65724:                    clearline();
                   65725:                    return;
                   65726: 
                   65727:            case BUSY:
                   65728:                    if ( sendctrlC == TRUE ) {
                   65729:                        Write(ttyo, "\003", 1);
                   65730:                        Rest(1);
                   65731:                    }   /* End if */
                   65732:                    break;
                   65733: 
                   65734:            case WAITING:
                   65735:            case ERROR:
                   65736:            case FLUSHING:
                   65737:                    Write(ttyo, "\004", 1);
                   65738:                    Rest(1);
                   65739:                    break;
                   65740: 
                   65741:            case PRINTERERROR:
                   65742:                    Rest(15);
                   65743:                    break;
                   65744: 
                   65745:            case DISCONNECT:
                   65746:                    error(FATAL, "Disconnected - printer may be offline");
                   65747:                    break;
                   65748: 
                   65749:            case ENDOFJOB:
                   65750:            case UNKNOWN:
                   65751:                    clearline();
                   65752:                    break;
                   65753: 
                   65754:            default:
                   65755:                    Rest(1);
                   65756:                    break;
                   65757:        }   /* End switch */
                   65758: 
                   65759: }   /* End of start */
                   65760: 
                   65761: /*****************************************************************************/
                   65762: 
                   65763: split()
                   65764: 
                   65765: {
                   65766: 
                   65767:     int                pid;
                   65768:     void       interrupt();
                   65769: 
                   65770: /*
                   65771:  *
                   65772:  * If splitme is TRUE we fork a process, make the parent handle reading, and let
                   65773:  * the child take care of writing. resetline() (file ifdef.c) contains all the
                   65774:  * system dependent code needed to reset the communications line for separate
                   65775:  * read and write processes. For now it's expected to return TRUE or FALSE and
                   65776:  * that value controls whether we try the fork. I've only tested the two process
                   65777:  * stuff for System V. Other versions of resetline() may just be dummy procedures
                   65778:  * that always return FALSE. If the fork() failed previous versions continued as
                   65779:  * a single process, although the implementation wasn't quite right, but I've now
                   65780:  * decided to quit. The main reason is a Datakit channel may be configured to
                   65781:  * flow control data in both directions, and if we run postio over that channel
                   65782:  * as a single process we likely will end up in deadlock.
                   65783:  *
                   65784:  */
                   65785: 
                   65786:     if ( splitme == TRUE )
                   65787:        if ( resetline() == TRUE )  {
                   65788:            pid = getpid();
                   65789:            signal(joinsig, interrupt);
                   65790:            if ( (otherpid = fork()) == -1 )
                   65791:                error(FATAL, "can't fork");
                   65792:            else if ( otherpid == 0 )  {
                   65793:                whatami = WRITE;
                   65794:                nostatus = WRITEPROCESS;
                   65795:                otherpid = pid;
                   65796:                setupstdin(1);
                   65797:            } else whatami = READ;
                   65798:        } else if ( interactive == TRUE || tostdout == TRUE )
                   65799:            error(FATAL, "can't create two process - check resetline()");
                   65800:        else error(NON_FATAL, "running as a single process - check resetline()");
                   65801: 
                   65802:     canread = (whatami & READ) ? TRUE : FALSE;
                   65803:     canwrite = (whatami & WRITE) ? TRUE : FALSE;
                   65804: 
                   65805: }   /* End of split */
                   65806: 
                   65807: /*****************************************************************************/
                   65808: 
                   65809: arguments()
                   65810: 
                   65811: {
                   65812: 
                   65813:     int                fd_in;                  /* next input file */
                   65814: 
                   65815: /*
                   65816:  *
                   65817:  * Makes sure all the non-option command line arguments are processed. If there
                   65818:  * aren't any arguments left when we get here we'll send stdin. Input files are
                   65819:  * only read and sent to the printer if canwrite is TRUE. Checking it here means
                   65820:  * we won't have to do it in send(). If interactive mode is TRUE we'll stay here
                   65821:  * forever sending stdin when we run out of files - exit with a break. Actually
                   65822:  * the loop is bogus and used at most once when we're in interactive mode because
                   65823:  * stdin is in a pseudo raw mode and the read() in readblock() should never see
                   65824:  * the end of file.
                   65825:  *
                   65826:  */
                   65827: 
                   65828:     if ( canwrite == TRUE )
                   65829:        do                              /* loop is for interactive mode */
                   65830:            if ( argc < 1 )
                   65831:                send(fileno(stdin), "pipe.end");
                   65832:            else  {
                   65833:                while ( argc > 0 )  {
                   65834:                    if ( (fd_in = open(*argv, O_RDONLY)) == -1 )
                   65835:                        error(FATAL, "can't open %s", *argv);
                   65836:                    send(fd_in, *argv);
                   65837:                    close(fd_in);
                   65838:                    argc--;
                   65839:                    argv++;
                   65840:                }   /* End while */
                   65841:            }   /* End else */
                   65842:        while ( interactive == TRUE );
                   65843: 
                   65844: }   /* End of arguments */
                   65845: 
                   65846: /*****************************************************************************/
                   65847: 
                   65848: send(fd_in, name)
                   65849: 
                   65850:     int                fd_in;                  /* next input file */
                   65851:     char       *name;                  /* and it's pathname */
                   65852: 
                   65853: {
                   65854: 
                   65855: /*
                   65856:  *
                   65857:  * Sends file *name to the printer. There's nothing left here that depends on
                   65858:  * sending and receiving status reports, although it can be reassuring to know
                   65859:  * the printer is responding and processing our job. Only the writer gets here
                   65860:  * in the two process implementation, and in that case split() has reset nostatus
                   65861:  * to WRITEPROCESS and that's what getstatus() always returns. For now we accept
                   65862:  * the IDLE state and ENDOFJOB as legitimate and ignore the INITIALIZING state.
                   65863:  *
                   65864:  */
                   65865: 
                   65866:     if ( interactive == FALSE )
                   65867:        logit("sending file %s\n", name);
                   65868: 
                   65869:     currentstate = SEND;
                   65870: 
                   65871:     if ( useslowsend == TRUE )  {
                   65872:        slowsend(fd_in);
                   65873:        return;
                   65874:     }  /* End if */
                   65875: 
                   65876:     while ( readblock(fd_in) )
                   65877:        switch ( getstatus(0) )  {
                   65878:            case IDLE:
                   65879:            case BUSY:
                   65880:            case WAITING:
                   65881:            case PRINTING:
                   65882:            case ENDOFJOB:
                   65883:            case PRINTERERROR:
                   65884:            case UNKNOWN:
                   65885:            case NOSTATUS:
                   65886:            case WRITEPROCESS:
                   65887:            case INTERACTIVE:
                   65888:                    writeblock();
                   65889:                    break;
                   65890: 
                   65891:            case ERROR:
                   65892:                    fprintf(stderr, "%s", mesg);        /* for csw */
                   65893:                    error(USER_FATAL, "PostScript Error");
                   65894:                    break;
                   65895: 
                   65896:            case FLUSHING:
                   65897:                    error(USER_FATAL, "Flushing Job");
                   65898:                    break;
                   65899: 
                   65900:            case DISCONNECT:
                   65901:                    error(FATAL, "Disconnected - printer may be offline");
                   65902:                    break;
                   65903:        }   /* End switch */
                   65904: 
                   65905: }   /* End of send */
                   65906: 
                   65907: /*****************************************************************************/
                   65908: 
                   65909: done()
                   65910: 
                   65911: {
                   65912: 
                   65913:     int                sleeptime = 15;         /* for 'out of paper' etc. */
                   65914: 
                   65915: /*
                   65916:  *
                   65917:  * Tries to stay connected to the printer until we're reasonably sure the job is
                   65918:  * complete. It's the only way we can recover error messages or data generated by
                   65919:  * the PostScript program and returned over the communication line. Actually doing
                   65920:  * it correctly for all possible PostScript jobs is more difficult that it might
                   65921:  * seem. For example if we've sent several jobs, each with their own EOF mark, then
                   65922:  * waiting for ENDOFJOB won't guarantee all the jobs have completed. Even waiting
                   65923:  * for IDLE isn't good enough. Checking for the WAITING state after all the files
                   65924:  * have been sent and then sending an EOF may be the best approach, but even that
                   65925:  * won't work all the time - we could miss it or might not get there. Even sending
                   65926:  * our own special PostScript job after all the input files has it's own different
                   65927:  * set of problems, but probably could work (perhaps by printing a fake status
                   65928:  * message or just not timing out). Anyway it's probably not worth the trouble so
                   65929:  * for now we'll quit if writedone is TRUE and we get ENDOFJOB or IDLE.
                   65930:  *
                   65931:  * If we're running separate read and write processes the reader gets here after
                   65932:  * after split() while the writer goes to send() and only gets here after all the
                   65933:  * input files have been transmitted. When they're both here the writer sends the
                   65934:  * reader signal joinsig and that forces writedone to TRUE in the reader. At that
                   65935:  * point the reader can begin looking for an indication of the end of the job.
                   65936:  * The writer hangs around until the reader kills it (usually in cleanup()) sending
                   65937:  * occasional status requests.
                   65938:  *
                   65939:  */
                   65940: 
                   65941:     if ( canwrite == TRUE )
                   65942:        logit("waiting for end of job\n");
                   65943: 
                   65944:     currentstate = DONE;
                   65945:     writedone = (whatami == READWRITE) ? TRUE : FALSE;
                   65946: 
                   65947:     while ( 1 )  {
                   65948:        switch ( getstatus(1) )  {
                   65949: 
                   65950:            case WRITEPROCESS:
                   65951:                    if ( writedone == FALSE )  {
                   65952:                        sendsignal(joinsig);
                   65953:                        Write(ttyo, "\004", 1);
                   65954:                        writedone = TRUE;
                   65955:                        sleeptime = 1;
                   65956:                    }   /* End if */
                   65957:                    Rest(sleeptime++);
                   65958:                    break;
                   65959: 
                   65960:            case WAITING:
                   65961:                    Write(ttyo, "\004", 1);
                   65962:                    Rest(1);
                   65963:                    sleeptime = 15;
                   65964:                    break;
                   65965: 
                   65966:            case IDLE:
                   65967:            case ENDOFJOB:
                   65968:                    if ( writedone == TRUE )  {
                   65969:                        logit("job complete\n");
                   65970:                        return;
                   65971:                    }   /* End if */
                   65972:                    break;
                   65973: 
                   65974:            case BUSY:
                   65975:            case PRINTING:
                   65976:            case INTERACTIVE:
                   65977:                    sleeptime = 15;
                   65978:                    break;
                   65979: 
                   65980:            case PRINTERERROR:
                   65981:                    Rest(sleeptime++);
                   65982:                    break;
                   65983: 
                   65984:            case ERROR:
                   65985:                    fprintf(stderr, "%s", mesg);        /* for csw */
                   65986:                    error(USER_FATAL, "PostScript Error");
                   65987:                    return;
                   65988: 
                   65989:            case FLUSHING:
                   65990:                    error(USER_FATAL, "Flushing Job");
                   65991:                    return;
                   65992: 
                   65993:            case DISCONNECT:
                   65994:                    error(FATAL, "Disconnected - printer may be offline");
                   65995:                    return;
                   65996: 
                   65997:            default:
                   65998:                    Rest(1);
                   65999:                    break;
                   66000:        }   /* End switch */
                   66001: 
                   66002:        if ( sleeptime > 60 )
                   66003:            sleeptime = 60;
                   66004:     }  /* End while */
                   66005: 
                   66006: }   /* End of done */
                   66007: 
                   66008: /*****************************************************************************/
                   66009: 
                   66010: cleanup()
                   66011: 
                   66012: {
                   66013: 
                   66014:     int                w;
                   66015: 
                   66016: /*
                   66017:  *
                   66018:  * Only needed if we're running separate read and write processes. Makes sure the
                   66019:  * write process is killed after the read process has successfully finished with
                   66020:  * all the jobs. sendsignal() returns a -1 if there's nobody to signal so things
                   66021:  * work when we're running a single process.
                   66022:  *
                   66023:  */
                   66024: 
                   66025:     while ( sendsignal(SIGKILL) != -1 && (w = wait((int *)0)) != otherpid && w != -1 ) ;
                   66026: 
                   66027: }   /* End of cleanup */
                   66028: 
                   66029: /*****************************************************************************/
                   66030: 
                   66031: readblock(fd_in)
                   66032: 
                   66033:     int                fd_in;                  /* current input file */
                   66034: 
                   66035: {
                   66036: 
                   66037:     static long        blocknum = 1;
                   66038: 
                   66039: /*
                   66040:  *
                   66041:  * Fills the input buffer with the next block, provided we're all done with the
                   66042:  * last one. Blocks from fd_in are stored in array block[]. head is the index
                   66043:  * of the next byte in block[] that's supposed to go to the printer. tail points
                   66044:  * one past the last byte in the current block. head is adjusted in writeblock()
                   66045:  * after each successful write, while head and tail are reset here each time
                   66046:  * a new block is read. Returns the number of bytes left in the current block.
                   66047:  * Read errors cause the program to abort. The fake status message that's put out
                   66048:  * in quiet mode is only so you can look at the log file and know something's
                   66049:  * happening - take it out if you want.
                   66050:  *
                   66051:  */
                   66052: 
                   66053:     if ( head >= tail )  {             /* done with the last block */
                   66054:        if ( (tail = read(fd_in, block, blocksize)) == -1 )
                   66055:            error(FATAL, "error reading input file");
                   66056:        if ( quiet == TRUE && tail > 0 )        /* put out a fake message? */
                   66057:            logit("%%%%[ status: busy; block: %d ]%%%%\n", blocknum++);
                   66058:        head = 0;
                   66059:     }  /* End if */
                   66060: 
                   66061:     return(tail - head);
                   66062: 
                   66063: }   /* End of readblock */
                   66064: 
                   66065: /*****************************************************************************/
                   66066: 
                   66067: writeblock()
                   66068: 
                   66069: {
                   66070: 
                   66071:     int                count;                  /* bytes successfully written */
                   66072: 
                   66073: /*
                   66074:  *
                   66075:  * Called from send() when it's OK to send the next block to the printer. head
                   66076:  * is adjusted after the write, and the number of bytes that were successfully
                   66077:  * written is returned to the caller.
                   66078:  *
                   66079:  */
                   66080: 
                   66081:     if ( (count = write(ttyo, &block[head], tail - head)) == -1 )
                   66082:        error(FATAL, "error writing to %s", line);
                   66083:     else if ( count == 0 )
                   66084:        error(FATAL, "printer appears to be offline");
                   66085: 
                   66086:     head += count;
                   66087:     return(count);
                   66088: 
                   66089: }   /* End of writeblock */
                   66090: 
                   66091: /*****************************************************************************/
                   66092: 
                   66093: getstatus(t)
                   66094: 
                   66095:     int                t;                      /* sleep time after sending '\024' */
                   66096: 
                   66097: {
                   66098: 
                   66099:     int                gotline = FALSE;        /* value returned by readline() */
                   66100:     int                state = nostatus;       /* representation of the current state */
                   66101:     int                mesgch;                 /* to restore mesg[] when tostdout == TRUE */
                   66102: 
                   66103:     static int laststate = NOSTATUS;   /* last state recognized */
                   66104: 
                   66105: /*
                   66106:  *
                   66107:  * Looks for things coming back from the printer on the communications line, parses
                   66108:  * complete lines retrieved by readline(), and returns an integer representation
                   66109:  * of the current printer status to the caller. If nothing was available a status
                   66110:  * request (control T) is sent to the printer and nostatus is returned to the
                   66111:  * caller (provided quiet isn't TRUE). Interactive mode either never returns from
                   66112:  * readline() or returns FALSE.
                   66113:  * 
                   66114:  */
                   66115: 
                   66116:     if ( canread == TRUE && (gotline = readline()) == TRUE )  {
                   66117:        state = parsemesg();
                   66118:        if ( state != laststate || state == UNKNOWN || mesgptr != mesg || debug == ON )
                   66119:            logit("%s", mesg);
                   66120: 
                   66121:        if ( tostdout == TRUE && currentstate != START )  {
                   66122:            mesgch = *mesgptr;
                   66123:            *mesgptr = '\0';
                   66124:            fprintf(stdout, "%s", mesg);
                   66125:            fflush(stdout);
                   66126:            *mesgptr = mesgch;          /* for ERROR in send() and done() */
                   66127:        }   /* End if */
                   66128:        return(laststate = state);
                   66129:     }  /* End if */
                   66130: 
                   66131:     if ( (quiet == FALSE || currentstate != SEND) &&
                   66132:         (tostdout == FALSE || currentstate == START) && interactive == FALSE )  {
                   66133:        if ( Write(ttyo, "\024", 1) != 1 )
                   66134:            error(FATAL, "printer appears to be offline");
                   66135:        if ( t > 0 ) Rest(t);
                   66136:     }  /* End if */
                   66137: 
                   66138:     return(nostatus);
                   66139: 
                   66140: }   /* End of getstatus */
                   66141: 
                   66142: /*****************************************************************************/
                   66143: 
                   66144: parsemesg()
                   66145: 
                   66146: {
                   66147: 
                   66148:     char       *e;                     /* end of printer message in mesg[] */
                   66149:     char       *key, *val;             /* keyword/value strings in sbuf[] */
                   66150:     char       *p;                     /* for converting to lower case etc. */
                   66151:     int                i;                      /* where *key was found in status[] */
                   66152: 
                   66153: /*
                   66154:  *
                   66155:  * Parsing the lines that readline() stores in mesg[] is messy, and what's done
                   66156:  * here isn't completely correct nor as fast as it could be. The general format
                   66157:  * of lines that come back from the printer (assuming no data loss) is:
                   66158:  *
                   66159:  *             str%%[ key: val; key: val; key: val ]%%\n
                   66160:  *
                   66161:  * where str can be most anything not containing a newline and printer reports
                   66162:  * (eg. status or error messages) are bracketed by "%%[ " and " ]%%" strings and
                   66163:  * end with a newline. Usually we'll have the string or printer report but not
                   66164:  * both. For most jobs the leading string will be empty, but could be anything
                   66165:  * generated on a printer and returned over the communications line using the
                   66166:  * PostScript print operator. I'll assume PostScript jobs are well behaved and
                   66167:  * never bracket their messages with "%%[ " and " ]%%" strings that delimit status
                   66168:  * or error messages.
                   66169:  *
                   66170:  * Printer reports consist of one or more key/val pairs, and what we're interested
                   66171:  * in (status or error indications) may not be the first pair in the list. In
                   66172:  * addition we'll sometimes want the value associated with a keyword (eg. when
                   66173:  * key = status) and other times we'll want the keyword (eg. when key = Error or
                   66174:  * Flushing). The last pair isn't terminated by a semicolon and a value string
                   66175:  * often contains many space separated words and it can even include colons in
                   66176:  * meaningful places. I've also decided to continue converting things to lower
                   66177:  * case before doing the lookup in status[]. The isupper() test is for Berkeley
                   66178:  * systems.
                   66179:  *
                   66180:  */
                   66181: 
                   66182:     if ( *(mesgptr = find("%%[ ", mesg)) != '\0' && *(e = find(" ]%%", mesgptr+4)) != '\0' )  {
                   66183:        strcpy(sbuf, mesgptr+4);                /* don't change mesg[] */
                   66184:        sbuf[e-mesgptr-4] = '\0';               /* ignore the trailing " ]%%" */
                   66185: 
                   66186:        for ( key = strtok(sbuf, " :"); key != NULL; key = strtok(NULL, " :") )  {
                   66187:            if ( (val = strtok(NULL, ";")) != NULL && strcmp(key, "status") == 0 )
                   66188:                key = val;
                   66189: 
                   66190:            for ( ; *key == ' '; key++ ) ;      /* skip any leading spaces */
                   66191:            for ( p = key; *p; p++ )            /* convert to lower case */
                   66192:                if ( *p == ':' )  {
                   66193:                    *p = '\0';
                   66194:                    break;
                   66195:                } else if ( isupper(*p) ) *p = tolower(*p);
                   66196: 
                   66197:            for ( i = 0; status[i].state != NULL; i++ )
                   66198:                if ( strcmp(status[i].state, key) == 0 )
                   66199:                    return(status[i].val);
                   66200:        }   /* End for */
                   66201:     } else if ( strcmp(mesg, "CONVERSATION ENDED.\n") == 0 )
                   66202:        return(DISCONNECT);
                   66203: 
                   66204:     return(mesgptr == '\0' ? nostatus : UNKNOWN);
                   66205: 
                   66206: }   /* End of parsemesg */
                   66207: 
                   66208: /*****************************************************************************/
                   66209: 
                   66210: char *find(str1, str2)
                   66211: 
                   66212:     char       *str1;                  /* look for this string */
                   66213:     char       *str2;                  /* in this one */
                   66214: 
                   66215: {
                   66216: 
                   66217:     char       *s1, *s2;               /* can't change str1 or str2 too fast */
                   66218: 
                   66219: /*
                   66220:  *
                   66221:  * Looks for *str1 in string *str2. Returns a pointer to the start of the substring
                   66222:  * if it's found or to the end of string str2 otherwise.
                   66223:  *
                   66224:  */ 
                   66225: 
                   66226:     for ( ; *str2 != '\0'; str2++ )  {
                   66227:        for ( s1 = str1, s2 = str2; *s1 != '\0' && *s1 == *s2; s1++, s2++ ) ;
                   66228:        if ( *s1 == '\0' )
                   66229:            break;
                   66230:     }  /* End for */
                   66231: 
                   66232:     return(str2);
                   66233: 
                   66234: }   /* End of find */
                   66235: 
                   66236: /*****************************************************************************/
                   66237: 
                   66238: clearline()
                   66239: 
                   66240: {
                   66241: 
                   66242: /*
                   66243:  *
                   66244:  * Reads characters from the input line until nothing's left. Don't do anything if
                   66245:  * we're currently running separate read and write processes.
                   66246:  * 
                   66247:  */
                   66248: 
                   66249:     if ( whatami == READWRITE )
                   66250:        while ( readline() != FALSE ) ;
                   66251: 
                   66252: }   /* End of clearline */
                   66253: 
                   66254: /*****************************************************************************/
                   66255: 
                   66256: sendsignal(sig)
                   66257: 
                   66258:     int                sig;                    /* this goes to the other process */
                   66259: 
                   66260: {
                   66261: 
                   66262: /*
                   66263:  *
                   66264:  * Sends signal sig to the other process if we're running as separate read and
                   66265:  * write processes. Returns the result of the kill if there's someone else to
                   66266:  * signal or -1 if we're running alone.
                   66267:  *
                   66268:  */
                   66269: 
                   66270:     if ( whatami != READWRITE && otherpid > 1 )
                   66271:        return(kill(otherpid, sig));
                   66272: 
                   66273:     return(-1);
                   66274: 
                   66275: }   /* End of sendsignal */
                   66276: 
                   66277: /*****************************************************************************/
                   66278: 
                   66279: void interrupt(sig)
                   66280: 
                   66281:     int                sig;                    /* signal that we caught */
                   66282: 
                   66283: {
                   66284: 
                   66285: /*
                   66286:  *
                   66287:  * Caught a signal - all except joinsig cause the program to quit. joinsig is the
                   66288:  * signal sent by the writer to the reader after all the jobs have been transmitted.
                   66289:  * Used to tell the read process when it can start looking for the end of the job.
                   66290:  *
                   66291:  */
                   66292: 
                   66293:     signal(sig, SIG_IGN);
                   66294: 
                   66295:     if ( sig != joinsig )  {
                   66296:        x_stat |= FATAL;
                   66297:        if ( canread == TRUE )
                   66298:            if ( interactive == FALSE )
                   66299:                error(NON_FATAL, "signal %d abort", sig);
                   66300:            else error(NON_FATAL, "quitting");
                   66301:        quit(sig);
                   66302:     }  /* End if */
                   66303: 
                   66304:     writedone = TRUE;
                   66305:     signal(joinsig, interrupt);
                   66306: 
                   66307: }   /* End of interrupt */
                   66308: 
                   66309: /*****************************************************************************/
                   66310: 
                   66311: logit(mesg, a1, a2, a3)
                   66312: 
                   66313:     char       *mesg;                  /* control string */
                   66314:     unsigned   a1, a2, a3;             /* and possible arguments */
                   66315: 
                   66316: {
                   66317: 
                   66318: /*
                   66319:  *
                   66320:  * Simple routine that's used to write a message to the log file.
                   66321:  *
                   66322:  */
                   66323: 
                   66324:     if ( mesg != NULL && fp_log != NULL )  {
                   66325:        fprintf(fp_log, mesg, a1, a2, a3);
                   66326:        fflush(fp_log);
                   66327:     }  /* End if */
                   66328: 
                   66329: }   /* End of logit */
                   66330: 
                   66331: /*****************************************************************************/
                   66332: 
                   66333: error(kind, mesg, a1, a2, a3)
                   66334: 
                   66335:     int                kind;                   /* FATAL or NON_FATAL error */
                   66336:     char       *mesg;                  /* error message control string */
                   66337:     unsigned   a1, a2, a3;             /* control string arguments */
                   66338: 
                   66339: {
                   66340: 
                   66341:     FILE       *fp_err;
                   66342: 
                   66343: /*
                   66344:  *
                   66345:  * Called when we've run into some kind of program error. First *mesg is printed
                   66346:  * using the control string arguments a?. If kind is FATAL and we're not ignoring
                   66347:  * errors the program will be terminated. If mesg is NULL or *mesg is the NULL
                   66348:  * string nothing will be printed.
                   66349:  *
                   66350:  */
                   66351: 
                   66352:     fp_err = (fp_log != NULL) ? fp_log : stderr;
                   66353: 
                   66354:     if ( mesg != NULL && *mesg != '\0' )  {
                   66355:        fprintf(fp_err, "%s: ", prog_name);
                   66356:        fprintf(fp_err, mesg, a1, a2, a3);
                   66357:        putc('\n', fp_err);
                   66358:     }  /* End if */
                   66359: 
                   66360:     x_stat |= kind;
                   66361: 
                   66362:     if ( kind != NON_FATAL && ignore == OFF )
                   66363:        quit(SIGTERM);
                   66364: 
                   66365: }   /* End of error */
                   66366: 
                   66367: /*****************************************************************************/
                   66368: 
                   66369: quit(sig)
                   66370: 
                   66371:     int                sig;
                   66372: 
                   66373: {
                   66374: 
                   66375:     int                w;
                   66376: 
                   66377: /*
                   66378:  *
                   66379:  * Makes sure everything is properly cleaned up if there's a signal or FATAL error
                   66380:  * that should cause the program to terminate. The sleep by the write process is
                   66381:  * to help give the reset sequence a chance to reach the printer before we break
                   66382:  * the connection - primarily for printers connected to Datakit. There's a very
                   66383:  * slight chance the reset sequence that's sent to the printer could get us stuck
                   66384:  * here. Simplest solution is don't bother to send it - everything works without it.
                   66385:  * Flushing ttyo would be better, but means yet another system dependent procedure
                   66386:  * in ifdef.c! I'll leave things be for now.
                   66387:  *
                   66388:  * Obscure problem on PS-810 turbos says wait a bit after sending an interrupt.
                   66389:  * Seem to remember the printer getting into a bad state immediately after the
                   66390:  * top was opened when the toner light was on. A sleep after sending the ctrl-C
                   66391:  * seemed to fix things.
                   66392:  *
                   66393:  */
                   66394: 
                   66395:     signal(sig, SIG_IGN);
                   66396:     ignore = ON;
                   66397: 
                   66398:     while ( sendsignal(sig) != -1 && (w = wait((int *)0)) != otherpid && w != -1 ) ;
                   66399: 
                   66400:     setupstdin(2);
                   66401: 
                   66402:     if ( currentstate != NOTCONNECTED ) {
                   66403:        if ( sendctrlC == TRUE ) {
                   66404:            Write(ttyo, "\003", 1);
                   66405:            Rest(1);                    /* PS-810 turbo problem?? */
                   66406:        }   /* End if */
                   66407:        Write(ttyo, "\004", 1);
                   66408:     }  /* End if */
                   66409: 
                   66410:     alarm(0);                          /* prevents sleep() loop on V9 systems */
                   66411:     Rest(2);
                   66412: 
                   66413:     exit(x_stat);
                   66414: 
                   66415: }   /* End of quit */
                   66416: 
                   66417: /*****************************************************************************/
                   66418: 
                   66419: Rest(t)
                   66420: 
                   66421:     int                t;
                   66422: 
                   66423: {
                   66424: 
                   66425: /*
                   66426:  *
                   66427:  * Used to replace sleep() calls. Only needed if we're running the program as
                   66428:  * a read and write process and don't want to have the read process sleep. Most
                   66429:  * sleeps are in the code because of the non-blocking read used by the single
                   66430:  * process implementation. Probably should be a macro.
                   66431:  *
                   66432:  */
                   66433: 
                   66434:     if ( t > 0 && canwrite == TRUE )
                   66435:        sleep(t);
                   66436: 
                   66437: }   /* End of Rest */
                   66438: 
                   66439: /*****************************************************************************/
                   66440: 
                   66441: Read(fd, buf, n)
                   66442: 
                   66443:     int                fd;
                   66444:     char       *buf;
                   66445:     int                n;
                   66446: 
                   66447: {
                   66448: 
                   66449:     int                count;
                   66450: 
                   66451: /*
                   66452:  *
                   66453:  * Used to replace some of the read() calls. Only needed if we're running separate
                   66454:  * read and write processes. Should only be used to replace read calls on ttyi.
                   66455:  * Always returns 0 to the caller if the process doesn't have its READ flag set.
                   66456:  * Probably should be a macro.
                   66457:  *
                   66458:  */
                   66459: 
                   66460:     if ( canread == TRUE )  {
                   66461:        if ( (count = read(fd, buf, n)) == -1 && errno == EINTR )
                   66462:            count = 0;
                   66463:     } else count = 0;
                   66464: 
                   66465:     return(count);
                   66466: 
                   66467: }   /* End of Read */
                   66468: 
                   66469: /*****************************************************************************/
                   66470: 
                   66471: Write(fd, buf, n)
                   66472: 
                   66473:     int                fd;
                   66474:     char       *buf;
                   66475:     int                n;
                   66476: 
                   66477: {
                   66478: 
                   66479:     int                count;
                   66480: 
                   66481: /*
                   66482:  *
                   66483:  * Used to replace some of the write() calls. Again only needed if we're running
                   66484:  * separate read and write processes. Should only be used to replace write calls
                   66485:  * on ttyo. Always returns n to the caller if the process doesn't have its WRITE
                   66486:  * flag set. Should also probably be a macro.
                   66487:  *
                   66488:  */
                   66489: 
                   66490:     if ( canwrite == TRUE )  {
                   66491:        if ( (count = write(fd, buf, n)) == -1 && errno == EINTR )
                   66492:            count = n;
                   66493:     } else count = n;
                   66494: 
                   66495:     return(count);
                   66496: 
                   66497: }   /* End of Write */
                   66498:  
                   66499: /*****************************************************************************/
                   66500: 
                   66501: 0707070014231405111006440057030057030000011225200522627503600003100000015154post.src/postio/postio.h/*
                   66502:  *
                   66503:  * POSTBEGIN, if it's not NULL, is some PostScript code that's sent to the printer
                   66504:  * before any of the input files. It's not terribly important since the same thing
                   66505:  * can be accomplished in other ways, but this approach is convenient. POSTBEGIN
                   66506:  * is initialized so as to disable job timeouts. The string can also be set on the
                   66507:  * command line using the -P option.
                   66508:  *
                   66509:  */
                   66510: 
                   66511: #define POSTBEGIN      "statusdict /waittimeout 0 put\n"
                   66512: 
                   66513: /*
                   66514:  *
                   66515:  * The following help determine where postio is when it's running - either in the
                   66516:  * START, SEND, or DONE states. Primarily controls what's done in getstatus().
                   66517:  * RADIAN occasionally had problems with two way conversations. Anyway this stuff
                   66518:  * can be used to prevent status queries while we're transmitting a job. Enabled
                   66519:  * by the -q option.
                   66520:  *
                   66521:  */
                   66522: 
                   66523: #define NOTCONNECTED   0
                   66524: #define START          1
                   66525: #define SEND           2
                   66526: #define DONE           3
                   66527: 
                   66528: /*
                   66529:  *
                   66530:  * Previous versions of postio only ran as a single process. That was (and still
                   66531:  * is) convenient, but meant we could only flow control one direction. Data coming
                   66532:  * back from the printer occasionally got lost, but that didn't often hurt (except
                   66533:  * for lost error messages). Anyway I've added code that lets you split the program
                   66534:  * into separate read and write processes, thereby helping to prevent data loss in
                   66535:  * both directions. It should be particularly useful when you're sending a job that
                   66536:  * you expect will be returning useful data over the communications line.
                   66537:  *
                   66538:  * The next three definitions control what's done with data on communications line.
                   66539:  * The READ flag means the line can be read, while the WRITE flag means it can be
                   66540:  * written. When we're running as a single process both flags are set. I tried to
                   66541:  * overlay the separate read/write process code on what was there and working for
                   66542:  * one process. The implementation isn't as good as it could be, but should be
                   66543:  * safe. The single process version still works, and remains the default.
                   66544:  *
                   66545:  */
                   66546: 
                   66547: #define READ           1
                   66548: #define WRITE          2
                   66549: #define READWRITE      3
                   66550: 
                   66551: /*
                   66552:  *
                   66553:  * Messages generated on the printer and returned over the communications line
                   66554:  * look like,
                   66555:  *
                   66556:  *     %%[ status: idle; source: serial 25 ]%%
                   66557:  *     %%[ status: waiting; source: serial 25 ]%%
                   66558:  *     %%[ status: initializing; source: serial 25 ]%%
                   66559:  *     %%[ status: busy; source: serial 25 ]%%
                   66560:  *     %%[ status: printing; source: serial 25 ]%%
                   66561:  *     %%[ status: PrinterError: out of paper; source: serial 25 ]%%
                   66562:  *     %%[ status: PrinterError: no paper tray; source: serial 25 ]%%
                   66563:  *
                   66564:  *     %%[ PrinterError: out of paper; source: serial 25 ]%%
                   66565:  *     %%[ PrinterError: no paper tray; source: serial 25 ]%%
                   66566:  *
                   66567:  *     %%[ Error: undefined; OffendingCommand: xxx ]%%
                   66568:  *     %%[ Flushing: rest of job (to end-of-file) will be ignored ]%%
                   66569:  *
                   66570:  * although the list isn't meant to be complete.
                   66571:  *
                   66572:  * The following constants are used to classify the recognized printer states.
                   66573:  * readline() reads complete lines from ttyi and stores them in array mesg[].
                   66574:  * getstatus() looks for the "%%[ " and " ]%%" delimiters that bracket printer
                   66575:  * messages and if found it tries to parse the enclosed message. After the lookup
                   66576:  * one of the following numbers is returned as an indication of the existence or
                   66577:  * content of the printer message. The return value is used in start(), send(),
                   66578:  * and done() to figure out what's happening and what can be done next.
                   66579:  *
                   66580:  */
                   66581: 
                   66582: #define BUSY           0               /* processing data already sent */
                   66583: #define WAITING                1               /* printer wants more data */
                   66584: #define PRINTING       2               /* printing a page */
                   66585: #define IDLE           3               /* ready to start the next job */
                   66586: #define ENDOFJOB       4               /* readline() builds this up on EOF */
                   66587: #define PRINTERERROR   5               /* PrinterError - eg. out of paper */
                   66588: #define ERROR          6               /* some kind of PostScript error */
                   66589: #define FLUSHING       7               /* throwing out the rest of the job */
                   66590: #define INITIALIZING   8               /* printer is booting */
                   66591: #define DISCONNECT     9               /* from Datakit! */
                   66592: #define UNKNOWN                10              /* in case we missed anything */
                   66593: #define NOSTATUS       11              /* no response from the printer */
                   66594: 
                   66595: #define WRITEPROCESS   12              /* dummy states for write process */
                   66596: #define INTERACTIVE    13              /* and interactive mode */
                   66597: 
                   66598: /*
                   66599:  *
                   66600:  * An array of type Status is used, in getstatus(), to figure out the printer's
                   66601:  * current state. Just helps convert strings representing the current state into
                   66602:  * integer codes that other routines use.
                   66603:  *
                   66604:  */
                   66605: 
                   66606: typedef struct {
                   66607:        char    *state;                 /* printer's current status */
                   66608:        int     val;                    /* value returned by getstatus() */
                   66609: } Status;
                   66610: 
                   66611: /*
                   66612:  *
                   66613:  * STATUS is used to initialize an array of type Status that translates the ASCII
                   66614:  * strings returned by the printer into appropriate codes that can be used later
                   66615:  * on in the program. getstatus() converts characters to lower case, so if you
                   66616:  * add any entries make them lower case and put them in before the UNKNOWN entry.
                   66617:  * The lookup terminates when we get a match or when an entry with a NULL state
                   66618:  * is found.
                   66619:  *
                   66620:  */
                   66621: 
                   66622: #define STATUS                                                         \
                   66623:                                                                        \
                   66624:        {                                                               \
                   66625:            "busy", BUSY,                                               \
                   66626:            "waiting", WAITING,                                         \
                   66627:            "printing", PRINTING,                                       \
                   66628:            "idle", IDLE,                                               \
                   66629:            "endofjob", ENDOFJOB,                                       \
                   66630:            "printererror", PRINTERERROR,                               \
                   66631:            "error", ERROR,                                             \
                   66632:            "flushing", FLUSHING,                                       \
                   66633:            "initializing", INITIALIZING,                               \
                   66634:            NULL, UNKNOWN                                               \
                   66635:        }
                   66636: 
                   66637: /*
                   66638:  *
                   66639:  * The baud rate can be set on the command line using the -b option. If you omit
                   66640:  * it BAUDRATE will be used.
                   66641:  *
                   66642:  */
                   66643: 
                   66644: #define BAUDRATE       B9600
                   66645: 
                   66646: /*
                   66647:  *
                   66648:  * An array of type Baud is used, in routine getbaud(), to translate ASCII strings
                   66649:  * into termio values that represent the requested baud rate.
                   66650:  *
                   66651:  */
                   66652: 
                   66653: typedef struct {
                   66654:        char    *rate;                  /* string identifying the baud rate */
                   66655:        short   val;                    /* and its termio.h value */
                   66656: } Baud;
                   66657: 
                   66658: /*
                   66659:  *
                   66660:  * BAUDTABLE initializes the array that's used to translate baud rate requests
                   66661:  * into termio values. It needs to end with an entry that has NULL assigned to
                   66662:  * the rate field.
                   66663:  *
                   66664:  */
                   66665: 
                   66666: #define BAUDTABLE                                                      \
                   66667:                                                                        \
                   66668:        {                                                               \
                   66669:            "9600", B9600,                                              \
                   66670:            "B9600", B9600,                                             \
                   66671:            "19200", EXTA,                                              \
                   66672:            "19.2", EXTA,                                               \
                   66673:            "B19200", EXTA,                                             \
                   66674:            "EXTA", EXTA,                                               \
                   66675:            "1200", B1200,                                              \
                   66676:            "B1200", B1200,                                             \
                   66677:            "2400", B2400,                                              \
                   66678:            "B2400", B2400,                                             \
                   66679:            "B4800", B4800,                                             \
                   66680:            "4800", B4800,                                              \
                   66681:            "38400", EXTB,                                              \
                   66682:            "38.4", EXTB,                                               \
                   66683:            "B38400", EXTB,                                             \
                   66684:            "EXTB", EXTB,                                               \
                   66685:            NULL, B9600                                                 \
                   66686:        }
                   66687: 
                   66688: /*
                   66689:  *
                   66690:  * A few miscellaneous definitions. BLOCKSIZE is the default size of the buffer
                   66691:  * used for reading the input files (changed with the -B option). MESGSIZE is the
                   66692:  * size of the character array used to store printer status lines - don't make it
                   66693:  * too small!
                   66694:  *
                   66695:  */
                   66696: 
                   66697: #define BLOCKSIZE      2048
                   66698: #define MESGSIZE       512
                   66699: 
                   66700: /*
                   66701:  *
                   66702:  * Some of the non-integer valued functions used in postio.c.
                   66703:  *
                   66704:  */
                   66705: 
                   66706: char   *find();
                   66707: 
                   66708: char   *malloc();
                   66709: char   *strtok();
                   66710: 0707070014231402051006400057030057030000011227430522633076100003200000004703post.src/postio/postio.mkMAKE=/bin/make
                   66711: MAKEFILE=postio.mk
                   66712: 
                   66713: SYSTEM=V9
                   66714: VERSION=3.3.2
                   66715: 
                   66716: GROUP=bin
                   66717: OWNER=bin
                   66718: 
                   66719: MAN1DIR=/tmp
                   66720: POSTBIN=/usr/bin/postscript
                   66721: 
                   66722: COMMONDIR=../common
                   66723: 
                   66724: CFLGS=-O
                   66725: LDFLGS=-s
                   66726: 
                   66727: CFLAGS=$(CFLGS) -I$(COMMONDIR)
                   66728: LDFLAGS=$(LDFLGS)
                   66729: 
                   66730: DKLIB=-ldk
                   66731: DKHOST=FALSE
                   66732: DKSTREAMS=FALSE
                   66733: 
                   66734: #
                   66735: # Need dk.h and libdk.a for Datakit support on System V. We recommend you put
                   66736: # them in standard places. If it's not possible define DKHOSTDIR (below) and
                   66737: # try uncommenting the following lines:
                   66738: #
                   66739: #      DKHOSTDIR=/usr
                   66740: #      CFLAGS=$(CFLGS) -D$(SYSTEM) -I$(COMMONDIR) -I$(DKHOSTDIR)/include
                   66741: #      EXTRA=-Wl,-L$(DKHOSTDIR)/lib
                   66742: #
                   66743: 
                   66744: HFILES=postio.h\
                   66745:        ifdef.h\
                   66746:        $(COMMONDIR)/gen.h
                   66747: 
                   66748: OFILES=postio.o\
                   66749:        ifdef.o\
                   66750:        slowsend.o
                   66751: 
                   66752: all : postio
                   66753: 
                   66754: install : all
                   66755:        @if [ ! -d "$(POSTBIN)" ]; then \
                   66756:            mkdir $(POSTBIN); \
                   66757:            chmod 755 $(POSTBIN); \
                   66758:            chgrp $(GROUP) $(POSTBIN); \
                   66759:            chown $(OWNER) $(POSTBIN); \
                   66760:        fi
                   66761:        cp postio $(POSTBIN)/postio
                   66762:        @chmod 755 $(POSTBIN)/postio
                   66763:        @chgrp $(GROUP) $(POSTBIN)/postio
                   66764:        @chown $(OWNER) $(POSTBIN)/postio
                   66765:        cp postio.1 $(MAN1DIR)/postio.1
                   66766:        @chmod 644 $(MAN1DIR)/postio.1
                   66767:        @chgrp $(GROUP) $(MAN1DIR)/postio.1
                   66768:        @chown $(OWNER) $(MAN1DIR)/postio.1
                   66769: 
                   66770: clean :
                   66771:        rm -f *.o
                   66772: 
                   66773: clobber : clean
                   66774:        rm -f postio
                   66775: 
                   66776: postio ::
                   66777:        @CFLAGS="$(CFLAGS)"; export CFLAGS; \
                   66778:        DKLIB=" "; export DKLIB; \
                   66779:        if [ "$(SYSTEM)" != V9 ]; \
                   66780:            then \
                   66781:                if [ "$(DKHOST)" = TRUE ]; then \
                   66782:                    if [ "$(DKSTREAMS)" != FALSE ]; then \
                   66783:                        if [ "$(DKSTREAMS)" = TRUE ]; \
                   66784:                            then CFLAGS="$$CFLAGS -DDKSTREAMS=\\\"dknetty\\\""; \
                   66785:                            else CFLAGS="$$CFLAGS -DDKSTREAMS=\\\"$(DKSTREAMS)\\\""; \
                   66786:                        fi; \
                   66787:                    fi; \
                   66788:                    CFLAGS="$$CFLAGS -DDKHOST"; export CFLAGS; \
                   66789:                    DKLIB=-ldk; export DKLIB; \
                   66790:                    SYSTEM=SYSV; export SYSTEM; \
                   66791:                fi; \
                   66792:            else DKLIB=-lipc; export DKLIB; \
                   66793:        fi; \
                   66794:        CFLAGS="$$CFLAGS -D$$SYSTEM"; export CFLAGS; \
                   66795:        $(MAKE) -e -f [email protected] compile
                   66796: 
                   66797: compile : $(OFILES)
                   66798:        $(CC) $(CFLAGS) $(LDFLAGS) -o postio $(OFILES) $(EXTRA) $(DKLIB)
                   66799: 
                   66800: postio.o : $(HFILES)
                   66801: slowsend.o : postio.h $(COMMONDIR)/gen.h
                   66802: ifdef.o : ifdef.h $(COMMONDIR)/gen.h
                   66803: 
                   66804: changes :
                   66805:        @trap "" 1 2 3 15; \
                   66806:        sed \
                   66807:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
                   66808:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
                   66809:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
                   66810:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
                   66811:            -e "s'^DKLIB=.*'DKLIB=$(DKLIB)'" \
                   66812:            -e "s'^DKHOST=.*'DKHOST=$(DKHOST)'" \
                   66813:            -e "s'^DKSTREAMS=.*'DKSTREAMS=$(DKSTREAMS)'" \
                   66814:            -e "s'^MAN1DIR=.*'MAN1DIR=$(MAN1DIR)'" \
                   66815:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
                   66816:        $(MAKEFILE) >XXX.mk; \
                   66817:        mv XXX.mk $(MAKEFILE)
                   66818: 
                   66819: 0707070014231405131006440057030057030000011225400522627503700003300000006206post.src/postio/slowsend.c/*
                   66820:  *
                   66821:  * Stuff that slows the transmission of jobs to PostScript printers. ONLY use it
                   66822:  * if you appear to be having trouble with flow control. The idea is simple - only
                   66823:  * send a significant amount of data when we're certain the printer is in the
                   66824:  * WAITING state. Depends on receiving status messages and only works when the
                   66825:  * program is run as a single process. What's done should stop printer generated
                   66826:  * XOFFs - provided our input buffer (ie. blocksize) is sufficiently small. Was
                   66827:  * originally included in the postio.tmp directory, but can now be requested with
                   66828:  * the -S option. Considered eliminating this code, but some printers still depend
                   66829:  * on it. In particular Datakit connections made using Datakit PVCs and DACUs seem
                   66830:  * to have the most problems. Much of the new stuff that was added can't work when
                   66831:  * you use this code and will be automatically disabled.
                   66832:  *
                   66833:  */
                   66834: 
                   66835: #include <stdio.h>
                   66836: 
                   66837: #include "gen.h"
                   66838: #include "postio.h"
                   66839: 
                   66840: extern char    *block;
                   66841: extern int     blocksize;
                   66842: extern int     head;
                   66843: extern int     tail;
                   66844: extern char    *line;
                   66845: extern char    mesg[];
                   66846: extern int     ttyo;
                   66847: 
                   66848: /*****************************************************************************/
                   66849: 
                   66850: slowsend(fd_in)
                   66851: 
                   66852:     int                fd_in;                  /* next input file */
                   66853: 
                   66854: {
                   66855: 
                   66856: /*
                   66857:  *
                   66858:  * A slow version of send() that's very careful about when data is sent to the
                   66859:  * printer. Should help prevent overflowing the printer's input buffer, provided
                   66860:  * blocksize is sufficiently small (1024 should be safe). It's a totally kludged
                   66861:  * up routine that should ONLY be used if you have constant transmission problems.
                   66862:  * There's really no way it will be able to drive a printer much faster that about
                   66863:  * six pages a minute, even for the simplest jobs. Get it by using the -S option.
                   66864:  *
                   66865:  */
                   66866: 
                   66867:     while ( readblock(fd_in) )
                   66868:        switch ( getstatus(0) )  {
                   66869:            case WAITING:
                   66870:                    writeblock(blocksize);
                   66871:                    break;
                   66872: 
                   66873:            case BUSY:
                   66874:            case IDLE:
                   66875:            case PRINTING:
                   66876:                    writeblock(30);
                   66877:                    break;
                   66878: 
                   66879:            case NOSTATUS:
                   66880:            case UNKNOWN:
                   66881:                    break;
                   66882: 
                   66883:            case PRINTERERROR:
                   66884:                    sleep(30);
                   66885:                    break;
                   66886: 
                   66887:            case ERROR:
                   66888:                    fprintf(stderr, "%s", mesg);        /* for csw */
                   66889:                    error(FATAL, "PostScript Error");
                   66890:                    break;
                   66891: 
                   66892:            case FLUSHING:
                   66893:                    error(FATAL, "Flushing Job");
                   66894:                    break;
                   66895: 
                   66896:            case DISCONNECT:
                   66897:                    error(FATAL, "Disconnected - printer may be offline");
                   66898:                    break;
                   66899: 
                   66900:            default:
                   66901:                    sleep(2);
                   66902:                    break;
                   66903:        }   /* End switch */
                   66904: 
                   66905: }   /* End of send */
                   66906: 
                   66907: /*****************************************************************************/
                   66908: 
                   66909: static writeblock(num)
                   66910: 
                   66911:     int                num;                    /* most bytes we'll write */
                   66912: 
                   66913: {
                   66914: 
                   66915:     int                count;                  /* bytes successfully written */
                   66916: 
                   66917: /*
                   66918:  *
                   66919:  * Called from send() when it's OK to send the next block to the printer. head
                   66920:  * is adjusted after the write, and the number of bytes that were successfully
                   66921:  * written is returned to the caller.
                   66922:  *
                   66923:  */
                   66924: 
                   66925:     if ( num > tail - head )
                   66926:        num = tail - head;
                   66927: 
                   66928:     if ( (count = write(ttyo, &block[head], num)) == -1 )
                   66929:        error(FATAL, "error writing to %s", line);
                   66930:     else if ( count == 0 )
                   66931:        error(FATAL, "printer appears to be offline");
                   66932: 
                   66933:     head += count;
                   66934:     return(count);
                   66935: 
                   66936: }   /* End of writeblock */
                   66937: 
                   66938: /*****************************************************************************/
                   66939: 
                   66940: 0707070014231405141006440057030057030000011225440522627503700003600000003377post.src/postio/postio.mk.oldMAKE=/bin/make
                   66941: MAKEFILE=postio.mk
                   66942: 
                   66943: SYSTEM=V9
                   66944: VERSION=3.3.1
                   66945: 
                   66946: GROUP=bin
                   66947: OWNER=bin
                   66948: 
                   66949: MAN1DIR=/tmp
                   66950: POSTBIN=/usr/bin/postscript
                   66951: 
                   66952: COMMONDIR=../common
                   66953: 
                   66954: DKLIB=-lipc
                   66955: CFLGS=-O
                   66956: LDFLGS=-s
                   66957: 
                   66958: CFLAGS=$(CFLGS) -D$(SYSTEM) -I$(COMMONDIR)
                   66959: LDFLAGS=$(LDFLGS)
                   66960: 
                   66961: #
                   66962: # Need dk.h and libdk.a for Datakit support on System V. We recommend you put
                   66963: # them in standard places. If it's not possible define DKHOSTDIR (below) and
                   66964: # try uncommenting the following lines:
                   66965: #
                   66966: #      DKHOSTDIR=/usr
                   66967: #      CFLAGS=$(CFLGS) -D$(SYSTEM) -I$(COMMONDIR) -I$(DKHOSTDIR)/include
                   66968: #      EXTRA=-Wl,-L$(DKHOSTDIR)/lib
                   66969: #
                   66970: 
                   66971: HFILES=postio.h\
                   66972:        ifdef.h\
                   66973:        $(COMMONDIR)/gen.h
                   66974: 
                   66975: OFILES=postio.o\
                   66976:        ifdef.o\
                   66977:        slowsend.o
                   66978: 
                   66979: all : postio
                   66980: 
                   66981: install : all
                   66982:        @if [ ! -d "$(POSTBIN)" ]; then \
                   66983:            mkdir $(POSTBIN); \
                   66984:            chmod 755 $(POSTBIN); \
                   66985:            chgrp $(GROUP) $(POSTBIN); \
                   66986:            chown $(OWNER) $(POSTBIN); \
                   66987:        fi
                   66988:        cp postio $(POSTBIN)/postio
                   66989:        @chmod 755 $(POSTBIN)/postio
                   66990:        @chgrp $(GROUP) $(POSTBIN)/postio
                   66991:        @chown $(OWNER) $(POSTBIN)/postio
                   66992:        cp postio.1 $(MAN1DIR)/postio.1
                   66993:        @chmod 644 $(MAN1DIR)/postio.1
                   66994:        @chgrp $(GROUP) $(MAN1DIR)/postio.1
                   66995:        @chown $(OWNER) $(MAN1DIR)/postio.1
                   66996: 
                   66997: clean :
                   66998:        rm -f *.o
                   66999: 
                   67000: clobber : clean
                   67001:        rm -f postio
                   67002: 
                   67003: postio : $(OFILES)
                   67004:        $(CC) $(CFLAGS) $(LDFLAGS) -o postio $(OFILES) $(EXTRA) $(DKLIB)
                   67005: 
                   67006: postio.o : $(HFILES)
                   67007: slowsend.o : postio.h $(COMMONDIR)/gen.h
                   67008: ifdef.o : ifdef.h $(COMMONDIR)/gen.h
                   67009: 
                   67010: changes :
                   67011:        @trap "" 1 2 3 15; \
                   67012:        sed \
                   67013:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
                   67014:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
                   67015:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
                   67016:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
                   67017:            -e "s'^CFLGS=.*'CFLGS=$(CFLGS)'" \
                   67018:            -e "s'^DKLIB=.*'DKLIB=$(DKLIB)'" \
                   67019:            -e "s'^MAN1DIR=.*'MAN1DIR=$(MAN1DIR)'" \
                   67020:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
                   67021:        $(MAKEFILE) >XXX.mk; \
                   67022:        mv XXX.mk $(MAKEFILE)
                   67023: 
                   67024: 0707070014230006040407550057030057030000020074410522633076300002000000000000post.src/postmd0707070014230006051006440057030057030000010074420522627503700002700000002320post.src/postmd/README
                   67025: A program that displays a matrix as a gray scale image on PostScript
                   67026: printers. May be useful if you have a large matrix and want a simple
                   67027: way to look for patterns. Expect a 600x600 matrix is an optimistic
                   67028: upper limit on a 300 dpi printers using 5 shades of gray and 8.5x11
                   67029: inch paper.
                   67030: 
                   67031: Matrix elements are a series of floating point numbers arranged in
                   67032: the input file in row major order. By default each matrix is assumed
                   67033: to be square and the number of rows (and columns) is set to the square
                   67034: root of the number of elements in the input file. White space, including
                   67035: newlines, is not used to determine the matrix dimensions. Each matrix
                   67036: element is mapped into an integer in the range 0 to 255 (254 by default)
                   67037: and PostScript's image operator maps that integer into a gray scale
                   67038: appropriate for the printer.
                   67039: 
                   67040: The mapping from floating point matrix elements to integers is controlled
                   67041: by an interval list and grayscale map. The default interval list is
                   67042: "-1,0,1" which partitions the real line into 7 regions. The default
                   67043: grayscale map gets darker as the regions move from left to right along
                   67044: the real line. The -i option changes the interval list and the -g option
                   67045: modifies the grayscale mapping. Check the man page for more details.
                   67046: 
                   67047: 0707070014230004201006400057030057030000010063100522633076300003100000016617post.src/postmd/postmd.1.ds dQ /usr/lib/postscript
                   67048: .TH POSTMD 1 "DWB 3.2"
                   67049: .SH NAME
                   67050: .B postmd
                   67051: \- matrix display program for PostScript printers
                   67052: .SH SYNOPSIS
                   67053: \*(mBpostmd\f1
                   67054: .OP "" options []
                   67055: .OP "" files []
                   67056: .SH DESCRIPTION
                   67057: .B postmd
                   67058: reads a series of floating point numbers from
                   67059: .IR files ,
                   67060: translates them into a PostScript gray scale image,
                   67061: and writes the results on the standard output.
                   67062: In a typical application the numbers might be
                   67063: the elements of a large matrix,
                   67064: written in row major order,
                   67065: while the printed image could help locate
                   67066: patterns in the matrix.
                   67067: If no
                   67068: .I files
                   67069: are specified, or if
                   67070: .OP \-
                   67071: is one of the input
                   67072: .IR files ,
                   67073: the standard input is read.
                   67074: The following
                   67075: .I options
                   67076: are understood:
                   67077: .TP 0.75i
                   67078: .OP \-b num
                   67079: Pack the bitmap in the output file using
                   67080: .I num
                   67081: byte patterns.
                   67082: A value of 0 turns off all packing of the output file.
                   67083: By default
                   67084: .I num
                   67085: is 6.
                   67086: .TP
                   67087: .OP \-c num
                   67088: Print
                   67089: .I num
                   67090: copies of each page.
                   67091: By default only one copy is printed.
                   67092: .TP
                   67093: .OP \-d dimen
                   67094: Sets the default matrix dimensions for all input
                   67095: .I files
                   67096: to
                   67097: .IR dimen .
                   67098: The
                   67099: .I dimen
                   67100: string can be given as rows or rows\^\(mu\^columns.
                   67101: If columns is omitted it will be set to rows.
                   67102: By default
                   67103: .B postmd
                   67104: assumes each matrix is square and sets the number of rows
                   67105: and columns to the square root of the number of elements in
                   67106: each input file.
                   67107: .TP
                   67108: .OP \-g list
                   67109: .I list
                   67110: is a comma- or space-separated string of integers, each lying between
                   67111: 0 and 255 inclusive,
                   67112: that assigns PostScript gray scales to the regions of the real line
                   67113: selected by the
                   67114: .OP \-i
                   67115: option.
                   67116: 255 corresponds to white and 0 to black.
                   67117: .B postmd
                   67118: assigns a default gray scale that omits white (i.e., 255) and gets
                   67119: darker as the regions move from left to right along the real line.
                   67120: .TP
                   67121: .OP \-i list
                   67122: .I list
                   67123: is a comma- or space-separated string of
                   67124: .I N
                   67125: floating point numbers that
                   67126: partition the real line into
                   67127: .RI 2 N +1
                   67128: regions.
                   67129: The
                   67130: .I list
                   67131: must be given in increasing numerical order.
                   67132: The partitions are used to map floating point numbers read from the input
                   67133: .I files
                   67134: into gray scale integers that are assigned automatically by
                   67135: .B postmd
                   67136: or arbitrarily selected using the
                   67137: .OP \-g
                   67138: option.
                   67139: The default interval
                   67140: .I list
                   67141: is ``\*(mB\-1,0,1\fP'' which partions the real line into 7 regions.
                   67142: .TP
                   67143: .OP \-m num
                   67144: Magnify each logical page by the factor
                   67145: .IR num .
                   67146: Pages are scaled uniformly about the origin,
                   67147: which by default is located at the center of
                   67148: each page.
                   67149: The default magnification is 1.0.
                   67150: .TP
                   67151: .OP \-n num
                   67152: Print
                   67153: .I num
                   67154: logical pages on each piece of paper,
                   67155: where
                   67156: .I num
                   67157: can be any positive integer.
                   67158: By default
                   67159: .I num
                   67160: is set to 1.
                   67161: .TP
                   67162: .OP \-o list
                   67163: Print pages whose numbers are given in the comma separated
                   67164: .IR list .
                   67165: The list contains single numbers
                   67166: .I N
                   67167: and ranges
                   67168: .IR N1\-\|N2 .
                   67169: A missing
                   67170: .I N1
                   67171: means the lowest numbered page, a missing
                   67172: .I N2
                   67173: means the highest.
                   67174: .TP
                   67175: .OP \-p mode
                   67176: Print
                   67177: .I files
                   67178: in either \*(mBportrait\fP or \*(mBlandscape\fP
                   67179: .IR mode .
                   67180: Only the first character of
                   67181: .I mode
                   67182: is significant.
                   67183: The default
                   67184: .I mode
                   67185: is \*(mBportrait\fP.
                   67186: .TP
                   67187: .OP \-w window
                   67188: .I window
                   67189: is a comma- or space-separated list of four positive integers that
                   67190: select the upper left and lower right corners of a submatrix from
                   67191: each of the input
                   67192: .IR files .
                   67193: Row and column indices start at 1 in the upper left corner and the
                   67194: numbers in the input
                   67195: .I files
                   67196: are assumed to be written in row major order.
                   67197: By default the entire matrix is displayed.
                   67198: .TP
                   67199: .OP \-x num
                   67200: Translate the origin
                   67201: .I num
                   67202: inches along the positive x axis.
                   67203: The default
                   67204: coordinate system has the origin fixed at the
                   67205: center of the page, with positive
                   67206: x to the right and positive y up the page.
                   67207: Positive
                   67208: .I num
                   67209: moves everything right.
                   67210: The default offset is 0 inches.
                   67211: .TP
                   67212: .OP \-y num
                   67213: Translate the origin
                   67214: .I num
                   67215: inches along the positive y axis.
                   67216: Positive
                   67217: .I num
                   67218: moves everything up the page.
                   67219: The default offset is 0.
                   67220: .TP
                   67221: .OP \-E name
                   67222: Set the character encoding for text fonts to
                   67223: .IR name .
                   67224: Requesting
                   67225: .I name
                   67226: means include file
                   67227: .MI \*(dQ/ name .enc \f1.
                   67228: A nonexistent encoding file is silently ignored.
                   67229: The default selects file
                   67230: .MR \*(dQ/Default.enc .
                   67231: .TP
                   67232: .OP \-L file
                   67233: Use
                   67234: .I file
                   67235: as the PostScript prologue.
                   67236: .br
                   67237: The default is
                   67238: .MR \*(dQ/postmd.ps .
                   67239: .PP
                   67240: Three options allow insertion of arbitrary PostScript
                   67241: at controlled points in the translation process:
                   67242: .TP 0.75i
                   67243: .OP \-C file
                   67244: Copy
                   67245: .I file
                   67246: to the output file;
                   67247: .I file
                   67248: must contain legitimate PostScript.
                   67249: .TP
                   67250: .OP \-P string
                   67251: Include
                   67252: .I string
                   67253: in the output file;
                   67254: .I string
                   67255: must be legitimate PostScript.
                   67256: .TP
                   67257: .OP \-R action
                   67258: Requests special
                   67259: .I action
                   67260: (e.g.,
                   67261: .MR manualfeed )
                   67262: on a per page or global basis.
                   67263: The
                   67264: .I action
                   67265: string can be given as
                   67266: .IR request ,
                   67267: .IM request : page\f1\|,
                   67268: or
                   67269: .IM request : page : file\f1\|.
                   67270: If
                   67271: .I page
                   67272: is omitted or given as 0, the request
                   67273: applies to all pages.
                   67274: If
                   67275: .I file
                   67276: is omitted, the request
                   67277: lookup is done in
                   67278: .MR \*(dQ/ps.requests .
                   67279: .PP
                   67280: Only one matrix is displayed on each logical page,
                   67281: and each of the input
                   67282: .I files
                   67283: must contain complete descriptions of exactly one matrix.
                   67284: Matrix elements are floating point numbers arranged in row major order in
                   67285: each input file.
                   67286: White space, including newlines, is not used to determine matrix
                   67287: dimensions.
                   67288: By default
                   67289: .B postmd
                   67290: assumes each matrix is square and sets the number of rows and columns
                   67291: to the square root of the number of elements in the input file.
                   67292: Supplying default dimensions on the command line using the
                   67293: .OP \-d
                   67294: option overrides this default behavior, and in that case the
                   67295: dimensions apply to all input
                   67296: .IR files .
                   67297: .PP
                   67298: An optional header can be supplied with each input file and is used
                   67299: to set the matrix dimensions, the partition of the real line, the gray scale
                   67300: map, and a window into the matrix.
                   67301: The header consists of keyword/value pairs, each on a separate line.
                   67302: It begins on the first line of each input file and ends with the
                   67303: first unrecognized string, which should be the first matrix element.
                   67304: Values set in the header take precedence, but only apply to the
                   67305: current input file.
                   67306: Recognized header keywords are
                   67307: .MR dimension ,
                   67308: .MR interval ,
                   67309: .MR grayscale ,
                   67310: and
                   67311: .MR window .
                   67312: The syntax of the value string that follows each keyword parallels what is
                   67313: accepted by the
                   67314: .OP \-d ,
                   67315: .OP \-i ,
                   67316: .OP \-g ,
                   67317: and
                   67318: .OP \-w
                   67319: options.
                   67320: .SH EXAMPLES
                   67321: For example, suppose
                   67322: .I file
                   67323: initially contains the 1000 numbers
                   67324: in a 20\(mu50 matrix.
                   67325: Then the command line:
                   67326: .EX
                   67327: postmd -d20x50 -i"-100 100" -g0,128,254,128,0 \f2file
                   67328: .EE
                   67329: and prepending the header,
                   67330: .EX
                   67331: dimension 20x50
                   67332: interval -100.0 .100e+3
                   67333: grayscale 0 128 254 128 0
                   67334: .EE
                   67335: to
                   67336: .I file
                   67337: and typing the command line:
                   67338: .EX
                   67339: postmd \f2file
                   67340: .EE
                   67341: produce exactly the same output.
                   67342: The interval list partitions the real line into five regions and
                   67343: the gray scale list maps numbers less than \-100 or greater than 100
                   67344: into 0 (i.e., black), numbers equal to \-100 or 100 into 128
                   67345: (i.e., 50 percent
                   67346: black), and numbers between \-100 and 100 into 254 (i.e., almost white).
                   67347: .SH DIAGNOSTICS
                   67348: A 0 exit status is returned if
                   67349: .I files
                   67350: were successfully processed.
                   67351: .SH WARNINGS
                   67352: The largest matrix that can be adequately displayed is a function
                   67353: of the interval and gray scale lists, the printer resolution,
                   67354: and the paper size.
                   67355: A 600\(mu600 matrix is an optimistic upper bound for a two element interval
                   67356: list (i.e. five regions) using 8.5\(mu11 inch paper on a 300 dpi printer.
                   67357: .PP
                   67358: Using white (i.e., 255) in a gray scale list is not recommended and will not
                   67359: show up in the legend and bar graph that
                   67360: .B postmd
                   67361: displays below each image.
                   67362: .SH FILES
                   67363: .MW \*(dQ/postmd.ps
                   67364: .br
                   67365: .MW \*(dQ/forms.ps
                   67366: .br
                   67367: .MW \*(dQ/ps.requests
                   67368: .SH SEE ALSO
                   67369: .BR dpost (1),
                   67370: .BR postdaisy (1),
                   67371: .BR postdmd (1),
                   67372: .BR postio (1),
                   67373: .BR postprint (1),
                   67374: .BR postreverse (1),
                   67375: .BR posttek (1),
                   67376: .BR psencoding (1)
                   67377: 0707070014230006071006440057030057030000010111200522627503700003100000103300post.src/postmd/postmd.c/*
                   67378:  *
                   67379:  * postmd - matrix display program for PostScript printers.
                   67380:  *
                   67381:  * A simple program that can be used to display a matrix as a gray scale image on
                   67382:  * a PostScript printer using the image operator. Much of the code was borrowed
                   67383:  * from postdmd, the bitmap display program DMD screen dumps. May help if you have
                   67384:  * a large matix (of floating point numbers) and want a simple way to look for
                   67385:  * patterns.
                   67386:  *
                   67387:  * Matrix elements are a series of floating point numbers arranged in the input
                   67388:  * file in row major order. The actual matrix elements can be preceeded by a simple
                   67389:  * header that sets things like the matrix dimensions, interval list, and possibly
                   67390:  * a window into the matrix that we'll use for display. The dimension statement is
                   67391:  * perhaps the most important. If present it determines the number of rows and
                   67392:  * columns in the matrix. For example, either of the following defines a 50x50
                   67393:  * matrix,
                   67394:  *
                   67395:  *             dimension       50
                   67396:  *             dimension       50x50
                   67397:  *
                   67398:  * If no dimension statement appears in the input file, the matrix is assumed to
                   67399:  * be square, and the number of rows (and columns) is set to the square root of
                   67400:  * the number of elements in the input file.
                   67401:  *
                   67402:  * Each matrix element is mapped into an integer in the range 0 to 255 (actually
                   67403:  * 254) and PostScript's image operator then maps that number into a gray scale
                   67404:  * appropriate for the particular printer. The mapping from the floating point
                   67405:  * matrix elements to integers is accomplished using an interval list that can be
                   67406:  * set using the -i option. The format of the interval string is,
                   67407:  *
                   67408:  *             num1,num2,num3,...,numn
                   67409:  *
                   67410:  * where each num is a floating point number. The list must be given in increasing
                   67411:  * numerical order. A list of n numbers partitions the real line into 2n+1 regions
                   67412:  * given as,
                   67413:  *
                   67414:  *             region1         element < num1
                   67415:  *             region2         element = num1
                   67416:  *             region3         element < num2
                   67417:  *             region4         element = num2
                   67418:  *                .
                   67419:  *                .
                   67420:  *                .
                   67421:  *             region2n        element = numn
                   67422:  *             region2n+1      element > numn
                   67423:  *
                   67424:  * Every number in a region is mapped one integer in the range 0 to 254, and that
                   67425:  * number, when displayed on a printer using the image operator, prints as a square
                   67426:  * filled with a gray shade that reflects the integer that was chosen. 0 maps to
                   67427:  * black and 255 maps to white (which by default will not be used).
                   67428:  *
                   67429:  * The default gray scale gets darker as the region number increases, but can be
                   67430:  * changed by supplying a gray scale list with the -g option or in the optional
                   67431:  * matrix header. The color map is again a comman or space separated list that
                   67432:  * looks like,
                   67433:  *
                   67434:  *             color1,color2, ... ,color2n+1
                   67435:  *
                   67436:  * where color1 applies to region 1 and color2n+1 applies to region2n+1. Each
                   67437:  * number in the list should be an integer between 0 and 255. If less than 2n+1
                   67438:  * colors are given default assignments will be used for missing regions.
                   67439:  *
                   67440:  * The size of the matrix that we can display reasonably well is a function of the
                   67441:  * number of elements in the interval list, paper size, and printer resolution.
                   67442:  * For example a 300dpi printer using 8.5x11 inch paper gives us an image area of
                   67443:  * about 2400x2400 pixels. An interval list of two numbers generates five separate
                   67444:  * regions and will therefore need that many different shades of gray. Since we're
                   67445:  * not using white we'll need to partion our image area into 4x4 pixel squares,
                   67446:  * and that means a 600x600 matrix is about as big as we can go. In practice that's
                   67447:  * optimistic, but the argument illustrates some of the limitations.
                   67448:  *
                   67449:  * A submatrix can be selected to display by windowing into the matrix. The window
                   67450:  * list can be given using the -w option or can be set in the optional header that
                   67451:  * can preceed each matrix.  The list should be a comma or space separated list
                   67452:  * that looks like,
                   67453:  *
                   67454:  *             lower-column, lower-row, upper-column, upper-row
                   67455:  *
                   67456:  * where each element in the list must be a positive integer. Rows and columns in
                   67457:  * the input matrix start at 1. The dimension of the displayed window will be from
                   67458:  * lower-column to upper-column and from lower-row to upper-row inclusive.
                   67459:  *
                   67460:  * The encoding produced by the program is essentially identical to what's done
                   67461:  * by postdmd. See the comments at the beginning of that program if you need more
                   67462:  * details. The prologue also shares much of the same code. 
                   67463:  *
                   67464:  * The PostScript prologue is copied from *prologue before any of the input files
                   67465:  * are translated. The program expects that the following PostScript procedures
                   67466:  * are defined in that file:
                   67467:  *
                   67468:  *     setup
                   67469:  *
                   67470:  *       mark ... setup -
                   67471:  *
                   67472:  *         Handles special initialization stuff that depends on how this program
                   67473:  *         was called. Expects to find a mark followed by key/value pairs on the
                   67474:  *         stack. The def operator is applied to each pair up to the mark, then
                   67475:  *         the default state is set up.
                   67476:  *
                   67477:  *     pagesetup
                   67478:  *
                   67479:  *       page pagesetup -
                   67480:  *
                   67481:  *         Does whatever is needed to set things up for the next page. Expects
                   67482:  *         to find the current page number on the stack.
                   67483:  *
                   67484:  *     bitmap
                   67485:  *
                   67486:  *       columns rows bitmap -
                   67487:  *
                   67488:  *         Prints the image that's read as a hex string from standard input. The
                   67489:  *         image consists of rows lines, each of which includes columns elements.
                   67490:  *         Eight bits per pixel are used to encode the matrix elements.
                   67491:  *
                   67492:  *     labelmatrix
                   67493:  *
                   67494:  *       matrixname matrixlimits labelmatrix -
                   67495:  *
                   67496:  *         Prints string matrixname just below the lower left corner of the image
                   67497:  *         and prints string martixlimits near the lower right corner. Outlines
                   67498:  *         the entire image with a (one pixel wide) box and then draws tick marks
                   67499:  *         along the top and left sides of the image. One tick mark is printed
                   67500:  *         for every ten elements.
                   67501:  *
                   67502:  *     legend
                   67503:  *
                   67504:  *       n1 ... nN N c1 m1 ... cM mM total regions legend -
                   67505:  *
                   67506:  *         Prints the legend as a bar graph below the matrix image. n1 ... nN are
                   67507:  *         strings that represent the interval list. c1 m1 ... cm mM are pairs
                   67508:  *         that consist of a region's color and the statistics count. Actually
                   67509:  *         the c's are trivial procedures that just leave a one character string
                   67510:  *         on the stack when they're executed by image - which is the way the
                   67511:  *         bar graph is drawn.
                   67512:  *
                   67513:  *     done
                   67514:  *
                   67515:  *       done
                   67516:  *
                   67517:  *         Makes sure the last page is printed. Only needed when we're printing
                   67518:  *         more than one page on each sheet of paper.
                   67519:  *
                   67520:  * Many default values, like the magnification and orientation, are defined in 
                   67521:  * the prologue, which is where they belong. If they're changed (by options), an
                   67522:  * appropriate definition is made after the prologue is added to the output file.
                   67523:  * The -P option passes arbitrary PostScript through to the output file. Among
                   67524:  * other things it can be used to set (or change) values that can't be accessed by
                   67525:  * other options.
                   67526:  *
                   67527:  */
                   67528: 
                   67529: #include <stdio.h>
                   67530: #include <signal.h>
                   67531: #include <ctype.h>
                   67532: #include <fcntl.h>
                   67533: 
                   67534: #include "comments.h"                  /* PostScript file structuring comments */
                   67535: #include "gen.h"                       /* general purpose definitions */
                   67536: #include "path.h"                      /* for the prologue */
                   67537: #include "ext.h"                       /* external variable declarations */
                   67538: #include "postmd.h"                    /* special matrix display definitions */
                   67539: 
                   67540: char   *optnames = "a:b:c:d:g:i:m:n:o:p:w:x:y:A:C:E:J:L:P:R:DI";
                   67541: 
                   67542: char   *prologue = POSTMD;             /* default PostScript prologue */
                   67543: char   *formfile = FORMFILE;           /* stuff for multiple pages per sheet */
                   67544: char   *temp_dir = TEMPDIR;            /* temp directory for copying stdin */
                   67545: 
                   67546: int    formsperpage = 1;               /* page images on each piece of paper */
                   67547: int    copies = 1;                     /* and this many copies of each sheet */
                   67548: int    bytespp = 6;                    /* bytes per pattern - on output */
                   67549: 
                   67550: int    dostats = ON;                   /* permanent statistics flag */
                   67551: int    nxtstat = ON;                   /* and the one for the next matrix */
                   67552: 
                   67553: char   *interval = DFLTILIST;          /* string representations of the interval */
                   67554: char   *colormap = NULL;               /* color map */
                   67555: char   *window = NULL;                 /* and window lists */
                   67556: char   *matrixname = "pipe.end";       /* name for the next plot */
                   67557: 
                   67558: Ilist  ilist[128];                     /* active interval list and color map */
                   67559: int    next = 0;                       /* one past the last element in ilist[] */
                   67560: int    regions;                        /* an index assigned to the last region */
                   67561: int    wlist[4];                       /* upper left and lower right corners */
                   67562: 
                   67563: int    page = 0;                       /* last page we worked on */
                   67564: int    printed = 0;                    /* and the number of pages printed */
                   67565: 
                   67566: int    dfltrows = 0;                   /* default rows */
                   67567: int    dfltcols = 0;                   /* and columns - changed by -d option */
                   67568: int    rows;                           /* real number of rows */
                   67569: int    columns;                        /* and columns in the matrix */
                   67570: int    patcount = 0;                   /* will be set to columns * rows */
                   67571: 
                   67572: double element;                        /* next matrix element */
                   67573: 
                   67574: char   *raster = NULL;                 /* next raster line */
                   67575: char   *rptr;                          /* next free byte in raster */
                   67576: char   *eptr;                          /* one past the last byte in raster */
                   67577: 
                   67578: FILE   *fp_in = stdin;                 /* read from this file */
                   67579: FILE   *fp_out = stdout;               /* and write stuff here */
                   67580: FILE   *fp_acct = NULL;                /* for accounting data */
                   67581: 
                   67582: /*****************************************************************************/
                   67583: 
                   67584: main(agc, agv)
                   67585: 
                   67586:     int                agc;
                   67587:     char       *agv[];
                   67588: 
                   67589: {
                   67590: 
                   67591: /*
                   67592:  *
                   67593:  * Bitmap display program for matrices. Only one matrix is allowed per input file,
                   67594:  * and each one will be displayed on a page by itself. Input files consist of an
                   67595:  * optional header followed by floating point numbers that represent the matrix
                   67596:  * elements - in row major order.
                   67597:  *
                   67598:  */
                   67599: 
                   67600:     argc = agc;                                /* other routines may want them */
                   67601:     argv = agv;
                   67602: 
                   67603:     prog_name = argv[0];               /* really just for error messages */
                   67604: 
                   67605:     init_signals();                    /* sets up interrupt handling */
                   67606:     header();                          /* PostScript header comments */
                   67607:     options();                         /* handle the command line options */
                   67608:     setup();                           /* for PostScript */
                   67609:     arguments();                       /* followed by each input file */
                   67610:     done();                            /* print the last page etc. */
                   67611:     account();                         /* job accounting data */
                   67612: 
                   67613:     exit(x_stat);                      /* not much could be wrong */
                   67614: 
                   67615: }   /* End of main */
                   67616: 
                   67617: /*****************************************************************************/
                   67618: 
                   67619: init_signals()
                   67620: 
                   67621: {
                   67622: 
                   67623: /*
                   67624:  *
                   67625:  * Make sure we handle interrupts.
                   67626:  *
                   67627:  */
                   67628: 
                   67629:     if ( signal(SIGINT, interrupt) == SIG_IGN )  {
                   67630:        signal(SIGINT, SIG_IGN);
                   67631:        signal(SIGQUIT, SIG_IGN);
                   67632:        signal(SIGHUP, SIG_IGN);
                   67633:     } else {
                   67634:        signal(SIGHUP, interrupt);
                   67635:        signal(SIGQUIT, interrupt);
                   67636:     }   /* End else */
                   67637: 
                   67638:     signal(SIGTERM, interrupt);
                   67639:     signal(SIGFPE, interrupt);
                   67640: 
                   67641: }   /* End of init_signals */
                   67642: 
                   67643: /*****************************************************************************/
                   67644: 
                   67645: header()
                   67646: 
                   67647: {
                   67648: 
                   67649:     int                ch;                     /* return value from getopt() */
                   67650:     int                old_optind = optind;    /* for restoring optind - should be 1 */
                   67651: 
                   67652: /*
                   67653:  *
                   67654:  * Scans the option list looking for things, like the prologue file, that we need
                   67655:  * right away but could be changed from the default. Doing things this way is an
                   67656:  * attempt to conform to Adobe's latest file structuring conventions. In particular
                   67657:  * they now say there should be nothing executed in the prologue, and they have
                   67658:  * added two new comments that delimit global initialization calls. Once we know
                   67659:  * where things really are we write out the job header, follow it by the prologue,
                   67660:  * and then add the ENDPROLOG and BEGINSETUP comments.
                   67661:  *
                   67662:  */
                   67663: 
                   67664:     while ( (ch = getopt(argc, argv, optnames)) != EOF )
                   67665:        if ( ch == 'L' )
                   67666:            prologue = optarg;
                   67667:        else if ( ch == '?' )
                   67668:            error(FATAL, "");
                   67669: 
                   67670:     optind = old_optind;               /* get ready for option scanning */
                   67671: 
                   67672:     fprintf(stdout, "%s", CONFORMING);
                   67673:     fprintf(stdout, "%s %s\n", VERSION, PROGRAMVERSION);
                   67674:     fprintf(stdout, "%s %s\n", DOCUMENTFONTS, ATEND);
                   67675:     fprintf(stdout, "%s %s\n", PAGES, ATEND);
                   67676:     fprintf(stdout, "%s", ENDCOMMENTS);
                   67677: 
                   67678:     if ( cat(prologue) == FALSE )
                   67679:        error(FATAL, "can't read %s", prologue);
                   67680: 
                   67681:     fprintf(stdout, "%s", ENDPROLOG);
                   67682:     fprintf(stdout, "%s", BEGINSETUP);
                   67683:     fprintf(stdout, "mark\n");
                   67684: 
                   67685: }   /* End of header */
                   67686: 
                   67687: /*****************************************************************************/
                   67688: 
                   67689: options()
                   67690: 
                   67691: {
                   67692: 
                   67693:     int                ch;                     /* return value from getopt() */
                   67694: 
                   67695: /*
                   67696:  *
                   67697:  * Reads and processes the command line options. Added the -P option so arbitrary
                   67698:  * PostScript code can be passed through. Expect it could be useful for changing
                   67699:  * definitions in the prologue for which options have not been defined.
                   67700:  *
                   67701:  */
                   67702: 
                   67703:     while ( (ch = getopt(argc, argv, optnames)) != EOF )  {
                   67704:        switch ( ch )  {
                   67705:            case 'a':                   /* aspect ratio */
                   67706:                    fprintf(stdout, "/aspectratio %s def\n", optarg);
                   67707:                    break;
                   67708: 
                   67709:            case 'b':                   /* bytes per pattern - on output */
                   67710:                    bytespp = atoi(optarg);
                   67711:                    break;
                   67712: 
                   67713:            case 'c':                   /* copies */
                   67714:                    copies = atoi(optarg);
                   67715:                    fprintf(stdout, "/#copies %s store\n", optarg);
                   67716:                    break;
                   67717: 
                   67718:            case 'd':                   /* default matrix dimensions */
                   67719:                    sscanf(optarg, "%dx%d", &dfltrows, &dfltcols);
                   67720:                    break;
                   67721: 
                   67722:            case 'g':                   /* set the colormap (ie. grayscale) */
                   67723:                    colormap = optarg;
                   67724:                    break;
                   67725: 
                   67726:            case 'i':                   /* matrix element interval list */
                   67727:                    interval = optarg;
                   67728:                    break;
                   67729: 
                   67730:            case 'm':                   /* magnification */
                   67731:                    fprintf(stdout, "/magnification %s def\n", optarg);
                   67732:                    break;
                   67733: 
                   67734:            case 'n':                   /* forms per page */
                   67735:                    formsperpage = atoi(optarg);
                   67736:                    fprintf(stdout, "%s %s\n", FORMSPERPAGE, optarg);
                   67737:                    fprintf(stdout, "/formsperpage %s def\n", optarg);
                   67738:                    break;
                   67739: 
                   67740:            case 'o':                   /* output page list */
                   67741:                    out_list(optarg);
                   67742:                    break;
                   67743: 
                   67744:            case 'p':                   /* landscape or portrait mode */
                   67745:                    if ( *optarg == 'l' )
                   67746:                        fprintf(stdout, "/landscape true def\n");
                   67747:                    else fprintf(stdout, "/landscape false def\n");
                   67748:                    break;
                   67749: 
                   67750:            case 'w':                   /* set the window */
                   67751:                    window = optarg;
                   67752:                    break;
                   67753: 
                   67754:            case 'x':                   /* shift things horizontally */
                   67755:                    fprintf(stdout, "/xoffset %s def\n", optarg);
                   67756:                    break;
                   67757: 
                   67758:            case 'y':                   /* and vertically on the page */
                   67759:                    fprintf(stdout, "/yoffset %s def\n", optarg);
                   67760:                    break;
                   67761: 
                   67762:            case 'A':                   /* force job accounting */
                   67763:            case 'J':
                   67764:                    if ( (fp_acct = fopen(optarg, "a")) == NULL )
                   67765:                        error(FATAL, "can't open accounting file %s", optarg);
                   67766:                    break;
                   67767: 
                   67768:            case 'C':                   /* copy file straight to output */
                   67769:                    if ( cat(optarg) == FALSE )
                   67770:                        error(FATAL, "can't read %s", optarg);
                   67771:                    break;
                   67772: 
                   67773:            case 'E':                   /* text font encoding */
                   67774:                    fontencoding = optarg;
                   67775:                    break;
                   67776: 
                   67777:            case 'L':                   /* PostScript prologue file */
                   67778:                    prologue = optarg;
                   67779:                    break;
                   67780: 
                   67781:            case 'P':                   /* PostScript pass through */
                   67782:                    fprintf(stdout, "%s\n", optarg);
                   67783:                    break;
                   67784: 
                   67785:            case 'R':                   /* special global or page level request */
                   67786:                    saverequest(optarg);
                   67787:                    break;
                   67788: 
                   67789:            case 'D':                   /* debug flag */
                   67790:                    debug = ON;
                   67791:                    break;
                   67792: 
                   67793:            case 'I':                   /* ignore FATAL errors */
                   67794:                    ignore = ON;
                   67795:                    break;
                   67796: 
                   67797:            case '?':                   /* don't understand the option */
                   67798:                    error(FATAL, "");
                   67799:                    break;
                   67800: 
                   67801:            default:                    /* don't know what to do for ch */
                   67802:                    error(FATAL, "missing case for option %c\n", ch);
                   67803:                    break;
                   67804:        }   /* End switch */
                   67805:     }   /* End while */
                   67806: 
                   67807:     argc -= optind;                    /* get ready for non-option args */
                   67808:     argv += optind;
                   67809: 
                   67810: }   /* End of options */
                   67811: 
                   67812: /*****************************************************************************/
                   67813: 
                   67814: setup()
                   67815: 
                   67816: {
                   67817: 
                   67818: /*
                   67819:  *
                   67820:  * Handles things that must be done after the options are read but before the
                   67821:  * input files are processed.
                   67822:  *
                   67823:  */
                   67824: 
                   67825:     writerequest(0, stdout);           /* global requests eg. manual feed */
                   67826:     setencoding(fontencoding);
                   67827:     fprintf(stdout, "setup\n");
                   67828: 
                   67829:     if ( formsperpage > 1 )  {
                   67830:        if ( cat(formfile) == FALSE )
                   67831:            error(FATAL, "can't read %s", formfile);
                   67832:        fprintf(stdout, "%d setupforms\n", formsperpage);
                   67833:     }  /* End if */
                   67834: 
                   67835:     fprintf(stdout, "%s", ENDSETUP);
                   67836: 
                   67837: }   /* End of setup */
                   67838: 
                   67839: /*****************************************************************************/
                   67840: 
                   67841: arguments()
                   67842: 
                   67843: {
                   67844: 
                   67845: /*
                   67846:  *
                   67847:  * Makes sure all the non-option command line arguments are processed. If we get
                   67848:  * here and there aren't any arguments left, or if '-' is one of the input files
                   67849:  * we'll process stdin.
                   67850:  *
                   67851:  */
                   67852: 
                   67853:     if ( argc < 1 )
                   67854:        matrix();
                   67855:     else  {                            /* at least one argument is left */
                   67856:        while ( argc > 0 )  {
                   67857:            matrixname = *argv;
                   67858:            if ( strcmp(*argv, "-") == 0 )  {
                   67859:                fp_in = stdin;
                   67860:                matrixname = "pipe.end";
                   67861:            } else if ( (fp_in = fopen(*argv, "r")) == NULL )
                   67862:                error(FATAL, "can't open %s", *argv);
                   67863:            matrix();
                   67864:            if ( fp_in != stdin )
                   67865:                fclose(fp_in);
                   67866:            argc--;
                   67867:            argv++;
                   67868:        }   /* End while */
                   67869:     }   /* End else */
                   67870: 
                   67871: }   /* End of arguments */
                   67872: 
                   67873: /*****************************************************************************/
                   67874: 
                   67875: done()
                   67876: 
                   67877: {
                   67878: 
                   67879: /*
                   67880:  *
                   67881:  * Finished with all the input files, so mark the end of the pages, make sure the
                   67882:  * last page is printed, and restore the initial environment.
                   67883:  *
                   67884:  */
                   67885: 
                   67886:     fprintf(stdout, "%s", TRAILER);
                   67887:     fprintf(stdout, "done\n");
                   67888:     fprintf(stdout, "%s %d\n", PAGES, printed);
                   67889: 
                   67890:     if ( temp_file != NULL )
                   67891:        unlink(temp_file);
                   67892: 
                   67893: }   /* End of done */
                   67894: 
                   67895: /*****************************************************************************/
                   67896: 
                   67897: account()
                   67898: 
                   67899: {
                   67900: 
                   67901: /*
                   67902:  *
                   67903:  * Writes an accounting record to *fp_acct provided it's not NULL. Accounting
                   67904:  * is requested using the -A or -J options.
                   67905:  *
                   67906:  */
                   67907: 
                   67908:     if ( fp_acct != NULL )
                   67909:        fprintf(fp_acct, " print %d\n copies %d\n", printed, copies);
                   67910: 
                   67911: }   /* End of account */
                   67912: 
                   67913: /*****************************************************************************/
                   67914: 
                   67915: matrix()
                   67916: 
                   67917: {
                   67918: 
                   67919:     int                count;                  /* pattern repeats this many times */
                   67920:     long       total;                  /* expect this many patterns */
                   67921: 
                   67922: /*
                   67923:  *
                   67924:  * Reads a matrix from *fp_in, translates it into a PostScript gray scale image,
                   67925:  * and writes the result on stdout. For now only one matrix is allowed per input
                   67926:  * file. Matrix elements are floating point numbers arranged in row major order
                   67927:  * in the input file. In addition each input file may contain an optional header
                   67928:  * that defines special things like the dimension of the matrix, a window into
                   67929:  * the matrix that will be displayed, and an interval list.
                   67930:  *
                   67931:  * If we're reading from stdin we first make a copy in a temporary file so we can
                   67932:  * can properly position ourselves after we've looked for the header. Originally
                   67933:  * wasn't always making a copy of stdin, but I've added a few things to what's
                   67934:  * accepted in the header and this simplifies the job. An alternative would be
                   67935:  * to always require a header and mark the end of it by some string. Didn't like
                   67936:  * that approach much - may fix things up later.
                   67937:  *
                   67938:  */
                   67939: 
                   67940:     if ( fp_in == stdin )              /* make a copy so we can seek etc. */
                   67941:        copystdin();
                   67942: 
                   67943:     rows = dfltrows;                   /* new dimensions for the next matrix */
                   67944:     columns = dfltcols;
                   67945: 
                   67946:     buildilist(interval);              /* build the default ilist[] */
                   67947:     addcolormap(colormap);             /* add the colormap - if not NULL */
                   67948:     setwindow(window);                 /* and setup the initial matrix window */
                   67949:     nxtstat = dostats;                 /* want statistics? */
                   67950:     getheader();                       /* matrix dimensions at the very least */
                   67951:     dimensions();                      /* make sure we have the dimensions etc. */
                   67952: 
                   67953:     patcount = 0;
                   67954:     total = rows * columns;
                   67955: 
                   67956:     eptr = rptr + (wlist[2] - wlist[0] + 1);
                   67957: 
                   67958:     redirect(++page);
                   67959: 
                   67960:     fprintf(fp_out, "%s %d %d\n", PAGE, page, printed+1);
                   67961:     fprintf(fp_out, "/saveobj save def\n");
                   67962:     writerequest(printed+1, fp_out);
                   67963:     fprintf(fp_out, "%d %d bitmap\n", wlist[2] - wlist[0] + 1, wlist[3] - wlist[1] + 1);
                   67964: 
                   67965:     while ( patcount != total && fscanf(fp_in, "%f", &element) != EOF )  {
                   67966:        if ( inwindow() ) *rptr++ = mapfloat(element);
                   67967:        if ( ++patcount % columns == 0 )
                   67968:            if ( inrange() )
                   67969:                putrow();
                   67970:     }  /* End while */
                   67971: 
                   67972:     if ( total != patcount )
                   67973:        error(FATAL, "matrix format error");
                   67974: 
                   67975:     labelmatrix();
                   67976: 
                   67977:     if ( fp_out == stdout ) printed++;
                   67978: 
                   67979:     fprintf(fp_out, "showpage\n");
                   67980:     fprintf(fp_out, "saveobj restore\n");
                   67981:     fprintf(fp_out, "%s %d %d\n", ENDPAGE, page, printed);
                   67982: 
                   67983: }   /* End of matrix */
                   67984: 
                   67985: /*****************************************************************************/
                   67986: 
                   67987: copystdin()
                   67988: 
                   67989: {
                   67990: 
                   67991:     int                fd_out;                 /* for the temporary file */
                   67992:     int                fd_in;                  /* for stdin */
                   67993:     int                buf[512];               /* buffer for reads and writes */
                   67994:     int                count;                  /* number of bytes put in buf */
                   67995: 
                   67996: /*
                   67997:  *
                   67998:  * If we're reading the matrix from stdin and the matrix dimension isn't set by
                   67999:  * a dimension statement at the beginning of the file we'll copy stdin to a
                   68000:  * temporary file and reset *fp_in so reads come from the temp file. Simplifies
                   68001:  * reading the header (if present), but is expensive.
                   68002:  *
                   68003:  */
                   68004: 
                   68005:     if ( temp_file != NULL )           /* been here already */
                   68006:        unlink(temp_file);
                   68007: 
                   68008:     if ( (temp_file = tempnam(temp_dir, "post")) == NULL )
                   68009:        error(FATAL, "can't generate temp file name");
                   68010: 
                   68011:     if ( (fd_out = creat(temp_file, 0660)) == -1 )
                   68012:        error(FATAL, "can't create %s", temp_file);
                   68013: 
                   68014:     fd_in = fileno(stdin);
                   68015: 
                   68016:     while ( (count = read(fd_in, buf, sizeof(buf))) > 0 )
                   68017:        if ( write(fd_out, buf, count) != count )
                   68018:            error(FATAL, "error writing to %s", temp_file);
                   68019: 
                   68020:     close(fd_out);
                   68021: 
                   68022:     if ( (fp_in = fopen(temp_file, "r")) == NULL )
                   68023:        error(FATAL, "can't open %s", temp_file);
                   68024: 
                   68025: }   /* End of copystdin */
                   68026: 
                   68027: /*****************************************************************************/
                   68028: 
                   68029: getheader()
                   68030: 
                   68031: {
                   68032: 
                   68033:     char       buf[512];               /* temporary string space */
                   68034:     char       *cmap = NULL;           /* remember header colormap list */
                   68035:     long       pos;                    /* for seeking back to first element */
                   68036: 
                   68037: /*
                   68038:  *
                   68039:  * Looks for the optional header information at the beginning of the input file,
                   68040:  * reads it if it's there, and sets *fp_in to be just past the header. That should
                   68041:  * be the beginning of the matrix element list. The recognized header keywords are
                   68042:  * dimension, interval, colormap (or grayscale), window, name, and statistics. All
                   68043:  * are optional, but may be useful in a spooling environment when the user doesn't
                   68044:  * doesn't actually run the translator.
                   68045:  *
                   68046:  * The dimension statement specifies the number of rows and columns. For example
                   68047:  * either of the following two lines define a 50 by 50 element matrix,
                   68048:  *
                   68049:  *     dimension       50
                   68050:  *     dimension       50x50
                   68051:  *
                   68052:  * The first integer is the number of rows and the second, if given, is the number
                   68053:  * of columns. If columns are missing from the dimension statement we assume the
                   68054:  * matrix is square.
                   68055:  *
                   68056:  * interval can be used to redefine the interval list used for mapping floating
                   68057:  * point numbers into integers in the range 0 to 254. The string following the
                   68058:  * interval keyword has the same format as the -i option. For example to set the
                   68059:  * interval list to -1, 0, and 1 you can add the line,
                   68060:  *
                   68061:  *     interval        -1,0,1
                   68062:  *
                   68063:  * The numbers are floats given in increasing order, and separated by commas or
                   68064:  * blanks. The last interval list in a header takes precedence.
                   68065:  *
                   68066:  * colormap can be used to redefine the grayscale list.  The string following
                   68067:  * the colormap keyword has the same format as the -g option.  For example
                   68068:  *
                   68069:  *     colormap        0,50,100,150,200,250
                   68070:  * or  grayscale       0,50,100,150,200,250
                   68071:  *
                   68072:  * The window keyword can be used to select a submatrix. The numbers following
                   68073:  * window are the upper left and lower right matix coordinates. May not be
                   68074:  * implemented yet but shouldn't be difficult. For example
                   68075:  *
                   68076:  *     window          10 10 40 40
                   68077:  *
                   68078:  * selects the submatrix with corners at (10, 10) and (40, 40). The edges of the
                   68079:  * window are included in the display.
                   68080:  *
                   68081:  * The name keyword can be used to define the title of the display.  For example,
                   68082:  *
                   68083:  *     name            Plot Of Matrix 1
                   68084:  *
                   68085:  * prints the string "Plot Of Matrix 1" at the top of the page. Everything up to
                   68086:  * the next newline is taken as the name string.
                   68087:  *
                   68088:  */
                   68089: 
                   68090:     pos = ftell(fp_in);
                   68091: 
                   68092:     while ( fscanf(fp_in, "%s", buf) != EOF )  {
                   68093:        if ( strncmp(buf, "dimension", strlen("dimension")) == 0 )
                   68094:            fscanf(fp_in, "%dx%d", &rows, &columns);
                   68095:        else if ( strncmp(buf, "window", strlen("window")) == 0 )  {
                   68096:            fgets(buf, sizeof(buf), fp_in);
                   68097:            setwindow(buf);
                   68098:        } else if ( strncmp(buf, "name", strlen("name")) == 0 )  {
                   68099:            fgets(buf, sizeof(buf), fp_in);
                   68100:            matrixname = savestring(buf);
                   68101:        } else if ( strncmp(buf, "colormap", strlen("colormap")) == 0 )  {
                   68102:            fgets(buf, sizeof(buf), fp_in);
                   68103:            cmap = savestring(buf);
                   68104:        } else if ( strncmp(buf, "grayscale", strlen("grayscale")) == 0 )  {
                   68105:            fgets(buf, sizeof(buf), fp_in);
                   68106:            cmap = savestring(buf);
                   68107:        } else if ( strncmp(buf, "interval", strlen("interval")) == 0 )  {
                   68108:            fgets(buf, sizeof(buf), fp_in);
                   68109:            buildilist(buf);
                   68110:        } else if ( strncmp(buf, "statistics", strlen("statistics")) == 0 )  {
                   68111:            fscanf(fp_in, "%s", buf);
                   68112:            if ( strcmp(buf, "on") == 0 || strcmp(buf, "ON") == 0 )
                   68113:                nxtstat = ON;
                   68114:            else nxtstat = OFF;
                   68115:        } else break;
                   68116:        pos = ftell(fp_in);
                   68117:     }  /* End while */
                   68118: 
                   68119:     addcolormap(cmap);                 /* must happen last */
                   68120:     fseek(fp_in, pos, 0);              /* back to the start of the matrix */
                   68121: 
                   68122: }   /* End of getheader */
                   68123: 
                   68124: /*****************************************************************************/
                   68125: 
                   68126: dimensions()
                   68127: 
                   68128: {
                   68129: 
                   68130:     char       buf[100];               /* temporary storage for the elements */
                   68131:     long       count = 0;              /* number of elements in the matrix */
                   68132:     long       pos;                    /* matrix elements start here */
                   68133: 
                   68134: /*
                   68135:  *
                   68136:  * Need to know the dimensions of the matrix before we can go any farther. If
                   68137:  * rows and columns are still 0 we'll read the entire input file, starting from
                   68138:  * the current position, count the number of elements, take the square root of it,
                   68139:  * and use it as the number of rows and columns. Then we seek back to the start
                   68140:  * of the real matrix, make sure columns is set, and allocate enough memory for
                   68141:  * storing each raster line. After we're certain we've got the number of rows and
                   68142:  * columns we check the window coordinates, and if they're not legitimate they're
                   68143:  * reset to cover the entire matrix.
                   68144:  *
                   68145:  */
                   68146: 
                   68147:     if ( rows == 0 )  {
                   68148:        pos = ftell(fp_in);
                   68149:        while ( fscanf(fp_in, "%s", buf) != EOF )
                   68150:            count++;
                   68151:        rows = sqrt((double) count);
                   68152:        fseek(fp_in, pos, 0);
                   68153:     }  /* End if */
                   68154: 
                   68155:     if ( columns <= 0 ) columns = rows;
                   68156: 
                   68157:     if ( raster != NULL ) free(raster);
                   68158: 
                   68159:     if ( (rptr = raster = malloc(columns)) == NULL )
                   68160:        error(FATAL, "no memory");
                   68161: 
                   68162:     eptr = rptr + columns;
                   68163: 
                   68164:     if ( rows <= 0 || columns <= 0 )
                   68165:        error(FATAL, "bad matrix dimensions");
                   68166: 
                   68167:     if ( wlist[0] > wlist[2] || wlist[1] > wlist[3] )  {
                   68168:        wlist[0] = wlist[1] = 1;
                   68169:        wlist[2] = columns;
                   68170:        wlist[3] = rows;
                   68171:     }  /* End if */
                   68172: 
                   68173: }   /* End of dimensions */
                   68174: 
                   68175: /*****************************************************************************/
                   68176: 
                   68177: buildilist(list)
                   68178: 
                   68179:     char       *list;                  /* use this as the interval list */
                   68180: 
                   68181: {
                   68182: 
                   68183:     static char        *templist = NULL;       /* a working copy of the list */
                   68184:     char       *ptr;                   /* next number in *templist */
                   68185:     int                i;                      /* loop index - for checking the list */
                   68186: 
                   68187: /*
                   68188:  *
                   68189:  * Reads string *list and builds up the ilist[] that will be used in the next
                   68190:  * matrix. Since strtok() modifies the string it's parsing we make a copy first.
                   68191:  * The format of the interval list is described in detail in the comments at the
                   68192:  * beginning of this program. Basically consists of a comma or space separated
                   68193:  * list of floating point numbers that must be given in increasing numerical order.
                   68194:  * The list determines how floating point numbers are mapped into integers in the
                   68195:  * range 0 to 254.
                   68196:  *
                   68197:  */
                   68198: 
                   68199:     if ( templist != NULL )            /* free the space used by the last list */
                   68200:        free(templist);
                   68201: 
                   68202:     while ( isascii(*list) && isspace(*list) )
                   68203:        list++;
                   68204: 
                   68205:     for ( ptr = list, regions = 3; *ptr != '\0'; ptr++ )  {
                   68206:        if ( *ptr == ',' || *ptr == '/' || isspace(*ptr) )
                   68207:            regions += 2;
                   68208:        while ( isascii(*ptr) && isspace(*ptr) ) ptr++;
                   68209:     }  /* End for */
                   68210: 
                   68211:     next = 0;
                   68212:     templist = savestring(list);
                   68213: 
                   68214:     ptr = strtok(templist, ",/ \t\n");
                   68215:     while ( ptr != NULL )  {
                   68216:        ilist[next].count = 0;
                   68217:        ilist[next++].color = 254 * (regions - 1 - next) / (regions - 1);
                   68218:        ilist[next].val = atof(ptr);
                   68219:        ilist[next].count = 0;
                   68220:        ilist[next++].color = 254 * (regions - 1 - next) / (regions - 1);
                   68221:        ptr = strtok(NULL, ",/ \t\n");
                   68222:     }  /* End while */
                   68223: 
                   68224:     ilist[next].count = 0;
                   68225:     ilist[next].color = 254 * (regions - 1 - next) / (regions - 1);
                   68226: 
                   68227:     if ( next == 0 )                   /* make sure we have a list */
                   68228:        error(FATAL, "missing interval list");
                   68229: 
                   68230:     for ( i = 3; i < next; i += 2 )    /* that's in increasing numerical order */
                   68231:        if ( ilist[i].val <= ilist[i-2].val )
                   68232:            error(FATAL, "bad interval list");
                   68233: 
                   68234: }   /* End of buildilist */
                   68235: 
                   68236: /*****************************************************************************/
                   68237: 
                   68238: addcolormap(list)
                   68239: 
                   68240:     char       *list;                  /* use this color map */
                   68241: 
                   68242: {
                   68243: 
                   68244:     static char        *templist = NULL;       /* a working copy of the color list */
                   68245:     char       *ptr;                   /* next color in *templist */
                   68246:     int                i = 0;                  /* assigned to this region in ilist[] */
                   68247: 
                   68248: /*
                   68249:  *
                   68250:  * Assigns the integers in *list to the color field for the regions defined in
                   68251:  * ilist[]. Assumes ilist[] has already been setup.
                   68252:  *
                   68253:  */
                   68254: 
                   68255:     if ( list != NULL )  {
                   68256:        if ( templist != NULL )
                   68257:            free(templist);
                   68258:        templist = savestring(list);
                   68259: 
                   68260:        ptr = strtok(templist, ",/ \t\n");
                   68261:        while ( ptr != NULL )  {
                   68262:            ilist[i++].color = atoi(ptr) % 256;
                   68263:            ptr = strtok(NULL, ",/ \t\n");
                   68264:        }   /* End while */
                   68265:     }  /* End if */
                   68266: 
                   68267: }   /* End of addcolormap */
                   68268: 
                   68269: /*****************************************************************************/
                   68270: 
                   68271: setwindow(list)
                   68272: 
                   68273:     char       *list;                  /* corners of window into the matrix */
                   68274: 
                   68275: {
                   68276: 
                   68277:     static char        *templist = NULL;       /* a working copy of the window list */
                   68278:     char       *ptr;                   /* next window coordinate in *templist */
                   68279:     int                i = 0;                  /* assigned to this region in wlist[] */
                   68280: 
                   68281: /*
                   68282:  *
                   68283:  * Sets up an optional window into the matrix.
                   68284:  *
                   68285:  */
                   68286: 
                   68287:     wlist[0] = wlist[1] = 1;
                   68288:     wlist[2] = wlist[3] = 0;
                   68289: 
                   68290:     if ( list != NULL )  {
                   68291:        if ( templist != NULL )
                   68292:            free(templist);
                   68293:        templist = savestring(list);
                   68294: 
                   68295:        ptr = strtok(templist, ",/ \t\n");
                   68296:        while ( ptr != NULL )  {
                   68297:            wlist[i++] = atoi(ptr);
                   68298:            ptr = strtok(NULL, ",/ \t\n");
                   68299:        }   /* End while */
                   68300:     }  /* End if */
                   68301: 
                   68302: }   /* End of setwindow */
                   68303: 
                   68304: /*****************************************************************************/
                   68305: 
                   68306: inwindow()
                   68307: 
                   68308: {
                   68309: 
                   68310:     int                r;                      /* row of the patcount element */
                   68311:     int                c;                      /* column of the patcount element */
                   68312: 
                   68313: /*
                   68314:  *
                   68315:  * Checks if the patcount element of the matrix is in the window.
                   68316:  *
                   68317:  */
                   68318: 
                   68319:     r = (patcount/columns) + 1;
                   68320:     c = (patcount%columns) + 1;
                   68321: 
                   68322:     return((c >= wlist[0]) && (r >= wlist[1]) && (c <= wlist[2]) && (r <= wlist[3]));
                   68323: 
                   68324: }   /* End of inwindow */
                   68325: 
                   68326: /*****************************************************************************/
                   68327: 
                   68328: inrange()
                   68329: 
                   68330: {
                   68331: 
                   68332: /*
                   68333:  *
                   68334:  * Checks if the current row lies in the window. Used right before we output the
                   68335:  * raster lines.
                   68336:  *
                   68337:  */
                   68338: 
                   68339:     return(((patcount/columns) >= wlist[1]) && ((patcount/columns) <= wlist[3]));
                   68340: 
                   68341: }   /* End of inrange */
                   68342: 
                   68343: /*****************************************************************************/
                   68344: 
                   68345: mapfloat(element)
                   68346: 
                   68347:     double     element;                /* floating point matrix element */
                   68348: 
                   68349: {
                   68350: 
                   68351:     int                i;                      /* loop index */
                   68352: 
                   68353: /*
                   68354:  *
                   68355:  * Maps element into an integer in the range 0 to 255, and returns the result to
                   68356:  * the caller. Mapping is done using the color map that was saved in ilist[]. Also
                   68357:  * updates the count field for the region that contains element - not good!
                   68358:  *
                   68359:  */
                   68360: 
                   68361:     for ( i = 1; i < next && ilist[i].val < element; i += 2 ) ;
                   68362: 
                   68363:     if ( i > next || element < ilist[i].val )
                   68364:        i--;
                   68365: 
                   68366:     ilist[i].count++;
                   68367:     return(ilist[i].color);
                   68368: 
                   68369: }   /* End of mapfloat */
                   68370: 
                   68371: /*****************************************************************************/
                   68372: 
                   68373: putrow()
                   68374: 
                   68375: {
                   68376: 
                   68377:     char       *p1, *p2;               /* starting and ending columns */
                   68378:     int                n;                      /* set to bytes per pattern */
                   68379:     int                i;                      /* loop index */
                   68380: 
                   68381: /*
                   68382:  *
                   68383:  * Takes the scanline that's been saved in *raster, encodes it according to the
                   68384:  * value that's been assigned to bytespp, and writes the result to *fp_out. Each
                   68385:  * line in the output bitmap is terminated by a 0 on a line by itself.
                   68386:  *
                   68387:  */
                   68388: 
                   68389:     n = (bytespp <= 0) ? columns : bytespp;
                   68390: 
                   68391:     for ( p1 = raster, p2 = raster + n; p1 < eptr; p1 = p2 )
                   68392:        if ( patncmp(p1, n) == TRUE )  {
                   68393:            while ( patncmp(p2, n) == TRUE ) p2 += n;
                   68394:            p2 += n;
                   68395:            fprintf(fp_out, "%d ", n);
                   68396:            for ( i = 0; i < n; i++, p1++ )
                   68397:                fprintf(fp_out, "%.2X", ((int) *p1) & 0377);
                   68398:            fprintf(fp_out, " %d\n", (p2 - p1) / n);
                   68399:        } else {
                   68400:            while ( p2 < eptr && patncmp(p2, n) == FALSE ) p2 += n;
                   68401:            if ( p2 > eptr ) p2 = eptr;
                   68402:            fprintf(fp_out, "%d ", p2 - p1);
                   68403:            while ( p1 < p2 )
                   68404:                fprintf(fp_out, "%.2X", ((int) *p1++) & 0377);
                   68405:            fprintf(fp_out, " 0\n");
                   68406:        }   /* End else */
                   68407: 
                   68408:     fprintf(fp_out, "0\n");
                   68409: 
                   68410:     rptr = raster;
                   68411: 
                   68412: }   /* End of putrow */
                   68413: 
                   68414: /*****************************************************************************/
                   68415: 
                   68416: labelmatrix()
                   68417: 
                   68418: {
                   68419: 
                   68420:     int                total;                  /* number of elements in the window */
                   68421:     int                i;                      /* loop index */
                   68422: 
                   68423: /*
                   68424:  *
                   68425:  * Responsible for generating the PostScript calls that label the matrix, generate
                   68426:  * the legend, and print the matrix name.
                   68427:  *
                   68428:  */
                   68429: 
                   68430:     fprintf(fp_out, "(%s) ((%d, %d) to (%d, %d)) labelmatrix\n", matrixname,
                   68431:                        wlist[0], wlist[1], wlist[2], wlist[3]);
                   68432: 
                   68433:     total = (wlist[2] - wlist[0] + 1) * (wlist[3] - wlist[1] + 1);
                   68434: 
                   68435:     if ( nxtstat == OFF )
                   68436:        for ( i = 0; i < regions; i++ )
                   68437:            ilist[i].count = 0;
                   68438: 
                   68439:     for ( i = 1; i < next; i += 2 )
                   68440:        fprintf(fp_out, "(%g) ", ilist[i].val);
                   68441:     fprintf(fp_out, "%d ", (regions - 1) / 2);
                   68442: 
                   68443:     for ( i = regions - 1; i >= 0; i-- )
                   68444:        fprintf(fp_out, "{(\\%.3o)} %d ", ilist[i].color, ilist[i].count);
                   68445:     fprintf(fp_out, "%d %d legend\n", total, regions);
                   68446: 
                   68447: }   /* End of labelmatrix */
                   68448: 
                   68449: /*****************************************************************************/
                   68450: 
                   68451: patncmp(p1, n)
                   68452: 
                   68453:     char       *p1;                    /* first patterns starts here */
                   68454:     int                n;                      /* and extends this many bytes */
                   68455: 
                   68456: {
                   68457: 
                   68458:     char       *p2;                    /* address of the second pattern */
                   68459: 
                   68460: /*
                   68461:  *
                   68462:  * Compares the two n byte patterns *p1 and *(p1+n). FALSE if returned is they're
                   68463:  * different or extend past the end of the current raster line.
                   68464:  *
                   68465:  */
                   68466: 
                   68467:     p2 = p1 + n;
                   68468: 
                   68469:     for ( ; n > 0; n--, p1++, p2++ )
                   68470:        if ( p2 >= eptr || *p1 != *p2 )
                   68471:            return(FALSE);
                   68472: 
                   68473:     return(TRUE);
                   68474: 
                   68475: }   /* End of patncmp */
                   68476: 
                   68477: /*****************************************************************************/
                   68478: 
                   68479: char *savestring(str)
                   68480: 
                   68481:     char       *str;                   /* save this string */
                   68482: 
                   68483: {
                   68484: 
                   68485:     char       *ptr = NULL;            /* at this address */
                   68486: 
                   68487: /*
                   68488:  *
                   68489:  * Copies string *str to a permanent place and returns the address to the caller.
                   68490:  *
                   68491:  */
                   68492: 
                   68493:     if ( str != NULL && *str != '\0' )  {
                   68494:        if ( (ptr = malloc(strlen(str) + 1)) == NULL )
                   68495:            error(FATAL, "no memory available for string %s", str);
                   68496:        strcpy(ptr, str);
                   68497:     }  /* End if */
                   68498: 
                   68499:     return(ptr);
                   68500: 
                   68501: }   /* End of savestring */
                   68502: 
                   68503: /*****************************************************************************/
                   68504: 
                   68505: redirect(pg)
                   68506: 
                   68507:     int                pg;                     /* next page we're printing */
                   68508: 
                   68509: {
                   68510: 
                   68511:     static FILE        *fp_null = NULL;        /* if output is turned off */
                   68512: 
                   68513: /*
                   68514:  *
                   68515:  * If we're not supposed to print page pg, fp_out will be directed to /dev/null,
                   68516:  * otherwise output goes to stdout.
                   68517:  *
                   68518:  */
                   68519: 
                   68520:     if ( pg >= 0 && in_olist(pg) == ON )
                   68521:        fp_out = stdout;
                   68522:     else if ( (fp_out = fp_null) == NULL )
                   68523:        fp_out = fp_null = fopen("/dev/null", "w");
                   68524: 
                   68525: }   /* End of redirect */
                   68526: 
                   68527: /*****************************************************************************/
                   68528: 
                   68529: 0707070014230006101006440057030057030000010112200522627503700003100000004462post.src/postmd/postmd.h/*
                   68530:  *
                   68531:  * An interval list used to map matrix elements into integers in the range 0 to
                   68532:  * 254 representing shades of gray on a PostScript printer. The list can be given
                   68533:  * using the -i option or can be set in the optional header that can preceed each
                   68534:  * matrix. The list should be a comma or space separated list that looks like,
                   68535:  *
                   68536:  *             num1,num2, ... ,numn
                   68537:  *
                   68538:  * where each num is a floating point number. The list must be given in increasing
                   68539:  * numerical order. The n numbers in the list partion the real line into 2n+1
                   68540:  * regions given by,
                   68541:  *
                   68542:  *             region1         element < num1
                   68543:  *             region2         element = num1
                   68544:  *             region3         element < num2
                   68545:  *             region4         element = num3
                   68546:  *                .                 .
                   68547:  *                .                 .
                   68548:  *                .                 .
                   68549:  *             region2n        element = numn
                   68550:  *             region2n+1      element > numn
                   68551:  *
                   68552:  * Every number in a given region is mapped into an integer in the range 0 to 254
                   68553:  * and that number, when displayed on a PostScript printer using the image operator,
                   68554:  * prints as a square filled with a gray scale that reflects the integer that was
                   68555:  * chosen. 0 maps to black and 255 white (that's why 255 is normally omitted).
                   68556:  *
                   68557:  * The shades of gray chosen by the program are normally generated automatically,
                   68558:  * but can be reassigned using the -g option or by including a grayscale line in
                   68559:  * the optional header. The grayscale list is comma or space separated list of
                   68560:  * integers between 0 and 255 that's used to map individual regions into arbitray
                   68561:  * shade of gray, thus overriding the default choice made in the program. The list
                   68562:  * should look like,
                   68563:  *
                   68564:  *             color1,color2, ... ,color2n+1
                   68565:  *
                   68566:  * where color1 applies to region1 and color2n+1 applies to region2n+1. If less
                   68567:  * than 2n+1 numbers are given the default assignments will be used for the missing
                   68568:  * regions. Each color must be an integer in the range 0 to 255.
                   68569:  *
                   68570:  * The default interval list is given below. The default grayscale maps 254 (almost
                   68571:  * white) into the first region and 0 (black) into the last.
                   68572:  *
                   68573:  */
                   68574: 
                   68575: #define DFLTILIST      "-1,0,1"
                   68576: 
                   68577: /*
                   68578:  *
                   68579:  * The active interval list is built from an interval string and stored in an array
                   68580:  * whose elements are of type Ilist.
                   68581:  *
                   68582:  */
                   68583: 
                   68584: typedef struct  {
                   68585:        double  val;                    /* only valid in kind is ENDPOINT */
                   68586:        int     color;                  /* gray scale color */
                   68587:        long    count;                  /* statistics for each region */
                   68588: } Ilist;
                   68589: 
                   68590: /*
                   68591:  *
                   68592:  * Non-integer function declarations.
                   68593:  *
                   68594:  */
                   68595: 
                   68596: char   *savestring();
                   68597: 
                   68598: 0707070014230004311006400057030057030000010063340522633076300003200000004021post.src/postmd/postmd.mkMAKE=/bin/make
                   68599: MAKEFILE=postmd.mk
                   68600: 
                   68601: SYSTEM=V9
                   68602: VERSION=3.3.2
                   68603: 
                   68604: GROUP=bin
                   68605: OWNER=bin
                   68606: 
                   68607: MAN1DIR=/tmp
                   68608: POSTBIN=/usr/bin/postscript
                   68609: POSTLIB=/usr/lib/postscript
                   68610: 
                   68611: COMMONDIR=../common
                   68612: 
                   68613: CFLGS=-O
                   68614: LDFLGS=-s
                   68615: 
                   68616: CFLAGS=$(CFLGS) -I$(COMMONDIR)
                   68617: LDFLAGS=$(LDFLGS)
                   68618: 
                   68619: HFILES=postmd.h\
                   68620:        $(COMMONDIR)/comments.h\
                   68621:        $(COMMONDIR)/ext.h\
                   68622:        $(COMMONDIR)/gen.h\
                   68623:        $(COMMONDIR)/path.h
                   68624: 
                   68625: OFILES=postmd.o\
                   68626:        $(COMMONDIR)/glob.o\
                   68627:        $(COMMONDIR)/misc.o\
                   68628:        $(COMMONDIR)/request.o\
                   68629:        $(COMMONDIR)/tempnam.o
                   68630: 
                   68631: all : postmd
                   68632: 
                   68633: install : all
                   68634:        @if [ ! -d "$(POSTBIN)" ]; then \
                   68635:            mkdir $(POSTBIN); \
                   68636:            chmod 755 $(POSTBIN); \
                   68637:            chgrp $(GROUP) $(POSTBIN); \
                   68638:            chown $(OWNER) $(POSTBIN); \
                   68639:        fi
                   68640:        @if [ ! -d "$(POSTLIB)" ]; then \
                   68641:            mkdir $(POSTLIB); \
                   68642:            chmod 755 $(POSTLIB); \
                   68643:            chgrp $(GROUP) $(POSTLIB); \
                   68644:            chown $(OWNER) $(POSTLIB); \
                   68645:        fi
                   68646:        cp postmd $(POSTBIN)/postmd
                   68647:        @chmod 755 $(POSTBIN)/postmd
                   68648:        @chgrp $(GROUP) $(POSTBIN)/postmd
                   68649:        @chown $(OWNER) $(POSTBIN)/postmd
                   68650:        cp postmd.ps $(POSTLIB)/postmd.ps
                   68651:        @chmod 644 $(POSTLIB)/postmd.ps
                   68652:        @chgrp $(GROUP) $(POSTLIB)/postmd.ps
                   68653:        @chown $(OWNER) $(POSTLIB)/postmd.ps
                   68654:        cp postmd.1 $(MAN1DIR)/postmd.1
                   68655:        @chmod 644 $(MAN1DIR)/postmd.1
                   68656:        @chgrp $(GROUP) $(MAN1DIR)/postmd.1
                   68657:        @chown $(OWNER) $(MAN1DIR)/postmd.1
                   68658: 
                   68659: clean :
                   68660:        rm -f *.o
                   68661: 
                   68662: clobber : clean
                   68663:        rm -f postmd
                   68664: 
                   68665: postmd : $(OFILES)
                   68666:        $(CC) $(CFLAGS) $(LDFLAGS) -o postmd $(OFILES) -lm
                   68667: 
                   68668: postmd.o : $(HFILES)
                   68669: 
                   68670: $(COMMONDIR)/glob.o\
                   68671: $(COMMONDIR)/misc.o\
                   68672: $(COMMONDIR)/request.o\
                   68673: $(COMMONDIR)/tempnam.o :
                   68674:        @cd $(COMMONDIR); $(MAKE) -f common.mk SYSTEM=$(SYSTEM) `basename $@`
                   68675: 
                   68676: changes :
                   68677:        @trap "" 1 2 3 15; \
                   68678:        sed \
                   68679:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
                   68680:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
                   68681:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
                   68682:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
                   68683:            -e "s'^MAN1DIR=.*'MAN1DIR=$(MAN1DIR)'" \
                   68684:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
                   68685:            -e "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" \
                   68686:        $(MAKEFILE) >XXX.mk; \
                   68687:        mv XXX.mk $(MAKEFILE); \
                   68688:        sed \
                   68689:            -e "s'^.ds dQ.*'.ds dQ $(POSTLIB)'" \
                   68690:        postmd.1 >XXX.1; \
                   68691:        mv XXX.1 postmd.1
                   68692: 
                   68693: 0707070014230006121006440057030057030000010112400522627503700003200000007404post.src/postmd/postmd.ps%
                   68694: % Version 3.3.2 prologue for matrix display files.
                   68695: %
                   68696: 
                   68697: /#copies 1 store
                   68698: /aspectratio 1 def
                   68699: /font /Helvetica def
                   68700: /formsperpage 1 def
                   68701: /landscape false def
                   68702: /magnification 1 def
                   68703: /margin 10 def
                   68704: /orientation 0 def
                   68705: /rotation 1 def
                   68706: /size 9 def
                   68707: /statspace 1.6 def
                   68708: /ticklength .06 def
                   68709: /tickspacing 10 def
                   68710: /xoffset 0 def
                   68711: /yoffset 0 def
                   68712: 
                   68713: /useclippath true def
                   68714: /pagebbox [0 0 612 792] def
                   68715: 
                   68716: /inch {72 mul} bind def
                   68717: /min {2 copy gt {exch} if pop} bind def
                   68718: 
                   68719: /show {show} bind def          % so later references don't bind
                   68720: /stringwidth {stringwidth} bind def
                   68721: 
                   68722: /setup {
                   68723:        counttomark 2 idiv {def} repeat pop
                   68724: 
                   68725:        landscape {/orientation 90 orientation add def} if
                   68726: 
                   68727:        pagedimensions
                   68728:        height width lt {
                   68729:                /statspace statspace height width div mul def
                   68730:                /size size height width div mul def
                   68731:                /ticklength ticklength height width div mul def
                   68732:        } if
                   68733:        /height height margin sub statspace inch sub ticklength inch sub size 6 mul sub def
                   68734:        /width width margin sub ticklength inch sub def
                   68735:        xcenter ycenter translate
                   68736:        orientation rotation mul rotate
                   68737:        xoffset inch yoffset inch translate
                   68738:        0 height 2 div height width min 2 div sub translate
                   68739:        0 statspace inch 2 div translate
                   68740:        magnification dup aspectratio mul scale
                   68741: 
                   68742:        0 setlinewidth
                   68743: } def
                   68744: 
                   68745: /pagedimensions {
                   68746:        useclippath {
                   68747:                /pagebbox [clippath pathbbox newpath] def
                   68748:        } if
                   68749:        pagebbox aload pop
                   68750:        4 -1 roll exch 4 1 roll 4 copy
                   68751:        landscape {4 2 roll} if
                   68752:        sub /width exch def
                   68753:        sub /height exch def
                   68754:        add 2 div /xcenter exch def
                   68755:        add 2 div /ycenter exch def
                   68756:        userdict /gotpagebbox true put
                   68757: } def
                   68758: 
                   68759: /pagesetup {/page exch def} bind def
                   68760: 
                   68761: /bitmap {
                   68762:        /scanlines exch def
                   68763:        /scanlength exch def
                   68764: 
                   68765:        /picstr scanlength string def
                   68766: 
                   68767:        gsave
                   68768:        height scanlines div width scanlength div min
                   68769:        /scaling exch def
                   68770:        scaling scaling scale
                   68771: 
                   68772:        scanlength neg 2 div scanlines neg 2 div translate
                   68773:        scanlength scanlines scale
                   68774:        getbitmap
                   68775:        grestore
                   68776: } bind def
                   68777: 
                   68778: /getbitmap {
                   68779:        scanlength scanlines 8 [scanlength 0 0 scanlines neg 0 scanlines] {
                   68780:                0 {
                   68781:                        currentfile token pop dup
                   68782:                        0 eq {pop pop exit} if
                   68783:                        /charcount exch def
                   68784:                        picstr 1 index charcount getinterval
                   68785:                        /repl exch def
                   68786:                        currentfile repl readhexstring pop pop
                   68787:                        charcount add
                   68788:                        currentfile token pop {
                   68789:                                picstr 1 index repl putinterval
                   68790:                                charcount add
                   68791:                        } repeat
                   68792:                } loop
                   68793:                picstr
                   68794:        } image
                   68795: } bind def
                   68796: 
                   68797: /labelmatrix {
                   68798:        /matrixlimits exch def
                   68799:        /matrixname exch def
                   68800: 
                   68801:        gsave
                   68802:        scaling scaling scale
                   68803:        font findfont size scaling div scalefont setfont
                   68804:        scanlength neg 2 div scanlines 2 div translate
                   68805: 
                   68806:        0 scanlines size 1.5 mul scaling div add neg moveto
                   68807:        matrixname show
                   68808: 
                   68809:        scanlength scanlines size 1.5 mul scaling div add neg moveto
                   68810:        matrixlimits stringwidth pop neg 0 rmoveto
                   68811:        matrixlimits show
                   68812: 
                   68813:        newpath
                   68814:        0 0 moveto
                   68815:        scanlength 0 rlineto
                   68816:        0 scanlines neg rlineto
                   68817:        scanlength neg 0 rlineto
                   68818:        closepath stroke
                   68819: 
                   68820:        scanlength tickspacing idiv 1 add tickspacing 0 ticks
                   68821:        scanlines tickspacing idiv 1 add 0 tickspacing neg ticks
                   68822:        grestore
                   68823: } bind def
                   68824: 
                   68825: /ticks {
                   68826:        /dy exch def
                   68827:        /dx exch def
                   68828: 
                   68829:        /tl ticklength inch scaling div def
                   68830:        newpath
                   68831:        0 0 moveto
                   68832:        {
                   68833:                gsave dx 0 eq {tl neg 0} {0 tl} ifelse rlineto stroke grestore
                   68834:                dx dy rmoveto
                   68835:        } repeat
                   68836: } bind def
                   68837: 
                   68838: /legend {
                   68839:        /regions exch def
                   68840:        /total exch def
                   68841: 
                   68842:        gsave
                   68843:        width height min 2 div neg dup size 2 mul sub translate
                   68844:        0 statspace inch neg translate
                   68845: 
                   68846:        gsave
                   68847:        regions {
                   68848:                gsave
                   68849:                total div statspace inch size 2 mul sub mul size 2 mul add
                   68850:                width height min regions div exch scale
                   68851:                1 1 8 [1 0 0 1 0 0] 5 -1 roll image
                   68852:                grestore
                   68853:                width height min regions div 0 translate
                   68854:        } repeat
                   68855:        grestore
                   68856: 
                   68857:        width height min size 1.5 mul neg translate
                   68858:        font findfont size scalefont setfont
                   68859:        dup dup add 1 add width height min exch div /interval exch def
                   68860:        {
                   68861:                interval neg 0 translate
                   68862:                interval 2 div neg 0 translate
                   68863:                dup stringwidth pop 2 div neg 0 moveto show
                   68864:                interval 2 div neg 0 translate
                   68865:        } repeat
                   68866:        grestore
                   68867: } bind def
                   68868: 
                   68869: /done {/lastpage where {pop lastpage} if} def
                   68870: 0707070014231310730407550057030057030000021027660522633077100002500000000000post.src/postreverse0707070014231307551006400057030057030000011031220522633077000004400000003131post.src/postreverse/postreverse.mkMAKE=/bin/make
                   68871: MAKEFILE=postreverse.mk
                   68872: 
                   68873: SYSTEM=V9
                   68874: VERSION=3.3.2
                   68875: 
                   68876: GROUP=bin
                   68877: OWNER=bin
                   68878: 
                   68879: MAN1DIR=/tmp
                   68880: POSTBIN=/usr/bin/postscript
                   68881: 
                   68882: COMMONDIR=../common
                   68883: 
                   68884: CFLGS=-O
                   68885: LDFLGS=-s
                   68886: 
                   68887: CFLAGS=$(CFLGS) -I$(COMMONDIR)
                   68888: LDFLAGS=$(LDFLGS)
                   68889: 
                   68890: HFILES=postreverse.h\
                   68891:        $(COMMONDIR)/comments.h\
                   68892:        $(COMMONDIR)/ext.h\
                   68893:        $(COMMONDIR)/gen.h\
                   68894:        $(COMMONDIR)/path.h
                   68895: 
                   68896: OFILES=postreverse.o\
                   68897:        $(COMMONDIR)/glob.o\
                   68898:        $(COMMONDIR)/misc.o\
                   68899:        $(COMMONDIR)/tempnam.o
                   68900: 
                   68901: all : postreverse
                   68902: 
                   68903: install : all
                   68904:        @if [ ! -d "$(POSTBIN)" ]; then \
                   68905:            mkdir $(POSTBIN); \
                   68906:            chmod 755 $(POSTBIN); \
                   68907:            chgrp $(GROUP) $(POSTBIN); \
                   68908:            chown $(OWNER) $(POSTBIN); \
                   68909:        fi
                   68910:        cp postreverse $(POSTBIN)/postreverse
                   68911:        @chmod 755 $(POSTBIN)/postreverse
                   68912:        @chgrp $(GROUP) $(POSTBIN)/postreverse
                   68913:        @chown $(OWNER) $(POSTBIN)/postreverse
                   68914:        cp postreverse.1 $(MAN1DIR)/postreverse.1
                   68915:        @chmod 644 $(MAN1DIR)/postreverse.1
                   68916:        @chgrp $(GROUP) $(MAN1DIR)/postreverse.1
                   68917:        @chown $(OWNER) $(MAN1DIR)/postreverse.1
                   68918: 
                   68919: clean :
                   68920:        rm -f *.o
                   68921: 
                   68922: clobber : clean
                   68923:        rm -f postreverse
                   68924: 
                   68925: postreverse : $(OFILES)
                   68926:        $(CC) $(CFLAGS) $(LDFLAGS) -o postreverse $(OFILES)
                   68927: 
                   68928: postreverse.o : $(HFILES)
                   68929: 
                   68930: $(COMMONDIR)/glob.o\
                   68931: $(COMMONDIR)/misc.o\
                   68932: $(COMMONDIR)/tempnam.o :
                   68933:        @cd $(COMMONDIR); $(MAKE) -f common.mk SYSTEM=$(SYSTEM) `basename $@`
                   68934: 
                   68935: changes :
                   68936:        @trap "" 1 2 3 15; \
                   68937:        sed \
                   68938:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
                   68939:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
                   68940:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
                   68941:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
                   68942:            -e "s'^MAN1DIR=.*'MAN1DIR=$(MAN1DIR)'" \
                   68943:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
                   68944:        $(MAKEFILE) >XXX.mk; \
                   68945:        mv XXX.mk $(MAKEFILE)
                   68946: 
                   68947: 0707070014231310751006440057030057030000011027670522627503700003400000000555post.src/postreverse/README
                   68948: A simple program that reverses the pages in PostScript files that
                   68949: conform to Adobe's Version 1.0 or Version 2.0 file structuring
                   68950: conventions.
                   68951: 
                   68952: postrevese also handles a small class of files that violate page
                   68953: independence (eg. output from dpost) and can be used with all the
                   68954: translators in this package. The output can be conforming even if
                   68955: the input file wasn't.
                   68956: 
                   68957: 0707070014231310761006440057030057030000011030420522627503700004300000000604post.src/postreverse/postreverse.h/*
                   68958:  *
                   68959:  * An array of type Pages is used to keep track of the starting and ending byte
                   68960:  * offsets for the pages we've been asked to print.
                   68961:  *
                   68962:  */
                   68963: 
                   68964: typedef struct {
                   68965:        long    start;                  /* page starts at this byte offset */
                   68966:        long    stop;                   /* and ends here */
                   68967:        int     empty;                  /* dummy page if TRUE */
                   68968: } Pages;
                   68969: 
                   68970: /*
                   68971:  *
                   68972:  * Some of the non-integer functions in postreverse.c.
                   68973:  *
                   68974:  */
                   68975: 
                   68976: char   *copystdin();
                   68977: 
                   68978: 0707070014231310771006440057030057030000011030600522627504000004300000040407post.src/postreverse/postreverse.c/*
                   68979:  *
                   68980:  * postreverse - reverse the page order in certain PostScript files.
                   68981:  *
                   68982:  * Page reversal relies on being able to locate sections of a document using file
                   68983:  * structuring comments defined by Adobe (ie. the 1.0 and now 2.0 conventions) and
                   68984:  * a few I've added. Among other things a minimally conforming document, according
                   68985:  * to the 1.0 conventions,
                   68986:  *
                   68987:  *     1) Marks the end of the prologue with an %%EndProlog comment.
                   68988:  *
                   68989:  *     2) Starts each page with a %%Page: comment.
                   68990:  *
                   68991:  *     3) Marks the end of all the pages %%Trailer comment.
                   68992:  *
                   68993:  *     4) Obeys page independence (ie. pages can be arbitrarily rearranged).
                   68994:  *
                   68995:  * The most important change (at least for this program) that Adobe made in going
                   68996:  * from the 1.0 to the 2.0 structuring conventions was in the prologue. They now
                   68997:  * say the prologue should only define things, and the global initialization that
                   68998:  * was in the prologue (1.0 conventions) should now come after the %%EndProlog
                   68999:  * comment but before the first %%Page: comment and be bracketed by %%BeginSetup
                   69000:  * and %%EndSetup comments. So a document that conforms to Adobe's 2.0 conventions,
                   69001:  *
                   69002:  *     1) Marks the end of the prologue (only definitions) with %%EndProlog.
                   69003:  *
                   69004:  *     2) Brackets global initialization with %%BeginSetup and %%EndSetup comments
                   69005:  *        which come after the prologue but before the first %Page: comment.
                   69006:  *
                   69007:  *     3) Starts each page with a %%Page: comment.
                   69008:  *
                   69009:  *     4) Marks the end of all the pages with a %%Trailer comment.
                   69010:  *
                   69011:  *     5) Obeys page independence.
                   69012:  *
                   69013:  * postreverse can handle documents that follow the 1.0 or 2.0 conventions, but has
                   69014:  * also been extended slightly so it works properly with the translators (primarily
                   69015:  * dpost) supplied with this package. The page independence requirement has been
                   69016:  * relaxed some. In particular definitions exported to the global environment from
                   69017:  * within a page should be bracketed by %%BeginGlobal and %%EndGlobal comments.
                   69018:  * postreverse pulls them out of each page and inserts them in the setup section
                   69019:  * of the document, immediately before it writes the %%EndProlog (for version 1.0)
                   69020:  * or %%EndSetup (for version 2.0) comments.
                   69021:  *
                   69022:  * In addition postreverse accepts documents that choose to mark the end of each
                   69023:  * page with a %%EndPage: comment, which from a translator's point of view is often
                   69024:  * a more natural approach. Both page boundary comments (ie. Page: and %%EndPage:)
                   69025:  * are also accepted, but be warned that everything between consecutive %%EndPage:
                   69026:  * and %%Page: comments will be ignored.
                   69027:  *
                   69028:  * So a document that will reverse properly with postreverse,
                   69029:  *
                   69030:  *     1) Marks the end of the prologue with %%EndProlog.
                   69031:  *
                   69032:  *     2) May have a %%BeginSetup/%%EndSetup comment pair before the first %%Page:
                   69033:  *        comment that brackets any global initialization.
                   69034:  *
                   69035:  *     3) Marks the start of each page with a %%Page: comment, or the end of each
                   69036:  *        page with a %%EndPage: comment. Both page boundary comments are allowed.
                   69037:  *
                   69038:  *     4) Marks the end of all the pages with a %%Trailer comment.
                   69039:  *
                   69040:  *     5) Obeys page independence or violates it to a rather limited extent and
                   69041:  *        marks the violations with %%BeginGlobal and %%EndGlobal comments.
                   69042:  *
                   69043:  * If no file arguments are given postreverse copies stdin to a temporary file and
                   69044:  * then processes that file. That means the input is read three times (rather than
                   69045:  * two) whenever we handle stdin. That's expensive, and shouldn't be too difficult
                   69046:  * to fix, but I haven't gotten around to it yet.
                   69047:  *
                   69048:  */
                   69049: 
                   69050: #include <stdio.h>
                   69051: #include <signal.h>
                   69052: #include <fcntl.h>
                   69053: 
                   69054: #include "comments.h"                  /* PostScript file structuring comments */
                   69055: #include "gen.h"                       /* general purpose definitions */
                   69056: #include "path.h"                      /* for temporary directory */
                   69057: #include "ext.h"                       /* external variable declarations */
                   69058: #include "postreverse.h"               /* a few special definitions */
                   69059: 
                   69060: int    page = 1;                       /* current page number */
                   69061: int    forms = 1;                      /* forms per page in the input file */
                   69062: 
                   69063: char   *temp_dir = TEMPDIR;            /* temp directory for copying stdin */
                   69064: 
                   69065: Pages  pages[1000];                    /* byte offsets for all pages */
                   69066: int    next_page = 0;                  /* next page goes here */
                   69067: long   start;                          /* starting offset for next page */
                   69068: long   endoff = -1;                    /* offset where TRAILER was found */
                   69069: int    noreverse = FALSE;              /* don't reverse pages if TRUE */
                   69070: char   *endprolog = ENDPROLOG;         /* occasionally changed to ENDSETUP */
                   69071: 
                   69072: double version = 3.3;                  /* of the input file */
                   69073: int    ignoreversion = FALSE;          /* ignore possible forms.ps problems */
                   69074: 
                   69075: char   buf[2048];                      /* line buffer for input file */
                   69076: 
                   69077: FILE   *fp_in;                         /* stuff is read from this file */
                   69078: FILE   *fp_out = stdout;               /* and written here */
                   69079: 
                   69080: /*****************************************************************************/
                   69081: 
                   69082: main(agc, agv)
                   69083: 
                   69084:     int                agc;
                   69085:     char       *agv[];
                   69086: 
                   69087: {
                   69088: 
                   69089: /*
                   69090:  *
                   69091:  * A simple program that reverses the pages in specially formatted PostScript
                   69092:  * files. Will work with all the translators in this package, and should handle
                   69093:  * any document that conforms to Adobe's version 1.0 or 2.0 file structuring
                   69094:  * conventions. Only one input file is allowed, and it can either be a named (on
                   69095:  * the command line) file or stdin.
                   69096:  *
                   69097:  */
                   69098: 
                   69099:     argc = agc;                                /* other routines may want them */
                   69100:     argv = agv;
                   69101: 
                   69102:     prog_name = argv[0];               /* just for error messages */
                   69103: 
                   69104:     init_signals();                    /* sets up interrupt handling */
                   69105:     options();                         /* first get command line options */
                   69106:     arguments();                       /* then process non-option arguments */
                   69107:     done();                            /* and clean things up */
                   69108: 
                   69109:     exit(x_stat);                      /* not much could be wrong */
                   69110: 
                   69111: }   /* End of main */
                   69112: 
                   69113: /*****************************************************************************/
                   69114: 
                   69115: init_signals()
                   69116: 
                   69117: {
                   69118: 
                   69119: /*
                   69120:  *
                   69121:  * Makes sure we handle interrupts properly.
                   69122:  *
                   69123:  */
                   69124: 
                   69125:     if ( signal(SIGINT, interrupt) == SIG_IGN )  {
                   69126:        signal(SIGINT, SIG_IGN);
                   69127:        signal(SIGQUIT, SIG_IGN);
                   69128:        signal(SIGHUP, SIG_IGN);
                   69129:     } else {
                   69130:        signal(SIGHUP, interrupt);
                   69131:        signal(SIGQUIT, interrupt);
                   69132:     }   /* End else */
                   69133: 
                   69134:     signal(SIGTERM, interrupt);
                   69135: 
                   69136: }   /* End of init_signals */
                   69137: 
                   69138: /*****************************************************************************/
                   69139: 
                   69140: options()
                   69141: 
                   69142: {
                   69143: 
                   69144:     int                ch;                     /* return value from getopt() */
                   69145:     char       *optnames = "n:o:rvT:DI";
                   69146: 
                   69147:     extern char        *optarg;                /* used by getopt() */
                   69148:     extern int optind;
                   69149: 
                   69150: /*
                   69151:  *
                   69152:  * Reads and processes the command line options. The -r option (ie. the one that
                   69153:  * turns page reversal off) is really only useful if you want to take dpost output
                   69154:  * and produce a page independent output file. In that case global definitions
                   69155:  * made within pages and bracketed by %%BeginGlobal/%%EndGlobal comments will be
                   69156:  * moved into the prologue or setup section of the document.
                   69157:  *
                   69158:  */
                   69159: 
                   69160:     while ( (ch = getopt(argc, argv, optnames)) != EOF )  {
                   69161:        switch ( ch )  {
                   69162:            case 'n':                   /* forms per page */
                   69163:                    if ( (forms = atoi(optarg)) <= 0 )
                   69164:                        error(FATAL, "illegal forms request %s", optarg);
                   69165:                    break;
                   69166: 
                   69167:            case 'o':                   /* output page list */
                   69168:                    out_list(optarg);
                   69169:                    break;
                   69170: 
                   69171:            case 'r':                   /* don't reverse the pages */
                   69172:                    noreverse = TRUE;
                   69173:                    break;
                   69174: 
                   69175:            case 'v':                   /* ignore possible forms.ps problems */
                   69176:                    ignoreversion = TRUE;
                   69177:                    break;
                   69178: 
                   69179:            case 'T':                   /* temporary file directory */
                   69180:                    temp_dir = optarg;
                   69181:                    break;
                   69182: 
                   69183:            case 'D':                   /* debug flag */
                   69184:                    debug = ON;
                   69185:                    break;
                   69186: 
                   69187:            case 'I':                   /* ignore FATAL errors */
                   69188:                    ignore = ON;
                   69189:                    break;
                   69190: 
                   69191:            case '?':                   /* don't understand the option */
                   69192:                    error(FATAL, "");
                   69193:                    break;
                   69194: 
                   69195:            default:                    /* don't know what to do for ch */
                   69196:                    error(FATAL, "missing case for option %c\n", ch);
                   69197:                    break;
                   69198:        }   /* End switch */
                   69199:     }   /* End while */
                   69200: 
                   69201:     argc -= optind;                    /* get ready for non-option args */
                   69202:     argv += optind;
                   69203: 
                   69204: }   /* End of options */
                   69205: 
                   69206: /*****************************************************************************/
                   69207: 
                   69208: arguments()
                   69209: 
                   69210: {
                   69211: 
                   69212:     char       *name;                  /* name of the input file */
                   69213: 
                   69214: /*
                   69215:  *
                   69216:  * postreverse only handles one input file at a time, so if there's more than one
                   69217:  * argument left when we get here we'll quit. If none remain we copy stdin to a
                   69218:  * temporary file and process that file.
                   69219:  *
                   69220:  */
                   69221: 
                   69222:     if ( argc > 1 )                    /* can't handle more than one file */
                   69223:        error(FATAL, "too many arguments");
                   69224: 
                   69225:     if ( argc == 0 )                   /* copy stdin to a temporary file */
                   69226:        name = copystdin();
                   69227:     else name = *argv;
                   69228: 
                   69229:     if ( (fp_in = fopen(name, "r")) == NULL )
                   69230:        error(FATAL, "can't open %s", name);
                   69231: 
                   69232:     reverse();
                   69233: 
                   69234: }   /* End of arguments */
                   69235: 
                   69236: /*****************************************************************************/
                   69237: 
                   69238: done()
                   69239: 
                   69240: {
                   69241: 
                   69242: /*
                   69243:  *
                   69244:  * Cleans things up after we've finished reversing the pages in the input file.
                   69245:  * All that's really left to do is remove the temp file, provided we used one.
                   69246:  *
                   69247:  */
                   69248: 
                   69249:     if ( temp_file != NULL )
                   69250:        unlink(temp_file);
                   69251: 
                   69252: }   /* End of done */
                   69253: 
                   69254: /*****************************************************************************/
                   69255: 
                   69256: char *copystdin()
                   69257: 
                   69258: {
                   69259: 
                   69260:     int                fd_out;                 /* for the temporary file */
                   69261:     int                fd_in;                  /* for stdin */
                   69262:     int                count;                  /* number of bytes put in buf[] */
                   69263: 
                   69264: /*
                   69265:  *
                   69266:  * Copies stdin to a temporary file and returns the pathname of that file to the
                   69267:  * caller. It's an expensive way of doing things, because it means we end up
                   69268:  * reading the input file three times - rather than just twice. Could probably be
                   69269:  * fixed by creating the temporary file on the fly as we read the file the first
                   69270:  * time.
                   69271:  *
                   69272:  */
                   69273: 
                   69274:     if ( (temp_file = tempnam(temp_dir, "post")) == NULL )
                   69275:        error(FATAL, "can't generate temp file name");
                   69276: 
                   69277:     if ( (fd_out = creat(temp_file, 0660)) == -1 )
                   69278:        error(FATAL, "can't open %s", temp_file);
                   69279: 
                   69280:     fd_in = fileno(stdin);
                   69281: 
                   69282:     while ( (count = read(fd_in, buf, sizeof(buf))) > 0 )
                   69283:        if ( write(fd_out, buf, count) != count )
                   69284:            error(FATAL, "error writing to %s", temp_file);
                   69285: 
                   69286:     close(fd_out);
                   69287: 
                   69288:     return(temp_file);
                   69289: 
                   69290: }   /* End of copystdin */
                   69291: 
                   69292: /*****************************************************************************/
                   69293: 
                   69294: reverse()
                   69295: 
                   69296: {
                   69297: 
                   69298: /*
                   69299:  *
                   69300:  * Begins by looking for the ENDPROLOG comment in the input file. Everything up to
                   69301:  * that comment is copied to the output file. If the comment isn't found the entire
                   69302:  * input file is copied and moreprolog() returns FALSE. Otherwise readpages() reads
                   69303:  * the rest of the input file and remembers (in pages[]) where each page starts and
                   69304:  * ends. In addition everything bracketed by %%BeginGlobal and %%EndGlobal comments
                   69305:  * is immediately added to the new prologue (or setup section) and ends up being
                   69306:  * removed from the individual pages. When readpages() finds the TRAILER comment
                   69307:  * or gets to the end of the input file we go back to the pages[] array and use
                   69308:  * the saved offsets to write the pages out in reverse order. Finally everything
                   69309:  * from the TRAILER comment to the end of the input file is copied to the output
                   69310:  * file.
                   69311:  *
                   69312:  */
                   69313: 
                   69314:     if ( moreprolog(ENDPROLOG) == TRUE )  {
                   69315:        readpages();
                   69316:        writepages();
                   69317:        trailer();
                   69318:     }  /* End if */
                   69319: 
                   69320: }   /* End of reverse */
                   69321: 
                   69322: /*****************************************************************************/
                   69323: 
                   69324: moreprolog(str)
                   69325: 
                   69326:     char       *str;                   /* copy everything up to this string */
                   69327: 
                   69328: {
                   69329: 
                   69330:     int                len;                    /* length of FORMSPERPAGE string */
                   69331:     int                vlen;                   /* length of VERSION string */
                   69332: 
                   69333: /*
                   69334:  *
                   69335:  * Looks for string *str at the start of a line and copies everything up to that
                   69336:  * string to the output file. If *str isn't found the entire input file will end
                   69337:  * up being copied to the output file and FALSE will be returned to the caller.
                   69338:  * The first call (made from reverse()) looks for ENDPROLOG. Any other call comes
                   69339:  * from readpages() and will be looking for the ENDSETUP comment.
                   69340:  * 
                   69341:  */
                   69342: 
                   69343:     len = strlen(FORMSPERPAGE);
                   69344:     vlen = strlen(VERSION);
                   69345: 
                   69346:     while ( fgets(buf, sizeof(buf), fp_in) != NULL )  {
                   69347:        if ( strcmp(buf, str) == 0 )
                   69348:            return(TRUE);
                   69349:        else if ( strncmp(buf, FORMSPERPAGE, len) == 0 )
                   69350:            forms = atoi(&buf[len+1]);
                   69351:        else if ( strncmp(buf, VERSION, vlen) == 0 )
                   69352:            version = atof(&buf[vlen+1]);
                   69353:        fprintf(fp_out, "%s", buf);
                   69354:     }  /* End while */
                   69355: 
                   69356:     return(FALSE);
                   69357: 
                   69358: }   /* End of moreprolog */
                   69359: 
                   69360: /*****************************************************************************/
                   69361: 
                   69362: readpages()
                   69363: 
                   69364: {
                   69365: 
                   69366:     int                endpagelen;             /* length of ENDPAGE */
                   69367:     int                pagelen;                /* and PAGE strings */
                   69368:     int                sawendpage = TRUE;      /* ENDPAGE equivalent marked last page */
                   69369:     int                gotpage = FALSE;        /* TRUE disables BEGINSETUP stuff */
                   69370: 
                   69371: /*
                   69372:  *
                   69373:  * Records starting and ending positions of the requested pages (usually all of
                   69374:  * them), puts global definitions in the prologue, and remembers where the TRAILER
                   69375:  * was found.
                   69376:  *
                   69377:  * Page boundaries are marked by the strings PAGE, ENDPAGE, or perhaps both.
                   69378:  * Application programs will normally find one or the other more convenient, so
                   69379:  * in most cases only one kind of page delimiter will be found in a particular
                   69380:  * document.
                   69381:  *
                   69382:  */
                   69383: 
                   69384:     pages[0].start = ftell(fp_in);     /* first page starts after ENDPROLOG */
                   69385:     endprolog = ENDPROLOG;
                   69386: 
                   69387:     endpagelen = strlen(ENDPAGE);
                   69388:     pagelen = strlen(PAGE);
                   69389: 
                   69390:     while ( fgets(buf, sizeof(buf), fp_in) != NULL )
                   69391:        if ( buf[0] != '%' )
                   69392:            continue;
                   69393:        else if ( strncmp(buf, ENDPAGE, endpagelen) == 0 )  {
                   69394:            if ( in_olist(page++) == ON )  {
                   69395:                pages[next_page].empty = FALSE;
                   69396:                pages[next_page++].stop = ftell(fp_in);
                   69397:            }   /* End if */
                   69398:            pages[next_page].start = ftell(fp_in);
                   69399:            sawendpage = TRUE;
                   69400:            gotpage = TRUE;
                   69401:        } else if ( strncmp(buf, PAGE, pagelen) == 0 )  {
                   69402:            if ( sawendpage == FALSE && in_olist(page++) == ON )  {
                   69403:                pages[next_page].empty = FALSE;
                   69404:                pages[next_page++].stop = ftell(fp_in) - strlen(buf);
                   69405:            }   /* End if */
                   69406:            pages[next_page].start = ftell(fp_in) - strlen(buf);
                   69407:            sawendpage = FALSE;
                   69408:            gotpage = TRUE;
                   69409:        } else if ( gotpage == FALSE && strcmp(buf, BEGINSETUP) == 0 )  {
                   69410:            fprintf(fp_out, "%s", endprolog);
                   69411:            fprintf(fp_out, "%s", BEGINSETUP);
                   69412:            moreprolog(ENDSETUP);
                   69413:            endprolog = ENDSETUP;
                   69414:        } else if ( strcmp(buf, BEGINGLOBAL) == 0 )  {
                   69415:            moreprolog(ENDGLOBAL);
                   69416:        } else if ( strcmp(buf, TRAILER) == 0 )  {
                   69417:            if ( sawendpage == FALSE )
                   69418:                pages[next_page++].stop = ftell(fp_in) - strlen(buf);
                   69419:            endoff = ftell(fp_in);
                   69420:            break;
                   69421:        }   /* End if */
                   69422: 
                   69423: }   /* End of readpages */
                   69424: 
                   69425: /*****************************************************************************/
                   69426: 
                   69427: writepages()
                   69428: 
                   69429: {
                   69430: 
                   69431:     int                i, j, k;                /* loop indices */
                   69432: 
                   69433: /*
                   69434:  *
                   69435:  * Goes through the pages[] array, usually from the bottom up, and writes out all
                   69436:  * the pages. Documents that print more than one form per page cause things to get
                   69437:  * a little more complicated. Each physical page has to have its subpages printed
                   69438:  * in the correct order, and we have to build a few dummy subpages for the last
                   69439:  * (and now first) sheet of paper, otherwise things will only occasionally work.
                   69440:  *
                   69441:  */
                   69442: 
                   69443:     fprintf(fp_out, "%s", endprolog);
                   69444: 
                   69445:     if ( noreverse == FALSE )          /* fill out the first page */
                   69446:        for ( i = (forms - next_page % forms) % forms; i > 0; i--, next_page++ )
                   69447:            pages[next_page].empty = TRUE;
                   69448:     else forms = next_page;            /* turns reversal off in next loop */
                   69449: 
                   69450:     for ( i = next_page - forms; i >= 0; i -= forms )
                   69451:        for ( j = i, k = 0; k < forms; j++, k++ )
                   69452:            if ( pages[j].empty == TRUE ) {
                   69453:                if ( ignoreversion == TRUE || version > 3.1 ) {
                   69454:                    fprintf(fp_out, "%s 0 0\n", PAGE);
                   69455:                    fprintf(fp_out, "/saveobj save def\n");
                   69456:                    fprintf(fp_out, "showpage\n");
                   69457:                    fprintf(fp_out, "saveobj restore\n");
                   69458:                    fprintf(fp_out, "%s 0 0\n", ENDPAGE);
                   69459:                } else {
                   69460:                    fprintf(fp_out, "%s 0 0\n", PAGE);
                   69461:                    fprintf(fp_out, "save showpage restore\n");
                   69462:                    fprintf(fp_out, "%s 0 0\n", ENDPAGE);
                   69463:                }   /* End else */
                   69464:            } else copypage(pages[j].start, pages[j].stop);
                   69465: 
                   69466: }   /* End of writepages */
                   69467: 
                   69468: /*****************************************************************************/
                   69469: 
                   69470: copypage(start, stop)
                   69471: 
                   69472:     long       start;                  /* starting from this offset */
                   69473:     long       stop;                   /* and ending here */
                   69474: 
                   69475: {
                   69476: 
                   69477: /*
                   69478:  *
                   69479:  * Copies the page beginning at offset start and ending at stop to the output
                   69480:  * file. Global definitions are skipped since they've already been added to the
                   69481:  * prologue.
                   69482:  *
                   69483:  */
                   69484: 
                   69485:     fseek(fp_in, start, 0);
                   69486: 
                   69487:     while ( ftell(fp_in) < stop && fgets(buf, sizeof(buf), fp_in) != NULL )
                   69488:        if ( buf[0] == '%' && strcmp(buf, BEGINGLOBAL) == 0 )
                   69489:            while ( fgets(buf, sizeof(buf), fp_in) != NULL && strcmp(buf, ENDGLOBAL) != 0 ) ;
                   69490:        else fprintf(fp_out, "%s", buf);
                   69491: 
                   69492: }   /* End of copypage */
                   69493: 
                   69494: /*****************************************************************************/
                   69495: 
                   69496: trailer()
                   69497: 
                   69498: {
                   69499: 
                   69500: /*
                   69501:  *
                   69502:  * Makes sure everything from the TRAILER string to EOF is copied to the output
                   69503:  * file.
                   69504:  *
                   69505:  */
                   69506: 
                   69507:     if ( endoff > 0 )  {
                   69508:        fprintf(fp_out, "%s", TRAILER);
                   69509:        fseek(fp_in, endoff, 0);
                   69510:        while ( fgets(buf, sizeof(buf), fp_in) != NULL )
                   69511:            fprintf(fp_out, "%s", buf);
                   69512:     }  /* End if */
                   69513: 
                   69514: }   /* End of trailer */
                   69515: 
                   69516: /*****************************************************************************/
                   69517: 
                   69518: 0707070014231311001006440057030057030000011030440522627504000004300000004523post.src/postreverse/postreverse.1.TH POSTREVERSE 1
                   69519: .SH NAME
                   69520: .B postreverse
                   69521: \- reverse the page order in a PostScript file
                   69522: .SH SYNOPSIS
                   69523: \*(mBpostreverse\f1
                   69524: .OP "" options []
                   69525: .OP "" file []
                   69526: .SH DESCRIPTION
                   69527: .B postreverse
                   69528: reverses the page order in files that conform to Adobe's
                   69529: Version 1.0 or Version 2.0 PostScript file structuring conventions,
                   69530: and writes the results on the standard output.
                   69531: Only one input
                   69532: .I file
                   69533: is allowed and if no
                   69534: .I file
                   69535: is specified, the standard input is read.
                   69536: The following
                   69537: .I options
                   69538: are understood:
                   69539: .TP  0.75i
                   69540: .OP \-o list
                   69541: Select pages whose numbers are given in the comma-separated
                   69542: .IR list .
                   69543: The list contains single numbers
                   69544: .I N
                   69545: and ranges
                   69546: .IR N1\-\|N2 .
                   69547: A missing
                   69548: .I N1
                   69549: means the lowest numbered page, a missing
                   69550: .I N2
                   69551: means the highest.
                   69552: .TP 
                   69553: .OP \-r
                   69554: Do not reverse the pages in
                   69555: .IR file .
                   69556: .TP 
                   69557: .OP \-T dir
                   69558: Use
                   69559: .I dir
                   69560: as the temporary file directory when
                   69561: reading from the standard input.
                   69562: By default
                   69563: .I dir
                   69564: is set to
                   69565: .MR /tmp .
                   69566: .PP
                   69567: .B postreverse
                   69568: can handle a limited class of files
                   69569: that violate page independence,
                   69570: provided all global definitions are bracketed by
                   69571: .MW %%BeginGlobal
                   69572: and
                   69573: .MW %%EndGlobal
                   69574: comments.
                   69575: In addition, files that mark the end of each page with
                   69576: .MW "%%EndPage:\ label\ ordinal"
                   69577: comments will also reverse properly, provided the prologue and
                   69578: trailer sections can be located.
                   69579: If
                   69580: .B postreverse
                   69581: fails to find an
                   69582: .MW %%EndProlog
                   69583: or
                   69584: .MW %%EndSetup
                   69585: comment the entire
                   69586: .I file
                   69587: is copied, unmodified, to the standard output.
                   69588: .PP
                   69589: Since global definitions are pulled out of individual
                   69590: pages and put in the prologue, the output file can be
                   69591: minimally conforming, even if the input
                   69592: .I file
                   69593: was not.
                   69594: .SH EXAMPLES
                   69595: Select pages 1 to 100 from
                   69596: .I file
                   69597: and reverse the pages:
                   69598: .EX
                   69599: postreverse -o1-100 \f2file
                   69600: .EE
                   69601: Print four logical pages on each physical page
                   69602: and reverse all the pages:
                   69603: .EX
                   69604: postprint -n4 \f2file\fP | postreverse
                   69605: .EE
                   69606: Produce a minimally conforming file from output
                   69607: generated by dpost without reversing the pages:
                   69608: .EX
                   69609: dpost \f2file\fP | postreverse -r
                   69610: .EE
                   69611: .SH DIAGNOSTICS
                   69612: A 0 exit status is returned if
                   69613: .I file
                   69614: was successfully processed.
                   69615: .SH BUGS
                   69616: No attempt has been made to deal with redefinitions of global
                   69617: variables or procedures.
                   69618: If standard input is used, the input
                   69619: .I file
                   69620: will be read three times before being reversed.
                   69621: .SH SEE ALSO
                   69622: .BR dpost (1),
                   69623: .BR postdaisy(1),
                   69624: .BR postdmd(1),
                   69625: .BR postio(1),
                   69626: .BR postmd(1),
                   69627: .BR postprint(1),
                   69628: .BR posttek(1),
                   69629: .BR psencoding (1)
                   69630: 0707070014230550050407550057030057030000021527470522633077300002100000000000post.src/posttek0707070014230547611006400057030057030000011527400522633077200003400000003736post.src/posttek/posttek.mkMAKE=/bin/make
                   69631: MAKEFILE=posttek.mk
                   69632: 
                   69633: SYSTEM=V9
                   69634: VERSION=3.3.2
                   69635: 
                   69636: GROUP=bin
                   69637: OWNER=bin
                   69638: 
                   69639: MAN1DIR=/tmp
                   69640: POSTBIN=/usr/bin/postscript
                   69641: POSTLIB=/usr/lib/postscript
                   69642: 
                   69643: COMMONDIR=../common
                   69644: 
                   69645: CFLGS=-O
                   69646: LDFLGS=-s
                   69647: 
                   69648: CFLAGS=$(CFLGS) -I$(COMMONDIR)
                   69649: LDFLAGS=$(LDFLGS)
                   69650: 
                   69651: HFILES=posttek.h\
                   69652:        $(COMMONDIR)/comments.h\
                   69653:        $(COMMONDIR)/ext.h\
                   69654:        $(COMMONDIR)/gen.h\
                   69655:        $(COMMONDIR)/path.h
                   69656: 
                   69657: OFILES=posttek.o\
                   69658:        $(COMMONDIR)/glob.o\
                   69659:        $(COMMONDIR)/misc.o\
                   69660:        $(COMMONDIR)/request.o
                   69661: 
                   69662: all : posttek
                   69663: 
                   69664: install : all
                   69665:        @if [ ! -d "$(POSTBIN)" ]; then \
                   69666:            mkdir $(POSTBIN); \
                   69667:            chmod 755 $(POSTBIN); \
                   69668:            chgrp $(GROUP) $(POSTBIN); \
                   69669:            chown $(OWNER) $(POSTBIN); \
                   69670:        fi
                   69671:        @if [ ! -d "$(POSTLIB)" ]; then \
                   69672:            mkdir $(POSTLIB); \
                   69673:            chmod 755 $(POSTLIB); \
                   69674:            chgrp $(GROUP) $(POSTLIB); \
                   69675:            chown $(OWNER) $(POSTLIB); \
                   69676:        fi
                   69677:        cp posttek $(POSTBIN)/posttek
                   69678:        @chmod 755 $(POSTBIN)/posttek
                   69679:        @chgrp $(GROUP) $(POSTBIN)/posttek
                   69680:        @chown $(OWNER) $(POSTBIN)/posttek
                   69681:        cp posttek.ps $(POSTLIB)/posttek.ps
                   69682:        @chmod 644 $(POSTLIB)/posttek.ps
                   69683:        @chgrp $(GROUP) $(POSTLIB)/posttek.ps
                   69684:        @chown $(OWNER) $(POSTLIB)/posttek.ps
                   69685:        cp posttek.1 $(MAN1DIR)/posttek.1
                   69686:        @chmod 644 $(MAN1DIR)/posttek.1
                   69687:        @chgrp $(GROUP) $(MAN1DIR)/posttek.1
                   69688:        @chown $(OWNER) $(MAN1DIR)/posttek.1
                   69689: 
                   69690: clean :
                   69691:        rm -f *.o
                   69692: 
                   69693: clobber : clean
                   69694:        rm -f posttek
                   69695: 
                   69696: posttek : $(OFILES)
                   69697:        $(CC) $(CFLAGS) $(LDFLAGS) -o posttek $(OFILES)
                   69698: 
                   69699: posttek.o : $(HFILES)
                   69700: 
                   69701: $(COMMONDIR)/glob.o\
                   69702: $(COMMONDIR)/misc.o\
                   69703: $(COMMONDIR)/request.o :
                   69704:        @cd $(COMMONDIR); $(MAKE) -f common.mk `basename $@`
                   69705: 
                   69706: changes :
                   69707:        @trap "" 1 2 3 15; \
                   69708:        sed \
                   69709:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
                   69710:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
                   69711:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
                   69712:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
                   69713:            -e "s'^MAN1DIR=.*'MAN1DIR=$(MAN1DIR)'" \
                   69714:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
                   69715:            -e "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" \
                   69716:        $(MAKEFILE) >XXX.mk; \
                   69717:        mv XXX.mk $(MAKEFILE); \
                   69718:        sed \
                   69719:            -e "s'^.ds dQ.*'.ds dQ $(POSTLIB)'" \
                   69720:        posttek.1 >XXX.1; \
                   69721:        mv XXX.1 posttek.1
                   69722: 
                   69723: 0707070014230550071006440057030057030000011527770522627504000003000000000153post.src/posttek/README
                   69724: Tektronix 4014 to PostScript translator. Much of the code was
                   69725: borrowed from the 5620 Tektronix emulator.
                   69726: 
                   69727: 0707070014230550101006440057030057030000011527620522627504000003300000007416post.src/posttek/posttek.h/*
                   69728:  *
                   69729:  * Tektronix 4014 control codes.
                   69730:  *
                   69731:  */
                   69732: 
                   69733: #define NUL '\000'
                   69734: #define SOH '\001'
                   69735: #define STX '\002'
                   69736: #define ETX '\003'
                   69737: #define EOT '\004'
                   69738: #define ENQ '\005'
                   69739: #define ACK '\006'
                   69740: #define BEL '\007'
                   69741: #define BS  '\010'
                   69742: #define HT  '\011'
                   69743: #define NL  '\012'
                   69744: #define VT  '\013'
                   69745: #define FF  '\014'
                   69746: #define CR  '\015'
                   69747: #define SO  '\016'
                   69748: #define SI  '\017'
                   69749: #define DLE '\020'
                   69750: #define DC1 '\021'
                   69751: #define DC2 '\022'
                   69752: #define DC3 '\023'
                   69753: #define DC4 '\024'
                   69754: #define NAK '\025'
                   69755: #define SYN '\026'
                   69756: #define ETB '\027'
                   69757: #define CAN '\030'
                   69758: #define EM  '\031'
                   69759: #define SUB '\032'
                   69760: #define ESC '\033'
                   69761: #define FS  '\034'
                   69762: #define GS  '\035'
                   69763: #define RS  '\036'
                   69764: #define US  '\037'
                   69765: #define DEL '\177'
                   69766: 
                   69767: /*
                   69768:  *
                   69769:  * A few definitions used to classify the different tektronix states. OUTMODED
                   69770:  * is returned by control() and esc(), and typically means the state has changed.
                   69771:  *
                   69772:  */
                   69773: 
                   69774: #define OUTMODED       -1
                   69775: #define ALPHA          0
                   69776: #define GIN            1
                   69777: #define GRAPH          2
                   69778: #define POINT          3
                   69779: #define SPECIALPOINT   4
                   69780: #define INCREMENTAL    5
                   69781: #define RESET          6
                   69782: #define EXIT           7
                   69783: 
                   69784: /*
                   69785:  *
                   69786:  * The pen state, either UP or DOWN, controls whether vectors are drawn.
                   69787:  *
                   69788:  */
                   69789: 
                   69790: #define UP             0
                   69791: #define DOWN           1
                   69792: 
                   69793: /*
                   69794:  *
                   69795:  * Coordinates of the upper right corner of the screen - almost the real screen
                   69796:  * dimensions.
                   69797:  *
                   69798:  */
                   69799: 
                   69800: #define TEKXMAX                4096
                   69801: #define TEKYMAX                3120
                   69802: 
                   69803: /*
                   69804:  *
                   69805:  * The size of the spot in SPECIALPOINT mode is controlled by a non-linear
                   69806:  * function that has a domain that consists of the integers from 040 to 0175.
                   69807:  * The next definition is used to initialize the special point mode intensity
                   69808:  * array that implements the function. Data came from table F-6 in the tektronix
                   69809:  * 4014 manual.
                   69810:  *
                   69811:  */
                   69812: 
                   69813: #define INTENSITY                                                      \
                   69814:                                                                        \
                   69815:        {                                                               \
                   69816:            14, 16, 17, 19, 20, 22, 23, 25,                             \
                   69817:            28, 31, 34, 38, 41, 44, 47, 50,                             \
                   69818:            56, 62, 69, 75, 81, 88, 94,100,                             \
                   69819:            56, 62, 69, 75, 81, 88, 94,100,                             \
                   69820:             0,  1,  1,  1,  1,  1,  1,  2,                             \
                   69821:             2,  2,  2,  2,  3,  3,  3,  3,                             \
                   69822:             4,  4,  4,  5,  5,  5,  6,  6,                             \
                   69823:             7,  8,  9, 10, 11, 12, 12, 13,                             \
                   69824:            14, 16, 17, 19, 20, 22, 23, 25,                             \
                   69825:            28, 31, 34, 38, 41, 44, 47, 50,                             \
                   69826:            56, 62, 69, 75, 81, 88, 94,100,                             \
                   69827:            56, 62, 69, 75, 81, 88, 94,100,                             \
                   69828:        }
                   69829: 
                   69830: /*
                   69831:  *
                   69832:  * The next two definitions give the height and width of characters in the four
                   69833:  * different sizes available on tektronix terminals. TEKFONT is the default index
                   69834:  * into CHARHEIGHT and CHARWIDTH.
                   69835:  *
                   69836:  */
                   69837: 
                   69838: #define CHARHEIGHT     {88, 82, 53, 48}
                   69839: #define CHARWIDTH      {56, 51, 34, 31}
                   69840: #define TEKFONT                2
                   69841: 
                   69842: /*
                   69843:  *
                   69844:  * The entries defined in STYLES are passed on to the PostScript operator setdash.
                   69845:  * They're used to implement the different tektronix line styles. Belongs in the
                   69846:  * prologue!
                   69847:  *
                   69848:  */
                   69849: 
                   69850: #define STYLES                                                         \
                   69851:                                                                        \
                   69852:        {                                                               \
                   69853:            "[]",                                                       \
                   69854:            "[.5 2]",                                                   \
                   69855:            "[.5 2 4 2]",                                               \
                   69856:            "[4 4]",                                                    \
                   69857:            "[8 4]",                                                    \
                   69858:            "[]"                                                        \
                   69859:        }
                   69860: 
                   69861: /*
                   69862:  *
                   69863:  * Variables of type Point are used to keep track of the cursor position.
                   69864:  *
                   69865:  */
                   69866: 
                   69867: typedef struct {
                   69868:        int     x;
                   69869:        int     y;
                   69870: } Point;
                   69871: 
                   69872: /*
                   69873:  *
                   69874:  * An array of type Fontmap helps convert font names requested by users into
                   69875:  * legitimate PostScript names. The array is initialized using FONTMAP, which must
                   69876:  * end with an entry that has NULL defined as its name field.
                   69877:  *
                   69878:  */
                   69879: 
                   69880: typedef struct {
                   69881:        char    *name;                  /* user's font name */
                   69882:        char    *val;                   /* corresponding PostScript name */
                   69883: } Fontmap;
                   69884: 
                   69885: #define FONTMAP                                                                \
                   69886:                                                                        \
                   69887:        {                                                               \
                   69888:            "R", "Courier",                                             \
                   69889:            "I", "Courier-Oblique",                                     \
                   69890:            "B", "Courier-Bold",                                        \
                   69891:            "CO", "Courier",                                            \
                   69892:            "CI", "Courier-Oblique",                                    \
                   69893:            "CB", "Courier-Bold",                                       \
                   69894:            "CW", "Courier",                                            \
                   69895:            "PO", "Courier",                                            \
                   69896:            "courier", "Courier",                                       \
                   69897:            "cour", "Courier",                                          \
                   69898:            "co", "Courier",                                            \
                   69899:            NULL, NULL                                                  \
                   69900:        }
                   69901: 
                   69902: /*
                   69903:  *
                   69904:  * Some of the non-integer valued functions in posttek.c.
                   69905:  *
                   69906:  */
                   69907: 
                   69908: char   *get_font();
                   69909: 
                   69910: 0707070014230550111006440057030057030000011530000522627504000003300000064244post.src/posttek/posttek.c/*
                   69911:  *
                   69912:  * posttek - PostScript translator for tektronix 4014 files
                   69913:  *
                   69914:  * A program that can be used to translate tektronix 4014 files into PostScript.
                   69915:  * Most of the code was borrowed from the tektronix 4014 emulator that was written
                   69916:  * for DMDs. Things have been cleaned up some, but there's still plently that
                   69917:  * could be done.
                   69918:  *
                   69919:  * The PostScript prologue is copied from *prologue before any of the input files
                   69920:  * are translated. The program expects that the following PostScript procedures
                   69921:  * are defined in that file:
                   69922:  *
                   69923:  *     setup
                   69924:  *
                   69925:  *       mark ... setup -
                   69926:  *
                   69927:  *         Handles special initialization stuff that depends on how the program
                   69928:  *         was called. Expects to find a mark followed by key/value pairs on the
                   69929:  *         stack. The def operator is applied to each pair up to the mark, then
                   69930:  *         the default state is set up.
                   69931:  *
                   69932:  *     pagesetup
                   69933:  *
                   69934:  *       page pagesetup -
                   69935:  *
                   69936:  *         Does whatever is needed to set things up for the next page. Expects
                   69937:  *         to find the current page number on the stack.
                   69938:  *
                   69939:  *     v
                   69940:  *
                   69941:  *       mark dx1 dy1 ... dxn dyn x y v mark
                   69942:  *
                   69943:  *         Draws the vector described by the numbers on the stack. The top two
                   69944:  *         numbers are the starting point. The rest are relative displacements
                   69945:  *         from the preceeding point. Must make sure we don't put too much on
                   69946:  *         the stack!
                   69947:  *
                   69948:  *     t
                   69949:  *
                   69950:  *       x y string t -
                   69951:  *
                   69952:  *         Prints the string that's on the top of the stack starting at point
                   69953:  *         (x, y).
                   69954:  *
                   69955:  *     p
                   69956:  *
                   69957:  *       x y p -
                   69958:  *
                   69959:  *         Marks the point (x, y) with a circle whose radius varies with the
                   69960:  *         current intensity setting.
                   69961:  *
                   69962:  *     i
                   69963:  *
                   69964:  *       percent focus i -
                   69965:  *
                   69966:  *         Changes the size of the circle used to mark individual points to
                   69967:  *         percent of maximum for focused mode (focus=1) or defocused mode
                   69968:  *         (focus=0). The implementation leaves much to be desired!
                   69969:  *
                   69970:  *     l
                   69971:  *
                   69972:  *       mark array l mark
                   69973:  *
                   69974:  *         Set the line drawing mode according to the description given in array.
                   69975:  *         The arrays that describe the different line styles are declared in
                   69976:  *         STYLES (file posttek.h). The array really belongs in the prologue!
                   69977:  *
                   69978:  *     w
                   69979:  *
                   69980:  *       n w -
                   69981:  *
                   69982:  *         Adjusts the line width for vector drawing. Used to select normal (n=0)
                   69983:  *         or defocused (n=1) mode.
                   69984:  *
                   69985:  *     f
                   69986:  *
                   69987:  *       size f -
                   69988:  *
                   69989:  *         Changes the size of the font that's used to print characters in alpha
                   69990:  *         mode. size is the tektronix character width and is used to choose an
                   69991:  *         appropriate point size in the current font.
                   69992:  *
                   69993:  *     done
                   69994:  *
                   69995:  *       done
                   69996:  *
                   69997:  *         Makes sure the last page is printed. Only needed when we're printing
                   69998:  *         more than one page on each sheet of paper.
                   69999:  *
                   70000:  * The default line width is zero, which forces lines to be one pixel wide. That
                   70001:  * works well on 'write to black' engines but won't be right for 'write to white'
                   70002:  * engines. The line width can be changed using the -w option, or you can change
                   70003:  * the initialization of linewidth in the prologue.
                   70004:  *
                   70005:  * Many default values, like the magnification and orientation, are defined in 
                   70006:  * the prologue, which is where they belong. If they're changed (by options), an
                   70007:  * appropriate definition is made after the prologue is added to the output file.
                   70008:  * The -P option passes arbitrary PostScript through to the output file. Among
                   70009:  * other things it can be used to set (or change) values that can't be accessed by
                   70010:  * other options.
                   70011:  *
                   70012:  */
                   70013: 
                   70014: #include <stdio.h>
                   70015: #include <signal.h>
                   70016: #include <fcntl.h> 
                   70017: 
                   70018: #include "comments.h"                  /* PostScript file structuring comments */
                   70019: #include "gen.h"                       /* general purpose definitions */
                   70020: #include "path.h"                      /* for the prologue */
                   70021: #include "ext.h"                       /* external variable definitions */
                   70022: #include "posttek.h"                   /* control codes and other definitions */
                   70023: 
                   70024: char   *optnames = "a:c:f:m:n:o:p:w:x:y:A:C:E:J:L:P:R:DI";
                   70025: 
                   70026: char   *prologue = POSTTEK;            /* default PostScript prologue */
                   70027: char   *formfile = FORMFILE;           /* stuff for multiple pages per sheet */
                   70028: 
                   70029: int    formsperpage = 1;               /* page images on each piece of paper */
                   70030: int    copies = 1;                     /* and this many copies of each sheet */
                   70031: 
                   70032: int    charheight[] = CHARHEIGHT;      /* height */
                   70033: int    charwidth[] = CHARWIDTH;        /* and width arrays for tek characters */
                   70034: int    tekfont = TEKFONT;              /* index into charheight[] and charwidth[] */
                   70035: 
                   70036: char   intensity[] = INTENSITY;        /* special point intensity array */
                   70037: char   *styles[] = STYLES;             /* description of line styles */
                   70038: int    linestyle = 0;                  /* index into styles[] */
                   70039: int    linetype = 0;                   /* 0 for normal, 1 for defocused */
                   70040: 
                   70041: int    dispmode = ALPHA;               /* current tektronix state */
                   70042: int    points = 0;                     /* points making up the current vector */
                   70043: int    characters = 0;                 /* characters waiting to be printed */
                   70044: int    pen = UP;                       /* just for point plotting */
                   70045: int    margin = 0;                     /* left edge - ALPHA state */
                   70046: 
                   70047: Point  cursor;                         /* should be current cursor position */
                   70048: 
                   70049: Fontmap        fontmap[] = FONTMAP;            /* for translating font names */
                   70050: char   *fontname = "Courier";          /* use this PostScript font */
                   70051: 
                   70052: int    page = 0;                       /* page we're working on */
                   70053: int    printed = 0;                    /* printed this many pages */
                   70054: 
                   70055: FILE   *fp_in;                         /* read from this file */
                   70056: FILE   *fp_out = stdout;               /* and write stuff here */
                   70057: FILE   *fp_acct = NULL;                /* for accounting data */
                   70058: 
                   70059: /*****************************************************************************/
                   70060: 
                   70061: main(agc, agv)
                   70062: 
                   70063:     int                agc;
                   70064:     char       *agv[];
                   70065: 
                   70066: {
                   70067: 
                   70068: /*
                   70069:  *
                   70070:  * A simple program that can be used to translate tektronix 4014 files into
                   70071:  * PostScript. Most of the code was taken from the DMD tektronix 4014 emulator,
                   70072:  * although things have been cleaned up some.
                   70073:  *
                   70074:  */
                   70075: 
                   70076:     argv = agv;                                /* so everyone can use them */
                   70077:     argc = agc;
                   70078: 
                   70079:     prog_name = argv[0];               /* just for error messages */
                   70080: 
                   70081:     init_signals();                    /* sets up interrupt handling */
                   70082:     header();                          /* PostScript header comments */
                   70083:     options();                         /* handle the command line options */
                   70084:     setup();                           /* for PostScript */
                   70085:     arguments();                       /* followed by each input file */
                   70086:     done();                            /* print the last page etc. */
                   70087:     account();                         /* job accounting data */
                   70088: 
                   70089:     exit(x_stat);                      /* nothing could be wrong */
                   70090: 
                   70091: }   /* End of main */
                   70092: 
                   70093: /*****************************************************************************/
                   70094: 
                   70095: init_signals()
                   70096: 
                   70097: {
                   70098: 
                   70099: /*
                   70100:  *
                   70101:  * Make sure we handle interrupts.
                   70102:  *
                   70103:  */
                   70104: 
                   70105:     if ( signal(SIGINT, interrupt) == SIG_IGN )  {
                   70106:        signal(SIGINT, SIG_IGN);
                   70107:        signal(SIGQUIT, SIG_IGN);
                   70108:        signal(SIGHUP, SIG_IGN);
                   70109:     } else {
                   70110:        signal(SIGHUP, interrupt);
                   70111:        signal(SIGQUIT, interrupt);
                   70112:     }   /* End else */
                   70113: 
                   70114:     signal(SIGTERM, interrupt);
                   70115: 
                   70116: }   /* End of init_signals */
                   70117: 
                   70118: /*****************************************************************************/
                   70119: 
                   70120: header()
                   70121: 
                   70122: {
                   70123: 
                   70124:     int                ch;                     /* return value from getopt() */
                   70125:     int                old_optind = optind;    /* for restoring optind - should be 1 */
                   70126: 
                   70127: /*
                   70128:  *
                   70129:  * Scans the option list looking for things, like the prologue file, that we need
                   70130:  * right away but could be changed from the default. Doing things this way is an
                   70131:  * attempt to conform to Adobe's latest file structuring conventions. In particular
                   70132:  * they now say there should be nothing executed in the prologue, and they have
                   70133:  * added two new comments that delimit global initialization calls. Once we know
                   70134:  * where things really are we write out the job header, follow it by the prologue,
                   70135:  * and then add the ENDPROLOG and BEGINSETUP comments.
                   70136:  *
                   70137:  */
                   70138: 
                   70139:     while ( (ch = getopt(argc, argv, optnames)) != EOF )
                   70140:        if ( ch == 'L' )
                   70141:            prologue = optarg;
                   70142:        else if ( ch == '?' )
                   70143:            error(FATAL, "");
                   70144: 
                   70145:     optind = old_optind;               /* get ready for option scanning */
                   70146: 
                   70147:     fprintf(stdout, "%s", CONFORMING);
                   70148:     fprintf(stdout, "%s %s\n", VERSION, PROGRAMVERSION);
                   70149:     fprintf(stdout, "%s %s\n", DOCUMENTFONTS, ATEND);
                   70150:     fprintf(stdout, "%s %s\n", PAGES, ATEND);
                   70151:     fprintf(stdout, "%s", ENDCOMMENTS);
                   70152: 
                   70153:     if ( cat(prologue) == FALSE )
                   70154:        error(FATAL, "can't read %s", prologue);
                   70155: 
                   70156:     fprintf(stdout, "%s", ENDPROLOG);
                   70157:     fprintf(stdout, "%s", BEGINSETUP);
                   70158:     fprintf(stdout, "mark\n");
                   70159: 
                   70160: }   /* End of header */
                   70161: 
                   70162: /*****************************************************************************/
                   70163: 
                   70164: options()
                   70165: 
                   70166: {
                   70167: 
                   70168:     int                ch;                     /* value returned by getopt() */
                   70169: 
                   70170: /*
                   70171:  *
                   70172:  * Reads and processes the command line options. Added the -P option so arbitrary
                   70173:  * PostScript code can be passed through. Expect it could be useful for changing
                   70174:  * definitions in the prologue for which options have not been defined.
                   70175:  *
                   70176:  */
                   70177: 
                   70178:     while ( (ch = getopt(argc, argv, optnames)) != EOF )  {
                   70179:        switch ( ch )  {
                   70180:            case 'a':                   /* aspect ratio */
                   70181:                    fprintf(stdout, "/aspectratio %s def\n", optarg);
                   70182:                    break;
                   70183: 
                   70184:            case 'c':                   /* copies */
                   70185:                    copies = atoi(optarg);
                   70186:                    fprintf(stdout, "/#copies %s store\n", optarg);
                   70187:                    break;
                   70188: 
                   70189:            case 'f':                   /* use this PostScript font */
                   70190:                    fontname = get_font(optarg);
                   70191:                    fprintf(stdout, "/font /%s def\n", fontname);
                   70192:                    break;
                   70193: 
                   70194:            case 'm':                   /* magnification */
                   70195:                    fprintf(stdout, "/magnification %s def\n", optarg);
                   70196:                    break;
                   70197: 
                   70198:            case 'n':                   /* forms per page */
                   70199:                    formsperpage = atoi(optarg);
                   70200:                    fprintf(stdout, "%s %s\n", FORMSPERPAGE, optarg);
                   70201:                    fprintf(stdout, "/formsperpage %s def\n", optarg);
                   70202:                    break;
                   70203: 
                   70204:            case 'o':                   /* output page list */
                   70205:                    out_list(optarg);
                   70206:                    break;
                   70207: 
                   70208:            case 'p':                   /* landscape or portrait mode */
                   70209:                    if ( *optarg == 'l' )
                   70210:                        fprintf(stdout, "/landscape true def\n");
                   70211:                    else fprintf(stdout, "/landscape false def\n");
                   70212:                    break;
                   70213: 
                   70214:            case 'w':                   /* line width */
                   70215:                    fprintf(stdout, "/linewidth %s def\n", optarg);
                   70216:                    break;
                   70217: 
                   70218:            case 'x':                   /* shift horizontally */
                   70219:                    fprintf(stdout, "/xoffset %s def\n", optarg);
                   70220:                    break;
                   70221: 
                   70222:            case 'y':                   /* and vertically on the page */
                   70223:                    fprintf(stdout, "/yoffset %s def\n", optarg);
                   70224:                    break;
                   70225: 
                   70226:            case 'A':                   /* force job accounting */
                   70227:            case 'J':
                   70228:                    if ( (fp_acct = fopen(optarg, "a")) == NULL )
                   70229:                        error(FATAL, "can't open accounting file %s", optarg);
                   70230:                    break;
                   70231: 
                   70232:            case 'C':                   /* copy file straight to output */
                   70233:                    if ( cat(optarg) == FALSE )
                   70234:                        error(FATAL, "can't read %s", optarg);
                   70235:                    break;
                   70236: 
                   70237:            case 'E':                   /* text font encoding */
                   70238:                    fontencoding = optarg;
                   70239:                    break;
                   70240: 
                   70241:            case 'L':                   /* PostScript prologue file */
                   70242:                    prologue = optarg;
                   70243:                    break;
                   70244: 
                   70245:            case 'P':                   /* PostScript pass through */
                   70246:                    fprintf(stdout, "%s\n", optarg);
                   70247:                    break;
                   70248: 
                   70249:            case 'R':                   /* special global or page level request */
                   70250:                    saverequest(optarg);
                   70251:                    break;
                   70252: 
                   70253:            case 'D':                   /* debug flag */
                   70254:                    debug = ON;
                   70255:                    break;
                   70256: 
                   70257:            case 'I':                   /* ignore FATAL errors */
                   70258:                    ignore = ON;
                   70259:                    break;
                   70260: 
                   70261:            case '?':                   /* don't know the option */
                   70262:                    error(FATAL, "");
                   70263:                    break;
                   70264: 
                   70265:            default:                    /* don't know what to do for ch */
                   70266:                    error(FATAL, "missing case for option %c", ch);
                   70267:                    break;
                   70268:        }   /* End switch */
                   70269:     }  /* End while */
                   70270: 
                   70271:     argc -= optind;
                   70272:     argv += optind;
                   70273: 
                   70274: }   /* End of options */
                   70275: 
                   70276: /*****************************************************************************/
                   70277: 
                   70278: char *get_font(name)
                   70279: 
                   70280:     char       *name;                  /* name the user asked for */
                   70281: 
                   70282: {
                   70283: 
                   70284:     int                i;                      /* for looking through fontmap[] */
                   70285: 
                   70286: /*
                   70287:  *
                   70288:  * Called from options() to map a user's font name into a legal PostScript name.
                   70289:  * If the lookup fails *name is returned to the caller. That should let you choose
                   70290:  * any PostScript font.
                   70291:  *
                   70292:  */
                   70293: 
                   70294:     for ( i = 0; fontmap[i].name != NULL; i++ )
                   70295:        if ( strcmp(name, fontmap[i].name) == 0 )
                   70296:            return(fontmap[i].val);
                   70297: 
                   70298:     return(name);
                   70299: 
                   70300: }   /* End of get_font */
                   70301: 
                   70302: /*****************************************************************************/
                   70303: 
                   70304: setup()
                   70305: 
                   70306: {
                   70307: 
                   70308: /*
                   70309:  *
                   70310:  * Handles things that must be done after the options are read but before the
                   70311:  * input files are processed.
                   70312:  *
                   70313:  */
                   70314: 
                   70315:     writerequest(0, stdout);           /* global requests eg. manual feed */
                   70316:     setencoding(fontencoding);
                   70317:     fprintf(stdout, "setup\n");
                   70318: 
                   70319:     if ( formsperpage > 1 )  {
                   70320:        if ( cat(formfile) == FALSE )
                   70321:            error(FATAL, "can't read %s", formfile);
                   70322:        fprintf(stdout, "%d setupforms\n", formsperpage);
                   70323:     }  /* End if */
                   70324: 
                   70325:     fprintf(stdout, "%s", ENDSETUP);
                   70326: 
                   70327: }   /* End of setup */
                   70328: 
                   70329: /*****************************************************************************/
                   70330: 
                   70331: arguments()
                   70332: 
                   70333: {
                   70334: 
                   70335: /*
                   70336:  *
                   70337:  * Makes sure all the non-option command line arguments are processed. If we get
                   70338:  * here and there aren't any arguments left, or if '-' is one of the input files
                   70339:  * we'll process stdin.
                   70340:  *
                   70341:  */
                   70342: 
                   70343:     if ( argc < 1 )
                   70344:        statemachine(fp_in = stdin);
                   70345:     else  {                            /* at least one argument is left */
                   70346:        while ( argc > 0 )  {
                   70347:            if ( strcmp(*argv, "-") == 0 )
                   70348:                fp_in = stdin;
                   70349:            else if ( (fp_in = fopen(*argv, "r")) == NULL )
                   70350:                error(FATAL, "can't open %s", *argv);
                   70351:            statemachine(fp_in);
                   70352:            if ( fp_in != stdin )
                   70353:                fclose(fp_in);
                   70354:            argc--;
                   70355:            argv++;
                   70356:        }   /* End while */
                   70357:     }   /* End else */
                   70358: 
                   70359: }   /* End of arguments */
                   70360: 
                   70361: /*****************************************************************************/
                   70362: 
                   70363: done()
                   70364: 
                   70365: {
                   70366: 
                   70367: /*
                   70368:  *
                   70369:  * Finished with all the input files, so mark the end of the pages with a TRAILER
                   70370:  * comment, make sure the last page prints, and add things like the PAGES comment
                   70371:  * that can only be determined after all the input files have been read.
                   70372:  *
                   70373:  */
                   70374: 
                   70375:     fprintf(stdout, "%s", TRAILER);
                   70376:     fprintf(stdout, "done\n");
                   70377:     fprintf(stdout, "%s %s\n", DOCUMENTFONTS, fontname);
                   70378:     fprintf(stdout, "%s %d\n", PAGES, printed);
                   70379: 
                   70380: }   /* End of done */
                   70381: 
                   70382: /*****************************************************************************/
                   70383: 
                   70384: account()
                   70385: 
                   70386: {
                   70387: 
                   70388: /*
                   70389:  *
                   70390:  * Writes an accounting record to *fp_acct provided it's not NULL. Accounting
                   70391:  * is requested using the -A or -J options.
                   70392:  *
                   70393:  */
                   70394: 
                   70395:     if ( fp_acct != NULL )
                   70396:        fprintf(fp_acct, " print %d\n copies %d\n", printed, copies);
                   70397: 
                   70398: }   /* End of account */
                   70399: 
                   70400: /*****************************************************************************/
                   70401: 
                   70402: statemachine(fp)
                   70403: 
                   70404:     FILE       *fp;                    /* used to set fp_in */
                   70405: 
                   70406: {
                   70407: 
                   70408: /*
                   70409:  *
                   70410:  * Controls the translation of the next input file. Tektronix states (dispmode)
                   70411:  * are typically changed in control() and esc().
                   70412:  *
                   70413:  */
                   70414: 
                   70415:     redirect(-1);                      /* get ready for the first page */
                   70416:     formfeed();
                   70417:     dispmode = RESET;
                   70418: 
                   70419:     while ( 1 )
                   70420:        switch ( dispmode )  {
                   70421:            case RESET:
                   70422:                    reset();
                   70423:                    break;
                   70424: 
                   70425:            case ALPHA:
                   70426:                    alpha();
                   70427:                    break;
                   70428: 
                   70429:            case GIN:
                   70430:                    gin();
                   70431:                    break;
                   70432: 
                   70433:            case GRAPH:
                   70434:                    graph();
                   70435:                    break;
                   70436: 
                   70437:            case POINT:
                   70438:            case SPECIALPOINT:
                   70439:                    point();
                   70440:                    break;
                   70441: 
                   70442:            case INCREMENTAL:
                   70443:                    incremental();
                   70444:                    break;
                   70445: 
                   70446:            case EXIT:
                   70447:                    formfeed();
                   70448:                    return;
                   70449:        }   /* End switch */
                   70450: 
                   70451: }   /* End of statemachine */
                   70452: 
                   70453: /*****************************************************************************/
                   70454: 
                   70455: reset()
                   70456: 
                   70457: {
                   70458: 
                   70459: /*
                   70460:  *
                   70461:  * Called to reset things, typically only at the beginning of each input file.
                   70462:  *
                   70463:  */
                   70464: 
                   70465:     tekfont = -1;
                   70466:     home();
                   70467:     setfont(TEKFONT);
                   70468:     setmode(ALPHA);
                   70469: 
                   70470: }   /* End of reset */
                   70471: 
                   70472: /*****************************************************************************/
                   70473: 
                   70474: alpha()
                   70475: 
                   70476: {
                   70477: 
                   70478:     int                c;                      /* next character */
                   70479:     int                x, y;                   /* cursor will be here when we're done */
                   70480: 
                   70481: /*
                   70482:  *
                   70483:  * Takes care of printing characters in the current font.
                   70484:  *
                   70485:  */
                   70486: 
                   70487:     if ( (c = nextchar()) == OUTMODED )
                   70488:        return;
                   70489: 
                   70490:     if ( (c < 040) && ((c = control(c)) <= 0) )
                   70491:        return;
                   70492: 
                   70493:     x = cursor.x;                      /* where the cursor is right now */
                   70494:     y = cursor.y;
                   70495: 
                   70496:     switch ( c )  {
                   70497:        case DEL:
                   70498:                return;
                   70499: 
                   70500:        case BS:
                   70501:                if ((x -= charwidth[tekfont]) < margin)
                   70502:                    x = TEKXMAX - charwidth[tekfont];
                   70503:                break;
                   70504: 
                   70505:        case NL:
                   70506:                y -= charheight[tekfont];
                   70507:                break;
                   70508: 
                   70509:        case CR:
                   70510:                x = margin;
                   70511:                break;
                   70512: 
                   70513:        case VT:
                   70514:                if ((y += charheight[tekfont]) >= TEKYMAX)
                   70515:                    y = 0;
                   70516:                break;
                   70517: 
                   70518:        case HT:
                   70519:        case ' ':
                   70520:        default:
                   70521:                if ( characters++ == 0 )
                   70522:                    fprintf(fp_out, "%d %d (", cursor.x, cursor.y);
                   70523:                switch ( c )  {
                   70524:                    case '(':
                   70525:                    case ')':
                   70526:                    case '\\':
                   70527:                        putc('\\', fp_out);
                   70528: 
                   70529:                    default:
                   70530:                        putc(c, fp_out);
                   70531:                }   /* End switch */
                   70532:                x += charwidth[tekfont];
                   70533:                move(x, y);
                   70534:                break;
                   70535:     }  /* End switch */
                   70536: 
                   70537:     if (x >= TEKXMAX) {
                   70538:        x = margin;
                   70539:        y -= charheight[tekfont];
                   70540:     }  /* End if */
                   70541: 
                   70542:     if (y < 0) {
                   70543:        y = TEKYMAX - charheight[tekfont];
                   70544:        x -= margin;
                   70545:        margin = (TEKXMAX/2) - margin;
                   70546:        if ((x += margin) > TEKXMAX)
                   70547:            x -= margin;
                   70548:     }  /* End if */
                   70549: 
                   70550:     if ( y != cursor.y || x != cursor.x )
                   70551:        text();
                   70552: 
                   70553:     move(x, y);
                   70554: 
                   70555: }   /* End of alpha */
                   70556: 
                   70557: /*****************************************************************************/
                   70558: 
                   70559: graph()
                   70560: 
                   70561: {
                   70562: 
                   70563:     int                        c;              /* next character */
                   70564:     int                        b;              /* for figuring out loy */
                   70565:     int                        x, y;           /* next point in the vector */
                   70566:     static int         hix, hiy;       /* upper */
                   70567:     static int         lox, loy;       /* and lower part of the address */
                   70568:     static int         extra;          /* for extended addressing */
                   70569: 
                   70570: /*
                   70571:  *
                   70572:  * Handles things when we're in GRAPH, POINT, or SPECIALPOINT mode.
                   70573:  *
                   70574:  */
                   70575: 
                   70576:     if ((c = nextchar()) < 040) {
                   70577:        control(c);
                   70578:        return;
                   70579:     }  /* End if */
                   70580: 
                   70581:     if ((c & 0140) == 040) {           /* new hiy */
                   70582:        hiy = c & 037;
                   70583:        do
                   70584:            if (((c = nextchar()) < 040) && ((c = control(c)) == OUTMODED))
                   70585:                return;
                   70586:        while (c == 0);
                   70587:     }  /* End if */
                   70588: 
                   70589:     if ((c & 0140) == 0140) {          /* new loy */
                   70590:        b = c & 037;
                   70591:        do
                   70592:            if (((c = nextchar()) < 040) && ((c = control(c)) == OUTMODED))
                   70593:                return;
                   70594:        while (c == 0);
                   70595:        if ((c & 0140) == 0140) {       /* no, it was extra */
                   70596:            extra = b;
                   70597:            loy = c & 037;
                   70598:            do
                   70599:                if (((c = nextchar()) < 040) && ((c = control(c)) == OUTMODED))
                   70600:                    return;
                   70601:            while (c == 0);
                   70602:        } else loy = b;
                   70603:     }  /* End if */
                   70604: 
                   70605:     if ((c & 0140) == 040) {           /* new hix */
                   70606:        hix = c & 037;
                   70607:        do
                   70608:            if (((c = nextchar()) < 040) && ((c = control(c)) == OUTMODED))
                   70609:                return;
                   70610:        while (c == 0);
                   70611:     }  /* End if */
                   70612: 
                   70613:     lox = c & 037;                     /* this should be lox */
                   70614:     if (extra & 020)
                   70615:        margin = TEKXMAX/2;
                   70616: 
                   70617:     x = (hix<<7) | (lox<<2) | (extra & 03);
                   70618:     y = (hiy<<7) | (loy<<2) | ((extra & 014)>>2);
                   70619: 
                   70620:     if ( points > 100 )  {             /* don't put too much on the stack */
                   70621:        draw();
                   70622:        points = 1;
                   70623:     }  /* End if */
                   70624: 
                   70625:     if ( points++ )
                   70626:        fprintf(fp_out, "%d %d\n", cursor.x - x, cursor.y - y);
                   70627: 
                   70628:     move(x, y);                                /* adjust the cursor */
                   70629: 
                   70630: }   /* End of graph */
                   70631: 
                   70632: /*****************************************************************************/
                   70633: 
                   70634: point()
                   70635: 
                   70636: {
                   70637: 
                   70638:     int                c;                      /* next input character */
                   70639: 
                   70640: /*
                   70641:  *
                   70642:  * Special point mode permits gray scaling by varying the size of the stored
                   70643:  * point, which is controlled by an intensity character that preceeds each point
                   70644:  * address.
                   70645:  *
                   70646:  */
                   70647: 
                   70648:     if ( dispmode == SPECIALPOINT )  {
                   70649:        if ( (c = nextchar()) < 040 || c > 0175 )
                   70650:            return(control(c));
                   70651: 
                   70652:        fprintf(fp_out, "%d %d i\n", intensity[c - ' '], c & 0100);
                   70653:     }  /* End if */
                   70654: 
                   70655:     graph();
                   70656:     draw();
                   70657: 
                   70658: }   /* End of point */
                   70659: 
                   70660: /*****************************************************************************/
                   70661: 
                   70662: incremental()
                   70663: 
                   70664: {
                   70665: 
                   70666:     int                c;                      /* for the next few characters */
                   70667:     int                x, y;                   /* cursor position when we're done */
                   70668: 
                   70669: /*
                   70670:  *
                   70671:  * Handles incremental plot mode. It's entered after the RS control code and is
                   70672:  * used to mark points relative to our current position. It's typically followed
                   70673:  * by one or two bytes that set the pen state and are used to increment the
                   70674:  * current position.
                   70675:  *
                   70676:  */
                   70677: 
                   70678:     if ( (c = nextchar()) == OUTMODED )
                   70679:        return;
                   70680: 
                   70681:     if ( (c < 040) && ((c = control(c)) <= 0) )
                   70682:        return;
                   70683: 
                   70684:     x = cursor.x;                      /* where we are right now */
                   70685:     y = cursor.y;
                   70686: 
                   70687:     if ( c & 060 )
                   70688:        pen = ( c & 040 ) ? UP : DOWN;
                   70689: 
                   70690:     if ( c & 04 ) y++;
                   70691:     if ( c & 010 ) y--;
                   70692:     if ( c & 01 ) x++;
                   70693:     if ( c & 02 ) x--;
                   70694: 
                   70695:     move(x, y);
                   70696: 
                   70697:     if ( pen == DOWN )  {
                   70698:        points = 1;
                   70699:        draw();
                   70700:     }  /* End if */
                   70701: 
                   70702: }   /* End of incremental */
                   70703: 
                   70704: /*****************************************************************************/
                   70705: 
                   70706: gin()
                   70707: 
                   70708: {
                   70709: 
                   70710: /*
                   70711:  *
                   70712:  * All we really have to do for GIN mode is make sure it's properly ended.
                   70713:  *
                   70714:  */
                   70715: 
                   70716:     control(nextchar());
                   70717: 
                   70718: }   /* End of gin */
                   70719: 
                   70720: /*****************************************************************************/
                   70721: 
                   70722: control(c)
                   70723: 
                   70724:     int                c;                      /* check this control character */
                   70725: 
                   70726: {
                   70727: 
                   70728: /*
                   70729:  *
                   70730:  * Checks character c and does special things, like mode changes, that depend
                   70731:  * not only on the character, but also on the current state. If the mode changed
                   70732:  * becuase of c, OUTMODED is returned to the caller. In all other cases the
                   70733:  * return value is c or 0, if c doesn't make sense in the current mode.
                   70734:  *
                   70735:  */
                   70736: 
                   70737:     switch ( c )  {
                   70738:        case BEL:
                   70739:                return(0);
                   70740: 
                   70741:        case BS:
                   70742:        case HT:
                   70743:        case VT:
                   70744:                return(dispmode == ALPHA ? c : 0);
                   70745: 
                   70746:        case CR:
                   70747:                if ( dispmode != ALPHA )  {
                   70748:                    setmode(ALPHA);
                   70749:                    ungetc(c, fp_in);
                   70750:                    return(OUTMODED);
                   70751:                } else return(c);
                   70752: 
                   70753:        case FS:
                   70754:                if ( (dispmode == ALPHA) || (dispmode == GRAPH) )  {
                   70755:                    setmode(POINT);
                   70756:                    return(OUTMODED);
                   70757:                }   /* End if */
                   70758:                return(0);
                   70759: 
                   70760:        case GS:
                   70761:                if ( (dispmode == ALPHA) || (dispmode == GRAPH) )  {
                   70762:                    setmode(GRAPH);
                   70763:                    return(OUTMODED);
                   70764:                }   /* End if */
                   70765:                return(0);
                   70766: 
                   70767:        case NL:
                   70768:                ungetc(CR, fp_in);
                   70769:                return(dispmode == ALPHA ? c : 0);
                   70770: 
                   70771:        case RS:
                   70772:                if ( dispmode != GIN )  {
                   70773:                    setmode(INCREMENTAL);
                   70774:                    return(OUTMODED);
                   70775:                }   /* End if */
                   70776:                return(0);
                   70777: 
                   70778:        case US:
                   70779:                if ( dispmode == ALPHA )
                   70780:                    return(0);
                   70781:                setmode(ALPHA);
                   70782:                return(OUTMODED);
                   70783: 
                   70784:        case ESC:
                   70785:                return(esc());
                   70786: 
                   70787:        case OUTMODED:
                   70788:                return(c);
                   70789: 
                   70790:        default:
                   70791:                return(c < 040 ? 0 : c);
                   70792:     }  /* End switch */
                   70793: 
                   70794: }   /* End of control */
                   70795: 
                   70796: /*****************************************************************************/
                   70797: 
                   70798: esc()
                   70799: 
                   70800: {
                   70801: 
                   70802:     int                c;                      /* next input character */
                   70803:     int                ignore;                 /* skip it if nonzero */
                   70804: 
                   70805: /*
                   70806:  *
                   70807:  * Handles tektronix escape code. Called from control() whenever an ESC character
                   70808:  * is found in the input file.
                   70809:  *
                   70810:  */
                   70811: 
                   70812:     do  {
                   70813:        c = nextchar();
                   70814:        ignore = 0;
                   70815:        switch ( c )  {
                   70816:            case CAN:
                   70817:                    return(0);
                   70818: 
                   70819:            case CR:
                   70820:                    ignore = 1;
                   70821:                    break;
                   70822: 
                   70823:            case ENQ:
                   70824:                    setmode(ALPHA);
                   70825:                    return(OUTMODED);
                   70826: 
                   70827:            case ETB:
                   70828:                    return(0);
                   70829: 
                   70830:            case FF:
                   70831:                    formfeed();
                   70832:                    setmode(ALPHA);
                   70833:                    return(OUTMODED);
                   70834: 
                   70835:            case FS:
                   70836:                    if ( (dispmode == INCREMENTAL) || ( dispmode == GIN) )
                   70837:                        return(0);
                   70838:                    setmode(SPECIALPOINT);
                   70839:                    return(OUTMODED);
                   70840: 
                   70841:            case SI:
                   70842:            case SO:
                   70843:                    return(0);
                   70844: 
                   70845:            case SUB:
                   70846:                    setmode(GIN);
                   70847:                    return(OUTMODED);
                   70848: 
                   70849:            case OUTMODED:
                   70850:                    return(OUTMODED);
                   70851: 
                   70852:            case '8':
                   70853:            case '9':
                   70854:            case ':':
                   70855:            case ';':
                   70856:                    setfont(c - '8');
                   70857:                    return(0);
                   70858: 
                   70859:            default:
                   70860:                    if ( c == '?' && dispmode == GRAPH )
                   70861:                        return(DEL);
                   70862:                    if ( (c<'`') || (c>'w') )
                   70863:                        break;
                   70864:                    c -= '`';
                   70865:                    if ( (c & 010) != linetype )
                   70866:                        fprintf(fp_out, "%d w\n", (linetype = (c & 010))/010);
                   70867:                    if ( ((c + 1) & 7) >= 6 )
                   70868:                        break;
                   70869:                    if ( (c + 1) & 7 )
                   70870:                        if ( (c & 7) != linestyle )  {
                   70871:                            linestyle = c & 7;
                   70872:                            setmode(dispmode);
                   70873:                            fprintf(fp_out, "%s l\n", styles[linestyle]);
                   70874:                        }   /* End if */
                   70875:                    return(0);
                   70876:        }   /* End switch */
                   70877: 
                   70878:     } while (ignore);
                   70879: 
                   70880:     return(0);
                   70881: 
                   70882: }   /* End of esc */
                   70883: 
                   70884: /*****************************************************************************/
                   70885: 
                   70886: move(x, y)
                   70887: 
                   70888:     int                x, y;                   /* move the cursor here */
                   70889: 
                   70890: {
                   70891: 
                   70892: /*
                   70893:  *
                   70894:  * Moves the cursor to the point (x, y).
                   70895:  *
                   70896:  */
                   70897: 
                   70898:     cursor.x = x;
                   70899:     cursor.y = y;
                   70900: 
                   70901: }   /* End of move */
                   70902: 
                   70903: /*****************************************************************************/
                   70904: 
                   70905: setmode(mode)
                   70906: 
                   70907:     int                mode;                   /* this should be the new mode */
                   70908: 
                   70909: {
                   70910: 
                   70911: /*
                   70912:  *
                   70913:  * Makes sure the current mode is properly ended and then sets dispmode to mode.
                   70914:  *
                   70915:  */
                   70916: 
                   70917:     switch ( dispmode )  {
                   70918:        case ALPHA:
                   70919:                text();
                   70920:                break;
                   70921: 
                   70922:        case GRAPH:
                   70923:                draw();
                   70924:                break;
                   70925: 
                   70926:        case INCREMENTAL:
                   70927:                pen = UP;
                   70928:                break;
                   70929:     }  /* End switch */
                   70930: 
                   70931:     dispmode = mode;
                   70932: 
                   70933: }   /* End of setmode */
                   70934: 
                   70935: /*****************************************************************************/
                   70936: 
                   70937: home()
                   70938: 
                   70939: {
                   70940: 
                   70941: /*
                   70942:  *
                   70943:  * Makes sure the cursor is positioned at the upper left corner of the page.
                   70944:  *
                   70945:  */
                   70946: 
                   70947:     margin = 0;
                   70948:     move(0, TEKYMAX);
                   70949: 
                   70950: }   /* End of home */
                   70951: 
                   70952: /*****************************************************************************/
                   70953: 
                   70954: setfont(newfont)
                   70955: 
                   70956:     int                newfont;                /* use this font next */
                   70957: 
                   70958: {
                   70959: 
                   70960: /*
                   70961:  *
                   70962:  * Generates the call to the procedure that's responsible for changing the
                   70963:  * tektronix font (really just the size).
                   70964:  *
                   70965:  */
                   70966: 
                   70967:     if ( newfont != tekfont )  {
                   70968:        setmode(dispmode);
                   70969:        fprintf(fp_out, "%d f\n", charwidth[newfont]);
                   70970:     }  /* End if */
                   70971: 
                   70972:     tekfont = newfont;
                   70973: 
                   70974: }   /* End of setfont */
                   70975: 
                   70976: /*****************************************************************************/
                   70977: 
                   70978: text()
                   70979: 
                   70980: {
                   70981: 
                   70982: /*
                   70983:  *
                   70984:  * Makes sure any text we've put on the stack is printed.
                   70985:  *
                   70986:  */
                   70987: 
                   70988:     if ( dispmode == ALPHA && characters > 0 )
                   70989:        fprintf(fp_out, ") t\n");
                   70990: 
                   70991:     characters = 0;
                   70992: 
                   70993: }   /* End of text */
                   70994: 
                   70995: /*****************************************************************************/
                   70996: 
                   70997: draw()
                   70998: 
                   70999: {
                   71000: 
                   71001: /*
                   71002:  *
                   71003:  * Called whenever we need to draw a vector or plot a point. Nothing will be
                   71004:  * done if points is 0 or if it's 1 and we're in GRAPH mode.
                   71005:  *
                   71006:  */
                   71007: 
                   71008:     if ( points > 1 )                  /* it's a vector */
                   71009:        fprintf(fp_out, "%d %d v\n", cursor.x, cursor.y);
                   71010:     else if ( points == 1 && dispmode != GRAPH )
                   71011:        fprintf(fp_out, "%d %d p\n", cursor.x, cursor.y);
                   71012: 
                   71013:     points = 0;
                   71014: 
                   71015: }   /* End of draw */
                   71016: 
                   71017: /*****************************************************************************/
                   71018: 
                   71019: formfeed()
                   71020: 
                   71021: {
                   71022: 
                   71023: /*
                   71024:  *
                   71025:  * Usually called when we've finished the last page and want to get ready for the
                   71026:  * next one. Also used at the beginning and end of each input file, so we have to
                   71027:  * be careful about exactly what's done.
                   71028:  *
                   71029:  */
                   71030: 
                   71031:     setmode(dispmode);                 /* end any outstanding text or graphics */
                   71032: 
                   71033:     if ( fp_out == stdout )            /* count the last page */
                   71034:        printed++;
                   71035: 
                   71036:     fprintf(fp_out, "cleartomark\n");
                   71037:     fprintf(fp_out, "showpage\n");
                   71038:     fprintf(fp_out, "saveobj restore\n");
                   71039:     fprintf(fp_out, "%s %d %d\n", ENDPAGE, page, printed);
                   71040: 
                   71041:     if ( ungetc(getc(fp_in), fp_in) == EOF )
                   71042:        redirect(-1);
                   71043:     else redirect(++page);
                   71044: 
                   71045:     fprintf(fp_out, "%s %d %d\n", PAGE, page, printed+1);
                   71046:     fprintf(fp_out, "/saveobj save def\n");
                   71047:     fprintf(fp_out, "mark\n");
                   71048:     writerequest(printed+1, fp_out);
                   71049:     fprintf(fp_out, "%d pagesetup\n", printed+1);
                   71050:     fprintf(fp_out, "%d f\n", charwidth[tekfont]);
                   71051:     fprintf(fp_out, "%s l\n", styles[linestyle]);
                   71052: 
                   71053:     home();
                   71054: 
                   71055: }   /* End of formfeed */
                   71056: 
                   71057: /*****************************************************************************/
                   71058: 
                   71059: nextchar()
                   71060: 
                   71061: {
                   71062: 
                   71063:     int                ch;                     /* next input character */
                   71064: 
                   71065: /*
                   71066:  *
                   71067:  * Reads the next character from the current input file and returns it to the
                   71068:  * caller. When we're finished with the file dispmode is set to EXIT and OUTMODED
                   71069:  * is returned to the caller.
                   71070:  *
                   71071:  */
                   71072: 
                   71073:     if ( (ch = getc(fp_in)) == EOF )  {
                   71074:        setmode(EXIT);
                   71075:        ch = OUTMODED;
                   71076:     }  /* End if */
                   71077: 
                   71078:     return(ch);
                   71079: 
                   71080: }   /* End of nextchar */
                   71081: 
                   71082: /*****************************************************************************/
                   71083: 
                   71084: redirect(pg)
                   71085: 
                   71086:     int                pg;                     /* next page we're printing */
                   71087: 
                   71088: {
                   71089: 
                   71090:     static FILE        *fp_null = NULL;        /* if output is turned off */
                   71091: 
                   71092: /*
                   71093:  *
                   71094:  * If we're not supposed to print page pg, fp_out will be directed to /dev/null,
                   71095:  * otherwise output goes to stdout.
                   71096:  *
                   71097:  */
                   71098: 
                   71099:     if ( pg >= 0 && in_olist(pg) == ON )
                   71100:        fp_out = stdout;
                   71101:     else if ( (fp_out = fp_null) == NULL )
                   71102:        fp_out = fp_null = fopen("/dev/null", "w");
                   71103: 
                   71104: }   /* End of redirect */
                   71105: 
                   71106: /*****************************************************************************/
                   71107: 
                   71108: 0707070014230550141006400057030057030000011527430522633077300003300000006774post.src/posttek/posttek.1.ds dQ /usr/lib/postscript
                   71109: .TH POSTTEK 1 "DWB 3.2"
                   71110: .SH NAME
                   71111: .B posttek
                   71112: \- PostScript translator for Tektronix 4014 files
                   71113: .SH SYNOPSIS
                   71114: \*(mBposttek\f1
                   71115: .OP "" options []
                   71116: .OP "" files []
                   71117: .SH DESCRIPTION
                   71118: .B posttek
                   71119: translates Tektronix 4014 graphics
                   71120: .I files
                   71121: into PostScript and writes the results on the
                   71122: standard output.
                   71123: If no
                   71124: .I files
                   71125: are specified, or if
                   71126: .OP \-
                   71127: is one of the input
                   71128: .IR files ,
                   71129: the standard input is read.
                   71130: The following
                   71131: .I options
                   71132: are understood:
                   71133: .TP 0.75i
                   71134: .OP \-c num
                   71135: Print
                   71136: .I num
                   71137: copies of each page.
                   71138: By default only one copy is printed.
                   71139: .TP
                   71140: .OP \-f name
                   71141: Print text using font
                   71142: .IR name .
                   71143: Any PostScript font can be used,
                   71144: although the best results will only be
                   71145: obtained with constant width fonts.
                   71146: The default font is Courier.
                   71147: .TP
                   71148: .OP \-m num
                   71149: Magnify each logical page by the factor
                   71150: .IR num .
                   71151: Pages are scaled uniformly about the origin,
                   71152: which by default is located at the center of
                   71153: each page.
                   71154: The default magnification is 1.0.
                   71155: .TP
                   71156: .OP \-n num
                   71157: Print
                   71158: .I num
                   71159: logical pages on each piece of paper,
                   71160: where
                   71161: .I num
                   71162: can be any positive integer.
                   71163: By default
                   71164: .I num
                   71165: is set to 1.
                   71166: .TP
                   71167: .OP \-o list
                   71168: Print pages whose numbers are given in the comma-separated
                   71169: .IR list .
                   71170: The list contains single numbers
                   71171: .I N
                   71172: and ranges
                   71173: .IR N1\-\|N2 .
                   71174: A missing
                   71175: .I N1
                   71176: means the lowest numbered page, a missing
                   71177: .I N2
                   71178: means the highest.
                   71179: .TP
                   71180: .OP \-p mode
                   71181: Print
                   71182: .I files
                   71183: in either \*(mBportrait\fP or \*(mBlandscape\fP
                   71184: .IR mode .
                   71185: Only the first character of
                   71186: .I mode
                   71187: is significant.
                   71188: The default
                   71189: .I mode
                   71190: is \*(mBlandscape\fP.
                   71191: .TP
                   71192: .OP \-w num
                   71193: Set the line width used for graphics to
                   71194: .I num
                   71195: points, where a point is approximately 1/72
                   71196: of an inch.
                   71197: By default
                   71198: .I num
                   71199: is set to 0 points, which forces lines to be
                   71200: one pixel wide.
                   71201: .TP
                   71202: .OP \-x num
                   71203: Translate the origin
                   71204: .I num
                   71205: inches along the positive x axis.
                   71206: The default
                   71207: coordinate system has the origin fixed at the
                   71208: center of the page, with positive
                   71209: x to the right and positive y up the page.
                   71210: Positive
                   71211: .I num
                   71212: moves everything right.
                   71213: The default offset is 0.0 inches.
                   71214: .TP
                   71215: .OP \-y num
                   71216: Translate the origin
                   71217: .I num
                   71218: inches along the positive y axis.
                   71219: Positive
                   71220: .I num
                   71221: moves everything up the page.
                   71222: The default offset is 0.0.
                   71223: .TP
                   71224: .OP \-E name
                   71225: Set the character encoding for text fonts to
                   71226: .IR name .
                   71227: Requesting
                   71228: .I name
                   71229: means include file
                   71230: .MI \*(dQ/ name .enc \f1.
                   71231: A nonexistent encoding file is silently ignored.
                   71232: The default selects file
                   71233: .MR \*(dQ/Default.enc .
                   71234: .TP
                   71235: .OP \-L file
                   71236: Use
                   71237: .I file
                   71238: as the PostScript prologue.
                   71239: .br
                   71240: The default is
                   71241: .MR \*(dQ/posttek.ps .
                   71242: .PP
                   71243: Three options allow insertion of arbitrary PostScript
                   71244: at controlled points in the translation process:
                   71245: .TP 0.75i
                   71246: .OP \-C file
                   71247: Copy
                   71248: .I file
                   71249: to the output file;
                   71250: .I file
                   71251: must contain legitimate PostScript.
                   71252: .TP
                   71253: .OP \-P string
                   71254: Include.
                   71255: .I string
                   71256: in the output file;
                   71257: .I string
                   71258: must be legitimate PostScript.
                   71259: .TP
                   71260: .OP \-R action
                   71261: Requests special
                   71262: .I action
                   71263: (e.g.,
                   71264: .MR manualfeed )
                   71265: on a per page or global basis.
                   71266: The
                   71267: .I action
                   71268: string can be given as
                   71269: .IR request,
                   71270: .IM request : page\f1\|,
                   71271: or
                   71272: .IM request : page : file\f1\|.
                   71273: If
                   71274: .I page
                   71275: is omitted or given as 0, the request
                   71276: applies to all pages.
                   71277: If
                   71278: .I file
                   71279: is omitted, the request
                   71280: lookup is done in
                   71281: .MR \*(dQ/ps.requests .
                   71282: .SH DIAGNOSTICS
                   71283: A 0 exit status is returned if
                   71284: .I files
                   71285: were successfully processed.
                   71286: .SH BUGS
                   71287: The default line width is too small for write-white
                   71288: print engines, like the one used by the \s-1PS\s+1-2400.
                   71289: .br
                   71290: .ne 4v
                   71291: .SH FILES
                   71292: .MW \*(dQ/posttek.ps
                   71293: .br
                   71294: .MW \*(dQ/forms.ps
                   71295: .br
                   71296: .MW \*(dQ/ps.requests
                   71297: .SH SEE ALSO
                   71298: .BR dpost (1),
                   71299: .BR postdaisy(1),
                   71300: .BR postdmd(1),
                   71301: .BR postio(1),
                   71302: .BR postmd(1),
                   71303: .BR postprint(1),
                   71304: .BR postreverse(1),
                   71305: .BR psencoding (1)
                   71306: 0707070014230550131006440057030057030000011530100522627504000003400000004530post.src/posttek/posttek.ps%
                   71307: % Version 3.3.2 prologue for tektronix 4014 files.
                   71308: %
                   71309: 
                   71310: /#copies 1 store
                   71311: /aspectratio 1 def
                   71312: /fixlinewidth true def
                   71313: /font /Courier def
                   71314: /formsperpage 1 def
                   71315: /landscape true def
                   71316: /linewidth 0 def
                   71317: /magnification 1 def
                   71318: /margin 10 def
                   71319: /orientation 0 def
                   71320: /rotation 1 def
                   71321: /screenheight 3120 def
                   71322: /screenwidth 4150 def
                   71323: /spotsize 1 def
                   71324: /xoffset 0 def
                   71325: /yoffset 0 def
                   71326: 
                   71327: /useclippath true def
                   71328: /pagebbox [0 0 612 792] def
                   71329: 
                   71330: /inch {72 mul} bind def
                   71331: /min {2 copy gt {exch} if pop} bind def
                   71332: 
                   71333: /kshow {kshow} bind def                % so later references don't bind
                   71334: 
                   71335: /setup {
                   71336:        counttomark 2 idiv {def} repeat pop
                   71337: 
                   71338:        landscape {/orientation 90 orientation add def} if
                   71339: 
                   71340:        pagedimensions
                   71341:        /scaling
                   71342:                height margin sub screenheight div
                   71343:                width margin sub screenwidth div
                   71344:        min def
                   71345:        xcenter ycenter translate
                   71346:        orientation rotation mul rotate
                   71347:        xoffset inch yoffset inch translate
                   71348:        magnification dup aspectratio mul scale
                   71349:        scaling scaling scale
                   71350:        screenwidth 2 div neg screenheight 2 div neg translate
                   71351: 
                   71352:        tietodevicespace
                   71353:        linewidth scaling div setlinewidth
                   71354:        1 setlinecap
                   71355:        newpath
                   71356: } def
                   71357: 
                   71358: /pagedimensions {
                   71359:        useclippath {
                   71360:                /pagebbox [clippath pathbbox newpath] def
                   71361:        } if
                   71362:        pagebbox aload pop
                   71363:        4 -1 roll exch 4 1 roll 4 copy
                   71364:        landscape {4 2 roll} if
                   71365:        sub /width exch def
                   71366:        sub /height exch def
                   71367:        add 2 div /xcenter exch def
                   71368:        add 2 div /ycenter exch def
                   71369:        userdict /gotpagebbox true put
                   71370: } def
                   71371: 
                   71372: /pagesetup {/page exch def} bind def
                   71373: 
                   71374: /tietodevicespace {
                   71375:        fixlinewidth linewidth 0 gt and linewidth 1 lt and {
                   71376:                /moveto {
                   71377:                        2 copy /Y exch def /X exch def
                   71378:                        transform round exch round exch itransform
                   71379:                        moveto
                   71380:                } bind def
                   71381:                /lineto {
                   71382:                        2 copy /Y exch def /X exch def
                   71383:                        transform round exch round exch itransform
                   71384:                        lineto
                   71385:                } bind def
                   71386:                /rlineto {Y add exch X add exch lineto} bind def
                   71387:                /v V 0 get bind def
                   71388:        } if
                   71389: } def
                   71390: 
                   71391: /V [{moveto counttomark 2 idiv {rlineto} repeat stroke}] def
                   71392: /v V 0 get bind def
                   71393: /p {newpath spotsize 0 360 arc fill} bind def
                   71394: 
                   71395: /l {{scaling div} forall counttomark array astore 0 setdash} bind def
                   71396: /w {linewidth 0 eq {.3} {linewidth} ifelse mul linewidth add scaling div setlinewidth} bind def
                   71397: /i {3 mul 4 sub -100 div mul .5 add /spotsize exch def} bind def
                   71398: 
                   71399: /f {/charwidth exch def font findfont charwidth .6 div scalefont setfont} bind def
                   71400: 
                   71401: /t {
                   71402:        3 1 roll moveto
                   71403:        currentpoint {
                   71404:                pop pop
                   71405:                exch charwidth add exch
                   71406:                moveto currentpoint
                   71407:        } 4 -1 roll kshow
                   71408:        pop pop
                   71409: } bind def
                   71410: 
                   71411: /done {/lastpage where {pop lastpage} if} def
                   71412: 0707070014230265710407550057030057030000020677160522633077500002300000000000post.src/printfont0707070014230265721006440057030057030000010677500522627504000004000000016641post.src/printfont/printfont.ps%
                   71413: % Formatted font dump. Assumes all fonts include valid FontBBox arrays.
                   71414: %
                   71415: 
                   71416: /#copies 1 store
                   71417: /aspectratio 1 def
                   71418: /landscape false def
                   71419: /magnification 1 def
                   71420: /margin 10 def
                   71421: /orientation 0 def
                   71422: /rotation 1 def
                   71423: /xoffset 0 def
                   71424: /yoffset 0 def
                   71425: 
                   71426: /axescount 0 def
                   71427: /charwidth false def
                   71428: /graynotdef 0.85 def
                   71429: /hireslinewidth 0.2 def
                   71430: /longnames false def
                   71431: /maxsize 6.0 def
                   71432: /minsize 4.5 def
                   71433: /numbercell true def
                   71434: /radix 16 def
                   71435: /labelfont /Helvetica def
                   71436: /labelspace 36 def
                   71437: /zerocell 0 def
                   71438: 
                   71439: /roundpage true def
                   71440: /useclippath true def
                   71441: /pagebbox [0 0 612 792] def
                   71442: 
                   71443: /inch {72 mul} def
                   71444: /min {2 copy gt {exch} if pop} def
                   71445: /max {2 copy lt {exch} if pop} def
                   71446: 
                   71447: /LLx {0 get} bind def
                   71448: /LLy {1 get} bind def
                   71449: /URx {2 get} bind def
                   71450: /URy {3 get} bind def
                   71451: /BBoxHeight {dup URy exch LLy sub} bind def
                   71452: /BBoxWidth {dup URx exch LLx sub} bind def
                   71453: 
                   71454: /setup {
                   71455:        /graylevels [1 0 0] def
                   71456:        /scratchstring 512 string def
                   71457:        /Product statusdict begin /product where {pop product}{(Unknown)} ifelse end def
                   71458:        /Resolution 0 72 dtransform dup mul exch dup mul add sqrt cvi def
                   71459:        /Version /version where {pop version}{(???)} ifelse def
                   71460: 
                   71461:        landscape {/orientation 90 orientation add def} if
                   71462: 
                   71463:        pagedimensions
                   71464:        xcenter ycenter translate
                   71465:        orientation rotation mul rotate
                   71466:        width 2 div neg height 2 div translate
                   71467:        xoffset inch yoffset inch neg translate
                   71468:        margin dup neg translate
                   71469:        0 labelspace .75 mul neg translate
                   71470:        magnification dup aspectratio mul scale
                   71471:        0 0 transform round exch round exch itransform translate
                   71472: 
                   71473:        currentdict /linewidth known not {
                   71474:                /linewidth Resolution 400 le {0}{hireslinewidth} ifelse def
                   71475:        } if
                   71476: } def
                   71477: 
                   71478: /pagedimensions {
                   71479:        useclippath {
                   71480:                /pagebbox [clippath pathbbox newpath] def
                   71481:                roundpage currentdict /roundpagebbox known and {roundpagebbox} if
                   71482:        } if
                   71483:        pagebbox aload pop
                   71484:        4 -1 roll exch 4 1 roll 4 copy
                   71485:        landscape {4 2 roll} if
                   71486:        sub /width exch def
                   71487:        sub /height exch def
                   71488:        add 2 div /xcenter exch def
                   71489:        add 2 div /ycenter exch def
                   71490: } def
                   71491: 
                   71492: /CharSetup {
                   71493:        /chcode exch def
                   71494:        /chname Encoding chcode get def
                   71495:        /chstring ( ) dup 0 chcode put def
                   71496:        /chknown true def
                   71497: 
                   71498:        graylevels 0 1 put      % initial cell fill
                   71499:        graylevels 1 0 put      % cell text
                   71500:        graylevels 2 0 put      % cell border
                   71501: 
                   71502:        FontDict /CharStrings known {
                   71503:                FontDict /CharStrings get chname known not {
                   71504:                        /chknown false def
                   71505:                        graylevels 0 0 put
                   71506:                        graylevels 1 1 put
                   71507:                } if
                   71508:        } if
                   71509: 
                   71510:        chname /.notdef eq {
                   71511:                /chknown false def
                   71512:                graylevels 0 graynotdef put
                   71513:                graylevels 1 graynotdef put
                   71514:        } if
                   71515: 
                   71516:        /chwid chknown
                   71517:                {FontDict 1 scalefont setfont chstring stringwidth pop}
                   71518:                {0}
                   71519:        ifelse def
                   71520: } bind def
                   71521: 
                   71522: /CellSetup {
                   71523:        /gridwidth width margin 2 mul sub def
                   71524:        /gridheight height labelspace sub margin 2 mul sub def
                   71525:        /cellwidth gridwidth radix div def
                   71526:        /cellheight gridheight Entries radix div ceiling div def
                   71527: 
                   71528:        cellwidth cellheight dtransform truncate exch truncate exch idtransform
                   71529:        /cellheight exch def
                   71530:        /cellwidth exch def
                   71531: 
                   71532:        labelfont findfont 1 scalefont setfont
                   71533:        /LabelBBox currentfont /FontBBox get TransformBBox def
                   71534: 
                   71535:        LabelBBox 2 0 Encoding {
                   71536:                scratchstring cvs stringwidth pop
                   71537:                2 copy lt {exch} if
                   71538:                pop
                   71539:        } forall put
                   71540: 
                   71541:        /CellLabelSize
                   71542:                cellheight .20 mul cellwidth .90 mul LabelBBox BestFit
                   71543:                minsize max
                   71544:                maxsize min
                   71545:        def
                   71546:        zerocell CellOrigin cellheight add neg exch neg exch translate
                   71547: } bind def
                   71548: 
                   71549: /FontSetup {
                   71550:        FontName findfont 1 scalefont setfont
                   71551:        /BBox currentfont /FontBBox get TransformBBox def
                   71552:        /PointSize cellheight .5 mul cellwidth .8 mul BBox BestFit def
                   71553:        BBox {PointSize mul} forall BBox astore pop
                   71554: 
                   71555:        /xorigin cellwidth BBox BBoxWidth sub 2 div BBox LLx sub def
                   71556:        /yorigin cellheight BBox BBoxHeight sub 2 div BBox LLy sub def
                   71557: } bind def
                   71558: 
                   71559: /BestFit {
                   71560:        /bbox exch def
                   71561:        bbox BBoxWidth div exch
                   71562:        bbox BBoxHeight div min
                   71563: } bind def
                   71564: 
                   71565: /TransformBBox {       % font bbox to user space
                   71566:        aload pop
                   71567:        currentfont /FontMatrix get dtransform 4 2 roll
                   71568:        currentfont /FontMatrix get dtransform 4 2 roll
                   71569:        4 array astore  % should build user space bbox if all zeros
                   71570: } bind def
                   71571: 
                   71572: /CellOrigin {
                   71573:        dup
                   71574:        exch radix mod cellwidth mul
                   71575:        exch radix idiv 1 add neg cellheight mul
                   71576: } bind def
                   71577: 
                   71578: /CellOutline {
                   71579:        newpath
                   71580:        CellOrigin moveto
                   71581:        cellwidth 0 rlineto
                   71582:        0 cellheight rlineto
                   71583:        cellwidth neg 0 rlineto
                   71584:        closepath
                   71585: } bind def
                   71586: 
                   71587: /LabelCell {
                   71588:        gsave
                   71589:        chcode CellOrigin translate
                   71590:        linewidth .5 mul setlinewidth
                   71591:        labelfont findfont CellLabelSize scalefont setfont
                   71592: 
                   71593:        numbercell {
                   71594:                cellwidth .025 mul cellheight .05 mul moveto
                   71595:                chcode radix scratchstring cvrs show
                   71596:        } if
                   71597: 
                   71598:        charwidth chknown and {
                   71599:                /wid chwid 0.0005 add scratchstring cvs 0 5 getinterval def
                   71600:                cellwidth wid stringwidth pop 1.10 mul sub cellheight .05 mul moveto
                   71601:                wid show
                   71602:        } if
                   71603: 
                   71604:        longnames chknown not or {
                   71605:                cellwidth .025 mul
                   71606:                cellheight LabelBBox URy CellLabelSize mul sub .05 sub moveto
                   71607:                Encoding chcode get scratchstring cvs show
                   71608:        } if
                   71609: 
                   71610:        axescount 1 ge chknown and {    % gsave/grestore if not last
                   71611:                newpath
                   71612:                xorigin yorigin translate
                   71613: 
                   71614:                BBox LLx 0 moveto       % baseline
                   71615:                BBox URx 0 lineto stroke
                   71616: 
                   71617:                axescount 2 ge {        % vertical through current origin
                   71618:                        0 BBox LLy moveto
                   71619:                        0 BBox URy lineto stroke
                   71620:                } if
                   71621: 
                   71622:                axescount 3 ge {        % vertical through next origin
                   71623:                        chwid PointSize mul BBox LLy
                   71624:                        dtransform round exch round exch idtransform moveto
                   71625:                        0 BBox BBoxHeight rlineto stroke
                   71626:                        %chwid PointSize mul BBox URy lineto stroke
                   71627:                } if
                   71628:        } if
                   71629:        grestore
                   71630: } bind def
                   71631: 
                   71632: /PlaceChar {
                   71633:        FontName findfont PointSize scalefont setfont
                   71634:        chcode CellOrigin moveto
                   71635:        xorigin yorigin rmoveto
                   71636:        ( ) dup 0 chcode put show
                   71637: } bind def
                   71638: 
                   71639: /LabelPage {
                   71640:        labelfont findfont labelspace .75 mul .75 mul 18 min scalefont setfont
                   71641:        0 labelspace .75 mul .25 mul moveto
                   71642:        FontName scratchstring cvs show
                   71643: 
                   71644:        labelfont findfont labelspace .25 mul .75 mul 9 min scalefont setfont
                   71645:        0 gridheight neg moveto
                   71646:        0 labelspace .25 mul .75 mul neg rmoveto
                   71647:        Product show ( Version ) show Version show
                   71648:        ( \() show Resolution scratchstring cvs show (dpi\)) show
                   71649: 
                   71650:        gridwidth gridheight neg moveto
                   71651:         0 labelspace .25 mul .75 mul neg rmoveto
                   71652:        (size=, ) stringwidth pop neg 0 rmoveto
                   71653:        PointSize cvi scratchstring cvs stringwidth pop neg 0 rmoveto
                   71654:        (gray=, ) stringwidth pop neg 0 rmoveto
                   71655:        graynotdef scratchstring cvs stringwidth pop neg 0 rmoveto
                   71656:        (linewidth=) stringwidth pop neg 0 rmoveto
                   71657:        linewidth scratchstring cvs stringwidth pop neg 0 rmoveto
                   71658:        (size=) show PointSize cvi scratchstring cvs show (, ) show
                   71659:        (gray=) show graynotdef scratchstring cvs show (, ) show
                   71660:        (linewidth=) show linewidth scratchstring cvs show
                   71661: } bind def
                   71662: 
                   71663: %
                   71664: % Formatted dump of the encoded characters in a single font.
                   71665: %
                   71666: 
                   71667: /PrintFont {
                   71668:        /saveobj save def
                   71669:        /FontName exch def
                   71670:        /FontDict FontName findfont def
                   71671:        /Encoding FontDict /Encoding get def
                   71672:        /Entries Encoding length def
                   71673: 
                   71674:        CellSetup
                   71675:        FontSetup
                   71676:        LabelPage
                   71677:        zerocell 1 Entries 1 sub {
                   71678:                CharSetup
                   71679:                graylevels 0 get setgray
                   71680:                chcode CellOutline fill
                   71681:                graylevels 1 get setgray
                   71682:                LabelCell
                   71683:                PlaceChar
                   71684:                graylevels 2 get setgray
                   71685:                linewidth setlinewidth
                   71686:                chcode CellOutline stroke
                   71687:        } for
                   71688:        showpage
                   71689:        saveobj restore
                   71690: } bind def
                   71691: 
                   71692: %
                   71693: % Dump of all ROM and disk fonts - in alphabetical order.
                   71694: %
                   71695: 
                   71696: /AllFonts {
                   71697:        /AllFontNames FontDirectory maxlength array def
                   71698:        AllFontNames 0 0 put
                   71699: 
                   71700:        FontDirectory {pop AllFontNames Insert} forall
                   71701: 
                   71702:        /filenameforall where {
                   71703:                pop
                   71704:                (fonts/*)
                   71705:                {(fonts/) search pop pop pop AllFontNames Insert}
                   71706:                200 string
                   71707:                filenameforall
                   71708:        } if
                   71709: 
                   71710:        1 1 AllFontNames 0 get {
                   71711:                AllFontNames exch get cvn PrintFont
                   71712:        } for
                   71713: } bind def
                   71714: 
                   71715: /Insert {              % name in a sorted list
                   71716:        /List exch def
                   71717:        /Name exch 128 string cvs def
                   71718: 
                   71719:        /Slot 1 def
                   71720:        List 0 get {
                   71721:                Name List Slot get le {exit} if
                   71722:                /Slot Slot 1 add def
                   71723:        } repeat
                   71724: 
                   71725:        List 0 get -1 Slot {
                   71726:                dup List exch get
                   71727:                List 3 1 roll exch 1 add exch put
                   71728:        } for
                   71729:        List Slot Name put
                   71730:        List 0 List 0 get 1 add put
                   71731: } bind def
                   71732: 
                   71733: 0707070014230265731006440057030057030000010677340522627504000004000000005147post.src/printfont/printfont.sh#
                   71734: # Formatted dump of encoded characters in one or more PostScript fonts.
                   71735: # Arguments should be PostScript font names or the word all, which dumps
                   71736: # all ROM and disk based fonts.
                   71737: #
                   71738: 
                   71739: POSTLIB=/usr/lib/postscript
                   71740: PROLOGUE=$POSTLIB/printfont.ps
                   71741: 
                   71742: OPTIONS=
                   71743: COPYFILE=
                   71744: MODE=portrait
                   71745: FONTENCODING=Default
                   71746: 
                   71747: NONCONFORMING="%!PS"
                   71748: ENDPROLOG="%%EndProlog"
                   71749: BEGINSETUP="%%BeginSetup"
                   71750: ENDSETUP="%%EndSetup"
                   71751: TRAILER="%%Trailer"
                   71752: 
                   71753: SETUP=setup
                   71754: 
                   71755: while [ -n "$1" ]; do
                   71756:     case $1 in
                   71757:        -a)  shift; OPTIONS="$OPTIONS /axescount $1 def";;
                   71758:        -a*) OPTIONS="$OPTIONS /axescount `echo $1 | sed s/-a//` def";;
                   71759: 
                   71760:        -b)  shift; OPTIONS="$OPTIONS /radix $1 def";;
                   71761:        -b*) OPTIONS="$OPTIONS /radix `echo $1 | sed s/-b//` def";;
                   71762: 
                   71763:        -c)  shift; OPTIONS="$OPTIONS /#copies $1 store";;
                   71764:        -c*) OPTIONS="$OPTIONS /#copies `echo $1 | sed s/-c//` store";;
                   71765: 
                   71766:        -f)  shift; OPTIONS="$OPTIONS /labelfont /$1 def";;
                   71767:        -f*) OPTIONS="$OPTIONS /labelfont /`echo $1 | sed s/-f//` def";;
                   71768: 
                   71769:        -g)  shift; OPTIONS="$OPTIONS /graynotdef $1 def";;
                   71770:        -g*) OPTIONS="$OPTIONS /graynotdef `echo $1 | sed s/-g//` def";;
                   71771: 
                   71772:        -p)  shift; MODE=$1;;
                   71773:        -p*) MODE=`echo $1 | sed s/-p//`;;
                   71774: 
                   71775:        -q)  OPTIONS="$OPTIONS /longnames false def /charwidth false def";;
                   71776: 
                   71777:        -m)  shift; OPTIONS="$OPTIONS /magnification $1 def";;
                   71778:        -m*) OPTIONS="$OPTIONS /magnification `echo $1 | sed s/-m//` def";;
                   71779: 
                   71780:        -v)  OPTIONS="$OPTIONS /longnames true def /charwidth true def";;
                   71781: 
                   71782:        -w)  shift; OPTIONS="$OPTIONS /linewidth $1 def";;
                   71783:        -w*) OPTIONS="$OPTIONS /linewidth `echo $1 | sed s/-w//` def";;
                   71784: 
                   71785:        -x)  shift; OPTIONS="$OPTIONS /xoffset $1 def";;
                   71786:        -x*) OPTIONS="$OPTIONS /xoffset `echo $1 | sed s/-x//` def";;
                   71787: 
                   71788:        -y)  shift; OPTIONS="$OPTIONS /yoffset $1 def";;
                   71789:        -y*) OPTIONS="$OPTIONS /yoffset `echo $1 | sed s/-y//` def";;
                   71790: 
                   71791:        -z)  shift; OPTIONS="$OPTIONS /zerocell $1 def";;
                   71792:        -z*) OPTIONS="$OPTIONS /zerocell `echo $1 | sed s/-z//` def";;
                   71793: 
                   71794:        -C)  shift; COPYFILE="$COPYFILE $1";;
                   71795:        -C*) COPYFILE="$COPYFILE `echo $1 | sed s/-C//`";;
                   71796: 
                   71797:        -E)  shift; FONTENCODING=$1;;
                   71798:        -E*) FONTENCODING=`echo $1 | sed s/-E//`;;
                   71799: 
                   71800:        -L)  shift; PROLOGUE=$1;;
                   71801:        -L*) PROLOGUE=`echo $1 | sed s/-L//`;;
                   71802: 
                   71803:        -*)  echo "$0: illegal option $1" >&2; exit 1;;
                   71804: 
                   71805:        *)   break;;
                   71806:     esac
                   71807:     shift
                   71808: done
                   71809: 
                   71810: case "$MODE" in
                   71811:     l*) OPTIONS="$OPTIONS /landscape true def";;
                   71812:     *) OPTIONS="$OPTIONS /landscape false def";;
                   71813: esac
                   71814: 
                   71815: echo $NONCONFORMING
                   71816: cat $PROLOGUE
                   71817: echo $ENDPROLOG
                   71818: echo $BEGINSETUP
                   71819: cat ${COPYFILE:-/dev/null}
                   71820: echo $OPTIONS
                   71821: 
                   71822: case "$FONTENCODING" in
                   71823:     /*) cat $FONTENCODING;;
                   71824:     ?*) cat ${POSTLIB}/${FONTENCODING}.enc 2>/dev/null
                   71825: esac
                   71826: 
                   71827: echo $SETUP
                   71828: echo $ENDSETUP
                   71829: 
                   71830: for i do
                   71831:     case "$i" in
                   71832:        all) echo AllFonts;;
                   71833:        /*)  echo "$i PrintFont";;
                   71834:        ?*)  echo "/$i PrintFont";;
                   71835:     esac
                   71836: done
                   71837: 
                   71838: echo $TRAILER
                   71839: 
                   71840: 0707070014230265631006400057030057030000010672360522633077400004000000003045post.src/printfont/printfont.mkMAKE=/bin/make
                   71841: MAKEFILE=printfont.mk
                   71842: 
                   71843: OWNER=bin
                   71844: GROUP=bin
                   71845: 
                   71846: MAN1DIR=/tmp
                   71847: MAN5DIR=/usr/man/p_man/man5
                   71848: POSTLIB=/usr/lib/postscript
                   71849: POSTBIN=/usr/bin/postscript
                   71850: 
                   71851: all : printfont
                   71852: 
                   71853: install : all
                   71854:        @if [ ! -d "$(POSTBIN)" ]; then \
                   71855:            mkdir $(POSTBIN); \
                   71856:            chmod 755 $(POSTBIN); \
                   71857:            chgrp $(GROUP) $(POSTBIN); \
                   71858:            chown $(OWNER) $(POSTBIN); \
                   71859:        fi
                   71860:        @if [ ! -d "$(POSTLIB)" ]; then \
                   71861:            mkdir $(POSTLIB); \
                   71862:            chmod 755 $(POSTLIB); \
                   71863:            chgrp $(GROUP) $(POSTLIB); \
                   71864:            chown $(OWNER) $(POSTLIB); \
                   71865:        fi
                   71866:        cp printfont $(POSTBIN)/printfont
                   71867:        @chmod 755 $(POSTBIN)/printfont
                   71868:        @chgrp $(GROUP) $(POSTBIN)/printfont
                   71869:        @chown $(OWNER) $(POSTBIN)/printfont
                   71870:        cp printfont.ps $(POSTLIB)/printfont.ps
                   71871:        @chmod 644 $(POSTLIB)/printfont.ps
                   71872:        @chgrp $(GROUP) $(POSTLIB)/printfont.ps
                   71873:        @chown $(OWNER) $(POSTLIB)/printfont.ps
                   71874:        cp printfont.1 $(MAN1DIR)/printfont.1
                   71875:        @chmod 644 $(MAN1DIR)/printfont.1
                   71876:        @chgrp $(GROUP) $(MAN1DIR)/printfont.1
                   71877:        @chown $(OWNER) $(MAN1DIR)/printfont.1
                   71878: 
                   71879: clean :
                   71880: 
                   71881: clobber : clean
                   71882:        rm -f printfont
                   71883: 
                   71884: printfont : printfont.sh
                   71885:        sed "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" printfont.sh >printfont
                   71886:        @chmod 755 printfont
                   71887: 
                   71888: changes :
                   71889:        @trap "" 1 2 3 15; \
                   71890:        sed \
                   71891:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
                   71892:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
                   71893:            -e "s'^MAN1DIR=.*'MAN1DIR=$(MAN1DIR)'" \
                   71894:            -e "s'^MAN5DIR=.*'MAN5DIR=$(MAN5DIR)'" \
                   71895:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
                   71896:            -e "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" \
                   71897:        $(MAKEFILE) >XXX.mk; \
                   71898:        mv XXX.mk $(MAKEFILE); \
                   71899:        sed \
                   71900:            -e "s'^.ds dQ.*'.ds dQ $(POSTLIB)'" \
                   71901:        printfont.1 >XXX.1; \
                   71902:        mv XXX.1 printfont.1
                   71903: 
                   71904: 0707070014230265751006400057030057030000010672500522633077500003700000010150post.src/printfont/printfont.1.ds dQ /usr/lib/postscript
                   71905: .TH PRINTFONT 1 "DWB 3.2"
                   71906: .SH NAME
                   71907: .B printfont
                   71908: \- font listing program for PostScript printers
                   71909: .SH SYNOPSIS
                   71910: \*(mBprintfont\f1
                   71911: .OP "" options []
                   71912: .OP "" files []
                   71913: .SH DESCRIPTION
                   71914: .B printfont
                   71915: builds a PostScript program that prints character set tables for
                   71916: one or more PostScript fonts.
                   71917: The program is written on the standard output,
                   71918: and when sent to a PostScript printer usually prints a 16\(mu16 table
                   71919: that shows the available (encoded) characters in each font.
                   71920: The following
                   71921: .I options
                   71922: are understood:
                   71923: .TP 1.0i
                   71924: .OP \-a num
                   71925: Set the character cell axes mode to
                   71926: .IR num .
                   71927: 0 disables axes printing, 1 draws a baseline,
                   71928: 2 adds a vertical line through the character origin,
                   71929: and 3 adds a vertical line through the next character origin.
                   71930: The default is 0.
                   71931: .TP 1.0i
                   71932: .OP \-b num
                   71933: Print each table in base
                   71934: .IR num .
                   71935: The base determines the number of rows and columns in the table.
                   71936: It also affects the character code placed in the lower left corner of each cell.
                   71937: The default is 16 (hexadecimal).
                   71938: .TP 1.0i
                   71939: .OP \-c num
                   71940: Print
                   71941: .I num
                   71942: copies of each page.
                   71943: By default only one copy is printed.
                   71944: .TP 1.0i
                   71945: .OP \-f name
                   71946: Use font
                   71947: .I name
                   71948: for labeling the tables.
                   71949: The default font is Helvetica.
                   71950: .TP 1.0i
                   71951: .OP \-g num
                   71952: Use
                   71953: .I num
                   71954: as the gray level for marking cells not currently assigned to characters.
                   71955: The gray level should fall between 0 (black) and 1 (white).
                   71956: The default is 0.85.
                   71957: .TP 1.0i
                   71958: .OP \-m num
                   71959: Magnify each logical page by the factor
                   71960: .IR num .
                   71961: Pages are scaled uniformly about the origin,
                   71962: which is located near the upper left corner of each page.
                   71963: The default is 1.0.
                   71964: .TP 1.0i
                   71965: .OP \-p mode
                   71966: Print
                   71967: .I files
                   71968: in either \*(mBportrait\fP or \*(mBlandscape\fP
                   71969: .IR mode .
                   71970: Only the first character of
                   71971: .I mode
                   71972: is significant.
                   71973: The default
                   71974: .I mode
                   71975: is \*(mBportrait\fP.
                   71976: .TP 1.0i
                   71977: .OP \-v
                   71978: Completely label each character cell.
                   71979: The full character name goes in the upper left corner and the
                   71980: character width (at point size 1) goes in the lower right corner.
                   71981: .TP 1.0i
                   71982: .OP \-w num
                   71983: Set the line width to
                   71984: .I num
                   71985: points, where a point is approximately 1/72 of an inch.
                   71986: A line width of 0 means 1 pixel.
                   71987: The default line width is resolution dependent.
                   71988: .TP 1.0i
                   71989: .OP \-x num
                   71990: Translate the origin
                   71991: .I num
                   71992: inches along the x axis.
                   71993: Positive
                   71994: .I num
                   71995: shifts the table to the right.
                   71996: The default offset is 0.
                   71997: .TP 1.0i
                   71998: .OP \-y num
                   71999: Translate the origin
                   72000: .I num
                   72001: inches along the y axis.
                   72002: Positive
                   72003: .I num
                   72004: shifts the table up the page.
                   72005: The default offset is 0.
                   72006: .TP 1.0i
                   72007: .OP \-C file
                   72008: Copy
                   72009: .I file
                   72010: to the output file;
                   72011: .B file
                   72012: must contain legitimate PostScript.
                   72013: .TP 1.0i
                   72014: .OP \-E name
                   72015: Set the character encoding for text fonts to
                   72016: .IR name .
                   72017: Requesting
                   72018: .I name
                   72019: means include file
                   72020: .MI \*(dQ/ name .enc \f1.
                   72021: A nonexistent encoding file is silently ignored.
                   72022: The default selects file
                   72023: .MR \*(dQ/Default.enc .
                   72024: .TP 1.0i
                   72025: .OP \-L file
                   72026: Use
                   72027: .I file
                   72028: as the PostScript prologue.
                   72029: .br
                   72030: The default is
                   72031: .MR \*(dQ/printfont.ps .
                   72032: .PP
                   72033: Arguments should be PostScript
                   72034: .I font
                   72035: names or the word
                   72036: .MR all ,
                   72037: which means the full set of
                   72038: .SM ROM
                   72039: and disk based fonts available on a printer.
                   72040: .B printfont
                   72041: prints one font table per page.
                   72042: Each page is labeled with the
                   72043: .I font
                   72044: name, the printer product name and interpreter version number,
                   72045: and the gray level, linewidth, and printer resolution.
                   72046: .PP
                   72047: Black cells are used to mark characters listed in the font's
                   72048: .MW Encoding
                   72049: array but missing from its
                   72050: .MW CharStrings
                   72051: dictionary.
                   72052: They usually indicate an incomplete font or a mistake in the
                   72053: .MW Encoding
                   72054: array.
                   72055: The check is skipped if the font doesn't include a
                   72056: .MW CharStrings
                   72057: dictionary.
                   72058: .br
                   72059: .ne 4v
                   72060: .SH EXAMPLES
                   72061: Print the characters available in the Times-Roman, Symbol and
                   72062: ZapfDingbats fonts:
                   72063: .EX
                   72064: printfont Times-Roman Symbol ZapfDingbats | lp ...
                   72065: .EE
                   72066: Print a baseline under each character and fully label the cells:
                   72067: .EX
                   72068: printfont -a1 -v Times-Roman Symbol ZapfDingbats | lp ...
                   72069: .EE
                   72070: Dump all the fonts available on a printer using the Latin1 character encoding:
                   72071: .EX
                   72072: printfont -ELatin1 all | lp ...
                   72073: .EE
                   72074: .SH WARNINGS
                   72075: Printing a single table can take several minutes.
                   72076: Dumping all available fonts can tie a printer up for an hour or more.
                   72077: .SH FILES
                   72078: .MW \*(dQ/printfont.ps
                   72079: .br
                   72080: .MW \*(dQ/*.enc
                   72081: .SH SEE ALSO
                   72082: buildtables(1),
                   72083: dpost(1),
                   72084: postio(1),
                   72085: psencoding(1),
                   72086: trofftable(1)
                   72087: 0707070014230643060407550057030057030000021712370522627504100001700000000000post.src/tests0707070014230643071006440057030057030000011714700522627504100002700000112244post.src/tests/postmd1   .1000000e+01   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72088:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72089:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72090:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72091:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72092:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72093:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72094:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72095:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72096:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72097: 
                   72098:    .0000000e+00   .1000000e+01   .0000000e+00   .0000000e+00   .0000000e+00
                   72099:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72100:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72101:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72102:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72103:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72104:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72105:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72106:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72107:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72108: 
                   72109:    .0000000e+00   .0000000e+00   .1000000e+01   .0000000e+00   .0000000e+00
                   72110:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72111:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72112:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72113:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72114:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72115:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72116:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72117:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72118:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72119: 
                   72120:    .0000000e+00   .0000000e+00   .0000000e+00   .1000000e+01   .0000000e+00
                   72121:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72122:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72123:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72124:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72125:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72126:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72127:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72128:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72129:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72130: 
                   72131:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .1000000e+01
                   72132:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72133:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72134:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72135:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72136:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72137:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72138:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72139:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72140:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72141: 
                   72142:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72143:    .1000000e+01   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72144:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72145:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72146:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72147:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72148:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72149:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72150:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72151:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72152: 
                   72153:   -.5602721e+08   .1143984e+09  -.6207247e+08   .0000000e+00   .0000000e+00
                   72154:   -.1149580e+09   .2301959e+09  -.1138958e+09   .0000000e+00   .0000000e+00
                   72155:   -.5853962e+08   .1144553e+09  -.5355661e+08   .0000000e+00   .0000000e+00
                   72156:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72157:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72158:   -.2468074e+08   .1401407e+07   .2608215e+08   .0000000e+00   .0000000e+00
                   72159:   -.5473053e+06  -.2402412e+07  -.1855106e+07   .0000000e+00   .0000000e+00
                   72160:    .2522804e+08   .1001005e+07  -.2422704e+08   .0000000e+00   .0000000e+00
                   72161:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72162:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72163: 
                   72164:    .0000000e+00  -.5219836e+08   .1123168e+09  -.6715163e+08   .0000000e+00
                   72165:    .0000000e+00  -.1138958e+09   .2284693e+09  -.1110422e+09   .0000000e+00
                   72166:    .0000000e+00  -.6060955e+08   .1126212e+09  -.4850979e+08   .0000000e+00
                   72167:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72168:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72169:    .0000000e+00  -.2391785e+08   .3480520e+07   .2739837e+08   .0000000e+00
                   72170:    .0000000e+00  -.1855106e+07  -.5966605e+07  -.4111499e+07   .0000000e+00
                   72171:    .0000000e+00   .2577296e+08   .2486086e+07  -.2328688e+08   .0000000e+00
                   72172:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72173:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72174: 
                   72175:    .0000000e+00   .0000000e+00  -.4569685e+08   .1058615e+09  -.8114649e+08
                   72176:    .0000000e+00   .0000000e+00  -.1110422e+09   .2277521e+09  -.1023531e+09
                   72177:    .0000000e+00   .0000000e+00  -.6383463e+08   .1075339e+09  -.3707416e+08
                   72178:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72179:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72180:    .0000000e+00   .0000000e+00  -.2260163e+08   .8226099e+07   .3082772e+08
                   72181:    .0000000e+00   .0000000e+00  -.4111499e+07  -.1410188e+08  -.9990385e+07
                   72182:    .0000000e+00   .0000000e+00   .2671312e+08   .5875785e+07  -.2083734e+08
                   72183:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72184:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72185: 
                   72186:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72187:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .1000000e+01
                   72188:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72189:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72190:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72191:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72192:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72193:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72194:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72195:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72196: 
                   72197:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72198:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72199:    .1000000e+01   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72200:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72201:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72202:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72203:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72204:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72205:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72206:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72207: 
                   72208:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72209:   -.5644212e+08   .1144553e+09  -.6060955e+08   .0000000e+00   .0000000e+00
                   72210:   -.1149657e+09   .2301010e+09  -.1139830e+09   .0000000e+00   .0000000e+00
                   72211:   -.5811705e+08   .1144933e+09  -.5493231e+08   .0000000e+00   .0000000e+00
                   72212:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72213:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72214:   -.2477196e+08   .1001005e+07   .2577296e+08   .0000000e+00   .0000000e+00
                   72215:   -.3648702e+06  -.1601608e+07  -.1236738e+07   .0000000e+00   .0000000e+00
                   72216:    .2513683e+08   .6006029e+06  -.2453622e+08   .0000000e+00   .0000000e+00
                   72217:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72218: 
                   72219:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72220:    .0000000e+00  -.5355661e+08   .1126212e+09  -.6383463e+08   .0000000e+00
                   72221:    .0000000e+00  -.1139830e+09   .2279620e+09  -.1114623e+09   .0000000e+00
                   72222:    .0000000e+00  -.5916407e+08   .1128241e+09  -.5140673e+08   .0000000e+00
                   72223:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72224:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72225:    .0000000e+00  -.2422704e+08   .2486086e+07   .2671312e+08   .0000000e+00
                   72226:    .0000000e+00  -.1236738e+07  -.3977737e+07  -.2740999e+07   .0000000e+00
                   72227:    .0000000e+00   .2546378e+08   .1491651e+07  -.2397213e+08   .0000000e+00
                   72228:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72229: 
                   72230:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72231:    .0000000e+00   .0000000e+00  -.4850979e+08   .1075339e+09  -.7261747e+08
                   72232:    .0000000e+00   .0000000e+00  -.1114623e+09   .2249648e+09  -.1047203e+09
                   72233:    .0000000e+00   .0000000e+00  -.6060164e+08   .1086488e+09  -.4323591e+08
                   72234:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72235:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72236:    .0000000e+00   .0000000e+00  -.2328688e+08   .5875785e+07   .2916266e+08
                   72237:    .0000000e+00   .0000000e+00  -.2740999e+07  -.9401256e+07  -.6660257e+07
                   72238:    .0000000e+00   .0000000e+00   .2602787e+08   .3525471e+07  -.2250240e+08
                   72239:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72240: 
                   72241:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72242:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72243:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .1000000e+01
                   72244:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72245:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72246:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72247:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72248:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72249:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72250:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72251: 
                   72252:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72253:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72254:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72255:    .1000000e+01   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72256:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72257:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72258:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72259:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72260:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72261:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72262: 
                   72263:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72264:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72265:   -.5685856e+08   .1144933e+09  -.5916407e+08   .0000000e+00   .0000000e+00
                   72266:   -.1149703e+09   .2300441e+09  -.1140353e+09   .0000000e+00   .0000000e+00
                   72267:   -.5769602e+08   .1145123e+09  -.5632545e+08   .0000000e+00   .0000000e+00
                   72268:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72269:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72270:   -.2486317e+08   .6006029e+06   .2546378e+08   .0000000e+00   .0000000e+00
                   72271:   -.1824351e+06  -.8008039e+06  -.6183688e+06   .0000000e+00   .0000000e+00
                   72272:    .2504561e+08   .2002010e+06  -.2484541e+08   .0000000e+00   .0000000e+00
                   72273: 
                   72274:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72275:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72276:    .0000000e+00  -.5493231e+08   .1128241e+09  -.6060164e+08   .0000000e+00
                   72277:    .0000000e+00  -.1140353e+09   .2276577e+09  -.1117143e+09   .0000000e+00
                   72278:    .0000000e+00  -.5773604e+08   .1129256e+09  -.5438769e+08   .0000000e+00
                   72279:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72280:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72281:    .0000000e+00  -.2453622e+08   .1491651e+07   .2602787e+08   .0000000e+00
                   72282:    .0000000e+00  -.6183688e+06  -.1988868e+07  -.1370500e+07   .0000000e+00
                   72283:    .0000000e+00   .2515459e+08   .4972171e+06  -.2465738e+08   .0000000e+00
                   72284: 
                   72285:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72286:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72287:    .0000000e+00   .0000000e+00  -.5140673e+08   .1086488e+09  -.6456189e+08
                   72288:    .0000000e+00   .0000000e+00  -.1117143e+09   .2232924e+09  -.1061407e+09
                   72289:    .0000000e+00   .0000000e+00  -.5745266e+08   .1092063e+09  -.4987112e+08
                   72290:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72291:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72292:    .0000000e+00   .0000000e+00  -.2397213e+08   .3525471e+07   .2749760e+08
                   72293:    .0000000e+00   .0000000e+00  -.1370500e+07  -.4700628e+07  -.3330128e+07
                   72294:    .0000000e+00   .0000000e+00   .2534262e+08   .1175157e+07  -.2416747e+08
                   72295: 
                   72296:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72297:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72298:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72299:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .1000000e+01
                   72300:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72301:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72302:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72303:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72304:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72305:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72306: 
                   72307:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72308:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72309:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72310:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72311:    .1000000e+01   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72312:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72313:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72314:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72315:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72316:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72317: 
                   72318:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72319:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72320:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72321:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72322:    .0000000e+00   .1000000e+01   .0000000e+00   .0000000e+00   .0000000e+00
                   72323:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72324:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72325:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72326:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72327:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72328: 
                   72329:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72330:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72331:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72332:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72333:    .0000000e+00   .0000000e+00   .1000000e+01   .0000000e+00   .0000000e+00
                   72334:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72335:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72336:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72337:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72338:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72339: 
                   72340:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72341:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72342:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72343:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72344:    .0000000e+00   .0000000e+00   .0000000e+00   .1000000e+01   .0000000e+00
                   72345:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72346:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72347:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72348:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72349:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72350: 
                   72351:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72352:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72353:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72354:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72355:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .1000000e+01
                   72356:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72357:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72358:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72359:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72360:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72361: 
                   72362:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72363:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72364:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72365:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72366:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72367:    .1000000e+01   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72368:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72369:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72370:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72371:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72372: 
                   72373:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72374:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72375:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72376:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72377:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72378:    .0000000e+00   .1000000e+01   .0000000e+00   .0000000e+00   .0000000e+00
                   72379:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72380:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72381:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72382:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72383: 
                   72384:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72385:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72386:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72387:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72388:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72389:    .0000000e+00   .0000000e+00   .1000000e+01   .0000000e+00   .0000000e+00
                   72390:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72391:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72392:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72393:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72394: 
                   72395:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72396:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72397:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72398:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72399:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72400:    .0000000e+00   .0000000e+00   .0000000e+00   .1000000e+01   .0000000e+00
                   72401:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72402:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72403:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72404:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72405: 
                   72406:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72407:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72408:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72409:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72410:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72411:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .1000000e+01
                   72412:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72413:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72414:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72415:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72416: 
                   72417:   -.2468074e+08   .2531926e+08   .0000000e+00   .0000000e+00   .0000000e+00
                   72418:   -.5473053e+06  -.5473053e+06   .0000000e+00   .0000000e+00   .0000000e+00
                   72419:    .2522804e+08  -.2477196e+08   .0000000e+00   .0000000e+00   .0000000e+00
                   72420:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72421:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72422:   -.1087220e+08  -.1087220e+08   .0000000e+00   .0000000e+00   .0000000e+00
                   72423:    .2174439e+08   .2174439e+08   .0000000e+00   .0000000e+00   .0000000e+00
                   72424:   -.1087220e+08  -.1087220e+08   .0000000e+00   .0000000e+00   .0000000e+00
                   72425:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72426:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72427: 
                   72428:   -.2468074e+08   .1401407e+07   .2608215e+08   .0000000e+00   .0000000e+00
                   72429:   -.5473053e+06  -.2402412e+07  -.1855106e+07   .0000000e+00   .0000000e+00
                   72430:    .2522804e+08   .1001005e+07  -.2422704e+08   .0000000e+00   .0000000e+00
                   72431:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72432:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72433:   -.1087220e+08  -.2183162e+08  -.1095942e+08   .0000000e+00   .0000000e+00
                   72434:    .2174439e+08   .4366323e+08   .2191884e+08   .0000000e+00   .0000000e+00
                   72435:   -.1087220e+08  -.2183162e+08  -.1095942e+08   .0000000e+00   .0000000e+00
                   72436:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72437:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72438: 
                   72439:    .0000000e+00  -.2391785e+08   .3480520e+07   .2739837e+08   .0000000e+00
                   72440:    .0000000e+00  -.1855106e+07  -.5966605e+07  -.4111499e+07   .0000000e+00
                   72441:    .0000000e+00   .2577296e+08   .2486086e+07  -.2328688e+08   .0000000e+00
                   72442:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72443:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72444:    .0000000e+00  -.1095942e+08  -.2213817e+08  -.1117875e+08   .0000000e+00
                   72445:    .0000000e+00   .2191884e+08   .4427633e+08   .2235749e+08   .0000000e+00
                   72446:    .0000000e+00  -.1095942e+08  -.2213817e+08  -.1117875e+08   .0000000e+00
                   72447:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72448:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72449: 
                   72450:    .0000000e+00   .0000000e+00  -.2260163e+08   .8226099e+07   .3082772e+08
                   72451:    .0000000e+00   .0000000e+00  -.4111499e+07  -.1410188e+08  -.9990385e+07
                   72452:    .0000000e+00   .0000000e+00   .2671312e+08   .5875785e+07  -.2083734e+08
                   72453:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72454:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72455:    .0000000e+00   .0000000e+00  -.1117875e+08  -.2289026e+08  -.1171152e+08
                   72456:    .0000000e+00   .0000000e+00   .2235749e+08   .4578053e+08   .2342304e+08
                   72457:    .0000000e+00   .0000000e+00  -.1117875e+08  -.2289026e+08  -.1171152e+08
                   72458:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72459:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72460: 
                   72461:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72462:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72463:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72464:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72465:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72466:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72467:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .1000000e+01
                   72468:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72469:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72470:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72471: 
                   72472:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72473:   -.2477196e+08   .2522804e+08   .0000000e+00   .0000000e+00   .0000000e+00
                   72474:   -.3648702e+06  -.3648702e+06   .0000000e+00   .0000000e+00   .0000000e+00
                   72475:    .2513683e+08  -.2486317e+08   .0000000e+00   .0000000e+00   .0000000e+00
                   72476:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72477:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72478:   -.1087220e+08  -.1087220e+08   .0000000e+00   .0000000e+00   .0000000e+00
                   72479:    .2174439e+08   .2174439e+08   .0000000e+00   .0000000e+00   .0000000e+00
                   72480:   -.1087220e+08  -.1087220e+08   .0000000e+00   .0000000e+00   .0000000e+00
                   72481:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72482: 
                   72483:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72484:   -.2477196e+08   .1001005e+07   .2577296e+08   .0000000e+00   .0000000e+00
                   72485:   -.3648702e+06  -.1601608e+07  -.1236738e+07   .0000000e+00   .0000000e+00
                   72486:    .2513683e+08   .6006029e+06  -.2453622e+08   .0000000e+00   .0000000e+00
                   72487:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72488:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72489:   -.1087220e+08  -.2183162e+08  -.1095942e+08   .0000000e+00   .0000000e+00
                   72490:    .2174439e+08   .4366323e+08   .2191884e+08   .0000000e+00   .0000000e+00
                   72491:   -.1087220e+08  -.2183162e+08  -.1095942e+08   .0000000e+00   .0000000e+00
                   72492:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72493: 
                   72494:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72495:    .0000000e+00  -.2422704e+08   .2486086e+07   .2671312e+08   .0000000e+00
                   72496:    .0000000e+00  -.1236738e+07  -.3977737e+07  -.2740999e+07   .0000000e+00
                   72497:    .0000000e+00   .2546378e+08   .1491651e+07  -.2397213e+08   .0000000e+00
                   72498:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72499:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72500:    .0000000e+00  -.1095942e+08  -.2213817e+08  -.1117875e+08   .0000000e+00
                   72501:    .0000000e+00   .2191884e+08   .4427633e+08   .2235749e+08   .0000000e+00
                   72502:    .0000000e+00  -.1095942e+08  -.2213817e+08  -.1117875e+08   .0000000e+00
                   72503:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72504: 
                   72505:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72506:    .0000000e+00   .0000000e+00  -.2328688e+08   .5875785e+07   .2916266e+08
                   72507:    .0000000e+00   .0000000e+00  -.2740999e+07  -.9401256e+07  -.6660257e+07
                   72508:    .0000000e+00   .0000000e+00   .2602787e+08   .3525471e+07  -.2250240e+08
                   72509:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72510:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72511:    .0000000e+00   .0000000e+00  -.1117875e+08  -.2289026e+08  -.1171152e+08
                   72512:    .0000000e+00   .0000000e+00   .2235749e+08   .4578053e+08   .2342304e+08
                   72513:    .0000000e+00   .0000000e+00  -.1117875e+08  -.2289026e+08  -.1171152e+08
                   72514:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72515: 
                   72516:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72517:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72518:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72519:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72520:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72521:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72522:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72523:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .1000000e+01
                   72524:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72525:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72526: 
                   72527:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72528:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72529:   -.2486317e+08   .2513683e+08   .0000000e+00   .0000000e+00   .0000000e+00
                   72530:   -.1824351e+06  -.1824351e+06   .0000000e+00   .0000000e+00   .0000000e+00
                   72531:    .2504561e+08  -.2495439e+08   .0000000e+00   .0000000e+00   .0000000e+00
                   72532:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72533:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72534:   -.1087220e+08  -.1087220e+08   .0000000e+00   .0000000e+00   .0000000e+00
                   72535:    .2174439e+08   .2174439e+08   .0000000e+00   .0000000e+00   .0000000e+00
                   72536:   -.1087220e+08  -.1087220e+08   .0000000e+00   .0000000e+00   .0000000e+00
                   72537: 
                   72538:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72539:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72540:   -.2486317e+08   .6006029e+06   .2546378e+08   .0000000e+00   .0000000e+00
                   72541:   -.1824351e+06  -.8008039e+06  -.6183688e+06   .0000000e+00   .0000000e+00
                   72542:    .2504561e+08   .2002010e+06  -.2484541e+08   .0000000e+00   .0000000e+00
                   72543:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72544:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72545:   -.1087220e+08  -.2183162e+08  -.1095942e+08   .0000000e+00   .0000000e+00
                   72546:    .2174439e+08   .4366323e+08   .2191884e+08   .0000000e+00   .0000000e+00
                   72547:   -.1087220e+08  -.2183162e+08  -.1095942e+08   .0000000e+00   .0000000e+00
                   72548: 
                   72549:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72550:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72551:    .0000000e+00  -.2453622e+08   .1491651e+07   .2602787e+08   .0000000e+00
                   72552:    .0000000e+00  -.6183688e+06  -.1988868e+07  -.1370500e+07   .0000000e+00
                   72553:    .0000000e+00   .2515459e+08   .4972171e+06  -.2465738e+08   .0000000e+00
                   72554:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72555:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72556:    .0000000e+00  -.1095942e+08  -.2213817e+08  -.1117875e+08   .0000000e+00
                   72557:    .0000000e+00   .2191884e+08   .4427633e+08   .2235749e+08   .0000000e+00
                   72558:    .0000000e+00  -.1095942e+08  -.2213817e+08  -.1117875e+08   .0000000e+00
                   72559: 
                   72560:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72561:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72562:    .0000000e+00   .0000000e+00  -.2397213e+08   .3525471e+07   .2749760e+08
                   72563:    .0000000e+00   .0000000e+00  -.1370500e+07  -.4700628e+07  -.3330128e+07
                   72564:    .0000000e+00   .0000000e+00   .2534262e+08   .1175157e+07  -.2416747e+08
                   72565:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72566:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72567:    .0000000e+00   .0000000e+00  -.1117875e+08  -.2289026e+08  -.1171152e+08
                   72568:    .0000000e+00   .0000000e+00   .2235749e+08   .4578053e+08   .2342304e+08
                   72569:    .0000000e+00   .0000000e+00  -.1117875e+08  -.2289026e+08  -.1171152e+08
                   72570: 
                   72571:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72572:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72573:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72574:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72575:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72576:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72577:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72578:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72579:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .1000000e+01
                   72580:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72581: 
                   72582:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72583:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72584:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72585:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72586:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72587:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72588:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72589:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72590:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72591:    .1000000e+01   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72592: 
                   72593:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72594:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72595:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72596:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72597:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72598:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72599:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72600:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72601:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72602:    .0000000e+00   .1000000e+01   .0000000e+00   .0000000e+00   .0000000e+00
                   72603: 
                   72604:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72605:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72606:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72607:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72608:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72609:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72610:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72611:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72612:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72613:    .0000000e+00   .0000000e+00   .1000000e+01   .0000000e+00   .0000000e+00
                   72614: 
                   72615:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72616:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72617:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72618:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72619:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72620:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72621:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72622:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72623:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72624:    .0000000e+00   .0000000e+00   .0000000e+00   .1000000e+01   .0000000e+00
                   72625: 
                   72626:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72627:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72628:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72629:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72630:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72631:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72632:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72633:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72634:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00
                   72635:    .0000000e+00   .0000000e+00   .0000000e+00   .0000000e+00   .1000000e+01
                   72636: 
                   72637: 
                   72638: 
                   72639: 0707070014230643101006440057030057030000011716100522627504100003000000063512post.src/tests/postbgi17B+@J@\6556I 03  09-23-84   22.961  frame no.  01    
                   72640:    MH9220,M158,DREXLER                                     +BCD1@@`G+BxBu 0.1+BCD1AN@@@@`G@@@G+CtBu 0.2+DMCD1AO@@@@`G@@@G+EBBu 0.3+E\CD1AN@@@@`G@@@G+FPBu 0.4+FjCD1AN@@@@`G@@@G+G_Bu 0.5+GxCD1AN@@@@`G@@@G+HmBu 0.6+IFCD1AN@@@@`G@@@G+I{Bu 0.7+JTCD1AN@@@@`G@@@G+KIBu 0.8+KbCD1AN@@@@`G@@@G+LWBu 0.9+LpCD1AO@@@@`G@@@G+MeBu 1.0+HXB] X+BCD1`G@@+BmB}-1.0+BCD1@@A``G@@@G@@+BmDQ-0.8+BDd1@@A``G@@@G@@+BmEq-0.6+BFD1@@A``G@@@G@@+BmGQ-0.4+BGd1@@A``G@@@G@@+BmHq-0.2+BID1@@A``G@@@G@@+BmJK 0.0+BJd1@@A``G@@@G@@+BmKk 0.2+BLD1@@A``G@@@G@@+BmMK 0.4+BMd1@@A``G@@@G@@+BmNj 0.6+BOD1@@A``G@@@G@@+BmPJ 0.8+BPd1@@A``G@@@G@@+BmQj 1.0+BYJ] Y+BN~1ANBnAO@@ANbnANdZANdZANbnAN@@ANBnAODZ%7B+@J@\6556I 03  09-23-84   22.961  frame no.  02    
                   72641:    MH9220,M158,DREXLER                                     +BCD1@@`J+BxBm107A+CNBw-1+BCD1CT@@@@`G@@@GA|@@@@`G@@@GAX@@@@`G@@@GAD@@@@`G@@@G@x@@@@`G@@@G@o@@@@`G@@@G@h@@@@`G@@@G@d@@@@`G@@@G@a@@@@`J@@@J7B+MwBm107A+NMBw07B+HXBX X+BCD1`G@@+BmB}-1.0+BCD1@@A``G@@@G@@+BmDQ-0.8+BDd1@@A``G@@@G@@+BmEq-0.6+BFD1@@A``G@@@G@@+BmGQ-0.4+BGd1@@A``G@@@G@@+BmHq-0.2+BID1@@A``G@@@G@@+BmJK 0.0+BJd1@@A``G@@@G@@+BmKk 0.2+BLD1@@A``G@@@G@@+BmMK 0.4+BMd1@@A``G@@@G@@+BmNj 0.6+BOD1@@A``G@@@G@@+BmPJ 0.8+BPd1@@A``G@@@G@@+BmQj 1.0+BYJ] Y+BN~1CTBnA|@@AXbnADdZ@xdZ@obn@h@@@dBn@aDZ%7B+@J@\6556I 03  09-23-84   22.961  frame no.  03    
                   72642:    MH9220,M158,DREXLER                                     +BN~1CTBnA|@@AXbnADdZ@xdZ@obn@h@@@dBn@aDZ%7B+@J@\6556I 03  09-23-84   22.961  frame no.  04    
                   72643:    MH9220,M158,DREXLER                                     7C+EWQhEXAMPLE OF A POLAR PLOT+J_Hr1@@`G+J_Hr1B@@@@@`G@@@G7B+LEHb 0.4+L_Hr1B@@@@@`G@@@G+NEHb 0.8+KmHJREAL AXES+J_Hr1`G@@+J_Hr1@@B@`G@@@G@@+JLJX 0.4+J_Jr1@@B@`G@@@G@@+JLLX 0.8+J_Lr1@@B@`G@@@G@@+JLNX 1.2+J_Nr1@@A`G@@@G@@+JLPX 1.6+IyL@IMAG AXES+B_Hr1@@`G+BXHb 1.6+B_Hr1B@@@@@`G@@@G+DFHb 1.2+D_Hr1B@@@@@`G@@@G+FFHb 0.8+F_Hr1B@@@@@`G@@@G+HFHb 0.4+H_Hr1B@@@@@`G@@@G+F^HJ +J_Dr1`G@@+JLDk 0.8+J_Dr1@@B@`G@@@G@@+JLFY 0.4+J_Fr1@@B@`G@@@G@@+IyFq +JdHm1@@@K@J@@@@`K`J@@+JiHr1@J@B@I@C@J@E@H@E@I@G@G@H@G@H@E@J@E@J@C@K+KmIr1@@@J@J@@@@`J`J@@+KrIw1@C@K@A@L@@@M`B@L`C@M`D@L`E@M`G@L`H@L`I@K+KJKk1@@@J@K@@@@`J`K@@+KPKp1`K@J`L@J`L@H`N@H`O@F`O@F`P@D`Q@C`Q@A`Q@@+HxLc1@@@J@K@@@@`J`K@@+H~Lh1`R`B`R`C`Q`E`R`F`Q`G`P`I`P`K`O`K`N`M`M`O+FWKQ1@@@J@J@@@@`J`J@@+F\KV1`L`O`K`P`J`R`H`R`G`R`F`T`D`S`B`T`A`T@A`T+E[HY1@@@J@J@@@@`J`J@@+E`H^1@B`T@D`T@F`S@G`S@H`R@J`Q@K`P@L`P@M`N@N`M+FrEm1@@@J@J@@@@`J`J@@+FwEr1@O`L@P`J@P`I@Q`H@R`F@Q`D@R`C@R`B@Q@@@Q@A+I[Dx1@@@J@J@@@@`J`J@@+I`D}1@Q@C@P@D@O@E@O@G@N@G@L@I@L@J@K@J@I@K@H@L+K\FF1@@@J@J@@@@`J`J@@+KaFK1@G@L@E@L@D@M@C@L@B@M@@@L`A@L`C@L`C@K`E@J+KeG}1@@@J@J@@@@`J`J@@+KjHB1`E@J`G@H`G@H`I@F`H@F`J@D`I@C`J@B`J@A@J@@+JdHm1@@@K@J@@@@`K`J@@%7B+@J@\6556I 03  09-23-84   22.961  frame no.  05    
                   72644:    MH9220,M158,DREXLER                                     7C+EESHTHE USE OF CURVE AND GRAF+B_CD1@@`G7B+BXBu 0.0+B_CD1AM@@@@`G@@@G+CSBu 1.0+ClCD1AM@@@@`G@@@G+D_Bu 2.0+DyCD1AM@@@@`G@@@G+ElBu 3.0+FFCD1AL@@@@`G@@@G+FyBu 4.0+GRCD1AM@@@@`G@@@G+HFBu 5.0+H_CD1AM@@@@`G@@@G+IRBu 6.0+IlCD1AL@@@@`G@@@G+J_Bu 7.0+JxCD1AM@@@@`G@@@G+KlBu 8.0+LECD1AM@@@@`G@@@G+LyBu 9.0+MRCD1AM@@@@`G@@@G+MBu 10.0+GzB]X LABEL+B_CD1`G@@+BMB} 0.0+B_CD1@@A``G@@@G@@+BMDK 1.0+B_Dd1@@A``G@@@G@@+BMEk 2.0+B_FD1@@A``G@@@G@@+BMGK 3.0+B_Gd1@@A``G@@@G@@+BMHk 4.0+B_ID1@@A``G@@@G@@+BMJK 5.0+B_Jd1@@A``G@@@G@@+BMKk 6.0+B_LD1@@A``G@@@G@@+BMMK 7.0+B_Md1@@A``G@@@G@@+BMNj 8.0+B_OD1@@A``G@@@G@@+BMPJ 9.0+B_Pd1@@A``G@@@G@@+BMQd 10.0+AyIY LABEL+B^CC1@@OBLB@@@@oBlB@@+B_CD1@@O@L@@@@@o@l@@@+BaCF1@@N|K|@@@@n|k|@@+BbCI1@@@J@J@@@@`J`J@@+BgCN1@H@J@G@I@H@J@H@I@G@J@H@J@H@I@G@J@H@I@H@J+CoDi1@@@J@J@@@@`J`J@@+CtDn1@G@I@H@J@H@J@G@I@H@J@H@I@G@J@H@J@H@I@G@J+D{FI1@@@J@K@@@@`J`K@@+E@FN1@H@I@H@J@G@J@H@I@H@J@H@I@G@J@H@J@H@I@G@J+FHGi1@@@J@J@@@@`J`J@@+FMGn1@H@I@H@J@G@J@H@I@H@J@G@I@H@J@H@I@G@J@H@J+GUII1@@@J@J@@@@`J`J@@+GZIN1@H@I@G@J@H@I@H@J@G@J@H@I@H@J@G@I@H@J@H@J+HbJh1@@@K@J@@@@`K`J@@+HgJn1@G@I@H@J@H@I@G@J@H@J@H@I@G@J@H@I@H@J@G@J+InLH1@@@K@J@@@@`K`J@@+IsLN1@H@I@H@J@G@I@H@J@H@I@G@J@H@J@H@I@G@J@H@I+J{Mh1@@@K@J@@@@`K`J@@+K@Mm1@H@J@G@J@H@I@H@J@G@I@H@J@H@J@G@I@H@J@H@I+LHOH1@@@J@J@@@@`J`J@@+LMOM1@G@J@H@J@H@I@H@J@G@I@H@J@H@J@G@I@H@J@H@I+MTPh1@@@J@K@@@@`J`K@@+MZPm1@G@J@H@I@H@J@G@J@H@I@H@J@G@I@H@J@H@J+NYQ1@@@J@K@@@@`J`K@@+BdB1`B@C@@@E@B@C@F@@@B`C@@`E`B`C`F@@+CKCC1`C@B@@@E@C@C@E@@@B`C@@`E`B`B`E@@+CqCK1`B@B@@@F@B@B@E@@@C`B@@`F`C`B`E@@+DXCX1`C@B@@@E@C@C@E@@@B`C@@`E`B`B`E@@+D~Cj1`C@B@@@E@C@C@E@@@C`C@@`E`C`B`E@@+EdD@1`B@C@@@E@B@B@E@@@C`B@@`E`C`C`E@@+FKD[1`C@C@@@E@C@C@E@@@B`C@@`E`B`C`E@@+FqD|1`C@B@@@E@C@C@E@@@C`C@@`E`C`B`E@@+GWEa1`B@B@@@E@B@C@E@@@C`C@@`E`C`B`E@@+G~FJ1`C@C@@@E@C@B@E@@@B`B@@`E`B`C`E@@+HdFy1`B@B@@@E@B@C@E@@@C`C@@`E`C`B`E@@+IJGl1`B@C@@@E@B@B@F@@@B`B@@`E`B`C`F@@+IqHd1`C@C@@@E@C@B@E@@@B`B@@`E`B`C`E@@+JWIa1`B@C@@@E@B@B@E@@@C`B@@`E`C`C`E@@+J~Jc1`C@B@@@E@C@C@E@@@B`C@@`E`B`B`E@@+KdKi1`C@C@@@E@C@C@E@@@C`C@@`E`C`C`E@@+LJLu1`B@B@@@E@B@C@E@@@C`C@@`E`C`B`E@@+LqNE1`C@B@@@E@C@C@E@@@B`C@@`E`B`B`E@@+MWOZ1`C@B@@@E@C@C@E@@@C`C@@`E`C`B`E@@+M}Ps1`B@C@@@E@B@C@E@@@C`C@@`E`C`C`E@@+N\Q1`C@B@@@E@C@C@E@@@C`C@@`E`C`B`E@@+BgCD1@H@@@G@@@H@@@H@@@G@A@H@@@H@@@G@@@H@@@H@A@G@@@H@@@H@A@G@A@H@@@H@A@G@A@H@A@H@A@G@A@H@B@H@A@G@B@H@A@H@B@H@B@G@B@H@C@H@B@G@C@H@C@H@C@G@C@H@C@H@D@G@D@H@D@H@D@G@E@H@D@H@E@G@F@H@E@H@F@G@F@H@F@H@F@G@G@H@G+H_D|1@H@H@G@G@H@H@H@H@G@I@H@I@H@I@G@J@H@I@H@K@G@J@H@K@H@K@G@L@H@L@H@L@G@M@H@M@H@M@G@N@H@O@H@N@G@P@H@O@H@P@G@P@H@Q@H@R@G@Q@H@S@H@R@G@S@H@T@H@T@H@T@G@V@H@U@H@V@G@W@H@W@H@W@G@X@H@Y@H@Y@G@Z@H@Z@H@[@G@[@H@\+NWQg1@H@]+BwQZTHREE CURVES ON THE SAME AXIS SYSTEM HAVING+D}PjDIFFERENT MARKER TYPES%7B+@J@\6556I 03  09-23-84   22.961  frame no.  06    
                   72645:    MH9220,M158,DREXLER                                     7C+D@I]XGRAF WITH A GRID+LcCo1@G@@7B+LsCh 0.0+LcCo1@@Ag@G@@`G@@+LsD| 0.1+LcEV1@@Af@G@@`G@@+LsFc 0.2+LcF|1@@Af@G@@`G@@+LsHI 0.3+LcHb1@@Ag@G@@`G@@+LsIo 0.4+LcJI1@@Af@G@@`G@@+LsKV 0.5+LcKo1@@Af@G@@`G@@+LsL| 0.6+LcMU1@@Ag@G@@`G@@+LsNb 0.7+LcN|1@@Af@G@@`G@@+LsPI 0.8+LcPb1@@Af@G@@`G@@+LsQo 0.9+LcRH1@@Ag@G@@`G@@+LsSU 1.0+MKJBX AXIS IS GRAF TYPE+LcCo1@@`G+LnC_1`E@@+LcCc1@@@@@@`I@@@@@B@B+L^Cc1@@@@`A@@@@@@@A@@+LXCc1`A@@`A@@`A`B@@`D@A`B@A`A@A@@@A@A@A@B@@@D`A@B`A@@+LcCo1b@@@@@`G@@@G+JzC_1`E@@+JpCc1`A@@`A@@`A`B@@`D@A`B@A`A@A@@@A@A@A@B@@@D`A@B`A@@+JjCc1@@@@`A@@@@@@@A@@+JeCc1`B@@`A@@`A`A@@`C@A`A@A@@@B@@@@`D`D@@+JcCo1a@@@@`G@@@G+HwCc1`B@@`A@@`A`B@@`D@A`B@A`A@B@@@@@A@A@B@@@D`A@B@@@@+HpCc1@@@@`A@@@@@@@A@@+HkCc1`B@@`A@@@@`B@@`D@@`B@A`A@B@@@A@A@@@B@@@D@@@B`A@@+HdCo1b@@@@@`G@@@G+FwCc1`B@@`A@@@@`B@@`D@@`B@A`A@B@@@A@A@@@B@@@D@@@B`A@@+FqCc1@@@@`B@@@@@@@B@@+FlCc1`C@@@@@@`A`A@@`C@A`A@@@@@C@@@@`D`D@@+FdCo1b@@@@@`G@@@G+DuCc1@@@@@@`I@A@@@B@B+DqCc1@@@@`B@@@@@@@B@@+DkCc1`B@@`A@@@@`B@@`D@@`B@A`A@B@@@A@A@@@B@@@D@@@B`A@@+JMCJ1@C`H@@@B+JMCO1@@@A@@`F`D`H@@@B+IsCK1@F@@+IzCO1@A@A`D`N`E@N@@`A+InCO1@A@A`I`N@A@B+InCD1@A`B`I@N@@`A+I`CB1@B@@+I`CP1@@`N`B@@+IbCP1`D@@+IZCM1`A@B`A@A`C@@`B`A@@`B@@`A@@`B@B`A@C@@@B`A@@`B@@@@@@`B`B`B`C@@`B@B@@@B+IBCB1@B@@+IBCP1@@`N`B@@+IDCP1`D@@+H|CM1`A@B`A@A`D@@`A`A@@`B@@`A@@`B@A`A@D@@@A`A@A`B@@@@`A`B`A`B`D@@`A@B@@@B+H`CJ1`B@@@@@F@F@@@@`A@A`B@@`G`A`C@@`A`D@@`A@B`A@B+HZCO1@@@A@@`N`F@@`A@B@@@B@@@@@@@B@A@A@F@@+HUCI1`C@G@A`A+HGCK1@F@@+HNCO1@A@A`E`N`E@N@A`A+HCCO1@@@A@@`N`F@@`A@B`A@B@@@A@A@B@A@A@F@@+GxCO1@@@A@@`N@@@B+GpCD1@@`B@@@N@@`A+GpCI1@H@@+G]CB1@D@@+G]CO1@@@A@@`N`E@@+GQCJ1@D`H`A@B+GQCO1@@@A@@`F`D`H@A@B+GJCO1@@@A@@`N`E@@`B@B@@@B@@@A@@@B@B@A@E@@+FwCP1@H@@@@`N`H@@+FwCI1@H@@+LcDI1g@@+DdDc1G@@+LcD|1g@@+DdEV1G@@+LcEo1g@@+DdFI1G@@+LcFc1g@@+DdF|1G@@+LcGV1g@@+DdGo1G@@+LcHI1g@@+DdHb1G@@+LcH|1g@@+DdIV1G@@+LcIo1g@@+DdJI1G@@+LcJb1g@@+DdJ|1G@@+LcKV1g@@+DdKo1G@@+LcLI1g@@+DdLb1G@@+LcL|1g@@+DdMU1G@@+LcMo1g@@+DdNI1G@@+LcNb1g@@+DdN|1G@@+LcOU1g@@+DdOo1G@@+LcPH1g@@+DdPb1G@@+LcP|1g@@+DdQU1G@@+LcQo1g@@+DdRH1G@@+LcRb1g@@+DdR|1G@@+LcSU1g@@+KcCo1@@P@+JcSo1@@p@+IcCo1@@P@+HcSo1@@p@+GdCo1@@P@+FdSo1@@p@+EdCo1@@P@+LcCo1g@@@@P@G@@@@p@+GfCz1`v@J`l@J``@J`R@K`D@J@J@J@V@J@_@J@g@K@l@J@m@J@l@J@h@K@b@J@[@J@Q@J@G@K`B@J`K@J`R@J`Y@J`]@K`^@J`_@J`^@J`Y@K`U@J`O@J`H@J`B@K@D@J@K@J@O@J@R@J@U@K@U@J@U@J@S@J@P@K@L@J@H@J@D@J`A@K`E@J`I@J`L@J`M@K`O@J`N@J+HdKo1`N@J`L@J`J@K`G@J`D@J`A@J@B@K@E@J@G@J@I@J@I@K@K@J@I@J@I@J@H@J@F@K@D@J@A@J@@@J`C@K`D@J`E@J`G@J`G@K`F@J`G@J`F@J`D@J`D@K`A@J`A@J@A@J@B@K@D@J@D@J@D@J@E@K@E@J@D@J@D@J@B@J@B@K@A@J@@@J`A@J`B@K`C@J`C@J`C@J+HgSd1`C@K+DsCz1@^@J@h@J@q@J@v@K@v@J@t@J@o@J@g@J@]@K@R@J@F@J`F@J`O@K`X@J``@J`c@J`f@K`e@J`b@J`]@J`X@J`P@K`H@J@@@J@G@J@N@K@S@J@W@J@Y@J@Z@K@Y@J@V@J@R@J@N@J@H@K@C@J`B@J`H@J`K@K`O@J`Q@J`Q@J`R@K`P@J`N@J`K@J`H@K`C@J@@@J+GkKo1@C@J@F@J@J@K@J@J@L@J@M@J@K@K@K@J@H@J@G@J@D@K@A@J`A@J`D@J`E@J`G@K`H@J`H@J`H@J`H@K`G@J`E@J`D@J`A@K@@@J@A@J@C@J@E@J@E@K@E@J@F@J@F@J@E@K@D@J@C@J@B@J@@@K@@@J`B@J`C@J`C@J`D@K`C@J`D@J`D@J`C@K`C@J`A@J`A@J+HWSd1@@@K%7B+@J@\6556I 03  09-23-84   22.961  frame no.  07    
                   72646:    MH9220,M158,DREXLER                                     7C+ENRhLOG TYPE GRID USING YLOG+B^Ch1@@NALB@@@@nAlB@@+B_Ci1@@ML@@@@@ml@@@+BaCj1@@M}K|@@@@m}k|@@+B_Ci1@@`G7B+BXCZ-1.5+B_Ci1B@@@@@`G@@@G+DLCZ-1.0+D_Ci1B@@@@@`G@@@G+FLCZ-0.5+F_Ci1B@@@@@`G@@@G+HFCZ 0.0+H_Ci1B@@@@@`G@@@G+JFCZ 0.5+J_Ci1B@@@@@`G@@@G+LECZ 1.0+L_Ci1B@@@@@`G@@@G+NECZ 1.5+FlCAX AXIS IS GRAPH TYPE+B_Ci1`J@@+BKCa107A+BACx-2+B_Ci1@@BG`G@@@G@@@@AN`G@@@G@@@@@x`G@@@G@@@@@l`G@@@G@@@@@c`G@@@G@@@@@^`G@@@G@@@@@Z`G@@@G@@@@@W`G@@@G@@@@@U`J@@@J@@7B+BKJa107A+BAJw-1+B_Ji1@@BF`G@@@G@@@@AO`G@@@G@@@@@x`G@@@G@@@@@k`G@@@G@@@@@d`G@@@G@@@@@^`G@@@G@@@@@Z`G@@@G@@@@@W`G@@@G@@@@@T`J@@@J@@7B+BKQa107A+BAQw07B+AtJIY AXIS+C_Ci1@@M+D_Qh1@@m+E_Ci1@@M+F_Qh1@@m+G_Ci1@@M+H_Qh1@@m+I_Ci1@@M+J_Qh1@@m+K_Ci1@@M+L_Qh1@@m+M_Ci1@@M+B_DL1L@@@+N_Dj1l@@@+B_ED1L@@@+N_E[1l@@@+B_Ep1L@@@+N_FB1l@@@+B_FS1L@@@+N_Fc1l@@@+B_Fq1L@@@+N_F~1l@@@+B_GK1L@@@+N_GW1l@@@+B_Gb1L@@@+N_Gl1l@@@+B_Gv1L@@@+N_H@1l@@@+B_HI1L@@@+N_HR1l@@@+B_HZ1L@@@+N_Hb1l@@@+B_Hi1L@@@+N_Hq1l@@@+B_Hx1L@@@+N_H1l@@@+B_IE1L@@@+N_IU1l@@@+B_Ic1L@@@+N_Iq1l@@@+B_I}1L@@@+N_JI1l@@@+B_JT1L@@@+N_J_1l@@@+B_Ji1L@@@+N_KL1l@@@+B_Kj1L@@@+N_LD1l@@@+B_L[1L@@@+N_Lo1l@@@+B_MB1L@@@+N_MS1l@@@+B_Mb1L@@@+N_Mq1l@@@+B_M~1L@@@+N_NK1l@@@+B_NV1L@@@+N_Nb1l@@@+B_Nl1L@@@+N_Nv1l@@@+B_O@1L@@@+N_OI1l@@@+B_OQ1L@@@+N_OZ1l@@@+B_Oa1L@@@+N_Oi1l@@@+B_Op1L@@@+N_Ow1l@@@+B_O~1L@@@+N_PE1l@@@+B_PT1L@@@+N_Pc1l@@@+B_Pp1L@@@+N_P}1l@@@+B_QI1L@@@+N_QT1l@@@+B_Q^1L@@@+B_Ci1@@ML@@@@@ml@@@+I]Ci1@vBG@lAN@_@x@R@l@D@c`I@^`V@Z``@W`g@U`k@R`n@Q`l@P`h@N`b@M`Z@M`Q@L`G@K@B@J@J@J@S@J@X@I@]@H@_@I@_@H@]@G@Z@H@U@G@N@G@I@F@B@G`E@F`J@F`O@E`R@F`U@F`U@E`U@E`S@E`P@E`M@E`H@E`C@D@A@E@E@D@I@D@K@D@N@E@N@D@O@C+H_Oa1@N@D@L@D@J@D@G@C@D@D@A@C`C@D`D@C`G@D`I@C`J@C`J@C`J@C`I@C`G@C`F@C`D@C`B@C@A@C@B@C@D@C@F@B@F@C@G@C@G@B@F@C@F@B@E@C@C@B@B@C@@@B`A@C`B@B`C@B`D@C`E@B`E@B`D@B`E@C`C@B`C@B`B@B@@@B@@@B@A@B@B@B@B@B@C@B@D@B+H\Qf1@C@B+LOCi1`]BG`iAN`p@x`v@l`w@c`t@^`o@Z`f@W`]@U`R@R`F@Q@E@P@P@N@X@M@_@M@d@L@e@K@e@J@b@J@^@J@W@I@P@H@I@I@@@H`G@G`N@H`T@G`W@G`Y@F`Z@G`X@F`V@F`S@E`M@F`I@F`C@E@C@E@G@E@L@E@N@E@Q@E@R@D@Q@E@P@D@N@D@K@D@H@E@D@D@@@C+IXOa1`C@D`G@D`I@D`K@C`L@D`L@C`L@D`J@C`I@D`F@C`D@C`B@C@B@C@C@C@F@C@F@C@H@C@I@C@H@C@H@C@F@C@E@B@D@C@B@C@@@B`B@C`C@B`D@C`E@B`F@C`F@B`E@C`E@B`D@B`C@C`B@B`A@B@A@B@B@C@B@B@C@B@D@B@D@B@D@B@D@B@C@B@B@B@B@B@A@B+HlQf1@@@B%7B+@J@\6556I 03  09-23-84   22.961  frame no.  08    
                   72647:    MH9220,M158,DREXLER                                     7C+E`QhA POLAR PLOT WITH GRID+H_Jr1@@`G+H_Jr1B@@@@@`G@@@G7B+JFJb 0.5+J_Jr1B@@@@@`G@@@G+LEJb 1.0+L_Jr1B@@@@@`G@@@G+NEJb 1.5+JJJRADIUS+H_Jr1`G@@+H_Jr1@@B@`G@@@G@@+HMLX 0.5+H_Lr1@@B@`G@@@G@@+HMNX 1.0+H_Nr1@@A`G@@@G@@+HMPX 1.5+GyMp +B_Jr1@@`G+BXJb 1.5+B_Jr1B@@@@@`G@@@G+DFJb 1.0+D_Jr1B@@@@@`G@@@G+FFJb 0.5+F_Jr1B@@@@@`G@@@G+E^JJ +H_Dr1`G@@+HMDk 1.5+H_Dr1@@B@`G@@@G@@+HMFY 1.0+H_Fr1@@B@`G@@@G@@+HMHX 0.5+H_Hr1@@B@`G@@@G@@+GyGq +N^J1a`D+L^KD1B@@H+N\KZ1a`N+L\KU1A@R+NYKt1c|`l+LYKg1A}@Z+NSLO1a|`_+LUKx1A{@c+NLLh1az`g+HkJv1E\A+NCMA1aw`o+LILZ1At@t+MxMZ1as`x+LALj1Aq@|+MkMr1c]b@+KxLy1AlAD+M]NH1ajaG+KnMH1AgAK+MMN^1adaO+HiJz1D\Cn+L|Nr1a_aU+KWMc1A\AY+LiOF1aXa\+KJMp1AVA_+LVOX1becD+J|M{1AOAe+L@Oh1aKag+JnNF1AGAj+KjOw1aDal+HeJ}1BzEA+KSPD1`|ap+JONX1@xAs+J{PP1`tau+IN_1@pAv+JbPZ1aWcp+InNe1@hAz+JIPc1`da{+I]Nj1@_A|+IoPi1`[a}+HaJ~1AAEn+ITPn1`Qa+HzNp1@MA+HzPp1`Ia+HhNq1@DB@+H_Pq1@@c+HVNq1`DB@+HDPp1@Ia+HDNp1`MA+GjPn1@Qa+H]J~1aAEn+GOPi1@[a}+GaNj1`_A|+FuPc1@ca{+GPNe1`hAz+F\PZ1AWcp+FN_1`pAv+FCPP1@tau+FoNX1`xAs+EkPD1@|ap+HYJ}1bzEA+ETOw1ACal+FPNF1aHAj+D}Oh1ALag+FBM{1aOAe+DhOX1BecD+EtMp1aVA_+DTOF1AYa\+EgMc1a\AY+DBNr1A_aU+HUJz1d\Cn+CqN^1AdaO+EPMH1agAK+CaNH1AjaG+EFLy1alAD+CSMr1C]b@+D}Lj1aq@|+CFMZ1As`x+DuLZ1at@t+B{MA1Aw`o+HSJv1e]A+BrLh1Az`g+DiKx1a{@c+BkLO1A|`_+DeKg1a}@Z+BeKt1C|`l+DbKU1a@R+BaKZ1B@`N+D`KD1b@@H+B`J1A`D+HRJr1es@@+B`Jd1A@E+D`J`1b@`I+BaJJ1B@@M+DbJN1a`R+BeIo1C|@m+DeI}1a}`[+BkIU1A|@_+DiIk1a{`c+BrH{1Az@h+HSJm1e]a+B{Hb1Aw@p+DuIJ1at`t+CFHJ1As@x+D}Hz1aq`|+CSGr1C]B@+EFHj1alaD+CaG[1AjAH+EPH[1agaK+CqGE1AdAO+HUJi1d\cn+DBFq1A_AV+EgH@1a\aY+DTF^1AYA\+EtGt1aVa_+DhFL1BeCD+FBGh1aOae+D}E{1ALAh+FPG^1aHaj+ETEl1ACAm+HYJg1bzeB+EkE_1@|Aq+FoGL1`xas+FCES1@tAu+FGE1`paw+F\EI1AWCq+GPF~1`hay+FuEA1@cA{+GaFz1`_a}+GODz1@[A~+H]Je1aAem+GjDv1@QA~+HDFs1`Ma+HDDs1@IB@+HVFr1`Db@+H_Dr1@@D@+HhFr1@Db@+HzDs1`IB@+HzFs1@Ma+ITDv1`QA~+HaJe1AAem+IoDz1`[A~+I]Fz1@_a}+JIEA1`dA{+InF~1@hay+JbEI1aWCq+IGE1@paw+J{ES1`tAu+JOGL1@xas+KSE_1`|Aq+HeJg1BzeB+KjEl1aDAm+JnG^1AGaj+L@E{1aKAh+J|Gh1AOae+LVFL1beCD+KJGt1AVa_+LiF^1aXA\+KWH@1A\aY+L|Fq1a_AV+HiJi1D\cn+MMGE1adAO+KnH[1AgaK+M]G[1ajAH+KxHj1AlaD+MkGr1c]B@+LAHz1Aq`|+MxHJ1as@x+LIIJ1At`t+NCHb1aw@p+HkJm1E\a+NLH{1az@h+LUIk1A{`c+NSIU1a|@_+LYI}1A}`[+NYIo1c|@l+L\JN1A`R+N\JJ1a@M+L^J`1B@`I+N^Jd1a@E+HlJr1Es@@+HlJr1`B@F`E@E`F@B`F`B`E`E`B`F@B`G@E`D@F`B@F@B@E@D@B@G+HJr1`A@F`B@F`C@F`D@E`E@D`F@C`F@A`G@A`F`A`F`C`F`C`D`D`D`F`C`F`A`F@@`G@A`F@C`F@D`E@D`E@F`C@F`B@F`A@G@@@F@B@F@C@E@D@D@D@C@F@B@F@A@G+I_Jr1@@@F`A@G`B@F`B@F`C@F`D@E`D@E`D@E`E@D`E@D`F@C`F@C`F@B`F@A`G@A`F@@`G`A`F`A`F`B`F`C`F`C`E`D`E`D`E`E`D`E`C`E`C`F`B`F`B`F`A`G@@`F@@`G@A`F@B`F@B`G@C`E@C`F@D`E@E`E@E`D@E`D@F`C@F`B@F`B@F`B@G@@@F@@@G@@@F@B+HoIt1@F@B@F@B@F@C@E@D@E@D@D@E@D@E@D@F@C@E@B@G@B@F@A@F@@@G+IJr1@@@F`A@F`A@G`B@F`A@F`C@F`B@F`D@F`C@E`D@E`D@E`D@E`E@D`E@D`E@D`F@C`F@C`F@B`F@B`F@B`F@A`F@A`G@A`F@@`G`A`F`A`F`A`F`B`G`B`E`B`F`C`F`C`E`D`E`D`E`D`D`E`D`E`D`E`D`E`C`F`B`F`C`F`B`F`A`F`A`G`A`F@@`F@@`G@A`F+G@Je1@A`F@A`G@B`F@C`F@B`F@C`E@D`F@D`E@D`E@D`D@E`E@E`D@E`C@F`C@F`C@F`C@F`B@F`B@F`A@F`A@G@@@F@@@G@@@F@A@F@A@F@B@F@B@F@C@F@C@F@C@E@C@E@D@E@E@D@D@D@E@D@E@C@F@D@E@B@F@C@F@A@F@B@G@A@F@A@F@@@G+J_Jr1@@@F`A@G`A@F`A@F`A@G`B@F`B@F`B@F`C@F`C@E`C@F`D@E`D@E`D@E`D@E`D@E`E@D`E@D`E@D`F@D`E@C`F@C`F@C`E@B`G@B`F@B`F@B`F@A`G@A`F@@`F@A`G@@`F`A`G`A`F`A`F`A`F`B`G`B`F`B`E`C`F`B`F`D`E`C`E`D`F`D`D`D`E`D`D`E`E`E+F{LB1`C`E`D`E`D`F`C`F`B`E`C`F`B`F`B`F`B`G`A`F`A`F`A`G@@`F@@`G@@`F@A`F@A`G@A`F@B`F@B`F@B`F@C`F@B`F@C`F@D`E@D`E@C`F@E`D@D`E@E`E@D`D@F`D@E`D@E`C@F`C@F`C@E`C@F`B@G`B@F`B@F`A@F`A@G`A@F@@@G@@@F@@@F@A@G@A@F@A+HzHu1@F@A@F@B@G@B@E@C@F@B@F@C@E@D@F@C@E@D@E@D@E@E@D@D@D@E@E@E@C@E@D@F@C@E@C@F@C@F@B@F@B@F@B@F@A@F@A@G@A@F@A@F@@@G+JJr1@@@F`A@F@@@G`A@F`A@F`B@G`A@F`B@F`B@F`C@F`B@F`C@F`C@E`D@F`C@E`D@E`D@E`D@E`D@E`E@D`D@E`E@D`E@D`E@D`F@C`E@D`F@C`E@C`F@B`F@C`F@B`F@B`F@B`G@A`F@A`F@A`G@A`F@@`F@A`G@@`F`A`G@@`F`A`F`A`F`B`G`A`F`B`F`B`F`B+GbMF1`F`C`E`C`F`C`F`C`E`C`E`D`E`D`E`D`E`D`E`E`D`D`D`E`D`E`D`E`D`F`C`E`C`F`C`E`C`F`B`F`C`F`B`F`A`F`B`F`A`G`A`F`A`F`A`G@@`F@@`F@@`G@A`F@A`G@A`F@A`F@B`F@A`G@B`F@C`F@B`F@C`E@C`F@C`F@C`E@D`E@D`E@D`E@D`E@D`E+FmIA1@E`D@E`D@E`E@E`C@E`D@E`D@F`C@F`C@E`C@F`B@F`B@F`C@F`A@G`B@F`A@F`A@F`A@G`A@F@@@G@@@F@@@F@@@G@A@F@A@F@A@G@B@F@B@F@A@F@C@F@B@F@C@E@C@F@C@E@C@F@D@E@C@E@D@E@E@D@D@E@E@D@D@D@E@D@E@D@E@C@F@D@E@C@F@C@F@B@E+JrIs1@C@F@B@F@B@G@A@F@B@F@A@F@A@G@@@F@A@F@@@G+K_Jr1@@@F`A@G@@@F`A@F`A@G`A@F`A@F`B@F`B@G`B@F`B@F`B@F`C@E`C@F`C@F`C@E`C@F`D@E`D@F`C@E`E@E`D@D`D@E`E@E`D@D`E@D`E@D`E@D`E@D`F@C`E@D`F@C`F@C`E@C`F@B`F@C`F@B`F@B`F@B`G@A`F@B`F@A`F@A`G@A`F@@`G@@`F@A`F`A`G@@+HRMq1`F@@`G`A`F`A`F`A`G`B`F`A`F`B`F`B`F`B`F`C`F`B`F`C`E`C`F`C`E`D`F`C`E`D`E`D`E`D`E`D`D`D`E`E`D`E`E`D`D`E`C`E`D`F`D`E`C`F`C`E`C`F`C`F`C`E`B`F`B`F`B`F`B`G`B`F`A`F`A`F`A`G`A`F@@`F`A`G@@`F@@`G@A`F@@`F@A`G+EaJX1@A`F@A`G@A`F@B`F@B`F@B`F@B`F@B`F@C`F@C`F@C`E@C`F@C`F@D`E@D`E@C`E@D`E@E`E@D`E@E`D@D`E@E`D@E`D@E`D@E`C@F`D@E`C@F`D@E`C@F`B@F`C@F`B@F`C@F`B@F`A@G`B@F`A@F`A@F`A@G`A@F`A@G@@@F@@@F@@@G@@@F@A@G@A@F@A@F@A+IEGv1@F@A@G@B@F@A@F@B@F@C@F@B@F@C@E@B@F@C@F@D@E@C@F@D@E@C@E@D@E@D@E@D@D@E@E@D@D@E@D@E@E@E@C@E@D@E@D@E@C@F@C@F@C@E@C@F@C@F@B@F@B@F@B@F@B@F@B@F@A@G@A@F@A@F@A@G@@@F@A@F@@@G+KJr1@@@F`A@G@@@F`A@F`A@G`A@F`A@F`A@G`B@F`A@F`B@F`B@F`C@F`B@F`C@F`B@F`C@F`C@E`D@F`C@E`D@F`C@E`D@E`D@E`D@E`E@E`D@D`E@E`D@D`E@D`E@E`E@D`E@C`F@D`E@D`E@C`F@C`F@C`E@C`F@C`F@B`F@C`F@B`F@B`F@B`F@B`G@A`F@A`F@A+IDNN1`G@A`F@A`F@A`G@@`F@@`G@A`F`A`F@@`G@@`F`A`G`A`F`A`F`A`G`B`F`A`F`B`F`B`F`B`F`B`F`C`F`C`F`B`E`C`F`C`E`D`F`C`E`D`E`D`E`C`E`D`E`E`E`D`E`D`D`E`E`E`D`E`D`E`D`E`D`E`C`E`D`F`C`E`C`F`C`E`C`F`C`F`B`F`C`F`B`F+EKKz1`B`F`B`F`A`F`B`G`A`F`A`F`A`F`A`G@@`F`A`G@@`F@@`G@@`F@A`F@@`G@A`F@A`F@A`G@A`F@B`F@A`G@B`F@B`F@B`F@C`F@B`F@C`F@C`E@C`F@C`F@C`E@D`E@C`F@D`E@D`E@D`E@D`E@E`E@D`D@E`E@E`D@E`D@E`D@E`D@E`D@E`C@F`D@E`C@F`C+FuGm1@E`C@F`C@F`C@F`B@F`B@F`C@F`B@F`A@G`B@F`A@F`B@F`A@G@@@F`A@G`A@F@@@F@@@G@@@F@@@G@A@F@@@F@A@G@A@F@A@F@A@G@B@F@B@F@A@F@B@F@C@F@B@F@C@F@B@E@C@F@C@F@D@E@C@E@C@F@D@E@D@E@D@E@D@E@D@D@E@E@D@D@E@E@E@D@D@D@F+KPHi1@D@E@C@E@D@E@C@F@D@E@C@F@C@F@B@E@C@F@B@F@C@F@B@F@B@F@A@G@B@F@A@F@A@F@A@G@A@F@A@F@@@G@A@F@@@G+L_Jr1@@@F`A@G@@@F`A@F@@@G`A@F`A@F`A@G`B@F`A@F`B@F`B@F`B@F`B@G`B@F`C@E`B@F`C@F`C@F`C@E`C@F`C@F`D@E`C@E`D@F`D@E`D@E`D@E`D@E`D@D`E@E`D@D`E@E`D@D`E@D`E@D`E@D`F@D`E@D`E@C`F@D`E@C`F@C`E@C`F@C`F@B`F@C`F@B`F@C+IuNc1`F@B`F@B`F@A`F@B`F@A`G@B`F@A`F@A`G@A`F@@`F@A`G@@`F@@`G@A`F`A`F@@`G@@`F`A`G`A`F`A`F`A`F`A`G`A`F`B`F`B`F`A`F`B`F`C`F`B`F`B`F`C`F`C`F`C`E`C`F`C`E`C`F`D`E`C`E`D`E`D`E`D`E`D`E`D`E`D`D`E`E`D`D`E`D`E`E`E+EYMT1`D`E`C`E`D`E`D`E`C`F`D`E`C`F`C`E`C`F`C`F`B`F`C`F`B`E`B`F`B`G`B`F`B`F`B`F`A`F`A`G`A`F`A`F`A`G`A`F@@`F`A`G@@`F@@`F@@`G@A`F@@`G@A`F@A`F@A`G@A`F@A`F@A`G@B`F@B`F@B`F@B`F@B`F@B`F@C`F@B`F@C`F@C`E@C`F@C`E+ECHo1@D`F@C`E@D`F@D`E@C`E@D`E@E`E@D`D@D`E@E`E@D`D@E`E@E`D@E`D@E`D@E`D@E`C@E`D@F`C@E`D@F`C@E`C@F`C@F`C@F`B@F`C@F`B@F`B@F`B@F`B@F`B@F`A@G`B@F`A@F`A@F`A@G`A@F@@@G`A@F@@@F@@@G@@@F@@@G@A@F@@@F@A@G@A@F@A@F@A+IPFw1@G@A@F@A@F@B@F@B@F@B@F@B@F@B@F@C@F@B@F@C@F@C@E@C@F@C@E@C@F@C@E@D@E@C@F@D@E@D@E@D@E@D@D@E@E@D@E@E@D@D@D@E@D@E@E@E@C@E@D@E@D@E@C@E@D@F@C@E@C@F@C@F@C@E@C@F@B@F@C@F@B@F@B@F@B@F@B@F@B@F@A@G@B@F@A@F@A@F+L\JK1@A@G@@@F@A@G@@@F@A@F@@@G+LJr1@@@F`A@G@@@F@@@F`A@G`A@F`A@F`A@G`A@F`A@F`B@G`B@F`A@F`B@F`B@F`B@F`C@F`B@F`C@F`B@F`C@F`C@E`C@F`C@E`D@F`C@E`D@F`D@E`C@E`D@E`D@E`D@E`E@E`D@D`D@E`E@E`E@D`D@D`E@D`E@E`E@D`E@C`F@D`E@D`E@C`F@D`E@C`F@C`E@C+JdNq1`F@C`F@C`F@B`F@C`F@B`F@B`F@C`F@B`F@A`F@B`F@B`G@A`F@A`F@A`G@A`F@A`F@A`G@A`F@@`F@@`G@@`F@@`G@@`F@@`F@@`G`A`F`A`G`A`F`A`F`A`F`A`G`A`F`B`F`B`F`A`F`B`F`C`F`B`F`B`F`C`F`B`F`C`F`C`E`C`F`C`E`C`F`D`E`C`F`D+EyN]1`E`D`E`C`E`D`E`E`E`D`D`D`E`D`E`E`D`E`D`D`E`E`D`E`D`E`D`E`D`E`C`E`D`F`C`E`D`F`C`E`C`F`C`F`C`E`B`F`C`F`B`F`C`F`B`F`B`F`B`F`B`F`A`F`B`G`A`F`A`F`A`G`A`F`A`F`A`G@@`F@@`F`A`G@@`F@@`G@A`F@@`G@@`F@A`F@A`G+DBJK1@A`F@A`F@A`G@A`F@B`F@A`F@B`F@B`G@B`F@B`F@C`F@B`F@C`F@B`E@C`F@C`F@C`E@C`F@D`E@C`F@D`E@C`E@D`F@D`E@D`E@D`E@E`D@D`E@D`E@E`D@E`E@D`D@E`D@E`D@E`D@E`D@F`D@E`C@E`D@F`C@E`D@F`C@E`C@F`C@F`B@F`C@F`B@F`C@F`B+F~Fc1@F`B@F`B@F`B@F`B@F`A@G`B@F`A@F`A@F`A@G`A@F`A@G@@@F`A@F@@@G@@@F@@@G@@@F@@@F@A@G@@@F@A@G@A@F@A@F@A@F@A@G@B@F@A@F@B@F@B@F@B@F@B@F@B@F@C@F@B@F@C@F@B@F@C@E@C@F@C@E@D@F@C@E@D@E@C@F@D@E@D@E@D@E@D@E@D@D@D+KbG^1@E@E@E@D@D@E@D@E@E@D@D@E@D@E@D@E@C@F@D@E@D@E@C@F@D@E@C@F@C@E@C@F@C@F@B@F@C@E@B@F@C@F@B@F@B@F@B@G@A@F@B@F@B@F@A@F@A@G@A@F@A@F@A@G@A@F@@@G@@@F@A@F@@@G+M_Jr1@@@F`A@G@@@F@@@F`A@G`A@F@@@F`A@G`B@F`A@F`A@G`B@F`A@F`B@F`B@F`B@F`B@F`B@F`B@F`C@F`B@F`C@F`C@F`C@E`C@F`C@F`C@E`C@F`D@E`C@E`D@F`D@E`D@E`D@E`D@E`D@E`D@D`D@E`E@E`D@D`E@E`E@D`E@D`D@D`E@D`E@D`F@D`E@D`E@C+KQN{1`E@D`F@C`E@D`F@C`F@C`E@C`F@C`F@B`F@C`E@B`F@C`F@B`F@B`F@B`G@B`F@B`F@B`F@A`F@A`G@B`F@A`F@A`G@A`F@A`F@@`G@A`F@@`F@@`G@@`F@@`G@@`F@@`F@@`G`A`F@@`G`A`F`A`F`A`F`A`G`B`F`A`F`A`F`B`F`B`G`B`F`B`F`B`F`B`F`C+FeOY1`F`B`E`C`F`B`F`C`F`C`E`C`F`C`E`D`F`C`E`D`E`C`E`D`F`D`E`D`E`D`E`D`D`D`E`D`E`E`D`D`E`E`D`E`D`D`D`E`E`E`D`E`C`E`D`E`D`F`C`E`D`E`C`F`C`E`D`F`C`F`B`E`C`F`C`F`B`F`C`F`B`F`B`F`B`F`B`F`B`F`B`F`B`F`A`F`A`G+CfKq1`B`F`A`F`A`G@@`F`A`F`A`G@@`F@@`G`A`F@@`F@@`G@A`F@@`F@@`G@A`F@A`G@@`F@A`F@A`G@B`F@A`F@A`F@B`G@B`F@B`F@B`F@B`F@B`F@B`F@C`F@B`F@C`F@C`E@B`F@C`F@D`E@C`F@C`E@D`F@C`E@D`E@D`E@C`E@D`E@E`E@D`E@D`E@D`E@E`D+D|GQ1@D`E@E`D@E`D@E`E@D`D@E`D@E`D@F`D@E`C@E`D@E`C@F`D@E`C@F`C@E`C@F`C@F`C@F`C@E`C@F`B@F`B@F`C@F`B@F`B@G`B@F`A@F`B@F`B@F`A@G`A@F`A@F`A@G`A@F`A@F`A@G@@@F`A@F@@@G@@@F@@@G@@@F@@@F@A@G@@@F@A@F@A@G@A@F@A@F@A+I[Ex1@G@A@F@A@F@B@F@B@F@A@G@B@F@B@F@B@F@C@F@B@E@B@F@C@F@C@F@C@F@C@E@C@F@C@E@C@F@D@E@C@E@D@E@C@F@D@E@D@E@D@D@D@E@E@E@D@E@D@D@E@E@D@D@E@D@E@D@E@D@E@D@E@D@E@D@E@D@E@C@E@D@F@C@E@C@F@C@E@D@F@B@F@C@E@C@F@B@F+MEHu1@C@F@B@F@B@F@B@F@B@F@B@F@B@F@A@G@B@F@A@F@A@F@B@G@A@F@@@F@A@G@A@F@@@G@@@F@A@F@@@G+MJr1@@@F`A@G@@@F@@@F`A@G@@@F`A@F`A@G`A@F`A@F`A@G`B@F`A@F`B@F`A@G`B@F`B@F`B@F`B@F`B@F`C@F`B@F`C@F`B@F`C@E`C@F`C@F`C@E`C@F`D@E`C@F`C@E`D@F`D@E`C@E`D@E`D@E`D@E`D@E`E@E`D@E`D@D`E@E`D@D`E@E`E@D`E@D`D@D`E@E+K|OD1`E@D`E@C`F@D`E@D`E@C`F@D`E@C`E@D`F@C`F@C`E@C`F@C`F@C`F@B`E@C`F@B`F@C`F@B`F@B`F@B`F@B`G@B`F@B`F@A`F@B`F@A`G@A`F@A`F@A`G@A`F@A`F@A`G@@`F@A`G@@`F@@`F@@`G@@`F@@`G@@`F@@`F`A`G@@`F`A`G`A`F`A`F`A`F`A`G`B+GTPI1`F`A`F`B`F`A`G`B`F`B`F`B`F`B`F`B`F`B`F`C`F`B`E`C`F`C`F`C`F`B`E`D`F`C`E`C`F`C`E`D`F`C`E`D`E`D`E`D`E`C`E`D`E`E`E`D`E`D`D`D`E`E`E`D`D`E`D`E`E`E`D`D`D`E`D`E`D`E`D`F`C`E`D`E`C`E`D`F`C`E`C`F`D`E`C`F`B`F+CeMO1`C`F`C`E`C`F`B`F`B`F`C`F`B`F`B`F`B`F`B`F`A`F`B`G`B`F`A`F`A`F`A`G`A`F`A`F`A`G`A`F`A`G@@`F@@`F`A`G@@`F@@`G@@`F@A`F@@`G@@`F@A`F@A`G@A`F@A`G@A`F@A`F@A`F@A`G@B`F@B`F@A`F@B`F@B`G@B`F@B`F@C`F@B`F@B`E@C`F+C_H`1@C`F@C`F@B`F@D`E@C`F@C`E@C`F@D`E@C`F@D`E@C`E@D`E@D`E@D`E@D`E@D`E@E`E@D`E@E`D@D`E@E`D@D`E@E`D@E`D@E`D@E`D@E`D@E`D@E`D@E`C@F`D@E`C@F`D@E`C@F`C@E`C@F`C@F`C@F`C@E`B@F`C@F`B@F`C@F`B@F`B@F`B@F`B@G`A@F`B+GHE]1@F`B@F`A@G`A@F`A@F`B@G`A@F@@@F`A@G`A@F@@@F`A@G@@@F@@@G@@@F@@@F@@@G@A@F@@@G@A@F@@@F@A@G@A@F@A@F@A@G@A@F@B@F@A@F@B@F@A@G@B@F@B@F@B@F@B@F@C@F@B@F@B@E@C@F@C@F@C@F@B@E@C@F@D@F@C@E@C@E@C@F@D@E@D@E@C@F@D+KrFX1@E@D@E@D@E@D@D@D@E@D@E@E@E@D@D@E@E@D@D@E@D@E@E@D@D@E@D@E@D@E@D@E@C@F@D@E@D@E@C@F@C@E@D@E@C@F@C@F@C@E@C@F@C@F@B@F@C@F@B@E@C@F@B@F@B@F@B@G@B@F@B@F@A@F@B@F@A@F@B@G@A@F@A@F@A@G@A@F@A@F@@@G@A@F@@@G@@@F+M~Je1@A@F@@@G+N_Jr1@@@F`A@G@@@F@@@F`A@G@@@F`A@F`A@G`A@F`A@G`A@F`A@F`A@F`B@G`A@F`B@F`B@F`B@F`B@G`B@F`B@F`B@F`B@F`C@F`B@E`C@F`C@F`C@F`C@E`C@F`C@F`C@E`C@F`D@E`C@F`D@E`C@E`D@E`D@E`D@F`D@E`D@D`D@E`E@E`D@E`D@D`E@E`D@E`E@D+LeOJ1`E@D`D@E`E@D`E@D`E@D`E@D`E@D`F@C`E@D`E@D`F@C`E@D`F@C`E@C`F@C`E@C`F@C`F@C`F@C`E@B`F@C`F@B`F@C`F@B`F@B`F@B`F@B`G@B`F@B`F@A`F@B`F@A`G@B`F@A`F@A`G@A`F@A`F@A`G@@`F@A`F@A`G@@`F@@`G@@`F@@`F@@`G@@`F@@`G@@+HEPq1`F`A`F`A`G@@`F`A`G`A`F`A`F`A`F`A`G`B`F`A`F`B`F`A`G`B`F`B`F`B`F`B`F`B`F`B`F`C`F`B`F`C`F`B`E`C`F`C`F`C`E`C`F`C`F`C`E`C`E`D`F`C`E`D`E`D`F`C`E`D`E`D`E`D`E`D`E`D`D`E`E`D`E`D`D`E`E`E`D`D`E`E`D`E`D`E`D`D+CvNe1`D`E`D`F`D`E`D`E`C`E`D`E`C`F`D`E`C`F`C`E`C`F`C`F`C`E`C`F`C`F`C`F`B`F`C`E`B`F`B`F`B`F`B`G`B`F`B`F`B`F`B`F`A`F`B`G`A`F`A`F`A`F`A`G`A`F`A`G`A`F@@`F`A`G@@`F@@`F`A`G@@`F@@`G@A`F@@`G@@`F@A`F@@`G@A`F@A`F+BcI1@A`G@A`F@A`F@A`G@A`F@B`F@A`F@B`G@B`F@B`F@B`F@B`F@B`F@B`F@B`F@C`F@B`F@C`F@C`F@C`E@C`F@C`F@C`E@C`F@C`E@D`F@C`E@D`E@C`F@D`E@D`E@D`E@D`E@D`E@D`E@D`E@E`D@D`E@E`E@D`D@E`E@E`D@D`D@E`D@E`D@E`D@E`D@E`D@F`D+EAEy1@E`D@E`C@F`D@E`C@E`C@F`D@F`C@E`C@F`C@F`C@F`B@E`C@F`C@F`B@F`B@F`C@F`B@F`B@F`B@F`B@G`A@F`B@F`B@F`A@G`A@F`B@F`A@G`A@F`A@F@@@G`A@F`A@F@@@G`A@F@@@G@@@F@@@F@@@G@@@F@@@G@A@F@@@F@A@G@A@F@@@F@A@G@A@F@A@F@B+IkDz1@G@A@F@A@F@B@F@B@G@A@F@B@F@B@F@B@F@B@F@C@F@B@F@B@F@C@E@C@F@B@F@C@F@C@E@C@F@C@E@D@F@C@E@C@F@D@E@C@E@D@F@D@E@D@E@D@E@D@E@D@E@D@D@D@E@D@E@E@D@D@E@E@D@E@D@D@E@E@D@E@D@E@D@E@D@E@D@E@D@E@C@F@D@E@C@E@D@F+MfGi1@C@E@C@F@C@E@C@F@C@F@C@E@C@F@C@F@B@F@C@F@B@F@B@F@B@F@B@F@B@F@B@F@B@F@B@G@A@F@B@F@A@F@A@G@A@F@A@F@A@G@A@F@A@F@@@G@A@F@@@G@@@F@A@F@@@G+DuJP1@@@J@K@@@@`J`K@@+DzJU1AP`I@p`B+FuJE1@@@J@J@@@@`J`J@@+FzJJ1@b@C@Y@F+GpJN1@@@J@J@@@@`J`J@@+GuJS1@S@I@N@K+HQJb1@@@J@J@@@@`J`J@@+HVJg1@I@K@F@L+H`Jy1@@@J@J@@@@`J`J@@+HeJ~1@B@L`A@K+HaKP1@@@J@J@@@@`J`J@@+HfKU1`D@J`F@I+HVKc1@@@J@K@@@@`J`K@@+H\Kh1`I@G`J@F+HDKp1@@@J@J@@@@`J`J@@+HIKu1`K@C`L@A+GmKt1@@@J@J@@@@`J`J@@+GrKy1`M`A`L`D+GSKo1@@@J@K@@@@`J`K@@+GYKt1`M`F`K`H+F{Ka1@@@J@K@@@@`J`K@@+GAKf1`K`K`I`L+FhKJ1@@@J@J@@@@`J`J@@+FmKO1`H`N`E`O+F[Jm1@@@J@J@@@@`J`J@@+F`Jr1`C`Q`A`Q+FVJK1@@@J@K@@@@`J`K@@+F\JP1@A`R@D`Q+F\Ig1@@@K@J@@@@`K`J@@+FaIm1@G`R@I`Q+FlIE1@@@J@J@@@@`J`J@@+FqIJ1@K`O@N`O+GEHg1@@@J@J@@@@`J`J@@+GJHl1@P`L@R`K+GgHP1@@@J@J@@@@`J`J@@+GlHU1@T`H@T`F+HOHB1@@@J@J@@@@`J`J@@+HTHG1@V`C@V@@+H{G1@@@J@J@@@@`J`J@@+I@HD1@V@C@V@F+IgHH1@@@J@K@@@@`J`K@@+IlHM1@V@I@T@K+JQH\1@@@J@K@@@@`J`K@@+JVHa1@S@O@R@Q+JvH{1@@@K@J@@@@`K`J@@+J{IA1@O@S@L@U+KQId1@@@J@J@@@@`J`J@@+KVIi1@J@W@G@X+KbJS1@@@K@J@@@@`K`J@@+KgJX1@D@Z@A@Z+KgKF1@@@K@J@@@@`K`J@@+KlKL1`C@Z`F@Y+K^Kz1@@@J@J@@@@`J`J@@+KcK1`J@Y`L@X+KHLk1@@@J@J@@@@`J`J@@+KMLp1`P@V`S@T+JeMU1@@@J@J@@@@`J`J@@+JjMZ1`U@R`W@O+IyMv1@@@J@J@@@@`J`J@@+I~M{1`Z@L`[@I+IDNK1@@@J@J@@@@`J`J@@+IINP1`\@E`\@B+HKNR1@@@J@K@@@@`J`K@@+HQNW1`]`B`]`E+GRNJ1@@@K@J@@@@`K`J@@+GWNP1`\`J`[`L+F[Mt1@@@K@J@@@@`K`J@@+F`Mz1`Y`Q`W`S+EkMQ1@@@J@J@@@@`J`J@@+EpMV1`T`V`R`Y+EELb1@@@J@J@@@@`J`J@@+EJLg1`N`[`K`]+DkKj1@@@J@K@@@@`J`K@@+DqKo1`H`^`C`_+DaJm1@@@J@J@@@@`J`J@@+DfJr1@@``@E`_+DfIn1@@@J@J@@@@`J`J@@+DkIs1@H`_@M`]+DzHr1@@@J@K@@@@`J`K@@+E@Hw1@P`\@S`Z+E^G|1@@@J@J@@@@`J`J@@+EcHA1@W`W@Y`T+FNGQ1@@@J@K@@@@`J`K@@+FSGV1@]`Q@^`N+GIFr1@@@K@J@@@@`K`J@@+GNFw1@_`I@a`E+HIFc1@@@K@J@@@@`K`J@@+HNFi1@b`B@a@C+ILFe1@@@J@J@@@@`J`J@@+IQFj1@a@G@`@L+JMFx1@@@J@J@@@@`J`J@@+JRF}1@_@O@\@S+KHGZ1@@@J@J@@@@`J`J@@+KMG_1@Z@W@W@Z+KyHK1@@@J@J@@@@`J`J@@+K~HP1@S@\@P@_+L\IF1@@@K@J@@@@`K`J@@+LaIK1@L@a@H@c+LpJI1@@@K@J@@@@`K`J@@+LuJO1@C@c+LsJm1@@@J@J@@@@`J`J@@%7B+@J@\6556I 03  09-23-84   22.961  frame no.  09    
                   72648:    MH9220,M158,DREXLER                                     %0707070014230643111006440057030057030000011714540522627504100003200000001672post.src/tests/postdaisy1B
  9

       
     
                   72649: 
    
                   72650: 
    
                   72651: 
    
                   72652: 
    
                   72653: 
    
                   72654: 
    
                   72655: 
    
                   72656: 
This line is &u
_&n
_&d
_&e
_&r
_&l
_&i
_&n
_&e
_&.
_
    
                   72657: 
    
                   72658: 
This
 li
ne is &bb
b&oo
o&ll
l&dd
d&...
    
                   72659: 
    
                   72660: 
This
 line
 is
 &u_uu&n_nn&d_dd&e_ee&r_rr&l_ll&i_ii&n_nn&e_e
e& 
_&a_a
a&n_n
n&d_d
d& 
_&b_b
b&o_o
o&l_l
l&d_d
d&._..
     
                   72661: 
    
                   72662: 
This line is 
                   72663: S
                   72664: &
                   72665: u
                   72666: &
                   72667: b
                   72668: &Script.
  
                   72669: 
    
                   72670: 
This line is 
                   72671: S
                   72672: &
                   72673: u
                   72674: &
                   72675: p
                   72676: &
                   72677: e
                   72678: &
                   72679: r
                   72680: &Script.
  
                   72681: 
    
                   72682: 
    
                   72683: 
    
                   72684: 
    
                   72685: 
    
                   72686: 
    
                   72687: 
    
                   72688: 
    
                   72689: 
    
                   72690: 
    
                   72691: 
    
                   72692: 
    
                   72693: 
    
                   72694: 
    
                   72695: 
    
                   72696: 
    
                   72697: 
    
                   72698: 
    
                   72699: 
    
                   72700: 
    
                   72701: 
    
                   72702: 
    
                   72703: 
    
                   72704: 
    
                   72705: 
    
                   72706: 
    
                   72707: 
    
                   72708: 
    
                   72709: 
    
                   72710: 
    
                   72711: 
    
                   72712: 
    
                   72713: 
    
                   72714: 
    
                   72715: 
    
                   72716: 
    
                   72717: 
    
                   72718: 
    
                   72719: 
    
                   72720: 
    
                   72721: 
    
                   72722: 
    
                   72723: 
    
                   72724: 
    
                   72725: 
    
                   72726: 
    
                   72727: 
B &
  0707070014230643121006440057030057030000011716700522627504100003000000037011post.src/tests/postdmd1 ��UU�UU�UU�UU�UU�UU�UUUUU;���&�UUUU�&UUUU���&�UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU��������������������������&UUUU��������������������������&UUUU@@@@@�&UUUU�&UUUU�?�&��&��?����&U
                   72728: UUU���������&U
                   72729: UUU&� &! &!������&UUUU��&�@�&U
                   72730: UUU ? �?���&U
                   72731: UUUD�@�@��&UUUU�@�@�@��&UUUU��&�xx�&UUUU�`� �&UUUU�� xx�&UUUU����&UUUU
                   72732: �`�H�&UUUU�@�@`�@�$�&UUUU&@�&@�&@���&U
UUU�@�@�@
                   72733: ��&UUUU������&UUUU�
                   72734: ?�&���0&��&UUUU�&UUUU�&@�&@�&@�&@�&@�&UUUU��������������������������&UUUU��������������������������&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UU�&U&U�&UU?���&U&U�&U&U�&U&U�&U&U�&UU�&UU�&UU��&UU��&U&U�&UU��&UU��&U&U�&UU��&UU��&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&UU�&UU�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&UU�&UU�&U&U�&U&U�&U&U�&U&U�&UU&��&U&U�&UU&��&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&UU�&UU�&U&U�&U&U�&U&U�&U&U�&UU&��&U&U�&UU&��&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&UU�&UU�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&UU���&�U&U�&U&U�&�&U&U�&U&U�&U&U�&UU���a��&UU��z|R��&UU&&���&UU��-�&UU�x��&U&U�&�&UU�x�(��&UU&���&U&U�&P�&U&U�&`�&U&U�&U&U�&U&U�&U&U�&UU������U&U�UUU&U�x�&��&�~�&�1��&�&�����`�UUU&U������0
                   72735: �~���&P�&�(-&@���P�UUU&U��8� 0
                   72736: �&$�&��@�@�@8�UUU&U�UUU&U�&��
��~f��0����|���a����&��UUU&U�0�&z�f/@��:�x�       z��b������&��UUU&U�0��������x��̄����UUU&U��=�����І���UUU&U�&x>����UUU&U�(
                   72737: �� �&�
                   72738: ��$����0P��P��@(�UUU&U���/B�&�
                   72739: �&~��&P��R�(&@��P�UUU&U����&����0�&�~`�1����0?�a����`�UUU&U�&z���UUU&U�&����&����`?��UUU&U�UUU&U�UUUU�&�UUU&U�UUUU�&(�UUU&U�UUUU�(�&P�UUUU��UUUUP�&��UUUU��UUUU蠃&&@�UUU&U�UUUU�@�&��UUUU��UUUU&��&�UUU&U�UUU&U���U&U�&U&U���0��&�     &�����0�&���&�&�~����U&U�@&@P��
&�(-&@������0
                   72740: �~���&U&U�����@�@�&@�&
                   72741: �0 �4��&U&U�&U&U�&�
���a����&��
���~f��0����&U&U�&3���b������&���&z�f/@��:�x�&U&U�&3��̄����&�������x�&U&U��І����=����&U&U����&x>�&U&U�����0P��P��@�
                   72742: ���&�
                   72743: ��$��&U&U�&@P̂
                   72744: �R�(&@�鐂&��/B�&�
                   72745: �~��&U&U��0����0?�a����
                   72746: `&����0��&�~`�&U&U���&&z�&U&U���`?��&0�&����&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&�&U&U�&U&U�&(�&U&U���g��&U&U�/Y���8�&U&U�&�&U&U�&@�&8�&U&U�&��&U&U���&U&U�/�K�P�&U&U�`Ç�`�&U&U�&U&U�&U&U�&U&U�&UU�&`�&U&U�&UU�&��&U&U�&UU�(�&&@�&UU��&UUP�&��&UU��&UU蠂&�&U&U�&UU�@�&
                   72747: �&UU��&UU&��&�&U&U�&U&U�&U&U�&U&U�&U&U�&`�&U&U�&U&U���&U&U�����?�&U&U�������&U&U�&�&U&U����&U&U�&��&U&U�&�&��&U&U��T��&U&U�&�8~`1��&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&������
                   72748: &��~a���<&��&U&U�&h�Ah��R�    �(0&@�&U&U�r����@�&��&U&U��-;@R��&`�&U&U���~3�|c3&��
                   72749: ��؂��&U&U�`�<3�`��3�P&A ��p�&U&U�`@�`��(
                   72750: � �&U&U�      �&xP�8�&p�&U&U��p�--G
                   72751: ��&U&U�        �&���&���&0�&��&U&U��
                   72752: �&@��\
                   72753: �Tp?R�G�(P3
                   72754: &@��&U&U��&�c��&�|?8�a���`?1���&U&U�&U&U�&�&��&U&U�&U&U�&UU�&�&U&U�&UU�&(�&U&U�&UU�(�&P�&UU��&UUP�&��&UU��&UU蠃&&@�&U&U�&UU�@�&��&UU��&UU&��&�&U&U�&U&U�&U&U�&U&U�&�<�
                   72755: ��~a�����&U&U��&��Z��* �*��R��&�&U&U��&�8&���P��&�&U&U�+PBҤ-�&�&U&U�?����0?��30��&�
                   72756: 
��&>�&U&U�fC�&�1�f@�0&A P�=�&U&U�f&�f�
                   72757: � �(�&U&U�8�&xP�p�&U&U�-G
                   72758: ��p�-�&U&U�@(@0��
                   72759: &�&U&U�������PG�(Tp?R�0�
                   72760: �&U&U�&�0p`���p`��8�a�����&U&U�&U&U�&0�0��&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&UU�&���&0�&UU@�       ��&��&U&U��P�&�� @�&U&U�0��&`�&UU ��|�fc��f���&UU�0�����f�`yz�f`�&UU�
                   72761: 0���f���a@�&UU ������&U&U�0��&x}b��&U&U�&@��0 �&UU@(���ˁP&x��&UU��    �1�|�����&U&U�&0�&�&U&U�&�&U&U�&U&U�&UU&��&UUd�&UU��&U&U�&U&U�&UU���&UU�&UU��&U&U�&UU��&UUd�&UU&��&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&�<�`&���<?��&U&U�
                   72762: �&��Z��*�&PZ?���&U&U��&�8&��&����0&P�&U&U�+P� ��&U&U�?����0?��30�&�~>1���P&@��&U&U�fC�&�1�f@�0���]L���@��&U&U�f&�f�
                   72763: ��&�(��&U&U�8�p��
                   72764: ��&U&U�-@�\ �&U&U�
                   72765: @(@0�        `$�&@ �&U&U�������PW���].��Z3�@�&U&U�&�0p`���p`���~>���&�<?&��&U&U�&U&U�&0�0��&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&UU��&UU��&U&U�&UU��&UU��&U&U�&UU��&UU��&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&UU&��&U&U�&UU&��&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&UU&��&U&U�&UU&��&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U���0��&�    &�����0�&���&�&�~��&U&U�@&@P��
&�(-&@������0
                   72766: �~���&U&U�����@�@�&@�&
                   72767: �0 �4��&U&U�&U&U�&�
���a����&��
���~f��0����&U&U�&3���b������&���&z�f/@��:�x�&U&U�&3��̄����&�������x�&U&U��І����=����&U&U����&x>�&U&U�����0P��P��@�
                   72768: ���&�
                   72769: ��$��&U&U�&@P̂
                   72770: �R�(&@�鐂&��/B�&�
                   72771: �~��&U&U��0����0?�a����
                   72772: `&����0��&�~`�&U&U���&&z�&U&U���`?��&0�&����&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&`�&U&U�&U&U���&U&U�����?�&U&U�������&U&U�&�&U&U����&U&U�&��&U&U�&�&��&U&U��T��&U&U�&�8~`1��&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&�<�
                   72773: ��~a�����&U&U��&��Z��* �*��R��&�&U&U��&�8&���P��&�&U&U�+PBҤ-�&�&U&U�?����0?��30��&�
                   72774: 
��&>�&U&U�fC�&�1�f@�0&A P�=�&U&U�f&�f�
                   72775: � �(�&U&U�8�&xP�p�&U&U�-G
                   72776: ��p�-�&U&U�@(@0��
                   72777: &�&U&U�������PG�(Tp?R�0�
                   72778: �&U&U�&�0p`���p`��8�a�����&U&U�&U&U�&0�0��&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&UU�&���&0�&UU@�       ��&��&U&U��P�&�� @�&U&U�0��&`�&UU ��|�fc��f���&UU�0�����f�`yz�f`�&UU�
                   72779: 0���f���a@�&UU ������&U&U�0��&x}b��&U&U�&@��0 �&UU@(���ˁP&x��&UU��    �1�|�����&U&U�&0�&�&U&U�&�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&UU��&UU&h�&UU�&U&U�&U&U�&UU`�&UU`�&U&U�&U&U�&U&U�&U&U�&UU&��&U&U�&U&U�&U&U�&U&U�&U&U�&�`�&UU0�&U&U�&U&U�&UU����?��&UU&��~�>   O��&U&U�^��&UU&|�&UU���&UU&��&�&UU&���*^���&UU&��?����&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&UU�&U&U�&U&U�&UU��&UU& �&UU��&UU& �&UU�&U&U�&U&U�&U&U�&U&U�&UU�`�<?�&UU&�2ZL��&UUX�b�&UU��&UUH�&UU&0<��&UU�(<��&UU�&UU �&UU&ȥr�&UU1�2ZL��&UU���<?�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&UU��&UU��&U&U�&U&U�&U&U�&UU��&UU��&U&U�&U&U�&UU�&U&U�&U&U�&UU�&���&�`�&U&U�&���0�&U&U�& �&p�&U&U�&�&UU������~����?���&UU&(���&*��?ـ&��~�>       O�&((�&U
                   72780: UZ (��^�P�&UU$�&�P=?�&|�&��&UU$��>��� �&UUZ h�&��&��&UU&p����&���*^��(�&UU���`���&��?�����&U&U�&U&U�&�&U&U�&U&U�&U&U�&?��0�&U&U�L��&�&U&U�&�&U&U�&U&U�������f�&��&U&U�������t�f����&U&U��&0�/��&U&U�����&U&U�&}�&&��&U&U�0��&�&U&U���L���t�/����&U&U���?����g�&��&U&U�&U&U�&�&U&U�&U&U�&UU��&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&UU��&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U�&U&U?����U&U�UU����UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU�&UUUU���&�UUUU�&UUUUn���&�U�UU�UU�UU�UU�UU�UU�UU0707070014230643131006440057030057030000011714550522627504100002600000000643post.src/tests/troff1.EQ
                   72781: delim $$
                   72782: .EN
                   72783: .TS
                   72784: doublebox;
                   72785: c c
                   72786: l l.
                   72787: Name   Definition
                   72788: .sp
                   72789: .vs +2p
                   72790: Gamma  $GAMMA (z) = int sub 0 sup inf t sup {z-1} e sup -t dt$
                   72791: Sine   $sin (x) = 1 over 2i ( e sup ix - e sup -ix )$
                   72792: Error  $ roman erf (z) = 2 over sqrt pi int sub 0 sup z e sup {-t sup 2} dt$
                   72793: Bessel $ J sub 0 (z) = 1 over pi int sub 0 sup pi cos ( z sin theta ) d theta $
                   72794: Zeta   $ zeta (s) = sum from k=1 to inf k sup -s ~~( Re~s > 1)$
                   72795: .vs -2p
                   72796: .sp 2
                   72797: .TE
                   72798: 0707070014230643141006440057030057030000011714560522627504100003200000000204post.src/tests/postprint1
                   72799: An Ascii test          file for
                   72800:               postprint. Probably
                   72801: 
                   72802: 
                   72803: 
                   72804: 
                   72805: should have more than one line, and
                   72806: a few blank ones too.
                   72807: 
                   72808:                        
                   72809: 
                   72810: That's it.
                   72811: 0707070014230643151007550057030057030000011717300522627504100003000000003150post.src/tests/runtests#
                   72812: # Runs the test files that you'll find in this directory. You may want to change
                   72813: # the definitions of PRINT and BINDIR. The default definition of BINDIR assumes
                   72814: # the translators are installed in /usr/lbin/postscript, while PRINT just writes
                   72815: # everything to stdout. Unrecognized options (ie. options other than -P and -B)
                   72816: # are passed along to the translator.
                   72817: #
                   72818: # For example, if postio is installed in /usr/lbin/postscript, the following runs
                   72819: # the dmd bitmap translator on the test file ./postdmd1 and sends the output to
                   72820: # the printer attached to /dev/tty01.
                   72821: #
                   72822: #      runtests -P'/usr/lbin/postscript/postio -l /dev/tty01' -pland postdmd
                   72823: #
                   72824: 
                   72825: OPTIONS=
                   72826: PRINT=cat
                   72827: BINDIR=/usr/lbin/postscript
                   72828: 
                   72829: for i do
                   72830:     case $i in
                   72831:        -P*) PRINT=`echo $i | sed s/-P//`;;
                   72832: 
                   72833:        -B*) BINDIR=`echo $i | sed s/-B//`;;
                   72834: 
                   72835:        -*)  OPTIONS="$OPTIONS $i";;
                   72836: 
                   72837:        *)   break;;
                   72838:     esac
                   72839:     shift
                   72840: done
                   72841: 
                   72842: for i do
                   72843:     for j in ${i}*; do
                   72844:        if [ ! -r "$j" ]; then
                   72845:            break
                   72846:        fi
                   72847:        case $j in
                   72848:            dpost*)
                   72849:                $BINDIR/dpost $OPTIONS $j | $PRINT;;
                   72850: 
                   72851:            postbgi*)
                   72852:                $BINDIR/postbgi $OPTIONS $j | $PRINT;;
                   72853: 
                   72854:            posttek*)
                   72855:                $BINDIR/posttek $OPTIONS $j | $PRINT;;
                   72856: 
                   72857:            postdmd*)
                   72858:                $BINDIR/postdmd $OPTIONS $j | $PRINT;;
                   72859: 
                   72860:            postmd*)
                   72861:                $BINDIR/postmd $OPTIONS $j | $PRINT;;
                   72862: 
                   72863:            postdaisy*)
                   72864:                $BINDIR/postdaisy $OPTIONS $j | $PRINT;;
                   72865: 
                   72866:            postprint*)
                   72867:                $BINDIR/postprint $OPTIONS $j | $PRINT;;
                   72868: 
                   72869:            postplot*)
                   72870:                $BINDIR/postplot $OPTIONS $j | $PRINT;;
                   72871: 
                   72872:            postgif*)
                   72873:                $BINDIR/postgif $OPTIONS $j | $PRINT;;
                   72874: 
                   72875:            troff*)
                   72876:                pic $j | tbl | eqn | troff -mm -Tpost | $BINDIR/dpost $OPTIONS | $PRINT;;
                   72877: 
                   72878:            man*)
                   72879:                troff -man -Tpost $j | $BINDIR/dpost $OPTIONS | $PRINT;;
                   72880:        esac
                   72881:     done
                   72882: done
                   72883: 0707070014230643161006440057030057030000011717500522627504100003000000256752post.src/tests/posttek1`%cq+VbqXlrZhtZfvXgvVhtUlrUcqV,nj$[lj]gl^cn^lo]no[cnYglYnj[&ba#Afc"_ba#A%b"_3jjQckPomPfnQkjRjjTkjSgnSkmRjjUfnUenWomWckWijWjjUomXfnYfnZlm[dm[jlZ`l[`k[jjZjjYckXjlYjlZkj\ak]mm]gn\#jcQcdPofPfgQkcRjcTkcSggSkfRgfWofWegWdgVnfUbdUhcVicWcdWceWaeWgfXofXfgYfgZlf[df[cdXkcXhc[kc\ad]mf]gg\bxNhxNd{Nn{No{Qn{OfzOezQkyQkxQaxQaxPjxObyOhxUbxTbxShxSd{Sn{Sn{Td{UbxVaxXaxWm{Wb{V`xZayYmzYl{Zn{Znz[by[bxZ`xZ`x]kx]g{]l{](onMeoMarMkrMhrQkrNcqNbqPdpQdoQnnPnnOgoNooNmnTmnRirRirTaqRcqSonUnnWnnVjrVoqUmnYnoXjqXirYhrZkqZooZlnZmnYmn\do]`r]ir\$koMapMmrMgsMdsQgsNoqNnqPdqQ`pQjoPjoOcpNkpNioTioResResTmqRoqSkoUjoWjoVfsVkrUioYjpXfrXesYdsZgrZkpZhoZioYio\`p]lr]es\kiMejMamMkmMhmQkmNokNnkPdkQdjQjiPjiOgjNojNelTamTkmSkmRamRejRkiRkiSejTekTgkSkiUjiWjiVjmVolUiiYnjXflXimYhmZglZojZhiZiiYii\dj]`m]im\'ojMekManMknMhnQknNolNnlPdlQdkQnjPnjOgkNokNmjRinRinTmlRolSojUnjWnjVjnVomUmjYnkXjmXinYhnZkmZokZljZmjYmj\dk]`n]in\#njNdkN`nNjnNknQjnObmOamQklQgkQmjQmjPfkOnkOljSlmSknSinTlmUljUhlShlUnjVmjXmjWinWnmVljZmkYimYhnZjnZjm[nk[njZljZlj]gk]cn]hn](k}Ma~M)m`MgaMdaQgaN(kNjP`Q`~Qj}Pj}Oc~Nk~Ni}R)eaReaT(iRkSk}Uj}Wj}V)faVk`U(i}Yj~X)f`XeaYdaZg`Z(k~Zh}Zi}Yi}\`~])l`]ea\#brNlrNhuNbvNcvQbvOftOetQosQorQarQarPnrOfsOlrUbrTbrSlrShuSbvSbvThuUbrVarXarWavWbuV`rZesYmtY`vZbvZnt[fs[brZ`rZ`r]or]ku]`v]4`{Pj{Of~Ol~Pa{Q`{Sa{Rm~Ra~Q`{Tl~To~Ue~Vi{Vc{U`{Tc{Wa{Yb{Xn~Xc~W`{[j{[f~[l~[,bkNhkNdnNnnNonQnnOfmOemQklQkkQakQakPjkOblO`kS`nSonSmnT`nU`kUhlShlUbkVakXakWmnWbnV`kZalYmmYlnZnnZnm[bl[bkZ`kZ`k]kk]gn]ln]#n}Nh~N$daNnaNoaQnaOb`Oa`Q#kQk~Qm}Qm}Pj~ObO$h`UdaUnaTnaSdaS#h~Sn}Sn}Th~UhUjTn}Vm}Xm}W$maWbaV#l}ZaY$i`YlaZnaZj`[#b[n}Zl}Zl}]k~]$ga]la]4`uPjuOfxO`yP`yQaySexS`uQnwVfxV`yV`yUexTiuT`uU`uVjuVnvVlvVgxWayXayYdxZlwZewYlvZhuZauYauXkuWovWewXowWgxWewXewYbu[hu\dx\by[2csPisPevPovPdvTnvSmvRgvQksQasRbsShsThtTbuSauRktQ`sU`vUlvVnvVavWasWhtUitWjsX`sY`sZjsZfvZlvZlvYfvXbuXhtYhtZbuZas\ks\gv\mv\5l`PfaOfdOldPm`Ql`Sm`RmdRmcQicVedVodUodTddTdaTo`To`UeaVibVkbUjcWfdWldXldYfdYjcYfaWn`Wn`Ym`[ga[gd[md[3o`PiaPedPodPddTndSmdRgdQkaQm`Rn`ShaThbTbcSacRkbQl`U`dUldVndVadWm`WhbUibWjaXl`Yl`ZjaZfdZldZldYfdXbcXhbYhbZbcZm`\ka\gd\md\*jzQc{Po}Pf~QkzRjzTkzSg~Sk}RjzUf~Ue~Wo}Wc{WizWjzUo}Xf~Yf~Zl}[d}[j|Z`|[`{[jzZjzYc{Xj|Yj|Zkz\a{]m}]g~\&jwQcxPozPj{QkwRjwTkwSk{SkzRjwUj{Uk{WnyUmyWozXj{Yj{Zlz[dz[nyZdy[`x[jwZjwYcxXnyYnyZkw\ax]mz]k{\%n~QgP&cbPjbQ%o~Rn~To~S&kbSoaR%n~U&jbUibWcbWkaWaaWk`W%gWm~Wn~U&baUaaWcbXjbYjbZ`b[ha[baZh`[%d[n~Zn~YgX&baYbaZ%o~\e]&ab]kb\$ncQgdPcgPjgQocRncTocSkgSofRncUjgUigWcgWkfWafWkeWgdWmcWncUbfUafWkfXcgXjgYjgZ`g[hf[gdXocXlc[oc\ed]ag]kg\&fpQcqPosPftQgpRfpTgpSgtSksRfpUftUetWosWcqWepWfpUepYgpZdpZdtZisYfp\`q]ls]ft\)ngQghPckPjkQogRngTogSkkSojRogWngUjkUkkWbjUajW`i[ciXgkYgkYjkZngZog\eh]ak]kk\'f`QcaPocPfdQg`Rf`Tg`SgdSkcRf`UfdUedWocWccWibWcbWcaWe`Wf`UjbUibWccXocXfdYfdZlc[`c[caXg`Xd`[g`\aa]mc]gd\)boQkoPgrPbsQcoRboTcoScsScrRboUbsUasWgrWoqWeqWopWkoWaoWboUfqUeqWgrXbsYbsZdr[lq[fqZlp[ho[boZboYkoXfqYfqZco\io]er]cs\-niQgjPcmPnmQnmRomTcmTniRhlX`mXnmWnmVcmUgjUniVniWdjXhkXjkWamYomYomZam[il[clZik[ej[oiZoiYejYikYclYilYamYclYclZli]fj]bm]lm]+nrQgsPcvPjvQorRnrTorSkvSouRgsWmrWlrVfsUbvUhvVivWcvWcvXjvYjvZ`v[hu[ntZdt[ds[nrZnrYgsXntYntZor\es]av]kv\biQoiPklPbmQciRbiTciScmSglRbiUbmUcmWfkUekWokXklXbmYbmZhl[lk[oiXciX`i[ci\mi]il]cm\j{Qc|Po~PfQk{Rj{Tk{SgSk~Rj{UfUeWo~Wc|Wi{Wj{Ug~Xo~XfYfZl~[d~[c|Xk{Xh{[k{\a|]m~]g\.jnQcoPoqPjrQknRjnTknSkrSkqRjnUjrUkrWnpUmpWinYknZhnZhrZiqYjn\`o]lq]jr\fgQogPkjPbkQggRfgTggSckSgjRfgUbkUakWkjWogWegWfgU`k[ckXkiXjiZlh[lg[fgZfgYogXghXgg\mg]ij]ck\fzQozPo}Pf~QgzRfzTgzSg~Sg}RfzUf~Ug~Wj|Ui|WezYgzZdzZd~Ze}Yfz\lz]l}]f~\0jqQcrPotPfuQkqRjqTkqSguSktRcrWiqWhqVbrUntUduVeuWotWotXfuYfuZlt[dt[nsZ`s[`r[jqZjqYcrXnsYnsZkq\ar]mt]gu\'bc#Aee"_bc#Am`"_#ft#Aiv"_ft#Aar"_-al#Adn"_al#Ali"_4d}#@g"]d}#@c{"]dw#@ky"]dw#@cu"]5`c#@ge"]`c#@o`"]#je#Amg"_je#Aic"_.ip#Alr"_ip#Ahn"_#bm#Aeo"_bm#Amj"_$nk#Aan"_nk#Aii"_b`#Aeb"_b`#A#m}"_fz#Ai|"_fz#Aax"_$bf#Aeh"_bf#Amc"_&nr#Aau"_nr#Aip"_$nq#Aat"_nq#Aio"_&ny#Aa|"_ny#Aiw"_+nt#Aaw"_nt#Air"_)fi#Aek"_fi#Aag"_(fq#Ais"_fq#Aao"_'nl#Aao"_nl#Amj"_(f#A)ia"_(f#Aa}"_*b}#Ae"_b}#Amz"_)jq#Ams"_jq#Aio"_+fk#Aim"_fk#Aai"_.j|#Am~"_j|#Aez"_,fm#Aeo"_fm#Aak"_+n}#A,a`"_+n}#Ai{"_.ji#Aik"_ji#Aeg"_2bu#Aew"_bu#Aas"_0ns#Amu"_ns#Aiq"_3bc#Aee"_bc#Am`"_jl#Amn"_jl#Aij"_&ba#AbaAba&T%b"B&bcB%cD&ccD%cE&ccEbcGhbHlaHfaGl`H%lHbGcE&gaEfaGacI`cK%aI`KaJ&acJ`cL%`LaN'bc#Acc&Pg`"DkcDfdEddFhcGd`GcbD`bGedHddJe`Hd`Je`IedIddKd`Ke`M#ft#Agt%MgzMgz._*oe_ne/K#br!_bv_cr"AcvAdsClrCbrCbrDlrElsEftDftCltChuCbvCbvDhuEbvFavHbrFarHarGavGbrIarKarJavJbuI-`l&Wal#Ami![mm[ni]nm]nm^om"@nm!_ni_oi"AomAnmC`mDhlDblChkDdjDniCoiAclAblCdjEoiEoiFejGamGomFomE`mEdjEnmHfjHliIliJfjJnmJomKlmNomLoiL4dw#@dw2H/laHoa3L4by!]by_by^bu^cu"@cy@ayBdxClwCewBlvChuCauBcu@gw@ewBhuDbuDcuEiuFexFcyEbyDdxDhuDayGiuGcuG`uIjuIbyIbyJcyLcyKcuK5`c#@bc2D,nyDny3M5m`"@md@n`BndBo`CodCccDodEo`EldGmdIldHl`HmdJm`Jn`L4d}#@f}/K3feK4a{"@m~@b{Bn~Bo~Co~Eo~Dc{D`|Gh{Gb{Gb{Hi{Ii|If}Hf}Gl}Gd~Gn~Gn~He~Im~Ja{Jb{L#je#Aie7N&m`No`9])ol]ml:L#hc"DdgDheEegFicFegGfgIfgHjcHfgJjcJkcL.ip#AmpAmp&Qjn!]jr]jn_jr_kr"@knAhrC`oDjnDknEaoFmqFkrEjrDlqD`oDjrGirIjnGinIjnHjrHirJinJjnL#bm#Abm%CjhCih7K&eeKge9Z,c{Zb{:F#lj!^hn^mj"@in@nkAfkAljBljCgkCklC`mC`mBjmAbnAhnBhnCcnChnEknFljEojFojEknEnjHokGkmGjnHinIhmJlkJmjInjH$nk#AnkTbfTcf+E.csEcs[$nj"BfjBhiCiiDgjDgkDmkDlkCflBbmBhmCimDcmDhmFkmGhiFkiGhiGhmG`kKckHgmIgmIjmJjiJb`#Ab`+N)n}No}[#o}!^$oa^#l}"A$laA#aBi~Bo}Bo}Ci~DiD$c`Cc`Bi`BeaBoaBoaCeaDoaEnaG#o}En}Gn}F$naF#gJfH$iaIiaImaJ#m}Jfz#Afz%Cb}Cb}7B&bnBcn9T,kwTjw:F#by"BjxB`xCaxDkxDkyDezDdzCnzBf{Bl{Cm{Dg{Dl{Fo{G`xFcxG`xGl{GaxIcxJ`xJl{Ja{I$bf#AcfHccH`c+J+`rJcr[$oc"AkgAlcDhgDlcElfEhgFjgFmfGmcGheEieGkgHigJocHmcJncIjgIjgKncKocM&nr#Anr&Taq"@gp!_gp^`q^ls^gt^gt_ms"@cqCdpCdpBbqAnsAdtBdtCosCdtEgtFdpEgpFgpEgtEkqGcqGepHfpI`qJ`rJjrIirHgsGosGetHftIlsJdtKdpKepM$nq#Amq$CaiCai+A.mxAox[$ko!^gs^ho"AdsAipBapBkoBkoCapDeqDoqCoqBerBmrBgsBgsCmrDgsEfsGkoEjoGjoFfsFfrHnrHdsIesJorJgrJbpHjoHkoJ&ny#Aoy%PgPg&Pjw!]j{]jw_j{_k{"@kw@hwCaxFkwEjwD`xDlzDj{Dk{EmzFaxGkwGhwIbxInzIh{Ik{GmzGaxGj{JjwJkwL+my&Qny$SntSnt#Alr"AhvAmrCivCmrDivDhvFbvFjuFltFmtDntEnrForGouGjvHhvIluJlrJgtGdtJhvKlrKmrM)an&Qbn$JfiJfi#Alg"AhkAmgCikCmgDikDhkFbkFfhFlgFmgDohGghGmgHmgIdhJdiJajIajHkjGckGikHikI`kJhkKlgKmgM(eq&Sfq#Aoo"AgoAmnBnnCdoDdpDbqCaqBkqAcrAirBjrC`rDjrEhrGnnElnGmnFirFiqHarHkrHkrIarJiqJeoHmnHmnJ'nl#Anl%CjfCkf&Plk"AdkAnjAojBekCelColBnlAhmA`nAjnAknBanCknDinFojDmjFnjEjnEbnGhnHhnIbnIjmIllIflIfkIljIljHfkGllHllI(e&Qf#Ah}!^)da^(i}"@)ea@(j~Ab~Ah}Bh}Cc~CcChChB)f`An`AdaBdaCo`CdaEgaF(h}Ek}Fk}E)gaEo`GeaHfaIl`Jd`J(jI`J`~Jj}Ii}Hc~GiHjI*e}&Sf}#Ab}Ahz"Dd~Dg~Em}Fe}Fk|Eh|Dh|EizFizGe~Gd~In}If}Ih|Ib|Ib{IhzIizGi|Gh|If~JjzJkzL)iq&Qjq#A`o"D`sDcsEerFmqFgqEmpFioFcoE`oDdqDgqEbsGasIboGaoIboHbsHasJaoJboL+ek&Qfk#AfkA`m"A`iAaiCniF`iF`iEmiDilD`mE`mFjlFoiGaiHaiIliJhlJamIamHklGoiG`mK`iKaiM.j|#Ai|$CitCit&Qdz"Dd~Dh|Ee~FezFezGe~Gd~In}Ib}Ih|Ii|Gj|HfzIf~JfzJgzL,fm#Aem$\bl"BjkB`kCakDkkDklDemDdmCnmBfnBlnCmnDgnDlnFonG`kFckG`kGlnGckIclHomHonImnJlmK`lKakJckI+i}&Qj}#An}Ah{"AdAi{CeCi{DeDdFn~Ff~Fl}Fm}Dn}Ej{Fk{GgGeIl~Jd~Jm}Id}J`|Ji{Ik{Go}Gm}IdKh{Ki{M.ji#Aii&BamBamQdg"D`kDckEijFmgFggEdgDehGmgGggGdgIngInhIhiIkiGajGijGckG`kIjjIbkJfgJggL2cu&Tbu#Abs!ZnvZcs\ov\ov]lv"@ov!^cs^`s"A`vAlvBnvBavCasChtAitCisD`sE`sFjsFfvFlvFlvEevDisDovGksGasHasIhsJlvJlvKmvMlvL`sL0ms&Qns#Ahq"DduDguEmtFetFosElsDlsEiqFiqGitGeuHguHjtIjqIasGbsIfuJjqJkqL3ai&Qai#VacVbcAod!\od^od]o`]l`"@`d@od@mdAadBm`Bhb@ibBiaCo`Cl`EjaEfdEldEodCedCiaCndFjaFm`Gm`HkaHodHldJldLldKl`Kil&Qjl#Ajj!ZfnZkj\gn\`k"@jj!_ij^ck]om]en^fn_lm"@akCkjBjjA`kAlmAfnAgnBmmCgnDenFkjDijFjjEfnEjkGbkGhjHhjIbkIblIhlIhlHfmGnmGdnHdnInmIgnJkjJhjMee&Qfe$J-fz#Yez[`|]l}]e[fYl}X`|XfzY3jfUhfWchXoiXhkWjkUoiSchSjfU2irQhrSgtTcvThwSiwQcvOgtOirQ0fd:Fed9\5a`\a`#R2auR3aiV`iV4dzVgz/B,gjBfjK-c}&Tb}#Zn|Z0o{3Ln{E4ftEft#Z/f~Zf~Z+fkZnhYmh[dj]`l]mm[nmY`lXdjXnhY.bz$BazDo{Eg}EaDbBg}@o{@bzBgn#]fn_ap$AiqAfs#_gs]iq\ap\gn]op^4kq^iq2X.a~Xc~3Li|$Ci|C4inCkn2\,g}\f}3M0dq$FgqGmrIitIgvGdvFitDmrDdqFosF4kkFhk3J0ddJgdL)cn$JbnJ4jhJhh.N%hsNjs/K0bd$N`dPkeQggQ`iPbiNggLkeLbdN+mhNohOfjQblQomOmmNblLfjLmhN)kkIjkKamMmnMjpKkpImnHamHkkI3obInbKhdM`fMngKogI`fHhdHobI%j}&Th}$O+dkO0if&Qif$O+i}O4ieOje5V3feVee\+b{$N`{Po|Qg~Q,``Pb`N+g~Lo|Lb{N3ia0BkaNoyNoy$W&kvWkv&T3`c0ClbCebCdbDnbDjcDlcDmcCddChdCaeC`eDjdDebEaeEaeFkdFgdFmcFkcFobFebFebEmcEmcFkdHbeHceGjdGnbGgbGfbHobHkcHncHocGjcGjdI`eJceJhdKddKocJhcKlbKgbJdbJnbIjcIlcJfdIjdIlcJocJ+ny$S4nbSlb2Q,``Qc`3L1jm-G0nbGob*C*ceCbe$S%jrSkr&V+gw$RfwT`yVlzVf|Tg|RlzQ`yQgwR2ox&Tmx$\)ac\ac&Qac$\$mk\nk5J*n~Jo~6@.k`&Ti`$\)j`[h`]cb^oc^he]je[ocYcbYj`[+hg(_igNoiTkiTaiU`iViiVejVhjVijUckTgkTmkUlkVekV`iWlkWlkXfkXbkXhjXfjXjiX`iX`iWhjWhjXbiYbiZ`iZlkZfkYak[ek[nk[mk\gk\ck\ii[ai[ci\`j_bj]hk^hk^nk^bi^&l|%Po|Qi~S'a`SoaQlaPa`N&i~Nl|P+ir&Qjr%I2j|Ik|&T+mnQon%C(gqC+ac&Scc%@3o@n4D2beD*g{6@d{5O$lnOon$_'cc_-b~[`~]o^.ka^`c]bc[kaY-oYb~['h`_k`%@abBmcBke@he$_mc]ab]h`_-ko_jo%AaqCmrCjtAkt$_mr^aq^ko_`r&Wcr%@+c}+[`}*Q$lqQnq%C'jfC+ju+\ju*U$ntUlt%H)hqH(onBnnDipFarFnsDosBarAipAonB'cdBbdDleFhgFbiDciBhgAleAcdB.gd&Tdd%E/`dEbd-D(jfD&ml%GolHfnJbpJoqHmqGbpEfnEmlGbo&T`o%HdoH)aoGcoHnpJjrJctHatGjrEnpEaoG0jn/Kin.E$iwEkw%P&caP(o|Km|Mh~O)``OmaMoaK``J(h~Jo|K,njHmjJhlLdnLmoJnoHdnGhlGnjHfmIfm.R'jb3K$jzKjz%L(fL*mzLlzNg|Oc~OlNmLc~Jg|JmzLe}M3m|Mn|2T'j{Ti{5\(ep\jd+\idW'azWcz%P(gqP2`j&Wcj%PgjP)if&Qkf%P*gbPeb*HmvHmv0J+ecJecBieBaeBndBmdCceCoeCefCffBifBagBfgBegCcgCndDfgDfgE`gFhfFffEleF`eFndEndDffDffEegHggFgfFgfGmeHaeHodGldGceFkeFkfHcgHegIdgJagJifJceHodHmdJ&g%P'gwPfw/K(jaK3ep&Qgp%P*gbP%h~Pk~Q&e`SabSkcQhcPabNe`N%h~P(onOnnQipSarSnsQosOarNipNonO)lPoQ*eaSacSodQldPacNeaN)lP2lgPogQiiSakSolQllPakNiiNlgP(h{)Pi{*@)a@e&F*iqFjqX(`~)Sl}Si}Sh}Tn}Tj~Tl~Tm~SdShS)a`S``T(jTi}U)a`Ua`V(jVfVm~Vj~Vn}Vi}Vi}Um~Um~Vj}Wk}Xh}X)``X(jWeYiY)c`Yb`Z(kZgZm}Yi}Yk}Zk}[k}\i}\)a`\(k[0el&Qdl%^(ntTltVgvWcxWlyVnyTcxRgvRntTew&Sew%U/ey&Qey%U#etUet4J(ayJby3^f{4AnzAkzAjzBlzCh{Cb|Bc|Af|An|Ac}Ab}Bl|CkzCc}Cc}Dl|Ed|Ec|Dh{ElzEkzDkzCc|Cc|Do|Ea}F`}Gm|Ge|G`|Gi{GmzGhzGizFozEa|F`|Gf{Id{Hn|Hn|Ha}IizI)eu&Qeu%UiuU.ax&Qcx%Y#gqYfq7E'ndEld6NdfV`fVieVheWbfWjfW`gWagVdgVlgVahV`hWngWieXahXahYogYggYagYkfYcfYieYieXagXagYog[bh[chZngZbfZkeZje[cf[kf[bg[cgZjfZfg\ng\`h]ch]lg^dg^bf\je\he^)bs%T`sVktWgvW`xVbxTgvRktRbsT0iy&Qhy%^#hn^jn3E0bhEchL/a&QbB1bfBbf*UnwUmw0M2ikMhk/]om0CkmC`mDcmDimEanEknDhnDonCgoChoDkoDeoE`mFhoFhoGfoGnnGhnGbnGjmG`mG`mFhnFhnGbnIanHkoHkoHioIamIgoKjoKkoJeoJimJcmJbmKkmKcnKjnKknJanJ.ii&B,apB`p+S-`fScf[0mi%]li_jk&@fm@ln%_mn]fm[jk[mi],ea&QfaB#jkBik7H&iiHki9W(c~Wa~:L.bg&AagCkhDgjDalCblAgj%_kh_bg&A2ddWfdB1biB`i*Q`|Q`|,_3hg_igVniUfiUciUbiVdiW`jWjjVkjUnjUfkUkkUjkVdkWciWkkWkkXekYmjYkjXajYeiYciXciWkjWkjX`iZai[biZjkZ`kZbi\li\lj\jk\kk\mj]mi]ci\bi\di^bi^ai_fi_fk_ik_jk^dk^hj^bj^aj_jj_(je&XieF'etFet*@&aj@aj)PflRnkRhkSkkSlkThlTcmS`mSfmRjmR`nScnShmTkkTcnT`nVimVemV`mVilVmkVhkVkkTcmT`mVikWikXkkWcnWimWikYikZkkYcnYimYlk[jk[ik\nk\jm\an\bn[hm[`m[jl[il\bm\%`j&IcjJikLemLcoJ`oIemGikG`jI&ndTmdFivF-ow)Pmw*@/aa@aa&FaoFaoV-`z)ShySeySdyTjyTfzTlzTmzS`{Sh{Sm{Sl{Tj{TeyUm{Um{Vj{Vb{VmzVfzVjyVeyVeyUmzUmzVfyWgyXdyXl{Xf{Wa{Yi{Yo{Yn{Zk{Zc{ZiyYeyYgyZl{]n{[nz[oz\dz]hy]gy\dy\jy[bz[+kgPig*@,ej@ej&Fe}Fe}\+ni)RjiR`iSciShiTdjTkjShjSbkRfkRlkSokSdkTciTokTlkVekVakVhjVejViiV`iVciTkjThjVaiWaiXciWokWekW`kYdkYmkYlkZfkZbkZhiY`iYbiZek[nk[mk\gk\ck\ij\gj\ki\ai\bi[ii[jj[ij\0obPmb*@1ac@ac&FiuFiu\0`e)ShdSedSddTjdTfeTleTmeS`fShfSmfSlfTjfTedUmfUmfVjfVbfVmeVfeVjdVedVedUmeUmeVfdWgdXddXlfXffWafYifYofYnfZkfZcfZidYedYgdZnf[lf]hf]fd['lg0X#dwXgw&I'gjIgjP&btEatGkuHgwHayGbyEgwCkuCbtE%klVklIklI.hf'Bhf&Z-lzZlz'Bk{&Zo}Zo}[d}\`}\o|[h|\l{\k{[k{Zo|Zo|[f}\l}]n}]g}]c}]n|]k|]o{]j{]h{]n{\l|]n|].mpQmpVhkWdmWnmWomWemXikXhlWilXilZhlYnmYnmYomYkkY,nsM.f}Md}(T,lsTns&M.amQamVdoW`qWjqWkqWaqXeoXdpWepXdqYiqYkqYeqZmpZkpYepZioZgoYeoYhoYipYkpY`sWltWfuWguWmtXasX`tWatXhtYltYeuYguYmtZitZdsY`sYasZitQitVlvWdxWnxWoxWexXmvXhwWiwXlvYlvZnvYnxYdxYaxQaxVobZceZce[ld\dd\cd[lc\`c\ob[obZcdZcd[ob\ob]mb]ae]kd\-cZ.gaZga[`a\l`\g`[``\-h\c[cZ.g`Zg`[n`\ba\da]fa]ca]o`]-j\b\c]c}T`}Z.k`Th`ZgdTddZ-`lWal\.jy'@iy&VakVbk'@-mj&^kj]ij]lj]hl]ml]ol]il^cl^kl^ll_ol_hl'@`l@oj&^kj^hj'@mp&^kp]ip]lp]dr]ir]kr]er^hp_hp'@jp&_jr_dr_`rWar\.dr'HgrS-o}Sn}\lzBlzC`{Dk{Dc|Ej|Fd}Gf~GgG.``H`aHcbGbcGlcGjdFgeEoeDdfDhfChfB,e}&\d}'H`~B-d`Bd`Ca`C,e~C`~C`~B-ctBat&\mi\oi'B.bk@ckAdkClkDhlEdmFgnFeoGkpGlqHlrHctGeuGgvFdwF`xElxDdyCkyAjy@,d}Hg}S-krSjr\oiBoiCbjDijE`kFjkFdlGbmGomGhnHdoHgpGbqGlqGjrF`sFisEnsDctCctB`oHboNfvNev].h`Hj`N-bzNaz]kp[eq\br\or\hs]et]au]nu]jv]fw]fx]by]ny]iz]e{]d|]c}\n}\i~\c[kp(Akp'[c(Ac'[,fu_fw_lw(@nw@dwAduAfv'_dv(AkuAduBguBiuCiwCowBlwBkwAkuAlwDmwEduDeuEfuDnwDfvGdvFjwFjwFlwGduGhwHnwHmwIjwIbwImvIfvIjuIeuIfuHhuHnvHmvIawJiwJowJnwKkwKcwKiuJeuJguKguLguMeuMmwMgwL-nwPaxPexPexPixPhxPlxPoxOnxOmxOmxOlxOoxNoxNjxNjxNexNexNaxNmwNiwNiwNewNbwNbwNovNovNlvOmvOmvOnvOovOlvP`wPawPewPiwPiwPnwPkpAjpBipChpDopDcqEfqFiqGoqGfrHirI`sJjsJatKktKeuLouLivMcwMmwNcAbBaC`Do~Dk~Ef~Fa~Go}Gf}Ha}Ih|Jb|Ji{Kc{KezLoyLayMkxMmwNnwPowQixKjxLevKfvLkwKiwL.jy'_fy_ox_nx(@dyA`zAfz@gz'_nz_b{_k{_j{(@`{AoxAk{Ak{Ba{CmzCgzBazCeyCoxBoxAgzAgzBlxDmxEnxDj{DlzDlzF`{Fi{Fh{Gb{GnzGdyFlxFnxGb{Ii{Ij{H`{HdyHnxHmxIfyIbzIezIfzH`zH(ff&^jh^ih_ch_kf_ef_ff^)dpWlqWfrWgrWmqXepX`qWaqXlqY`rYerYgrYarZmqZhpYdpYepZhaWhcWhcXecXacXlbXebXmaXhaXhaWlbWlbX`cYdcYicYkcYecZacZlaYhaYiaZ(l}W)``W``X(iXeX`Xm~Xa~Xl}Xl}W`W`XhY)a`Yc`Y(iZeZcYm~Za~Zo}Ym}Y`~YaYcY'j}M)f{Mg{(Q'k}Qj}&M(eQeV)acQacV`eWdgWdgXagXmfXdfXafXieX`eX`eWdfWdfX`eY`eZbeYfgYlfYifQifVhlWdnWnnWonWenXilXhmWimXdnYmnYonYenZanZomYimZmlZklYilYllYmmYomYanQanV(eqSfqX)lsWhuWbvWcvWiuXmsXltWmtXlsYlsZnsYbvYhuYiqQiqVeuQeuV(bpZmoZnoYapYmqYbrYarZnqZdq[lq[br[`r\mq\eq\`p[lo[mo\ewSfwXbvZmuZnuYavYiwYnwYmwZjwZmu[mu\ou[ow[iw[)nh^mhV(a}Vb}^)jw^iwVmkVnk^(dt'^dtXao&_eo'@ioAepBaqCcrCasDetDeuDkvCiwCexBmxAey@ey&_ey_fyXboXao_jeXie'Db}&^g}_h}'Ad~BdC)g`CiaDacDedDkeChfChgBdhAoh&_nh^nk^ok_dl'A`mB`nCcoCepDiqDasDgtCduCdvB`wAgw&_jw^(et'DdtK`zKbzYieDhePhvPkvX)acD`cK(l}Kn}Y)iqDhqPhaPkaX`c^lb_lb(@hbAdbB`bChaDgaDo`Eb`F(iGl~Hc~Hf}Ih|Jj{J)`c'^`cX(dtXfuXdvYewYfxYgyYkzYk{Yo|Yo}Yn~YmY)`aYbbX`cX'l~^(`a^ja^ha_ba_'n~_(``^b`_'e(@n~@m~AgA(caAiaAja@aa@'e@(jaBkaC'n~Bo~Cm~C(iaCbaDkaDjaE`aFl`Ff`E``F'dFn~Eo~DfD(g`Df`EcaFhaGkaG`aHl`Hg`G``H'dHo~Gl~GgF(d`Gg`Go`HcaHiaIhaJaaJm`J'gHo~Hm~Jm~Km~Lo~K(kaKaaKdt'^dt_et(@itAmtBeuCmuDevEmvFhwGcxGbyHmyIhzJj{Jk{Lo{Lb|Lf|Le|Li|Lh|Lo|Kn|Ki|Kh|Kg|Jg|Jb|Jn{Jj{Jf{Jb{Jc{JozJhzKizKjzKkzKhzLizLmzLb{Lb{Lg{Lk{Lk{Li{Nf|Gg|HbzGczHd{Hf{H)hw'^`w^mv^lv_bw_nw_dx_ex^hx^`y^ey^dy_by_mv(@ey@eyAcyAkxAexAowAcwAmvAmv@ex@exAnvBovCmvCeyCnxBjxDbyDgyDfyE`yFhxFbwDnvDlvFkxFcyFdyGgyG`yHhxHcwFovFlvH%bk&\fm\fm]cm]gk]bk]bk\jl^bm^gm^em_cm_kl_fk^bk^ck_&b`[%m[oZ&a`ZiaZoaZma[ja[ea\ia\na\ma]ja]fa]a`\%m\n]'kfPhfV&o}VkV'a`Wb`W&hXl}Xo~Vl~Xk~Yj~XlYlY'b`Y&n}Y%`fM'hoMko(S%cfS`f&M&gPdV'kaVgcVmcWncWdcXhaXkbVhbXfcXocXncYgcYccYnbYkbYoaYjaYkaXnaXobXnbYccP`cVohVkjVakWbkWhjXlhXoiVliXohXohYmhYakYkjXgeVofVegWfgWlfXdeXcfV`fXnfXbgXggXfgYcgYofYjeXfeXgeYgjPdjV%j}Tj}Yf|[a|[c|Ze|Zm}Zg~Ze~[n}[m}\f~\e~]n}]j}]e}]b}]f|]a|]b|\e|\f}\e}]&nrTnrYndTndYbaTbaYnc[ec[gcZmcZeeZkeZie[fe[fc\ec]gc\ke\be\imZmoZmo[jo[fo[mn[jn[bn[im[imZmnZmn[io\no\mo]jo]fo]mn]jn]bn]im]jm\an\nn\mn]boTboYjvTjvYeqZisZis[fs[nr[ir[fr[jq[eq[eqZirZir[mr\es\js\is]fs]nr]iq\eq\fq]auZewZew[nv[jv[ev[bv[fu[au[auZevZev[bu\au]cu\gw\nv\'mk'@lk&V&`}Va}'@%kl&Vkl[&nr'GmrNelNdl]a}@d}Bc~C`E'e`FlaGjcGfeG`gGihF`jEckChkBmk@&cgAbg&Y%f{Yg{'Abq&\fs\fs]or]gq]bq]bq\bq^bq_`q_ds_nr^krVkr[&ox'Anx&YbmYcm'A%jtBkt&[gj[fj'BfjBkjCckDkkEklFmmGnnGbpGeqGkrFgsEctDktCjtBg{Ah{Cb|Dn|En}FaG&j`GnaGecGjdFjeEffDlfCcgAcmA`mCjmDfnEjoFmpGbrGjsGmtGbvFfwEbxDhxCoxA%joGioS&mdSmd\baGaaNihNhh]ib(Ajb'['jdGidS&moSmo\jb[lc\md\cf\`g]dh]ei]ij]lk]ll]cn\eo\dp\fq[eq(Afq'[%hg_hi_cj_`j(@ji@jg@hh'_jh(@mgAkgAjgBogBkiBbjBcjAiiAmgAcjCcjDkgCkgDigDajDdhGfhEliFliFcjFkgFkiG`jHcjHiiIeiIohHihImgIkgHhgHogGlhHohHhiJajJ`jKjiKfiKlhKjhKngKhgKigJlgJmhJlhKeiLiiLbjLajMkiMgiMmgLigLkgM&`jPdjPhjPojOnjOakO`kOckNbkNmjNljNhjNgjMcjMoiMhiNdiNaiNbiNohNlhOaiObiOgiOhiPliP`jPibAnbBobCccDdcFlcGddHldIheJdfKcgKbhLaiMcjMeqAfqBcqCopDhpF`pGhoH`oIdnJhmKolKblLakMcjM`jPbjQojJljLkhJhhLmiKoiK'lk'_hk_bk_ak(@jk@bl@il@jl'_ll_dm_jm_im(@fm@akAimAjmBgmBolBjlBclBkkBbkBakAilAjlBckCckDakDimDcmCckEckFakFimFcmEjkG`kHckHhkIdmIkmHhmHfmGjlG`lHclHhlIckIkmIakKimK*fr&^ft^et_ct_kr_er_fr^+`|Wl}Wf~Wg~Wm}Xa|X`}Wa}Xh}Y`~Ye~Yg~Ya~Zi}Zd|Y`|Ya|ZdmWhoWhoXeoXaoXhnXenXmmXdmXdmWhnWhnX`oYdoYioYkoYeoZaoZlmYdmYemZliWlkWlkXikXekX`kXijXajXliXliW`kW`kXhkYmkYokYikZekZckYijZajZoiYmiY`jYakYckY*fiM,bgMcg(Q*giQfi&M+ekQekVmnQmnV`qWdsWdsXasXirXdrXarXeqX`qX`qWdrWdrX`qY`qZbqYfsYlrYirQirVdxW`zWjzWkzWazXexXdyWeyXdzYizYkzYezZazZkyYeyZmxZgxYexYlxYiyYkyYmyQmyV*e}Sf}X+lW,haWbbWcbWiaX+mX,l`Wm`X+lYlZnY,bbYhaY+i}Qi}V,eaQeaV*b|Zm{Zn{Ya|Yi}Yb~Ya~Zj}Zd}[h}[b~[`~\i}\e}\`|[l{[m{\+acSbcXbbZiaZjaYabYicYncYmcZjcZia[ia\ka[oc[ec[nt^mtVaiVbi^,jc^icV+iwVjw^``'^``X*a{&_a{'@d{Al{Bk|Bf}Cd~DaD+a`DaaD`bDbcCocBhdBldAee@ee&_ee_feX*b{Xa{_jqXiq'D+bi&^bi_gi'@cjAnjBikCklCmmDmnDapDcqCarCbsBosAgt@jt&_nt^jw^nw_cx'@kxAfyBezCg{Ce|Di}Dm~DoC,m`CnaBkbAcc@fc&_jc^+a`'D``K`fKbfY*iqDhqP+dbPgbXmnDlnKliKniYi}Dh}PdmPgmXln^ln_on_kn(@fnAbnBmmChmDcmDklEblFhkGckGfjHliIbiIdhJjgJln'^lnX``XbaXlaYmbYncYjdYkeYkfYkgYkhYgiYfjYfkYelY`mYbnXlnX*lj^ll^fm^dm_nl_nj_`l^bl_ek(@nj@mjAgkAcmAemAfm@am@ek@fmBgmCnjBojCmjCemCbmDgmDfmE`mFhlFflE`lFdkFnjEojDfkDglDflEcmFdmGgmG`mHhlHglG`lHdkHojGljGgkFdlGglGklHcmHemIdmJamJilJgkHojHmjJmjKmjLojKgmKmlK+``'^d`_d`(@k`@k`AcaBfaCjaDabEhbFgcFncGidH`eIneIlfJjgJkgLogLogLbhLfhLehLhhLhhLkhKjhKihKhhKdhKghJchJngJngJjgJfgJbgJofJofJhfKhfKifKffKgfKhfLhfLifLnfLnfLcgLggLkgLkgLigNfhGghHbfGcfHdgHfgH,hc'^`c^mb^lb_bc_nc_`d_ad^hd^ld^ee^de_nd_mb(@ee@eeAodAkdAadAocAccAmbAmb@ad@adAnbBobCmbCeeCndBjdDndDgeDfeEldFhdFbcDnbDlbFhcHkcFaeGaeGgeGobG2l~'Bl~&Z`sZ`s'Bos&ZouZou[hu\du\cu[ht\`t\os[osZcuZcu[ju\lu]nu]ku]gu]bu]kt]ct]ns]ls]bt\`u]bu]3aiQaiVlcWheWbfWcfWieXmcXldWmdXidZhdYneYneYcfYocY1blM3juMhu(T1`lTbl&M3eeQeeVhgWdiWniWoiWeiXigXhhWihXdiYmiYoiYeiZaiZohYihZmgZkgYigYlgYmhYohYdkWllWfmWgmWmlXekX`lWalXllY`mYemYgmYamZmlZhkYdkYekZilQilVlnWhpWbqWcqWipXmnXloWmoXlnYlnZnnYbqYhpYepQepV2c{Zg}Zg}[l|\h|\g|[`|\d{\c{[c{Zg|Zg|[c{\c{]a{]e}]o|\gwZkyZky[dy\lx\kx[dx\hw\gw[gwZkxZkx[nx\fy\hy]jy]gy]ox]jw\fw\gw]cuT`uZoxTlxZk|Th|ZddWed\3nq'@mq&VacVbc'@2ac&^ob]mb]`c]hd]ae]ce]id^gd^kd^`e_ce_hd'@dd@cc&^ob^lb'@ai&^kh]ih]`i]hj]mj]oj]ij^hh_hh'@jh&_nj_dj_`jWaj\3hj'HkjS2ouSnu\`sBcsBcsCjsDlsEgtEmtFkuFavGnvGkwGdxHdyHczGnzGi{Gg|Fm|Fg}El}Ef~Dk~Ck~Bl~B1iu&\hu'HdvBhxBhxCaxCivCdvCdvB2glBel&\ab\cb'B3bc@fcAfcBncCfdDmdEheFffF`gGbhGciG`jH`kHclGbmGlmGnnFhoFapEnpDfqCjqBnqAnq@1huHkuS2ojSnj\cbBbbCebDkbDnbEdcFjcFddGmdGkeGcfGlfHhgHghGohGiiG`jGnjF`kFjkEokDalDflCglBdgHfgNjnNin]lxHnxNfrNer]kh[di\mi\jj\ck\lk]el]am]nm]fn]bo]jo]fp]bq]jq]fr]as]is]dt]ot\ju\av\lv\gw[kh(Akh'[gw(Agw'[1jm_jo_`p(@bp@hoAhmAjn'_hn(AomAhmBkmBmmCioCcpB`pBkoAomA`pDapEhmDimEjmDbpDfnGdnFnoFnoF`pGhmGhoHbpHapIjoIfoImnIjnInmIimIjmHlmHnnHmnIeoJioJcpJbpKkoKgoKmmJimJkmKkmLkmMimMapMkoL2bpPapPepPepPipPipPlpPlpPcqOcqObqObqOaqOaqO`qOcqNcqNnpNnpNjpNipNepNepNapNapNmoNmoNioNioNfoNfoNboNcoNcoN`oOmnOmnOnnOboOcoOcoO`oPdoPeoPioPioPmoPmoPbpPkhAihBlhCohCmhD`iEfiEeiFkiFniG`jHkjHmjIckIikJclJelKolKemLomLdnMnnMkoMapNgwAewBdwCfwCawDcwDnvEhvFkvFevGcvGnuHduIbuIltJftJlsKjsK`sLirLcrLiqMbqMkpMapNbpPcpQmpKnpLinKjnLooKmoL3nq'_jq_cq_bq(@hqAdrAjr@kr'_nr_fs_ks_js(@dsAcqAksAksBesCmrCkrBerCiqCcqBcqAkrAkrB`qDaqEbqDjsD`sDdsFisFhsGfsGnrGhrGfrGjqG`qGaqFhqFirFhrGcqHlqHlrHksHhsInrInqI`qIcqH0l{&]m{ViqVhq]ljW`mW`mXmlXilX`lXmkXekXljXljW`lW`lXljYljZnjYbmYhlY/aQaVeyQeyVjgM0jMk(O/kgOjg&MaxXlwXmwW`xWhyWazW`zXiyXdyYhyYazYczYiyZeyZ`xYlwYmwZ0`eWdgWdgXmfXifXdfXafXeeX`eX`eWdfWdfXhfYlfYegYggYmfZifZdeY`eYaeZ/a~Xh}Xi}W`~WhWmWlXiXh}Yh}Zj}YnYdY0ifQifVelQelViyQiyVdrW`tWjtWktWatXerXdsWesXlsY`tYitYktYatZmsZhrYdrYerZmsQmsV`xWlyWfzWgzWmyXaxX`yWayX`xY`xZbxYfzYlyY/mo\mq\lq]jq]bp]lo]mo\aoV`o'B0da&]eaV/awV`w]0hn]inVedVdd]/h{'Va|Vn|Vk}V`~Wm~WiW0f`WbaWoaWkbWccWocWjdWfeWafWmfWhgWchVnhViiV`jV/`oBcoMk}Mk}V0dd&]gd]jd^md_ce_je'@dfAnfAkgAdhB`iBliBhjBgkAblAhlAfm@om&_an_fn^kn]hn]/`w]cw]fw^iw_cx_fx'@`yAjyAgzA`{Bl{Bh|Bd}Bc~An~AdA0b`@k`&_m`_ba^ga]da]hq]kq]nq^ar_gr_nr'@hsAbtAotAhuBdvB`wBlwBkxAfyAlyAjz@oz&_e{_j{^o{]l{]di'BgiHceHbeW/d|Bg|H0gaHfaWhvBkvMohMohV/k{[h{Vk{[j{\i{]h{^o{^n{_`|(@g|@j|Al|Bg}Bi}C`~Dj~Dl~EgEmF0k`F`aGjaGdbHmbH/`i'[`k[jk[hk\bk\bi\dj[fj\ii]ci]ai^ki^gk^ik^kk]ek]ii]kk_kk(@ci'_ci(@ai@ik@njAfkAkkAjkBdkCljCjiAbiA`iCojCgkChkDkkDekEmjEkiCciCaiEljFdkFikFhkGfkGnjGhiF`iFbiGaiHbiIciHkkHakH0cj'[`jVnb(JbcJbcJfcJicJicJhcJlcJocIocIncImcImcIlcIocHkcHjcHjcHfcHacHacHmbHibHibHfbHfbHbbHcbHoaHlaImaImaInaIoaIoaIlaJ`bJabJebJfbJjbJjbJnbJcj'[bj\aj]`j^oi^ni_hi(@gi@biAlhBghBahChgDbgDlfEgfEmeFgeFhdGbdGhcHmbHnbJlbLicEjcFeaEfaFkbEibFl{'[h{[b{[a{\j{\b|\i|\j|[l|[d}[j}[i}\f}\a{]i}]i}^g}^o|^i|^c|^k{^a{^a{]i|]i|^c{_c{(@a{@i}@c}'_n|(Af}Ak}Aj}Bd}Cl|Cj{Ab{A`{Cg}Ch}Dk}De}Em|Ek|Da|Ei{Ec{D`{Dk{Cc|Ch|Do|Cg}Ch|Dk|Dlb_lbLaeSidSgdSfdTkdTgeTneToeSafSifSofSnfTkfTfdUnfUofVhfW`fWoeVdeWhdWgdVfdUneUoeVddXddYfdXnfXdfXcfYkfYlfZofZif[af[kdYgdYed[hf\mf\lf]jf]bf]le]fe]jd]dd]ed\hd\de\me\`f\hf\me\le](i{^i{Nk}Tc}Tm|Ul|Va}Vm}V`~Va~Uk~To~TeUdVm~Vl|WdWdXn~Xj~X`~Xn}Xb}Xl|Xl|W`~W`~Xn|Yn|Zl|ZdZn~Yi~[m~[f[e\o~\k~\a}[m|[o|\j~]n~]g]f^l~_h~_b}]n|]l|_%oi+DniFekHamHnnFonDamCekCoiD(ie*PheRfgSbiShjRijPbiNfgNieP/j)LjMb}Lb}M`}MhMa}NiNc}OkOb}PjPkQ`Rl~Rg~Qf~Pe~Q`}Rc}RkRkSaTm~Tg~Sa~Te}Tc}Sc}Rg~Rg~S0daE`cEjcEkcEacFeaFdbEebFlb(_mb)DahD/i}D0lbMahDmbOacOacOecOdcOhcOhcOocNocNncNncNmcNlcNlcNocMocMncMjcMicMecMecM`cM`cMlbMhbMhbMebMebMabMbbMnaMoaMoaMlaNlaNmaNnaNnaNoaNoaN`bO`bOdbOebOibOibOmbOmbOobPkcHhcJgaHdaJhbIjbInjCjjCcjCbjDhjEdkEjkDkkCblCflColCnlDdlEcjEolEolFelGalGkkFekGijGcjFcjEkkEkkF`jHajIcjHolHdlH`lJdlJmlJllKflKblKhjJ`jJbjKmlLnlMflMajL(gxKgxLouKouLmuLexLnuMfxMluOdxOouOgxOdxQmwQiwQdwQgwOfwPmuQluRdxRdxSnwSjwSdwSnvSbvSluSluRdwRdwSazDm{Dg|Dd|En{EbzEa{Db{Ei{(^j{)C)n`C(jvCi{L)n`C(j{Nn{Nb|Na|Ne|Nh|Nh|Nk|Mn|Mm|Mh|Mh|Mk|Lf|Lb|Lb|Lm{Li{Le{Lf{Lb{LnzLozLhzMhzMizMjzMkzMhzNlzNmzNa{Nf{Nf{Nj{Nj{Nh{Pd|He|I`zHazIf{Hg{H)ncCfcCccCbcDdcE`dEfdDgdCndCbeCkeCjeD`eEccEkeEkeFaeGmdGgdFadGecGccFccEgdEgdF`cHacIccHkeH`eHldJ`eJieJheKbeKndKdcJ`cJbcKacLbcMccLkeLaeL-lw(_owQbzUjyUdyVgyVhyWdzWozVlzVb{Uj{Ul{Vo{Vh{WgyWo{Wo{Xi{Ya{YozXezYiyYgyXgyWozWozXdyZey[gyZo{Zd{Z`{\h{\m{\l{]j{]b{]hy\dy\fy]k{_m{_n{^i{^iy^fy^ey_ky_gz_mz_nz^ez^&bj^bjQelUmkUkkUjkVokVklVbmVcmUemUimUcnUbnVkmVjkWbnWcnXhmYdmYcmXhlYlkYkkXjkWbmWcmXhkZhk[jkZbnZhmZhk\hk]jk\bn\hm\ok]ik^hk_mk_im_`n_an^km]cm]il^hl_am_hk)@`n@jkAbnA2cp(Qap*Hi`Hj`1S1fsSgs3L2dr(TlqTjqTiqUnqUjrUasUbsTdsTlsTbtTatUnsUiqVatVatWosWgsWasWkrWoqWiqWiqVasVasWkqXkqYiqYatYksXnsZctZbt[ls\ds\bs[hr\lq\jq[kqZnqZcsZbs[iq]gr\gs\at]bt]es^er^jq]iq]+fd)LfdMjaLjaMhaMddMiaNedNkaOgdOjaPfdPgdQlcRhcRccQbcPacQhaRkaRgdRgdSmcTicTccSmbTabTkaSkaRccRccS`fElgEfhEghEmgFafF`gEagFhg(_ig)DilDebDhgMilDigOmgOmgOahOdhOdhOghNjhNjhNihNhhNhhNkhMfhMfhMehMahMlgMlgMhgMdgM`gMagMmfMnfMjfMkfMhfNdfNefNjfNjfNkfNlfOlfOagOagOegOigOigOkgPghHdhJcfH`fJdgIfgImnDinDbnDanEknEgoEioEjoDapDepDnpDmpEgpEbnFnpFnpGdpH`pHjoGdoHhnHbnGbnFjoFjoGcnH`nJbnInpIcpHcpJgpJlpKopKepLapLknJcnJanLgpLmpMlpNepNapNhoNeoNinN`nNanMknLioMhoN&lfLlfM`dL`dMbdLnfLcdMofMadOmfO`dPlfPlfQffQbfQheQhePkePbdQadRmfRmfSgfScfSieSgeSkdSadSadRieRieSjhDfjDljEmjEgjEkhEjiDkiEbj(^cj)CcoCodCbjLcoCcjNgjNgjNjjNnjNmjN`kNckMbkMbkMakMljMojLkjLfjLfjLbjLniLjiLgiLgiL`iMaiMnhMnhMohM`iNaiNfiNfiNkiNoiNcjNcjNajPljHmjIhhHihIniHliIcrCoqCdqDgqDmqEirEorDlrDgsCksClsDosDisEdqFlsFlsGisGesGlrGirGmqGdqGdqFlrFlrGeqHfqIgqHosHesHeqJfqKgqJosJesJmqLfqLeqMnqMjsMmsMnsLisLmrLjrLirMnrM-jtLjtMbrLbrM`rMhtMarNitNcrOktObrPjtPktQ`tRlsRgsQfsPesQ`rRcrRktRktSatTmsTgsSasTerTcrScrRgsRgsSdvE`xEjxEkxEaxFevFdwEewFlw(_mw)Da}DirDlwMa}DmwOaxOaxOexOhxOhxOoxNoxNnxNnxNmxNlxNlxNoxMnxMnxMixMixMexM`xM`xMlwMhwMhwMewMewMawMbwMnvMovMlvNlvNmvNnvNnvNovNcwN`wOdwOewOiwOiwOmwOmwOowPkxHhxJgvHdvJhwIjwImDiDbDaEkE.g`Ei`Ej`DaaDeaDnaDmaEgaE-bF.naFnaGdaH`aHj`Gd`H-hHbGbF.j`Fj`G-cH`JbI.naIgaHcaJgaJlaKoaKeaLaaL-kJcJaL.maNoaLk`Lh`Ne`N-iN`NaMkLoL$fl*KelM`nOhoOeqMfqKhoJ`nJflK*ce+[be*L2kh+[jh*L$nnL,jyLiy.X-maXna/K,bw*KawMlxOdzOa|Mb|KdzJlxJbwK*jbKibMddO`fOigMjgK`fJddJjbK(bh+\`h*Q*ka+[ja*]ja]$bxXaxZly\d{\a}Zb}Xd{WlyWbxX%no+\no*Y1gp+[fp*Y$jzY)cz+[bz*YjwXiwZdy\`{\i|Zj|X`{WdyWjwX%fmXemZ`o\lp\erZfrXlpW`oWfmX1kj+[jj*]$jw]3ia5\ia1Z/mZm+A.mxA)c*\b^*l`+@hb@bd*^cd\hb[l`[)c\$cu\bu^lv+@hx@bz*^cz\hx[lv[cu\&cq+[aqA.fv@dvBcxCoyCd{Bf{@oy*^cx^fv+@&jn@hnBcpCoqChsBjs@oq*^cp^jn+@%gl[glE+gyEfy\0cm[cmN/cw[cwJ4gzJ3gb[ebG2om[mmG4ihGkhF+ovDnvFixHazHn{Fo{DazCixCovD4`fFcfGmgIiiIckG`kFiiDmgD`fF*j/Kh+JhJ2mFlH3kaIgcIldHmdFgcDkaD2mF*a}I`}Kj~L+f`L`bKabIf`G*j~Ga}I&crMarOlsQhuQawOcwMhuLlsLcrMkt[jtN4lwJowKeyMa{Mo|Kl|Ja{HeyHlwJ(ok[nkN4gtN-clNcl[(giMeiO`kQhlQenOgnMhlL`kLgiM/cq[cqNgqN4nbU3bfUbf\l|R0`sRcs[kjMjjOelQanQjoOkoManLelLkjM/onMnnOepQarQnsOosMarLepLonM4oqMnqOisQeuQnvOovMeuLisLoqM(o`[m`S#a}S3ezQgzRb|Tn}TgReQn}Ob|OezQ#jzRhzTg|Uc~UhTjRc~Pg|PjzR(idWeuWgu,_/ol_nl/K+a}+V.iiVki3L4g`+Te`VlaXhcXeeVgeThcSlaSg`T+izUhzWc|Xo}XhWiUo}Sc|SizU%ks[jsWjsW&gm[fmW#fzW(bbVabXkcYgeYagXbgVgeTkcTbbV#owVnwXdyZ`{Zn|Xo|V`{UdyUowV,``2Q'lrQnr:@(jz@izL-fy/KfyF.jiF%mzLoz.I4`l+[bl\im^eo^bq\`q[eoYimY`l[/gy,Cfy+_ju,AfwAlwBnwBgwBkuBjvAkvBnoAnqAnqBkqBgqBbqBkpBcpBnoBnoAbqAbqBcq+[cq,@bo+_go_ho,@ap@fp@op@dqAhqAarAirAbsAfsAnsAftAntAfuAmuAavAhvA`wAgw@nw@ex@hx@ox+_fy_cw[cw,@coCbo+_gy,CeyDfyD`yEbyEcyEmxFnxFhxGixGgxG`xHbxHowHhwIfwIcwIlvJivJbvJouJhuKauKntKktK`tLcoCaoDboD`oEboEgoEeoFfoFhoGmoGooG`pHfpHkpHlpIbqIgqIhqJmqJbrJgrJlrKasKfsKosK`tLijEamEkjFcmFjjGbmGbmHllIdlIblHblGalHhjIglIolI`mJcmJmlKelKojIkjIijK`tNbtO`tNdtNdtNhtNhtNltNotMcuMbuMbuMauMeuMduMduMguLcuLbuLbuLauLmtLltLhtLhtLdtLdtL`tL`tLlsLlsLhsLhsLesLesLbsLbsLcsLcsL`sM`sMasMasMbsMbsMgsMgsMhsNhsNlsNlsN`tN`tNltImtJhrIirJnsIlsJi{Ea{EozEnzFc{Fo{Ff|Fg|Ei|Ea}Eg}Ef}Fc}FnzGf}Gf}H`}Ih|If|Hl{I`{InzHnzGf|Gf|Hi{Kk{Ia}Ja}Jg}JozJnzLh{Lh|Lf}Lg}Li|Mi{MozLnzL)fyAb{Ah{Bj{Bc{BgyBfzAgzB*caBn`Bl`BbaAjbA`cBbcBkbBfdAjfAjfBgfBodBfdBfdAce+[ce,@ka+[ka,@)b}AfAfBcBk~Bf~Bc~Bg}Bb}Bb}Af~Af~Bo}+[o},@cz+[cz,@*egKegLagMifNafOhePodPadQccQabRbaRb`R)bRm}Rc}Qa|Qc{PhzPmyOeyNayMmxLixKixKkx@*gg@egK`iLlkLaiMmkM`iNlkNmkOfkOjiOaiO`iNcjQajPkkPkkPnkQbiQc`Ta`Vc`Tc`Tg`Tj`Tj`Tn`Tm`Tm`T`aT`aTcaSbaSbaSaaSaaSl`Sl`So`Rk`Rj`Rf`Rb`Rb`R)nRjRjRgRgR`S`SaSaSn~Sn~So~S`T`TaTaTfTfTjTkToT*c`TjaOkaP)fOgP*h`Pj`P)duL`uLitLhtMauMmuM`vMavLhvLlvLawL`wMmvMhtN`wNawOnvOjvOavOnuObuOitOhtN`vNavOivPmvPcwPbwQovQkvQauPitPktQbuRhtSjtS`uTlvTbwS`wSnvRbvRluSnuS`vT&`kIck@ov@lvIcq+[cq,@gtBbtB`tBftAnuA`vBbvBouBkt+[kt,@gm+[gm,@fpAjrAjrBcrBoqBjqBgqBkpBfpBfpAjqAjqBjlAfnAlnBnnBgnBklBjmAkmBlvIovIkvJfvKnuL`uMktMisNnrNoqNcqNcpNboNenNkmMllMflLnkKgkJckI`kImxKe{KoxLg{LmxMe{Mf{NozNcyNnxNmxMnzOd{Pg{PlzQhzQczPlyQ`yQoxPlxPbyO`zPczP`qQbqR`qQ`qQdqQhqQkqPoqPnqPbrParP`rP`rPcrObrObrOmqOmqOhqOhqOdqOcqNcqNopNhpOhpOdpOepOapObpOnoOooOloPloPmoPbpPbpPgpPgpPhpQhpQlpQ`qQhrLirMdpLepMiqLkqLmgKegKbgKagLggLchLihLjhKmhKeiKjiKiiLgiLagMiiMjiNgiNohNjhNchNggNbgNagMihMjhNnhOfiOhiPkiPdiQlhQfgObgO`gQiiSkiQkhQhhSahSegS`gSagRggQogQ%ajEaj@ks+[ks,@gl+[gl,@ckBnjBljBbkAjlA`mBbmBklBbrAnsAdtBftBosBcrBbsAcsBno+\no,AenBipBipCfpCbpCioCfoCnnCenCenBioBioCaj@jj@gk@lkAhlAemAmmAjnAfoAnoAjpAfqAmqAirAdsAlsAkt@bu@mu@jeJbhJheL`hLkeLchLchMlgNhgNcgMcgLagMheNogNahO`hPmgPigP`gPmfPafPhePieOcfNagO`gPajE`jFbjFejGdjHjjHmjIckIekJhkKblKdlLnlLdmMnmMgnMmnNfoNooNmuEmu@muEluFnuFiuGhuHfuHauIotIitJdtKnsKhsLbsLhrMbrMkqMaqNjpNooNloQ`pQdpQhpQkpPopPnpPaqPaqP`qPcqObqOnpOmpOhpOhpOdpOcpNooNooNhoOdoOdoOaoOboOnnOonOlnPmnPmnPboPcoPgoPdoQhoQloQloQloQnoRhpLipMdnLenMioLkoLbxJjwJgwJfwKhwLdxLnxKoxJbyJjyJoyJnyKhyLgwLoyLoyMhyN`yNoxMdxNhwNgwMgwLoxLoxMcyNkyNmyOlyPiyPayPkwNgwNewPbxR`xQjyQjyQmyRewR(an@fm@kl@`lAekAjjAniAciAkhAogAcgAgfAkeAodAcdAfcAnbAabAdaAk`@b`@'e@(o`+[o`,@ok+[ok,@bkAfmAfmBcmBgkBbkBbkAb`AnaAdbBfbBoaBc`BbaAcaBbh+\bh,AngCegCggBmgBeiBkiBiiCfiCmcBmeBmeCjeCfeCaeCjdCbdCmcCmcBaeBaeCjd+\jd,AmoKerKooLgrLmoMerMfrNcrNkqNfqNeqMdqNooNlpQnpOdrPdrPgrPooP'dFe@(`nFan@`nFcnFnmGmmHhmIkmIfmJamKllLflLalMhkNfkNmjOgjOmiPciPihQchQdgRjfR'dFgFfGiHhIoI(b`Je`Kh`Ln`LeaMhaNbbNibOccOicPcdPmdQgeQ`fRjfRkfTofTcgTbgTfgTfgTigTigThgTogSogSngSmgSigShgShgSggRggRbgRbgRnfRjfRjfRffRbfRcfRoeRleSleSieSieSjeSkeSkeSheTmeTmeTneTbfTbfTgfTkfTkfTkfTifVbhOchPneOoeP`gPbgP'a|Ki{Kf{Ke{Lk{Lg|Lm|Ln|Ka}Ki}Kn}Km}Lk}Le{Mm}Mn}Nk}Nc}Nn|Ng|Nk{Nf{Ne{Mm|Mn|Nb}Oj}Ol}Po}Ph}Q`}Qj{Of{Od{Qk}Qm}Rl}Si}Sa}Sl|Se|Si{Sd{Se{Rk{Qg|Qm|Rc}Qk}Qm|Rl|S-gnCfn+_jj,AflAllBnlBglBkjBjkAkkBndAnfAnfBkfBgfBbfBkeBceBndBndAbfAbfBcf+[cf,@bd+_gd_ld,@ae@je@cf@hfAmfAegAngAfhAnhAfiAniAfjAmjAekAlkAgl@nl@am@hm@om+_fn_cl[cl,@cdCbd+_gn,CenDgnD`nEbnE`nFnmFomFimGgmGdmHbmHolHilIflIclIikJfkJckJhjKejKniKkiK`iLcdCadDcdD`dEbdEddFfdFkdFidGodG`eHfeHkeHmeIbfIgfIifJnfJggJhgKahKfhKohK`iL,iE-abE,kF-cbF,jG-bbGbbHlaIdaIbaHbaGaaH,hI-gaIoaI`bJcbJmaKeaKc`I,kIiK-`iNbiO`iNdiNdiNhiNliNoiMoiMcjMbjMajMejMdjMdjMgjLcjLbjLajLmiLmiLliLhiLdiLdiL`iL`iLlhLlhLhhLehLehLehLbhLchLchL`hM`hMahMahMbhMghMghMghMhhNlhNlhN`iN`iNliImiJhgIigJnhIlhJipEapEooEnoFcpFopFfqFgqEiqEarEgrEfrFcrFnoGfrGfrH`rIhqIfqHlpI`pInoHnoGfqGfqHcrIdrJgrJarKiqKgqJmpKapKooJloJcpIdqJgqJarMdrMerL`rL`pLmoLloMapMmpMdqMeqLlpL+mo@jp@cq@lqAirAbsAnsAktAguAcvAovAkwAgxAcyAkyAfzAb{Am{Ah|Ac}@n}@i~@c}+[c},@cr+[cr,@jpAnrAnrBgrBopBjpBjpAj{Af}Al}Bn}Bg}Bk{Bj|Ak|Bju+\ju,AjtCetCgtBitBavBgvBevCbvCmwBazBazCnyCfyCayCnxCbxCmwCmwBayBayCfy+\fy,AekKanKgkLcnLekManMbnNkmNgmNnlNmlMllNgkNdlQflOlmPlmPcnPgkPh~Fi~@loFmo@loFooFnoGapH`pIfpIipJhpKcqKeqLhqMbrMerNorNesOosOetPotPeuQouQivRbwRh~Fk~Ff~Ge~Hd~Ib~Im}Jh}Kg}Ka}Ll|Mf|Mm{Nk{Na{OkzOazPkyPayQgxQmwRbwRcwTgwTkwTjwTnwTnwTaxTaxT`xTgxSgxSfxSexSaxS`xS`xSowRowRjwRjwRfwRbwRbwRnvRjvRkvRgvRdvS`vSavSavSbvScvScvS`vTavTevTfvTjvTjvTovTcwTcwTcwTawVnwOowPjuOkuPlvPnvP,m`Ke`Kb`Ka`Lg`LcaLeaLfaKmaKabKjbKibLcbLa`MibMjbNcbNoaNfaNcaNg`Nb`Na`MeaMfaNbbOhbPkbP`bQlaQgaP`aQd`Qc`P``Pf`OdaPgaPa`Ro`QoaQibRkbRmaSm`Sc`Ra`R.c{Cb{+_jw,AbyAhyBjyBcyBkwBfxAgxBjqAnsAnsBgsBcsBnrBkrBoqBjqBjqAnrAnrBcs+[cs,@np+_cq_hq,@mq@fr@or@dsAhsAatAitAbuAjuAbvAjvAnvAewAmwAdxAlxAcy@jy@az@dz@oz+_b{_ox[ox,@opCnp+_c{,Ca{Dc{D`{Eb{ElzFmzFkzFhzGfzGczGazHnyHhyIeyIbyIlxJexJbxJowJdwKawKnvKgvK`vLopCmpDopDlpEbqE`qFaqFgqFhqGjqGoqGarHfrHhrImrIbsIdsJisJnsJctJhtKmtKfuKkuK`vLelEaoEglFcoFflGboGboHhnIdnInmHnmGmmHdlIgnIknI`oJcoJinKenKolIglIelK`vNbvO`vN`vNdvNdvNhvNkvMovMovMnvMbwMawMawM`wMcwLcwLbwLnvLmvLmvLhvLhvLdvLdvL`vL`vLluLluLhuLduLduLeuLauLbuLbuLotLotLltMmtMmtMbuMbuMcuMguMguMduNhuNluNluN`vNlvImvJhtIitJnuIluJe}Ea}Ek|Ej|Fc}Fo}Fb~Fc~Ee~Em~EcEbFo~Fj|GbGbHl~Id~Ib~Hl}I`}Ij|Hj|Gb~Gb~Ho~I`JcJm~Ke~Kc~Jm}Ka}Kk|Jh|Jc}I`~Jc~Jl~LaL`Mm~Me~M`~Mm}Ma}Mh|Mi|L`}Ll}La~Ld~Ll~La~L`~M3a`@n`@fa@oa@dbAmbAecAncAjdAceAkeAcfAofAdgBlgBghAciAkiAcjAjjAbkAmkAelAllAgm@nm@fn@mn@gm+[gm,@gb+[gb,@n`AbcAbcBobBgaBn`Bn`AblAjmA`nBbnBkmBclBnlAolBbf+\bf,AndCidCkdBmdBifBofBmfCjfCehBijBijCbjCniCiiCfiCjhCehCehBiiBiiCni+\ni,A2m{Ke~Ko{Lg~Lm{Me~Mf~Nc~Nk}Nf}Ne}Md}No{Nl|Qn|O`~P`~Pg~Po{P3lnFmn@``Fa`@``Ff`Fe`Gg`Ge`Hk`Hi`Il`Jn`J`aKfaKhaLnaL`bMfbMhbNnbNdcOicOcdOedPndPdeQieQbfQhfRagRjgRlnFnnFmnGonGmnHknHinIdnJbnJ`nKnmKhmLfmL`mMnlMhlNblNlkOikOckOijPfjPliQeiQbiQhhRahRjgRkgTkgTogTogTbhTbhTfhTehTehTihThhThhTkhSkhSjhSjhSihSihShhSdhSghRghRchRchRngRngRjgRjgRfgRfgRbgRcgRofRofRofRhfShfSifSifSjfSjfSkfSkfShfThfTifTifTmfTnfTnfTbgTcgTggTggTkgTkgTigVfhOghPbfOcfPdgPfgPaqKmpKfpKepLopLkqLmqLnqKerKirKnrKmrLkrLepMmrMnrNkrNgrNnqNkqNopNfpNepMmqMnqNgpOgpPepPmrPgrOepRbqQfrQmrRnrRdrS`qSfpRepRopSepTdpUmpUirUlrUmrTkrSoqSiqThqUmqU1krCjr+_nn,AjpA`qBbqBkpBonBnoAooBbiAfkAfkBojBkjBfjBcjBgiBbiBbiAfjAfjBkj+[kj,@fh+_kh_`i,@ei@ni@cj@kj@ljAekAmkAblAjlAbmAjmAnmAfnAnnAeoAioA`pAkp@op@fq@iq@`r@gr+_jr_gp[gp,@ghCfh+_kr,CirDjrDhrEirEgrEdrFfrFcrFmqGnqGhqHeqHfqH`qImpIjpIgpI`pJnoJgoJ`oKlnKinKbnKomKhmLghCehDfhDdhEihEkhEhhFnhFohFaiGbiGdiHiiHniHliIajIfjIkjIljJfkJkkJlkK`lKelKnlKcmKhmLmcEifEocFkfFncGjfGjfH`fIleIfeHfeGeeHlcIoeIcfIhfJkfJafKmeKgdIocImcKhmNjmOhmNhmNlmNlmN`nN`nNgnMgnMfnMfnMjnMinMinMhnMknLknLjnLfnLenLenLenL`nL`nLlmLlmLhmLhmLdmLdmL`mL`mLllLmlLilLilLjlLflLglLglLdlMelMelMflMjlMjlMklMolMllN`mN`mNdmNdmNhmN`nIanJ`lIalJfmIdmJmtEitEctEbtFktFcuFjuFkuEmuEevEkvEjvFgvFbtGjvGjvHdvIluIjuH`uIhtIbtHbtGjuGjuHauKcuIivJivJkvJctJauM`uLjvLjvLhvM`tM0guCfu+_jq,AfsAlsBnsBgsBkqBjrAkrBjkAnmAnmBkmBgmBnlBklBclBjkBjkAnlAnlBcm+[cm,@nj+_gk_hk,@al@fl@ol@`mAhmAanAinAnnAfoAnoAfpAnpAfqAiqAarAhrAlrAgs@ns@at@ht@ot+_fu_cs[cs,@ojCnj+_gu,CeuDbuD`uEauEcuEltFntFktFitGftGdtHatHnsHhsIesIbsIorIhrJfrJcrJlqKdqKaqKnpKgpK`pLojCmjDbkD`kEbkEckEekFfkFhkGikGokG`lHflHglHhlInlIcmIdmJmmJbnJgnJhnKaoKfoKooK`pLifEaiEkfFciFjfGbiGbiHlhIdhIbhHbhGahHhfIghIohI`iJciJmhKehKofIkfIifK`pNbpO`pN`pNdpNhpNhpNhpNopMopMbqMbqMbqMaqMaqM`qMcqLcqLbqLbqLaqLmpLmpLhpLhpLhpLdpL`pL`pLloLloLhoLhoLdoLeoLeoLaoLboLboLcoLcoL`oMaoMaoMboMboMboMgoMgoMdoNhoNhoNloNloN`pNlpImpJhnIinJnoIloJewEawEkvEjvFcwFowFbxFcxEixEmxEgyEfyFoxFjvGfyGfyHlxIhxIbxHlwI`wIjvHjvGbxGbxHiwKkwIayJayJgyJkvJhxLlxLeyLdyMmxMixM`wLhvLivM2krFcuFirHauHhrI`uI`uJntJbsJhrJhrIetKmtKbuKauLotLgtLasKirKkrLbhAjiA`jBbjBkiBchBnhAohBbmAfoAfoBcoBknBfnBcnBgmBbmBbmAfnAfnBom+[om,@kh+[kh,@jfGkf@op@npGkkNokNokNclNclNglNflNflNjlNilNilNhlNhlNolMolMnlMjlMilMilMilMhlMdlMglLglLclLclLokLokLkkLkkLgkLgkLckLckLojLljMljMijMijMijMjjMjjMkjMkjMhjNhjNijNijNnjNnjNnjNckNckNgkNgkNkkNkkNnpGlpHkpHipIgpIapJkoJdoKnnKgnKlmLemLnlLblLkkLbkLjjLmiLdiLohKfhK`hKkgJegJcgImfIkfHhfHjfGkkNikPbmJcmKnjJojK`lKalKccFobFdbGgbGmbHicHocGlcGgdFkdF`eGceGidHdbI`eI`eJjdJfdJlcJjcJnbJdbJdbIlcIlcJgcLecKodKodKaeLebLceNaeMmcMncNkcNobNfbNgbMmbMacM4`o+XcoYjp[fr[ctY`tXfrVjpV`oX3ni\liY4hqY3gm[4kn[&bq,Rbq/Kkr-McrMlqNoqNarOmrOgsNdsNksMosMdtNgtNmsOlqPdtPdtQnsQjsQdsQnrQbrQlqQlqPdsPdsQhsRlsRftRetSnsSjsS`rRlqRnqSgtUetTesTfsUorUcrUnqUoqTarTirT/bt,Obt/Kgv-JcvJiuKkuKavLmvLcwKawKgwJowJaxKcxKmwLhuM`xM`xNnwNfwN`wNnvNbvNhuNhuM`wM`wNkvPivOcxOcxOaxPiuPhuRfvQfwQ`xRaxRgwRgvRiuRhuR-bi,Obi/Kkj-JgjJmiKoiKejLakLgkKekKokJclJelKglKalLliMdlMdlNblNnkNdkNbkNfjNliNliMdkMdkNalOflOelPclPokPekPckPgjPmiPniOejOfkOekPclRflRglQblQfjQoiQniRgjRckRfkRgkQbkQ0bp,Obp-C3juCku4^)oa^ma:L0fr,OnqOhqPkqPlqQhrQcsP`sPfsOnsO`tPctPlsQkqQctQ`tSmsSesS`sSirSmqShqSkqQcsQ`sSjrUhrTnsTnsT`tUhqUesVmsVbtVatWosWgsWmqViqVkqW.bvObv/Kkw-JcwJmvKovKawLmwLcxKaxKkxJoxJeyKgyKmxLlvMdyMdyNnxNjxN`xNnwNbwNlvNlvM`xM`xNmxOfyOeyPoxPkxPaxPowPcwPmvPnvOawObxOaxPnxQgyQfyRoxRkxRbxRowRcwRnvRovQbwQnwQcxQjxQnxQcxQbxR2ik,Pjk/Kom-JkmJamKcmKimLanLknKinKonJgoJioKkoKeoL`mMhoMhoNfoNnnNhnNbnNjmN`mN`mMhnMhnNcnPanOkoOkoOioPamPkoRjoQjnQjnRcnRkmRbmRcmQjmQnmQ1jm,Ojm/Kjo-KfoKonKnnLdoM`pMfpLgpKnpKbqKkqKjqL`qMonMkqMkqNaqOmpOgpNapOeoOonNonMgpMgpNnoQloPfqPfqPhqQlnQnoSloRgqRgqRiqSmnS/jp/Kjp.R%noRno,Rcr-MoqMdqNgqNmqOirOorNlrNgsMksM`tNctNisOdqP`tP`tQjsQfsQlrQjrQnqQdqQdqPlrPlrQdsRhsRbtRatSjsSfsSlqRdqRfqSgrUerTlsUlsUbtUfqU(cdCadEleGhgGaiEciChgBleBcdC*a`,Vb`/Kgb-MoaMhaNkaNmaOibOccN`cNgcMkcM`dNcdNicOhaP`dP`dQjcQfcQ`cQjbQnaQhaQhaP`cP`cQdcRhcRbdRadSjcSfcSlaRhaRjaSmaTkaTjaUoaUkcUbdUcdTicTacTkbTjbUccU(if,Vjf/Koh-MkhM`hNchNihOeiOkiNhiNcjMgjMljNojNejO`hPljPljQfjQbjQhiQfiQjhQ`hQ`hPhiPhiQ`jRdjRnjRmjSfjSbjShhR`hRbhSejTojTnjUgjUcjUjiUgiUkhUbhUchTihTeiTkiTajTejTkiTjiU+aw,Vbw/Kdy-K`yKixKhxLbyLnyL`zLazKhzKlzKa{K`{LnzLixMa{Ma{NozNkzNazNoyNcyNixNixMazMazNmzOc{Ob{PozPkzPbzPoyPcyPjxPkxOayOczObzPhxRfyQjzQ`{Rb{RhzSdySjxRhxRec.EecEec/L1bk-FakHhlJdnJapHbpFdnEhlEbkF+n`.Dl`FgbGcdGleFneDcdBgbBn`D)fk/Kgk.I#khIkhI,ji:Fji5J3feJfe1P/baP`a.Z-`iZ1bf/K`f.N'opHnpJirLetLnuJouHetGirGopH(f{/Kg{.I)g|3Ld|2H'dsHgs.I%gxHfxJazLm{Lf}Jg}Hm{GazGgxH#`fIcfJmgLeiLckJ`kIeiGmgG`fI(oxHnxJezLa|Ln}Jo}Ha|GezGoxH0ox9W2osWls.N)cnQanSloUdqUasScsQdqPloPcnQ2eqMdqObsPjtPdvOevMjtKbsKeqM1icMhcOfePbgPhhOihMbgKfeKicM)jp/Kjp.R'nj/Kmj.W$mkW,ojQmjShlUdnUmoSooQdnPhlPojQ$fiVeiXckYolYenXfnVolTckTfiV-cn/AbnCioEeqEbsCcsAeq@io@cnA,jqKhq._-`i_+f|/Kf|.[#b}[-ifYhf[fh\bj\hk[ikYbjWfhWifY#jzZiz\d|^`~^i\jZ`~Yd|YjzZ-hf^kf_fh/AbjAkk._hk^bj\fh\hf^0jt/Kht._3`q_bq7E.flEdl6NjnWfnWomWnmXdnY`oYfoXgoWnoWbpWkpWjpX`pYomYkpYkpZap[mo[goZao[en[omZomYgoYgoZip]kp[go[do]ao]en]lm]mm\gn[kn[hp^jp_bp_lm^-kp3Lkp/B'fbCdbEcdFkeFdgEfgCkeAcdAfbC&hnCknDbpFnqFksDhsCnqAbpAhnC'ndKldD&`qD'mdD+agDbgK/ctE0obEob1J3oiJli5O1dsOfs:F,n~Fo~9T3kxTkx1M/cdMcd/E.cvEksDjsFauHmvHjxFkxDmvCauCksD/kqDjqFesHauHjvFkvDauCesCkqD.hsIksJbuLnvLkxJhxInvGbuGhsI'bzVn|V`zXl|XczXo|Xo|Ye|ZizZczYczX`|[d|[m|[l|\f|\b|\hz[`z[bz\(aeQmfQggQegRnfRbeRafQbfRa`QebQebRnaRjaReaRbaRf`Ra`Ra`QeaQeaRjaKjaPjfKjfPmhWnhP'j~Pi~W(nc^nc^bd^bd^fd^ed^id^hd^ld^od]od]nd]nd]md]ld]ld]kd\kd\fd\fd\bd\bd\nc\nc\jc\fc\fc\bc\bc\ob\ob\lb]hb]ib]jb]jb]kb]kb]lb^lb^mb^ac^bc^fc^fc^jc^nc^'i~Wh~Xn~XaYdZnZ(d`[n`[ga[`b\ib\ec\ad\md\de\cf[jf[dg[ngZ`hZehYjhXlhXmhWnc^lc0@ed/Zfd[ebZfb[kcZhc[bkVnjVgjVfjWljXdkXnkWokVblVjlVolVnlWhlXgjXolXolYilZalZokYekZmjZgjYgjXokXokYdj[ej\gj[ol[dl[dj]ej^gj]ol]dl]nl0@ll/_lk_lk0@fk@nj@dj@ej/_lj_`k_%j~Kj~G&bqG'ld4G&duGgu2@3cn@`n/GhaGiaL,jn4[in1ZiyZky/F-keFjeK.cgEagGhhIdjIalGclEdjDhhDcgE1niKliG0d}Gg}0T&cqT`q/]es0EmrEjrEirForFksFmsFnsEetEitEbuEauFktFjrGbuGbuHktHgtHnsHksHorHjrHjrGnsGnsHftIjtI`uJcuJhtKdtKnrIjrIhrKitM`uMauLktKorKirLhrMmrMisMlsMmsLksK2bi/F`iHojIglI`nHbnFglDojDbiFikGa~Gb~K%ewLfwG$jzGcxFbxHlyJd{Jb}Hc}Fd{ElyEcxF&knFjnH`pJlqJjsHksFlqE`pEknF(bvKbvGjfGcdFbdHleJhgJbiHciFhgEleEcdF&hmYhmZ`kY`kZbkYjmYckZkmZak\im\`k]hm]hm^fm^bm^hl^hl]kl]bk^ak_im_im0@fm@bm@il@fl@jk@ak@ak/_il_il0@io/QeqQoqQmqRfqRjoRipQjpRbqKbqPbvPnkPbqYbvPcq[cq[fq[jq[jq[mq[mq[mq[`r[crZcrZbrZbrZarZ`rZlqZoqYoqYjqYjqYfqYbqYbqYnpYjpYjpYfpYgpYcpY`pZ`pZmoZnoZnoZooZooZ`p[ap[ap[ep[fp[jp[jp[op[cq[cq[`q]lqUmqVhoUioVnpUlpVguXcuXhtYktYauZmuZcvY`vYkvXovXdwYgwYmvZht[dw[dw\nv\jv\`v\nu\bu\ht\ht[`v[`v\hv]lv]fw]ew^nv^jv^`u]ht]jt^ov0@fw@gw/_mv_au_kt_jt0@cu@ou@bv@cv/_mu_%dqParPjrPgsP`tQhtQeuQbvQjvQfwQbxQoxQfyQbzQnzQj{Qa|Ql|Qh}Qc~Pn~PiP&``P%j~Kj~PjsKjsParQetQetRbtRfrRarRarQa}Qm~QgQeRn~Rb}Ra~Qb~RewLewQavSluSnuR`vRhwRbxR`xSiwShyRh{Rh{Se{Sa{SlzSezSmyShyShyRlzRlzSmzLmzQ`m[ho[bm\jo\`m]ho]io^bo^nn^en^dn]gn]bm^om0@mm/_go_go_jo0@bm@&c`/U``P%gqUdqPgqUfqViqWkqWjqXmqYcrYbrZer[or[bs\ds]ns]at^kt^au_ku_mu0@kv@`wAjwA`xBmxB&c`/Ub`Va`W%oWnXiYkYfZa[o~[j~\`~]n}]e}^o|^i|_c|_i{0@c{@hzAnyAdyBmxBnxDnxDbyDayDeyDiyDhyDhyDoyCoyCnyCmyCmyClyClyCkyBkyBjyBfyBayBayBmxBmxBixBexBexBbxBbxBowBowBlwChwCiwCiwCjwCkwCowClwDlwDaxDaxDexDfxDjxDnxDnxDlxFiy/_jy0@ew/_fw0@kx/_ix0@&db/[la[ia[ha\na\jb\`c\ac[dc[lc[ad[`d\nc\ha]`d]ad^nc^fc^ac^jb^na^ia^ha]`c]ac^cd0@ad/_ac_bc0@kb@oa@ja@ka/_ma_eb_ha0BfbAfcA`dBbdBdcCdbCjaBhaB'jb/SibOadQmeQgfQefRneRbdRaeQbeRajQalQalRnkRjkRekRnjRfjRajRajQekQekRnjKnjPmlOjlOclOlkPekPnjPkjP`jQhiQaiQihQahQigQagQifQ`fQheQcePjdPedPlcPgcObcOibOndKndPnlSmlOjbShbTjbTobTmbUobUacVbcVdcWjcWocWmcXbdXddYidYbeYdeZieZneZgfZhf[ag[fg[og[nlSllTnlTolTmlUklUilVflVdlWblWokWikXfkX`kYmjYjjYdjZajZjiZgiZlh[ih[bh[og[lnUdqUnnVfqVmnWeqWeqXcqXkpXepXepWdpXonXjpYbqYgqYfqZ`q[hp[boYnnYln[og]mg_og]og]ch]gh]gh]jh]jh]jh]mh]lh]lh]oh\oh\nh\mh\mh\hh\hh\hh\gh[gh[ch[og[og[kg[kg[gg[gg[`g\`g\lf\mf\mf\nf\kf\kf\lf]lf]mf]nf]bg]bg]gg]gg]kg]kg]og]giXdiZcgX`gZehYghY&dU`Uj~Ui~VbVnV'a`Vb`Ud`Ul`UbaUaaVn`V&i~W'aaWaaXo`Xg`Xa`X&oXcXi~Xi~W'a`Wa`X`a[baYb`Yb`Z&l[`[j~Zk~YbYfY'l`]ca\`a\o`[&c[h~\k~\`]l]'c`\``\&o[-brVjtV`rXhtXcrXktXktYatZerZcrYcrXls[`t[it[ht\bt\ns\dr[`r[br\a}Qm~QcQaRn~Rb}Rm}Qn}RmwQazQazRnyRfyRayRnxRbxRmwRmwQayQayRfyKfyPj~Kj~P.i`Wj`P-fvPevWj{^j{^n{^n{^b|^b|^e|^e|^d|^h|^k|]k|]j|]j|]i|]i|]h|]h|]g|\g|\g|\b|\b|\n{\n{\j{\j{\f{\f{\b{\b{\nz\oz\kz\kz\hz]hz]ez]ez]fz]fz]gz]kz]hz^hz^iz^mz^nz^b{^b{^f{^f{^j{^evWgvWjvXlvYbwYewZkwZ`x[jx[cy[hy\ez\mz\j{\a|\m|\d}\o}[f~[l~[gZmZ.b`Yd`Yj`Xk`Wi`W-j{^h{0@e|/Zf|[azZbz[g{Zd{[.nbVjbVcbVbbWhbXdcXjcWkcVbdVfdVodVndWddXcbXodXodYedZadZkcYecZibZcbYcbXkcXkcYnd\ld[hc[hc\fc\jb\`b\ab[hb[lb[hb]bb]ab^jb^fd^md^nd]dd]hc]fc]ec^jc^*d}Ud}P+bgKbgP*jKjPj~Ra~Rc~Qi~Q+a`Qg`Qe`Rb`RieQegQkgQigRfgRjeRefQffRecLecQlaR`dR`dSmcSecS`cSmbSabSlaSlaR`cR`cS*d}Pl}Pe~Pn~PgPoP+d`Ql`QdaQmaQebQmbQecQmcQedQmdQdeQleQdfQofPggPngPehPlhP`iP*ayZi{Zcy[k{[by\j{\j{]g{]oz]jz]jz\hz]cy]f{^h{_k{_d{0@lz@kz/_`z0@dy@cy/_`y_fy^hz_kz_d}Uf}Uh}Vj}Vh}Wj}Wl}Xb~Xc~Xe~Yk~Ym~ZcZd[j[o[+a`\j`\l`]ea]ja]cb]db^mb^fc^`iU`iP`iUbiU`iVbiV`iWnhWlhXjhXkhXehYchYmgZkgZdg[bg[of[ef\bf\le]ee]be]kd]`d^mc^fc^gc0@gc@kc@oc@oc@bd@bd@ad@ed@dd@dd@gd/_gd_fd_fd_ed_ed_`d_`d_cd^oc^oc^jc^fc^fc^bc^bc^ob^ob^kb^hb_db_eb_eb_fb_fb_cb_gb_db0@db@eb@eb@jb@jb@ob@ob@cc@cc@gc@gc@ecBcd/[`d]oa[la]`c\bc\ekZakZjjZij[ck[ok[al[blZilZmlZfmZem[ol[jj\fm\fm]ol]kl]bl]ok]ck]jj]jj\bl\bl]dm0@fm/^bl^cl_lk0@`k@kj/_hj_bk^fk^kl0@ol@emAdmBmlBilBck@kj@ijB)bd/VjfV`dXhfXcdXkfXkfYefZedZcdYcdXle[df[if[hf\ff\ne\dd[`d[bd\aoQmpQgqQeqRnpRboRapQbpRajQalQalRnkRjkRekRnjRfjRajRajQekQekRfkKfkPjpKjpPmrWnrPjhPihWjm^nm^nm^bn^bn^en^en^in^hn^hn^kn]nn]nn]mn]in]hn]hn]kn\gn\fn\bn\bn\nm\nm\jm\jm\fm\fm\bm\bm\ol\ol\hl]hl]il]il]jl]jl]kl]hl^hl^ml^ml^am^bm^fm^fm^jm^jm^ihWhhXjhXmhYciYiiZcjZij[ck[hk\el\am\jm\en\ao\ho\gp[mp[gqZmqZcrYerYjrXlrXmrWjm^hm0@en/Zfn[alZbl[gmZdm[buVjtVgtVftWhtXduXnuWouVbvVjvVovVnvWhvXgtXovXovYivZavZouYeuZitZgtYgtXouXouYhv[mv[lv\jv\bv\lu\fu\jt\dt\et[ht[mu[lu\hv]nv]mv^jv^bv^mu^fu^jt^et^ft]ht]nu]mu^b`VjbV``XhbXc`XkbXkbYebZe`Zc`Yc`Xla[db[ib[hb\fb\na\d`[``[b`\(euQawQkwQiwRbwRfuRevQfvRizQm|Qm|Rf|Rb|Rm{Rj{RnzRizRizQm{Qm{Rf{Kf{PbvKbvPmsWnsPb~Pa~Wby^by^fy^jy^jy^my^my^my^`z^`z^cz]bz]bz]az]az]`z]`z]oy\oy\ny\jy\jy\fy\by\by\nx\nx\jx\jx\fx\gx\cx\`x]`x]ax]ax]nw]bx]cx]`x^`x^ax^ex^ex^jx^jx^nx^nx^by^a~W`~Xb~Xm}Yk}Ya}Zk|Za|[k{[`{\ez\my\by\ex\mw\`w\kv[mu[guZauZktYetYbtXlsXmsWby^`y0@iz/Zjz[exZfx[kyZhy[jpVfpVooVnoWdpX`qXfqWgqVjqVbrVgrVfrW`rXooXgrXgrYarZiqZgqYaqZepZooYooXgqXgqYlo[mo\oo[gr[lq[lo]mo^oo]gr]lq]np0@lp/_fr_fr_dr0@lo@*bh/SahOedQafQkfQifRbfRfdReeQfeR)i~Q*m`Qm`Rf`Rb`R)mRjRn~Ri~Ri~QmQmR*b`Kb`P)m}Ob~Ok~Ol~PePnP*c`Pk`P`aQhaQabQibQacQecQmcQddQldQgePoePbfPifP`gPggOngOahOneKneP)n}Sm}O*bhS`hTbhTchTmgUogUlgVjgVkgVegWbgWlfXmfXkfXdfYmeYkeYdeZaeZndZgdZ`d[ic[fc[cc[)n}Sl}Tn}To}Ta~Uc~U`~Vf~Vg~Vi~Wn~W`XeXgXhY*a`Yg`Yh`Zm`ZbaZkaZla[eb[jb[cc[)dyU`|UfyVb|VeyWa|Wa|Xk{Xg{XmzXmzWlzXgyXf{Yj{Yc|Yb|Zh{[d{[nyYfyYdy[*cc]ac_cc]cc]gc]gc]kc]jc]nc]nc]mc]ad]`d]`d]cd\bd\bd\ad\mc\lc\lc\kc[kc[gc[gc[cc[cc[ob[kb[kb[gb[gb[`b\`b\ab\ma\na\na\oa\la]la]ma]ab]bb]bb]fb]gb]kb]kb]ob]cc]kcXhcZkaXhaZmbYobYdjUliUjiUiiVniVjjVakVbkUdkUlkUblUalVnkViiWalWalXokXgkXakXkjXoiXiiXiiWakWakXnkYclYblZlk[dk[bkZhj[li[jiZkiYniYckYbkZgk[ok[`l\cl\lk]dk]oi[ki[hi],osXnsPbhPchXnmKnmPbiRmhRohQaiQijQckQakRjjRfjKfjPjqKjqPilQinQinRfnRbnRmmRfmRnlRilRilQmmQmmRapQmqQgrQerRnqRbpRaqQbqRchXbhYehZkhZnh[ai\ki\aj]oj]dk^al^nl^jm^fn^bo^mo^dp^cq]iq]gr\ir\bs[gsZisZnsYosXhc[df[jc\ff\hc]df]ef^ne^bd^ic^hc]me_gf_ff0@oe@ke@be@od@cd@jc@kc/_ad_ce_be0@om@mmBom@cn@gn@gn@kn@jn@jn@nn@mn@mn@`o@`o@co/_bo_bo_ao_mn_ln_ln_hn_kn^kn^gn^fn^bn^nm^nm^jm^km^gm^gm^`m_`m_`m_ml_ml_nl_nl_ol_ll0@ll@ml@am@bm@bm@fm@gm@km@km@om@om@kn/[hn]kl[hl]lm\nm\`v[hu[eu[du\ju\fv\lv\mv[`w[hw[mw[lw\jw\du]lw]mw^jw^bw^mv^fv^ju^eu^du]lv]mv^iw_ow_nw0@kw@cw@nv@gv@ku@fu@gu/_iu_ev_ov_aw_iw_ov_nv0@juAduBfuBhuChwCnwBlwBjwAnvAdvBfvBlvC+no/VfrVloXdrXooXgrXgrYarZapZooYooXhq[`r[er[dr\br\jq\`p[lo[no\mzQi|Qc}Qa}Rj|RnzRm{Qn{RiuQmwQmwRjwRfwRmvRjvRbvRiuRiuQmvQmvRbwKbwPf|Kf|Pi~Wj~PftPetWfy^jy^jy^ny^ny^az^az^ez^dz^dz^gz]gz]jz]jz]ez]ez]dz]dz]gz\cz\bz\ny\ny\jy\jy\fy\fy\by\nx\nx\nx\kx\kx\dx]dx]ex]ex]fx]fx]gx]gx]dx^dx^ix^ix^mx^nx^nx^by^fy^fy^etWgtWftXhtYotYauZkuZav[jv[`w\lw\ex\ay\iy\ez\lz\h{\b|[i|[c}Zi}Zo}Y`~Yf~Xk~Wi~Wfy^dy0@az/Zbz[mwZnw[cyZ`y[,n`Vf`Vc`Vb`Wd`X`aXfaWgaVnaVbbVkbVjbW`bXc`XkbXkbYabZmaZgaYaaZe`Zc`Yc`XgaXgaY`b[ib[hb\bb\na\da\ba\f`\``\a`[d`[ea[da\a`]b`^c`]kb]ab]-gkXfkP,jPkX-jeKjePj`Re`Rg`Qi`QabQkbQibRbbRnaKnaPbiKbiPadQafQafRneRjeReeRndRfdRadRadQeeQeeRigQeiQoiQmiRfiRjgRihQjhR,kXjYmZ-c`Zf`[m`\ca\ma]gb]`c^ic^fd^be^ne^jf^eg^`h^kh]ei]oi\ej\jj[ojZakZfkYgkX,`{[l}[b{\n}\`{]l}]m}^f}^j{^a{^`{]e}_o}_n}0@g}@c}@j|@g|@k{@b{@c{/_i{_k|_j|0@-ke@ieBke@ke@oe@oe@cf@bf@ff@ff@ef@if@hf@hf@kf/_jf_jf_if_if_df_df_df_cf^cf^oe^ne^je^je^fe^be^ce^od^od^ld_hd_hd_id_ed_fd_fd_gd_dd0@dd@id@id@jd@nd@nd@od@ce@ce@ge@ke@cf/[`f]cd[`d]de\fe\hm[`m[ml[ll\bm\nm\dn\en[hn[`o[eo[do\bo\ll]do]eo^bo^jn^en^nm^bm^ml^ll]dn]en^am_ol_nl0@cm@co@fo@go/_ao_en_om_nm0@gn@llBjmAjnAdoBfoBhnChmCnlBllB1ko/XjoPncPocXniKniPbeRidRkdQaeQifQofQmfRjfRbfKbfPjmKjmPehQijQijRfjRniRiiRfiRjhRehRehQiiQiiRalQmmQcnQanRnmRblRmlQnlRocXadY`dZgdZid[od[ae\ke\af]kf]dg^mg^jh^bi^ni^jj^bk^mk^dl^ol]im]cn\en\on[ao[goZhoZioYkoX0h[1`b[0j\1bb\0h]1`b]ab^na^0n^i^h]1ma_cb_bb0@oa@ga@ba@k`@0o@j@k/_m_1ca_ba0@oi@miBoi@oi@cj@cj@gj@fj@jj@jj@ij@mj@mj@lj@lj@oj/_oj_nj_nj_mj_mj_lj_hj_hj_kj^gj^gj^cj^bj^ni^ni^ji^ji^gi^gi^gi^ci^`i_lh_lh_mh_mh_nh_nh_kh_oh_lh0@lh@mh@mh@mh@bi@bi@fi@gi@gi@ki@ki@oi@kj/[hj]gh[dh]hi\ji\lq[hq[aq[`q\jq\fr\hr\ir[`s[ds[ms[ls\fs\`q]ls]ms^fs^bs^ir^fr^jq^aq^`q]hr]ir^bq_bq0@`q@ls@bs/_bq0AbqB`qBlsBbsAasCesCosCnsDgsDcsDiqCaqCcqD/gv/XfvPjjPkjXjpKjpPjkRekRgkQikQamQkmQimRbmRnlKnlPbtKbtPaoQaqQaqRnpRjpRepRnoRfoRaoRaoQepQepRirQetQotQmtRftRjrRisQjsRkjXjjYljZckZfk[hk\bl\hl]bm]lm^en^bo^no^jp^bq^nq^ir^`s^ns]dt]nt\du\ju[cvZ`vZfvYgvX`f[lh[bf\nh\`f]lh]mh^fh^jf^af^`f]eh_oh_nh0@gh@ch@jg@gg@kf@bf@cf/_if_kg_jg0@kp@ipBkp@kp@op@op@op@bq@bq@fq@eq@eq@hq@hq@hq@kq/_jq_jq_iq_iq_eq_dq_dq_cq^cq^op^op^np^jp^jp^fp^bp^cp^cp^oo^oo^ho_ho_io_eo_eo_fo_fo_go_do0@do@do@io@io@jo@no@no@cp@cp@cp@gp@kp@cq/[`q]co[`o]dp\fp\hx[`x[mw[lw\bx\nx\dy\ey[hy[`z[ez[dz\bz\lw]dz]ez^bz^jy^ey^nx^bx^mw^lw]dy]ey^ez_gz0@cz@mw/_dz0CfzAfyAfyBlxC`xCnwBlwBbxAjxA.hr/YhrZ`pY`pZbpYjrYcpZkrZap\ir\`p]hr]hr^fr^nq^hq^hq]kq]bp^ap_ir_ir0@fr@nq@iq@fq@jp@ap@ap/_iq_iq0@it/QevQovQmvRfvRjtRiuQjuRbvKbvPb{PnpPbvYb{Pcv[cv[fv[fv[jv[jv[mv[mv[mv[`w[`w[cwZcwZbwZbwZawZawZ`wZlvZovYovYkvYjvYfvYfvYbvYbvYnuYnuYjuYjuYguYguYcuY`uZ`uZauZmtZntZntZotZotZ`u[`u[au[au[eu[fu[ju[ju[nu[ou[cv[cv[`v]lvUmvVhtUitVnuUluVgzXczXhyYkyYazZmzZc{Y`{Yk{Xo{Xd|Yg|Ym{Zhy[d|[d|\n{\j{\`{\nz\bz\hy\hy[`{[`{\l{]f|]e|^n{^j{^a{^nz^bz^iy^jy]`z]b{]a{^e|_g|0@o{@iy/_0jvSivOasQmtQcuQauRntRbsRmsQnsRamQeoQeoRboRjnRenRbnRfmRamRamQenQenRjnKjnPelOjlOcmOdmPimPanPfnPonPcoPhoQloQepQmpQaqQiqQmqQerQmrQ`sQhsQosPgtPjtPauPeuPluPcvOfvOivOjtKjtPflSelOjvShvTivTkvThvUivUgvUdvVfvVcvV`vWnuWkuWhuXeuXcuXltYitYftYctYlsZisZfsZcsZlr[hr[ar[nq[kq[flSdlTelTklThlUilUklUllVnlVcmV`mWfmWgmWhmXmmXcnX`nYenYjnYonY`oZeoZnoZcpZdp[hp[mp[fq[kq[`hUhjUbhVjjVahWijWijXcjXoiXeiXeiWdiXchXniYbjYkjYjjZ`j[li[fhYbhY`h[kq]iq_kq]kq]oq]oq]cr]cr]fr]fr]fr]ir]ir]hr]hr]kr\kr\jr\jr\jr\ir\ir\dr\dr\dr\cr[cr[oq[oq[kq[kq[gq[gq[cq[cq[op[lp\lp\hp\ip\ip\jp\jp\fp\gp\gp\hp]hp]ip]ip]jp]np]np]op]cq]cq]gq]gq]kq]grXdrZcpX`pZeqYgqYlxUhxUbxUaxVjxVfyViyVjyU`zUdzUnzUmzVfzVaxWmzWmzXgzXczXiyXgyXkxXaxXaxWiyWiyXdz[nzZozYfzYjxYcxYbxZhx[dy[jyZkyYfyY`y]cy[iz\iz\oz\cx\3hgUhgP2b~Kb~P3feKfePndRidRkdQmdQifQofQmfRjfR2e}QaQkQiRbRf}Re~Qf~R3iaLiaQ`aR`cR`cSmbSibSdbSmaSeaS`aS`aRdbRdbShgPdgPmfPifPbfPnePgePcePhdQddQlcQicQacQmbQebQabQiaQeaQm`Qi`Qa`Q2mQdQ`Qh~Qg~Po}Pj}Pb}Pm|Pi|P`|Pl{P3eiZalZgi[cl[fi\bl\bl]kk]gk]nj]nj\lj]gi]jk^`l_cl_hk0@dk@oj/_hj0@li@gi/_di_ni^lj_oj_hgUjgUkgUigVfgVdgWegWggW`gXbgXofXlfYjfYgfYefZbfZoeZhe[fe[ce[`e\id\fd\cd\lc]ic]fc]cc]hb^eb^bb^ja^2l{Ul{Pl{Un{Uo{Um{Vn{V`|Wa|Wc|Wd|Xf|Xk|Xh|Yn|Yo|Ya}Zf}Zk}Zh}[n}[c~[d~\i~\n~\c\h]m]3b`]g`]h`^aa^fa^ja^ka0@oa@oa@cb@cb@gb@fb@fb@jb@ib@ib@ib@lb@lb@ob/_ob_ob_nb_nb_mb_ib_hb_hb_hb_gb^gb^gb^cb^cb^na^na^ja^ja^fa^ga^ga^ca^ca^ca^l`_l`_l`_i`_i`_j`_j`_k`_k`_k`_h`0@h`@i`@m`@m`@n`@ba@ba@ca@ga@ga@ga@ka@ka@ka@iaBcc/[`c]ca[`a]db\fb\2ixZaxZnwZmw[cx[ox[ey[fyZiyZazZfzZez[cz[nw\fz\fz]cz]ky]fy]ox]cx]nw]nw\fy\fy]`z0@gz/_dz_bz^bx^lw_ow_`x0@lx@gy/_dy_nx^cz0@ezAdzBazBiyBdyBmxBaxBlwBmwAcx@ox@eyAky@cz@eyAdyBdh/YdhZleYleZneYfhYoeZghZme\eh\le]dh]dh^ng^jg^dg^dg]gg]ne^me_eh_eh0@ng@jg@eg@nf@bf@me@me/_eg_eg0@aj/QmkQglQelRnkRbjRakQbkRjkKjkPnpPjfPjkYnpPkk[ok[nk[bl[bl[bl[fl[el[il[il[hl[hl[klZolZnlZnlZmlZilZilZhlZhlZklYglYglYblYblYblYnkYnkYjkYjkYfkYfkYbkYbkYojYojYojYljZhjZijZijZijZjjZjjZkjZkjZhj[hj[mj[mj[mj[nj[bk[bk[fk[fk[kk[kk[kk[hk]dlUelV`jUajVfkUdkVcpXkoXdoYgoYioZepZopYlpYcqXkqXlqYoqYiqZdo[lq[lq\jq\bq\lp\fp\jo\do\do[lp[lp\fp^dp]kq]kq]mq^eo^kq0@nq@oq/_iq_io_go_fo0@ko@gp@np@op/_ep_,nmKnmH*foHeo0JacJac/_le0@he@be@aeAjeAffAifAjf@`g@dg@ng@mgAfgAaeBmgBmgCggCcgCifCgfCkeCaeCaeBifBifCfgDogDngEdgF`gFjfEdfFheFbeEceDjeDkfDjfEcgFggFlgGogGegHagHkeFceFaeH-j~/Kh~J.`vJ'ee0WdeYbgZjhZdjYejWjhUbgUeeW)hm@km3Llo0YhoYboYaoZjoZfpZipZjpYlpYdqYjqYiqZfqZao[iq[iq\gq\op\ip\gp\ko\ao\ao[ip[ip\fq]kq]jq^dq_lp_jp^dp_ho_bo^co]jo]kp]jp^gq_hq1@kq@eqAmpAkp@epAioAco@`o@ko0_hp1@kp@'mg/_ng3Kei0EmhEjhEihFohFkiFajFbjEejEmjEbkEakFojFjhGbkGbkHojHgjHbjHkiHohHjhHjhGbjGbjH`kKbkIbjIcjJhiKlhKkhJhhJnhIfiImjM`kMakLojKohKihLhhMmhMiiM`jMajLkiKot/JmtLdvN`xNmyLoyJ`xIdvIotJe5FewFfw/K.`v]cv3LgoLhw0Y`wYnvYmvZbwZnwZaxZbxYhxYlxYfyYeyZnxZmv[ey[ey\ox\kx\ax\ow\cw\mv\mv[ax[ax\nx]gy]fy^lx_hx_bx^lw_`w_nv^ov]bw]cx]bx^gy_ey1AmxAov0_(oc3Llc0@leYheYbeYaeZjeZffZifZjfY`gYdgYngYmgZfgZae[mg[mg\gg\cg\if\gf\ke\ae\ae[if[if\ce]ce^ae^mg^gg]ce_ce1@ae@mg@gg0_lg1CngAjfAjfBdfCheCbeBceAjeAneA+nt:Fnt@2np@op1]0kq]iq/_`s0YhrYfrYerZjrZfsZmsZnsY`tYhtYntYmtZjtZer[mt[mt\kt\ct\ms\gs\kr\er\er[ms[ms\ht_nt^ot]jt]jr]gr]fr^hr_ds_ns^os]fs]as1Acs0_it1@it@ot@gr@(`y0@by1SfgSgg3Lhz0Y`zYnyYmyZbzZnzZe{Zf{Yh{Y`|Yf|Ye|Zb|Zmy[e|[e|\c|\k{\e{\oz\cz\my\my[e{[e{\oy]oy^my^e|^o{]oy_oy1@my@e|@o{0_hz1CjzA`|B`|Bf|BnyB*ov3Lnv1P-jePie0BhgYdgYnfYmfZfgZbhZehZfhYlhY`iYjiYiiZbiZmf[ii[ii\ci\oh\eh\ch\gg\mf\mf[eh[eh\fg]of]nf^dg_`i_ji^ki]bi]fh]ch]bh^dh_mf1@kg0_oh_ii1@ji@mhAigAnf@mf@h{0@k{3Ll}0Yd}Yb}Ya}Zf}Zb~Zi~Zj~Yl~Y`YjYiZbZa}[i[i\c\o~\i~\c~\g}\a}\a}[i~[i~\h_j]j~]j~^`~_d}_b}^c}]f}]n}]g}_`}1@c}@e}AaAk@h@c0_k~_`~1@c~@i~A+dy0@dy3J*dbJgbL+h{0Y`{YnzYmzZb{Zn{Ze|Zf|Yh|Y`}Yf}Ye}Zb}Zmz[e}[e}\c}\k|\e|\o{\c{\mz\mz[e|[e|\b}]g}]f}^`}_h|_f|^l{_`{_nz^oz]b{]g|]f|^oz_lz1Anz@f}@o|0_*cs3Lcs1M,omMmm0BdoY`oYjnYinZboZnoZapZbpYhpYlpYfqYeqZnpZin[eq[eq\op\kp\ap\oo\co\in\in[ap[ap\np]gq]fq^lp_hp_bp^lo_`o_jn^kn]bo]no]cp]jp]np]cp]bp^co_hn1@kn@aoAmpAgq@dq@op0_cp_lo1@oo@apA1ko3Lko1GoiGmi0B`lYhkYfkYekZjkZflZmlZnlY`mYhmYnmYmmZjmZek[mm[mm\km\cm\ml\gl\kk\ek\ek[ml[ml\gk]gk^ek^mm^gm]gk_gk1@ek@mm@gm0_bm1AjmAomAnmBhmC`mCjkAfkAdkC/az5\`zRhpRip0BlqYhqYbqYaqZjqZfrZirZjrY`sYdsYnsYmsZfsZaq[ms[ms\gs\cs\ir\gr\kq\aq\aq[ir[ir\ns]ls_ds_bq]ms1Aos0_kr_kr1@erAiqAcq@`q@kq0_oq_%lxFnx3Egz0HoyHiyIhyJmyJizJlzJmzIg{Hk{Ha|I`|Ji{JhyK`|Ka|Lj{Lf{LmzLjzLnyLiyLhyKlzKmzLc|Na|MmzMnzNkzNoyNjyNkyMmyMezMhyPfzOf{O`|Pb|Pd{QdzQjyPhyP0k`3Lh`2H`t1]ct^mu2@iw@cy1^`y]iw[mu[`t]3oc6Vlc7A2hyAjy1V(bkVck3L3ge6VceVhdWkdWaeXmeXcfW`fWgfVofV`gWcgWmfXhdY`gY`gZnfZffZ`fZneZbeZhdZhdY`fY`fZid[jd\kd[cg[if[id]jd^hd^`g^if]mf_bg_ag7@of@gf@af@oe@ce@id@jd6_ae_bf_af7@1cl3Lbl1S*jzSkz3L0kvLkv1],h~2@j~A-e`CmaCjcAhc@ma1^e`^,h~2@-ca3Lca2@ca@)d|H-lwHnw3M4mt2GltIjvJbxJlyImyGbxEjvEmtG)myGlyIj{Jb}Jl~Im~Gb}Ej{EmyG3ai5\ciZ4gwZdw2H/a~G`~InJ0jaJ`cIacGjaE/nEa~G,bvL2nsL,cv3Lbv2L)ngLog3L,ks2KisM`uOlvOixMkxKlvJ`uJksK2gqKeqM`sOhtOevMgvKhtJ`sJgqK,bl4Zal\lm^ho^aq\bqZhoYlmYblZ+n}3Vm}Q,ggLdgRc`L``R+l~Tk~Sh~So~R,g`Rh`Sk`Sd`ToeRkgRahSbhShgTleTofRlfTjcMkcRbbSfdSfdTcdTocTfcTccTkbTbbTbbSfcSfcT+m}Qb~Qk~QcQdRlR,e`Ri`RbaRjaRnaRfbRobRgcRkcRcdRkdRbeRfeRneRffRifRagRhgRlgRghQohQbiQiiQ+fy[n{[dy]l{]gy]o{]o{^i{_a{_oz^oz]nz^ey_h{4@m{@l{Aj{Ab{AlzAjzAnyAdyAey@ly@mz@lzAn}3Vo}Vm}Wo}Wl}Xb~X`~Ya~Yg~Ye~Zj~Zl~[m~[c[d\j\o\,``]f`]k`]l`^ea^ja^oa^db_ib_nb_gc_hc4@ji3ViiQjiVkiViiWkiWdiXfiXdiYaiYciYmhZnhZhh[eh[ch[lg\ng\kg\dg]nf]kf]df^af^ne^ge^`e_md_fd_cd_hc4@icBmcBmcB`dB`dBddBddBgdAkdAkdAjdAjdAmdAmdAldAldAod@kd@jd@jd@jd@ed@ed@ed@`d@`d@lc@lc@hc@hc@dc@dc@`c@ac@ac@mb@nb@nb@jb@kb@kb@hbAhbAibAibAjbAjbAobAobAobA`cB`cB`cBdcBecBicBicBicBkcCdd3]ed^`b]ab^fc]dc^nk[fk[`k\ck\dk]`l]kl\hl\nl[fm[hm\km\dm]ck]km]km^em_ml_kl^al_ek_ck^ck]kl]kl^`k4@hm@bkAjmAimBkmCgmCakB`kEnkDnlDhmEimEolEokEakE`kE+jm3Mhm2]lm],by6Zby7E+j{Ej{4WbaWba2X*jzX,ez6[az[ny[my\bz\nz\a{\b{[i{[m{[f|[e|\n{\my]e|]f|^o{^k{^b{^oz^cz^ny^my]a{]b{^oy_oy7@my@e|@o{6_oy7AoyBmyBe|Bo{Af|Cd|El{EnyC+oi3Lni2Th}Pk}QbS,n`SkbQhbPn`N+bNh}P2cb3L`b2Q1hPkQ2faSnbSkdQhdPnbNfaN1hP*go3Leo2X&exXex<Z(mvZmvIbyNjxNdxOfxOhxPdyPnyOlyObzNjzNlzOnzOhzPgxPozPozQizRazRoyQeyRixRgxQgxPoyPoyQdxSexTgxSozSdzSfyVdyUjzUjzUlzVdxVexWfxXdxXlzXezW+gg2SfgU`iWljWflUglSljR`iRggS/c}3La}2X-`yXbyYiz[e|[b~Y`~Xe|VizV`yX*cxWaxYhy[d{[a}Yc}Wd{VhyVcxW/fzWdzYc|Zo}ZhYjWo}Uc|UfzW-k{X,ggXgg3Lmd2XodYjf[bh[oiYmiXbhVjfVmdXdgY+dqYgq3L,jcMhc2]$lk]%gv3DevFlwHhyHe{Fg{DhyClwCgvD#jz@hzBg|Cc~ChBj@c~2^g|^jz3@+dk2\gk]nl_jn_gp]dp\jnZnlZdk\$di\gi]bk_nl_gn]dn\nlZbkZdi\-bt3MatA#a}A4`cAbcBmdDifDbhB`hAif2_md_`c3AkeA/geAgeLciLbiE(muZnu[asZbs[csZouZ`s\lu\bs]nu]as^mu^nu_gu_cu_jt_it^ht_cs_bs4@nu@ouAduB`uBktAdtBhsBcsAbs@jt@ktAkw3RgyRmySnySdyThwTkxRhxTcyL`yR`~RlsRcyZ`~R`y]`y]dy]dy]hy]ky\oy\oy\ny\bz\az\az\`z\`z\cz[cz[bz[bz[bz[my[my[ly[hy[hy[dy[gyZcyZcyZoxZoxZhx[hx[dx[dx[ex[ax[bx[bx[bx[cx[ow[lw\`x\ax\ax\bx\bx\gx\gx\gx\hx]hx]lx]lx]`y]`y]by^nyVoyWjwVkwWlxWmxWi}Wa}Wn|Wm|Xb}Xn}Xa~Xb~Wi~Wm~WfWeXn~Xm|YeYfZo~Zk~Zb~Zo}Zc}Zn|Zm|Ya~Yb~Zn~[d\g\l~]h~]c~\l}]`}]o|\l|\b}[`~\c~\i}_k}]a^a^g^o|^&f{Vn}Vd{Xl}Xf{Xn}Xo}Yh}Zh{Zg{Yf{Xc}Zk}Zm}[l}\i}\a}\k{Zg{Ze{\'efQahQkhQhhRbhRffRegQfgRaaQecQecRbcRnbRebRbbRjaRaaRaaQebQebRjbKjbPngKngPajWbjP&nPmW'nd^be^be^fe^fe^ie^ie^ie^le^le^oe]oe]ne]ne]me]me]le]le]oe\oe\ke\je\je\fe\ee\ae\ae\md\md\id\id\fd\fd\bd\cd\cd\oc\lc]lc]mc]mc]nc]nc]oc]oc]lc^`d^ad^ad^ed^fd^jd^jd^nd^nd^&mWoWmX'``Yf`Yh`Zn`Zda[ma[fb[lb\dc\ad\id\ae\me\df\lf\fg[mg[dh[nhZ`iZfiYhiYmiXcjWajWnd^ld4@he3Zie[dcZec[jdZhd[blVnkVkkVjkWlkXhlXnlWolVfmVjmVcnVbnWhmXjkXbnXcnYhmZdmZolYhlZlkZkkYjkXnlXolYim\`n\an[kmZokZik[hk\mk\il\ll\ml[klZik]ik^kk]cn]im]/kfDifFdhHliHikFkkDliCdhCkfD(haZhaRdmRdmZggLdgRhjTgjSdjSkjRglRhlSklSdlTckL`kRocLlcRkfRohRohShhTdhTogShgT`gTkfSkfRogRogSccRodRaeSbeSldT`cTocRlcTdmZgmZbm[`m\ol\el]cl]ik^ck^hj_bj_gi_oh_`h4@dg@lf@cf3_ke_nd_dd_oc^ec^ob]eb]cb\la\ja[kaZhaZao\iq\co]kq]bo^jq^jq_dq4@ho@bo3_bo^gq4@hqAkqAeqBaqBkpAepBioBcoA`oAko@hpAkpAegBggCegBigBigBlgBlgB`hB`hBchAghAghAfhAfhAihAihAhhAhhAkh@gh@fh@fh@fh@ah@ah@ah@lg@lg@hg@hg@dg@dg@`g@`g@lf@mf@mf@if@jf@jf@ff@gf@gf@dfAdfAefAefAffAffAkfAkfAkfAlfBlfBlfB`gBagBegBegBlh3]mh^hf]if^ng]lg^'e~\m}\k}\j}]o}]k~]n~]o~\e\i\(c`\b`]'k](c`^c`_'k}^k}_i}_(a`_'j}4@(b`@c`A'hBl}Bk}Aj}@e~Dg~BmCmC(c`C'k}C*dd3UfdPo`RkbRmbSnbShbTl`TkaRhaT)ozRc}Rc}Sl|Td|Tc|Sl{T`{TozSozRc|Rc|Sg|Ld|RbzPgzPlzQa{Qf{Qo{Q`|Rh|Rm|Re}Rj}Rb~Rj~Rn~RgRjR*b`Rj`Rn`ReaRiaR`bRdbRobQbcQicQlcQcdPfdPgbLdbR)`zUbzP*ddUedUgdUddVfdVgdV`dWbdWcdWmcXjcXkcXdcYfcYccYlbZibZfbZ`b[ma[ja[ga[`a\l`\i`\f`\)o\k\d]`zUazUczU`zVfzVgzVdzWjzWkzWmzXnzXc{X`{Yf{Yk{Yl{Zm{Zb|Zd|[i|[n|[c}[d}\l}\a~\f~\k~\c\d]nuVfxVluXdxXnuXfxXgxYlwZhwZcwYbwXawYluZkwZowZex[dx\mw\iw\cvZouZmu\e_g4@e3_e_i_i_m_l_*``_``_c`^g`^f`^f`^f`^e`^e`^d`^d`^g`]g`]f`]b`]a`]a`])m]m]h]h]d]d]`]`]l~]m~]i~]i~]i~]f~]f~]g~]g~]`~^`~^a~^a~^b~^f~^f~^g~^g~^h~_h~_h~_m~_m~_a_a_e_*``Za`[)l}Zm}[bZ`[*jfVffVoeVneWdfX`gXfgWggVngVbhVkhVjhW`hXneXjhXkhY`hZlgZggY`gZdfZoeYneXfgXggYmf\ofZfh[fh[hh\le\`h]jh]ih^bh^ng^eg^bg^ff^me^ne]df]`g]fg]lg]`h]fg]eg^)loUnoPclRomRenSfnSlmT`lTcmR`mTgfRkhRkhS`hTlgTkgSdgThfTgfSgfRkgRkgSogLlgRjePoeP`fQifQnfQcgQhgRlgRehRihRbiRjiRniRfjRkjRbkRjkRnkRflRilRamRhmRlmRgnQjnQmnQdoQkoPnoPkmLhmRheUjePloUmoUooUloVnoVkoVioWjoWdoXeoXboXlnYmnYjnYdnZanZnmZkmZdm[am[nl[kl[dl\al\jk\gk\ck\hj]heUieUkeUheVjeVoeVmeWneW`fXafXffXhfYifYnfY`gZegZjgZogZ`h[eh[jh[oh[`i\ei\ni\cj\gj\hj]baVncV`aXlcXbaXncXocYdcZ`cZkbYjbXibY`aZccZgcZmc[lc\ec\ac\kaZcaZaa\ij_kj4@ij3_mj_mj_ak_ak_dk_dk_hk_kk^kk^jk^nk^nk^mk^mk^lk^lk^ok]kk]jk]jk]ik]ek]ek]ak]`k]lj]lj]hj]hj]dj]dj]ej]aj]aj]mi]ni]ni]ki]ki]hi^hi^ii^ii^ji^ji^ji^oi^oi^li_`j_`j_ej_ej_ej_ij_ij_dkZek[diZei[jjZhj[brVjqVgqVfqWhqXdrXnrWorVbsVjsVosVnsWhsXfqXnsXosYhsZ`sZorYdrZhqZgqYfqXnrXorYms\osZorZlr\er\iq\dq\eq[kqZcrZfr^dr]js]js]ms^eq^*cyRozRa{Sb{SlzT`yToyRlyT`rTkqShqScrRksRlsSosShsTcnRcpRcpSloTdnTcnScnRgoLdoRcsL`sRguRkwRkwSdwTlvTkvSdvThuTguSguRkvRkvSovLlvRkzLhzRem\dm]dm^km^bn_en4@lnAfoA`pBjpBdqCarCbsCnsCktCfuCfvCawClwCjxB`yBnyAdzAmz@f{3_k{^l{^l{]m{\m{\l{RdmRem\lh]dk]nh^fk^mh_ek_ek4@ck@ci@mh@mh3_li4CniAdkBdkBfkBnhBktEitGktEotEotEcuEcuEcuEfuEfuEjuEiuEiuEhuEhuEkuDkuDkuDjuDjuDiuDiuDhuDduDduDcuCcuCcuCotCotCktCktCgtCgtCctCctClsDlsDlsDisDisDjsDjsDksDksDksDhsEhsEisEisEnsEnsEnsEctEctEgtEgtEktEktEgu@duBcs@`sBetAgtA`~3]l}]f}]e}^n}^j~^m~^n~]d]h]+b`]a`^*j^+b`_b`4@*f}3_f}4@d}@+``@*e}A+a`Aa`B*kBo}Be}Be}AfCjC+c`Cb`D*hEdEn}Cf}Cd}E+ng3VmgQgqLdqRoiLliRlhTghSdhSohRgjRhjSkjSdjTooRkqRarSbrShqTloTopRlpTjmMkmRblSfnSfnTcnTkmTfmTcmTglTblTblSfmSfmTmgQbhQkhQohQdiRliRajRijRbkRfkRnkRflRolRcmRkmRcnRknRnnRfoRnoRbpRipRaqRhqRlqRgrQkrQbsQisQfc[ne[dc]le]gc]oe]oe^ie_ae_od^od]nd^ec_he4@me@leAjeAbeAldAfdAjcAdcAec@hc@md@ldAng3VogVmgWogWlgXngX`hYahYghYehZjhZhh[mh[ci[di\ji\oi\`j]fj]kj]lj^ak^jk^ok^`l_il_nl_gm_hm4@js3VisQjsVksVesWgsWdsXfsX`sYasYorYmrZjrZhr[er[cr[lq\jq\gq\`q]np]kp]dp^ap^jo^go^`o_in_fn_cn_hm4@imBmmBmmB`nB`nB`nBdnBgnAknAknAjnAjnAinAinAhnAhnAkn@kn@jn@jn@jn@en@en@an@`n@`n@lm@lm@hm@hm@dm@dm@`m@am@ml@ml@nl@jl@jl@kl@kl@hlAhlAilAilAjlAjlAklAolAolAllB`mB`mBdmBemBimBimBimBkmCdn3]en^`l]al^fm]dm^ju[fu[lt\ot\du]`v]gv\dv\nv[bw[hw\kw\`w]ot]kw]kw^aw_mv_gv^av_eu_ot^ot]gv]gv^lt4@hw@ntAjwAcwCiwCjwBawBeuBntBmtCguCcvCevCfvBavBfuDotDntEguEcwEjwEkwDbwDfvDcvDbvEgvE)g@d5X+dqXgq6@*ka4KcaKl`Lo`LaaMmaMgbLdbLkbKccKdcLgcLacMl`NdcNdcObcOjbOdbOnaObaOl`Ol`NdbNdbOjaQiaPccPccPecQm`QacRgcRfcSccSkbSfbSoaScaSn`So`RaaRmaRgbRibRacRgbRfbS2`j3UbjPkfRchRihSjhS`hThfTggRdgTk`RobRobShbT`bToaShaTl`Tk`Sk`RoaRoaScbL`bR1nP2c`Pd`Qi`QbaQfaQkaQlaRdbRibRmbRfcRjcRncRfdRkdRceRgeRneRbfRffRnfRagRegRlgR`hRghQnhQbiQeiQhiQoiPbjPogLlgR1lUnP2`jUajUbjU`jVajVbjVoiVmiWniWkiWhiXiiXgiXdiYaiYnhYohYhhZehZbhZchZlg[ig[fg[cg[of[hf\ef\bf\ne\ke\de]`e]1lUmUnUlVmV2b`Vc`Va`Wf`Wg`Wd`Xi`Xk`Xl`Ym`YbaYgaYdaZiaZnaZcbZdb[eb[jb[ob[cc[dc\ic\nc\bd\gd\ld]`e]1f{Vb~Vd{X`~Xf{Xb~Xc~Yh}Zd}Zo|Yn|Xm|Yd{Zg}Zk}Za~[`~\i}\e}\o{Zg{Ze{\2ae_ce4@ae3_ae_ee_ee_ee_he_he_he_le_oe^oe^cf^bf^bf^af^af^af^`f^`f^cf]cf]bf]ne]ne]me]ie]ie]ie]de]de]de]`e]`e]ld]ld]hd]hd]id]ed]ed]ed]bd]bd]bd]cd]oc]lc^lc^mc^mc^mc^nc^bd^cd^cd^cd^dd_dd_dd_hd_id_id_md_md_ae_leZme[hcZic[ndZld[flVblVkkVjkW`lXllXbmWcmVjmVnmVcnVbnWlmXjkXbnXcnYlmZhmZcmYllZ`lZkkYjkXbmXcmYmm\`n\an[omZclZik[hk\al\ml\`m\am[olZnm^an^bn]lm]`l]jk]ik^bl^nl^am^bm]ll]/kgRgiRmiSniSdiThgTkhRhhTh`Tg`Sd`Sk`RcbRhbSkbS`bT.k|Ro~Ro~Sh~Tl|Tk|Sk|Rc~L`~R/oaLlaRcdRcfRcfSleTheTgeSldTddTcdScdRgeRgeSgeLdeRciL`iR.m{\l{]c|]f|^i|_l|4@f}@m}Ag~Am~BkB/d`Cm`CjaCjbCgcCbdCndCieCdfCofBigBchAihAbi@hi@mi3_fj^gj]hj]ij\ij\hjR.l{Rm{\hw]`z]jw^bz^iw_az_az4@ky@ow@iw@iw3_dx4CfxAlyBlyBbzBjwB/gcEecGgcEgcEgcEkcEkcEocEocEbdEbdEbdEadEedEddEddEgdDgdDgdDfdDfdDedDadD`dD`dD`dDocCocCkcCkcCgcCgcCgcCccCccCobCobCkbCkbChbDdbDdbDebDebDbbDbbDcbDcbDcbD`bE`bEebEebEfbEfbEjbEkbEkbEobEobEccEccEgcEoc@lcBoa@laBacAccAll3]dl]bl]al^fl^bm^im^jm]lm]dn]jn]in^fn^al_in_in4@gn@om@im@cm@gl@al@al3_im_im4@jnAhnCdnCblAgnChnDknDdnElmEkmD`mEdlEclD`lDglChmDkmD-en3QnnQgoQloRdpRmpRfqRnqRgrRorRgsRlsSdtSltSduSluSdvS`wShwScxRkxRcyRjyRbzRizR`{Rh{Rc|Qj|Qa}Qk{Lh{RkpLhpRcoRgqRgqSlpTdoTcoScoRczRo{Re|Sf|Sl{T`zTc{R`{TbtMctRcsTjrTkrSbsSjtSotSntTktTfvSjxSjxTgxTowTjwTgwTkvTfvTfvSjwSjwTnwMowRmi\el\oi]gl]ni^fl^fl_`l4@lk@fk3_fk^ek_li4@mjBoj@elAelAglAoiAa}3Wa}QenWenQenWgnWenXgnXenYknYinZonZmn[co[eo\go\io]oo]ap^fp^hp_bq_dq4@iq@cr@drAjrAcsAisBnsBgtBltCbuCkuCa}3Wc}Wa}Xo|Xm|Yo|Yi|Zk|Ze|[g|[a|\o{\i{]g{]a{^nz^hz_fz_`z4@iy@gy@`yAjxAcxAmwBfwBcwBhvCbvCkuCkuEouEouEcvEcvEgvEgvEfvEjvEivEivEivElvElvEovDovDnvDnvDivDivDivDhvDdvDgvCgvCcvCcvCouCouCkuCkuCguCguCcuCcuCcuCltDltDmtDitDitDjtDjtDktDktDhtEhtEitEitEmtEntEntEcuEcuEcuEguEguEkuEkuEkuEiuGgv@dvBct@`tBeuAguAa3\m~\k~\j~]o~]k]n]o\.e`\i`\ca\ba]k`]-j~^.ba^ba_h`4@d`@-n3_h4@l~@j~3_j~^n^n_[email protected]@-i~B.aaB`aCbaDj`D-h~C.d`Eh`EbaEaaFj`Ff`F-l~Eh~Ej~F,ms3QftQotQduRluRevRnvRfwRowRkxRcyRhyS`zShzS`{Sl{Sd|Sl|Sg}Ro}Rg~RbRjR-a`Rh`R`aRkaQbbQibQcaL`aR,cvL`vRktRovRovSdvTltTktSktRkR-gaRmaSnaSdaT,hT-k`Rh`T,nyMoyRkxTfxTgxSjxSbzSgzSfzTczTn{Sb~Sb~To}Tk}Tb}To|Tg|Tn{Tn{Sb}Sb}Tf}Mg}Reo\ar\go]cr]fo^br^br_hq4@dq@np3_np^mp_do4@epBgp@mqAmqAcrAgoA-ib3WibQ,msWmsQmsWosWmsXosXatYctYbtZdt[jt[ht\nt\`u]fu]hu^nu^cv^ev_kv_aw4@fw@lwAbxAkxAlxBfyBoyBdzCnzCc{C-ib3WkbWibXgbXebYgbYbbZ`b[na[ha\ja\da]ba]l`^j`^g`^a`_,k_e4@b@h~Af~Ao}Ad}Bb}Bk|B`|Cj{Cc{Cc{Eg{Eg{Ek{Ek{Eo{Eo{En{Eb|Ea|Ea|Ea|Ed|Ed|Eg|Dg|Df|Df|Da|Da|Da|D`|Dl{Do{Co{Ck{Ck{Cg{Cg{Cc{Cc{CozCozCozCkzCkzCdzDdzDezDazDazDbzDbzDczDczD`zE`zEazEazEezEfzEfzEkzEkzEozEozEozEc{Ec{Ec{Ea{Go{@l{Boy@lyBa{Ac{A-md3\ed\cd\bd]gd]ce]je]ke\me\af\kf\jf]cf]bd^jf^jf_`f4@le@je3_`e4@dd@bd3_bd^je^je_cd4@kf@adBifBhfCjfDbfD`dCadEbdFcdEkfEafE.hq3UjqPomRkoRapSbpShoTlmTonRlnTchRgjRgjSliThiTgiS`iTdhTchSchRgiRgiSkiLhiRfgPkgPlgQahQjhQohQciQhiRmiRajRjjRnjRfkRjkRclRglRolRbmRjmRnmRfnRinRaoRdoRooQcpQfpQmpQ`qQgqPjqPgoLdoRdgUfgPhqUiqUjqUhqViqVfqVdqWeqWbqW`qXmpXnpXkpXipYfpYcpY`pZmoZjoZgoZ`o[mn[jn[gn[`n\mm\im\fm\cm\ll]dl]dgUegUfgUdgVegVfgVhgWigWjgWlgXmgXbhXchXehYjhYkhYlhZaiZfiZkiZli[mi[bj[gj[lj\ak\ek\jk\ok\`l]dl]nbVfeVlbXdeXnbXfeXgeY`eZldZgdYfdXedYlbZodZceZee[de\ae\md\gcZobZmb\el_gl4@el3_il_il_ml_ml_`m_`m_`m_gm^gm^gm^fm^jm^im^im^im^hm^hm^km]gm]fm]fm]fm]am]am]am]ml]ll]hl]hl]dl]dl]`l]`l]al]mk]mk]ik]jk]jk]jk]gk]gk]dk^dk^ek^ek^ek^fk^fk^kk^kk^kk^hk_lk_lk_al_al_al_el_el_`mZam[`kZak[flZdl[nsVfsVcsVbsWdsX`tXjtWktVntVfuVkuVjuWduXbsXjuXkuYduZltZktY`tZdsZcsYbsXjtXktYiu\kuZktZht\at\es\`s\as[gsZosZdu]ju]iu^fu^nt^it^bt^fs^as^bs]ds]`t]jt]lt]du]jt]it^1h`X`cXi`YacYh`Z`cZac[nb[ba[i`[h`Zeb\mb\cc\bc]ob]gb]aa\i`\k`]0cvRkwRaxSbxShwT`vTovRlvTc{Rg}Rg}S`}Th|Tg|S`|Td{Tc{Sc{Rg|Rg|So{Ll{RkvLhvRjtXhtRl~Rn~Xhy4@ly@ly@ly@`z@cz3_gz_gz_gz_jz_jz_jz_iz_iz_lz_lz_oz^oz^oz^jz^jz^iz^iz^iz^dz^dz^dz^`z^cz]oy]oy]oy]ky]ky]gy]gy]gy]`y^`y^lx^lx^mx^mx^ix^jx^jx^kx^kx^kx^hx_hx_ix_ix_jx_nx_nx_ox_ox_cy_cy_dy4@dy@dy@hy@hy@n~3Xl~Yj~Yh~Zf~Z`~[n}[h}\e}\n|\h|]a|]j{]b{]kz]cz]ky]cy]kx]bx]jw]aw]lv]fv\av\hu\fu[`u[ntZhtZjtYhtYjtXhy4@jyAb{3[c{\nx[ox\`z\bz\`qXlpXepXdpYmpYiqYlqYmqXdrXhrXasX`sYirYdpZ`sZas[jr[fr[mq[jq[np[ep[dpZlqZmq[as\cs]kr]ep\hr4@bs3_cs^jr^np^gp^fp_lp4@hq@nq3_oq^jq^kfRghRihSjhSdhThfTggRdgT/hTcS`SkR0caRdaSgaS`aT/k{Rk}Rk}Sd}Tl{Tk{Sk{Rc}L`}R0k`Lh`RobRceRceSldTddTcdSlcT`cTobSobRcdRcdSgdLddRchL`hR/mz\lz]oz]b{^e{_l{4@b|@i|Ac}Am}Bg~B`CmC0j`CfaCcbCnbCjcCedC`eCoeBefBcgAigAbh@hh@mh3_bi^gi]di]ei\ei\diR/lzRmz\dv]lx]fv^nx^ev_mx_mx4@kx@ov@ev@ev3_dw4CfwAlxBlxBnxBfvB0cbEabGcbEgbEgbEgbEkbEkbEobEnbEnbEbcEacEacE`cE`cEccDccDccDbcDbcDacDacD`cDlbDlbDobCkbCkbCgbCgbCgbCcbCcbCoaCoaCkaCkaCgaCdaDdaDdaDaaDaaDbaDbaDcaDcaDcaD`aE`aEaaEaaEfaEfaEfaEgaEkaEkaEoaEoaEcbEcbEob@lbBk`@h`BmaAoaAhk3]dk]nj]mj^fk^bl^el^fl]ll]`m]jm]im^bm^mj_im_im4@cm@ol@el@cl@gk@mj@mj3_el_el4@jmAhmC`mCnjAlkEokCemDemDkmDojD1li3ZliRhuRhuZkoLhoRlrTkrShrSorRktRltSotShtTgsLdsRclL`lRcoRcqRcqSlpThpTgpSloTdoTcoScoRgpRgpSgkRcmRimSjmS`mTdkTglRdlThuZkuZiu[gu[au\ot\it]gt]ms^js^`s_ir_br_kq_cq_hp4@`p@do@ln@gn3_om_fm_ml_dl_nk^ek^ck]mj]kj\ej\cj[mi[oiZliZew\az\gw]cz]fw^bz^bz_hy4@lw@fw3_fw^ky4@`zAczAiyBeyBoxAixBmwBgwAdwAow@lxAoxAioBkoCioBmoBmoBapB`pB`pBdpBdpBgpAkpAkpAkpAjpAnpAmpAmpAmpAlpAlpAop@op@jp@jp@jp@ip@ep@ep@ep@`p@`p@`p@lo@lo@ho@ho@ho@do@do@`o@ao@ao@mn@mn@nn@nn@jn@kn@kn@hnAhnAinAinAinAjnAjnAonAonAonAonA`oB`oB`oBdoBeoBioBioBioB`q3]aq^`o]ao^fp]dp^if\af\oe\ne]cf]of]fg]gg\ig\ah\gh\fh]ch]gh^gh_oe^oe_me_eh_ne4@fh@ghA`hB`fBoeAne@chBdhCghCahDigDggCmfDafDoeCleCcfBdgCggC0la3IoaJjcLbeLofJlfIbeGjcGlaI)ckHbkJllLhnLbpJcpHhnGllGckH(cyLbyI)jmI+km6@im5F/atF`t3J0ddJ'md5\ld4@gfKcfKheLkeLafMifMcgL`gLggKogK`hLchLmgMheN`hN`hOngOfgO`gOjfObfOheOheN`gN`gOngQahQbhPmgPafPjePieQbfQjfQagQbgPifPjeRkeSheS`hSjgR)hj6Nij8G2ivGkv3LogL)ll6VhlValV`lWjlWfmWhmWimV`nVdnVmnVlnWfnWalXmnXmnYgnYcnYimYgmYklYalYalXimXimYon[nnZjmZjm[gm[kl[bl[clZjlZnlZfn\ln]on]dn^`n^km]dm^hl^cl]`l]jl\hm]km]ij5\kj4@clKokKdkLgkLmkMilMolLllLgmKkmK`nLcnLimMdkN`nN`nOjmOfmOllOjlOnkOdkOdkNllNllObnQanPmlPmlQjlQnkQekQfkPmkPalPglSelRlmSlmSbnSfkS2jbCibE`dGleGigEjgCleB`dBjbC&ms=Pns4W(fgWggC&mr=SerSoqSlqUfrUfsUlsUosSitSauSkuShuUbuUkuVjuXoqVnqXoqWkuWnqYjuYiu[cu[gr[mq[nqYas_`s]gu]gu]ju^nq^2ce4@ae5\a~\jf4IbfIleJoeJ`fKlfKggJdgJjgIngIdhJghJlgKoeKghKghLmgMigMggLmfMafMoeLoeKggKggLngOdhOehNlgN`fNmeNleObfOnfOdgOegNlfNngQehQfhPmgPafPnePmeQbfQnfQegQfgPmfP.el5\gl4@jnIfnIlmJomJdnK`oKgoJdoJnoIbpIhpJkpJ`pKomKkpKkpLapMmoMgoLaoMenMomLomKgoKgoLjpOhpNdoNdoOboOfnOlmOmmNdnNhnNapPjpPipQbpQnoQeoQboQfnQmmQnmPenPaoPfoPmoPapPfoPeoQ0jyAiy5\/i}\0n{4Ij{I`{Jc{Jh{K`|Kk|Jh|Jn|If}Ih}Jk}Jd}Kc{Kk}Kk}Le}Mm|Mk|La|Mi{Mc{Lc{Kk|Kk|Lh}Nj}Of}O`{Nf}Qi}Qj}Pe}Pi{Pb{Pa{Qj{Qb|Qi|Qj|Pa|P,kw6@kw5WkcWkc4CaeJmdJgdJedKodKkeKmeKoeJefJifJcgJagKkfKfdLbgLbgMhfNdfNneMheNldNfdMfdLneLneMgdNcgNedPagP`gQagRifRddQgdS`eSdfScgS`gTffTbeTddTgdSls6@``@b`4T+jmTkmCboFjnFdnGgnGhnHdoHooGloGbpFjpFlpGopGhpHgnHopHlpJipJapJloJeoJinJdnJgnHooHloJdnKlpKfnLnpLkpNmpNnpMipMinMfnMenNknNgoNmoNnoMeoMjnOgnOfnPhnQhpQnpPopOjpOnoOgoOfoPloQ1koCjoZ2j`Zk`=N1oQgQm~Rn~SdT2d`TbaSaaRkaQcbQibRjbS`bTjbUhbW1n~Ul~Wm~V2ibV1m~X2ibXkbYabZ1eZo~Ym~X2bb[hb\hb]cb]ka]`a]g`]1g]l~]l~\f[2`a\`a],l~6@-hu@iu4GnwIjwI`wJcwJhwKdxKkxJhxJnxIfyIhyJkyJdyKcwKkyKkyLeyMmxMkxLexMiwMcwLcwKkxKkxL`wNhyNbwOjyOiyPjyQfyQawPmxReyRkyRjySgySoxSiwRawRcwS'en=Pen4[*it[itG'em=SmlSclS`lUnlUnmUdnUgnSaoSioScpS`pUjoUcpVbpXclVblXclWcpWblYbpYap[ko[ol[al[blY`o]ho]bp]bp^io_ao_ll]`l]al_eb4FgbGbdIjeIggGegFjeDbdDebF,c{6@a{4Gf}Ib}Ih|Jk|J`}Kl}Kc~J`~Jj~In~IdJgJl~Kk|KgKgLm~Mi~Mc~Lm}Ma}Mk|Lk|Kc~Kc~Lh|NdNj|OfOePfQn~Qi|Pj|Rk|Sh|SdSj~R0abG`b5U/dvUev\0jc4IbcIlbJobJ`cKlcKgdJddJjdIbeIdeJgeJ`eKobKgeKgeLaeMidMgdLmcMacMobLobKgdKgdLdeNfeObeOlbNncQmcPgePgePeeQmbQ/ir5\ec\ec4GjdIfdI`dJcdJddK`eKgeJdeJneIbfIhfJkfJ`fKcdKkfKkfLafMmeMgeLaeMedMcdLcdKgeKgeLhfNjfObfO`dNafPjfPifQbfQneQeeQbeQfdQadQbdPedPfePeeQ+kb6@ib4[.el[niZmi\kk]gm]mn\nnZgmXkkXniZ(dr7Wfr:Nls8VhsVasV`sWjsWftWhtWitV`uVduVmuVluWfuWasXmuXmuYfuYbuYitYftYjsYasYasXitXitYasZauZlu[mu[cu[cs[etZgt[bs\nu\ou]du^hs^cs]bs\`s_`s9@bs8_nu_`u_cs9@ou@asBmuB)m|5Wo|Xf~Z*b`ZoaXmaWb`U)f~Um|WorInrKdtM`vMnwKowI`vHdtHorI2jbAibCcdDoeDigCjgAoe4_cd_jb5A*hp4^kp_er5AatAku4_hu^at\er\hp^cs6Bcs4^(eu5\euB2aeB'm|El|Gk~H(c`HlaGmaEc`C'k~Cm|E+oi6@mi5F'eFd9R(hlRjl:N+noFoo9])gu]fu5J0mx<GnxT-bTb5S*jaSha6H0gz<HczHhyIkyI`zJlzJc{I`{Ik{Ho{H`|Ic|Il{JkyJc|J`|Lm{Li{L`{LmzLazLhyLkyJc{J`{LiyMiyNkyMc|Mi{Ml{Ob|Oa|Pn{Pj{Pa{PnzPbzPiyPjyO`zOb{Oa{PkzRizQc|Qc|Qb|RjyR*ix5NkxObzQn{Qk}Oi}Nn{LbzLixN1bl:F`l5O*`{O&ii7H(acHbc5S)jjS,fd:Fdd9R(l~Rl~5X)dXbhRahTliVhkVamTbmRhkQliQbhR*gm6Bdm5X`mX/e|6Bm}Bf~Bd~Cn}Cf|Ca}Bb}CbuCltCntBauBmvBbwB`wCnvCaqBesBdsCbsCjqC`qCaqBir5\jr6Aev5\fv6AixBmzBlzCfzCbzClyCjyCnxChxCixBmyBlyCaz5\bz6Ai}5\j}6AkpKjpLipMopMbqNeqOkqOarPhrQbsQosQetRbuRkuRdvS`wSlwShxSdySoyRjzRe{Ro{Qj|Q`}Qi}Po}Oe~Oj~No~MaMbLcKcKbAjpAkpKblLjnL`lNhnNclNknNknOdnPdlPclOclNamRcmPfnQfnQhnR`lRmwUowVmwUmwUaxUaxUexUdxUdxUhxUhxUkxToxToxTnxTnxTmxTmxTmxTlxTlxToxSoxSoxSnxSjxSixSixSexSexSexS`xS`xSlwSlwShwShwShwSewSewSawSawSawSbwSnvSovSovSovSlvTlvTmvTmvTmvTnvTnvTovTovTcwT`wU`wU`wUdwUewUiwUiwUiwUmwUhxPixQdvPevQjwPhwQ0faLbaLk`Lj`M`aNlaNbbMcbLjbLnbLccLbcMlbNk`NccNccOlbPhbPcbOlaP`aPk`Ok`NcbNcbOh`Qi`Rj`QbcQhbQobRacS`cTmbTibT`bTmaTaaTh`Ti`ScaRabS`bThbUlbUbcUacVnbVjbV`aUh`Uj`V'kaIkaJ&cIcJaJ'iaJ&bK'jaK&`M'haM&cM'kaMkaNaaOm`Og`Ng`Mf`N&aO`P'haPhaQbaQn`Qd`Qb`Q&fQ`Q`P'd`Pd`QecBaeBjeBheCbeCfcCedBfdCmd5\nd6AbjA&nA'mdJbjAndLbeLbeLaeLeeLeeLieLieLheLleLoeKoeKneKneKneKmeKmeKleKleKoeJoeJjeJjeJjeJfeJeeJaeJaeJaeJmdJmdJidJidJedJfdJbdJbdJbdJocJocJlcKlcKmcKmcKncKncKncKocKocKlcL`dLadLadLedLedLidLjdLndLndLndLldNkeEheGgcEdcGidFkdFfiInhIkhIjhJlhKhiKbjJcjIfjInjIckIbkJljKkhKckKckLmjMejMcjLiiMmhMkhLkhKcjKcjLmjO`kOakNljNlhNihNhhOmhOiiO`jOajNhiNdjPljPbkPakQnjQfjQlhPhhPjhQ.el5X1ioXjo:F*ij5WkjXflZbnZkoXioWbnUflUijW.miWliYkkZgmZlnYmnWgmUkkUmiW)gg6IggJodIodJmdJegJndKfgKldMdgModMggMggNagOifOgfNgfMffNmdOldPdgPdgQbgQjfQdfQneQbeQldQldPdfPdfQeiBmjBfkBdkCnjCfiCajBbjCij5\jj6AnoAjeAijJnoAjjLnjLnjLbkLakLekLekLekLhkLhkLhkLkkKokKnkKnkKmkKmkKlkKlkKhkKkkJkkJjkJfkJfkJekJakJakJmjJmjJijJijJijJejJejJajJbjJbjJniJoiJoiJhiKhiKhiKiiKiiKjiKjiKkiKkiKliLliLliLajLajLajLejLfjLjjLjjLjjLjjLhjNgkEdkGgiEdiGijFkjFboInnIgnIfnJlnKhoKnoJooIfpIjpIopInpJhpKgnKopKopLipMepMooLioMmnMgnLgnKooKooLmpOlpNloNloOioOmnOdnOenNlnN`oNhpPnpPmpQjpQfpQmoQjoQnnQenQfnPlnPnoPmoQ(mhGekGohHgkHnhIfkIfkJ`kKdiKnhJnhIojKckKdkLgkLakMmjMgiKohKmhMmsBiuBbvB`vCjuCnsCmtBntCmnBmpBlpCjpCfpC`pCjoCboClnCmnBapB`pCep5\fp6Aeu5\fu6AhwHjwAfmAdmHerOirOirOmrOmrOasOasO`sOdsOdsOgsNgsNjsNjsNjsNisNisNhsNhsNgsMgsMfsMfsMbsMbsMasMmrMmrMirMirMerMerMarMarMarMmqMnqMjqMjqMjqMkqMgqMdqNdqNeqNeqNfqNfqNfqNgqNkqNhqOhqOhqOmqOmqOarOarOarOerOerOdmHfmHdmIjmIlmJbnJdnKjnKcoKeoLnoLgpLlpMdqMmqMerMasMhsM`tMktLbuLiuLouKfvKhvKnvJ`wJfwIhwIjwHhwHerOgrP`sKasL`qKaqLfrKdrLmyGeyGcyGbyHgyHczHjzHkzGmzGe{Gk{Gj{Hg{HbyIj{Ij{Jd{KlzKjzJ`zKdyKbyJbyIjzIjzJcyKc{Ki{Lj{La{MayMczKazM`yNh{Nh{Oe{OeyO`yO`yNayPbyQcyPk{Pa{P.ciIciJkfIkfJifJaiJjfKbiKhfM`iMkfMciMciNmhOehOchNchMbhNifOhfP`iP`iQnhQfhQ`hQjgQnfQhfQhfP`hP`hQakBilBbmB`mCjlCbkCmkBnkCel5\fl6AjqAfgAelJjqAflLjlLjlLnlLmlLmlLamLamLdmLdmLdmLgmKgmKkmKjmKjmKimKimKhmKhmKdmKgmJgmJgmJfmJbmJbmJmlJmlJmlJilJilJelJelJelJalJalJmkJnkJnkJjkJkkJkkJkkJdkKdkKdkKekKekKfkKfkKgkKgkKkkKhkLhkLhkLmkLmkLmkLalLblLflLflLflLflLdlNcmE`mGckE`kGelFglFnpIjpIcpIbpJhpKdqKjqJkqInqIfrIkrIjrJdrKcpKkrKkrLerMmqMkqLeqMipMcpLcpKkqKkqLirOhrNhqNhqOeqOipO`pOapNhpNlpNhrPjrQfrQ`pP(grPfr7Els6VhsVasV`sWjsWftWhtWitV`uVduVmuVluWfuWasXmuXmuYguYcuYitYgtYksYasYasXitXitYbsZbuZlu[mu[cu[cs[ftZgt[bs\nu\ou]du^hs^cs]bs\`s_`s7@bs6_nu_`u_,iqDbrDkrD`sEdsEmsEftEntEguEouEgvElvFdwFlwFdxFlxFdyFlyF`zFhzF`{Fk{Ec|Ek|Eb}Ej}Ea~Eh~E`EgDnD-e`D,l~@l~Els@lsEgrEktEktFdtGhrGgrFgrEg}EcEiFjF`Gd}Gg~Ed~Gkw@kwEgvGbvGcvFfvFnwFgxFfxGowGnyFn{Fn{Gk{Gg{Gb{GkzGczGnyGnyFb{Fb{Gc{@c{EemOmoOgmPooPfmQnoQooRdoS`oSknRjnQinRdmSanUcnSioTioTloUdmU-e`Je`D,iqJiqDiqJkqJiqKkqKmqLoqLmqMcrM`rNfrNdrOjrOlrPbsPgsPisQosQ`tRftRhtSmtScuShuTmuTcvThvUmvUgwUlwVaxVjxVcyV-e`Jg`Je`Kg`Ka`Lc`La`M,oMlNjNhOfO`Pn~Po~Pi~Qg~Q`~Rj}Rd}Sa}So|Sd|Ta|To{Td{Ua{UkzUdzVmyVfyVcyV`yY`yY`yYdyYgyXkyXkyXkyXnyXnyXnyXazXazX`zX`zX`zXczWczWbzWbzWazWmyWmyWlyWhyWhyWkyVgyVgyVcyVcyVcyVoxVoxVkxVkxVgxVdxWdxW`xWaxWaxWaxWnwWnwWowWowWlwXlwXlwXmwXaxXbxXbxXbxXgxXgxXgxXkxXhxYlxYlxY`yY`yYbyZkyShyUkwShwUmxToxT-ibOabOoaOnaPcbPobPfcPgcOicOadOgdOfdPcdPnaQfdQgdR`dShcSgcRlbS`bSoaRnaQfcQgcRlaTlaUnaTfdTlcTlaVlaWnaVfdVlcVgdWedYadYoaW2e}BaBjBhCbCf}Ce~Bf~C3ndChdCjdBmdBifBnfBlfCjfCehBijBhjCbjCjhCdhCehBai5\bi6Aee5\fe6AaaBacB`cCnbCjbCdbCnaCfaC`aCaaBebBdbCia5\ja6A2a~5\b~6A3gkKakL`kMbkMmjNkjNejOliPjiP`iQihQchQhgRagRffRoeR`eShdSlcSdcShbScbRfaRm`R``R2kQaQh~Qf~Pl}Pi}Og}Na}Nn|Mh|Mi|Lk|Kk|Kj|A3fkAgkKbmLjoL`mNhoNcmNkoNkoOdoPdmPcmOcmNanRcnPjoQjoQhoR`mRmcUocVmcUadUadUadUedUedUddUhdUhdUhdUodTodTodTndTndTndTaeTaeTaeT`eT`eTodSodSodSndSndSndSidSidSidSedSedSddS`dS`dS`dSlcSlcShcShcShcSecSecSecSacSacSbcSbcSnbSobSobSobSlbTlbTmbTmbTmbTnbTnbTnbTobTccTccT`cU`cUdcUdcUecUicUicUicUmcUmcUdePeeQ`cPacQfdPddQ2lEhEbEaFjF3b`Fi`Fj`El`EdaEjaEiaFfaF2aG3iaGjaHgaHo`Hj`Hc`H2kHbHaG3i`Gj`H2cIcJaJ3iaJcaI2cKcLaL3iaLcaKfaMhaNkaNdaOl`Ok`N``O2hOcN`NjM3h`Nk`N*dbNddNgdNadOibOgbNdbN+blFnmFdnGenGomGclGbmFcmGjmHbnHgnHenIcnIkmIflHblHclI*f}FjFjGgGcGj~Gg~Go}Gf}Gf}Fj~Fj~GbHfHkHiIgIcIn}Hf}Hg}InyFn{Fn{Gk{Gg{Gb{GkzGczGnyGnyFb{Fb{Gj{Ho{Hm{Ik{Ig{Ia{IkzIczImyIoyHbzHc{Ha{I)dy5]+`w]aw8A)eyAdy5]*g{6@g{Eo~@o~E+baFfcFfcGccGkbGfbGcbGgaGbaGbaFfbFfbGbaHbaI`aIdcInbHkb@kbEfhFbjFhjGijGcjGghGfiFgiGfjHkjHijIgjIcjIiiIgiIohIehIghHnhHkiHiiIoi@oiE*gmBdmH+noFjqF`rGarGkqGooGnpFopGnoHnoIloI`rIjqHkm@kmEgq@gqE*`lJokIlkIclHkmH`nIcnIhmJgmJkmJ`nKbnKhmLdmLclJokJlkLcsB`sH`rJkqIhqIcrHksHlsIosIhsJkqJkqKiqKmsKgsJ+ldNodE*cyE`yN+hsNksEogElgN*bp7McpGck6NakOckOekPkkPmkQclQdlRnlRcmRhmSanSjnScoSkoScpSopSgqSnqSerSlrSgsRjsR`tRgtQitQotPauPguOeuOguNguNduH`kHckNhaHkaS`yNbyN`yOgyOiyPoyPazQkzQa{Rg{Rl{Si|Sb}Sk}Sg~So~SkS+c`Sn`SeaSlaSgbRmbRgcQicQcdPedPkdOhdOndNldNlgNngNlgOchOehPkhPmhQgiQiiRcjRhjSakSnkSglScmSkmSgnSonSfoSapShpScqRiqRcrQerQkrPasPcsOdsOfsNhsN*cpSbpZbvZ`v7Ika6Sja_fr_er7Ho~6Sn~ZnyZly7I+km6Sjm_*f}_e}7Hn~Ml~Nn~Nl~On~Oh~Pj~Pd~Qf~Q`~Rb~Rl}Sj}Sg}Sa}To|Ti|Uf|U`|Vn{Vg{Va{WnzWdzXazXjyXdyYmxYfxYcxYhwZn~Mo~GcpGkpG`qHiqHbrHjrHcsHhsI`tIhtIauIiuIavIivIawIjwIaxIixIayIiyIazIhzI`{Ih{Ic|Hj|Hb}Hi}H`~Hg~Go~G)nzMn|Md}Nf}Nl|OlzOb|M`|Og{OlzPozPe{Qa}Qg}Pd}Pc}Og{Od}Re}SlzRmzSozRg}R`}Te}Td}Ub}Un|Ud|Ub|Uf{UlzUmzTd{Te|Td|Ua}Vf}Ve}Wb}Wn|We|Wb|Wf{WmzWnzVe{Vf|Ve|Wm|Xa}Xg}Xf}Yc}Yo|Ye{XmzXozYozZoz[mz[e}[o|Z*bpM`pNfpNdpOfpOdpPjpPhpQnpQlpRbqRdqSjqSkqSmqTcrTerUnrU`sVfsVksVatWftWhtXauXfuXluYevYjvYcwYhwZiw\iw\mw\mw\`x\`x\`x\dx\gx[gx[kx[jx[jx[ix[ix[hx[hx[hx[kxZkxZjxZfxZfxZexZaxZaxZ`xZlwZlwZhwZhwZdwZdwZ`wZ`wZawZmvZmvZnvZjvZjvZkvZkvZhv[dv[dv[ev[iv[jv[jv[kv[kv[ov[lv\lv\`w\`w\aw\ew\ew\iw\iw\kw]dxWexX`vWavXfwWdwX+jsMbsMlrNnrN`sOlsOftNdtNjtMntMduNfuNltOorOguOguPmtQitQgtPmsQasQorPorOgtOgtPlrRmrSorRguRltRltTeuTduUntUjtUdtUnsUbsUlrUmrT`sTetTdtUeuVfuWntWmrV(coR`oTklRhlTjlSboSklTcoTilVaoVhlW`oW`oXmnXenX`nX`nWbnWilXhlY`oYaoZnnZfnZanZjmZnlZilZhlY`nYanZaqKirKcsK`sLjrLbqLmqKnqLfrEfrJjwJfmJfrSjwJfrUjrUjrUnrUnrUbsUbsUasUesUesUdsUdsUhsUksTksTjsTjsTisTisThsTdsTdsTgsSgsScsSbsSbsSnrSnrSjrSjrSfrSfrSfrSbrSbrSnqSnqSoqSkqSkqShqTdqTdqTeqTeqTfqTfqTgqTgqTdqUdqUhqUiqUiqUmqUnqUnqUbrUbrUfrUfrUfrUfrUdrW`sOasP`qOaqPfrOdrPovRkvR`vScvSivTewTkwShwSowRgxRhxSkxSexTcvTkxThxVexVmwVhwVewVivV`vVcvTkwThwV`vW`xWjxWhxXbxXbvXdwWfwXavYixYjxZgxZkvZbvZavYcv[cv\av\ix\cx[bv]jx]`v_hx_/mwKow6VdyYlxYixYhxZnxZjyZ`zZazYdzYlzYa{Y`{ZnzZix[a{[a{\nz\fz\az\jy\nx\ix\ix[az[az\jx]kx^hx^`{^jz]mz_c{_b{7@oz@gz@bz@ky@ox@jx@kx6_mx_cz_bz7@fzAnzA`{Bc{BlzCdzCnxAjxAhxCktXktYoqXoqYmqYitYnqZjtZlq\ht\oq\kt\kt]at^ms^gs]gs\fs]mq^lq_ht_ht8@bt@ns@ds@bs@fr@lq@lq7_ds_ds8@ev7QaxQkxQhxRbxRfvRewQfwRmwKnwPb}PjrPmwYb}Pnw[nw[bx[bx[fx[ex[ex[ix[ix[hx[hx[lx[oxZoxZoxZnxZnxZnxZmxZmxZlxZlxZlxZoxYkxYkxYjxYjxYfxYfxYexYaxYaxYmwYmwYmwYiwYiwYewYfwYfwYbwYbwYcwYovYovYlvZlvZlvZmvZmvZnvZnvZnvZovZovZovZlv[lv[`w[aw[aw[ew[ew[fw[jw[jw[nw[nw[nw[lw]kxThxVgvTdvViwUkwUf|Xn{Xh{Yk{Yl{Zh|Zc}Y`}Yf}Xj}X`~Yc~Yh}Zk{Zc~Zc~[i}\e}\c}[i|\m{\k{[k{Zc}Zc}[i{]i{^k{]c~]i}]h}_a~_`~8@j}@f}@`}@j|@n{@h{@i{7_l{_a}_`}8@e}Ai}Ab~Aa~Bk}Bg}Bm{Ai{Ak{Bj{Cb~Ck{Dc~D&bg7GagIohJkjJalIblGkjEohEbgG1ku:SjuKniKoiSjoFjoKnjMijMkjLmjLelLolLmlMflMblFblKfsFfsKenLepLepMbpMnoMioMboMjnMenMenLioLioMmqLisLctLatMjsMnqMmrLnrMoiSmiToiTajUcjUejVjjVljWbkWgkWlkXblXklX`mYimYanYfnYnnYfoYnoYfpYnpYeqYmqYdrYorXbsXhsXosWftWhtWntVauVguUeuUkuTiuTkuSdeV`hVfeWbhWdeX`hXahYjgYneYeeYdeXigZchZbh[kg[gg[nf[kf[oe[fe[geZmeZofZnf[ko[io]ko[oo[oo[cp[cp[cp[gp[fp[fp[fp[jp[ip[ip[ip[lp[lp[lp[opZopZopZnpZnpZmpZmpZipZhpZhpZhpZdpZgpYgpYgpYcpYcpYbpYnoYnoYjoYjoYjoYfoYgoYgoYcoYcoYcoYlnZlnZlnZlnZinZinZinZjnZjnZknZknZknZhn[hn[hn[in[mn[mn[nn[nn[bo[bo[co[go[go[go[ko[ko[ko[gpVdpXgnVdnXhoWjoWlwVdwVawV`wWfwWbxWhxWixVlxVdyViyVhyWfyW`wXhyXiyYfyYnxYixYbxYfwYawY`wXhxXixYbwZbw[`w[hy[byZey\ky\jy]gy]ox]jx]cx]gw]bw]cw\ew\kx\jx]lw;@nw:^dy_dy_ky_cw_cw;@cy@iyAkyAayBawBcx@axB0fi:Ffi@)ipLhp9R/lw7]ow;L0osL/dy8VlxVixVhxWnxWjyW`zWazVdzVlzVa{V`{WnzWixXa{Xa{YnzYfzYazYjyYnxYixYixXazXazYjxZkx[hx[`{[jzZnz\c{\b{]oz]gz]bz]ky]ox]jx]kx\nx\cz\bz]fz^nz^`{_c{_lz9@dz@nx8^jx^hx9@kx@c{@ixBa{B6ea3S5ayS6ea%G5ayG(m}!L)ecLecOaaLbaN1hlRklI'hyRkyI,heDheRfhMbcMheR"mc @6ig@kg?^"oc^mc @%`m!RcmI,dsRgsI*dfRgfI.lRoI+djOdjLloLloOdmLemN$dgLdgOddLhiLddOhiO3`yRcyI&duO`vOmvNovL`vLdrLgqLeqNdrOlsOmsN0`dOecNgcL`dLlgLkhLihNlgO-dwLh|Li|Nl{O`xOewNdwL2hpLluLmuN`uOdtOisNlrOdqOipNhpLhsLisN4l|L5l`L`bMcbMl`O4l|O`L`O,heRbfMheRbdMheRfcMfhMkeMbcMieNfhMjeNbcMheRncMheRndMheRjdMheRfeMheRnfMheRjgMheRbgMheRffMheRngM"ii#UakTemTmnUlnVemWakWhiViiUlq!R5`yRay?P"mqPlq!R5a|#Ui}TmT6eaUdaV5mWi}W`|Va|U"ii%GmqGgm/\jm_em0Bbn/_gm\fn_em0B6ea*_5ay_6ea(C5ayCb|&P`|Sc|Q6gaQf`P"jiPhiSkiQonQjmPii(CmqC5m)L6i`LdaMfaNi`O5mOm|La|La|O"emLanLlnMnnNanOemOejLiiLiiOii*_mq_6ea-[5ay[6i`,HdaIfaJi`K5mKbJe~Km|Kb|J`|Im|H`IbJ"anHlnInnJanKemKjlJmkKejKjiJhiIejHhlIjlJii-[mq[5a~/Ga~D6baEbaEfaF5b|F"ekGekDfnEfnEnnFjiFnc_nq_em0Bgm/\nq_nc_nq_gm\em0Bnq/_nq_em0@nq/_em^nq_fm]nq_em]nq_dm^nq_dm_nq_gm^nq_dm0Anq/_gm0@iiWmqWnq/_dm0@nq/_fm0Anq/_gm0Aln2Con1_kl_il2BlkCdjCiiBji@gj1_ck_6ea0W5ayW6da2Cga1_5c_a2Bd~Cl|Ca|Bb|@o|1_k}_"ii3SmqS%ak7Z#e{ZedZ"mqZ6ea6O5ayO6h`4_ea^ga\k`[5o|[c|\a|^l|_d~_a^c\g~["`n_mn^on\cn[gj[ki\ii^dj_lk_il^kl\ok[ii6OmqO6da7Yda\h`\5`|Y"lnYln\`n\hiYmqZ%ekZek?P"mqPmq7Z$iwZjw?P#ec7Zfc?P%ek7Zek?P"ii9KmqK6eaK5ayK"ii<GmqGan:TlnUnnVanWemWjlVmkWejWjiVhiUejTmkThlUemTanThlUjlV#fcN"nqN6i`TdaUfaVi`W5mWbVe~Wm|Wb|V`|Um|Te~T`UmT6i`T5`UbV#av=DezDdzFnyFnvF`vFavDgzGcvGhxIavJezJgyMoyMezMdzLnyKnvK`vLavMovMcxMaxMfwQnvQ`vRavSlvT`xTixShxRfyQnyQdzRezSlyTfzUezWbvUavWavVezVfzXdz[bvX`v[jxYixZbv^`v\dz\fz^hx\hx^$iw<[#ec[6eaG5ayG#i}[j}?P"dj=PkiPiiRdjS`nSmnRonP`nPhlPokPmkRhlS#ckNckIcpKcpKjpMngMejQaiQngRmgUbiVjkVmlUnlRanQeoQjpRipUfoV5l|Pc|Pa|Rl|S6h`SeaRgaPh`P5`Pg~Pe~R`S,ie?PgfTiePghTccTieP#dz>SgzT`vScvT`vTdzTdwVlvVcvVcvWnvXbxXkxWkxVdyVlyVgzVgzWnyXgwYovYavZbv[lv\`x\jx[ixZgyYoyYezZfz[ly\ez]mv]`v^av_ov_gz_bv?C`vAdzAfzChxAkxBh}>F"lqF%am?PbmX"d}>Sh|Sc|S`|Uj|Un}Uh~Uk~S`SlS#g`Sd`U"nUk~Vi~Yc|V#g`V"a|Y#e`Y"c|\b|Z#f`Zg`\"j~Zi~\b|?@`|>^#d`^f`?@"h~>^k~_#g`?Ad`Dd`C"`|C'iyPjyX*efPffX,iePcdTiePgcTie^iePghTccTiePiePocTiePodTiePkdTiePgeTiePcgT(l}S)dcSdcV`aSaaU,iePofTiePcfTiePkgTiePogT.mPnX,esPfsX1ilPjlX3ayPbyX-ewSi|Sj|Um{VaxVfwUewS&euVavVnvUlvTavSerSdqTfqUerVmsVnsU$egSegVedSiiSedViiV+ejVejSmoSmoVemSfmU2ipSmuSnuUauVetVjsUmrVeqVjpUipSisSjsU0adVfcUdcTadSmgShhTjhUmgV4m|S5m`SbbTabUm`V4m|VaSaV,ghTjeTccTheTghTkeSccT"hx8Pn|RjxRl|Po|S`{Um|V`{UhxUn|Wo|YjxWkxYa{Xa{Ydy9@ix8_hx^fy]f|]l|^m|_d|9@dyAkxAhxCfyCf|Cl|Co|Ad|AdyAkxDo|D`{Fm|GixGjxHn|Hm|Jg|Jo{Ja{Jb{HhxL`|Ll|Mn|Mb|NjxNhzLjzNkxOo|OhxRl|Rm|Sb{To|Ub{TjxT$h:[%hd^$h^%hd[id_gb;@idBgb@$k@%kdCjdF$kCjF%gbDgbEc`M$hMjK%c`JocJjdKhdMocM``O$kOiQ%``RlcRidQkdOlcO``O$iS%idSgbTidV$iVkW%kdWkdYncZbcZgbYgbW$h\%dc\hd]kd]gc^$k^%ha\ka^$i<@%id@$hC%hdCjdDdbFidGdbF$hFmc8NejNdjQdiRhhRhgQigNkeSodSocTocVndWjfWkgVkgTkhSgiSgjTgjVfiWncYfjYej\ei]md]mc\ncYod9BlcBlc@ld8_di_dj9@djBgiBncHfjHigJejLmcLldNlcOlcQodQgiQdjQdjOdiNldNocSgjSfjVfiWndWncVocSlc]mcYejYdj]igYig\ke:BodBocCncEndFjfFjgEkgCkhBgiBgjCfjEfiFlcLmcHejHdjLigHhgKdjNlcNocQmcWncSfjSejWjgSigVld]lc\lcZmdYeiYdjZdj\di]gj^fj;Bgj@oc@mcHejHdjKdiLldLlcKmcHncQocMgjMfjQkgMjgPfjSmcUejWfjYej\ncYmc\lc[dj[ld<BlcAlc;_md^ei^dj_dj<AdiBncGocCgjCfjGkgCjgF#n{8Wb{WbzXbzZa{[m|[n}Zn}Xn~WjW$j`Xj`Z#i[$i`]h`9Ah`8_#`z_cz9BgB$i`Di`E#fFbzFo|Bn|F$j`Hi`Li`J#azJczQ`zN$h`Nk`Q#l}Nl}QbzW$j`W#m}Y$i`[#az[`z]d]$j`^j`_#g:@cz@l|9]o|:@b{FbzEczCc{BkB$k`Cj`E#jFm}Hl}LazH$i`H#`zL$h`Lj`Ni`Q#bzNazQczO$k`O#`zS$h`S#czV$k`V#bz\czX$k`Xj`\#o}Xn}[e}^d};Bd}Dg}Gn{Ib{IbzJbzLa{Mm|Mn}Ln}Jn~IjI$j`Jj`L#iM$i`Oh`Sh`Q#`zQczT$k`T#o}V$j`X#bzXbzZ$j`Zi`]#i^m~^m}]m|^a{^az]bzZn}Zm}]bn>XfoXkpYip\fo]bn]biXngXng]"dtW`zWbzYeyZixZjwYmvZauZftYdtWhwWjwYdy\`z]cz^fy_jx_kw^nv_bu_gt^dt]`u\hw]kw^m};WawW`w[aw]aw<@cw;^o}^e|]l{<Bl|Bl}Cl}El|Fl{F`xB`wB`wFo|Go}Ho}Jn|Kn{KozJbzKbxKcwJcwHcxGozHozJiyQjyMd}Od}Om}PawPl}Wm}SmzSlzV`zW`xW`wV`wTaxSaySo|\o}[o}Yo|XcxXcwYcw[cx\cz\oz[ozYczX$ia=FegFldHfgIjaIiaKafKfgLegMbfNjaNadKbdNiaPegPggRjfSneSodRmdPldRjaSfbXkaWhaVebUifUdgVggWjfXmdZnd]iaZegZja]fg]ha>CjaEiaDegD`fCebGhaHkaIfbJjfJggIdgHifGmdG`dHcdIndJdbMgbMgbMkaM#nMnM$jaMhaMhaMdbMiaSkaUjaTfgTafSebWiaXkaYgbZkfZggYegXifWmdWadXcdYodZif\eg]gg^kf_oe_od^cd_gb_ka^ia]eb\ad\md]me\if\md]od^gg?DegAmdAodCcdDgbDkaCiaBebAecAem=[as[kp\bs^fm^ao>@an@dmAgmBbnCnoCkpBhpAiq@er@`sAcsBfrCasEemEfmHdmK`nKcnKgmKdmKfrMasN`sPgrPkqPhpPooPcnPdmPemNbnMipNhpP*kw7]kw;L+gL*ly8VdyVayV`yWfyWbzWhzWizVlzVd{Vi{Vh{Wf{WayXi{Xi{Yf{YnzYizYbzYfyYayYayXizXizYbyZcy[`y[h{[b{Zf{\k{\j{]g{]oz]jz]cz]gy]by]cy\fy\kz\jz]j{^h{9@d{@by8^0nx:Fox9W)giWei:L`n9QcnRnoTfqTcsR`sQfqOnoO`nQ0dvWfvXaxZmyZf{Xd{WmyUaxUdvW+fh:QbkQdhS`kSghSckSckTijUmhUghTghSdjVhjVakV`kWjjWfjWlhVdhVfhWisLauLkuLiuMbuMjsMetLftMenLipLipMfpMnoMioMfoMjnMenMenLioLioMnoFnoKntFntKawRbwKnlKmlRbrYbrYbrYfrYfrYjrYjrYirYmrYmrYmrYlrY`sY`sYcsXcsXcsXbsXbsXasXasXasX`sX`sXorWorWorWorWjrWjrWjrWfrWfrWbrWbrWbrWnqWnqWnqWjqWjqWfqWfqWgqWgqWcqWcqW`qX`qXaqXmpXmpXnpXnpXopXopXcqX`qY`qY`qYaqYeqYeqYeqYfqYjqYjqYnqYnqYnqYbrYmlRolRmlSbmS`mTfmTkmTmmUbnUdnVmnVboVkoV`pWepWmpWeqWmqWerWirWasWisW`tWgtVntVeuVhuVnuUavUgvTjvTlvTbwSawScwRawRbrY`r[mrUnrVipUjpVoqUlqVfyQbyQkxQjxR`ySlySbzRczQjzQnzQc{Qb{RlzSkxSc{Sc{TmzUizUczTmyUayUkxTkxSczSczThxVixWkxVc{VhzVlzXa{X`{YnzYjzY`zYnyYbyYhxYixX`yXazX`zYmzZb{Za{[nz[jz[az[ny[by[ix[jxZayZmyZbzZizZmzZbzZaz[cy]jx]kx\ay\mz\c{\b{]oz]0of9_nf:AhhCdjCblAcl9_dj^hh^of_b~:Fb~@k{9_j{:A`}Cl~C1j`Ak`9_0l~^`}^k{_-ca:SbaK,fuKguSb{Fb{KfvMavMcvLevLmwLgxLexMnwMjwFjwKn~Fn~KmyLm{Lm{Mj{Mf{Ma{MjzMbzMmyMmyLa{La{Me}LaLkLiMbMf}Me~Lf~MguSeuTguTiuUkuUmuVcvVevWnvW`wXiwXnwXdxYlxYeyYnyYfzYnzYf{Yb|Yj|Ya}Yh}Y`~Yf~Xm~XdXjWmW-g`Vi`Vk`Um`UcaTaaTcaS,lpVhsVnpWjsWlpXhsXisYbsYfqYmpYlpXasZksZjs[cs[or[fr[cr[gq[np[opZeqZgrZfr[c{[a{]c{[g{[g{[k{[k{[k{[o{[n{[n{[b|[b|[a|[a|[`|[d|[d|[g|Zg|Zg|Zf|Zf|Ze|Za|Za|Z`|Z`|Z`|Zo{Yo{Yo{Yk{Yk{Yj{Yf{Yf{Yb{Yb{Yb{YnzYozYkzYkzYkzYgzYdzZdzZdzZezZazZazZbzZbzZczZczZczZ`z[`z[`z[ez[ez[fz[fz[fz[jz[kz[kz[oz[oz[c{[c{[c{[o{Vl{XoyVlyX`{Wb{W-dcVlbVibVhbWnbWjcW`dWadVddVldVaeV`eWndWhbX`eXaeYndYfdYadYjcYnbYibYhbX`dXadYjbZjb[hb[`e[jdZmd\ce\be]od]gd]bd]kc]ob]jb]kb\mb\cd\bd]nd^`e_ce_ld;@dd@cd:_hc;@lb@kb:_hb_nb^jc^`d_fd^nd^`d_cd_kb;@kd@aeAceAidBibBkc@icB+b}:QjQ`}ShSc}SkSkTeUe}Uc}Tc}Sl~VdViVhWfWn~Wd}V`}Vb}W,ahLmiLgjLejMniMbhMaiLbiMmbLaeLaeMndMjdMadMncMfcMmbMmbLadLadMfdFfdKjiFjiKmkRnkKfaKeaRjfYjfYnfYnfYbgYbgYbgYegYegYegYegYhgYhgYhgYkgXkgXkgXjgXjgXigXigXigXhgXhgXkgWggWggWggWfgWbgWbgWbgWnfWnfWjfWjfWjfWffWffWbfWbfWbfWneWoeWoeWoeWkeWheXheXieXieXieXjeXjeXkeXkeXkeXheYheYheYmeYmeYmeYmeYbfYbfYbfYffYffYjfYjfYeaRkaRiaSjaSlaTbbTcbTebUnbU`cVecVncVcdVhdWaeWeeWmeWefWmfWegWmgWahWhhWciVfiVmiV`jVjjUmjUckTfkTdkTjkSikSokRmkRjfYhf[egUfgVaeUbeVgfUdfVnmQjmQgmQfmRhmSdnSjnRknQboQfoQooQnoRdoSgmSooSooTeoUaoUknTenUimUgmTgmSknSknTdmVemWgmVooVdoVdoXmoXloYfoYboYhnYfnYjmYdmYemXhmXinXhnYeoZnoZmo[fo[bo[in[fn[jm[em[fmZimZenZjnZaoZeoZjnZin[em\mo\no]go]co]jn]gn]km]fm]em\in\jn]/b}QjQ`}ShSc}SkSkTaUe}Uc}Tc}Sl~V`ViVhWbWn~Wd}V`}Vb}W0ahLiiLcjLajMjiMbhMmhLnhMmbLaeLaeMndMfdMadMncMbcMmbMmbLadLadMfdFfdKfiFfiKikRjkKfaKeaRjfYjfYjfYnfYnfYbgYbgYbgYegYegYegYegYdgYhgYhgYkgXkgXjgXjgXjgXigXigXigXhgXhgXdgXggWggWggWfgWbgWbgWbgWnfWnfWjfWjfWjfWffWffWffWbfWbfWbfWneWneWoeWkeWkeWheXheXheXieXeeXeeXfeXfeXfeXgeXkeXheYheYheYieYieYmeYmeYneYbfYbfYbfYffYffYffYjfYeaRgaRdaSjaShaTmaTcbTdbUjbUobU`cVecVncVcdVhdWaeWeeWmeWefWmfWagWigWahWdhWohVfiViiVliVgjUjjUljUckTakTdkTjkShkSkkRikRjfYhf[egUfgVaeUbeVgfUdfVnmQjmQcmQbmRhmSdnSjnRknQboQfoQkoQjoRdoScmSkoSkoTeoUaoUknTenUimUcmTcmSknSknT`mVamWcmVkoV`oVdoXioXhoYfoYboYhnYfnYjmY`mYamXhmXinXhnYbn[anZkoZkoZio[am[km]bm]cm\im\eo\ko\jo]go]jqQbtQhqS`tSkqSctSctTmsUmqUkqTkqSdsVlsVatV`tWnsWfsWlqVhqVjqWi|Le~Lo~Lm~Mf~Mj|Mi}Lj}MewLiyLiyMfyMbyMixMfxMnwMewMewLixLixMnxFnxKb~Fb~K1e`Rf`K0nuKmuRb{Yb{Yf{Yf{Yj{Yj{Yj{Yj{Ym{Ym{Ym{Ya|Y`|Y`|Y`|Yc|Xc|Xc|Xb|Xb|Xb|Xa|Xa|X`|X`|X`|X`|Xc|Wo{Wo{Wn{Wj{Wj{Wj{Wj{Wf{Wf{Wb{Wb{Wb{WnzWnzWnzWjzWjzWjzWfzWgzWgzWgzW`zX`zX`zX`zXazXazXbzXbzXbzXczXczXczX`zY`zY`zYezYezYezYezYjzYjzYjzYnzYnzYnzYb{Yb{YmuRcvR`vSbvSdvTevTkvTlvUbwUgwUhwVaxVfxVoxV`yWiyWazWezWmzWe{Wm{Wa|Wi|W`}Wg}Vn}Va~Vh~Vo~UbUdUkTmTlT1b`S``Sg`Re`R0b{Y`{[m{Un{ViyUjyVozUlzV1fbQbbQoaQnaR`bSlbSbcRccQjcQncQgdQfdRlcSoaSgdSgdTmcUicUccTmbUabUoaToaSccSccTlaVmaWoaVgdVlcVlcXedXddYncYjcY`cYnbYbbYlaYmaX`bXacX`cYjb[ibZcdZcdZed[ma[ma\ed\fd]oc]kc]bc]ob]cb]na]ma\ac\bc]0o~;L1koLio:]cq^op^dp_gp_mp;@iq@oq:_lq_gr^kr^`s_cs_ir;@dpA`sA`sBjrBfrBlqBjqBnpBdpBdpAlqAlqBepCfpDdpD`sDerCirEbsEasFkrFgrFmqFkqFopFepFfpEmpEnqEmqFgqHeqGlrHlrHbsHfpHfpIfrIasJbsJdrKdpKjqIhqK,hf:[kf;Lmh:]eh]ch]ah^gh^ci^ii^ki]mi]ej]kj]ij^gj^bh_jj_jj;@djAliAji@`iAdhAbh@bh:_ji_ji;@chA`hCbhBjjBcjAgjChjDkjDejEmiEkiDaiEehEchD`hDghChiDkiDdjFijFhjGejGmiGhiGaiGehG`hGahFdhF`iFiiFliFdjFiiFhiG`hHhjHijIfjIniIiiIbiIfhIahI`hHhiHiiI(ja:YncYncZgcZoaZjaZjaY)ekRamRkmRhmSbmSfkSelRflS`mTdmTjmThmUemUamUlkTdkTekU(m|Rm~Rm~Sj~Sf~Sa~Sj}Sb}Sm|Sm|Ra~Ra~Sd~Th~Tn~Tl~Ui~Ue~U`}Tl|Tm|UayRe{Re{SnzSjzSezSbzSfySaySayRezRezSlzTf{Td{UmzUizUdzUazUeyU`yUbyTdyTfzTdzU'kxH)kvHhv<M'hxMkx:H(izLjzQa~Lb~Q)e`RibRibSfbSbbSiaSfaSn`Se`Se`RiaRiaSe`Te`Ug`TkbTabTmaLnaQmgRiiRoiRliSjiSngSihRjhShiTniTliUiiUeiU`iUihUahUlgUngT`hTbiT`iUeiLfiQ(jlNklS)aoRmpRgqRdqSnpSboSapRbpSaoTaoUcoTgqTmpTmlLnlQipLjpQ(gkUbkUckTfkTbmTgmTfmUcmUilVamVgmVemWbmWjlWekVakVbkWfrNgrSgqUbqUcqTfqTnrTcsTbsUorUbqVbqW`qW`sWjrV)bdYbdQ(fxQfxY)nrYnrQbgQbgY(io;YioSej:ZgjZej[kj[ij\nj\`k]fk]kk]`l^fl^ol^`m_hm_an_jn_bo_jo_bp_fp_mp_dq_lq_cr^jr^`s^gs]js]ls]bt\et\gt[it[ktZitZitZktSgjSejZo`Sn`_fxYexZgxZix[ox[mx\cy\iy]ny]dz^iz^b{^k{^`|_i|_a}_j}_b~_n~_e_m_)d`_o`^fa^ma^`b^jb]mb]cc\ic\kc[mc[cdZadZbdYbgYagZcgZeg[gg[ig\og\eh]jh]lh^ei^ni^gj^lj_ek_mk_fl_nl_fm_an_in_`o_ko^bp^ep^lp^fq]iq]oq\ar\gr[ir[krZmrZnrY(jo_ho;FduFguTn`:_m`;KiqKhqTb~:_`~;F`yFcyT)nl:_ml;K(m|Kl|Ta~Yc~Y`~Zb~Z`~[b~[o}[m}\o}\i}]j}]d}^b}^c}^m|_k|_d|<@f|@c|@m{Aj{Ad{BmzBjzBdzCazCnyCdyDayDnxDgxD`xEiwEfwEovEa~;Ya~SioSnoSgpSopS`qTiqTarTfrTnrTgsTosTctThtU`uUhuUluUdvUlvUdwUlwU`xUhxU`yUkyTczTgzTnzTf{Ti{Ta|Th|Tc}Sg}Sn}Sa~S'azYa|Yo|Yl|Zc|ZczZe{Yg{Zjz[cz[bz\kz\g|\n|\o|[f|[jz[o|]l|_cz]`z_az^m|^g|_l|<@o|@d|A`|Ak{@d{AhzAcz@`z@kz;_h{<@k{@g|Am|Bl|Ce|Ca|Ch{Ce{CizC`zCazBkzAi{Bh{C`|Dd|Dn|Dm|Ef|Eb|EhzD`zDbzEbzFbzG`zGl|Gb|F(io;YkoYhoZjoZho[jo[oo[mo\oo\ap]bp]dp^jp^kp^mp_cq_dq<@jq@kq@mqAbrAhrBmrBbsBdsCisCbtCdtDitDbuDguDhuEavEjvEovElvHlvH`wHcwGgwGgwGgwGkwGjwGjwGnwGnwGmwGmwGlwGlwGlwGowFowFnwFnwFnwFmwFmwFmwFhwFhwFhwFgwEgwEgwEcwEcwEovEovEovEkvEkvEgvEgvEgvE`vF`vF`vFavFmuFmuFnuFnuFnuFouFouFluGluGluGmuGmuGnuGbvGbvGbvGcvGgvGgvGgvGkvGhvHlvHlvHlvHmvIkwBhwDguBduDivCkvC)mr;YerYbrYarZgrZcsZisZjsYmsYetYjtYitZgtZbr[jt[jt\gt\os\js\cs\gr\br\br[js[js\cr]`r_ar^it^ct]`s<Acs;_et<@et@kt@cr@`rB`rCbrBjtB`tB,edGedZ*m`Zn`:C(n`Co`S,jf<KffKleLoeLdfM`gMggLdgLjgKbhKdhLghL`hMoeMghMdhOahOigOdgOagOefOleOoeMggMdgOmePmeQoePghPmgP`hRfhRdhSbhSjgSdgSbgSffSleSneRdfRfgRdgSahTfhTehUchUkgUegUcgUgfUmeUneTefTagTfgTigTahTfgTegUob;LlbI+`rI`r:[gt[os[is\hs]ms]it]lt]mt\gu[ku[av\`v]iu]hs^`v^`v_ju_fu_lt_jt_ns_hs_hs^lt^lt_js;@jsAhsA`vAju@iuBbvBavCkuCguCmtCktCosCisCjsBmsBntBmtCjuDcvDbvEhuFduFntEhtFlsFjsEksDnsDjtDotDfuDjuDotDntElsHksGhsGosFkuF`vGcvGhuH0c{L`{:[k|^c|^l{_o{_a|;@m|@g}:_d}_k}^c~^d~_g~_a~;@l{Ad~Ad~Bb~Bj}Bd}Bn|Bb|Bl{Bl{Ad}Ad}Bm{Cn{Dl{Dd~Dm}Ca~Ef~Ee~Fc~Fk}Fe}Fo|Fc|Fm{Fn{Ea|Ef}Ee}Fo|Hm|Gd~Hd~Hf~Hn{Hn{If~Ig~J`~Kh}Kg}Jl|K`|Ko{Jn{If}Ig}Jhf:[hf;IdwIgwL`h:[hg[fg[eg\jg\fh\mh\nh[`i[di[ni[mi\fi\eg]mi]mi^gi^ci^mh^gh^kg^eg^eg]mh]mh^gg_gg;@eg@mi@gi:_fi;AoiAniBdiC`iCnhBdhChgCfgBggAjgAohAnhBahEchCiiDiiDoiDggDigGdgGegFhgFdiFmiFliGeiG,gjLc{La{:]i|]e|]o{]m{^g|^c}^e}^g}]m}]a~]k~]i~^c~^n{_j~_j~;@`~Al}Af}@`}Ad|An{@n{:_f}_f};@o{Al{Cn{Bj~Bo}Ac~Ch~Dk~Da~Em}Eg}Da}Ee|Eo{Dl{Dg|Cd}Dg}D`~Fi~Fh~Ga~Gm}Gd}Ga}Ge|Gl{Gm{Fd|F`}Fe}Fl}F`~Fe}Fd}Gl{Hl}Hk~Hh~In}In{I`}Hb}I&ms=PavNmsPmqN0f};RbRhSiScSg}Sf~Rg~SgvSnuSluSfvRnwR`xSbxSowSfrRjtRjtSctSkrSfrSfrRosLosQgwLgwQjyRn{Rn{Sk{Sc{SnzSkzSoySjySjyRnzRnzSc{Lc{Qo~Lo~Qiq\kq\iq]lq^nq^`r_gr_mr<@cs@hsAnsAdtBmtBfuBouBhvCawCjwCfxCnxCjyCbzCizCd{Co{Bf|Bm|Bd}Bn}Ad~Ak~@a@g;_h_n^1``^a`]g`\e`\e`\g`Q0kqQiq\cm\ko\am^io^`m_ho_io<@fo@jm@am@`m;_cn<BanAkoAkoAjoBbmBoxEmxGoxEcyEcyEcyEgyEfyEfyEjyEjyEjyEiyEmyEmyElyElyElyEczDczDczDbzDbzDbzDazDmyDmyDlyDlyDlyDkyCkyCkyCkyCfyCfyCfyCbyCbyCbyCnxCnxCnxCjxCjxCfxCfxCgxCgxCcxCcxC`xD`xDlwDmwDmwDmwDnwDnwDnwDowDowDowDlwElwElwEaxEaxEaxEbxEfxEfxEfxEfxEkxEkxEoxEoxEoxEjy@kyAfw@gwAhxAjxA1gb;\cb\ma]la^ab^mb^`c^ac]kc\oc\ed]dd^mc^la_dd_ed<@nc@jc@ac@nb@bb@ma@la;_`c_ac<@naAnaBlaBddBncAmcCgdCfdDocDkcDbcDobDcbDnaDoaCabCccCbcDhbGjbE`dF`dFfdFnaF,nh;RjjR`kSakSkjSohSniRoiSoaSfaSdaSnaRfcRhcSjcSgcS+n}R,b`Rb`S+kSc~Sn}Sn}RgLgQ,obLobQbeRfgRfgScgSkfSffScfSgeSbeSbeRffRffSkfLkfQgjLgjQ+a}\c}\b}]d}^k}^m}_c~_e~<@o~@aAkA,a`Bn`BgaBlaCibCbcCncCfdCbeCjeCefClfCkgBbhBihBciAiiAcj@ej@oj;_ak_gk^hk^jk]ok\mk\mk\okQ+c}Qa}\kx\c{\ix^a{^hx_`{_a{<@nz@by@ix@hx;_ky<BiyAc{Ac{Ab{BjxB,gdEedGgdEkdEkdEkdEodEndEndEbeEbeEaeEeeEeeEeeEdeEdeEdeEkeDkeDjeDjeDjeDeeDeeDeeDdeDdeDdeDceCceCceCodCndCndCjdCjdCjdCfdCfdCbdCbdCbdCncCocCocCkcCkcChcDhcDdcDecDecDecDfcDfcDfcDgcDgcDdcEdcEdcEecEicEicEicEjcEncEncEncEcdEcdEcdEgdEgdEbe@ceAnb@obA`dAbdAom;\km\em]dm^im^en^hn^in]co\go\mo]lo^eo^dm_lo_mo<@fo@bo@in@fn@jm@em@dm;_hn_in<@fmAfmBdmBloBfoAeoCooCnoDgoDcoDjnDgnDkmDfmDgmCimCknCjnDfoEloFnoFdoG`oGjnFdnGhmGfmFdmFjmEfnEhnFboEfoEhnFjnF2k`=NobLk`N1g~Le~>Bn~A2jaAebBfbEebCi`Ch`Eb`E1n~Ed~Eg~Cm~CiCf~F2fbFgbHj`Fi`HhaLfbKfbJhaJ1l~Jf~Jf~Kl~L2``Lj`Kj`J``J1g~Mm~N2iaNgbM'en=PipNenPalN&lq>CerBauBhuCiuFhuDlsDosEesFerFoqEnqDdrDlrDjtIbuIhuIkuGauGerGoqGlqIfrIfsIdsIcuLiuLiuKbuJfrJmqKmqLgrLgsLmsLmsKfsJnqNdrO`uOjuN'`lCmlBioB`pCapF`pDdnDgnEmmFmlFclEblDllDdmDblIalGapGbpIenGdnIkoLapLapKjoJnlJalKalLolLomLenLenKnmJblNllOhoObpN7`s @ 0707070014230643171006440057030057030000011717320522627504100003000000014000post.src/tests/postgif1GIF87a@&��fD3UUU"3DDU"f""w""�3�33�3D�3D�3D�DU�DUwff������ݙD�f�UU"�����̻��DDD333""",@&��  �di�h��l�p,�tm�x��|����pH,�Ȥr�l:�ШtJ�Z�جv��z��xL.���z�n���|N�����~����������������������������������������������������������������������������������������������������������������������       
                   72884: 
������.P@0&�
                   72885:  �L="H� ���2j���G�B�h�†\�>t�� �ŋ>ʜI��M�"0���dB�(�t��C�(]ʴ�S����|@�ル�$y�gP%&t�P&���]˶m�& x�4*��b�z��ɯC>�-*����+^̘qQ�Ƕ�K�rݻx�j�I&` @��J�n�:1�p)W.h�Խ�~��A4��
                   72886: |��tq�n_]�A@s�"��k�du�y���a7�c�>@�    ��������'�=z,���?�n/�u��4&�yCo���6�p"�&z�       ߄�^x����S�D� �f�
                   72887: ��`p�����8ߌ4�h�5B������8`��H�J*��b�"eކ�E)�c�f_�@R;�dZCh�P���qM���l�9�z�]�\�&H��R@
                   72888: IAb�d}�-�&�ƹi�1&w_bt����^ꉞ_���s�2Ih��v��pYJ     a�� � �       &z����Z
                   72889: p֠lE�魰���}s���H?Y{&�#b�
                   72890: ֩���)�^��F+����6;\�Ԓ�R�����)V��Dwᨩ)��[��zk�����sCu��H7�9ڗ쬚J{-�,�O�m�݆��K�Kh���&�.p��&�1��~��bi!����$��@�"��&�b��l��O�<�k�|��+��-p63�q��̏)���:L�����3�!����ct5�\�Ty$�J`3+��U�w��9�%f�q��#�
                   72891: �5nZ�2�&�`�|��F������-r�pG�\Q�޽��!%�*���@D�:
p1��Ǿ�)�����jzE^��o[�1��۬y�d@pw���]�s��f���/GJ�� 0����%~f��觯��������UY>��o?�:��0X)�}������s�t�y\B�&��M|�A���G���-)�cB�5��i��n�<Й����P����0�a�~�Z�IwXA��#U`�g^ �J�p.%�
k‘D$���M�H�*Z�XԈ�HE�萇`���S%���hL���x�Epo.Ba�(�)        @����>���~�H���̈́���2�5:���x#%�r1�����q�Nz�[�bU�6:j�����HD�3Nw�l#$���N&���UH�KB>̄\@ �IL���'L�E�R~�A�XB�&��Ɂ�+��l�LAf��t�       I:����Lg:)�4`(Њ�i¼��*��bDd��0�$b���&�;�0&�|a!�        �Z�N\�'C'J�b��Ey�(�0�ᲊ~4d7*M��A&Nt���\v�&W�h?�G����8��p���'��T'D;같\R&��
                   72892: H��� ��r�K8��O"5�8�R(��z��`
k�\"����6-�G���^�S�Mm�@���R�U�      ��P܍�b
�`�����1�F,
8�"/�b8����3&q���0��#�},d_��Dz��M�jU�<��.j��b+�/5#�8�Iȥ�O'�dD��S���"�ՉM?[�*W�&)`0��K��Z�����t��y���J_�2����&��&�H���ݩ
�{>nj\�<�rQ�BR�3>d���ɣ���`JW�N��L��&��D�};c�� �̫����\�YP��f�[w�Ҹ�B,��y�ʉ٫خ����8α�w�=���/��'�{-�`����t�iM���f
                   72893: �,~��4���Ā=汘�L�2�����m�����x\mQ�Z{�%/�K�&�&�CV9�p�&�ߑ��
�x�[��3��ѐ63���^-�*C4��gh�#��]e�=׀@��G�v���wfT���M����ёε�=��ms�ʹ��$��`�r.(_Tk�ء�rA�M�a�3��T��Z�5D7�t���vM�r��ƪ��r��A�f?ۆV[Fu�$�.���0�o���.��d��#m��v�^�A�\�����Yn<ns[<���c�nA�fC�ƞ��-��;#,dp_�&�S��$\<���n��⾸��q���Fv��x�����H2#0y��o�����ˮ{=�Ḣĭ���wK���|~�p׸�C�;��Au/'8Jg:����A]�+aWn&���Z�n�ڊ4��|�f�s�3�}�r�k�-^����8>��^!V>�w���񪿼�=��j�:�;�w����ӟ�1�{���lAB�5��=��8�#��y|ệ�����m'x�6ۃ���ZdW��E�<�/��?N}��=6�����3��Pa>�E?��hs�3}h�"�W#�G�'�uiԀ�%,�C�t!oE�r��{�ׁhRv�����b}e�y       �!>��B�q�W,�6G�~h7�0R��'�,"�N�aGU_ Hx�G8E��B*�wL��&�X����~   |7"��$g��|0hn�GJaQ�68���!��#`�b�&7���<��~�'A3�K�o�8�w��������A����&�'�=x����Ma�gHn�Vs$�"pȅ�X7�8���a�(�,�6�`e��m�2l��x�g���{S�w��*�!��� �Q���md��tь�������=�U�#0ay�񋃱�X��a}��,y�^���@���#>�(���mX…\���o��a���}�؂�!?�xq���� n�3�x����r�������v
�U��t������+���h�\�&����+�(�8�W9�Q�!�:��<I�P��#W4I*()*ɒ�r��9E��\���.`lP��u�X���8����F�o�1 �&X�9�Wp�Ma=��p        �?��+0nƕ���`0�e�}g9��V���U�88)>LB��H��u�h��"��5�a�.�o��&�r@��)|��z$7t�q����JO$%��C��9*�o+9�     s��)�QSiԕ����ȋ��F�      Kr��Q���q���&{���P&�!#���Q_�8"9��Y��y���򸐋蕴Y�ٙ����鐍#���g�����F�YjDM�������i&�&�&�(u^���"��@ڡtÐ���pѠ�J/�a����N'�h\�u���g�eG����ٜ��Y�~�#
                   72894: p@)@&���,���I&�q�B�} �A�Cz&E�H*J�r&ФO�.��)��ia��9���>���H >�2#0&��x��A&���y�)�'H2�1&w���ǧ�b�k��Y�q�ɦ�c
                   72895: �(��r�$S&�y|���Kʨܑ%�:�٪�����lK
�B���#P��
                   72896: p�ʙ��"��u�Y�j@����ש�G �C!�&�&���)��ji-�����:��3�<Z�����ʙ�z��:�&���zy��;�j�n���i�
                   72897: ��y���oYR���<�*�ǃ)%�8�c��S��+�%0���H<:b�: ���9{c��@��a����u!i�v�t�F�к��({
�rӪ{2$+��˰
�@�;�^�~K���X�$�d�x���o7�(9K";�%�P|}H'Y&����#�&dy&�1|B&p�<{a�:�p��ڀ%е_�&a��c[�g��k+�
                   72898: �              � �����@ek��Q��&N��������&����ȸ��}�+�WK*���1&�{���@&�����&��A$����[&&�����(�; �[��[�}�j�'���Bڸ����&�۶������˻�k��+��[�X�       jG�+�{R��Z�O��K"�+���כ���&�[&��+*Yx��&�w���9���&���+鋿�%�Z�L��\������;�����W&�E�
                   72899: ��(,���&����"�,$,Z(��*��� p�G�X%��@�X8�p <��%l�A,��K�:
                   72900: s�i=�&P�Vl�M;,      Q��H|�`��Lw����z�3\�^�1hW      f-{����Z��m�.x%�9�g\0�w�#�ǂ<Ȅ�%��}L0l%��ȞB4��/.�l٧}��v��}��ɜ�ɞ���Wv1l0��������l&Ƀ�s,      �X����/l       ��w
                   72901: Sʵ��p�,8�4�pv\��t��������Μz&p�;��L�('��\#���t(ɜl>&��'�̄q��|Ν�z������LΧ�k���,r���T;��>��?�]Ǜ����β3�m1����a�]!5����+@����ч;���&�%��

�&-����3�&,��0�2=�/�)4}�3��)��:��>��@�B=�D]�F}�H����L���N��P�R=�J��V}�X��Z��\��^MӬ<�b=�d]�f}�g-���l��n��p���$�\�v}�x��z��|��{M�~؂=؄]؆}ؓ؈�،�؎�؏�ؐ=ٔ]ٖ}�����ٜ�ٞ�ג�٢=ڤ]�[�>�=�Ay����M�:��hbΚ&�6�ښ�ע��,Iɼ����ی�ٻ-��Vܿmi ��˭=����ס-���.:R*�M/��)s��ڍ+���� ۍ���*�<�ѽ������~=�w��̍��=���L���މ-�����Fzv�ߴm߿c�-������~���
�����>����ᜭ�u-������"������^�#������,�֬�,��4�����} ;���:�⁚���<.�v�.>�������L����N���}�*'�M�@��D|�M� M����&���."N���
�����v�f��D��
����-��\�7~�^���%�t�x��M�u.�M�Ϋ����x���=瀾s��Nڔ��N��5��l��<��)n�>��@D��3 �~���:n����뿾�W��j��)N�N�-���������m������������������]��~�]������N����>�
��~��~������n����ٕG����
                   72902: �����^��?�_���F�������� �k�0\�w�Z��Xʢ��.��0��*�,�1_�'o�3�)_3,��@��5��V��7o9ϵDO�1��8��2��M0-J��T/�=O!;0707070014230643201006440057030057030000011714570522627504100003100000000421post.src/tests/postplot1s��mtstarts at the lower left corner
                   72903: m�tshould start just above the upper left corner
                   72904: fsolid
                   72905: mddnd�&fdotted
                   72906: n�&�&p��fshortdashed
                   72907: c���p��flongdashed
                   72908: c���&fdotdashed
                   72909: a�     �       ����funknown
                   72910: l�&�&��mn�n��n�nm��ttop of the big circle
                   72911: 0707070014230735720407550057030057030000020015070522633100700002400000000000post.src/trofftable0707070014230732641006400057030057030000011777300522633100700004100000006043post.src/trofftable/trofftable.1.ds dF /usr/lib/font
                   72912: .ds dQ /usr/lib/postscript
                   72913: .TH TROFFTABLE 1 "DWB 3.2"
                   72914: .SH NAME
                   72915: .B trofftable
                   72916: \- output a PostScript program that builds a font width table
                   72917: .SH SYNOPSIS
                   72918: \*(mBtrofftable\f1
                   72919: .OP "" options []
                   72920: .OP "" shortname
                   72921: .OP "" longname []
                   72922: .SH DESCRIPTION
                   72923: .B trofftable
                   72924: writes a PostScript program on the standard output that builds a
                   72925: font width table or typesetter description file.
                   72926: The following
                   72927: .I options
                   72928: are understood:
                   72929: .TP 1.0i
                   72930: .OP \-t name
                   72931: Use
                   72932: .I name
                   72933: as the template for fonts not in the default set.
                   72934: Choose
                   72935: .MW R
                   72936: for proportionally spaced fonts and
                   72937: .MW CW
                   72938: for fixed width fonts.
                   72939: Try
                   72940: .MW ZD
                   72941: (ZapfDingbats) if the font has a non-standard
                   72942: character set.
                   72943: The default is
                   72944: .MR R .
                   72945: .TP 1.0i
                   72946: .OP \-C file
                   72947: Copy
                   72948: .I file
                   72949: into each PostScript table program;
                   72950: .I file
                   72951: must contain legitimate PostScript.
                   72952: .TP 1.0i
                   72953: .OP \-H hostdir
                   72954: Use
                   72955: .I hostdir
                   72956: as the host resident font directory.
                   72957: A file in
                   72958: .I hostdir
                   72959: that matches the name of the troff font is assumed to be a host
                   72960: resident font program and is included in the PostScript width
                   72961: table program.
                   72962: There is no default.
                   72963: .TP 1.0i
                   72964: .OP \-L file
                   72965: Use
                   72966: .I file
                   72967: as the PostScript prologue.
                   72968: .br
                   72969: The default is
                   72970: .MW \*(dQ/trofftable.ps
                   72971: .TP 1.0i
                   72972: .OP \-S file
                   72973: Use
                   72974: .I file
                   72975: as the shell library file.
                   72976: Overrides the choice made with the
                   72977: .OP \-T
                   72978: option.
                   72979: .TP 1.0i
                   72980: .OP \-T name
                   72981: Set the target device to
                   72982: .IR name .
                   72983: Device
                   72984: .I name
                   72985: means
                   72986: .br
                   72987: .MI \*(dF/dev name /shell.lib
                   72988: is the shell library file.
                   72989: There is no default.
                   72990: .PP
                   72991: One of
                   72992: .OP \-T
                   72993: or
                   72994: .OP \-S
                   72995: is required.
                   72996: If both are given
                   72997: .OP \-S
                   72998: wins.
                   72999: Either
                   73000: .OP \-H
                   73001: or
                   73002: .OP \-C
                   73003: can be used to include a host resident font.
                   73004: .PP
                   73005: The shell library file defines a collection of functions used to
                   73006: build troff tables.
                   73007: The default set of tables is the list of names returned by the
                   73008: .MW AllTables
                   73009: function.
                   73010: Changes to the default list can be made by updating the
                   73011: .MW BuiltinTables
                   73012: function.
                   73013: .PP
                   73014: .I Shortname
                   73015: is the name of the
                   73016: .B troff
                   73017: font and
                   73018: .I longname
                   73019: is the name of the PostScript font;
                   73020: .I longname
                   73021: can be omitted only if
                   73022: .I shortname
                   73023: is a default table name.
                   73024: PostScript table programs created by
                   73025: .B trofftable
                   73026: return data to the host computer using PostScript's
                   73027: .MW print
                   73028: operator.
                   73029: See
                   73030: .BR hardcopy (1)
                   73031: if you don't have access to the printer's serial port.
                   73032: .SH EXAMPLES
                   73033: Get the PostScript program that builds a width table for font
                   73034: .MR R :
                   73035: .EX
                   73036: trofftable -Tpost R >R.ps
                   73037: .EE
                   73038: If a font is not in the default set include the
                   73039: .B troff
                   73040: and PostScript font names:
                   73041: .EX
                   73042: trofftable -TLatin1 GL Garamond-Light >GL.ps
                   73043: .EE
                   73044: A font must be available on the printer when the table is built.
                   73045: Use
                   73046: .OP \-H
                   73047: or
                   73048: .OP \-C
                   73049: to include host resident fonts.
                   73050: .SH WARNINGS
                   73051: A width table will not build properly if the printer cannot access
                   73052: the PostScript font.
                   73053: .PP
                   73054: The
                   73055: .OP -TLatin1
                   73056: option only works on PostScript printers that support the full
                   73057: .SM ISO
                   73058: Latin-1 character set.
                   73059: The error message from older printers will likely indicate a missing
                   73060: .MW ISOLatin1Encoding
                   73061: array.
                   73062: .SH FILES
                   73063: .MW \*(dF/dev*/shell.lib
                   73064: .br
                   73065: .MW \*(dQ/dpost.ps
                   73066: .br
                   73067: .MW \*(dQ/trofftable.ps
                   73068: .SH SEE ALSO
                   73069: .BR dpost (1),
                   73070: .BR hardcopy (1),
                   73071: .BR postio (1),
                   73072: .BR troff (1),
                   73073: .BR buildtables (1),
                   73074: .BR font (5)
                   73075: 0707070014230735741006440057030057030000010015700522627504200004200000007136post.src/trofftable/trofftable.ps%
                   73076: % Prologue for building troff width tables. The gsave/grestore pairs are
                   73077: % for hardcopy.
                   73078: %
                   73079: 
                   73080: /slowdown 25 def
                   73081: /flagduplicates false def
                   73082: 
                   73083: /ascenderheight -1 def
                   73084: /descenderdepth 0 def
                   73085: /octalescapes 256 def
                   73086: /startcomments 256 def
                   73087: /currentfontdict null def
                   73088: /scratchstring 512 string def
                   73089: 
                   73090: /Print {
                   73091:        scratchstring cvs print flush
                   73092:        slowdown {1 pop} repeat
                   73093: } def
                   73094: 
                   73095: /ReEncode {    % vector fontname ReEncode -
                   73096:        dup
                   73097:        findfont dup length dict begin
                   73098:                {1 index /FID ne {def}{pop pop} ifelse} forall
                   73099:                /Encoding 3 -1 roll def
                   73100:                currentdict
                   73101:        end
                   73102:        definefont pop
                   73103: } bind def
                   73104: 
                   73105: /SelectFont {  % fontname SelectFont -
                   73106:        findfont
                   73107:                dup /PaintType get 0 eq {
                   73108:                        /scaling 1 def
                   73109:                        unitwidth resolution 72.0 div mul
                   73110:                }{
                   73111:                        /scaling resolution 72 div def
                   73112:                        unitwidth
                   73113:                } ifelse 
                   73114:        scalefont
                   73115:        /currentfontdict exch def
                   73116: } def
                   73117: 
                   73118: /ChangeMetrics {DpostPrologue begin addmetrics end} def
                   73119: 
                   73120: /NamedInPrologue {
                   73121:        dup
                   73122:        DpostPrologue exch known {
                   73123:                DpostPrologue exch get type /nametype eq {
                   73124:                        (named in prologue\n) Print
                   73125:                } if
                   73126:        }{pop} ifelse
                   73127: } def
                   73128: 
                   73129: /SetAscender {
                   73130:        /str exch def
                   73131: 
                   73132:        gsave
                   73133:                currentfontdict setfont
                   73134:                newpath
                   73135:                0 0 moveto
                   73136:                str false charpath flattenpath pathbbox
                   73137:                /descenderdepth 4 -1 roll .5 mul def
                   73138:                exch pop exch pop
                   73139: 
                   73140:                newpath
                   73141:                0 0 moveto
                   73142:                str 0 1 getinterval false charpath flattenpath pathbbox
                   73143:                4 1 roll pop pop pop
                   73144:                dup 3 1 roll sub .25 mul add
                   73145:                /ascenderheight exch def
                   73146:        grestore
                   73147: } def
                   73148: 
                   73149: /GetAscender {
                   73150:        ascenderheight descenderdepth ge {
                   73151:                gsave
                   73152:                        currentfontdict setfont
                   73153:                        newpath
                   73154:                        0 0 moveto
                   73155:                        ( ) dup 0 4 -1 roll put
                   73156:                        false charpath flattenpath pathbbox
                   73157:                        exch pop 3 -1 roll pop
                   73158:                        ascenderheight gt {2}{0} ifelse
                   73159:                        exch descenderdepth lt {1}{0} ifelse
                   73160:                        or
                   73161:                grestore
                   73162:        }{0} ifelse
                   73163: } def
                   73164: 
                   73165: /GetWidth {
                   73166:        gsave
                   73167:                currentfontdict setfont
                   73168:                ( ) dup 0 4 -1 roll put
                   73169:                stringwidth pop scaling mul round cvi
                   73170:        grestore
                   73171: } def
                   73172: 
                   73173: /GetCode {
                   73174:        256 3 1 roll            % last unprintable match
                   73175:        0 3 -1 roll {
                   73176:                2 index eq {
                   73177:                        dup 127 and 32 ge {exit} if
                   73178:                        3 -1 roll pop
                   73179:                        dup 3 1 roll
                   73180:                } if
                   73181:                1 add
                   73182:        } forall
                   73183:        exch pop
                   73184:        dup 255 gt {pop}{exch pop} ifelse
                   73185: } def
                   73186: 
                   73187: /BuildFontCharset {
                   73188:        0 2 charset length 2 sub {
                   73189:                /i exch def
                   73190:                /chcode -1 def
                   73191:                /chname null def
                   73192:                /key charset i get def
                   73193:                /val charset i 1 add get def
                   73194: 
                   73195:                val type /integertype eq {
                   73196:                        /chcode val def
                   73197:                        /chname currentfontdict /Encoding get chcode get def
                   73198:                } if
                   73199: 
                   73200:                val type /nametype eq {
                   73201:                        /chname val def
                   73202:                        /chcode currentfontdict /Encoding get chname GetCode def
                   73203:                } if
                   73204: 
                   73205:                val type /stringtype eq {/chcode 0 def} if
                   73206: 
                   73207:                chcode 0 lt chcode 255 gt or {
                   73208:                        chcode 0 lt {(syntaxerror: )}{(undefinedname: )} ifelse
                   73209:                        Print key Print (\t) Print val Print (\n) Print
                   73210:                        quit
                   73211:                } if
                   73212: 
                   73213:                val type /stringtype eq {
                   73214:                        key Print
                   73215:                        (\t) Print val Print
                   73216:                        (\n) Print
                   73217:                }{
                   73218:                        chcode octalescapes ge key (---) eq and {
                   73219:                                (\\0) Print chcode 8 (   ) cvrs Print
                   73220:                        }{key Print} ifelse
                   73221:                        (\t) Print chcode GetWidth Print
                   73222:                        (\t) Print chcode GetAscender Print
                   73223:                        (\t) Print chcode Print
                   73224:                        chcode startcomments ge {
                   73225:                                (\t# ) Print chname Print
                   73226:                        } if
                   73227:                        (\n) Print
                   73228:                        chcode octalescapes ge (---) key ne and {
                   73229:                                key (\\0) anchorsearch not {
                   73230:                                        pop
                   73231:                                        (\\0) Print chcode 8 (   ) cvrs Print
                   73232:                                        (\t"\n) Print
                   73233:                                }{pop pop} ifelse
                   73234:                        } if
                   73235:                } ifelse
                   73236:        } for
                   73237: } def
                   73238: 
                   73239: /BuildDescCharset {
                   73240:        /DescDict 512 dict def
                   73241:        /Characters 0 def
                   73242: 
                   73243:        0 1 charset length 1 sub {
                   73244:                /i exch def
                   73245:                /key charset i get def
                   73246: 
                   73247:                key length 2 eq {
                   73248:                        DescDict key cvn known {
                   73249:                                flagduplicates {        % for debugging
                   73250:                                        (<<<duplicated character: ) Print
                   73251:                                        key Print
                   73252:                                        (>>>\n) Print
                   73253:                                } if
                   73254:                        }{
                   73255:                                DescDict key cvn 1 put
                   73256:                                key Print
                   73257:                                /Characters Characters 1 add def
                   73258:                                Characters 20 mod 0 eq {(\n)}{( )} ifelse Print
                   73259:                        } ifelse
                   73260:                } if
                   73261:        } for
                   73262: } def
                   73263: 
                   73264: 0707070014230735751006440057030057030000010016050522627504200004200000005052post.src/trofftable/trofftable.sh#
                   73265: # Writes a PostScript program on standard output that builds a width
                   73266: # table or typesetter description file. The program uses PostScript's
                   73267: # print procedure, which means the table comes back on the printer's
                   73268: # serial port. Try hardcopy if you don't have access to the port.
                   73269: #
                   73270: 
                   73271: POSTBIN=/usr/lbin/postscript
                   73272: POSTLIB=/usr/lib/postscript
                   73273: FONTDIR=/usr/lib/font
                   73274: 
                   73275: PROLOGUE=$POSTLIB/trofftable.ps
                   73276: DPOSTPROLOGUE=$POSTLIB/dpost.ps
                   73277: 
                   73278: COPYFILE=
                   73279: HOSTFONTDIR=
                   73280: DEVICE=
                   73281: LIBRARY=
                   73282: TEMPLATE=
                   73283: 
                   73284: SLOWDOWN=25
                   73285: STARTCOMMENTS=256
                   73286: 
                   73287: NONCONFORMING="%!PS"
                   73288: ENDPROLOG="%%EndProlog"
                   73289: BEGINSETUP="%%BeginSetup"
                   73290: ENDSETUP="%%EndSetup"
                   73291: TRAILER="%%Trailer"
                   73292: 
                   73293: while [ -n "$1" ]; do
                   73294:     case $1 in
                   73295:        -C)  shift; COPYFILE="$COPYFILE $1";;
                   73296:        -C*) COPYFILE="$COPYFILE `echo $1 | sed s/-C//`";;
                   73297: 
                   73298:        -F)  shift; FONTDIR=$1;;
                   73299:        -F*) FONTDIR=`echo $1 | sed s/-F//`;;
                   73300: 
                   73301:        -H)  shift; HOSTFONTDIR=$1;;
                   73302:        -H*) HOSTFONTDIR=`echo $1 | sed s/-H//`;;
                   73303: 
                   73304:        -L)  shift; PROLOGUE=$1;;
                   73305:        -L*) PROLOGUE=`echo $1 | sed s/-L//`;;
                   73306: 
                   73307:        -S)  shift; LIBRARY=$1;;
                   73308:        -S*) LIBRARY=`echo $1 | sed s/-S//`;;
                   73309: 
                   73310:        -T)  shift; DEVICE=$1;;
                   73311:        -T*) DEVICE=`echo $1 | sed s/-T//`;;
                   73312: 
                   73313:        -c)  shift; STARTCOMMENTS=$1;;
                   73314:        -c*) STARTCOMMENTS=`echo $1 | sed s/-c//`;;
                   73315: 
                   73316:        -o)  shift; OCTALESCAPES=$1;;           # only for Latin1 tables
                   73317:        -o*) OCTALESCAPES=`echo $1 | sed s/-o//`;;
                   73318: 
                   73319:        -s)  shift; SLOWDOWN=$1;;
                   73320:        -s*) SLOWDOWN=`echo $1 | sed s/-s//`;;
                   73321: 
                   73322:        -t)  shift; TEMPLATE=$1;;
                   73323:        -t*) TEMPLATE=`echo $1 | sed s/-t//`;;
                   73324: 
                   73325:        -*)  echo "$0: illegal option $1" >&2; exit 1;;
                   73326: 
                   73327:        *)   break;;
                   73328:     esac
                   73329:     shift
                   73330: done
                   73331: 
                   73332: if [ ! "$DEVICE" -a ! "$LIBRARY" ]; then
                   73333:     echo "$0: no device or shell library" >&2
                   73334:     exit 1
                   73335: fi
                   73336: 
                   73337: if [ $# -ne 1 -a $# -ne 2 ]; then
                   73338:     echo "$0: bad argument count" >&2
                   73339:     exit 1
                   73340: fi
                   73341: 
                   73342: if [ -d "$HOSTFONTDIR" -a -f "$HOSTFONTDIR/$1" ]; then
                   73343:     COPYFILE="$COPYFILE $HOSTFONTDIR/$1"
                   73344: fi
                   73345: 
                   73346: #
                   73347: # Include the shell library and get the command used to build the table.
                   73348: # Make awk call a separate library function??
                   73349: #
                   73350: 
                   73351: . ${LIBRARY:-${FONTDIR}/dev${DEVICE}/shell.lib}
                   73352: 
                   73353: if [ $# -eq 1 ]
                   73354:     then TEMPLATE=$1
                   73355:     else TEMPLATE=${TEMPLATE:-R}
                   73356: fi
                   73357: 
                   73358: CMD=`BuiltinTables | awk '$2 == template"" {
                   73359:        if ( pname == "" )
                   73360:                pname = $3
                   73361:        printf "%s %s %s", $1, tname, pname
                   73362:        exit 0
                   73363: }' template="$TEMPLATE" tname="$1" pname="$2"`
                   73364: 
                   73365: if [ ! "$CMD" ]; then
                   73366:     echo "$0: $TEMPLATE not found" >&2
                   73367:     exit 1
                   73368: fi
                   73369: 
                   73370: #
                   73371: # Build the PostScript font table program.
                   73372: #
                   73373: 
                   73374: echo $NONCONFORMING
                   73375: cat $PROLOGUE
                   73376: echo "/DpostPrologue 100 dict dup begin"
                   73377: cat $DPOSTPROLOGUE
                   73378: echo "end def"
                   73379: echo $ENDPROLOG
                   73380: 
                   73381: echo $BEGINSETUP
                   73382: cat ${COPYFILE:-/dev/null}
                   73383: echo "/slowdown $SLOWDOWN def"
                   73384: echo "/startcomments $STARTCOMMENTS def"
                   73385: echo $ENDSETUP
                   73386: 
                   73387: $CMD
                   73388: 
                   73389: echo $TRAILER
                   73390: 
                   73391: 0707070014230733371006400057030057030000010015740522633100600004200000003474post.src/trofftable/trofftable.mkMAKE=/bin/make
                   73392: MAKEFILE=trofftable.mk
                   73393: 
                   73394: SYSTEM=V9
                   73395: VERSION=3.3.2
                   73396: 
                   73397: GROUP=bin
                   73398: OWNER=bin
                   73399: 
                   73400: FONTDIR=/usr/lib/font
                   73401: POSTBIN=/usr/bin/postscript
                   73402: POSTLIB=/usr/lib/postscript
                   73403: MAN1DIR=/tmp
                   73404: 
                   73405: all : trofftable
                   73406: 
                   73407: install : all
                   73408:        @if [ ! -d $(POSTBIN) ]; then \
                   73409:            mkdir $(POSTBIN); \
                   73410:            chmod 755 $(POSTBIN); \
                   73411:            chgrp $(GROUP) $(POSTBIN); \
                   73412:            chown $(OWNER) $(POSTBIN); \
                   73413:        fi
                   73414:        @if [ ! -d "$(POSTLIB)" ]; then \
                   73415:            mkdir $(POSTLIB); \
                   73416:            chmod 755 $(POSTLIB); \
                   73417:            chgrp $(GROUP) $(POSTLIB); \
                   73418:            chown $(OWNER) $(POSTLIB); \
                   73419:        fi
                   73420:        cp trofftable $(POSTBIN)/trofftable
                   73421:        @chmod 755 $(POSTBIN)/trofftable
                   73422:        @chgrp $(GROUP) $(POSTBIN)/trofftable
                   73423:        @chown $(OWNER) $(POSTBIN)/trofftable
                   73424:        cp trofftable.ps $(POSTLIB)/trofftable.ps
                   73425:        @chmod 644 $(POSTLIB)/trofftable.ps
                   73426:        @chgrp $(GROUP) $(POSTLIB)/trofftable.ps
                   73427:        @chown $(OWNER) $(POSTLIB)/trofftable.ps
                   73428:        cp trofftable.1 $(MAN1DIR)/trofftable.1
                   73429:        @chmod 644 $(MAN1DIR)/trofftable.1
                   73430:        @chgrp $(GROUP) $(MAN1DIR)/trofftable.1
                   73431:        @chown $(OWNER) $(MAN1DIR)/trofftable.1
                   73432: 
                   73433: clean :
                   73434: 
                   73435: clobber : clean
                   73436:        rm -f trofftable
                   73437: 
                   73438: trofftable : trofftable.sh
                   73439:        sed \
                   73440:            -e "s'^FONTDIR=.*'FONTDIR=$(FONTDIR)'" \
                   73441:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
                   73442:            -e "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" \
                   73443:        trofftable.sh >trofftable
                   73444:        @chmod 755 trofftable
                   73445: 
                   73446: changes :
                   73447:        @trap "" 1 2 3 15; \
                   73448:        sed \
                   73449:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
                   73450:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
                   73451:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
                   73452:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
                   73453:            -e "s'^FONTDIR=.*'FONTDIR=$(FONTDIR)'" \
                   73454:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
                   73455:            -e "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" \
                   73456:            -e "s'^MAN1DIR=.*'MAN1DIR=$(MAN1DIR)'" \
                   73457:        $(MAKEFILE) >XXX.mk; \
                   73458:        mv XXX.mk $(MAKEFILE); \
                   73459:        sed \
                   73460:            -e "s'^.ds dF.*'.ds dF $(FONTDIR)'" \
                   73461:            -e "s'^.ds dQ.*'.ds dQ $(POSTLIB)'" \
                   73462:        trofftable.1 >XXX.1; \
                   73463:        mv XXX.1 trofftable.1
                   73464: 
                   73465: 0707070014231031441006440057030057030000010307200522627504200002000000014711post.src/READMEStuff appears to work, but it's obviously not well tested. I fully
                   73466: expect several iterations before things are correct!! Make sure you
                   73467: can back this out quickly.
                   73468: 
                   73469: This code supports UTF encoding. Directory dpost.utf is a version that
                   73470: reads UTF encoded files. Directory dpost is DWB 3.3 source and should be
                   73471: close to what you're currently using. Main source code changes were in
                   73472: dpost.utf (files font.h, font.c, and dpost.c). Select either dpost or
                   73473: dpost.utf in TARGETS in postscript.mk. Both build and install a program
                   73474: called dpost!!
                   73475: 
                   73476: dpost.utf is more general and includes code that lets it read either
                   73477: format. Only catch is troff must tell it (with x E UTF) that the file
                   73478: is UTF and troff currently doesn't output encoding info, so you're
                   73479: stuck with two post-processors!
                   73480: 
                   73481: Added common/rune.h and common/rune.c so code can be compiled elsewere.
                   73482: Both files are only used by dpost. Remove RUNELIB in commmon/rune.h if
                   73483: fullrune(), chartorune(), and runetochar() are available on your system.
                   73484: You will also need to set READING in common/gen.h. It controls how dpost
                   73485: (from dpost.utf) reads troff output. It should be UTFENCODING on Plan 9
                   73486: and ONEBYTE elsewhere. If troff includes encoding hint (x E UTF) then
                   73487: READING selects the default which sould be ONEBYTE.
                   73488: 
                   73489: Leave WRITING (in common/gen.h) set to ONEBYTE. It only controls dpost
                   73490: output and dpost (right now) does not work 100% with UTF.enc. Fix should
                   73491: be easy, but I don't have time now.
                   73492: 
                   73493: Other translators passed bytes through so only needed slightly modified
                   73494: proglogues and a new encoding scheme (psencoding/UTF.enc). It works for
                   73495: Latin1, but still needs a bit more attention. Prologue changes were easy
                   73496: and only involved adding lines like,
                   73497: 
                   73498:        /show {show} bind def
                   73499:        /stringwidth {stringwidth} bind def
                   73500: 
                   73501: Guarantees text procedures used in prologues aren't operators and can be
                   73502: successfully redefined in UTF.enc. Unbinding means a small but probably
                   73503: not noticeable speed penalty. You may not want to include those changes
                   73504: on other system.
                   73505: 
                   73506: -------------
                   73507: Major Changes
                   73508: -------------
                   73509: 
                   73510: See the VERSION file.
                   73511: 
                   73512: -------------------
                   73513: Tuning The Makefile
                   73514: -------------------
                   73515: 
                   73516: Source files, man pages, and low level makefiles can all be updated
                   73517: to reflect settings in postscript.mk in one simple step (described
                   73518: later). In most cases you only need to edit file postscript.mk.
                   73519: 
                   73520: First save a copy of file postscript.mk. Then adjust the following
                   73521: definitions in file postscript.mk:
                   73522: 
                   73523:   SYSTEM    best match for your version of Unix. Current choices for
                   73524:            SYSTEM are:
                   73525: 
                   73526:                        SYSV    - System V
                   73527:                        V9      - Ninth Edition
                   73528:                        BSD4_2  - Berkeley (eg. Sun)
                   73529: 
                   73530:            Controls conditional compilation in a few places.
                   73531: 
                   73532:   GROUP            group assigned to all installed files
                   73533: 
                   73534:   OWNER            owner of everything that's installed
                   73535: 
                   73536:   BINDIR    dpost and picpack go here. All other programs go in POSTBIN.
                   73537:            BINDIR must already exist - it will not be created during an
                   73538:            install.
                   73539: 
                   73540:   HOSTDIR   hostresident font directory for PostScript printers. Only
                   73541:            used in the font download program.
                   73542: 
                   73543:   FONTDIR   width table directory - for troff and most postprocessors
                   73544: 
                   73545:   MAN1DIR   command manpages. A command and its manpage are installed
                   73546:            together - there's no easy way to avoid it. Setting MAN1DIR
                   73547:            to an existing temporary directory (e.g. /tmp) means an
                   73548:            install will work but manpages won't go anywhere permanent.
                   73549:            MAN1DIR must already exist - it will not be created during
                   73550:            an install.
                   73551: 
                   73552:   POSTBIN   where most PostScript support programs go. dpost and picpack
                   73553:            the exceptions.
                   73554: 
                   73555:   POSTLIB   prologues and miscellaneous PostScript files. Primarily for
                   73556:            the programs that live in POSTBIN.
                   73557: 
                   73558:   CFLGS            common compiler options - used to build CFLAGS in the low
                   73559:            level makefiles. CLFGS and LDFLGS are best set on the make
                   73560:            command line.
                   73561: 
                   73562:   LDFLGS    common link editor options - used to build LDFLAGS in the
                   73563:            low level makefiles. LDFLGS and CFLGS are best set on the
                   73564:            make command line.
                   73565: 
                   73566:   DKHOST    set it to TRUE to compile the DKHOST Datakit support code
                   73567:            in postio. Temporarily resets SYSTEM to SYSV if DKHOST is
                   73568:            TRUE and SYSTEM is BSD4_2. Ignored if SYSTEM is not SYSV
                   73569:            or BSD4_2.
                   73570: 
                   73571:   DKSTREAMS enables streams based DKHOST support in postio when DKHOST
                   73572:            is TRUE and SYSTEM is SYSV or BSD4_2. Choices are TRUE,
                   73573:            FALSE, or a stream module name (e.g. dknetty or dkty). TRUE
                   73574:            selects dknetty. Newer systems may expect dkty.
                   73575: 
                   73576:   ROUNDPAGE must only be set to TRUE or FALSE. TRUE means PostScript
                   73577:            translators include code that maps clipping path dimensions
                   73578:            into known paper sizes.
                   73579: 
                   73580:   TARGETS   the default list of what's built by make. Each target must
                   73581:            be the name of a source directory. A target that names a
                   73582:            non-existent source directory is ignored. Setting TARGETS
                   73583:            on the make command line overrides the default list.
                   73584: 
                   73585: -------------------
                   73586: Updating The Source
                   73587: -------------------
                   73588: 
                   73589: Whenever file postscript.mk changes you should update source files,
                   73590: man pages, and low level makefiles by typing,
                   73591: 
                   73592:        make -f postscript.mk changes
                   73593: 
                   73594: ------------------------
                   73595: More System Dependencies
                   73596: ------------------------
                   73597: 
                   73598: The package has been compiled and tested on System V and Ninth Edition
                   73599: Unix Systems and on Sun workstations. Most differences are handled via
                   73600: the SYSTEM definition in postscript.mk. Problems that remain are:
                   73601: 
                   73602:   SYSV - System V
                   73603:     Use the native compiler if you're on an internal System V UTS
                   73604:     machine.
                   73605: 
                   73606:   V9 - Ninth or Tenth Edition
                   73607:     chown is in /etc and chgrp no longer exists - it's been folded into
                   73608:     the chown command. You may be forced to build a simple chgrp shell
                   73609:     script (put it in your bin) that calls chown. If you're not superuser
                   73610:     set OWNER to your login name and GROUP to your group id.
                   73611: 
                   73612:   BSD4_2 - Sun Workstations
                   73613:     Use the Bourne shell. chown is should be in /usr/etc. Add /usr/etc
                   73614:     to your PATH and export PATH. If you're not superuser set OWNER to
                   73615:     your login name and GROUP to your group id.
                   73616: 
                   73617: ----------------------
                   73618: Installing The Package
                   73619: ----------------------
                   73620: 
                   73621: To build (but not install) the default package (i.e. everything named by
                   73622: TARGETS in postscript.mk) type,
                   73623: 
                   73624:        make -f postscript.mk all
                   73625: 
                   73626: To build and install the package type,
                   73627: 
                   73628:        make -f postscript.mk all install
                   73629: 
                   73630: After the package is installed use,
                   73631: 
                   73632:        make -f postscript.mk clobber
                   73633: 
                   73634: to delete binary files and compiled programs from the source directories.
                   73635: 
                   73636: To select part of the package define TARGETS on the command line. For
                   73637: example,
                   73638: 
                   73639:        make -f postscript.mk TARGETS="dpost devpost" all install
                   73640: 
                   73641: builds and installs dpost and the PostScript font tables. Quotes hide
                   73642: white space from the shell.
                   73643: 
                   73644: 0707070014231031451006440057030057030000010307400522627504200002100000044463post.src/VERSION------------------------
                   73645: Version 3.3.2   7/7/92
                   73646: ------------------------
                   73647: 
                   73648:  1: Added UTF support for Plan 9. Only signigficant source code changes were
                   73649:     in dpost.utf (font.h, font.c, dpost.c). Added common/rune.[hc] so code
                   73650:     can be compiled elsewere. Remove RUNELIB in commmon/rune.h if fullrune(),
                   73651:     chartorune(), and runetochar() are available on your system. Original
                   73652:     DWB 3.3 dpost source is in directory dpost. You should select dpost or
                   73653:     dpost.utf in postscript.mk. Both compile and install a program called
                   73654:     dpost so don't pick both!
                   73655: 
                   73656:  2: dpost can read old or UTF troff output. Default is whatever is assigned
                   73657:     to READING (file common/gen.h). You get one or the other, unless troff
                   73658:     tells dpost what encoding to use (currently x E UTF).
                   73659: 
                   73660:  3: Most other translators passed bytes through and so only needed slightly
                   73661:     modified proglogues and a new encoding scheme (psencoding/UTF.enc). It
                   73662:     works for Latin1, but still needs a bit more attention. Prologue changes
                   73663:     were easy and only involved adding lines like,
                   73664: 
                   73665:        /show {show} bind def
                   73666:        /stringwidth {stringwidth} bind def
                   73667: 
                   73668:     Guarantees text procedures used in prologues aren't operators and can be
                   73669:     successfully redefined in UTF.enc. Unbinding means a small but probably
                   73670:     not noticeable speed penalty. You may not want to include those changes
                   73671:     on other system.
                   73672: 
                   73673:  4: Operator redefinitions means dpost should work in it's own dictionary
                   73674:     (rather than userdict). Not implemented yet, but should be easy. Only
                   73675:     potential problem is with picture inclusion when dpost reads UTF.enc.
                   73676: 
                   73677: ------------------------
                   73678: Version 3.3.2   5/15/92
                   73679: ------------------------
                   73680: 
                   73681:  1: postio now outputs all unrecognized status reports - primarly for spooler
                   73682:     accounting purposes.
                   73683: 
                   73684:  2: The makefiles also enable the selection of alternate stream module names
                   73685:     for streams based DKHOST support in postio.
                   73686: 
                   73687:  3: dpost now assumes the optional fifth token in a font mounting command
                   73688:     (e.g. x font 2 R /usr/me/font/R) is the full pathname of the font. troff
                   73689:     outputs the pathname when a .fp request contains a third argument that
                   73690:     begins with a / as in .fp 1 R /usr/me/font/R.
                   73691: 
                   73692:  4: By request Latin1's - character has been changed from minus to the smaller
                   73693:     hyphen character. Added \(dq and \(bs (for " and \ characters) to devpost
                   73694:     and devLatin1 tables. Also added \(!! and \(?? to devpost tables.
                   73695: 
                   73696:  5: Helvetica-Light and Helvetica-LightOblique tables are included as HL and
                   73697:     HK in devpost and devLatin1, even though fonts aren't generally available.
                   73698:     Also copy H to HM during an install of devpost and devLatin1 tables.
                   73699: 
                   73700:  6: LH and LV are horizontal and vertical AT&T logos from Matthijs Melchior
                   73701:     with slight adjustments to the scaling of "AT&T". Also adjusted LV so globe
                   73702:     sits on the baseline.
                   73703: 
                   73704:  7: Included L1 and LA outlines in devpost and devLatin1. Adjusted LA scaling
                   73705:     so size of "AT&T" matches what's in LH and LV. Original PostScript came
                   73706:     from Matthijs Melchior.
                   73707: 
                   73708:  8: Included the "symmetric clippath" version of roundpage.ps as Nroundpage.ps
                   73709:     in directory postscript/psfiles. Move it to roundpage.ps if you want it to
                   73710:     be the default.
                   73711: 
                   73712:  9: Added a few lines of code to dpost for handling current implementation of
                   73713:     the portrait/landscape mode macros.
                   73714: 
                   73715: 10: The man page for download now documents the -r option and notes that -p
                   73716:     is for Unix 4.0 lp.
                   73717: 
                   73718: ------------------------
                   73719: Version 3.3.1   4/30/91
                   73720: ------------------------
                   73721: 
                   73722:  1: buildtables stuff has been cleaned up and is now a user level command.
                   73723:     Uses shell.lib files that are installed with font tables. The devpost
                   73724:     tables were built on a version 47.0 PS-810. The devLatin1 tables were
                   73725:     built on a version 51.7 PS-820.
                   73726: 
                   73727:  2: The devLatin1 tables provide support for the ISO Latin1 alphabet on
                   73728:     PostScript printers.
                   73729: 
                   73730:  3: All translators support different text font encoding schemes using the
                   73731:     -E option and *.enc files installed in POSTLIB. The ISO Latin 1 alphabet
                   73732:     is supported with file /usr/lib/postscript/Latin1.enc.
                   73733: 
                   73734:  4: printfont prints a table of the available (encoded) characters in one
                   73735:     or more PostScript fonts. It also understands the -E option.
                   73736: 
                   73737:  5: grabit and hardcopy are two new programs that may be of interest to the
                   73738:     more serious PostScript programmer. grabit resembles ==, but produces
                   73739:     output that's usally easier to read. hardcopy redirects output from
                   73740:     PostScript file output operators (or procedures) to paper. It's useful
                   73741:     if you don't have direct access to a printer.
                   73742: 
                   73743:  6: Prologues and programs are stored together. Other common PostScript files
                   73744:     are now in the psfiles directory.
                   73745: 
                   73746: ------------------------
                   73747: Verions 3.3    4/16/90
                   73748: ------------------------
                   73749: 
                   73750:  1: The package is now included in DWB. Version numbers are a bit misleading.
                   73751:     The one in postscript.mk refers to the DWB package.
                   73752: 
                   73753:  2: dpost (and troff) now read ASCII font tables. makedev and the old binary
                   73754:     format are gone.
                   73755: 
                   73756:  3: The devpost directory came directly from the DWB package. The font tables
                   73757:     originally distributed with this package are in directory devopost. They
                   73758:     are not installed. If possible we recommend you use the devpost tables.
                   73759:     The old tables can be installed by adding devopost to the TARGETS list in
                   73760:     file postscript.mk.
                   73761: 
                   73762:  4: dpost recognizes two new fields in font tables. Entries for the full
                   73763:     PostScript font look like,
                   73764: 
                   73765:                fontname Times-Roman
                   73766: 
                   73767:     The fontname field is helps manage host resident fonts, the DocumentFonts
                   73768:     comment, and is used to define font name abbreviations like the ones in
                   73769:     dpost.ps. A font table entry that looks like,
                   73770: 
                   73771:                named in prologue
                   73772: 
                   73773:     disables the runtime abbreviation for the font - dpost assumes it's already
                   73774:     in the prologue.
                   73775: 
                   73776:  5: Extra font tables included in DWB 3.0's devpost font collection are in
                   73777:     directory devpost.add. They included here, but should probably not be
                   73778:     used.
                   73779: 
                   73780:  6: Bracket building has been fixed and tested on a wide range of PostScript
                   73781:     printers. It will likely still not work on many clones. Real problem
                   73782:     appears to be with Adobe's braceleftbt character.
                   73783: 
                   73784:  7: Most of the special tuning code for device emulation has been removed.
                   73785:     Emulation still works, but there may be cases where it's not as good as
                   73786:     earlier versions.
                   73787: 
                   73788:  8: Several problems with color and reverse video printing have been fixed.
                   73789: 
                   73790:  9: buildtables directory has been cleanup up. The template files in directory
                   73791:     buildtables/devpost.data were used to build the devpost tables.
                   73792: 
                   73793: 10: postplot and download are two new programs. postplot is for the System V
                   73794:     plot package only. Both were written for the Unix 4.0 lp package.
                   73795: 
                   73796: 11: postgif is also relatively new - it came from Chi Choy.
                   73797: 
                   73798: 12: The translators now rotate clockwise when printing in landscape mode. If
                   73799:     you want the old behavior set ROTATION to -1 in postscript.mk.
                   73800: 
                   73801: 13: forms.ps has been cleaned up some. Better behavior when you print 2
                   73802:     landscape pages on one sheet.
                   73803: 
                   73804: 14: Handling of Datakit code for System V has been changed some. Makefiles
                   73805:     now expect to find libdk.a and dk.h in standard places (e.g /usr/lib and
                   73806:     /usr/include). Set DKHOST to TRUE in postscript.mk to get Datakit support
                   73807:     on System V.
                   73808: 
                   73809:     If you're stuck and need to have things behave as they did in the past
                   73810:     take a look at file postio/postio.mk. Define DKHOSTDIR and uncomment
                   73811:     three lines and the behavior should be close to what it was.
                   73812: 
                   73813: 15: Picture inclusion and color macros are gone. They're included in the DWB
                   73814:     package, and not here.
                   73815: 
                   73816: ------------------------
                   73817: Version 3.2    11/27/89
                   73818: ------------------------
                   73819: 
                   73820:  1: Implemented height and slant requests in dpost.
                   73821: 
                   73822:  2: Modified the behavior of all translators so save objects are no longer left
                   73823:     on the stack. The original implementation was a mistake and occasionally
                   73824:     (e.g. picture inclusion with forms.ps) resulted in invalid restores.
                   73825: 
                   73826:  3: Fixed the mistake in the external declaration of mesg in postio/slowsend.c.
                   73827: 
                   73828:  4: The malloc() call in postdmd (routine dimensions()) is only made if patterns
                   73829:     is positive.
                   73830: 
                   73831:  5: Changed definition of De in draw.ps so savematrix is loaded with the CTM
                   73832:     whenever De is executed. Original implementation didn't work with forms.ps
                   73833:     because the CTM is changed with each page image. (4/29/89)
                   73834: 
                   73835:  6: Flush stdout when postio is invoked with the -t option - just convenient
                   73836:     not necessary. (4/30/89)
                   73837: 
                   73838:  7: Included a man page for the picture inclusion macros - file man/mpictures.5.
                   73839:     (5/6/89)
                   73840: 
                   73841:  8: Added BoundingBox code to dpost - still needs to go in other translators.
                   73842:     Most of the work is done in common/bbox.c. (5/7/89)
                   73843: 
                   73844:  9: Fiddled with the bracket building stuff in dpost.ps so things finally look
                   73845:     decent. Was particularly bad on the typesetter.
                   73846: 
                   73847: 10: dpost now generates a PageBoundingBox comment and ps_include.c accepts
                   73848:     the comment. Added -B option to enable/disable the BoundingBox calculations.
                   73849:     -Bon to enable and -Boff to disable. On by default now, but that may change.
                   73850:     Add similar code to the rest of the translators (6/20/89).
                   73851: 
                   73852: 11: Fixed ps_include.c so it properly handles %%BeginGlobal and %%EndGlobal.
                   73853:     Added braces and compare page.start to page.end instead of 0.
                   73854: 
                   73855: 12: Added xymove(hpos, vpos) for \X'PS ...' request - near the end of devcntrl().
                   73856:     Must output position info for following PostScript.
                   73857: 
                   73858: 13: Added a call to endtext() immediately before the oput() call for \N'...'
                   73859:     requests. Without it spacing often messed up with -e2 but not -e0.
                   73860: 
                   73861: ------------------------
                   73862: Version 3.1    11/15/88
                   73863: ------------------------
                   73864: 
                   73865:  1: postio can run as one or two processes (-R option) and can establish an
                   73866:     interactive connection with a postscript printer (-i option). Parsing of
                   73867:     status reports has been improved. The status query mechanism can be disabled
                   73868:     using the -q option. An exit status of 1 implies a system error (eg. can't
                   73869:     open the line) while 2 usually means there was an error in the PostScript
                   73870:     file. By default postio runs as a single process. The -B, -R, and -q options
                   73871:     can be used to speed things up some. A version of the program (previously
                   73872:     supplied in postio.tmp) that can help if you seem to be having flow control
                   73873:     problems can be obtained using the -S option. It's not generally recommended
                   73874:     and should only be used as a last resort!
                   73875: 
                   73876:  2: Several widthshow encoding schemes have been added to dpost and can reduce
                   73877:     print time by 20% or more. The method used to encode lines of text can be
                   73878:     changed on the command line using the -e option. Level 0 produces output
                   73879:     essentially identical to previous versions of dpost. The default can be
                   73880:     changed by modifying the definition of ENCODING in ./Makefile. At present
                   73881:     only level 0 is thoroughly tested, although level 2 (ie. -e2) may be the
                   73882:     default and is undoubtedly worth a try.
                   73883: 
                   73884:  3: dpost now supports color selection and reverse video. Access in troff is via
                   73885:     the stand-alone macro package ./macros/color. Examples are,
                   73886: 
                   73887:        .so /usr/lib/macros/color
                   73888:        .CL red "this prints in red"
                   73889:        .CL "white on black" "and this prints white text on a black background"
                   73890: 
                   73891:     The postscript procedures that handle color and reverse video can be found
                   73892:     in ./postscript/color.ps. Additional colors can be added to the colordict
                   73893:     dictionary defined in ./postscript/color.ps.
                   73894: 
                   73895:  4: The dpost drawing routines have been improved and have been moved from the
                   73896:     prologue (ie. ./postscript/dpost.ps) to ./postscript/draw.ps. That file is
                   73897:     only included if needed. Drawing routines now support the ability to group
                   73898:     a series of drawing commands together as a single path. May be useful for
                   73899:     future versions of pic that wish to fill regions with colors or gray levels.
                   73900:     Access is via the new "x X BeginPath" and "x X DrawPath" device control
                   73901:     commands. In addition there's some complicated PostScript code in file
                   73902:     ./postscript/baseline.ps, that can be used to set text along an arbitrary
                   73903:     curve. It's terribly confusing and I doubt anyone will have the patience to
                   73904:     bother to figure it out.
                   73905: 
                   73906:  5: A simple picture packing troff preprocessor (picpack) has been included and
                   73907:     the code needed to recover pictures and text has been added to dpost. The
                   73908:     program is designed to supplement to the original picture inclusion mechanism,
                   73909:     and should ONLY be used when absolutely necessary. Using dpost to pull picture
                   73910:     files into a document is strongly recommended and will always be the more
                   73911:     efficient and portable approach. picpack simply provides a way to combine
                   73912:     pictures and text in a single file before dpost is executed. It may help in
                   73913:     a distributed printing environment where the user runs everything through
                   73914:     troff while a spooling daemon (eg. lp) handles the postprocessing. There
                   73915:     are serious disadvantages to this approach, with perhaps the most important
                   73916:     being that troff output files (when picpack is used) will likely result in
                   73917:     files that can no longer be reliably passed through other important post-
                   73918:     processors like proof.
                   73919: 
                   73920:  6: Code to handle host resident PostScript fonts in dpost has been tested and
                   73921:     finally works. The -H option points dpost to a host resident font directory,
                   73922:     which by default is NULL. Host resident font files stored in that directory
                   73923:     must be assigned a name that corresponds to the one or two character troff
                   73924:     font name. Width tables must also be built (see buildtables/README), the new
                   73925:     binary font files must be installed in /usr/lib/font/devpost, and a mapping
                   73926:     definition from troff's name to the PostScript font name must be added to
                   73927:     ./postscript/dpost.ps.
                   73928: 
                   73929:  7: The default pattern length in postdmd has been reduced to from 10 to 6 bytes.
                   73930:     Printers with fast processors (eg. PS-810s) often benefit from a further
                   73931:     reduction, while optimal performance on slower printers (eg PS-800s) may
                   73932:     require larger pattern sizes. The pattern length can be set using the -b
                   73933:     option. Increasing the pattern size usually increases the size of the output
                   73934:     file.
                   73935: 
                   73936:  8: Line drawing in posttek and postbgi includes code that automatically ties
                   73937:     lines to device space coordinates when you select a non-zero width. Helps
                   73938:     eliminate the variation in line thickness that many observed. The default
                   73939:     line width in posttek and postbgi is still 0 (which gets 1 pixel). If you
                   73940:     want a different default change the definition of variable linewidth in files
                   73941:     ./postscript/posttek.ps and ./postscript/postbgi.ps.
                   73942: 
                   73943:  9: Defocused lines in posttek have been fixed.
                   73944: 
                   73945: 10: postbgi now supports color and can be used to translate most PRISM (color
                   73946:     BGI) jobs. Special device specific tuning needed for many PRISM jobs can be
                   73947:     enabled by using the -P"/prism true" option. Missing pieces (eg. subroutines)
                   73948:     needed for translating PRISM jobs, have also been implemented.
                   73949: 
                   73950: 11: postreverse can reverse the pages in documents that conform to Adobe's 1.0
                   73951:     or 2.0 file structuring conventions, and it works with all the translators in
                   73952:     this package. The new version is backwards compatible, but files produced by
                   73953:     the new translators should not be passed through old versions of postreverse.
                   73954:     The likely result will be no output at all. If you choose to do a partial
                   73955:     installation put the new postreverse up first!
                   73956: 
                   73957: 12: All translators attempt to conform to Adobe's Version 2.0 file structuring
                   73958:     conventions. dpost output falls short, but only in the interest of efficiency.
                   73959:     Passing dpost output through postreverse (perhaps with the -r option) produces
                   73960:     a minimally conforming PostScript file.
                   73961: 
                   73962: 13: All the translators now support three options that pass arbitrary PostScript
                   73963:     through to the output file. The -P and -C options add a string and the
                   73964:     contents of a file respectively immediately after the prologue. It's assumed
                   73965:     whatever is added is legitimate PostScript - there is no checking. In each
                   73966:     case the added PostScript code becomes part of the job's global environment.
                   73967: 
                   73968:     The -R option can be used to request special action (eg. manualfeed) on a
                   73969:     global or page basis.  The argument should be "request", "request:page", or
                   73970:     "request:page:file". If page is given as 0 or omitted the request applies
                   73971:     globally. If file is omitted the lookup is in /usr/lib/postscript/ps.requests.
                   73972:     The collection of recognized requests can be modified or extended by changing
                   73973:     /usr/lib/postscript/ps.requests.
                   73974: 
                   73975: 14: PostScript code (from Johnathan Shopiro) that produces bolder versions of the
                   73976:     Courier fonts has been included in file postscript/fatcourier.ps. The file
                   73977:     can  be added to individual prologue files (eg. dpost.ps) or pulled in as
                   73978:     needed using the -C option.
                   73979: 
                   73980: 15: postmd is a new program that can be used to display a large matrix as a gray
                   73981:     scale image. May help if you're looking for patterns in a large matrix. A very
                   73982:     optimistic estimate suggests you can display up to a 600x600 matrix (with five
                   73983:     different shades of gray) on 300dpi printer using 8.5x11 inch paper.
                   73984: 
                   73985: 16: What's available in buildtables has been cleaned up and works well with the
                   73986:     new version of postio. It can be used to have PostScript printers build troff
                   73987:     width tables for both printer and host resident fonts.
                   73988: 
                   73989: 17: The PostScript bind operator has been applied to all procedures that are
                   73990:     expected to be executed more than once. Redefined save and restore procedures
                   73991:     are no longer needed and saverestore.ps is not included in this package.
                   73992: 
                   73993: 18: The bizarre PostScript code used to get to the upper left corner of a page
                   73994:     in old versions of dpost.ps and postprint.ps has been replaced by something
                   73995:     that's at least slightly more comprehensible. All prologues have also been
                   73996:     changed so picture inclusion (eg. including a pic picture that's been run
                   73997:     through troff and dpost) should work better than previous versions. Still
                   73998:     missing (from most translators) is the %%BoundingBox comment and even when
                   73999:     it's put out (by postdmd) only the dimensions are correct - sorry!
                   74000: 
                   74001: 19: The careless mistake in the DKHOST section of postio that some noticed belongs
                   74002:     to me (not Allan Buckwalter) and has now been fixed.
                   74003: 
                   74004: 20: By default all prologues still use the current clipping path to determine page
                   74005:     dimensions, but that behavior can be disabled by setting boolean useclippath
                   74006:     (in each prologue) to false. In that case the page dimensions will be taken
                   74007:     from array pagebbox, which by default is initialized to 8x11 inch paper. The
                   74008:     -P options (in each translator) can change useclippth and pagebbox.
                   74009: 
                   74010: 21: New in the misc directory is sample lp support from Maryann Csaszar and a
                   74011:     simple program that converts host resident font files obtained from a Macintosh
                   74012:     to a format that works on Unix.
                   74013: 
                   74014: 0707070014231311010407550057030057030000021030470522633074100002300000000000post.src/dpost.utf0707070014231311021006440057030057030000011031200522627504400003200000002742post.src/dpost.utf/READMEThis is the UTF version.
                   74015: 
                   74016: Troff to PostScript translator. The big change is in the font table
                   74017: routines. The old binary format and makedev are gone. Troff and dpost
                   74018: now both read ASCII tables. Translating the ASCII font tables in dpost
                   74019: (and troff) means some startup overhead. Both programs run a bit slower,
                   74020: but it's a small price to pay for the added flexibility.
                   74021: 
                   74022: Long PostScript font names can now be included in the font tables.
                   74023: They should follow the fontname keyword as in,
                   74024: 
                   74025:        fontname Times-Roman
                   74026: 
                   74027: The fontname field helps with the DocumentFonts comment, font name
                   74028: abbreviations (formally required to be in the prologue), and is used
                   74029: to manage host resident fonts.
                   74030: 
                   74031: dpost can also now calculate a reasonably tight BoundingBox, which
                   74032: helps picture inclusion. By default the calculations are disabled.
                   74033: Use the -B option when you BoundingBox and PageBoundingBox comments.
                   74034: If you're stubborn and always want the comment set dobbox (in file
                   74035: dpost.c) to TRUE. You'll still need -B to get the the best fit.
                   74036: 
                   74037: Most other changes are bug fixes. Color support has been improved,
                   74038: and now works with the drawing routines. The different text encoding
                   74039: schemes are all still in. Level 2 is well tested and is now the default.
                   74040: For a different default change DFLTENCODING (file dpost.h). Don't make
                   74041: level 3 the default unless you can live with ragged right margins.
                   74042: 
                   74043: A typical command line would be,
                   74044: 
                   74045:     pic file | tbl | eqn | troff -mm | dpost >file.ps
                   74046: 
                   74047: file.ps is PostScript and can be sent directly to a printer.
                   74048: 
                   74049: 0707070014231307571006400057030057030000011011450522633074100004000000005355post.src/dpost.utf/dpost.utf.mkMAKE=/bin/make
                   74050: MAKEFILE=dpost.utf.mk
                   74051: 
                   74052: SYSTEM=V9
                   74053: VERSION=3.3.2
                   74054: 
                   74055: GROUP=bin
                   74056: OWNER=bin
                   74057: 
                   74058: FONTDIR=/usr/lib/font
                   74059: MAN1DIR=/tmp
                   74060: POSTBIN=/usr/bin/postscript
                   74061: POSTLIB=/usr/lib/postscript
                   74062: 
                   74063: COMMONDIR=../common
                   74064: 
                   74065: CFLGS=-O
                   74066: LDFLGS=-s
                   74067: 
                   74068: CFLAGS=$(CFLGS) -I$(COMMONDIR)
                   74069: LDFLAGS=$(LDFLGS)
                   74070: 
                   74071: HFILES=dpost.h\
                   74072:        font.h\
                   74073:        motion.h\
                   74074:        ps_include.h\
                   74075:        $(COMMONDIR)/comments.h\
                   74076:        $(COMMONDIR)/ext.h\
                   74077:        $(COMMONDIR)/gen.h\
                   74078:        $(COMMONDIR)/path.h\
                   74079:        $(COMMONDIR)/rune.h
                   74080: 
                   74081: OFILES=dpost.o\
                   74082:        draw.o\
                   74083:        color.o\
                   74084:        font.o\
                   74085:        pictures.o\
                   74086:        ps_include.o\
                   74087:        $(COMMONDIR)/bbox.o\
                   74088:        $(COMMONDIR)/glob.o\
                   74089:        $(COMMONDIR)/misc.o\
                   74090:        $(COMMONDIR)/request.o\
                   74091:        $(COMMONDIR)/rune.o\
                   74092:        $(COMMONDIR)/tempnam.o
                   74093: 
                   74094: all : dpost
                   74095: 
                   74096: install : all
                   74097:        @if [ ! -d "$(POSTBIN)" ]; then \
                   74098:            mkdir $(POSTBIN); \
                   74099:            chmod 755 $(POSTBIN); \
                   74100:            chgrp $(GROUP) $(POSTBIN); \
                   74101:            chown $(OWNER) $(POSTBIN); \
                   74102:        fi
                   74103:        @if [ ! -d "$(POSTLIB)" ]; then \
                   74104:            mkdir $(POSTLIB); \
                   74105:            chmod 755 $(POSTLIB); \
                   74106:            chgrp $(GROUP) $(POSTLIB); \
                   74107:            chown $(OWNER) $(POSTLIB); \
                   74108:        fi
                   74109:        cp dpost $(POSTBIN)/dpost
                   74110:        @chmod 755 $(POSTBIN)/dpost
                   74111:        @chgrp $(GROUP) $(POSTBIN)/dpost
                   74112:        @chown $(OWNER) $(POSTBIN)/dpost
                   74113:        cp dpost.ps $(POSTLIB)/dpost.ps
                   74114:        @chmod 644 $(POSTLIB)/dpost.ps
                   74115:        @chgrp $(GROUP) $(POSTLIB)/dpost.ps
                   74116:        @chown $(OWNER) $(POSTLIB)/dpost.ps
                   74117:        cp draw.ps $(POSTLIB)/draw.ps
                   74118:        @chmod 644 $(POSTLIB)/draw.ps
                   74119:        @chgrp $(GROUP) $(POSTLIB)/draw.ps
                   74120:        @chown $(OWNER) $(POSTLIB)/draw.ps
                   74121:        cp dpost.1 $(MAN1DIR)/dpost.1
                   74122:        @chmod 644 $(MAN1DIR)/dpost.1
                   74123:        @chgrp $(GROUP) $(MAN1DIR)/dpost.1
                   74124:        @chown $(OWNER) $(MAN1DIR)/dpost.1
                   74125: 
                   74126: clean :
                   74127:        rm -f *.o
                   74128: 
                   74129: clobber : clean
                   74130:        rm -f dpost
                   74131: 
                   74132: dpost : $(OFILES)
                   74133:        $(CC) $(CFLAGS) $(LDFLAGS) -o dpost $(OFILES) -lm
                   74134: 
                   74135: dpost.o : $(HFILES)
                   74136: color.o : $(COMMONDIR)/ext.h $(COMMONDIR)/gen.h
                   74137: draw.o : motion.h $(COMMONDIR)/ext.h $(COMMONDIR)/gen.h
                   74138: font.o : font.h $(COMMONDIR)/gen.h $(COMMONDIR)/rune.h
                   74139: pictures.o : $(COMMONDIR)/comments.h $(COMMONDIR)/gen.h
                   74140: ps_include.o : ps_include.h
                   74141: 
                   74142: $(COMMONDIR)/bbox.o\
                   74143: $(COMMONDIR)/glob.o\
                   74144: $(COMMONDIR)/misc.o\
                   74145: $(COMMONDIR)/request.o\
                   74146: $(COMMONDIR)/rune.o\
                   74147: $(COMMONDIR)/tempnam.o :
                   74148:        @cd $(COMMONDIR); $(MAKE) -f common.mk SYSTEM=$(SYSTEM) `basename $@`
                   74149: 
                   74150: changes :
                   74151:        @trap "" 1 2 3 15; \
                   74152:        sed \
                   74153:            -e "s'^SYSTEM=.*'SYSTEM=$(SYSTEM)'" \
                   74154:            -e "s'^VERSION=.*'VERSION=$(VERSION)'" \
                   74155:            -e "s'^GROUP=.*'GROUP=$(GROUP)'" \
                   74156:            -e "s'^OWNER=.*'OWNER=$(OWNER)'" \
                   74157:            -e "s'^FONTDIR=.*'FONTDIR=$(FONTDIR)'" \
                   74158:            -e "s'^MAN1DIR=.*'MAN1DIR=$(MAN1DIR)'" \
                   74159:            -e "s'^POSTBIN=.*'POSTBIN=$(POSTBIN)'" \
                   74160:            -e "s'^POSTLIB=.*'POSTLIB=$(POSTLIB)'" \
                   74161:        $(MAKEFILE) >XXX.mk; \
                   74162:        mv XXX.mk $(MAKEFILE); \
                   74163:        sed \
                   74164:            -e "s'^.ds dF.*'.ds dF $(FONTDIR)'" \
                   74165:            -e "s'^.ds dQ.*'.ds dQ $(POSTLIB)'" \
                   74166:        dpost.1 >XXX.1; \
                   74167:        mv XXX.1 dpost.1
                   74168: 
                   74169: 0707070014231311041006440057030057030000011031400522627504500003300000015654post.src/dpost.utf/color.c/*
                   74170:  *
                   74171:  * Routines that handle color requests passed through as device control commands
                   74172:  * in the form "x X SetColor:red". The following PostScript procedures are needed:
                   74173:  *
                   74174:  *     setcolor
                   74175:  *
                   74176:  *       mark /color setcolor mark
                   74177:  *       mark /color1 /color2 setcolor mark
                   74178:  *
                   74179:  *         Called whenever we want to change PostScript's current color graphics
                   74180:  *         state parameter. One or two color arguments can be given. In each case
                   74181:  *         the colors are looked up in the PostScript colordict dictionary that's
                   74182:  *         defined in *colorfile. Two named colors implies reverse video printing
                   74183:  *         with the background given in /color2 and the text printed in /color1.
                   74184:  *         Unknown colors are mapped into defaults - black for a single color and
                   74185:  *         white on black for reverse video.
                   74186:  *
                   74187:  *     drawrvbox
                   74188:  *
                   74189:  *       leftx rightx drawrvbox -
                   74190:  *
                   74191:  *         Fills a box that extends from leftx to rightx with the background color
                   74192:  *         that was requested when setcolor set things up for reverse video mode.
                   74193:  *         The vertical extent of the box is determined using FontBBox just before
                   74194:  *         the first string is printed, and the height remains in effect until
                   74195:  *         there's an explicit color change. In otherwords font or size changes
                   74196:  *         won't always produce correct result in reverse video mode.
                   74197:  *
                   74198:  *     setdecoding
                   74199:  *
                   74200:  *       num setdecoding -
                   74201:  *
                   74202:  *         Selects the text decoding procedure (ie. what's assigned to PostScript
                   74203:  *         procedure t) from the decodingdefs array defined in the prologue. num
                   74204:  *         should be the value assigned to variable encoding (in dpost) and will
                   74205:  *         remain constant throughout a job, unless special features, like reverse
                   74206:  *         video printing, are requested. The text encoding scheme can be set on
                   74207:  *         the command line using the -e option. Print time and the size of the
                   74208:  *         output file will usually decrease as the value assigned to encoding
                   74209:  *         increases.
                   74210:  *
                   74211:  *
                   74212:  * The recognized collection of "x X SetColor:" commands are:
                   74213:  *
                   74214:  *     x X SetColor:                           selects black
                   74215:  *     x X SetColor:color                      selects color
                   74216:  *     x X SetColor:color1 on color2           reverse video
                   74217:  *     x X SetColor:color1 color2              reverse video again
                   74218:  *     x X SetColor:num1 num2 num3 rgb         explicit rgb color request
                   74219:  *     x X SetColor:num1 num2 num3 hsb         explicit hsb color request
                   74220:  *
                   74221:  * In the last three examples num1, num2, and num3 should be numbers between 0 and
                   74222:  * 1 inclusive and are passed on as aguments to the approrpriate PostScript color
                   74223:  * command (eg. setrgbcolor). Unknown color names (ie. the ones that setcolor
                   74224:  * doesn't find in colordict) are mapped into defaults. For one color the default
                   74225:  * is black, while for reverse video it's white text on a black background.
                   74226:  *
                   74227:  * dpost makes sure the current color is maintained across page boundaries, which
                   74228:  * may not be what you want if you're using a macro package like mm that puts out
                   74229:  * page footers and headers. Adding a color request to troff and keeping track of
                   74230:  * the color in each environment may be the best solution.
                   74231:  *
                   74232:  * To get reverse video printing follow the "x X SetColor:" command with two or
                   74233:  * three arguments. "x X SetColor:white on black" or "x X SetColor:white black"
                   74234:  * both produce white text on a black background. Any two colors named in colordict
                   74235:  * (in file *colorfile) can be chosen so "x X SetColor:yellow on blue" also works.
                   74236:  * Each reverse video mode request selects the vertical extent of the background
                   74237:  * box based on the font and size in use just before the first string is printed.
                   74238:  * Font and/or size changes aren't guaranteed to work properly in reverse video
                   74239:  * printing.
                   74240:  *
                   74241:  */
                   74242: 
                   74243: #include <stdio.h>
                   74244: #include <ctype.h>
                   74245: 
                   74246: #include "gen.h"                       /* general purpose definitions */
                   74247: #include "ext.h"                       /* external variable definitions */
                   74248: 
                   74249: #define DEFAULTCOLOR   "black"
                   74250: 
                   74251: char   color[50] = DEFAULTCOLOR;       /* current color */
                   74252: int    gotcolor = FALSE;               /* TRUE after *colorfile is downloaded */
                   74253: int    wantcolor = FALSE;              /* TRUE if we really ask for a color */
                   74254: 
                   74255: /*
                   74256:  *
                   74257:  * All these should be defined in dpost.c.
                   74258:  *
                   74259:  */
                   74260: 
                   74261: extern int     lastend;
                   74262: extern int     encoding;
                   74263: extern int     maxencoding;
                   74264: extern int     realencoding;
                   74265: 
                   74266: extern char    *colorfile;
                   74267: extern FILE    *tf;
                   74268: 
                   74269: /*****************************************************************************/
                   74270: 
                   74271: getcolor()
                   74272: 
                   74273: {
                   74274: 
                   74275: /*
                   74276:  *
                   74277:  * Responsible for making sure the PostScript color procedures are downloaded from
                   74278:  * *colorfile. Done at most once per job, and only if the job really uses color.
                   74279:  * For now I've decided not to quit if we can't read the color file.
                   74280:  *
                   74281:  */
                   74282: 
                   74283:     if ( gotcolor == FALSE )
                   74284:        exportfile(colorfile);
                   74285: 
                   74286:     if ( tf == stdout )
                   74287:        gotcolor = TRUE;
                   74288: 
                   74289: }   /* End of getcolor */
                   74290: 
                   74291: /*****************************************************************************/
                   74292: 
                   74293: newcolor(name)
                   74294: 
                   74295:     char       *name;                  /* of the color */
                   74296: 
                   74297: {
                   74298: 
                   74299:     char       *p;                     /* next character in *name */
                   74300:     int                i;                      /* goes in color[i] */
                   74301: 
                   74302: /*
                   74303:  *
                   74304:  * Converts *name to lower case and saves the result in color[] for use as the
                   74305:  * current color. The first time something other than DEFAULTCOLOR is requested
                   74306:  * sets wantcolor to TRUE. Characters are converted to lower case as they're put
                   74307:  * in color[] and we quit when we find a newline or get to the end of *name. The
                   74308:  * isupper() test is for Berkley systems.
                   74309:  *
                   74310:  */
                   74311: 
                   74312:     for ( p = name; *p && (*p == ' ' || *p == ':'); p++ ) ;
                   74313: 
                   74314:     for ( i = 0; i < sizeof(color) - 1 && *p != '\n' && *p; i++, p++ )
                   74315:        if ( isupper(*p) )
                   74316:            color[i] = tolower(*p);
                   74317:        else color[i] = *p;
                   74318: 
                   74319:     if ( i == 0 )
                   74320:        strcpy(color, DEFAULTCOLOR);
                   74321:     else color[i] = '\0';
                   74322: 
                   74323:     if ( strcmp(color, DEFAULTCOLOR) != 0 )
                   74324:        wantcolor = TRUE;
                   74325: 
                   74326: }   /* End of newcolor */
                   74327: 
                   74328: /*****************************************************************************/
                   74329: 
                   74330: setcolor()
                   74331: 
                   74332: {
                   74333: 
                   74334:     int                newencoding;            /* text encoding scheme that's needed */
                   74335:     char       *p;                     /* for converting what's in color[] */
                   74336: 
                   74337: /*
                   74338:  *
                   74339:  * Sets the color being used by the printer to whatever's stored as the current
                   74340:  * color (ie. the string in color[]). wantcolor is only set to TRUE if we've been
                   74341:  * through newcolor() and asked for something other than DEFAULTCOLOR (probably
                   74342:  * black). While in reverse video mode encoding gets set to maxencoding + 1 in
                   74343:  * dpost and 0 on the printer. Didn't see much point in trying to extend reverse
                   74344:  * video to all the different encoding schemes. realencoding is restored when we
                   74345:  * leave reverse video mode.
                   74346:  *
                   74347:  */
                   74348: 
                   74349:     if ( wantcolor == TRUE ) {
                   74350:        flushtext();
                   74351:        getcolor();
                   74352: 
                   74353:        lastend = -1;
                   74354:        newencoding = realencoding;
                   74355: 
                   74356:        if ( islower(color[0]) == 0 )           /* explicit rgb or hsb request */
                   74357:            fprintf(tf, "%s\n", color);
                   74358:        else {
                   74359:            putc('/', tf);
                   74360:            for ( p = color; *p && *p != ' '; p++ )
                   74361:                putc(*p, tf);
                   74362:            for ( ; *p && *p == ' '; p++ ) ;
                   74363:            if ( strncmp(p, "on ", 3) == 0 ) p += 3;
                   74364:            if ( *p != '\0' ) {
                   74365:                fprintf(tf, " /%s", p);
                   74366:                newencoding = maxencoding + 1;
                   74367:            }   /* End if */
                   74368:            fprintf(tf, " setcolor\n");
                   74369:        }   /* End else */
                   74370: 
                   74371:        if ( newencoding != encoding ) {
                   74372:            encoding = newencoding;
                   74373:            fprintf(tf, "%d setdecoding\n", encoding);
                   74374:            resetpos();
                   74375:        }   /* End if */
                   74376:     }  /* End if */
                   74377: 
                   74378: }   /* End of setcolor */
                   74379: 
                   74380: /*****************************************************************************/
                   74381: 
                   74382: 0707070014231307611006400057030057030000011006420522633074100003300000012240post.src/dpost.utf/dpost.1.ds dF /usr/lib/font
                   74383: .ds dQ /usr/lib/postscript
                   74384: .TH DPOST 1 "DWB 3.2"
                   74385: .SH NAME
                   74386: .B dpost
                   74387: \-
                   74388: .B troff
                   74389: postprocessor for PostScript printers
                   74390: .SH SYNOPSIS
                   74391: \*(mBdpost\f1
                   74392: .OP "" options []
                   74393: .OP "" files []
                   74394: .SH DESCRIPTION
                   74395: .B dpost
                   74396: translates
                   74397: .I files
                   74398: created by
                   74399: .BR troff (1)
                   74400: into PostScript and writes the results on the
                   74401: standard output.
                   74402: If no
                   74403: .I files
                   74404: are specified, or if
                   74405: .OP \-
                   74406: is one of the input
                   74407: .IR files ,
                   74408: the standard input is read.
                   74409: The following
                   74410: .I options
                   74411: are understood:
                   74412: .TP 0.75i
                   74413: .OP \-c num
                   74414: Print
                   74415: .I num
                   74416: copies of each page.
                   74417: By default only one copy is printed.
                   74418: .TP
                   74419: .OP \-m num
                   74420: Magnify each logical page by the factor
                   74421: .IR num
                   74422: (default is 1.0).
                   74423: Pages are scaled uniformly about the origin,
                   74424: which is located near the upper left corner of
                   74425: each page.
                   74426: .TP
                   74427: .OP \-n num
                   74428: Print
                   74429: .I num
                   74430: logical pages on each piece of paper,
                   74431: where
                   74432: .I num
                   74433: can be any positive integer.
                   74434: By default,
                   74435: .I num
                   74436: is set to 1.
                   74437: .TP
                   74438: .OP \-o list
                   74439: Print pages whose numbers are given in the comma-separated
                   74440: .IR list .
                   74441: The list contains single numbers
                   74442: .I N
                   74443: and ranges
                   74444: .IR N1\-\|N2 .
                   74445: A missing
                   74446: .I N1
                   74447: means the lowest numbered page, a missing
                   74448: .I N2
                   74449: means the highest.
                   74450: .TP
                   74451: .OP \-p mode
                   74452: Print
                   74453: .I files
                   74454: in either \*(mBportrait\fP or \*(mBlandscape\fP mode.
                   74455: Only the first character of
                   74456: .I mode
                   74457: is significant.
                   74458: The default
                   74459: .I mode
                   74460: is \*(mBportrait\fP.
                   74461: .TP
                   74462: .OP \-w num
                   74463: Set the line width used to implement
                   74464: .B troff
                   74465: graphics commands to
                   74466: .I num
                   74467: points, where a point is approximately 1/72
                   74468: of an inch.
                   74469: By default
                   74470: .I num
                   74471: is set to 0.3 points.
                   74472: .TP
                   74473: .OP \-x num
                   74474: Translate the origin
                   74475: .I num
                   74476: inches along the positive x axis.
                   74477: The default
                   74478: coordinate system has the origin fixed near the
                   74479: upper left corner of the page, with positive
                   74480: x to the right and positive y down the page.
                   74481: Positive
                   74482: .I num
                   74483: moves everything right.
                   74484: The default offset is 0 inches.
                   74485: .TP
                   74486: .OP \-y num
                   74487: Translate the origin
                   74488: .I num
                   74489: inches along the positive y axis.
                   74490: Positive
                   74491: .I num
                   74492: moves text down the page.
                   74493: The default offset is 0.
                   74494: .TP
                   74495: .OP \-B
                   74496: Include
                   74497: .MW %%BoundingBox
                   74498: comments in the output file.
                   74499: Should only be used when the comments are needed
                   74500: for picture inclusion.
                   74501: Output is forced onto an 8.5\(mu11-inch page.
                   74502: .TP
                   74503: .OP \-E name
                   74504: Set the character encoding for text fonts to
                   74505: .IR name .
                   74506: Requesting
                   74507: .I name
                   74508: means include file
                   74509: .MI \*(dQ/ name .enc \f1.
                   74510: A nonexistent encoding file is silently ignored.
                   74511: There is no default.
                   74512: .TP
                   74513: .OP \-F dir
                   74514: Use
                   74515: .I dir
                   74516: as the font directory.
                   74517: The default
                   74518: .I dir
                   74519: is
                   74520: .MR \*(dF ,
                   74521: and
                   74522: .B dpost
                   74523: reads
                   74524: .SM ASCII
                   74525: font files from directory
                   74526: .MR \*(dF/devpost .
                   74527: .TP
                   74528: .OP \-H dir
                   74529: Use
                   74530: .I dir
                   74531: as the host-resident font directory.
                   74532: A file in
                   74533: .I dir
                   74534: that matches the name of the
                   74535: .B troff
                   74536: font is assumed to be a host resident font program
                   74537: and is included in
                   74538: .B dpost
                   74539: output.
                   74540: There is no default.
                   74541: .TP
                   74542: .OP \-L \^file
                   74543: Use
                   74544: .I file
                   74545: as the PostScript prologue.
                   74546: The default is
                   74547: .MR \*(dQ/dpost.ps .
                   74548: .TP
                   74549: .OP \-T name
                   74550: Use font files for device
                   74551: .I name
                   74552: as the best description of available PostScript fonts.
                   74553: By default,
                   74554: .I name
                   74555: is
                   74556: \*(mBpost\fP
                   74557: and
                   74558: .B dpost
                   74559: reads
                   74560: .SM ASCII
                   74561: files from
                   74562: .MR \*(dF/devpost .
                   74563: .br
                   74564: .ne 1i
                   74565: .PP
                   74566: Three options allow insertion of arbitrary PostScript
                   74567: at controlled points in the translation process:
                   74568: .TP 0.75i
                   74569: .OP \-C \^file
                   74570: Copy
                   74571: .I file
                   74572: to the output file;
                   74573: .I file
                   74574: must contain legitimate PostScript.
                   74575: .TP
                   74576: .OP \-P string
                   74577: Include
                   74578: .I string
                   74579: in the output file;
                   74580: .I string
                   74581: must be legitimate PostScript.
                   74582: .TP
                   74583: .OP \-R action
                   74584: Requests special
                   74585: .I action
                   74586: (e.g.,
                   74587: .MR manualfeed )
                   74588: on a per page or global basis.
                   74589: The
                   74590: .I action
                   74591: string can be given as
                   74592: .IR request \|,
                   74593: .IM request : page\f1\|,
                   74594: or
                   74595: .IM request : page : file\f1\|.
                   74596: If
                   74597: .I page
                   74598: is omitted or given as 0 the request
                   74599: applies to all pages.
                   74600: If
                   74601: .I file
                   74602: is omitted the request
                   74603: lookup is done in
                   74604: .MR \*(dQ/ps.requests .
                   74605: .PP
                   74606: All
                   74607: .I files
                   74608: should be prepared by
                   74609: .B troff
                   74610: for the same device.
                   74611: Device tables that describe real PostScript fonts that can be
                   74612: used by
                   74613: .B dpost
                   74614: should include
                   74615: .EX
                   74616: PDL PostScript
                   74617: .EE
                   74618: in their
                   74619: .SM DESC
                   74620: file.
                   74621: Tables that depend on a non-standard character set encoding indicate
                   74622: that fact by an
                   74623: .MW Encoding
                   74624: entry in their
                   74625: .SM DESC
                   74626: file.
                   74627: For example,
                   74628: .EX
                   74629: Encoding Latin1
                   74630: .EE
                   74631: means include file
                   74632: .MR \*(dQ/Latin1.enc .
                   74633: The
                   74634: .OP \-E
                   74635: option overrides the
                   74636: .SM DESC
                   74637: setting.
                   74638: .SH EXAMPLES
                   74639: .PP
                   74640: A typical command line might be:
                   74641: .EX
                   74642: pic  \f2files\fP | tbl | eqn | troff -mm | dpost
                   74643: .EE
                   74644: .SH DIAGNOSTICS
                   74645: A 0 exit status is returned if
                   74646: .I files
                   74647: were successfully translated,
                   74648: while 2 often indicates a syntax error in the input
                   74649: .IR files .
                   74650: .SH WARNINGS
                   74651: .PP
                   74652: .B dpost
                   74653: output does not usually conform to Adobe's file-structuring conventions.
                   74654: Send the output through
                   74655: .B postreverse
                   74656: to produce a minimally conforming PostScript file.
                   74657: .PP
                   74658: Emulation is expensive and does not always produce satisfactory results.
                   74659: No attempt has been made to implement the character sets or fonts available
                   74660: on all devices supported by
                   74661: .BR troff .
                   74662: Missing characters are replaced by white space, and unrecognized
                   74663: fonts default to one of the Times fonts (e.g.,
                   74664: .MR R ,
                   74665: .MR I ,
                   74666: .MR B ,
                   74667: or
                   74668: .MR BI ).
                   74669: .SH FILES
                   74670: .MW \*(dF/devpost/*
                   74671: .br
                   74672: .MW \*(dF/devpost/charlib/*
                   74673: .br
                   74674: .MW \*(dQ/dpost.ps
                   74675: .br
                   74676: .MW \*(dQ/color.ps
                   74677: .br
                   74678: .MW \*(dQ/draw.ps
                   74679: .br
                   74680: .MW \*(dQ/forms.ps
                   74681: .br
                   74682: .MW \*(dQ/ps.requests
                   74683: .SH SEE ALSO
                   74684: .BR buildtables (1),
                   74685: .BR postio (1),
                   74686: .BR postprint (1),
                   74687: .BR postreverse (1),
                   74688: .BR psencoding (1),
                   74689: .BR troff (1),
                   74690: .BR font (5),
                   74691: .BR troff (5)
                   74692: 0707070014231311061006440057030057030000011032000522627504600003300000134046post.src/dpost.utf/dpost.c/*
                   74693:  *
                   74694:  * dpost - troff post-processor for PostScript printers.
                   74695:  *
                   74696:  * A program that translates output generated by the device independent troff
                   74697:  * into PostScript. Much was borrowed from dimpress and dps (formally dlzw),
                   74698:  * and even though the code has changed, credit has to be given to Richard
                   74699:  * Flood for his early work on the PostScript driver.
                   74700:  *
                   74701:  * The big change is in the font table routines. The old binary format and
                   74702:  * makedev are gone. dpost and troff now read ASCII tables, and both skip
                   74703:  * unrecognized entries in the ASCII tables. That means problems, like where
                   74704:  * to put the real name of the PostScript font, have disappeared. The added
                   74705:  * flexibility means some overhead translating the ASCII tables, but the
                   74706:  * overhead isn't too bad.
                   74707:  *
                   74708:  * dpost can also now calculate a reasonably tight BoundingBox, which helps
                   74709:  * picture inclusion. The calculations, by default, are disabled. Couldn't
                   74710:  * justify the overhead for a comment, particularly one that's only needed
                   74711:  * occasionally. Use the -B option to get the comment.
                   74712:  *
                   74713:  * Output produced by dpost is still nonconforming. Definitions made in pages
                   74714:  * and exported to the job's global environment are the primary problem. It's
                   74715:  * an efficient approach, but means pages are not independent. Violations are
                   74716:  * bracketed by %%BeginGlobal and %%EndGlobal comments and can be pulled into
                   74717:  * the prologue by utility programs (like postreverse) that recognize the new
                   74718:  * comments.
                   74719:  *
                   74720:  * The program handles files formatted for any device, although the best and
                   74721:  * most efficient output is generated when the font and description files
                   74722:  * match PostScript's resident fonts. Emulation is relatively expensive, and
                   74723:  * can produce output files that are more than twice the size of the input
                   74724:  * files.
                   74725:  *
                   74726:  * Several different methods can be used to encode lines of text. What's done
                   74727:  * depends on the value assigned to encoding. Print time should decrease as
                   74728:  * encoding increases (up to MAXENCODING). Setting encoding to 3 (or higher)
                   74729:  * is not normally recommended. It's fast and produces very compact output,
                   74730:  * but rounding errors in troff's width tables can accumulate and lead to a
                   74731:  * ragged right margin. encoding can be changed on the command line using the
                   74732:  * -e option.
                   74733:  *
                   74734:  * PostScript fonts don't support all of troff's characters. Some are built
                   74735:  * by special PostScript procedures in directory *fontdir/devpost/charlib.
                   74736:  * The charlib approach is not meant to replace user defined fonts. It was
                   74737:  * a quick implementation designed to handle characters that aren't used
                   74738:  * often - charlib should not be overused! The charlib lookup is triggered
                   74739:  * when a character in a font table is assigned a code less than 32.
                   74740:  *
                   74741:  * Most defaults are set in the prologue, but can be changed by options. The
                   74742:  * -P option passes arbitrary PostScript into the setup section of the output
                   74743:  * file. It can be used to set (or change) values that can't be accessed by
                   74744:  * other options. For example,
                   74745:  *
                   74746:  *     dpost -P'/useclippath false def' file > file.ps
                   74747:  *
                   74748:  * defines useclippath to be false. Everything passed through using the -P
                   74749:  * (-C to copy a file) options become part of the job's global environment.
                   74750:  * Definitions override defaults in the prologue.
                   74751:  *
                   74752:  * dpost expects to find the following procedures in the prologue:
                   74753:  *
                   74754:  *     setup
                   74755:  *
                   74756:  *       mark ... setup -
                   74757:  *
                   74758:  *         Initialization procedure mainly responsible for setting up an
                   74759:  *         appropriate coordinate system.
                   74760:  *
                   74761:  *     pagesetup
                   74762:  *
                   74763:  *       page pagesetup -
                   74764:  *
                   74765:  *         Called at the start of each page, immediately after the page
                   74766:  *         level save. Argument is the current page number.
                   74767:  *
                   74768:  *     setdecoding
                   74769:  *
                   74770:  *       num setdecoding -
                   74771:  *
                   74772:  *         Select the decoding procedure used to print text strings encoded
                   74773:  *         by dpost. num is whatever has been assigned to encoding.
                   74774:  *
                   74775:  *     f
                   74776:  *
                   74777:  *       size font f -
                   74778:  *
                   74779:  *         Set the font and size used for character imaging. The font name
                   74780:  *         argument is (normally) the name troff used. Mapping to the real
                   74781:  *         PostScript font name is made using the fontname field in the
                   74782:  *         ASCII width tables.
                   74783:  *
                   74784:  *     m
                   74785:  *
                   74786:  *       x y m -
                   74787:  *
                   74788:  *         Move to point (x, y). Not used for positioning words in text
                   74789:  *         strings.
                   74790:  *
                   74791:  *     t
                   74792:  *
                   74793:  *       mark text t mark
                   74794:  *
                   74795:  *         Everything on the stack (up to the mark) is treated as a line
                   74796:  *         of text to be decoded and printed. What's on the stack depends
                   74797:  *         on encoding.
                   74798:  *
                   74799:  *     w
                   74800:  *
                   74801:  *       string x y w -
                   74802:  *
                   74803:  *         Print a single word starting at position (x, y). Only used in
                   74804:  *         the more complicated encoding schemes, like the ones based on
                   74805:  *         widthshow.
                   74806:  *
                   74807:  *     done
                   74808:  *
                   74809:  *         Make sure the last page prints. Always called, but only needed
                   74810:  *         when printing more than one page on each sheet of paper.
                   74811:  *
                   74812:  * output language from troff:
                   74813:  * all numbers are character strings
                   74814:  * 
                   74815:  * sn  size in points
                   74816:  * fn  font as number from 1-n
                   74817:  * cx  ascii character x
                   74818:  * Cxyz        funny char xyz. terminated by white space
                   74819:  * Hn  go to absolute horizontal position n
                   74820:  * Vn  go to absolute vertical position n (down is positive)
                   74821:  * hn  go n units horizontally (relative)
                   74822:  * vn  ditto vertically
                   74823:  * nnc move right nn, then print c (exactly 2 digits!)
                   74824:  *             (this wart is an optimization that shrinks output file size
                   74825:  *              about 35% and run-time about 15% while preserving ascii-ness)
                   74826:  * Dt ...\n    draw operation 't':
                   74827:  *     Dl x y          line from here by x,y
                   74828:  *     Dc d            circle of diameter d with left side here
                   74829:  *     De x y          ellipse of axes x,y with left side here
                   74830:  *     Da x1 y1 x2 y2  arc counter-clockwise from current point (x, y) to
                   74831:  *                     (x + x1 + x2, y + y1 + y2)
                   74832:  *     D~ x y x y ...  wiggly line by x,y then x,y ...
                   74833:  * nb a        end of line (information only -- no action needed)
                   74834:  *     b = space before line, a = after
                   74835:  * p   new page begins -- set v to 0
                   74836:  * #...\n      comment
                   74837:  * x ...\n     device control functions:
                   74838:  *     x i     init
                   74839:  *     x T s   name of device is s
                   74840:  *     x r n h v       resolution is n/inch
                   74841:  *             h = min horizontal motion, v = min vert
                   74842:  *     x p     pause (can restart)
                   74843:  *     x s     stop -- done forever
                   74844:  *     x t     generate trailer
                   74845:  *     x f n s font position n contains font s
                   74846:  *     x H n   set character height to n
                   74847:  *     x S n   set slant to N
                   74848:  * 
                   74849:  *     Subcommands like "i" are often spelled out like "init".
                   74850:  *
                   74851:  */
                   74852: 
                   74853: #include       <stdio.h>
                   74854: #include       <fcntl.h>
                   74855: #include       <signal.h>
                   74856: #include       <math.h>
                   74857: #include       <ctype.h>
                   74858: #include       <time.h>
                   74859: 
                   74860: #include       "comments.h"            /* structuring comments */
                   74861: #include       "gen.h"                 /* general purpose definitions */
                   74862: #include       "rune.h"                /* Plan 9 character encoding */
                   74863: #include       "path.h"                /* prologue and a few other files */
                   74864: #include       "ext.h"                 /* external variable declarations */
                   74865: #include       "font.h"                /* font table definitions */
                   74866: #include       "dpost.h"               /* a few definitions just used here */
                   74867: #include       "motion.h"              /* positioning macros */
                   74868: 
                   74869: char   *prologue = DPOST;              /* the PostScript prologue */
                   74870: char   *colorfile = COLOR;             /* color support */
                   74871: char   *drawfile = DRAW;               /* drawing routines */
                   74872: char   *formfile = FORMFILE;           /* multiple pages on each sheet */
                   74873: char   *baselinefile = BASELINE;       /* for text along curved baseline */
                   74874: 
                   74875: char   *fontdir = FONTDIR;             /* font table directories */
                   74876: char   *hostfontdir = NULL;            /* host resident font directory */
                   74877: 
                   74878: char   *realdev = DEVNAME;             /* use these width tables */
                   74879: char   devname[20] = "";               /* job formatted for this device */
                   74880: Fontmap        fontmap[] = FONTMAP;            /* font translation table - emulation */
                   74881: char   *useencoding = NULL;            /* text font encoding - from -E option */
                   74882: 
                   74883: int    copies = 1;                     /* copies of each sheet */
                   74884: int    printed = 0;                    /* pages processed and printed */
                   74885: int    formsperpage = 1;               /* pages on each sheet of paper */
                   74886: int    picflag = ON;                   /* enable/disable picture inclusion */
                   74887: 
                   74888: int    encoding = DFLTENCODING;        /* how text is translated to PostScript */
                   74889: int    realencoding = DFLTENCODING;    /* where we started */
                   74890: int    maxencoding = MAXENCODING;      /* max that users can select */
                   74891: 
                   74892: int    landscape = FALSE;              /* for BoundingBox calculations only */
                   74893: double magnification = 1.0;
                   74894: double xoffset = 0.0;
                   74895: double yoffset = 0.0;
                   74896: 
                   74897: int    smnt;                           /* special fonts start here */
                   74898: int    devres;                         /* device resolution */
                   74899: int    unitwidth;                      /* and unitwidth - from DESC file */
                   74900: 
                   74901: char   downloaded[128+SPECIALCHARS];   /* charlib characters - ASCII+SPECIAL only */
                   74902: 
                   74903: int    nfonts = 0;                     /* number of font positions */
                   74904: int    size = 10;                      /* current point size */
                   74905: int    font = 0;                       /* and font position */
                   74906: int    hpos = 0;                       /* where troff wants to be */
                   74907: int    vpos = 0;
                   74908: float  lastw = 0;                      /* width of the last input character */
                   74909: int    lastc = 0;                      /* its name (or index) - for charlib() */
                   74910: 
                   74911: int    fontheight = 0;                 /* points from x H ... */
                   74912: int    fontslant = 0;                  /* angle from x S ... */
                   74913: 
                   74914: int    res;                            /* resolution assumed in input file */
                   74915: float  widthfac = 1.0;                 /* for emulation = res/devres */
                   74916: 
                   74917: int    lastsize = -1;                  /* for tracking printer's current size */
                   74918: int    lastfont = -1;                  /* current font */
                   74919: float  lastx = -1;                     /* and current position */
                   74920: int    lasty = -1;
                   74921: int    lastend;                        /* where last character on this line was */
                   74922: 
                   74923: int    seenpage = FALSE;               /* expect fonts are now all mounted */
                   74924: int    gotspecial = FALSE;             /* append special fonts - emulation */
                   74925: 
                   74926: float  pointslop = SLOP;               /* horizontal error in points */
                   74927: int    slop;                           /* and machine units */
                   74928: int    rvslop;                         /* to extend box in reverse video mode */
                   74929: 
                   74930: int    textcount = 0;                  /* strings accumulated so far */
                   74931: int    stringstart = 0;                /* where the next one starts */
                   74932: int    spacecount = 0;                 /* spaces in current string */
                   74933: 
                   74934: Line   line[MAXSTACK+3];               /* data about words accumulated so far */
                   74935: char   strings[STRINGSPACE];           /* strings temporarily saved here */
                   74936: char   *strptr;                        /* next free slot in strings[] */
                   74937: 
                   74938: FILE   *tf = NULL;                     /* most output goes here */
                   74939: FILE   *fp_acct = NULL;                /* accounting file */
                   74940: 
                   74941: char   *optnames = "a:c:e:m:n:o:p:tw:x:y:A:BC:E:J:F:H:L:OP:R:S:T:DI";
                   74942: 
                   74943: extern int     gotcolor;               /* read *colorfile when TRUE */
                   74944: extern Font    fonts[];                /* data about every font we see */
                   74945: extern Font    *mount[];               /* troff mounts fonts here */
                   74946: 
                   74947: /*****************************************************************************/
                   74948: 
                   74949: main(agc, agv)
                   74950: 
                   74951:     int                agc;
                   74952:     char       *agv[];
                   74953: 
                   74954: {
                   74955: 
                   74956: /*
                   74957:  *
                   74958:  * Translates output from troff into PostScript. Input files must be formatted
                   74959:  * for the same device. Each input file begins on a new page.
                   74960:  *
                   74961:  */
                   74962: 
                   74963:     argc = agc;                                /* global so everyone can use them */
                   74964:     argv = agv;
                   74965: 
                   74966:     prog_name = argv[0];               /* for error messages */
                   74967: 
                   74968:     init_signals();                    /* interrupt handling */
                   74969:     header();                          /* structuring comments */
                   74970:     options();                         /* command line options */
                   74971:     arguments();                       /* translate the input files */
                   74972:     done();                            /* add trailing comments etc. */
                   74973:     account();                         /* job accounting data */
                   74974: 
                   74975:     exit(x_stat);
                   74976: 
                   74977: }   /* End of main */
                   74978: 
                   74979: /*****************************************************************************/
                   74980: 
                   74981: init_signals()
                   74982: 
                   74983: {
                   74984: 
                   74985: /*
                   74986:  *
                   74987:  * Make sure we handle interrupts.
                   74988:  *
                   74989:  */
                   74990: 
                   74991:     if ( signal(SIGINT, interrupt) == SIG_IGN ) {
                   74992:        signal(SIGINT, SIG_IGN);
                   74993:        signal(SIGQUIT, SIG_IGN);
                   74994:        signal(SIGHUP, SIG_IGN);
                   74995:     } else {
                   74996:        signal(SIGHUP, interrupt);
                   74997:        signal(SIGQUIT, interrupt);
                   74998:     }   /* End else */
                   74999: 
                   75000:     signal(SIGTERM, interrupt);
                   75001: 
                   75002: }   /* End of init_signals */
                   75003: 
                   75004: /*****************************************************************************/
                   75005: 
                   75006: header()
                   75007: 
                   75008: {
                   75009: 
                   75010:     int                ch;
                   75011:     int                old_optind = optind;
                   75012: 
                   75013: /*
                   75014:  *
                   75015:  * Scan the option list for things needed now (e.g. prologue file), but could
                   75016:  * be changed from defaults. An attempt to follow to Adobe's 2.0 structuring
                   75017:  * conventions.
                   75018:  *
                   75019:  */
                   75020: 
                   75021:     while ( (ch = getopt(argc, argv, optnames)) != EOF )
                   75022:        if ( ch == 'L' )
                   75023:            setpaths(optarg);
                   75024:        else if ( ch == 'B' )
                   75025:            dobbox = TRUE;
                   75026:        else if ( ch == '?' )
                   75027:            error(FATAL, "");
                   75028: 
                   75029:     optind = old_optind;               /* restored for options() */
                   75030: 
                   75031:     fprintf(stdout, "%s", NONCONFORMING);
                   75032:     fprintf(stdout, "%s %s\n", VERSION, PROGRAMVERSION);
                   75033:     fprintf(stdout, "%s %s\n", DOCUMENTFONTS, ATEND);
                   75034:     fprintf(stdout, "%s %s\n", PAGES, ATEND);
                   75035:     if ( dobbox == TRUE )
                   75036:        fprintf(stdout, "%s %s\n", BOUNDINGBOX, ATEND);
                   75037:     fprintf(stdout, "%s", ENDCOMMENTS);
                   75038: 
                   75039:     if ( cat(prologue) == FALSE )
                   75040:        error(FATAL, "can't read %s", prologue);
                   75041: 
                   75042:     if ( DOROUND )
                   75043:        cat(ROUNDPAGE);
                   75044: 
                   75045:     fprintf(stdout, "%s", ENDPROLOG);
                   75046:     fprintf(stdout, "%s", BEGINSETUP);
                   75047:     fprintf(stdout, "mark\n");
                   75048: 
                   75049: }   /* End of header */
                   75050: 
                   75051: /*****************************************************************************/
                   75052: 
                   75053: options()
                   75054: 
                   75055: {
                   75056: 
                   75057:     int                ch;
                   75058: 
                   75059:     extern char        *optarg;
                   75060:     extern int optind;
                   75061: 
                   75062: /*
                   75063:  *
                   75064:  * Command line options - there are too many!
                   75065:  *
                   75066:  */
                   75067: 
                   75068:     while ( (ch = getopt(argc, argv, optnames)) != EOF ) {
                   75069:        switch ( ch ) {
                   75070:            case 'a':                   /* aspect ratio */
                   75071:                    fprintf(stdout, "/aspectratio %s def\n", optarg);
                   75072:                    break;
                   75073: 
                   75074:            case 'c':                   /* number of copies */
                   75075:                    copies = atoi(optarg);
                   75076:                    fprintf(stdout, "/#copies %s store\n", optarg);
                   75077:                    break;
                   75078: 
                   75079:            case 'e':                   /* select the encoding scheme */
                   75080:                    if ( (encoding = atoi(optarg)) < 0 || encoding > MAXENCODING )
                   75081:                        encoding = DFLTENCODING;
                   75082:                    realencoding = encoding;
                   75083:                    break;
                   75084: 
                   75085:            case 'm':                   /* magnification */
                   75086:                    magnification = atof(optarg);
                   75087:                    fprintf(stdout, "/magnification %s def\n", optarg);
                   75088:                    break;
                   75089: 
                   75090:            case 'n':                   /* forms per page */
                   75091:                    formsperpage = atoi(optarg);
                   75092:                    fprintf(stdout, "%s %s\n", FORMSPERPAGE, optarg);
                   75093:                    fprintf(stdout, "/formsperpage %s def\n", optarg);
                   75094:                    break;
                   75095: 
                   75096:            case 'o':                   /* output page list */
                   75097:                    out_list(optarg);
                   75098:                    break;
                   75099: 
                   75100:            case 'p':                   /* landscape or portrait mode */
                   75101:                    landscape = (*optarg == 'l') ? TRUE : FALSE;
                   75102:                    if ( landscape == TRUE )
                   75103:                        fprintf(stdout, "/landscape true def\n");
                   75104:                    else fprintf(stdout, "/landscape false def\n");
                   75105:                    break;
                   75106: 
                   75107:            case 't':                   /* compatibility */
                   75108:                    break;
                   75109: 
                   75110:            case 'w':                   /* line width - for drawing */
                   75111:                    fprintf(stdout, "/linewidth %s def\n", optarg);
                   75112:                    break;
                   75113: 
                   75114:            case 'x':                   /* shift horizontally */
                   75115:                    xoffset = atof(optarg);
                   75116:                    fprintf(stdout, "/xoffset %s def\n", optarg);
                   75117:                    break;
                   75118: 
                   75119:            case 'y':                   /* shift vertically */
                   75120:                    yoffset = atof(optarg);
                   75121:                    fprintf(stdout, "/yoffset %s def\n", optarg);
                   75122:                    break;
                   75123: 
                   75124:            case 'A':                   /* job accounting */
                   75125:            case 'J':
                   75126:                    if ( (fp_acct = fopen(optarg, "a")) == NULL )
                   75127:                        error(FATAL, "can't open accounting file %s", optarg);
                   75128:                    break;
                   75129: 
                   75130:            case 'B':                   /* enable BoundingBox calculations */
                   75131:                    dobbox = TRUE;
                   75132:                    fprintf(stdout, "/rotation 1 def\n");
                   75133:                    fprintf(stdout, "/gotpagebbox true def\n");
                   75134:                    break;
                   75135: 
                   75136:            case 'C':                   /* copy file to output */
                   75137:                    if ( cat(optarg) == FALSE )
                   75138:                        error(FATAL, "can't read %s", optarg);
                   75139:                    break;
                   75140: 
                   75141:            case 'E':                   /* text font encoding - override DESC */
                   75142:                    useencoding = optarg;
                   75143:                    break;
                   75144: 
                   75145:            case 'F':                   /* font table directory */
                   75146:                    fontdir = optarg;
                   75147:                    break;
                   75148: 
                   75149:            case 'H':                   /* host resident font directory */
                   75150:                    hostfontdir = optarg;
                   75151:                    break;
                   75152: 
                   75153:            case 'L':                   /* prologue file */
                   75154:                    setpaths(optarg);   /* already been done in header() */
                   75155:                    break;
                   75156: 
                   75157:            case 'O':                   /* disable picture inclusion */
                   75158:                    picflag = OFF;
                   75159:                    break;
                   75160: 
                   75161:            case 'P':                   /* copy string to output */
                   75162:                    fprintf(stdout, "%s\n", optarg);
                   75163:                    break;
                   75164: 
                   75165:            case 'R':                   /* global or page level request */
                   75166:                    saverequest(optarg);
                   75167:                    break;
                   75168: 
                   75169:            case 'S':                   /* horizontal position error */
                   75170:                    if ( (pointslop = atof(optarg)) < 0 )
                   75171:                        pointslop = 0;
                   75172:                    break;
                   75173: 
                   75174:            case 'T':                   /* target printer */
                   75175:                    realdev = optarg;
                   75176:                    break;
                   75177: 
                   75178:            case 'D':                   /* debug flag */
                   75179:                    debug = ON;
                   75180:                    tf = stdout;
                   75181:                    break;
                   75182: 
                   75183:            case 'I':                   /* ignore FATAL errors */
                   75184:                    ignore = ON;
                   75185:                    break;
                   75186: 
                   75187:            case '?':                   /* don't know the option */
                   75188:                    error(FATAL, "");
                   75189:                    break;
                   75190: 
                   75191:            default:
                   75192:                    error(FATAL, "missing case for option %c", ch);
                   75193:                    break;
                   75194:        }   /* End switch */
                   75195:     }  /* End while */
                   75196: 
                   75197:     argc -= optind;
                   75198:     argv += optind;
                   75199: 
                   75200: }   /* End of options */
                   75201: 
                   75202: /*****************************************************************************/
                   75203: 
                   75204: setpaths(name)
                   75205: 
                   75206:     char       *name;
                   75207: 
                   75208: {
                   75209: 
                   75210:     char       *path;
                   75211: 
                   75212: /*
                   75213:  *
                   75214:  * Extends the -L option to permit modification of more than just the prologue
                   75215:  * file pathname. Syntax is -Lpath or -Lname:path. For debugging and development
                   75216:  * only!
                   75217:  *
                   75218:  */
                   75219: 
                   75220:     for ( path = name; *path; path++ )
                   75221:        if ( *path == ':' || *path == ' ' ) {
                   75222:            while ( *path == ':' || *path == ' ' ) path++;
                   75223:            break;
                   75224:        }   /* End if */
                   75225: 
                   75226:     if ( *path == '\0' )               /* didn't find "name:" prefix */
                   75227:        path = name;
                   75228: 
                   75229:     if ( path == name || strncmp(name, "prologue", strlen("prologue")) == 0 )
                   75230:        prologue = path;
                   75231:     else if ( strncmp(name, "draw", strlen("draw")) == 0 )
                   75232:        drawfile = path;
                   75233:     else if ( strncmp(name, "color", strlen("color")) == 0 )
                   75234:        colorfile = path;
                   75235:     else if ( strncmp(name, "form", strlen("form")) == 0 )
                   75236:        formfile = path;
                   75237:     else if ( strncmp(name, "baseline", strlen("baseline")) == 0 )
                   75238:        baselinefile = path;
                   75239: 
                   75240: }   /* End of setpaths */
                   75241: 
                   75242: /*****************************************************************************/
                   75243: 
                   75244: setup()
                   75245: 
                   75246: {
                   75247: 
                   75248:     double     t;
                   75249: 
                   75250: /*
                   75251:  *
                   75252:  * Job and BoundingBox initialization. Called once from t_init() - must know
                   75253:  * the resolution before generating the PostScript call to setup. dpost only
                   75254:  * includes an encoding file if it's set in the DESC file or requested with
                   75255:  * the -E option.
                   75256:  *
                   75257:  */
                   75258: 
                   75259:     writerequest(0, stdout);           /* global requests e.g. manual feed */
                   75260:     fprintf(stdout, "/resolution %d def\n", res);
                   75261:     if ( useencoding != NULL || fontencoding != NULL )
                   75262:        setencoding((useencoding != NULL) ? useencoding : fontencoding);
                   75263:     fprintf(stdout, "setup\n");
                   75264:     fprintf(stdout, "%d setdecoding\n", realencoding);
                   75265: 
                   75266:     if ( formsperpage > 1 ) {          /* multiple pages */
                   75267:        if ( cat(formfile) == FALSE )
                   75268:            error(FATAL, "can't read %s", formfile);
                   75269:        fprintf(stdout, "%d setupforms\n", formsperpage);
                   75270:     }  /* End if */
                   75271: 
                   75272:     fprintf(stdout, "%s", ENDSETUP);
                   75273: 
                   75274:     if ( dobbox == TRUE ) {            /* ctm[] - must agree with prologue */
                   75275:        translate(pagewidth/2.0, pageheight/2.0);
                   75276:        if ( landscape == TRUE ) {
                   75277:            rotate(90.0);
                   75278:            t = pagewidth;
                   75279:            pagewidth = pageheight;
                   75280:            pageheight = t;
                   75281:        }   /* End if */
                   75282:        translate(-pagewidth/2.0, pageheight/2.0);
                   75283:        translate(72.0 * xoffset, -72.0 * yoffset);
                   75284:        scale(magnification, magnification);
                   75285:        scale(72.0/devres, 72.0/devres);
                   75286:     }  /* End if */
                   75287: 
                   75288: }   /* End of setup */
                   75289: 
                   75290: /*****************************************************************************/
                   75291: 
                   75292: arguments()
                   75293: 
                   75294: {
                   75295: 
                   75296:     FILE       *fp;
                   75297: 
                   75298: /*
                   75299:  *
                   75300:  * Everything else is an input file. No arguments or '-' means stdin.
                   75301:  *
                   75302:  */
                   75303: 
                   75304:     if ( argc < 1 )
                   75305:        conv(stdin);
                   75306:     else
                   75307:        while ( argc > 0 ) {
                   75308:            if ( strcmp(*argv, "-") == 0 )
                   75309:                fp = stdin;
                   75310:            else if ( (fp = fopen(*argv, "r")) == NULL )
                   75311:                error(FATAL, "can't open %s", *argv);
                   75312:            conv(fp);
                   75313:            if ( fp != stdin )
                   75314:                fclose(fp);
                   75315:            argc--;
                   75316:            argv++;
                   75317:        }   /* End while */
                   75318: 
                   75319: }   /* End of arguments */
                   75320: 
                   75321: /*****************************************************************************/
                   75322: 
                   75323: done()
                   75324: 
                   75325: {
                   75326: 
                   75327:     int                i;
                   75328:     int                n;
                   75329: 
                   75330: /*
                   75331:  *
                   75332:  * Force out the last page and add trailing comments.
                   75333:  *
                   75334:  */
                   75335: 
                   75336:     fprintf(stdout, "%s", TRAILER);
                   75337:     fprintf(stdout, "done\n");
                   75338:     fprintf(stdout, "%s %d\n", PAGES, printed);
                   75339: 
                   75340:     for ( i = 0, n = 0; i < MAXFONTS+1; i++ )
                   75341:        if ( (fonts[i].flags & USED) && fonts[i].fontname != NULL ) {
                   75342:            if ( n++ == 0 )
                   75343:                fprintf(stdout, "%s", DOCUMENTFONTS);
                   75344:            else if ( (n - 1) % 8 == 0 )
                   75345:                fprintf(stdout, "\n%s", CONTINUECOMMENT);
                   75346:            fprintf(stdout, " %s", fonts[i].fontname);
                   75347:        }   /* End if */
                   75348:     if ( n > 0 )
                   75349:        putc('\n', stdout);
                   75350: 
                   75351:     if ( dobbox == TRUE )
                   75352:        writebbox(stdout, BOUNDINGBOX, 10);
                   75353: 
                   75354: }   /* End of done */
                   75355: 
                   75356: /*****************************************************************************/
                   75357: 
                   75358: account()
                   75359: 
                   75360: {
                   75361: 
                   75362: /*
                   75363:  *
                   75364:  * Accounting record to fp_acct - provided it's not NULL.
                   75365:  *
                   75366:  */
                   75367: 
                   75368:     if ( fp_acct != NULL )
                   75369:        fprintf(fp_acct, " print %d\n copies %d\n", printed, copies);
                   75370: 
                   75371: }   /* End of account */
                   75372: 
                   75373: /*****************************************************************************/
                   75374: 
                   75375: conv(fp)
                   75376: 
                   75377:     register FILE      *fp;
                   75378: 
                   75379: {
                   75380: 
                   75381:     register int       c;
                   75382:     int                        m, n, n1, m1;
                   75383:     char               str[50];
                   75384: 
                   75385: /*
                   75386:  *
                   75387:  * Read troff output from file fp and translate it into PostScript. The final
                   75388:  * t_page() call means input files start on a new page.
                   75389:  *
                   75390:  */
                   75391: 
                   75392:     redirect(-1);                      /* do output only after a page command */
                   75393:     lineno = 1;
                   75394: 
                   75395:     while ((c = getc(fp)) != EOF) {
                   75396:        switch (c) {
                   75397:            case '\n':                  /* just count this line */
                   75398:                    lineno++;
                   75399:                    break;
                   75400: 
                   75401:            case ' ':                   /* when input is text */
                   75402:            case 0:                     /* occasional noise creeps in */
                   75403:                    break;
                   75404: 
                   75405:            case '0': case '1': case '2': case '3': case '4':
                   75406:            case '5': case '6': case '7': case '8': case '9':
                   75407:                    /* two motion digits plus a character */
                   75408:                    hmot((c-'0')*10 + getc(fp)-'0');
                   75409:                    put1(getcode(fp));
                   75410:                    break;
                   75411: 
                   75412:            case 'c':                   /* single ascii character */
                   75413:                    put1(getcode(fp));
                   75414:                    break;
                   75415: 
                   75416:            case 'C':                   /* special character */
                   75417:                    fscanf(fp, "%s", str);
                   75418:                    put1(chindex(str));
                   75419:                    break;
                   75420: 
                   75421:            case 'N':                   /* character at position n */
                   75422:                    fscanf(fp, "%d", &m);
                   75423:                    flushtext();
                   75424:                    oput(m);
                   75425:                    break;
                   75426: 
                   75427:            case 'D':                   /* drawing functions */
                   75428:                    flushtext();
                   75429:                    getdraw();
                   75430:                    if ( size != lastsize )
                   75431:                        t_sf();
                   75432:                    switch ((c=getc(fp))) {
                   75433:                        case 'p':       /* draw a path */
                   75434:                            while (fscanf(fp, "%d %d", &n, &m) == 2)
                   75435:                                drawline(n, m);
                   75436:                            lineno++;
                   75437:                            break;
                   75438: 
                   75439:                        case 'l':       /* draw a line */
                   75440:                            fscanf(fp, "%d %d %c", &n, &m, &n1);
                   75441:                            drawline(n, m);
                   75442:                            break;
                   75443: 
                   75444:                        case 'c':       /* circle */
                   75445:                            fscanf(fp, "%d", &n);
                   75446:                            drawcirc(n);
                   75447:                            break;
                   75448: 
                   75449:                        case 'e':       /* ellipse */
                   75450:                            fscanf(fp, "%d %d", &m, &n);
                   75451:                            drawellip(m, n);
                   75452:                            break;
                   75453: 
                   75454:                        case 'a':       /* counter-clockwise arc */
                   75455:                        case 'A':       /* clockwise arc */
                   75456:                            fscanf(fp, "%d %d %d %d", &n, &m, &n1, &m1);
                   75457:                            drawarc(n, m, n1, m1, c);
                   75458:                            break;
                   75459: 
                   75460:                        case 'q':       /* spline without end points */
                   75461:                            drawspline(fp, 1);
                   75462:                            lineno++;
                   75463:                            break;
                   75464: 
                   75465:                        case '~':       /* wiggly line */
                   75466:                            drawspline(fp, 2);
                   75467:                            lineno++;
                   75468:                            break;
                   75469: 
                   75470:                        default:
                   75471:                            error(FATAL, "unknown drawing function %c", c);
                   75472:                            break;
                   75473:                    }   /* End switch */
                   75474:                    break;
                   75475: 
                   75476:            case 's':                   /* use this point size */
                   75477:                    fscanf(fp, "%d", &size);    /* ignore fractional sizes */
                   75478:                    break;
                   75479: 
                   75480:            case 'f':                   /* use font mounted here */
                   75481:                    fscanf(fp, "%s", str);
                   75482:                    setfont(t_font(str));
                   75483:                    break;
                   75484: 
                   75485:            case 'H':                   /* absolute horizontal motion */
                   75486:                    fscanf(fp, "%d", &n);
                   75487:                    hgoto(n);
                   75488:                    break;
                   75489: 
                   75490:            case 'h':                   /* relative horizontal motion */
                   75491:                    fscanf(fp, "%d", &n);
                   75492:                    hmot(n);
                   75493:                    break;
                   75494: 
                   75495:            case 'w':                   /* word space */
                   75496:                    break;
                   75497: 
                   75498:            case 'V':                   /* absolute vertical position */
                   75499:                    fscanf(fp, "%d", &n);
                   75500:                    vgoto(n);
                   75501:                    break;
                   75502: 
                   75503:            case 'v':                   /* relative vertical motion */
                   75504:                    fscanf(fp, "%d", &n);
                   75505:                    vmot(n);
                   75506:                    break;
                   75507: 
                   75508:            case 'p':                   /* new page */
                   75509:                    fscanf(fp, "%d", &n);
                   75510:                    t_page(n);
                   75511:                    break;
                   75512: 
                   75513:            case 'n':                   /* end of line */
                   75514:                    while ( (c = getc(fp)) != '\n' && c != EOF ) ;
                   75515:                    hgoto(0);
                   75516:                    lineno++;
                   75517:                    break;
                   75518: 
                   75519:            case '#':                   /* comment */
                   75520:                    while ( (c = getc(fp)) != '\n' && c != EOF ) ;
                   75521:                    lineno++;
                   75522:                    break;
                   75523: 
                   75524:            case 'x':                   /* device control function */
                   75525:                    devcntrl(fp);
                   75526:                    lineno++;
                   75527:                    break;
                   75528: 
                   75529:            default:
                   75530:                    error(FATAL, "unknown input character %o %c", c, c);
                   75531:                    done();
                   75532:        }   /* End switch */
                   75533:     }  /* End while */
                   75534: 
                   75535:     t_page(-1);                                /* print the last page */
                   75536:     flushtext();
                   75537: 
                   75538: }   /* End of conv */
                   75539: 
                   75540: /*****************************************************************************/
                   75541: 
                   75542: devcntrl(fp)
                   75543: 
                   75544:     FILE       *fp;
                   75545: 
                   75546: {
                   75547: 
                   75548:     char       str[50], buf[256], str1[100];
                   75549:     int                c, n;
                   75550: 
                   75551: /*
                   75552:  *
                   75553:  * Interpret device control commands, ignoring any we don't recognize. The
                   75554:  * "x X ..." commands are a device dependent collection generated by troff's
                   75555:  * \X'...' request.
                   75556:  *
                   75557:  */
                   75558: 
                   75559:     fscanf(fp, "%s", str);
                   75560: 
                   75561:     switch ( str[0] ) {
                   75562:        case 'f':                       /* load font in a position */
                   75563:                fscanf(fp, "%d %s", &n, str);
                   75564:                fgets(buf, sizeof buf, fp);     /* in case there's a filename */
                   75565:                ungetc('\n', fp);       /* fgets() goes too far */
                   75566:                str1[0] = '\0';         /* in case there's nothing to come in */
                   75567:                sscanf(buf, "%s", str1);
                   75568:                loadfont(n, str, str1);
                   75569:                break;
                   75570: 
                   75571:        case 'i':                       /* initialize */
                   75572:                t_init();
                   75573:                break;
                   75574: 
                   75575:        case 'p':                       /* pause */
                   75576:                break;
                   75577: 
                   75578:        case 'r':                       /* resolution assumed when prepared */
                   75579:                fscanf(fp, "%d", &res);
                   75580:                break;
                   75581: 
                   75582:        case 's':                       /* stop */
                   75583:        case 't':                       /* trailer */
                   75584:                flushtext();
                   75585:                break;
                   75586: 
                   75587:        case 'H':                       /* char height */
                   75588:                fscanf(fp, "%d", &n);
                   75589:                t_charht(n);
                   75590:                break;
                   75591: 
                   75592:        case 'S':                       /* slant */
                   75593:                fscanf(fp, "%d", &n);
                   75594:                t_slant(n);
                   75595:                break;
                   75596: 
                   75597:        case 'T':                       /* device name */
                   75598:                fscanf(fp, "%s", devname);
                   75599:                break;
                   75600: 
                   75601:        case 'E':                       /* input encoding - not in troff yet */
                   75602:                fscanf(fp, "%s", str);
                   75603:                if ( strcmp(str, "UTF") == 0 )
                   75604:                    reading = UTFENCODING;
                   75605:                else reading = ONEBYTE;
                   75606:                break;
                   75607: 
                   75608:        case 'X':                       /* copy through - from troff */
                   75609:                fscanf(fp, " %[^: \n]:", str);
                   75610:                fgets(buf, sizeof(buf), fp);
                   75611:                ungetc('\n', fp);
                   75612:                if ( strcmp(str, "PI") == 0 || strcmp(str, "PictureInclusion") == 0 )
                   75613:                    picture(buf);
                   75614:                else if ( strcmp(str, "InlinePicture") == 0 )
                   75615:                    inlinepic(fp, buf);
                   75616:                else if ( strcmp(str, "BeginPath") == 0 )
                   75617:                    beginpath(buf, FALSE);
                   75618:                else if ( strcmp(str, "DrawPath") == 0 )
                   75619:                    drawpath(buf, FALSE);
                   75620:                else if ( strcmp(str, "BeginObject") == 0 )
                   75621:                    beginpath(buf, TRUE);
                   75622:                else if ( strcmp(str, "EndObject") == 0 )
                   75623:                    drawpath(buf, TRUE);
                   75624:                else if ( strcmp(str, "NewBaseline") == 0 )
                   75625:                    newbaseline(buf);
                   75626:                else if ( strcmp(str, "DrawText") == 0 )
                   75627:                    drawtext(buf);
                   75628:                else if ( strcmp(str, "SetText") == 0 )
                   75629:                    settext(buf);
                   75630:                else if ( strcmp(str, "SetColor") == 0 ) {
                   75631:                    newcolor(buf);
                   75632:                    setcolor();
                   75633:                } else if ( strcmp(str, "INFO") == 0 ) {
                   75634:                    flushtext();
                   75635:                    fprintf(tf, "%%INFO%s", buf);
                   75636:                } else if ( strcmp(str, "PS") == 0 || strcmp(str, "PostScript") == 0 ) {
                   75637:                    flushtext();
                   75638:                    fprintf(tf, "%s", buf);
                   75639:                } else if ( strcmp(str, "ExportPS") == 0 ) {    /* dangerous!! */
                   75640:                    if ( tf == stdout ) {
                   75641:                        restore();
                   75642:                        fprintf(tf, "%s", buf);
                   75643:                        save();
                   75644:                    }   /* End if */
                   75645:                }   /* End else */
                   75646:                break;
                   75647:     }  /* End switch */
                   75648: 
                   75649:     while ( (c = getc(fp)) != '\n' && c != EOF ) ;
                   75650: 
                   75651: }   /* End of devcntrl */
                   75652: 
                   75653: /*****************************************************************************/
                   75654: 
                   75655: loadfont(m, f, name)
                   75656: 
                   75657:     int                m;
                   75658:     char       *f;
                   75659:     char       *name;
                   75660: 
                   75661: {
                   75662: 
                   75663:     char       path[150];
                   75664: 
                   75665: /*
                   75666:  *
                   75667:  * Load position m with font f. Font file pathname is *fontdir/dev*realdev/*f
                   75668:  * or name, if name isn't empty. Use mapfont() to replace the missing font
                   75669:  * if we're emulating another device, name is empty, and the first mount
                   75670:  * fails.
                   75671:  *
                   75672:  */
                   75673: 
                   75674:     if ( name[0] == '\0' )
                   75675:        sprintf(path, "%s/dev%s/%s", fontdir, realdev, f);
                   75676:     else sprintf(path, "%s", name);
                   75677: 
                   75678:     if ( mountfont(path, m) == -1 ) {
                   75679:        if ( name[0] == '\0' ) {
                   75680:            sprintf(path, "%s/dev%s/%s", fontdir, realdev, mapfont(f));
                   75681:            if ( mountfont(path, m) == -1 ) {
                   75682:                sprintf(path, "%s/dev%s/%s", fontdir, realdev, f);
                   75683:                error(FATAL, "can't load %s at %d", path, m);
                   75684:            }   /* End if */
                   75685:        } else error(FATAL, "can't load %s at %d", path, m);
                   75686:     }  /* End if */
                   75687: 
                   75688:     if ( smnt == 0 && mount[m]->specfont )
                   75689:        smnt = m;
                   75690: 
                   75691:     if ( m == lastfont )               /* force a call to t_sf() */
                   75692:        lastfont = -1;
                   75693: 
                   75694:     if ( m > nfonts ) {                        /* got more positions */
                   75695:        nfonts = m;
                   75696:        gotspecial = FALSE;
                   75697:     }  /* End if */
                   75698: 
                   75699: }   /* End of loadfont */
                   75700: 
                   75701: /*****************************************************************************/
                   75702: 
                   75703: char *mapfont(name)
                   75704: 
                   75705:     char       *name;
                   75706: 
                   75707: {
                   75708: 
                   75709:     int                i;
                   75710: 
                   75711: /*
                   75712:  *
                   75713:  * Map a missing font name into one that should be available. Only used when
                   75714:  * we're emulating another device and the first mount fails. Consider deleting
                   75715:  * this routine.
                   75716:  *
                   75717:  */
                   75718: 
                   75719:     for ( i = 0; fontmap[i].name != NULL; i++ )
                   75720:        if ( strcmp(name, fontmap[i].name) == 0 )
                   75721:            return(fontmap[i].use);
                   75722: 
                   75723:     switch ( *++name ) {
                   75724:        case 'I': return("I");
                   75725:        case 'B': return("B");
                   75726:        case 'X': return("BI");
                   75727:        default:  return("R");
                   75728:     }  /* End switch */
                   75729: 
                   75730: }   /* End of mapfont */
                   75731: 
                   75732: /*****************************************************************************/
                   75733: 
                   75734: loadspecial()
                   75735: 
                   75736: {
                   75737: 
                   75738: /*
                   75739:  *
                   75740:  * Fix - later.
                   75741:  *
                   75742:  */
                   75743: 
                   75744:     gotspecial = TRUE;
                   75745: 
                   75746: }   /* End of loadspecial */
                   75747: 
                   75748: /*****************************************************************************/
                   75749: 
                   75750: t_init()
                   75751: 
                   75752: {
                   75753: 
                   75754:     char       path[150];
                   75755:     static int initialized = FALSE;
                   75756: 
                   75757: /*
                   75758:  *
                   75759:  * Finish initialization - just read an "x init" command. Assumes we already
                   75760:  * know the input file resolution.
                   75761:  *
                   75762:  */
                   75763: 
                   75764:     flushtext();                       /* moved - for cat'ed troff files */
                   75765: 
                   75766:     if ( initialized == FALSE ) {
                   75767:        if ( strcmp(devname, realdev) ) {
                   75768:            sprintf(path, "%s/dev%s/DESC", fontdir, devname);
                   75769:            if ( checkdesc(path) )
                   75770:                realdev = devname;
                   75771:        }   /* End if */
                   75772: 
                   75773:        sprintf(path, "%s/dev%s/DESC", fontdir, realdev);
                   75774:        if ( getdesc(path) == -1 )
                   75775:            error(FATAL, "can't open %s", path);
                   75776:        nfonts = 0;
                   75777:        gotspecial = FALSE;
                   75778:        widthfac = (float) res /devres;
                   75779:        slop = pointslop * res / POINTS + .5;
                   75780:        rvslop = res * .025;
                   75781:        setup();
                   75782:        initialized = TRUE;
                   75783:     }  /* End if */
                   75784: 
                   75785:     hpos = vpos = 0;
                   75786:     size = 10;
                   75787:     reset();
                   75788: 
                   75789: }   /* End of t_init */
                   75790: 
                   75791: /*****************************************************************************/
                   75792: 
                   75793: t_page(pg)
                   75794: 
                   75795:     int                pg;
                   75796: 
                   75797: {
                   75798: 
                   75799:     static int lastpg = 0;
                   75800: 
                   75801: /*
                   75802:  *
                   75803:  * Finish the previous page and get ready for the next one. End page output
                   75804:  * goes to /dev/null at the start of each input file. Start page output goes
                   75805:  * to /dev/null at the end of each input file.
                   75806:  *
                   75807:  * Consider doing showpage after page level restore (as Adobe recommends). If
                   75808:  * the order is changed use restore() and save(). forms.ps will likely also
                   75809:  * need fixing.
                   75810:  *
                   75811:  */
                   75812: 
                   75813:     if ( tf == stdout )
                   75814:        printed++;
                   75815: 
                   75816:     flushtext();                       /* just in case */
                   75817: 
                   75818:     fprintf(tf, "cleartomark\n");
                   75819:     fprintf(tf, "showpage\n");
                   75820:     fprintf(tf, "saveobj restore\n");
                   75821:     if ( dobbox == TRUE )
                   75822:        writebbox(tf, PAGEBOUNDINGBOX, 10);
                   75823:     fprintf(tf, "%s %d %d\n", ENDPAGE, lastpg, printed);
                   75824: 
                   75825:     redirect(pg);
                   75826: 
                   75827:     fprintf(tf, "%s %d %d\n", PAGE, pg, printed+1);
                   75828:     if ( dobbox == TRUE )
                   75829:        fprintf(tf, "%s %s\n", PAGEBOUNDINGBOX, ATEND);
                   75830:     fprintf(tf, "/saveobj save def\n");
                   75831:     fprintf(tf, "mark\n");
                   75832:     writerequest(printed+1, tf);
                   75833:     fprintf(tf, "%d pagesetup\n", printed+1);
                   75834: 
                   75835:     if ( encoding != realencoding )
                   75836:        fprintf(tf, "%d setdecoding\n", encoding);
                   75837: 
                   75838:     if ( gotcolor == TRUE )
                   75839:        setcolor();
                   75840: 
                   75841:     lastpg = pg;                       /* for the next ENDPAGE comment */
                   75842:     hpos = vpos = 0;                   /* get ready for the next page */
                   75843:     reset();                           /* force position and font stuff - later */
                   75844: 
                   75845:     seenpage = TRUE;
                   75846: 
                   75847: }   /* End of t_page */
                   75848: 
                   75849: /*****************************************************************************/
                   75850: 
                   75851: t_font(s)
                   75852: 
                   75853:     char       *s;
                   75854: 
                   75855: {
                   75856: 
                   75857:     int                n;
                   75858: 
                   75859: /*
                   75860:  *
                   75861:  * Converts the string *s into an integer and checks to make sure it's a legal
                   75862:  * font position. Also arranges to mount all the special fonts after the last
                   75863:  * legitimate font (by calling loadspecial()), provided it hasn't already been
                   75864:  * done.
                   75865:  *
                   75866:  */
                   75867: 
                   75868:     n = atoi(s);
                   75869: 
                   75870:     if ( seenpage == TRUE ) {
                   75871:        if ( n < 0 || n > nfonts )
                   75872:            error(FATAL, "illegal font position %d", n);
                   75873: 
                   75874:        if ( gotspecial == FALSE )
                   75875:            loadspecial();
                   75876:     }  /* End if */
                   75877: 
                   75878:     return(n);
                   75879: 
                   75880: }   /* End of t_font */
                   75881: 
                   75882: /*****************************************************************************/
                   75883: 
                   75884: setfont(m)
                   75885: 
                   75886:     int                m;
                   75887: 
                   75888: {
                   75889: 
                   75890: /*
                   75891:  *
                   75892:  * Use the font mounted at position m. Bounds checks are probably unnecessary.
                   75893:  * Changing the font and size used by the printer is handled in t_sf().
                   75894:  *
                   75895:  */
                   75896: 
                   75897:     if ( m < 0 || m > MAXFONTS )
                   75898:        error(FATAL, "illegal font %d", m);
                   75899:     font = m;
                   75900: 
                   75901: }   /* End of setfont */
                   75902: 
                   75903: /*****************************************************************************/
                   75904: 
                   75905: t_sf()
                   75906: 
                   75907: {
                   75908: 
                   75909:     Font       *fpos;
                   75910:     char       temp[150];
                   75911: 
                   75912: /*
                   75913:  *
                   75914:  * Force a new font or size. Generates name definitions for fonts that haven't
                   75915:  * been named, grabs host resident font files and keeps track of the fonts used
                   75916:  * by this job. When necessary also adjusts the font's height and slant. Should
                   75917:  * only be called immediately before printing a character.
                   75918:  *
                   75919:  */
                   75920: 
                   75921:     if ( tf == stdout && mounted(font) ) {
                   75922:        flushtext();
                   75923: 
                   75924:        fpos = mount[font];
                   75925:        if ( (fpos->flags & USED) == 0 ) {
                   75926:            if ( (fpos->flags & NAMED) == 0 && fpos->fontname != NULL ) {
                   75927:                sprintf(temp, "/%s /%s def\n", fpos->name, fpos->fontname);
                   75928:                exportstring(temp);
                   75929:                fpos->flags |= NAMED;           /* unnecessary */
                   75930:            }   /* End if */
                   75931: 
                   75932:            if ( hostfontdir != NULL ) {
                   75933:                sprintf(temp, "%s/%s", hostfontdir, fpos->name);
                   75934:                exportfile(temp);
                   75935:            }   /* End if */
                   75936:        }   /* End if */
                   75937: 
                   75938:        fprintf(tf, "%d %s f\n", size, fpos->name);
                   75939:        if ( fontheight != 0 || fontslant != 0 )
                   75940:            fprintf(tf, "%d %d changefont\n", fontslant, (fontheight != 0) ? fontheight : size);
                   75941: 
                   75942:        lastfont = font;
                   75943:        lastsize = size;
                   75944:        fpos->flags |= USED;
                   75945:     }  /* End if */
                   75946: 
                   75947: }   /* End of t_sf */
                   75948: 
                   75949: /*****************************************************************************/
                   75950: 
                   75951: t_charht(n)
                   75952: 
                   75953:     int                n;
                   75954: 
                   75955: {
                   75956: 
                   75957: /*
                   75958:  *
                   75959:  * Set character height to n points. Disabled if n is 0 or the current size.
                   75960:  *
                   75961:  */
                   75962: 
                   75963:     fontheight = (n == size) ? 0 : n;
                   75964:     lastfont = -1;
                   75965: 
                   75966: }   /* End of t_charht */
                   75967: 
                   75968: /*****************************************************************************/
                   75969: 
                   75970: t_slant(n)
                   75971: 
                   75972:     int                n;
                   75973: 
                   75974: {
                   75975: 
                   75976: /*
                   75977:  *
                   75978:  * Set slant to n degrees. Disable slanting if n is 0.
                   75979:  *
                   75980:  */
                   75981: 
                   75982:     fontslant = n;
                   75983:     lastfont = -1;
                   75984: 
                   75985: }   /* End of t_slant */
                   75986: 
                   75987: /*****************************************************************************/
                   75988: 
                   75989: xymove(x, y)
                   75990: 
                   75991:     int                x, y;
                   75992: 
                   75993: {
                   75994: 
                   75995: /*
                   75996:  *
                   75997:  * Make the the printer and post-processor agree about the current position.
                   75998:  *
                   75999:  */
                   76000: 
                   76001:     flushtext();
                   76002: 
                   76003:     hgoto(x);
                   76004:     vgoto(y);
                   76005: 
                   76006:     fprintf(tf, "%d %d m\n", hpos, vpos);
                   76007: 
                   76008:     lastx = hpos;
                   76009:     lasty = vpos;
                   76010: 
                   76011: }   /* End of xymove */
                   76012: 
                   76013: /*****************************************************************************/
                   76014: 
                   76015: getcode(fp)
                   76016: 
                   76017:     FILE       *fp;
                   76018: 
                   76019: {
                   76020: 
                   76021:     int                n;
                   76022:     int                c;
                   76023:     Rune       r;
                   76024:     char       str[10];
                   76025: 
                   76026:     switch ( reading ) {
                   76027:        case UTFENCODING:
                   76028:            for ( n = 0; n < UTFmax; ) {
                   76029:                if ( (c = getc(fp)) != EOF ) {
                   76030:                    str[n++] = c;
                   76031:                    if ( fullrune(str, n) ) {
                   76032:                        chartorune(&r, str);
                   76033:                        return(r);
                   76034:                    }   /* End if */
                   76035:                } else return(c);
                   76036:            }   /* End for */
                   76037:            return(Runeerror);
                   76038: 
                   76039:        default:                /* ASCII input */
                   76040:            return(getc(fp));
                   76041:     }  /* End switch */
                   76042: 
                   76043: }   /* End of getcode */
                   76044: 
                   76045: /*****************************************************************************/
                   76046: 
                   76047: put1(c)
                   76048: 
                   76049:     int                c;
                   76050: 
                   76051: {
                   76052: 
                   76053:     int                i;
                   76054:     int                j;
                   76055:     int                k;
                   76056:     int                code;
                   76057:     int                ofont;
                   76058: 
                   76059: /*
                   76060:  *
                   76061:  * Print character c. Search current font, then in others starting at the
                   76062:  * first special font. Save c in lastc so it's available when oput() runs.
                   76063:  * Restore original font before leaving.
                   76064:  *
                   76065:  */
                   76066: 
                   76067:     if ( !ValidChar(c) )
                   76068:        return;
                   76069: 
                   76070:     lastc = c;
                   76071:     k = ofont = font;
                   76072: 
                   76073:     if ( (i = onfont(lastc, k)) == -1 && smnt > 0 )
                   76074:        for ( k = smnt, j = 0; j < nfonts; j++, k = k % nfonts + 1 ) {
                   76075:            if ( (i = onfont(lastc, k)) != -1 ) {
                   76076:                setfont(k);
                   76077:                break;
                   76078:            }   /* End if */
                   76079:        }   /* End for */
                   76080: 
                   76081:     if ( i != -1 && (code = mount[k]->wp[i].code) != 0 ) {
                   76082:        lastw = widthfac * (((int)mount[k]->wp[i].wid * size + unitwidth/2) / unitwidth);
                   76083:        oput(code);
                   76084:     }  /* End if */
                   76085: 
                   76086:     if ( font != ofont )
                   76087:        setfont(ofont);
                   76088: 
                   76089: }   /* End of put1 */
                   76090: 
                   76091: /*****************************************************************************/
                   76092: 
                   76093: oput(c)
                   76094: 
                   76095:     int                c;
                   76096: 
                   76097: {
                   76098: 
                   76099:     double     llx, lly, urx, ury;     /* boundingbox corners */
                   76100: 
                   76101: /*
                   76102:  *
                   76103:  * Arranges to print the character whose code is c in the current font. All the
                   76104:  * actual positioning is done here, in charlib(), or in the drawing routines.
                   76105:  *
                   76106:  */
                   76107: 
                   76108:     if ( textcount > MAXSTACK )                /* don't put too much on the stack? */
                   76109:        flushtext();
                   76110: 
                   76111:     if ( font != lastfont || size != lastsize )
                   76112:        t_sf();
                   76113: 
                   76114:     if ( vpos != lasty )
                   76115:        endline();
                   76116: 
                   76117:     starttext();
                   76118: 
                   76119:     if ( ABS(hpos - lastx) > slop )
                   76120:        endstring();
                   76121: 
                   76122:     if ( c >= 040 )
                   76123:        oputcode(c);
                   76124:     else charlib(c);
                   76125: 
                   76126:     if ( dobbox == TRUE ) {
                   76127:        llx = lastx;
                   76128:        lly = -(vpos + 0.5 * (devres * size / 72.0));
                   76129:        urx = lastx + lastw;
                   76130:        ury = -(vpos - (devres * size / 72.0));
                   76131:        cover(llx, lly);
                   76132:        cover(urx, ury);
                   76133:     }  /* End if */
                   76134: 
                   76135:     lastx += lastw;
                   76136: 
                   76137: }   /* End of oput */
                   76138: 
                   76139: /*****************************************************************************/
                   76140: 
                   76141: oputcode(c)
                   76142: 
                   76143:     int                c;
                   76144: 
                   76145: {
                   76146: 
                   76147:     int                        n;
                   76148:     int                        bytes;
                   76149:     Rune               r;
                   76150:     unsigned char      buf[10];
                   76151:     unsigned char      *str;
                   76152: 
                   76153: /*
                   76154:  *
                   76155:  * Output the bytes corresponding to character code c according to the
                   76156:  * current writing mode. How a multi-byte sequence is interpreted when
                   76157:  * it gets to a PostScript printer is not clear. Composite fonts belong
                   76158:  * to Level 2. Using more than 256 characters from a Level 1 font is not
                   76159:  * trivial. Font tables with character codes that exceed 255 should be
                   76160:  * avoided (for now).
                   76161:  *
                   76162:  */
                   76163: 
                   76164:     r = c;
                   76165: 
                   76166:     switch ( writing ) {
                   76167:        case UTFENCODING:
                   76168:            bytes = runetochar(buf, &r);
                   76169:            break;
                   76170: 
                   76171:        default:                        /* one or two bytes? */
                   76172:            if ( r <= 0xFF ) {
                   76173:                buf[0] = r;
                   76174:                bytes = 1;
                   76175:            } else {
                   76176:                buf[0] = (r >> 8);
                   76177:                buf[1] = r;
                   76178:                bytes = 2;
                   76179:            }   /* End else */
                   76180:            break;
                   76181:     }  /* End switch */
                   76182: 
                   76183:     for ( n = 0; n < bytes; n++ ) {
                   76184:        str = &buf[n];
                   76185:        if ( isascii(*str) && isprint(*str) ) {
                   76186:            switch ( *str ) {
                   76187:                case '(':
                   76188:                case ')':
                   76189:                case '\\':
                   76190:                    addbyte('\\');
                   76191: 
                   76192:                default:
                   76193:                    addbyte(*str);
                   76194:            }   /* End switch */
                   76195:        } else addoctal(*str);
                   76196:     }  /* End for */
                   76197: 
                   76198: }   /* End of oputcode */
                   76199: 
                   76200: /*****************************************************************************/
                   76201: 
                   76202: starttext()
                   76203: 
                   76204: {
                   76205: 
                   76206: /*
                   76207:  * Called whenever we want to be sure we're ready to start collecting characters
                   76208:  * for the next call to PostScript procedure t (ie. the one that prints them). If
                   76209:  * textcount is positive we've already started, so there's nothing to do. The more
                   76210:  * complicated encoding schemes save text strings in the strings[] array and need
                   76211:  * detailed information about the strings when they're written to the output file
                   76212:  * in flushtext().
                   76213:  *
                   76214:  */
                   76215: 
                   76216:     if ( textcount < 1 ) {
                   76217:        switch ( encoding ) {
                   76218:            case 0:
                   76219:            case 1:
                   76220:                putc('(', tf);
                   76221:                break;
                   76222: 
                   76223:            case 2:
                   76224:            case 3:
                   76225:                strptr = strings;
                   76226:                spacecount = 0;
                   76227:                line[1].str = strptr;
                   76228:                line[1].dx = 0;
                   76229:                line[1].spaces = 0;
                   76230:                line[1].start = hpos;
                   76231:                line[1].width = 0;
                   76232:                break;
                   76233: 
                   76234:            case MAXENCODING+1:                 /* reverse video */
                   76235:                if ( lastend == -1 )
                   76236:                    lastend = hpos;
                   76237:                putc('(', tf);
                   76238:                break;
                   76239: 
                   76240:            case MAXENCODING+2:                 /* follow a funny baseline */
                   76241:                putc('(', tf);
                   76242:                break;
                   76243:        }   /* End switch */
                   76244: 
                   76245:        textcount = 1;
                   76246:        lastx = stringstart = hpos;
                   76247:     }  /* End if */
                   76248: 
                   76249: }   /* End of starttext */
                   76250: 
                   76251: /*****************************************************************************/
                   76252: 
                   76253: flushtext()
                   76254: 
                   76255: {
                   76256: 
                   76257:     int                i;
                   76258: 
                   76259: /*
                   76260:  *
                   76261:  * Generates a call to the PostScript procedure that processes all the text we've
                   76262:  * accumulated - provided textcount is positive.
                   76263:  *
                   76264:  */
                   76265: 
                   76266:     if ( textcount > 0 ) {
                   76267:        switch ( encoding ) {
                   76268:            case 0:
                   76269:                fprintf(tf, ")%d t\n", stringstart);
                   76270:                break;
                   76271: 
                   76272:            case 1:
                   76273:                fprintf(tf, ")%d %d t\n", stringstart, lasty);
                   76274:                break;
                   76275: 
                   76276:            case 2:
                   76277:                *strptr = '\0';
                   76278:                line[textcount].width = lastx - line[textcount].start;
                   76279:                if ( spacecount != 0 || textcount != 1 ) {
                   76280:                    for ( i = textcount; i > 0; i-- )
                   76281:                        fprintf(tf, "(%s)%d %d", line[i].str, line[i].spaces, line[i].width);
                   76282:                    fprintf(tf, " %d %d %d t\n", textcount, stringstart, lasty);
                   76283:                } else fprintf(tf, "(%s)%d %d w\n", line[1].str, stringstart, lasty);
                   76284:                break;
                   76285: 
                   76286:            case 3:
                   76287:                *strptr = '\0';
                   76288:                if ( spacecount != 0 || textcount != 1 ) {
                   76289:                    for ( i = textcount; i > 0; i-- )
                   76290:                        fprintf(tf, "(%s)%d", line[i].str, line[i].dx);
                   76291:                    fprintf(tf, " %d %d %d t\n", textcount, stringstart, lasty);
                   76292:                } else fprintf(tf, "(%s)%d %d w\n", line[1].str, stringstart, lasty);
                   76293:                break;
                   76294: 
                   76295:            case MAXENCODING+1:
                   76296:                fprintf(tf, ")%d ", stringstart);
                   76297:                fprintf(tf, "%d %d drawrvbox ", lastend - rvslop, (int)(lastx + .5) + rvslop);
                   76298:                fprintf(tf, "t\n", stringstart);
                   76299:                lastend = (lastx + .5) + 2 * rvslop;
                   76300:                break;
                   76301: 
                   76302:            case MAXENCODING+2:
                   76303:                fprintf(tf, ")%d %d t\n", stringstart, lasty);
                   76304:                break;
                   76305:        }   /* End switch */
                   76306:     }  /* End if */
                   76307: 
                   76308:     textcount = 0;
                   76309: 
                   76310: }   /* End of flushtext */
                   76311: 
                   76312: /*****************************************************************************/
                   76313: 
                   76314: endstring()
                   76315: 
                   76316: {
                   76317: 
                   76318:     int                dx;
                   76319: 
                   76320: /*
                   76321:  *
                   76322:  * Horizontal positions are out of sync. End the last open string, adjust the
                   76323:  * printer's position, and start a new string. Assumes we've already started
                   76324:  * accumulating text.
                   76325:  *
                   76326:  */
                   76327: 
                   76328:     switch ( encoding ) {
                   76329:        case 0:
                   76330:        case 1:
                   76331:            fprintf(tf, ")%d(", stringstart);
                   76332:            textcount++;
                   76333:            lastx = stringstart = hpos;
                   76334:            break;
                   76335: 
                   76336:        case 2:
                   76337:        case 3:
                   76338:            dx = hpos - lastx;
                   76339:            if ( spacecount++ == 0 )
                   76340:                line[textcount].dx = dx;
                   76341:            if ( line[textcount].dx != dx ) {
                   76342:                *strptr++ = '\0';
                   76343:                line[textcount].width = lastx - line[textcount].start;
                   76344:                line[++textcount].str = strptr;
                   76345:                *strptr++ = ' ';
                   76346:                line[textcount].dx = dx;
                   76347:                line[textcount].start = lastx;
                   76348:                line[textcount].width = 0;
                   76349:                line[textcount].spaces = 1;
                   76350:            } else {
                   76351:                *strptr++ = ' ';
                   76352:                line[textcount].spaces++;
                   76353:            }   /* End else */
                   76354:            lastx += dx;
                   76355:            break;
                   76356: 
                   76357:        case MAXENCODING+1:
                   76358:            fprintf(tf, ")%d(", stringstart);
                   76359:            textcount++;
                   76360:            lastx = stringstart = hpos;
                   76361:            break;
                   76362: 
                   76363:        case MAXENCODING+2:
                   76364:            flushtext();
                   76365:            starttext();
                   76366:            break;
                   76367:     }  /* End switch */
                   76368: 
                   76369: }   /* End of endstring */
                   76370: 
                   76371: /*****************************************************************************/
                   76372: 
                   76373: endline()
                   76374: 
                   76375: {
                   76376: 
                   76377: /*
                   76378:  *
                   76379:  * The vertical position has changed. Dump any accumulated text, then adjust
                   76380:  * the printer's vertical position.
                   76381:  *
                   76382:  */
                   76383: 
                   76384:     flushtext();
                   76385: 
                   76386:     if ( encoding == 0 || encoding == MAXENCODING+1 )
                   76387:        fprintf(tf, "%d %d m\n", hpos, vpos);
                   76388: 
                   76389:     lastx = stringstart = lastend = hpos;
                   76390:     lasty = vpos;
                   76391: 
                   76392: }   /* End of endline */
                   76393: 
                   76394: /*****************************************************************************/
                   76395: 
                   76396: addbyte(c)
                   76397: 
                   76398:     int                c;
                   76399: 
                   76400: {
                   76401: 
                   76402: /*
                   76403:  *
                   76404:  * Add byte c to the current string.
                   76405:  *
                   76406:  */
                   76407: 
                   76408:     switch ( encoding ) {
                   76409:        case 0:
                   76410:        case 1:
                   76411:            putc(c, tf);
                   76412:            break;
                   76413: 
                   76414:        case 2:
                   76415:        case 3:
                   76416:            *strptr++ = c;
                   76417:            break;
                   76418: 
                   76419:        case MAXENCODING+1:
                   76420:        case MAXENCODING+2:
                   76421:            putc(c, tf);
                   76422:            break;
                   76423:     }  /* End switch */
                   76424: 
                   76425: }   /* End of addbyte */
                   76426: 
                   76427: /*****************************************************************************/
                   76428: 
                   76429: addoctal(c)
                   76430: 
                   76431:     int                c;
                   76432: 
                   76433: {
                   76434: 
                   76435: /*
                   76436:  *
                   76437:  * Add c to the current string as an octal escape.
                   76438:  *
                   76439:  */
                   76440: 
                   76441:     switch ( encoding ) {
                   76442:        case 0:
                   76443:        case 1:
                   76444:            fprintf(tf, "\\%o", c);
                   76445:            break;
                   76446: 
                   76447:        case 2:
                   76448:        case 3:
                   76449:            sprintf(strptr, "\\%o", c);
                   76450:            strptr += strlen(strptr);
                   76451:            break;
                   76452: 
                   76453:        case MAXENCODING+1:
                   76454:        case MAXENCODING+2:
                   76455:            fprintf(tf, "\\%o", c);
                   76456:            break;
                   76457:     }  /* End switch */
                   76458: 
                   76459: }   /* End of addoctal */
                   76460: 
                   76461: /*****************************************************************************/
                   76462: 
                   76463: charlib(code)
                   76464: 
                   76465:     int                code;                   /* either 1 or 2 */
                   76466: 
                   76467: {
                   76468: 
                   76469:     int                pos;                    /* of lastc in downloaded[] */
                   76470:     char       *name;                  /* name of the character */
                   76471:     char       tname[10];              /* in case it's a single ASCII character */
                   76472:     char       temp[150];
                   76473: 
                   76474: /*
                   76475:  *
                   76476:  * Called from oput() for characters having codes less than 040. Special files
                   76477:  * that define PostScript procedures for certain characters can be found in
                   76478:  * directory *fontdir/devpost/charlib. If there's a file that has the same name as
                   76479:  * the character we're trying to print it's copied to the output file, otherwise
                   76480:  * nothing, except some positioning, is done.
                   76481:  *
                   76482:  * All character definitions are only made once. Subsequent requests to print the
                   76483:  * character generate a call to a procedure that begins with the prefix build_ and
                   76484:  * ends with the character's name. Special characters that are assigned codes
                   76485:  * other than 1 are assumed to have additional data files that should be copied
                   76486:  * to the output file immediately after the build_ call. Those data files should
                   76487:  * end in the suffix .map, and usually will be a hex representation of a bitmap.
                   76488:  *
                   76489:  */
                   76490: 
                   76491:     flushtext();
                   76492: 
                   76493:     if ( lastc < 128 ) {               /* ASCII character */
                   76494:        sprintf(tname, "%.3o", lastc);
                   76495:        name = tname;
                   76496:        pos = lastc;
                   76497:     } else {
                   76498:        name = chname(lastc);
                   76499:        pos = lastc - FIRSTSPECIAL + 128;
                   76500:     }  /* End else */
                   76501: 
                   76502:     if ( downloaded[pos] == 0 ) {
                   76503:        sprintf(temp, "%s/dev%s/charlib/%s", fontdir, realdev, name);
                   76504:        if ( exportfile(temp) == TRUE ) {
                   76505:            downloaded[pos] = 1;
                   76506:            t_sf();
                   76507:        }   /* End if */
                   76508:     }  /* End if */
                   76509: 
                   76510:     if ( downloaded[pos] == 1 ) {
                   76511:        xymove(hpos, vpos);
                   76512:        fprintf(tf, "%d build_%s\n", (int) lastw, name);
                   76513:        if ( code != 1 ) {              /* get the bitmap or whatever */
                   76514:            sprintf(temp, "%s/dev%s/charlib/%s.map", fontdir, realdev, name);
                   76515:            if ( access(temp, 04) == 0 && tf == stdout )
                   76516:                cat(temp);
                   76517:        }   /* End if */
                   76518:        fprintf(tf, "%d %d m\n", stringstart = hpos + lastw, vpos);
                   76519:     }  /* End if */
                   76520: 
                   76521: }   /* End of charlib */
                   76522: 
                   76523: /*****************************************************************************/
                   76524: 
                   76525: reset()
                   76526: 
                   76527: {
                   76528: 
                   76529: /*
                   76530:  *
                   76531:  * Reset variables that keep track of the printer's current position, size and
                   76532:  * font. Eventually forces things back in sync before oput() prints the next
                   76533:  * character.
                   76534:  *
                   76535:  */
                   76536: 
                   76537:     lastx = -(slop + 1);
                   76538:     lasty = -1;
                   76539:     lastfont = lastsize = -1;
                   76540: 
                   76541: }   /* End of reset */
                   76542: 
                   76543: /*****************************************************************************/
                   76544: 
                   76545: resetpos()
                   76546: 
                   76547: {
                   76548: 
                   76549: /*
                   76550:  *
                   76551:  * Reset the position tracking variables. Forces oput() to get positions back
                   76552:  * in sync before printing the next character.
                   76553:  *
                   76554:  */
                   76555: 
                   76556:     lastx = -(slop + 1);
                   76557:     lasty = -1;
                   76558: 
                   76559: }   /* End of resetpos */
                   76560: 
                   76561: /*****************************************************************************/
                   76562: 
                   76563: save()
                   76564: 
                   76565: {
                   76566: 
                   76567: /*
                   76568:  *
                   76569:  * Save the current PostScript environment. Initialize things that may have
                   76570:  * disappeared after the preceeding restore.
                   76571:  *
                   76572:  */
                   76573: 
                   76574:     fprintf(tf, "/saveobj save def\n");
                   76575:     fprintf(tf, "mark\n");
                   76576: 
                   76577:     if ( encoding != realencoding )
                   76578:        fprintf(tf, "%d setdecoding\n", encoding);
                   76579: 
                   76580:     if ( gotcolor == TRUE )            /* prevent getcolor() recursion */
                   76581:        setcolor();
                   76582: 
                   76583: }   /* End of save */
                   76584: 
                   76585: /*****************************************************************************/
                   76586: 
                   76587: restore()
                   76588: 
                   76589: {
                   76590: 
                   76591: /*
                   76592:  *
                   76593:  * Restore the previous PostScript environment.
                   76594:  *
                   76595:  */
                   76596: 
                   76597:     flushtext();
                   76598:     fprintf(tf, "cleartomark\n");
                   76599:     fprintf(tf, "saveobj restore\n");
                   76600:     reset();
                   76601: 
                   76602: }   /* End of restore */
                   76603: 
                   76604: /*****************************************************************************/
                   76605: 
                   76606: exportfile(path)
                   76607: 
                   76608:     char       *path;
                   76609: 
                   76610: {
                   76611: 
                   76612:     int                val = FALSE;
                   76613: 
                   76614: /*
                   76615:  *
                   76616:  * Exports the contents of file path to the global environment. Returns TRUE
                   76617:  * if we're doing output (i.e. tf == stdout) and the copy worked.
                   76618:  *
                   76619:  */
                   76620: 
                   76621:     if ( tf == stdout && access(path, 04) == 0 ) {
                   76622:        restore();
                   76623:        fprintf(tf, "%s", BEGINGLOBAL);
                   76624:        val = cat(path);
                   76625:        fprintf(tf, "%s", ENDGLOBAL);
                   76626:        save();
                   76627:     }  /* End if */
                   76628: 
                   76629:     return(val);
                   76630: 
                   76631: }   /* End of exportfile */
                   76632: 
                   76633: /*****************************************************************************/
                   76634: 
                   76635: exportstring(str)
                   76636: 
                   76637:     char       *str;
                   76638: 
                   76639: {
                   76640: 
                   76641: /*
                   76642:  *
                   76643:  * Exports string str to the global environment. No return value needed yet.
                   76644:  *
                   76645:  */
                   76646: 
                   76647:     if ( tf == stdout && str != NULL && *str != '\0' ) {
                   76648:        restore();
                   76649:        fprintf(tf, "%s", BEGINGLOBAL);
                   76650:        fprintf(tf, "%s", str);
                   76651:        fprintf(tf, "%s", ENDGLOBAL);
                   76652:        save();
                   76653:     }  /* End if */
                   76654: 
                   76655: }   /* End of exportstring */
                   76656: 
                   76657: /*****************************************************************************/
                   76658: 
                   76659: redirect(pg)
                   76660: 
                   76661:     int                pg;
                   76662: 
                   76663: {
                   76664: 
                   76665:     static FILE        *fp_null = NULL;
                   76666: 
                   76667: /*
                   76668:  *
                   76669:  * If we're not supposed to print page pg, tf will be directed to /dev/null,
                   76670:  * otherwise output goes to stdout.
                   76671:  *
                   76672:  */
                   76673: 
                   76674:     if ( pg >= 0 && in_olist(pg) == ON )
                   76675:        tf = stdout;
                   76676:     else if ( (tf = fp_null) == NULL )
                   76677:        tf = fp_null = fopen("/dev/null", "w");
                   76678: 
                   76679: }   /* End of redirect */
                   76680: 
                   76681: /*****************************************************************************/
                   76682: 
                   76683: 0707070014231311071006440057030057030000011033400522627504600003300000010457post.src/dpost.utf/dpost.h/*
                   76684:  *
                   76685:  * DEVNAME should be the name of a device whose font files accurately describe
                   76686:  * what's available on the target printer. It's a string that's combined with
                   76687:  * "/usr/lib/font/dev" to locate the final font directory. It can be changed
                   76688:  * using the -T option, but you may end up getting garbage - the character code
                   76689:  * field must agree with PostScript's character encoding scheme for each font and
                   76690:  * troff's one or two character font names must be mapped into the appropriate
                   76691:  * PostScript font names (typically in the prologue)
                   76692:  *
                   76693:  *
                   76694:  */
                   76695: 
                   76696: #define        DEVNAME         "post"          /* name of the target printer */
                   76697: 
                   76698: /*
                   76699:  *
                   76700:  * SLOP controls how much horizontal positioning error we'll accept and primarily
                   76701:  * helps when we're emulating another device. It's used when we output characters
                   76702:  * in oput() to check if troff and the printer have gotten too far out of sync.
                   76703:  * Given in units of points and can be changed using the -S option. Converted to
                   76704:  * machine units in t_init() after the resolution is known.
                   76705:  *
                   76706:  */
                   76707: 
                   76708: #define SLOP           .2              /* horizontal error - in points */
                   76709: 
                   76710: /*
                   76711:  *
                   76712:  * Several different text line encoding schemes are supported. Print time should
                   76713:  * decrease as the value assigned to encoding (in dpost.c) increases, although the
                   76714:  * only encoding that's well tested is the lowest level one, which produces output
                   76715:  * essentially identical to the original version of dpost. Setting DFLTENCODING to
                   76716:  * 0 will give you the most stable (but slowest) encoding. The encoding scheme can
                   76717:  * also be set on the command line using the -e option. Faster methods are based
                   76718:  * on widthshow and may not place words exactly where troff wanted, but errors will
                   76719:  * usually not be noticeable.
                   76720:  *
                   76721:  */
                   76722: 
                   76723: #define MAXENCODING    3
                   76724: 
                   76725: #ifndef DFLTENCODING
                   76726: #define DFLTENCODING   2
                   76727: #endif
                   76728: 
                   76729: /*
                   76730:  *
                   76731:  * The encoding scheme controls how lines of text are output. In the lower level
                   76732:  * schemes words and horizontal positions are put on the stack as they're read and
                   76733:  * when they're printed it's done in reverse order - the first string printed is
                   76734:  * the one on top of the stack and it's the last one on the line. Faster methods
                   76735:  * may be forced to reverse the order of strings on the stack, making the top one
                   76736:  * the first string on the line. STRINGSPACE sets the size of a character array
                   76737:  * that's used to save the strings that make up  a line of text so they can be
                   76738:  * output in reverse order or perhaps combined in groups for widthshow.
                   76739:  *
                   76740:  * MAXSTACK controls how far we let PostScript's operand stack grow and determines
                   76741:  * the number of strings we'll save before printing all or part of a line of text.
                   76742:  * The internal limit in PostScript printers built by Adobe is 500, so MAXSTACK
                   76743:  * should never be bigger than about 240!
                   76744:  *
                   76745:  * Line is a structure used to keep track of the words (or rather strings) on the
                   76746:  * current line that have been read but not printed. dx is the width troff wants
                   76747:  * to use for a space in the current string. start is where the string began, width
                   76748:  * is the total width of the string, and spaces is the number of space characters
                   76749:  * in the current string. *str points to the start of the string in the strings[]
                   76750:  * array. The Line structure is only used in the higher level encoding schemes.
                   76751:  * 
                   76752:  */
                   76753: 
                   76754: #define        MAXSTACK        50              /* most strings we'll save at once */
                   76755: #define        STRINGSPACE     2000            /* bytes available for string storage */
                   76756: 
                   76757: typedef struct {
                   76758:        char    *str;                   /* where the string is stored */
                   76759:        int     dx;                     /* width of a space */
                   76760:        int     spaces;                 /* number of space characters */
                   76761:        int     start;                  /* horizontal starting position */
                   76762:        int     width;                  /* and its total width */
                   76763: } Line;
                   76764: 
                   76765: /*
                   76766:  *
                   76767:  * Simple stuff used to map unrecognized font names into something reasonable. The
                   76768:  * mapping array is initialized using FONTMAP and used in loadfont() whenever the
                   76769:  * job tries to use a font that we don't recognize. Normally only needed when we're
                   76770:  * emulating another device.
                   76771:  *
                   76772:  */
                   76773: 
                   76774: typedef struct {
                   76775:        char    *name;                  /* font name we're looking for */
                   76776:        char    *use;                   /* and this is what we should use */
                   76777: } Fontmap;
                   76778: 
                   76779: #define        FONTMAP                                                         \
                   76780:                                                                        \
                   76781:        {                                                               \
                   76782:            "G", "H",                                                   \
                   76783:            "LO", "S",                                                  \
                   76784:            "S2", "S",                                                  \
                   76785:            "GI", "HI",                                                 \
                   76786:            "HM", "H",                                                  \
                   76787:            "HK", "H",                                                  \
                   76788:            "HL", "H",                                                  \
                   76789:            "PA", "R",                                                  \
                   76790:            "PI", "I",                                                  \
                   76791:            "PB", "B",                                                  \
                   76792:            "PX", "BI",                                                 \
                   76793:            NULL, NULL,                                                 \
                   76794:        }
                   76795: 
                   76796: /*
                   76797:  *
                   76798:  * Non-integer valued functions.
                   76799:  *
                   76800:  */
                   76801: 
                   76802: extern char    *mapfont();
                   76803: 
                   76804: 0707070014231311101006440057030057030000011033600522627504700003400000011211post.src/dpost.utf/dpost.ps%
                   76805: % Version 3.3.2 prologue for troff files.
                   76806: %
                   76807: 
                   76808: /#copies 1 store
                   76809: /aspectratio 1 def
                   76810: /formsperpage 1 def
                   76811: /landscape false def
                   76812: /linewidth .3 def
                   76813: /magnification 1 def
                   76814: /margin 0 def
                   76815: /orientation 0 def
                   76816: /resolution 720 def
                   76817: /rotation 1 def
                   76818: /xoffset 0 def
                   76819: /yoffset 0 def
                   76820: 
                   76821: /roundpage true def
                   76822: /useclippath true def
                   76823: /pagebbox [0 0 612 792] def
                   76824: 
                   76825: /R  /Times-Roman def
                   76826: /I  /Times-Italic def
                   76827: /B  /Times-Bold def
                   76828: /BI /Times-BoldItalic def
                   76829: /H  /Helvetica def
                   76830: /HI /Helvetica-Oblique def
                   76831: /HB /Helvetica-Bold def
                   76832: /HX /Helvetica-BoldOblique def
                   76833: /CW /Courier def
                   76834: /CO /Courier def
                   76835: /CI /Courier-Oblique def
                   76836: /CB /Courier-Bold def
                   76837: /CX /Courier-BoldOblique def
                   76838: /PA /Palatino-Roman def
                   76839: /PI /Palatino-Italic def
                   76840: /PB /Palatino-Bold def
                   76841: /PX /Palatino-BoldItalic def
                   76842: /Hr /Helvetica-Narrow def
                   76843: /Hi /Helvetica-Narrow-Oblique def
                   76844: /Hb /Helvetica-Narrow-Bold def
                   76845: /Hx /Helvetica-Narrow-BoldOblique def
                   76846: /KR /Bookman-Light def
                   76847: /KI /Bookman-LightItalic def
                   76848: /KB /Bookman-Demi def
                   76849: /KX /Bookman-DemiItalic def
                   76850: /AR /AvantGarde-Book def
                   76851: /AI /AvantGarde-BookOblique def
                   76852: /AB /AvantGarde-Demi def
                   76853: /AX /AvantGarde-DemiOblique def
                   76854: /NR /NewCenturySchlbk-Roman def
                   76855: /NI /NewCenturySchlbk-Italic def
                   76856: /NB /NewCenturySchlbk-Bold def
                   76857: /NX /NewCenturySchlbk-BoldItalic def
                   76858: /ZD /ZapfDingbats def
                   76859: /ZI /ZapfChancery-MediumItalic def
                   76860: /S  /S def
                   76861: /S1 /S1 def
                   76862: /GR /Symbol def
                   76863: 
                   76864: /inch {72 mul} bind def
                   76865: /min {2 copy gt {exch} if pop} bind def
                   76866: 
                   76867: /show {show} bind def          % so later references don't bind
                   76868: /widthshow {widthshow} bind def
                   76869: /stringwidth {stringwidth} bind def
                   76870: 
                   76871: /setup {
                   76872:        counttomark 2 idiv {def} repeat pop
                   76873: 
                   76874:        landscape {/orientation 90 orientation add def} if
                   76875:        /scaling 72 resolution div def
                   76876:        linewidth setlinewidth
                   76877:        1 setlinecap
                   76878: 
                   76879:        pagedimensions
                   76880:        xcenter ycenter translate
                   76881:        orientation rotation mul rotate
                   76882:        width 2 div neg height 2 div translate
                   76883:        xoffset inch yoffset inch neg translate
                   76884:        margin 2 div dup neg translate
                   76885:        magnification dup aspectratio mul scale
                   76886:        scaling scaling scale
                   76887: 
                   76888:        addmetrics
                   76889:        0 0 moveto
                   76890: } def
                   76891: 
                   76892: /pagedimensions {
                   76893:        useclippath userdict /gotpagebbox known not and {
                   76894:                /pagebbox [clippath pathbbox newpath] def
                   76895:                roundpage currentdict /roundpagebbox known and {roundpagebbox} if
                   76896:        } if
                   76897:        pagebbox aload pop
                   76898:        4 -1 roll exch 4 1 roll 4 copy
                   76899:        landscape {4 2 roll} if
                   76900:        sub /width exch def
                   76901:        sub /height exch def
                   76902:        add 2 div /xcenter exch def
                   76903:        add 2 div /ycenter exch def
                   76904:        userdict /gotpagebbox true put
                   76905: } def
                   76906: 
                   76907: /addmetrics {
                   76908:        /Symbol /S null Sdefs cf
                   76909:        /Times-Roman /S1 StandardEncoding dup length array copy S1defs cf
                   76910: } def
                   76911: 
                   76912: /pagesetup {
                   76913:        /page exch def
                   76914:        currentdict /pagedict known currentdict page known and {
                   76915:                page load pagedict exch get cvx exec
                   76916:        } if
                   76917: } def
                   76918: 
                   76919: /decodingdefs [
                   76920:        {counttomark 2 idiv {y moveto show} repeat}
                   76921:        {neg /y exch def counttomark 2 idiv {y moveto show} repeat}
                   76922:        {neg moveto {2 index stringwidth pop sub exch div 0 32 4 -1 roll widthshow} repeat}
                   76923:        {neg moveto {spacewidth sub 0.0 32 4 -1 roll widthshow} repeat}
                   76924:        {counttomark 2 idiv {y moveto show} repeat}
                   76925:        {neg setfunnytext}
                   76926: ] def
                   76927: 
                   76928: /setdecoding {/t decodingdefs 3 -1 roll get bind def} bind def
                   76929: 
                   76930: /w {neg moveto show} bind def
                   76931: /m {neg dup /y exch def moveto} bind def
                   76932: /done {/lastpage where {pop lastpage} if} def
                   76933: 
                   76934: /f {
                   76935:        dup /font exch def findfont exch
                   76936:        dup /ptsize exch def scaling div dup /size exch def scalefont setfont
                   76937:        linewidth ptsize mul scaling 10 mul div setlinewidth
                   76938:        /spacewidth ( ) stringwidth pop def
                   76939: } bind def
                   76940: 
                   76941: /changefont {
                   76942:        /fontheight exch def
                   76943:        /fontslant exch def
                   76944:        currentfont [
                   76945:                1 0
                   76946:                fontheight ptsize div fontslant sin mul fontslant cos div
                   76947:                fontheight ptsize div
                   76948:                0 0
                   76949:        ] makefont setfont
                   76950: } bind def
                   76951: 
                   76952: /sf {f} bind def
                   76953: 
                   76954: /cf {
                   76955:        dup length 2 idiv
                   76956:        /entries exch def
                   76957:        /chtab exch def
                   76958:        /newencoding exch def
                   76959:        /newfont exch def
                   76960: 
                   76961:        findfont dup length 1 add dict
                   76962:        /newdict exch def
                   76963:        {1 index /FID ne {newdict 3 1 roll put}{pop pop} ifelse} forall
                   76964: 
                   76965:        newencoding type /arraytype eq {newdict /Encoding newencoding put} if
                   76966: 
                   76967:        newdict /Metrics entries dict put
                   76968:        newdict /Metrics get
                   76969:        begin
                   76970:                chtab aload pop
                   76971:                1 1 entries {pop def} for
                   76972:                newfont newdict definefont pop
                   76973:        end
                   76974: } bind def
                   76975: 
                   76976: %
                   76977: % A few arrays used to adjust reference points and character widths in some
                   76978: % of the printer resident fonts. If square roots are too high try changing
                   76979: % the lines describing /radical and /radicalex to,
                   76980: %
                   76981: %      /radical        [0 -75 550 0]
                   76982: %      /radicalex      [-50 -75 500 0]
                   76983: %
                   76984: % Move braceleftbt a bit - default PostScript character is off a bit.
                   76985: %
                   76986: 
                   76987: /Sdefs [
                   76988:        /bracketlefttp          [201 500]
                   76989:        /bracketleftbt          [201 500]
                   76990:        /bracketrighttp         [-81 380]
                   76991:        /bracketrightbt         [-83 380]
                   76992:        /braceleftbt            [203 490]
                   76993:        /bracketrightex         [220 -125 500 0]
                   76994:        /radical                [0 0 550 0]
                   76995:        /radicalex              [-50 0 500 0]
                   76996:        /parenleftex            [-20 -170 0 0]
                   76997:        /integral               [100 -50 500 0]
                   76998:        /infinity               [10 -75 730 0]
                   76999: ] def
                   77000: 
                   77001: /S1defs [
                   77002:        /underscore             [0 80 500 0]
                   77003:        /endash                 [7 90 650 0]
                   77004: ] def
                   77005: 0707070014231311111006440057030057030000011034000522627504700003200000061605post.src/dpost.utf/draw.c/*
                   77006:  *
                   77007:  * Drawing routines used by dpost. Almost no real work is done here. Instead
                   77008:  * the required calculations are done in special Postscript procedures that
                   77009:  * include:
                   77010:  *
                   77011:  *
                   77012:  *     Dl
                   77013:  *
                   77014:  *       x1 y1 x y Dl -
                   77015:  *
                   77016:  *         Starts a new path and then draws a line from the current point
                   77017:  *         (x, y) to (x1, y1).
                   77018:  *
                   77019:  *     De
                   77020:  *
                   77021:  *       x y a b De -
                   77022:  *
                   77023:  *         Starts a new path and then draws an ellipse that has its left side
                   77024:  *         at the current point (x, y) and horizontal and vertical axes lengths
                   77025:  *         given by a and b respectively.
                   77026:  *
                   77027:  *     Da
                   77028:  *
                   77029:  *       x y dx1 dy1 dx2 dy2 Da -
                   77030:  *
                   77031:  *         Starts a new segment and then draws a circular arc from the current
                   77032:  *         point (x, y) to (x + dx1 + dx2, y + dy1 + dy2). The center of the
                   77033:  *         circle is at (x + dx1, y + dy1). Arcs always go counter-clockwise
                   77034:  *         from the starting point to the end point.
                   77035:  *
                   77036:  *     DA
                   77037:  *
                   77038:  *       x y dx1 dy1 dx2 dy2 DA -
                   77039:  *
                   77040:  *         Draws a clockwise arc from (x, y) to (x + dx1 + dx2, y + dy1 + dy2)
                   77041:  *         with center at (x + dx1, y + dy1). Only needed when we're building
                   77042:  *         large paths that use arcs and want to control the current point. The
                   77043:  *         arguments passed to drawarc() will be whatever they would have been
                   77044:  *         for a counter-clockwise arc, so we need to map them into appropriate
                   77045:  *         arguments for PostScript's arcn operator. The mapping is,
                   77046:  *
                   77047:  *                     x = hpos + dx1' + dx2'
                   77048:  *                     y = vpos + dy1' + dy2'
                   77049:  *                     dx1 = -dx2'
                   77050:  *                     dy1 = -dy2'
                   77051:  *                     dx2 = -dx1'
                   77052:  *                     dy2 = -dy1'
                   77053:  *
                   77054:  *        where primed values represent the drawarc() arguments and (hpos, vpos)
                   77055:  *        is our current position.
                   77056:  *
                   77057:  *     Ds
                   77058:  *
                   77059:  *       x0 y0 x1 y1 x2 y2 Ds -
                   77060:  *
                   77061:  *         Starts a new segment and then draws a quadratic spline connecting
                   77062:  *         point ((x0 + x1)/2, (y0 + y1)/2) to ((x1 + x2)/2, (y1 + y2)/2).
                   77063:  *         The points used in Postscript's curveto procedure are given by,
                   77064:  *
                   77065:  *             x0' = (x0 + 5 * x1) / 6
                   77066:  *             x1' = (x2 + 5 * x1) / 6
                   77067:  *             x2' = (x1 + x2) / 2
                   77068:  *
                   77069:  *         with similar equations for the y coordinates.
                   77070:  *
                   77071:  * By default all the PostScript drawing procedures begin with a newpath (just to
                   77072:  * be safe) and end with a stroke, which essentially isolates the path elements
                   77073:  * built by the drawing procedures. In order to accommodate big paths built from
                   77074:  * smaller pieces each of the PostScript drawing procedures can forced to retain
                   77075:  * the path that's being built. That's what happens in beginpath() when an "x X
                   77076:  * BeginPath" command is read. beginpath() sets the PostScript variable inpath to
                   77077:  * true, and that essentially eliminates the newpath/stroke pair that bracket the
                   77078:  * individual pieces. In that case the path is terminated and drawn when dpost
                   77079:  * reads an "x X DrawPath" command.
                   77080:  *
                   77081:  * Early versions of dpost included the PostScript drawing procedures as part of
                   77082:  * the prologue, and as a result they were included with every job, even if they
                   77083:  * were never used. This version has separated the drawing procedures from the
                   77084:  * default prologue (they're now in *drawfile) and only includes them if they're
                   77085:  * really needed, which is yet another convenient violation of page independence.
                   77086:  * Routine getdraw() is responsible for adding *drawfile to the output file, and
                   77087:  * if it can't read *drawfile it continues on as if nothing happened. That means
                   77088:  * everything should still work if you append *drawfile to *prologue and then
                   77089:  * delete *drawfile.
                   77090:  *
                   77091:  */
                   77092: 
                   77093: #include <stdio.h>
                   77094: #include <math.h>
                   77095: 
                   77096: #include "gen.h"                       /* general purpose definitions */
                   77097: #include "ext.h"                       /* external variable definitions */
                   77098: #include "motion.h"                    /* positioning macros */
                   77099: 
                   77100: int    gotdraw = FALSE;                /* TRUE when *drawfile has been added */
                   77101: int    gotbaseline = FALSE;            /* TRUE after *baselinefile is added */
                   77102: int    inpath = FALSE;                 /* TRUE if we're putting pieces together */
                   77103: 
                   77104: /*
                   77105:  *
                   77106:  * All these should be defined in file dpost.c.
                   77107:  *
                   77108:  */
                   77109: 
                   77110: extern int             hpos;
                   77111: extern int             vpos;
                   77112: extern int             encoding;
                   77113: extern int             maxencoding;
                   77114: extern int             realencoding;
                   77115: 
                   77116: extern char            *drawfile;
                   77117: extern char            *baselinefile;
                   77118: extern FILE            *tf;
                   77119: 
                   77120: /*****************************************************************************/
                   77121: 
                   77122: getdraw()
                   77123: 
                   77124: {
                   77125: 
                   77126: /*
                   77127:  *
                   77128:  * Responsible for making sure the PostScript drawing procedures are downloaded
                   77129:  * from *drawfile. Stuff is done at most once per job, and only if the job needs
                   77130:  * them. For now I've decided not to quit if we can't read the drawing file. That
                   77131:  * pretty much assumes an old version of prologue is being used that includes all
                   77132:  * the drawing procedures.
                   77133:  *
                   77134:  */
                   77135: 
                   77136:     if ( gotdraw == FALSE )
                   77137:        exportfile(drawfile);
                   77138: 
                   77139:     if ( tf == stdout )
                   77140:        gotdraw = TRUE;
                   77141: 
                   77142: }   /* End of getdraw */
                   77143: 
                   77144: /*****************************************************************************/
                   77145: 
                   77146: drawline(dx, dy)
                   77147: 
                   77148:     int                dx, dy;                 /* endpoint is (hpos+dx, vpos+dy) */
                   77149: 
                   77150: {
                   77151: 
                   77152: /*
                   77153:  *
                   77154:  * Draws a line from (hpos, vpos) to (hpos+dx, vpos+dy), and leaves the current
                   77155:  * position at the endpoint.
                   77156:  *
                   77157:  */
                   77158: 
                   77159:     if ( dx == 0 && dy == 0 )
                   77160:        drawcirc(1);
                   77161:     else fprintf(tf, "%d %d %d %d Dl\n", hpos + dx, vpos + dy, hpos, vpos);
                   77162: 
                   77163:     if ( dobbox == TRUE ) {
                   77164:        cover((double)hpos, (double)-vpos);
                   77165:        cover((double)(hpos + dx), (double)-(vpos + dy));
                   77166:     }  /* End if */
                   77167: 
                   77168:     hgoto(hpos+dx);                    /* where troff expects to be */
                   77169:     vgoto(vpos+dy);
                   77170: 
                   77171:     resetpos();                                /* not sure where the printer is */
                   77172: 
                   77173: }   /* End of drawline */
                   77174: 
                   77175: /*****************************************************************************/
                   77176: 
                   77177: drawcirc(d)
                   77178: 
                   77179:     int                d;                      /* diameter of the circle */
                   77180: 
                   77181: {
                   77182: 
                   77183: /*
                   77184:  *
                   77185:  * Draws a circle of diameter d with the left 'side' of the circle at the
                   77186:  * current point. After we're finished drawing we move the current position
                   77187:  * to the right side.
                   77188:  *
                   77189:  */
                   77190: 
                   77191:     drawellip(d, d);
                   77192: 
                   77193: }   /* End of drawcirc */
                   77194: 
                   77195: /*****************************************************************************/
                   77196: 
                   77197: drawellip(a, b)
                   77198: 
                   77199:     int                a, b;                   /* axes lengths for the ellipse */
                   77200: 
                   77201: {
                   77202: 
                   77203: /*
                   77204:  *
                   77205:  * Draws an ellipse having axes lengths horizontally and vertically of a and
                   77206:  * b. The left side of the ellipse is at the current point. After we're done
                   77207:  * drawing the path we move the current position to the right side.
                   77208:  *
                   77209:  */
                   77210: 
                   77211:     if ( a == 0 && b == 0 )
                   77212:        return;
                   77213: 
                   77214:     fprintf(tf, "%d %d %d %d De\n", hpos, vpos, a, b);
                   77215: 
                   77216:     if ( dobbox == TRUE ) {
                   77217:        cover((double)hpos, (double)-(vpos + b/2));
                   77218:        cover((double)(hpos+a), (double)-(vpos - b/2));
                   77219:     }  /* End if */
                   77220: 
                   77221:     hgoto(hpos + a);                   /* where troff expects to be */
                   77222:     vgoto(vpos);
                   77223: 
                   77224:     resetpos();                                /* not sure where the printer is */
                   77225: 
                   77226: }   /* End of drawellip */
                   77227: 
                   77228: /*****************************************************************************/
                   77229: 
                   77230: drawarc(dx1, dy1, dx2, dy2, c)
                   77231: 
                   77232:     int                dx1, dy1;               /* vector from current pos to center */
                   77233:     int                dx2, dy2;               /* from center to end of the arc */
                   77234:     int                c;                      /* clockwise if c is A */
                   77235: 
                   77236: {
                   77237: 
                   77238: /*
                   77239:  *
                   77240:  * If c isn't set to 'A' a counter-clockwise arc is drawn from the current point
                   77241:  * (hpos, vpos) to (hpos+dx1+dx2, vpos+dy1+dy2). The center of the circle is the
                   77242:  * point (hpos+dx1, vpos+dy1). If c is 'A' the arc goes clockwise from the point
                   77243:  * (hpos+dx1+dx2, vpos+dy1+dy2) to (hpos, vpos). Clockwise arcs are only needed
                   77244:  * if we're building a larger path out of pieces that include arcs, and want to
                   77245:  * have PostScript manage the path for us. Arguments (for a clockwise arc) are
                   77246:  * what would have been supplied if the arc was drawn in a counter-clockwise
                   77247:  * direction, and are converted to values suitable for use with PostScript's arcn
                   77248:  * operator.
                   77249:  *
                   77250:  */
                   77251: 
                   77252:     if ( (dx1 != 0 || dy1 != 0) && (dx2 != 0 || dy2 != 0) ) {
                   77253:        if ( c != 'A' )
                   77254:            fprintf(tf, "%d %d %d %d %d %d Da\n", hpos, vpos, dx1, dy1, dx2, dy2);
                   77255:        else fprintf(tf, "%d %d %d %d %d %d DA\n", hpos+dx1+dx2, vpos+dy1+dy2,
                   77256:                                                -dx2, -dy2, -dx1, -dy1);
                   77257: 
                   77258:        if ( dobbox == TRUE )
                   77259:            arc_extreme(dx1, dy1, dx2, dy2);
                   77260:     }  /* End if */
                   77261: 
                   77262:     hgoto(hpos + dx1 + dx2);           /* where troff expects to be */
                   77263:     vgoto(vpos + dy1 + dy2);
                   77264: 
                   77265:     resetpos();                                /* not sure where the printer is */
                   77266: 
                   77267: }   /* End of drawarc */
                   77268: 
                   77269: /*****************************************************************************/
                   77270: 
                   77271: drawspline(fp, flag)
                   77272: 
                   77273:     FILE       *fp;                    /* input for point list */
                   77274:     int                flag;                   /* flag!=1 connect end points */
                   77275: 
                   77276: {
                   77277: 
                   77278:     int                x[100], y[100];
                   77279:     int                i, N;
                   77280: 
                   77281: /*
                   77282:  *
                   77283:  * Spline drawing routine for Postscript printers. The complicated stuff is
                   77284:  * handled by procedure Ds, which should be defined in the library file. I've
                   77285:  * seen wrong implementations of troff's spline drawing, so fo the record I'll
                   77286:  * write down the parametric equations and the necessary conversions to Bezier
                   77287:  * cubic splines (as used in Postscript).
                   77288:  *
                   77289:  *
                   77290:  * Parametric equation (x coordinate only):
                   77291:  *
                   77292:  *
                   77293:  *         (x2 - 2 * x1 + x0)    2                    (x0 + x1)
                   77294:  *     x = ------------------ * t   + (x1 - x0) * t + ---------
                   77295:  *                 2                                      2
                   77296:  *
                   77297:  *
                   77298:  * The coefficients in the Bezier cubic are,
                   77299:  *
                   77300:  *
                   77301:  *     A = 0
                   77302:  *     B = (x2 - 2 * x1 + x0) / 2
                   77303:  *     C = x1 - x0
                   77304:  *
                   77305:  *
                   77306:  * while the current point is,
                   77307:  *
                   77308:  *     current-point = (x0 + x1) / 2
                   77309:  *
                   77310:  * Using the relationships given in the Postscript manual (page 121) it's easy to
                   77311:  * see that the control points are given by,
                   77312:  *
                   77313:  *
                   77314:  *     x0' = (x0 + 5 * x1) / 6
                   77315:  *     x1' = (x2 + 5 * x1) / 6
                   77316:  *     x2' = (x1 + x2) / 2
                   77317:  *
                   77318:  *
                   77319:  * where the primed variables are the ones used by curveto. The calculations
                   77320:  * shown above are done in procedure Ds using the coordinates set up in both
                   77321:  * the x[] and y[] arrays.
                   77322:  *
                   77323:  * A simple test of whether your spline drawing is correct would be to use cip
                   77324:  * to draw a spline and some tangent lines at appropriate points and then print
                   77325:  * the file.
                   77326:  *
                   77327:  */
                   77328: 
                   77329:     for ( N = 2; N < sizeof(x)/sizeof(x[0]); N++ )
                   77330:        if (fscanf(fp, "%d %d", &x[N], &y[N]) != 2)
                   77331:                break;
                   77332: 
                   77333:     x[0] = x[1] = hpos;
                   77334:     y[0] = y[1] = vpos;
                   77335: 
                   77336:     for (i = 1; i < N; i++) {
                   77337:        x[i+1] += x[i];
                   77338:        y[i+1] += y[i];
                   77339:     }  /* End for */
                   77340: 
                   77341:     x[N] = x[N-1];
                   77342:     y[N] = y[N-1];
                   77343: 
                   77344:     for (i = ((flag!=1)?0:1); i < ((flag!=1)?N-1:N-2); i++) {
                   77345:        fprintf(tf, "%d %d %d %d %d %d Ds\n", x[i], y[i], x[i+1], y[i+1], x[i+2], y[i+2]);
                   77346:        if ( dobbox == TRUE ) {         /* could be better */
                   77347:            cover((double)(x[i] + x[i+1])/2,(double)-(y[i] + y[i+1])/2);
                   77348:            cover((double)x[i+1], (double)-y[i+1]);
                   77349:            cover((double)(x[i+1] + x[i+2])/2, (double)-(y[i+1] + y[i+2])/2);
                   77350:        }   /* End if */
                   77351:     }  /* End for */
                   77352: 
                   77353:     hgoto(x[N]);                       /* where troff expects to be */
                   77354:     vgoto(y[N]);
                   77355: 
                   77356:     resetpos();                                /* not sure where the printer is */
                   77357: 
                   77358: }   /* End of drawspline */
                   77359: 
                   77360: /*****************************************************************************/
                   77361: 
                   77362: arc_extreme(dx1, dy1, dx2, dy2)
                   77363: 
                   77364:     int                dx1, dy1, dx2, dy2;
                   77365: 
                   77366: {
                   77367: 
                   77368:     double     x0, y0, x1, y1, xc, yc;  /* start, end, center */
                   77369:     double     r, xmin, ymin, xmax, ymax;
                   77370:     int                j, k;
                   77371: 
                   77372: /*
                   77373:  *
                   77374:  * bounding box of a circular arc             Eric Grosse  24 May 84
                   77375:  *
                   77376:  * Conceptually, this routine generates a list consisting of the start,
                   77377:  * end, and whichever north, east, south, and west points lie on the arc.
                   77378:  * The bounding box is then the range of this list.
                   77379:  *     list = {start,end}
                   77380:  *     j = quadrant(start)
                   77381:  *     k = quadrant(end)
                   77382:  *     if( j==k && long way 'round )  append north,west,south,east
                   77383:  *     else
                   77384:  *       while( j != k )
                   77385:  *          append center+radius*[j-th of north,west,south,east unit vectors]
                   77386:  *          j += 1  (mod 4)
                   77387:  *     return( bounding box of list )
                   77388:  * The following code implements this, with simple optimizations.
                   77389:  *
                   77390:  */
                   77391: 
                   77392:     x0 = hpos;
                   77393:     y0 = -vpos;
                   77394:     x1 = hpos + dx1 + dx2;
                   77395:     y1 = -(vpos + dy1 + dy2);
                   77396:     xc = hpos + dx1;
                   77397:     yc = -(vpos + dy1);
                   77398: 
                   77399:     x0 -= xc; y0 -= yc;                        /* move to center */
                   77400:     x1 -= xc; y1 -= yc;
                   77401:     xmin = (x0<x1)?x0:x1; ymin = (y0<y1)?y0:y1;
                   77402:     xmax = (x0>x1)?x0:x1; ymax = (y0>y1)?y0:y1;
                   77403:     r = sqrt(x0*x0 + y0*y0);
                   77404:     if (r > 0.0) {
                   77405:        j = quadrant(x0,y0);
                   77406:        k = quadrant(x1,y1);
                   77407:        if (j == k && y1*x0 < x1*y0) {
                   77408:            /* viewed as complex numbers, if Im(z1/z0)<0, arc is big */
                   77409:            if( xmin > -r) xmin = -r; if( ymin > -r) ymin = -r;
                   77410:            if( xmax <  r) xmax =  r; if( ymax <  r) ymax =  r;
                   77411:        } else {
                   77412:            while (j != k) {
                   77413:                switch (j) {
                   77414:                    case 1: if( ymax <  r) ymax =  r; break; /* north */
                   77415:                    case 2: if( xmin > -r) xmin = -r; break; /* west */
                   77416:                    case 3: if( ymin > -r) ymin = -r; break; /* south */
                   77417:                    case 4: if( xmax <  r) xmax =  r; break; /* east */
                   77418:                }   /* End switch */
                   77419:                j = j%4 + 1;
                   77420:            }   /* End while */
                   77421:        }   /* End else */
                   77422:     }  /* End if */
                   77423: 
                   77424:     xmin += xc; ymin += yc;
                   77425:     xmax += xc; ymax += yc;
                   77426:     cover(xmin, ymin);
                   77427:     cover(xmax, ymax);
                   77428: 
                   77429: }   /* End of arc_extreme */
                   77430: 
                   77431: /*****************************************************************************/
                   77432: 
                   77433: quadrant(x,y)
                   77434: 
                   77435:        double x, y;
                   77436: 
                   77437: {
                   77438: 
                   77439:     if (     x>=0.0 && y> 0.0) return(1);
                   77440:     else if( x< 0.0 && y>=0.0) return(2);
                   77441:     else if( x<=0.0 && y< 0.0) return(3);
                   77442:     else if( x> 0.0 && y<=0.0) return(4);
                   77443:     else                      return 0;        /* shut up lint */
                   77444: 
                   77445: }   /* End of quadrant */
                   77446: 
                   77447: /*****************************************************************************/
                   77448: 
                   77449: beginpath(buf, copy)
                   77450: 
                   77451:     char       *buf;                   /* whatever followed "x X BeginPath" */
                   77452:     int                copy;                   /* ignore *buf if FALSE */
                   77453: 
                   77454: {
                   77455: 
                   77456: /*
                   77457:  *
                   77458:  * Called from devcntrl() whenever an "x X BeginPath" command is read. It's used
                   77459:  * to mark the start of a sequence of drawing commands that should be grouped
                   77460:  * together and treated as a single path. By default the drawing procedures in
                   77461:  * *drawfile treat each drawing command as a separate object, and usually start
                   77462:  * with a newpath (just as a precaution) and end with a stroke. The newpath and
                   77463:  * stroke isolate individual drawing commands and make it impossible to deal with
                   77464:  * composite objects. "x X BeginPath" can be used to mark the start of drawing
                   77465:  * commands that should be grouped together and treated as a single object, and
                   77466:  * part of what's done here ensures that the PostScript drawing commands defined
                   77467:  * in *drawfile skip the newpath and stroke, until after the next "x X DrawPath"
                   77468:  * command. At that point the path that's been built up can be manipulated in
                   77469:  * various ways (eg. filled and/or stroked with a different line width).
                   77470:  *
                   77471:  * String *buf is unnecessary and is only included for compatibility with an early
                   77472:  * verion of that's still in use. In that version "x X BeginObject" marked the
                   77473:  * start of a graphical object, and whatever followed it was passed along in *buf
                   77474:  * and copied to the output file. Color selection is one of the options that's
                   77475:  * available in parsebuf(), so if we get here we add *colorfile to the output
                   77476:  * file before doing anything important.
                   77477:  *
                   77478:  */
                   77479: 
                   77480:     if ( inpath == FALSE ) {
                   77481:        flushtext();
                   77482:        getdraw();
                   77483:        getcolor();
                   77484:        fprintf(tf, "gsave\n");
                   77485:        fprintf(tf, "newpath\n");
                   77486:        fprintf(tf, "%d %d m\n", hpos, vpos);
                   77487:        fprintf(tf, "/inpath true def\n");
                   77488:        if ( copy == TRUE )
                   77489:            fprintf(tf, "%s", buf);
                   77490:        inpath = TRUE;
                   77491:     }  /* End if */
                   77492: 
                   77493: }   /* End of beginpath */
                   77494: 
                   77495: /*****************************************************************************/
                   77496: 
                   77497: drawpath(buf, copy)
                   77498: 
                   77499:     char       *buf;
                   77500:     int                copy;
                   77501: 
                   77502: {
                   77503: 
                   77504: /*
                   77505:  *
                   77506:  * Called from devcntrl() whenever an "x X DrawPath" command is read. It marks the
                   77507:  * end of the path started by the last "x X BeginPath" command and uses whatever
                   77508:  * has been passed along in *buf to manipulate the path (eg. fill and/or stroke
                   77509:  * the path). Once that's been done the drawing procedures are restored to their
                   77510:  * default behavior in which each drawing command is treated as an isolated path.
                   77511:  * The new version (called after "x X DrawPath") has copy set to FALSE, and calls
                   77512:  * parsebuf() to figure out what goes in the output file. It's a feeble attempt
                   77513:  * to free users and preprocessors (like pic) from having to know PostScript. The
                   77514:  * comments in parsebuf() describe what's handled.
                   77515:  *
                   77516:  * In the early version a path was started with "x X BeginObject" and ended with
                   77517:  * "x X EndObject". In both cases *buf was just copied to the output file, and
                   77518:  * was expected to be legitimate PostScript that manipulated the current path.
                   77519:  * The old escape sequence will be supported for a while (for Ravi), and always
                   77520:  * call this routine with copy set to TRUE.
                   77521:  * 
                   77522:  *
                   77523:  */
                   77524: 
                   77525:     if ( inpath == TRUE ) {
                   77526:        if ( copy == TRUE )
                   77527:            fprintf(tf, "%s", buf);
                   77528:        else parsebuf(buf);
                   77529:        fprintf(tf, "grestore\n");
                   77530:        fprintf(tf, "/inpath false def\n");
                   77531:        reset();
                   77532:        inpath = FALSE;
                   77533:     }  /* End if */
                   77534: 
                   77535: }   /* End of drawpath */
                   77536: 
                   77537: /*****************************************************************************/
                   77538: 
                   77539: parsebuf(buf)
                   77540: 
                   77541:     char       *buf;                   /* whatever followed "x X DrawPath" */
                   77542: 
                   77543: {
                   77544: 
                   77545:     char       *p;                     /* usually the next token */
                   77546:     char       *p1;                    /* for grabbing arguments */
                   77547:     char       *pend;                  /* end of the original string (ie. *buf) */
                   77548:     int                gsavelevel = 0;         /* non-zero if we've done a gsave */
                   77549: 
                   77550: /*
                   77551:  *
                   77552:  * Simple minded attempt at parsing the string that followed an "x X DrawPath"
                   77553:  * command. Everything not recognized here is simply ignored - there's absolutely
                   77554:  * no error checking and what was originally in buf is clobbered by strtok().
                   77555:  * A typical *buf might look like,
                   77556:  *
                   77557:  *     gray .9 fill stroke
                   77558:  *
                   77559:  * to fill the current path with a gray level of .9 and follow that by stroking the
                   77560:  * outline of the path. Since unrecognized tokens are ignored the last example
                   77561:  * could also be written as,
                   77562:  *
                   77563:  *     with gray .9 fill then stroke
                   77564:  *
                   77565:  * The "with" and "then" strings aren't recognized tokens and are simply discarded.
                   77566:  * The "stroke", "fill", and "wfill" force out appropriate PostScript code and are
                   77567:  * followed by a grestore. In otherwords changes to the grahics state (eg. a gray
                   77568:  * level or color) are reset to default values immediately after the stroke, fill,
                   77569:  * or wfill tokens. For now "fill" gets invokes PostScript's eofill operator and
                   77570:  * "wfill" calls fill (ie. the operator that uses the non-zero winding rule).
                   77571:  *
                   77572:  * The tokens that cause temporary changes to the graphics state are "gray" (for
                   77573:  * setting the gray level), "color" (for selecting a known color from the colordict
                   77574:  * dictionary defined in *colorfile), and "line" (for setting the line width). All
                   77575:  * three tokens can be extended since strncmp() makes the comparison. For example
                   77576:  * the strings "line" and "linewidth" accomplish the same thing. Colors are named
                   77577:  * (eg. "red"), but must be appropriately defined in *colorfile. For now all three
                   77578:  * tokens must be followed immediately by their single argument. The gray level
                   77579:  * (ie. the argument that follows "gray") should be a number between 0 and 1, with
                   77580:  * 0 for black and 1 for white.
                   77581:  *
                   77582:  * To pass straight PostScript through enclose the appropriate commands in double
                   77583:  * quotes. Straight PostScript is only bracketed by the outermost gsave/grestore
                   77584:  * pair (ie. the one from the initial "x X BeginPath") although that's probably
                   77585:  * a mistake. Suspect I may have to change the double quote delimiters.
                   77586:  *
                   77587:  */
                   77588: 
                   77589:     pend = buf + strlen(buf);
                   77590:     p = strtok(buf, " \n");
                   77591: 
                   77592:     while ( p != NULL ) {
                   77593:        if ( gsavelevel == 0 ) {
                   77594:            fprintf(tf, "gsave\n");
                   77595:            gsavelevel++;
                   77596:        }   /* End if */
                   77597:        if ( strcmp(p, "stroke") == 0 ) {
                   77598:            fprintf(tf, "closepath stroke\ngrestore\n");
                   77599:            gsavelevel--;
                   77600:        } else if ( strcmp(p, "openstroke") == 0 ) {
                   77601:            fprintf(tf, "stroke\ngrestore\n");
                   77602:            gsavelevel--;
                   77603:        } else if ( strcmp(p, "fill") == 0 ) {
                   77604:            fprintf(tf, "eofill\ngrestore\n");
                   77605:            gsavelevel--;
                   77606:        } else if ( strcmp(p, "wfill") == 0 ) {
                   77607:            fprintf(tf, "fill\ngrestore\n");
                   77608:            gsavelevel--;
                   77609:        } else if ( strcmp(p, "sfill") == 0 ) {
                   77610:            fprintf(tf, "eofill\ngrestore\ngsave\nstroke\ngrestore\n");
                   77611:            gsavelevel--;
                   77612:        } else if ( strncmp(p, "gray", strlen("gray")) == 0 ) {
                   77613:            p1 = strtok(NULL, " \n");
                   77614:            fprintf(tf, "%s setgray\n", p1);
                   77615:        } else if ( strncmp(p, "color", strlen("color")) == 0 ) {
                   77616:            p1 = strtok(NULL, " \n");
                   77617:            fprintf(tf, "/%s setcolor\n", p1);
                   77618:        } else if ( strncmp(p, "line", strlen("line")) == 0 ) {
                   77619:            p1 = strtok(NULL, " \n");
                   77620:            fprintf(tf, "%s resolution mul 2 div setlinewidth\n", p1);
                   77621:        } else if ( strncmp(p, "reverse", strlen("reverse")) == 0 )
                   77622:            fprintf(tf, "reversepath\n");
                   77623:        else if ( *p == '"' ) {
                   77624:            for ( ; gsavelevel > 0; gsavelevel-- )
                   77625:                fprintf(tf, "grestore\n");
                   77626:            if ( (p1 = p + strlen(p)) < pend )
                   77627:                *p1 = ' ';
                   77628:            p = strtok(p, "\"\n");
                   77629:            fprintf(tf, "%s\n", p);
                   77630:        }   /* End else */
                   77631:        p = strtok(NULL, " \n");
                   77632:     }  /* End while */
                   77633: 
                   77634:     for ( ; gsavelevel > 0; gsavelevel-- )
                   77635:        fprintf(tf, "grestore\n");
                   77636: 
                   77637: }   /* End of parsebuf */
                   77638: 
                   77639: /*****************************************************************************/
                   77640: 
                   77641: getbaseline()
                   77642: 
                   77643: {
                   77644: 
                   77645: /*
                   77646:  *
                   77647:  * Responsible for making sure the PostScript procedures needed for printing text
                   77648:  * along an arbitrary baseline are downloaded from *baselinefile. Done at most
                   77649:  * once per job, and only if the the stuff is really used.
                   77650:  *
                   77651:  */
                   77652: 
                   77653:     if ( gotbaseline == FALSE )
                   77654:        exportfile(baselinefile);
                   77655: 
                   77656:     if ( tf == stdout )
                   77657:        gotbaseline = TRUE;
                   77658: 
                   77659: }   /* End of getbaseline */
                   77660: 
                   77661: /*****************************************************************************/
                   77662: 
                   77663: newbaseline(buf)
                   77664: 
                   77665:     char       *buf;                   /* whatever followed "x X NewBaseline" */
                   77666: 
                   77667: {
                   77668: 
                   77669:     char       *p;                     /* for eliminating white space etc. */
                   77670: 
                   77671: /*
                   77672:  *
                   77673:  * Called from devcntrl() whenever an "x X NewBaseline" command is recognized. We
                   77674:  * assume whatever is in *buf is a set of parametric equations that describe the
                   77675:  * new baseline. Equations for x(t), y(t), dx/dt, and dy/dt must be written in
                   77676:  * PostScript, bracketed by { and } characters, and supplied in exactly that order.
                   77677:  * In particular the equation for x must come first in *buf and it ends up as the
                   77678:  * last one on the stack, while the equation for dy/dt comes last (in *buf) and
                   77679:  * ends up on the top of the PostScript stack. For example if *buf is given by,
                   77680:  *
                   77681:  *     {} {180 mul 3.1416 div cos} {pop 1} {180 mul 3.1416 div sin neg}
                   77682:  *
                   77683:  * text will be printed along the curve y = cos(x).
                   77684:  *
                   77685:  * Angles given in radians must be converted to degrees for the PostScript trig
                   77686:  * functions, and things are scaled so that 1 unit maps into 1 inch. In the last
                   77687:  * example the cosine curve that describes the baseline has an amplitude of 1 inch.
                   77688:  * As another example of this rather confusing syntax if *buf is,
                   77689:  *
                   77690:  *     {} {} {pop 1} {pop 1}
                   77691:  *
                   77692:  * the baseline will be the 45 degree line y = x.
                   77693:  *
                   77694:  * When any of the four functions is used they're called with a single number on
                   77695:  * the stack that's equal to the current value of the parameter t. The coordinate
                   77696:  * system axes run parallel to the PostScript coordinate system that's currently
                   77697:  * being used.
                   77698:  *
                   77699:  */
                   77700: 
                   77701:     for ( p = buf; *p; p++ )           /* eliminate trailing '\n' */
                   77702:        if ( *p == '\n' ) {
                   77703:            *p = '\0';
                   77704:            break;
                   77705:        }   /* End if */
                   77706: 
                   77707:     for ( p = buf; *p && (*p == ' ' || *p == ':'); p++ ) ;
                   77708: 
                   77709:     if ( *p != '\0' ) {                        /* something's there */
                   77710:        flushtext();
                   77711:        getbaseline();
                   77712:        fprintf(tf, "mark resolution %s newbaseline\n", p);
                   77713:        reset();
                   77714:     }  /* End if */
                   77715: 
                   77716: }   /* End of newbaseline */
                   77717: 
                   77718: /*****************************************************************************/
                   77719: 
                   77720: drawtext(buf)
                   77721: 
                   77722:     char       *buf;                   /* whatever followed "x X DrawText */
                   77723: 
                   77724: {
                   77725: 
                   77726:     char       *p;                     /* for eliminating white space etc. */
                   77727: 
                   77728: /*
                   77729:  *
                   77730:  * Called from devcntrl() whenever an "x X DrawText command is recognized. *buf
                   77731:  * should contain three arguments in the following order. First comes the text we
                   77732:  * want to print along the current baseline. Right now the string should be given
                   77733:  * as a PostScript string using characters '(' and ')' as the delimiters. Next in
                   77734:  * *buf comes a justification mode that can be the words left, right, or center.
                   77735:  * Last comes a number that represents the starting value of the parameter t that's
                   77736:  * given as the argument to the parametric equations that describe the current
                   77737:  * baseline. For example if *buf is given by,
                   77738:  *
                   77739:  *     (hello world) left .5
                   77740:  *
                   77741:  * hello world will be printed along the path described by the current baseline
                   77742:  * and left justified at whatever (x(.5), y(.5)) happens to be. Usually will be
                   77743:  * preceeded by an "x X NewBaseline" call that defines the current baseline. The
                   77744:  * origin of the coordinate system used by the parametric equations will be the
                   77745:  * current point.
                   77746:  *
                   77747:  */
                   77748: 
                   77749:     for ( p = buf; *p; p++ )           /* eliminate trailing '\n' */
                   77750:        if ( *p == '\n' ) {
                   77751:            *p = '\0';
                   77752:            break;
                   77753:        }   /* End if */
                   77754: 
                   77755:     for ( p = buf; *p && (*p == ' ' || *p == ':'); p++ ) ;
                   77756: 
                   77757:     if ( *p != '\0' ) {                        /* something's there */
                   77758:        flushtext();
                   77759:        getbaseline();
                   77760:        xymove(hpos, vpos);
                   77761:        fprintf(tf, "mark %s drawfunnytext\n", p);
                   77762:        resetpos();
                   77763:     }  /* End if */
                   77764: 
                   77765: }   /* End of drawtext */
                   77766: 
                   77767: /*****************************************************************************/
                   77768: 
                   77769: settext(buf)
                   77770: 
                   77771:     char       *buf;
                   77772: 
                   77773: {
                   77774: 
                   77775:     char       *p;
                   77776: 
                   77777: /*
                   77778:  *
                   77779:  * Does whatever is needed to ensure any text that follows will be set along the
                   77780:  * curve described by the PostScript procedures listed in *buf. If *buf doesn't
                   77781:  * contain anything useful (eg. just a newline) things are restored to whatever
                   77782:  * they originally were. Doesn't work well if we try to start in the middle of a
                   77783:  * line of text.
                   77784:  *
                   77785:  * The parametric equations needed are,
                   77786:  *
                   77787:  *     x = f(t)
                   77788:  *     y = g(t)
                   77789:  *     dx/dt = f'(t)
                   77790:  *     dy/dt = g'(t)
                   77791:  *
                   77792:  * and must be given as proper PostScript procedures. The equation for x must come
                   77793:  * first (ie. it ends up on the bottom of the stack) and the equation for dy/dt
                   77794:  * must be given last (ie. it ends up on top of the stack). For example if *buf
                   77795:  * is given by,
                   77796:  *
                   77797:  *     {} {180 mul 3.1416 div cos} {pop 1} {180 mul 3.1416 div sin neg}
                   77798:  *
                   77799:  * text will be set along the curve y=cos(x).
                   77800:  *
                   77801:  */
                   77802: 
                   77803:     flushtext();
                   77804:     getbaseline();
                   77805: 
                   77806:     for ( p = buf; *p && *p == ' '; p++ ) ;
                   77807: 
                   77808:     if ( *p && *p != '\n' ) {
                   77809:        encoding = maxencoding + 2;
                   77810:        fprintf(tf, "mark resolution %s newbaseline\n", buf);
                   77811:     } else encoding = realencoding;
                   77812: 
                   77813:     fprintf(tf, "%d setdecoding\n", encoding);
                   77814:     resetpos();
                   77815: 
                   77816: }   /* End of settext */
                   77817: 
                   77818: /*****************************************************************************/
                   77819: 
                   77820: 0707070014231311121006440057030057030000011031660522627504700003300000002363post.src/dpost.utf/draw.ps%
                   77821: % Version 3.3.2 drawing procedures for dpost. Automatically pulled in when
                   77822: % needed.
                   77823: %
                   77824: 
                   77825: /inpath false def
                   77826: /savematrix matrix def
                   77827: 
                   77828: /Dl {
                   77829:        inpath
                   77830:                {pop pop neg lineto}
                   77831:                {newpath neg moveto neg lineto stroke}
                   77832:        ifelse
                   77833: } bind def
                   77834: 
                   77835: /De {
                   77836:        /y1 exch 2 div def
                   77837:        /x1 exch 2 div def
                   77838:        /savematrix savematrix currentmatrix def
                   77839:        neg exch x1 add exch translate
                   77840:        x1 y1 scale
                   77841:        0 0 1 0 360
                   77842:        inpath
                   77843:                {1 0 moveto arc savematrix setmatrix}
                   77844:                {newpath arc savematrix setmatrix stroke}
                   77845:        ifelse
                   77846: } bind def
                   77847: 
                   77848: /Da {
                   77849:        /dy2 exch def
                   77850:        /dx2 exch def
                   77851:        /dy1 exch def
                   77852:        /dx1 exch def
                   77853:        dy1 add neg exch dx1 add exch
                   77854:        dx1 dx1 mul dy1 dy1 mul add sqrt
                   77855:        dy1 dx1 neg atan
                   77856:        dy2 neg dx2 atan
                   77857:        inpath
                   77858:                {arc}
                   77859:                {newpath arc stroke}
                   77860:        ifelse
                   77861: } bind def
                   77862: 
                   77863: /DA {
                   77864:        /dy2 exch def
                   77865:        /dx2 exch def
                   77866:        /dy1 exch def
                   77867:        /dx1 exch def
                   77868:        dy1 add neg exch dx1 add exch
                   77869:        dx1 dx1 mul dy1 dy1 mul add sqrt
                   77870:        dy1 dx1 neg atan
                   77871:        dy2 neg dx2 atan
                   77872:        inpath
                   77873:                {arcn}
                   77874:                {newpath arcn stroke}
                   77875:        ifelse
                   77876: } bind def
                   77877: 
                   77878: /Ds {
                   77879:        /y2 exch def
                   77880:        /x2 exch def
                   77881:        /y1 exch def
                   77882:        /x1 exch def
                   77883:        /y0 exch def
                   77884:        /x0 exch def
                   77885:        x0 5 x1 mul add 6 div
                   77886:        y0 5 y1 mul add -6 div
                   77887:        x2 5 x1 mul add 6 div
                   77888:        y2 5 y1 mul add -6 div
                   77889:        x1 x2 add 2 div
                   77890:        y1 y2 add -2 div
                   77891:        inpath
                   77892:                {curveto}
                   77893:                {newpath x0 x1 add 2 div y0 y1 add -2 div moveto curveto stroke}
                   77894:        ifelse
                   77895: } bind def
                   77896: 0707070014231311131006440057030057030000011034600522627504700003200000027177post.src/dpost.utf/font.c/*
                   77897:  *
                   77898:  * Typesetter font tables routines - for postprocessors.
                   77899:  *
                   77900:  */
                   77901: 
                   77902: #include <stdio.h>
                   77903: #include <ctype.h>
                   77904: 
                   77905: #include "gen.h"
                   77906: #include "rune.h"
                   77907: #include "ext.h"
                   77908: #include "font.h"
                   77909: 
                   77910: Font   *mount[MAXFONTS+1];             /* mount table - pointers into fonts[] */
                   77911: Font   fonts[MAXFONTS+2];              /* font data - guarantee one empty slot */
                   77912: 
                   77913: int    fcount;                         /* entries in fonts[] */
                   77914: int    mcount;                         /* fonts currently in memory */
                   77915: int    mlimit = MAXFONTS+1;            /* and the most we'll allow */
                   77916: 
                   77917: char   *chnames[SPECIALCHARS];         /* special character hash table */
                   77918: int    nchnames;                       /* number of entries in chnames[] */
                   77919: 
                   77920: extern int     devres;
                   77921: extern int     unitwidth;
                   77922: extern int     nfonts;
                   77923: 
                   77924: /*****************************************************************************/
                   77925: 
                   77926: checkdesc(path)
                   77927: 
                   77928:     char       *path;
                   77929: 
                   77930: {
                   77931: 
                   77932:     char       buf[150];
                   77933:     FILE       *fp;
                   77934:     int                val = 0;
                   77935: 
                   77936: /*
                   77937:  *
                   77938:  * Return non-zero if the typesetter description file path includes,
                   77939:  *
                   77940:  *     PDL PostScript
                   77941:  *
                   77942:  * before the charset table.
                   77943:  *
                   77944:  */
                   77945: 
                   77946:     if ( (fp = fopen(path, "r")) != NULL ) {
                   77947:        while ( fscanf(fp, "%s", buf) != EOF ) {
                   77948:            if ( strcmp(buf, "PDL") == 0 ) {
                   77949:                fscanf(fp, "%s", buf);
                   77950:                val = strcmp(buf, "PostScript") == 0;
                   77951:                break;
                   77952:            } else if ( strcmp(buf, "charset") == 0 )
                   77953:                break;
                   77954:            skipline(fp);
                   77955:        }   /* End while */
                   77956:        fclose(fp);
                   77957:     }  /* End if */
                   77958: 
                   77959:     return(val);
                   77960: 
                   77961: }   /* End of checkdesc */
                   77962: 
                   77963: /*****************************************************************************/
                   77964: 
                   77965: getdesc(path)
                   77966: 
                   77967:     char       *path;
                   77968: 
                   77969: {
                   77970: 
                   77971:     char       buf[150];
                   77972:     FILE       *fp;
                   77973:     int                n;
                   77974: 
                   77975:     if ( (fp = fopen(path, "r")) == NULL )
                   77976:        return(-1);
                   77977: 
                   77978:     while ( fscanf(fp, "%s", buf) != EOF ) {
                   77979:        if ( strcmp(buf, "res") == 0 )
                   77980:            fscanf(fp, "%d", &devres);
                   77981:        else if ( strcmp(buf, "unitwidth") == 0 )
                   77982:            fscanf(fp, "%d", &unitwidth);
                   77983:        else if ( strcmp(buf, "sizes") == 0 )
                   77984:            while ( fscanf(fp, "%d", &n) != EOF && n != 0 ) ;
                   77985:        else if ( strcmp(buf, "inmemory") == 0 )
                   77986:            fscanf(fp, "%d", &mlimit);
                   77987:        else if ( strcmp(buf, "Encoding") == 0 ) {
                   77988:            fscanf(fp, "%s", buf);
                   77989:            fontencoding = strsave(buf);
                   77990:        } else if ( strcmp(buf, "fonts") == 0 ) {
                   77991:            fscanf(fp, "%d", &nfonts);
                   77992:            for ( n = 0; n < nfonts; n++ )
                   77993:                fscanf(fp, "%s", buf);
                   77994:        } else if ( strcmp(buf, "charset") == 0 ) {
                   77995:            while ( fscanf(fp, "%s", buf) != EOF )
                   77996:                chadd(buf);
                   77997:            break;
                   77998:        }   /* End if */
                   77999:        skipline(fp);
                   78000:     }  /* End while */
                   78001: 
                   78002:     fclose(fp);
                   78003:     return(1);
                   78004: 
                   78005: }   /* End of getdesc */
                   78006: 
                   78007: /*****************************************************************************/
                   78008: 
                   78009: getfont(path, fpos)
                   78010: 
                   78011:     char       *path;
                   78012:     Font       *fpos;
                   78013: 
                   78014: {
                   78015: 
                   78016:     FILE       *fin;
                   78017:     Chwid      chtemp[LARGESTFONT];
                   78018:     int                next;
                   78019:     int                i, n, num, wid, code;
                   78020:     char       buf[300], ch[100], s1[100], s2[100], s3[100], cmd[100];
                   78021: 
                   78022: 
                   78023: /*
                   78024:  *
                   78025:  * Read a font width table. Skip unnamed characters, spacewidth, ligatures,
                   78026:  * ascender/descender entries, and anything else not recognized. Charset
                   78027:  * entries for a new font are first stacked in chtemp[] and later copied
                   78028:  * to correct slots in a newly allocated wp array. All calls should come
                   78029:  * through mountfont().
                   78030:  *
                   78031:  */
                   78032: 
                   78033:     if ( fpos->state == INMEMORY )
                   78034:        return(1);
                   78035: 
                   78036:     if ( (fin = fopen(path, "r")) == NULL )
                   78037:        return(-1);
                   78038: 
                   78039:     if ( fpos->state == NEWFONT ) {
                   78040:        if ( ++fcount > MAXFONTS+1 )
                   78041:            return(-1);
                   78042:        fpos->path = strsave(path);
                   78043:     }  /* End if */
                   78044: 
                   78045:     if ( ++mcount > mlimit && mcount > nfonts+1 )
                   78046:        freefonts();
                   78047: 
                   78048:     while ( fscanf(fin, "%s", cmd) != EOF ) {
                   78049:        if ( strcmp(cmd, "name") == 0 ) {
                   78050:            release(fpos->name);
                   78051:            fscanf(fin, "%s", buf);
                   78052:            fpos->name = strsave(buf);
                   78053:        } else if ( strcmp(cmd, "fontname") == 0 ) {
                   78054:            release(fpos->fontname);
                   78055:            fscanf(fin, "%s", buf);
                   78056:            fpos->fontname = strsave(buf);
                   78057:        } else if ( strcmp(cmd, "special") == 0 )
                   78058:            fpos->specfont = 1;
                   78059:        else if ( strcmp(cmd, "named") == 0 )   /* in prologue or somewhere else */
                   78060:            fpos->flags |= NAMED;
                   78061:        else if ( strcmp(cmd, "charset") == 0 ) {
                   78062:            skipline(fin);
                   78063:            next = 0;
                   78064:            fpos->nchars = 0;           /* special characters */
                   78065:            fpos->first = LASTCODE;
                   78066:            fpos->last = FIRSTCODE;
                   78067:            while ( fgets(buf, sizeof(buf), fin) != NULL ) {
                   78068:                num = -1;
                   78069:                sscanf(buf, "%s %s %s %s", ch, s1, s2, s3);
                   78070:                if ( s1[0] != '"' ) {           /* not a synonym */
                   78071:                    sscanf(s1, "%d", &wid);
                   78072:                    code = strtol(s3, 0, 0);    /* dec/oct/hex */
                   78073:                }   /* End if */
                   78074:                if ( strlen(ch) == 1 )          /* it's ascii */
                   78075:                    num = ch[0];
                   78076:                else if ( ch[0] == '\\' && ch[1] == '0' )
                   78077:                    num = strtol(ch+1, 0, 0);
                   78078:                /*
                   78079:                 * Eventually consider something like,
                   78080:                 *
                   78081:                 * else if ( strlen(ch) == chartorune(&r, ch) )
                   78082:                 *      num = r;
                   78083:                 */
                   78084:                else if ( strcmp(ch, "---") != 0 ) {    /* ignore unnamed chars */
                   78085:                    if ( (num = chindex(ch)) == INVALIDCODE )
                   78086:                        num = chadd(ch);
                   78087:                }   /* End else */
                   78088:                if ( ValidChar(num) ) {
                   78089:                    if ( next < LARGESTFONT ) {
                   78090:                        chtemp[next].num = num;
                   78091:                        chtemp[next].wid = wid;
                   78092:                        chtemp[next++].code = code;
                   78093:                        if ( ValidCode(num) ) {
                   78094:                            fpos->first = (num < fpos->first) ? num : fpos->first;
                   78095:                            fpos->last = (num > fpos->last) ? num : fpos->last;
                   78096:                        } else fpos->nchars++;
                   78097:                    } else error(FATAL, "font %s too large", path);
                   78098:                } else if ( num != -1 )
                   78099:                    error(FATAL, "invalid character in font %s\n", path);
                   78100:            }   /* End while */
                   78101:            break;
                   78102:        }   /* End else */
                   78103:        skipline(fin);
                   78104:     }  /* End while */
                   78105: 
                   78106:     fclose(fin);
                   78107: 
                   78108:     if ( fpos->first > fpos->last )
                   78109:        fpos->last = fpos->first - 1;
                   78110:     fpos->nchars += fpos->last - fpos->first + 1;
                   78111:     fpos->wp = (Chwid *)allocate(fpos->nchars * sizeof(Chwid));
                   78112: 
                   78113:     for ( i = 0; i < fpos->nchars; i++ )
                   78114:        fpos->wp[i].num = INVALIDCODE;
                   78115: 
                   78116:     for ( i = 0, n = 1; i < next; i++ ) {
                   78117:        if ( chtemp[i].num <= fpos->last )
                   78118:            fpos->wp[chtemp[i].num - fpos->first] = chtemp[i];
                   78119:        else fpos->wp[fpos->last - fpos->first + n++] = chtemp[i];
                   78120:     }  /* End for */
                   78121: 
                   78122:     fpos->state = INMEMORY;
                   78123:     return(1);
                   78124: 
                   78125: }   /* End of getfont */
                   78126: 
                   78127: /*****************************************************************************/
                   78128: 
                   78129: mountfont(path, m)
                   78130: 
                   78131:     char       *path;
                   78132:     int                m;
                   78133: 
                   78134: {
                   78135: 
                   78136:     Font       *fpos;
                   78137: 
                   78138:     if ( m < 0 || m > MAXFONTS )
                   78139:        return(-1);
                   78140: 
                   78141:     if ( mount[m] != NULL ) {
                   78142:        if ( mount[m]->path != NULL && strcmp(path, mount[m]->path) == 0 ) {
                   78143:            if ( mount[m]->state == INMEMORY )
                   78144:                return(1);
                   78145:        } else {
                   78146:            mount[m]->mounted--;
                   78147:            mount[m] = NULL;
                   78148:        }   /* End else */
                   78149:     }  /* End if */
                   78150: 
                   78151:     mount[m] = fpos = &fonts[findfont(path)];
                   78152:     mount[m]->mounted++;
                   78153:     return(getfont(path, fpos));
                   78154: 
                   78155: }   /* End of mountfont */
                   78156: 
                   78157: /*****************************************************************************/
                   78158: 
                   78159: freefonts()
                   78160: 
                   78161: {
                   78162: 
                   78163:     int                n;
                   78164: 
                   78165: /*
                   78166:  *
                   78167:  * Don't release the path without resetting state to NEWFONT - findfont()
                   78168:  * assumes path is available.
                   78169:  *
                   78170:  */
                   78171: 
                   78172:     for ( n = 0; n < MAXFONTS+2; n++ )
                   78173:        if ( fonts[n].state == INMEMORY && fonts[n].mounted == 0 ) {
                   78174:            release(fonts[n].wp);
                   78175:            fonts[n].wp = NULL;
                   78176:            fonts[n].state = RELEASED;
                   78177:            mcount--;
                   78178:        }   /* End if */
                   78179: 
                   78180: }   /* End of freefonts */
                   78181: 
                   78182: /*****************************************************************************/
                   78183: 
                   78184: findfont(path)
                   78185: 
                   78186:     char       *path;
                   78187: 
                   78188: {
                   78189: 
                   78190:     register   n;
                   78191: 
                   78192:     for ( n = hash(path, MAXFONTS+2); fonts[n].state != NEWFONT; n = (n+1) % (MAXFONTS+2) )
                   78193:        if ( strcmp(path, fonts[n].path) == 0 )
                   78194:            break;
                   78195:     return(n);
                   78196: 
                   78197: }   /* End of findfont */
                   78198: 
                   78199: /*****************************************************************************/
                   78200: 
                   78201: mounted(m)
                   78202: 
                   78203:     int                m;
                   78204: 
                   78205: {
                   78206: 
                   78207:     return(m >= 0 && m <= MAXFONTS && mount[m] != NULL);
                   78208: 
                   78209: }   /* End of mounted */
                   78210: 
                   78211: /*****************************************************************************/
                   78212: 
                   78213: onfont(c, m)
                   78214: 
                   78215:     int                c;
                   78216:     int                m;
                   78217: 
                   78218: {
                   78219: 
                   78220:     Font       *fp;
                   78221:     Chwid      *cp, *ep;
                   78222: 
                   78223: /*
                   78224:  *
                   78225:  * Returns the position of character c in the font mounted at m, or -1 if the
                   78226:  * character is not found.
                   78227:  *
                   78228:  */
                   78229: 
                   78230:     if ( mounted(m) ) {
                   78231:        fp = mount[m];
                   78232:        if ( c >= fp->first && c <= fp->last ) {
                   78233:            if ( fp->wp[c-fp->first].num == c )
                   78234:                return(c - fp->first);
                   78235:            else return(-1);
                   78236:        }   /* End if */
                   78237: 
                   78238:        if ( ValidSpecial(c) ) {
                   78239:            cp = &fp->wp[fp->last - fp->first + 1];
                   78240:            ep = &fp->wp[fp->nchars];
                   78241:            for ( ; cp < ep; cp++ )                     /* search others */
                   78242:                if ( cp->num == c )
                   78243:                    return(cp - &fp->wp[0]);
                   78244:        }   /* End if */
                   78245:     }  /* End if */
                   78246: 
                   78247:     return(-1);
                   78248: 
                   78249: }   /* End of onfont */
                   78250: 
                   78251: /*****************************************************************************/
                   78252: 
                   78253: chindex(s)
                   78254: 
                   78255:     char       *s;
                   78256: 
                   78257: {
                   78258: 
                   78259:     register   i;
                   78260: 
                   78261: /*
                   78262:  *
                   78263:  * Return the code assigned to special character s or INVALIDCODE if s
                   78264:  * is not currently defined.
                   78265:  *
                   78266:  */
                   78267: 
                   78268:     for ( i = hash(s, SPECIALCHARS); chnames[i] != NULL; i = (i+1) % SPECIALCHARS )
                   78269:        if ( strcmp(s, chnames[i]) == 0 )
                   78270:            return(i+FIRSTSPECIAL);
                   78271:     return(INVALIDCODE);
                   78272: 
                   78273: }   /* End of chindex */
                   78274: 
                   78275: /*****************************************************************************/
                   78276: 
                   78277: chadd(s)
                   78278: 
                   78279:     char       *s;
                   78280: 
                   78281: {
                   78282: 
                   78283:     register   i;
                   78284: 
                   78285:     if ( nchnames >= SPECIALCHARS - 1 )                /* guarantee one empty slot */
                   78286:        error(FATAL, "out of table space adding character %s", s);
                   78287: 
                   78288:     for ( i = hash(s, SPECIALCHARS); chnames[i] != NULL; i = (i+1) % SPECIALCHARS ) ;
                   78289: 
                   78290:     nchnames++;
                   78291:     chnames[i] = strsave(s);
                   78292:     return(i+FIRSTSPECIAL);
                   78293: 
                   78294: }   /* End of chadd */
                   78295: 
                   78296: /*****************************************************************************/
                   78297: 
                   78298: char *chname(n)
                   78299: 
                   78300:     int                n;
                   78301: 
                   78302: {
                   78303: 
                   78304:     return(chnames[n-FIRSTSPECIAL]);
                   78305: 
                   78306: }   /* End of chname */
                   78307: 
                   78308: /*****************************************************************************/
                   78309: 
                   78310: hash(s, l)
                   78311: 
                   78312:     char       *s;
                   78313:     int                l;
                   78314: 
                   78315: {
                   78316: 
                   78317:     unsigned   i;
                   78318: 
                   78319:     for ( i = 0; *s; s++ )
                   78320:        i = i*10 + *s;
                   78321:     return(i % l);
                   78322: 
                   78323: }   /* End of hash */
                   78324: 
                   78325: /*****************************************************************************/
                   78326: 
                   78327: char *strsave(s)
                   78328: 
                   78329:     char       *s;
                   78330: 
                   78331: {
                   78332: 
                   78333:     char       *ptr = NULL;
                   78334: 
                   78335:     if ( s != NULL ) {
                   78336:        ptr = (char *)allocate(strlen(s)+1);
                   78337:        strcpy(ptr, s);
                   78338:     }  /* End if */
                   78339:     return(ptr);
                   78340: 
                   78341: }   /* End of strsave */
                   78342: 
                   78343: /*****************************************************************************/
                   78344: 
                   78345: char *allocate(count)
                   78346: 
                   78347:     int                count;
                   78348: 
                   78349: {
                   78350: 
                   78351:     char       *ptr;
                   78352: 
                   78353:     if ( (ptr = (char *)malloc(count)) == NULL ) {
                   78354:        freefonts();
                   78355:        if ( (ptr = (char *)malloc(count)) == NULL )
                   78356:            error(FATAL, "no memory");
                   78357:     }  /* End if */
                   78358:     return(ptr);
                   78359: 
                   78360: }   /* End of allocate */
                   78361: 
                   78362: /*****************************************************************************/
                   78363: 
                   78364: release(ptr)
                   78365: 
                   78366:     char       *ptr;
                   78367: 
                   78368: {
                   78369: 
                   78370:     if ( ptr != NULL )
                   78371:        free(ptr);
                   78372: 
                   78373: }   /* End of release */
                   78374: 
                   78375: /*****************************************************************************/
                   78376: 
                   78377: dumpmount(m)
                   78378: 
                   78379:     int                m;
                   78380: 
                   78381: {
                   78382: 
                   78383:     if ( mount[m] != NULL )
                   78384:        dumpfont((mount[m] - &fonts[0]));
                   78385:     else fprintf(stderr, "no font mounted at %d\n", m);
                   78386: 
                   78387: }   /* End of dumpmount */
                   78388: 
                   78389: /*****************************************************************************/
                   78390: 
                   78391: dumpfont(n)
                   78392: 
                   78393:     int                n;
                   78394: 
                   78395: {
                   78396: 
                   78397:     int                i;
                   78398:     Font       *fpos;
                   78399:     char       *str;
                   78400: 
                   78401:     fpos = &fonts[n];
                   78402: 
                   78403:     if ( fpos->state ) {
                   78404:        fprintf(stderr, "path %s\n", fpos->path);
                   78405:        fprintf(stderr, "state %d\n", fpos->state);
                   78406:        fprintf(stderr, "flags %d\n", fpos->flags);
                   78407:        fprintf(stderr, "mounted %d\n", fpos->mounted);
                   78408:        fprintf(stderr, "first %d\n", fpos->first);
                   78409:        fprintf(stderr, "last %d\n", fpos->last);
                   78410:        fprintf(stderr, "nchars %d\n", fpos->nchars);
                   78411:        fprintf(stderr, "special %d\n", fpos->specfont);
                   78412:        fprintf(stderr, "name %s\n", fpos->name);
                   78413:        fprintf(stderr, "fontname %s\n", fpos->fontname);
                   78414:        if ( fpos->state == INMEMORY ) {
                   78415:            fprintf(stderr, "charset\n");
                   78416:            for ( i = 0; i < fpos->nchars; i++ ) {
                   78417:                if ( fpos->wp[i].num > 0 ) {
                   78418:                    if ( fpos->wp[i].num <= fpos->last )
                   78419:                        fprintf(stderr, "%c\t%d\t%d\n", fpos->wp[i].num,
                   78420:                                fpos->wp[i].wid, fpos->wp[i].code);
                   78421:                    else {
                   78422:                        str = chname(fpos->wp[i].num);
                   78423:                        if ( *str == '#' && isdigit(*(str+1)) && isdigit(*(str+2)) )
                   78424:                            str = "---";
                   78425:                        fprintf(stderr, "%s\t%d\t%d\n", str, fpos->wp[i].wid,
                   78426:                                fpos->wp[i].code);
                   78427:                    }   /* End else */
                   78428:                }   /* End if */
                   78429:            }   /* End for */
                   78430:        } else fprintf(stderr, "charset: not in memory\n");
                   78431:     } else fprintf(stderr, "empty font: %d\n", n);
                   78432: 
                   78433:     putc('\n', stderr);
                   78434: 
                   78435: }   /* End of dumpfont */
                   78436: 
                   78437: /*****************************************************************************/
                   78438: 
                   78439: 0707070014231311141006440057030057030000011031250522627505000003200000005021post.src/dpost.utf/font.h/*
                   78440:  *
                   78441:  * Characteristics of a font - for postprocessors. Most changes are for
                   78442:  * Unicode and Plan 9 UTF encoding. Also tried to anticipate larger and
                   78443:  * more general Unicode fonts.
                   78444:  * 
                   78445:  */
                   78446: 
                   78447: #define FIRSTCODE      0x0020
                   78448: #define LASTCODE       0x8BFF
                   78449: #define FIRSTSPECIAL   0xE800
                   78450: #define LASTSPECIAL    0xFDFF
                   78451: 
                   78452: #define INVALIDCODE    0x0000
                   78453: #define LARGESTFONT    0x1000
                   78454: #define MAXFONTS       99
                   78455: #define        SPECIALCHARS    (LASTSPECIAL-FIRSTSPECIAL+1)
                   78456: 
                   78457: #define ValidCode(c)   ((c) >= FIRSTCODE && (c) <= LASTCODE)
                   78458: #define ValidSpecial(c)        ((c) >= FIRSTSPECIAL && (c) <= LASTSPECIAL)
                   78459: #define ValidChar(c)   (ValidCode(c) || ValidSpecial(c))
                   78460: 
                   78461: /*
                   78462:  *
                   78463:  * State of a table entry in fonts[].
                   78464:  *
                   78465:  */
                   78466: 
                   78467: #define NEWFONT                0
                   78468: #define RELEASED       1
                   78469: #define INMEMORY       2
                   78470: 
                   78471: /*
                   78472:  *
                   78473:  * Flags - for setting bits in a font's flag field.
                   78474:  *
                   78475:  */
                   78476: 
                   78477: #define USED           1
                   78478: #define NAMED          2
                   78479: 
                   78480: #define skipline(f)    while ( getc(f) != '\n' )
                   78481: 
                   78482: /*
                   78483:  *
                   78484:  * Data about each character on a font. Omitted the ascender/descender field.
                   78485:  * Need 16 bits for num field to support Unicode character set. Use the same
                   78486:  * for code field which may be translated to Plan 9's UTF represenation on
                   78487:  * output. A string for code field might be worth a try? Needs considerable
                   78488:  * thought!!
                   78489:  *
                   78490:  */
                   78491: 
                   78492: typedef struct {
                   78493:        unsigned short  num;            /* INVALIDCODE means not on this font */
                   78494:        unsigned char   wid;            /* width */
                   78495:        unsigned short  code;           /* code for actual device. */
                   78496: } Chwid;
                   78497: 
                   78498: /*
                   78499:  *
                   78500:  * Font header - one for each available position. first and last fields
                   78501:  * are an attempt to anticipate support for Unicode fonts. Characters
                   78502:  * from first through last are described by the initial last-first+1
                   78503:  * entries in wp. Entries in wp having num == INVALIDCODE are unassigned
                   78504:  * in the font. The remaining nchars-(last-first+1) wp entries support
                   78505:  * troff's traditional two character escapes. Special characters are
                   78506:  * hashed and assigned codes from Unicode's Private Use Area.
                   78507:  *
                   78508:  */
                   78509: 
                   78510: typedef struct {
                   78511:        char            *path;          /* where it came from */
                   78512:        char            *name;          /* as known to troff */
                   78513:        char            *fontname;      /* real name (e.g. Times-Roman) */
                   78514:        char            state;          /* NEWFONT, RELEASED, or INMEMORY */
                   78515:        char            flags;          /* for now just USED and NAMED */
                   78516:        char            mounted;        /* mounted on this many positions */
                   78517:        char            specfont;       /* 1 == special font */
                   78518:        unsigned short  first;          /* first wp entry is for this character */
                   78519:        unsigned short  last;           /* last code for this font */
                   78520:        unsigned short  nchars;         /* size of width table for this font */
                   78521:        Chwid           *wp;            /* widths, etc., of the real characters */
                   78522: } Font;
                   78523: 
                   78524: /*
                   78525:  *
                   78526:  * Non-integer functions.
                   78527:  *
                   78528:  */
                   78529: 
                   78530: extern char    *chname();
                   78531: extern char    *strsave();
                   78532: extern char    *allocate();
                   78533: 
                   78534: 0707070014231311151006440057030057030000011033270522627505000003400000000272post.src/dpost.utf/motion.h/*
                   78535:  *
                   78536:  * Position adjusting macros.
                   78537:  *
                   78538:  */
                   78539: 
                   78540: #define hgoto(n)       hpos = n
                   78541: #define hmot(n)                hpos += n
                   78542: #define vgoto(n)       vpos = n
                   78543: #define vmot(n)                vpos += n
                   78544: 
                   78545: extern int     hpos;
                   78546: extern int     vpos;
                   78547: 
                   78548: 0707070014231311161006440057030057030000011035200522627505100003600000023077post.src/dpost.utf/pictures.c/*
                   78549:  *
                   78550:  * PostScript picture inclusion routines. Support for managing in-line pictures
                   78551:  * has been added, and works in combination with the simple picpack pre-processor
                   78552:  * that's supplied with this package. An in-line picture begins with a special
                   78553:  * device control command that looks like,
                   78554:  *
                   78555:  *             x X InlinPicture name size
                   78556:  *
                   78557:  * where name is the pathname of the original picture file and size is the number
                   78558:  * of bytes in the picture, which begins immediately on the next line. When dpost
                   78559:  * encounters the InlinePicture device control command inlinepic() is called and
                   78560:  * that routine appends the string name and the integer size to a temporary file
                   78561:  * (fp_pic) and then adds the next size bytes read from the current input file to
                   78562:  * file fp_pic. All in-line pictures are saved in fp_pic and located later using
                   78563:  * the name string and picture file size that separate pictures saved in fp_pic.
                   78564:  *
                   78565:  * When a picture request (ie. an "x X PI" command) is encountered picopen() is
                   78566:  * called and it first looks for the picture file in fp_pic. If it's found there
                   78567:  * the entire picture (ie. size bytes) is copied from fp_pic to a new temp file
                   78568:  * and that temp file is used as the picture file. If there's nothing in fp_pic
                   78569:  * or if the lookup failed the original route is taken.
                   78570:  *
                   78571:  * Support for in-line pictures is an attempt to address requirements, expressed
                   78572:  * by several organizations, of being able to store a document as a single file
                   78573:  * (usually troff input) that can then be sent through dpost and ultimately to
                   78574:  * a PostScript printer. The mechanism may help some users, but the are obvious
                   78575:  * disadvantages to this approach, and the original mechanism is the recommended
                   78576:  * approach! Perhaps the most important problem is that troff output, with in-line
                   78577:  * pictures included, doesn't fit the device independent language accepted by
                   78578:  * important post-processors (like proff) and that means you won't be able to
                   78579:  * reliably preview a packed file on your 5620 (or whatever).
                   78580:  *
                   78581:  */
                   78582: 
                   78583: #include <stdio.h>
                   78584: 
                   78585: #include "comments.h"                  /* PostScript file structuring comments */
                   78586: #include "gen.h"                       /* general purpose definitions */
                   78587: #include "path.h"                      /* just for TEMPDIR definition */
                   78588: #include "ext.h"                       /* external variable declarations */
                   78589: 
                   78590: FILE   *fp_pic = NULL;                 /* in-line pictures go here */
                   78591: FILE   *picopen();
                   78592: 
                   78593: extern int     res, hpos, vpos;
                   78594: extern int     picflag;
                   78595: extern FILE    *tf;
                   78596: 
                   78597: /*****************************************************************************/
                   78598: 
                   78599: picture(buf)
                   78600: 
                   78601:     char       *buf;           /* stuff following 'x X PI' command */
                   78602: 
                   78603: {
                   78604: 
                   78605:     int                poffset;        /* page offset */
                   78606:     int                indent;         /* indent */
                   78607:     int                length;         /* line length  */
                   78608:     int                totrap;         /* distance to next trap */
                   78609:     char       name[100];      /* picture file and page string */
                   78610:     char       hwo[40], *p;    /* height, width and offset strings */
                   78611:     char       flags[20];      /* miscellaneous stuff */
                   78612:     int                page = 1;       /* page number pulled from name[] */
                   78613:     double     frame[4];       /* height, width, y, and x offsets from hwo[] */
                   78614:     char       units;          /* scale indicator for frame dimensions */
                   78615:     int                whiteout = 0;   /* white out the box? */
                   78616:     int                outline = 0;    /* draw a box around the picture? */
                   78617:     int                scaleboth = 0;  /* scale both dimensions? */
                   78618:     double     adjx = 0.5;     /* left-right adjustment */
                   78619:     double     adjy = 0.5;     /* top-bottom adjustment */
                   78620:     double     rot = 0;        /* rotation in clockwise degrees */
                   78621:     FILE       *fp_in;         /* for *name */
                   78622:     int                i;              /* loop index */
                   78623: 
                   78624:     char       *strchr();
                   78625: 
                   78626: /*
                   78627:  *
                   78628:  * Called from devcntrl() after an 'x X PI' command is found. The syntax of that
                   78629:  * command is:
                   78630:  *
                   78631:  *     x X PI:args
                   78632:  *
                   78633:  * with args separated by colons and given by:
                   78634:  *
                   78635:  *     poffset
                   78636:  *     indent
                   78637:  *     length
                   78638:  *     totrap
                   78639:  *     file[(page)]
                   78640:  *     height[,width[,yoffset[,xoffset]]]
                   78641:  *     [flags]
                   78642:  *
                   78643:  * poffset, indent, length, and totrap are given in machine units. height, width,
                   78644:  * and offset refer to the picture frame in inches, unless they're followed by
                   78645:  * the u scale indicator. flags is a string that provides a little bit of control
                   78646:  * over the placement of the picture in the frame. Rotation of the picture, in
                   78647:  * clockwise degrees, is set by the a flag. If it's not followed by an angle
                   78648:  * the current rotation angle is incremented by 90 degrees, otherwise the angle
                   78649:  * is set by the number that immediately follows the a.
                   78650:  *
                   78651:  */
                   78652: 
                   78653:     if ( picflag == OFF )              /* skip it */
                   78654:        return;
                   78655: 
                   78656:     flushtext();
                   78657: 
                   78658:     flags[0] = '\0';                   /* just to be safe */
                   78659:     if ( sscanf(buf, "%d:%d:%d:%d:%[^:]:%[^:]:%[^:]", &poffset, &indent,
                   78660:                &length, &totrap, name, hwo, flags) < 6 ) {
                   78661:            error(NON_FATAL, "too few arguments to specify picture");
                   78662:            return;
                   78663:     }  /* End if */
                   78664: 
                   78665:     if ( sscanf(name, "%*[^(](%d", &page) == 1 )       /* grab the page number */
                   78666:        strtok(name, "(");                      /* and separate it from the name */
                   78667: 
                   78668:     if ( (fp_in = picopen(name)) == NULL ) {
                   78669:        error(NON_FATAL, "can't open picture file %s", name);
                   78670:        return;
                   78671:     }  /* End if */
                   78672: 
                   78673:     frame[0] = frame[1] = -1;          /* default frame height, width */
                   78674:     frame[2] = frame[3] = 0;           /* and y and x offsets */
                   78675: 
                   78676:     for ( i = 0, p = hwo-1; i < 4 && p != NULL; i++, p = strchr(p, ',') )
                   78677:        if ( sscanf(++p, "%lf%c", &frame[i], &units) == 2 )
                   78678:            if ( units == 'i' || units == ',' || units == '\0' )
                   78679:                frame[i] *= res;
                   78680: 
                   78681:     if ( frame[0] <= 0 )               /* check what we got for height */
                   78682:        frame[0] = totrap;
                   78683: 
                   78684:     if ( frame[1] <= 0 )               /* and width - check too big?? */
                   78685:        frame[1] = length - indent;
                   78686: 
                   78687:     frame[3] += poffset + indent;      /* real x offset */
                   78688: 
                   78689:     for ( i = 0; flags[i]; i++ )
                   78690:        switch ( flags[i] ) {
                   78691:            case 'c': adjx = adjy = 0.5; break; /* move to the center */
                   78692:            case 'l': adjx = 0; break;          /* left */
                   78693:            case 'r': adjx = 1; break;          /* right */
                   78694:            case 't': adjy = 1; break;          /* top */
                   78695:            case 'b': adjy = 0; break;          /* or bottom justify */
                   78696:            case 'o': outline = 1; break;       /* outline the picture */
                   78697:            case 'w': whiteout = 1; break;      /* white out the box */
                   78698:            case 's': scaleboth = 1; break;     /* scale both dimensions */
                   78699:            case 'a': if ( sscanf(&flags[i+1], "%lf", &rot) != 1 )
                   78700:                          rot += 90;
                   78701:        }   /* End switch */
                   78702: 
                   78703:     restore();
                   78704:     ps_include(fp_in, tf, page, whiteout, outline, scaleboth,
                   78705:                frame[3]+frame[1]/2, -vpos-frame[2]-frame[0]/2, frame[1], frame[0], adjx, adjy, -rot);
                   78706:     save();
                   78707:     fclose(fp_in);
                   78708: 
                   78709: }   /* End of picture */
                   78710: 
                   78711: /*****************************************************************************/
                   78712: 
                   78713: FILE *picopen(path)
                   78714: 
                   78715:     char       *path;                  /* picture file pathname */
                   78716: 
                   78717: {
                   78718: 
                   78719:     char       name[100];              /* pathnames */
                   78720:     long       pos;                    /* current position */
                   78721:     long       total;                  /* and sizes - from *fp_pic */
                   78722:     char       *tname;                 /* pathname */
                   78723:     FILE       *fp;                    /* and pointer for the new temp file */
                   78724: 
                   78725: /*
                   78726:  *
                   78727:  * Responsible for finding and opening the next picture file. If we've accumulated
                   78728:  * any in-line pictures fp_pic won't be NULL and we'll look there first. If *path
                   78729:  * is found in *fp_pic we create another temp file, open it for update, unlink it,
                   78730:  * copy in the picture, seek back to the start of the new temp file, and return
                   78731:  * the file pointer to the caller. If fp_pic is NULL or the lookup fails we just
                   78732:  * open file *path and return the resulting file pointer to the caller.
                   78733:  *
                   78734:  */
                   78735: 
                   78736:     if ( fp_pic != NULL ) {
                   78737:        fseek(fp_pic, 0L, 0);
                   78738:        while ( fscanf(fp_pic, "%s %ld\n", name, &total) != EOF ) {
                   78739:            pos = ftell(fp_pic);
                   78740:            if ( strcmp(path, name) == 0 ) {
                   78741:                if ( (tname = tempnam(TEMPDIR, "dpost")) == NULL )
                   78742:                    error(FATAL, "can't generate temp file name");
                   78743:                if ( (fp = fopen(tname, "w+r")) == NULL )
                   78744:                    error(FATAL, "can't open %s", tname);
                   78745:                unlink(tname);
                   78746:                free(tname);
                   78747:                piccopy(fp_pic, fp, total);
                   78748:                fseek(fp, 0L, 0);
                   78749:                return(fp);
                   78750:            }   /* End if */
                   78751:            fseek(fp_pic, total+pos, 0);
                   78752:        }   /* End while */
                   78753:     }  /* End if */
                   78754: 
                   78755:     return(fopen(path, "r"));
                   78756: 
                   78757: }   /* End of picopen */
                   78758: 
                   78759: /*****************************************************************************/
                   78760: 
                   78761: inlinepic(fp, buf)
                   78762: 
                   78763:     FILE       *fp;                    /* current input file */
                   78764:     char       *buf;                   /* whatever followed "x X InlinePicture" */
                   78765: 
                   78766: {
                   78767: 
                   78768:     char       *tname;                 /* temp file pathname - for *fp_pic */
                   78769:     char       name[100];              /* picture file pathname */
                   78770:     long       total;                  /* and size - both from *buf */
                   78771: 
                   78772: /*
                   78773:  *
                   78774:  * Adds an in-line picture file to the end of temporary file *fp_pic. All pictures
                   78775:  * grabbed from the input file are saved in the same temp file. Each is preceeded
                   78776:  * by a one line header that includes the original picture file pathname and the
                   78777:  * size of the picture in bytes. The in-line picture file is opened for update,
                   78778:  * left open, and unlinked so it disappears when we do.
                   78779:  *
                   78780:  */
                   78781: 
                   78782:     if ( fp_pic == NULL ) {
                   78783:        if ( (tname = tempnam(TEMPDIR, "dpost")) == NULL )
                   78784:            error(FATAL, "can't generate in-line picture file name");
                   78785:        if ( (fp_pic = fopen(tname, "w+r")) == NULL )
                   78786:            error(FATAL, "can't open in-line picture file %s", tname);
                   78787:        unlink(tname);
                   78788:     }  /* End if */
                   78789: 
                   78790:     if ( sscanf(buf, "%s %ld", name, &total) != 2 )
                   78791:        error(FATAL, "in-line picture error");
                   78792: 
                   78793:     fseek(fp_pic, 0L, 2);
                   78794:     fprintf(fp_pic, "%s %ld\n", name, total);
                   78795:     getc(fp);
                   78796:     fflush(fp_pic);
                   78797:     piccopy(fp, fp_pic, total);
                   78798:     ungetc('\n', fp);
                   78799: 
                   78800: }   /* End of inlinepic */
                   78801: 
                   78802: /*****************************************************************************/
                   78803: 
                   78804: piccopy(fp_in, fp_out, total)
                   78805: 
                   78806:     FILE       *fp_in;                 /* input */
                   78807:     FILE       *fp_out;                /* and output file pointers */
                   78808:     long       total;                  /* number of bytes to be copied */
                   78809: 
                   78810: {
                   78811: 
                   78812:     long       i;                      /* loop index */
                   78813: 
                   78814: /*
                   78815:  *
                   78816:  * Copies total bytes from file fp_in to fp_out. Used to append picture files to
                   78817:  * *fp_pic and then copy them to yet another temporary file immediately before
                   78818:  * they're used (in picture()).
                   78819:  *
                   78820:  */
                   78821: 
                   78822:     for ( i = 0; i < total; i++ )
                   78823:        if ( putc(getc(fp_in), fp_out) == EOF )
                   78824:            error(FATAL, "error copying in-line picture file");
                   78825:     fflush(fp_out);
                   78826: 
                   78827: }   /* End of piccopy */
                   78828: 
                   78829: /*****************************************************************************/
                   78830: 
                   78831: 0707070014231311171006440057030057030000011033470522627505200004200000000262post.src/dpost.utf/ps_include.awk/^->/ {
                   78832:        if(ndef)
                   78833:                printf("\t0\n};\n\n")
                   78834:        printf("static char *%s[] = {\n", $2)
                   78835:        ndef++
                   78836:        next
                   78837: }
                   78838: /^#/ {next}
                   78839: $0 != "" {printf("\t\"%s\",\n", $0); next}
                   78840: END {printf("\t0\n};\n")}
                   78841: 0707070014231311201006440057030057030000011035400522627505300004000000012407post.src/dpost.utf/ps_include.c
                   78842: #include <stdio.h>
                   78843: #include "ps_include.h"
                   78844: 
                   78845: #define has(word)      (strncmp(buf, word, strlen(word)) == 0)
                   78846: #define grab(n)                ((Section *)(nglobal \
                   78847:                        ? realloc((char *)global, n*sizeof(Section)) \
                   78848:                        : calloc(n, sizeof(Section))))
                   78849: 
                   78850: char   buf[512];
                   78851: typedef struct {long start, end;} Section;
                   78852: 
                   78853: extern char    *calloc(), *realloc();
                   78854: 
                   78855: 
                   78856: ps_include(fin, fout, page_no, whiteout, outline, scaleboth, cx, cy, sx, sy, ax, ay, rot)
                   78857: 
                   78858: 
                   78859:     FILE       *fin, *fout;            /* input and output files */
                   78860:     int                page_no;                /* physical page number from *fin */
                   78861:     int                whiteout;               /* erase picture area */
                   78862:     int                outline;                /* draw a box around it and */
                   78863:     int                scaleboth;              /* scale both dimensions - if not zero */
                   78864:     double     cx, cy;                 /* center of the picture and */
                   78865:     double     sx, sy;                 /* its size - in current coordinates */
                   78866:     double     ax, ay;                 /* left-right, up-down adjustment */
                   78867:     double     rot;                    /* rotation - in clockwise degrees */
                   78868: 
                   78869: 
                   78870: {
                   78871: 
                   78872: 
                   78873:     int                foundpage = 0;          /* found the page when non zero */
                   78874:     int                foundpbox = 0;          /* found the page bounding box */
                   78875:     int                nglobal = 0;            /* number of global defs so far */
                   78876:     int                maxglobal = 0;          /* and the number we've got room for */
                   78877:     Section    prolog, page, trailer;  /* prologue, page, and trailer offsets */
                   78878:     Section    *global;                /* offsets for all global definitions */
                   78879:     double     llx, lly;               /* lower left and */
                   78880:     double     urx, ury;               /* upper right corners - default coords */
                   78881:     double     w = whiteout != 0;      /* mostly for the var() macro */
                   78882:     double     o = outline != 0;
                   78883:     double     s = scaleboth != 0;
                   78884:     int                i;                      /* loop index */
                   78885: 
                   78886: 
                   78887: /*
                   78888:  *
                   78889:  * Reads a PostScript file (*fin), and uses structuring comments to locate the
                   78890:  * prologue, trailer, global definitions, and the requested page. After the whole
                   78891:  * file is scanned, the  special ps_include PostScript definitions are copied to
                   78892:  * *fout, followed by the prologue, global definitions, the requested page, and
                   78893:  * the trailer. Before returning the initial environment (saved in PS_head) is
                   78894:  * restored.
                   78895:  *
                   78896:  * By default we assume the picture is 8.5 by 11 inches, but the BoundingBox
                   78897:  * comment, if found, takes precedence.
                   78898:  *
                   78899:  */
                   78900: 
                   78901: 
                   78902:        llx = lly = 0;                  /* default BoundingBox - 8.5x11 inches */
                   78903:        urx = 72 * 8.5;
                   78904:        ury = 72 * 11.0;
                   78905: 
                   78906:        /* section boundaries and bounding box */
                   78907: 
                   78908:        prolog.start = prolog.end = 0;
                   78909:        page.start = page.end = 0;
                   78910:        trailer.start = 0;
                   78911:        fseek(fin, 0L, 0);
                   78912: 
                   78913:        while ( fgets(buf, sizeof(buf), fin) != NULL )
                   78914:                if (!has("%%"))
                   78915:                        continue;
                   78916:                else if (has("%%Page: ")) {
                   78917:                        if (!foundpage)
                   78918:                                page.start = ftell(fin);
                   78919:                        sscanf(buf, "%*s %*s %d", &i);
                   78920:                        if (i == page_no)
                   78921:                                foundpage = 1;
                   78922:                        else if (foundpage && page.end <= page.start)
                   78923:                                page.end = ftell(fin);
                   78924:                } else if (has("%%EndPage: ")) {
                   78925:                        sscanf(buf, "%*s %*s %d", &i);
                   78926:                        if (i == page_no) {
                   78927:                                foundpage = 1;
                   78928:                                page.end = ftell(fin);
                   78929:                        }
                   78930:                        if (!foundpage)
                   78931:                                page.start = ftell(fin);
                   78932:                } else if (has("%%PageBoundingBox: ")) {
                   78933:                        if (i == page_no) {
                   78934:                                foundpbox = 1;
                   78935:                                sscanf(buf, "%*s %lf %lf %lf %lf",
                   78936:                                                &llx, &lly, &urx, &ury);
                   78937:                        }
                   78938:                } else if (has("%%BoundingBox: ")) {
                   78939:                        if (!foundpbox)
                   78940:                                sscanf(buf,"%*s %lf %lf %lf %lf",
                   78941:                                                &llx, &lly, &urx, &ury);
                   78942:                } else if (has("%%EndProlog") || has("%%EndSetup") || has("%%EndDocumentSetup"))
                   78943:                        prolog.end = page.start = ftell(fin);
                   78944:                else if (has("%%Trailer"))
                   78945:                        trailer.start = ftell(fin);
                   78946:                else if (has("%%BeginGlobal")) {
                   78947:                        if (page.end <= page.start) {
                   78948:                                if (nglobal >= maxglobal) {
                   78949:                                        maxglobal += 20;
                   78950:                                        global = grab(maxglobal);
                   78951:                                }
                   78952:                                global[nglobal].start = ftell(fin);
                   78953:                        }
                   78954:                } else if (has("%%EndGlobal"))
                   78955:                        if (page.end <= page.start)
                   78956:                                global[nglobal++].end = ftell(fin);
                   78957: 
                   78958:        fseek(fin, 0L, 2);
                   78959:        if (trailer.start == 0)
                   78960:                trailer.start = ftell(fin);
                   78961:        trailer.end = ftell(fin);
                   78962: 
                   78963:        if (page.end <= page.start)
                   78964:                page.end = trailer.start;
                   78965: 
                   78966: /*
                   78967: fprintf(stderr, "prolog=(%d,%d)\n", prolog.start, prolog.end);
                   78968: fprintf(stderr, "page=(%d,%d)\n", page.start, page.end);
                   78969: for(i = 0; i < nglobal; i++)
                   78970:        fprintf(stderr, "global[%d]=(%d,%d)\n", i, global[i].start, global[i].end);
                   78971: fprintf(stderr, "trailer=(%d,%d)\n", trailer.start, trailer.end);
                   78972: */
                   78973: 
                   78974:        /* all output here */
                   78975:        print(fout, PS_head);
                   78976: /*
                   78977:  * Unix 4.0 didn't like the var macro.
                   78978:  *
                   78979:        var(llx); var(lly); var(urx); var(ury); var(w); var(o); var(s);
                   78980:        var(cx); var(cy); var(sx); var(sy); var(ax); var(ay); var(rot);
                   78981:  *
                   78982:  */
                   78983: 
                   78984:        fprintf(fout, "/llx %g def\n", llx);
                   78985:        fprintf(fout, "/lly %g def\n", lly);
                   78986:        fprintf(fout, "/urx %g def\n", urx);
                   78987:        fprintf(fout, "/ury %g def\n", ury);
                   78988:        fprintf(fout, "/w %g def\n", w);
                   78989:        fprintf(fout, "/o %g def\n", o);
                   78990:        fprintf(fout, "/s %g def\n", s);
                   78991:        fprintf(fout, "/cx %g def\n", cx);
                   78992:        fprintf(fout, "/cy %g def\n", cy);
                   78993:        fprintf(fout, "/sx %g def\n", sx);
                   78994:        fprintf(fout, "/sy %g def\n", sy);
                   78995:        fprintf(fout, "/ax %g def\n", ax);
                   78996:        fprintf(fout, "/ay %g def\n", ay);
                   78997:        fprintf(fout, "/rot %g def\n", rot);
                   78998: 
                   78999:        print(fout, PS_setup);
                   79000:        copy(fin, fout, &prolog);
                   79001:        for(i = 0; i < nglobal; i++)
                   79002:                copy(fin, fout, &global[i]);
                   79003:        copy(fin, fout, &page);
                   79004:        copy(fin, fout, &trailer);
                   79005:        print(fout, PS_tail);
                   79006: 
                   79007:        if(nglobal)
                   79008:                free(global);
                   79009: 
                   79010: }
                   79011: 
                   79012: static
                   79013: print(fout, s)
                   79014: FILE *fout;
                   79015: char **s;
                   79016: {
                   79017:        while (*s)
                   79018:                fprintf(fout, "%s\n", *s++);
                   79019: }
                   79020: 
                   79021: static
                   79022: copy(fin, fout, s)
                   79023: FILE *fin, *fout;
                   79024: Section *s;
                   79025: {
                   79026:        if (s->end <= s->start)
                   79027:                return;
                   79028:        fseek(fin, s->start, 0);
                   79029:        while (ftell(fin) < s->end && fgets(buf, sizeof(buf), fin) != NULL)
                   79030:                if (buf[0] != '%')
                   79031:                        fprintf(fout, "%s", buf);
                   79032: }
                   79033: 
                   79034: 0707070014231311211006440057030057030000011035460522627505300004000000003752post.src/dpost.utf/ps_include.hstatic char *PS_head[] = {
                   79035:        "%ps_include: begin",
                   79036:        "save",
                   79037:        "/ed {exch def} def",
                   79038:        "{} /showpage ed",
                   79039:        "{} /copypage ed",
                   79040:        "{} /erasepage ed",
                   79041:        "{} /letter ed",
                   79042:        "currentdict /findfont known systemdict /findfont known and {",
                   79043:        "       /findfont systemdict /findfont get def",
                   79044:        "} if",
                   79045:        "36 dict dup /PS-include-dict-dw ed begin",
                   79046:        "/context ed",
                   79047:        "count array astore /o-stack ed",
                   79048:        "%ps_include: variables begin",
                   79049:        0
                   79050: };
                   79051: 
                   79052: static char *PS_setup[] = {
                   79053:        "%ps_include: variables end",
                   79054:        "{llx lly urx ury} /bbox ed",
                   79055:        "{newpath 2 index exch 2 index exch dup 6 index exch",
                   79056:        " moveto 3 {lineto} repeat closepath} /boxpath ed",
                   79057:        "{dup mul exch dup mul add sqrt} /len ed",
                   79058:        "{2 copy gt {exch} if pop} /min ed",
                   79059:        "{2 copy lt {exch} if pop} /max ed",
                   79060:        "{transform round exch round exch A itransform} /nice ed",
                   79061:        "{6 array} /n ed",
                   79062:        "n defaultmatrix n currentmatrix n invertmatrix n concatmatrix /A ed",
                   79063:        "urx llx sub 0 A dtransform len /Sx ed",
                   79064:        "0 ury lly sub A dtransform len /Sy ed",
                   79065:        "llx urx add 2 div lly ury add 2 div A transform /Cy ed /Cx ed",
                   79066:        "rot dup sin abs /S ed cos abs /C ed",
                   79067:        "Sx S mul Sy C mul add /H ed",
                   79068:        "Sx C mul Sy S mul add /W ed",
                   79069:        "sy H div /Scaley ed",
                   79070:        "sx W div /Scalex ed",
                   79071:        "s 0 eq {Scalex Scaley min dup /Scalex ed /Scaley ed} if",
                   79072:        "sx Scalex W mul sub 0 max ax 0.5 sub mul cx add /cx ed",
                   79073:        "sy Scaley H mul sub 0 max ay 0.5 sub mul cy add /cy ed",
                   79074:        "urx llx sub 0 A dtransform exch atan rot exch sub /rot ed",
                   79075:        "n currentmatrix initgraphics setmatrix",
                   79076:        "cx cy translate",
                   79077:        "Scalex Scaley scale",
                   79078:        "rot rotate",
                   79079:        "Cx neg Cy neg translate",
                   79080:        "A concat",
                   79081:        "bbox boxpath clip newpath",
                   79082:        "w 0 ne {gsave bbox boxpath 1 setgray fill grestore} if",
                   79083:        "end",
                   79084:        "gsave",
                   79085:        "%ps_include: inclusion begin",
                   79086:        0
                   79087: };
                   79088: 
                   79089: static char *PS_tail[] = {
                   79090:        "%ps_include: inclusion end",
                   79091:        "grestore",
                   79092:        "PS-include-dict-dw begin",
                   79093:        "o 0 ne {gsave A defaultmatrix /A ed llx lly nice urx ury nice",
                   79094:        "       initgraphics 0.1 setlinewidth boxpath stroke grestore} if",
                   79095:        "clear o-stack aload pop",
                   79096:        "context end restore",
                   79097:        "%ps_include: end",
                   79098:        0
                   79099: };
                   79100: 0707070014231311221006440057030057030000011035040522627505300004100000007004post.src/dpost.utf/ps_include.ps-> PS_head
                   79101: 
                   79102: %ps_include: begin
                   79103: save
                   79104: /ed {exch def} def
                   79105: 
                   79106: # redefine dangerous operators
                   79107: {} /showpage ed
                   79108: {} /copypage ed
                   79109: {} /erasepage ed
                   79110: {} /letter ed
                   79111: 
                   79112: # restore findfont from systemdict if it looks like it's be redefined
                   79113: currentdict /findfont known systemdict /findfont known and {
                   79114:        /findfont systemdict /findfont get def
                   79115: } if
                   79116: 
                   79117: # computations are done in the context of a new dictionary
                   79118: 36 dict dup /PS-include-dict-dw ed begin
                   79119: 
                   79120: # context holds the save object created earlier
                   79121: /context ed
                   79122: 
                   79123: # save and clear the operand stack
                   79124: count array astore /o-stack ed
                   79125: 
                   79126: # the following variables are now expected:
                   79127: #      llx,lly,urx,ury bounding box of picture to be included
                   79128: #      w               nonzero if space should be painted white to start
                   79129: #      o               nonzero if space should be outlined
                   79130: #      s               nonzero if both dimensions should be scaled
                   79131: #      cx,cy           center of page space in current coordinates
                   79132: #      sx,sy           size of page space in current coordinates
                   79133: #      ax,ay           left-right, up-down adjustment of picture in page space
                   79134: #      rot             rotation of picture in page space
                   79135: %ps_include: variables begin
                   79136: 
                   79137: 
                   79138: 
                   79139: -> PS_setup
                   79140: 
                   79141: %ps_include: variables end
                   79142: 
                   79143: # some routines:
                   79144: # - BBOX llx lly urx ury       put bounding box on stack
                   79145: # llx lly urx ury BOXPATH -    make a path with given box corners
                   79146: # dx dy LEN length             compute length of positionless vector
                   79147: # a b MIN min                  compute minimum of two numbers
                   79148: # a b MAX max                  compute maximum of two numbers
                   79149: # x y NICE x y                 move to pixel boundaries in default coords
                   79150: {llx lly urx ury} /bbox ed
                   79151: {newpath 2 index exch 2 index exch dup 6 index exch
                   79152:  moveto 3 {lineto} repeat closepath} /boxpath ed
                   79153: {dup mul exch dup mul add sqrt} /len ed
                   79154: {2 copy gt {exch} if pop} /min ed
                   79155: {2 copy lt {exch} if pop} /max ed
                   79156: {transform round exch round exch A itransform} /nice ed
                   79157: 
                   79158: # A is the transformation from default to current coordinates
                   79159: {6 array} /n ed
                   79160: n defaultmatrix n currentmatrix n invertmatrix n concatmatrix /A ed
                   79161: 
                   79162: # Sx,Sy and Cx,Cy are dimensions and size of bounding box in current coordinates
                   79163: urx llx sub 0 A dtransform len /Sx ed
                   79164: 0 ury lly sub A dtransform len /Sy ed
                   79165: llx urx add 2 div lly ury add 2 div A transform /Cy ed /Cx ed
                   79166: 
                   79167: # H and W are height and width of rotated box in current coordinates
                   79168: rot dup sin abs /S ed cos abs /C ed
                   79169: Sx S mul Sy C mul add /H ed
                   79170: Sx C mul Sy S mul add /W ed
                   79171: 
                   79172: # Scalex and Scaley are the required horizontal and vertical scaling factors
                   79173: sy H div /Scaley ed
                   79174: sx W div /Scalex ed
                   79175: 
                   79176: # Preserve aspect ratio if we're not scaling both dimensions (ie. s is 0)
                   79177: s 0 eq {Scalex Scaley min dup /Scalex ed /Scaley ed} if
                   79178: 
                   79179: # add to cx,cy the shift needed within the page space
                   79180: sx Scalex W mul sub 0 max ax 0.5 sub mul cx add /cx ed
                   79181: sy Scaley H mul sub 0 max ay 0.5 sub mul cy add /cy ed
                   79182: 
                   79183: # the actual rotation needed is rot less the current rotation
                   79184: urx llx sub 0 A dtransform exch atan rot exch sub /rot ed
                   79185: 
                   79186: # set up the coordinate system
                   79187: n currentmatrix initgraphics setmatrix
                   79188: cx cy translate
                   79189: Scalex Scaley scale
                   79190: rot rotate
                   79191: Cx neg Cy neg translate
                   79192: A concat
                   79193: 
                   79194: # set the clipping region, and conditionally whiteout and outline
                   79195: bbox boxpath clip newpath
                   79196: w 0 ne {gsave bbox boxpath 1 setgray fill grestore} if
                   79197: 
                   79198: # pop local dictionary from the dict stack
                   79199: end
                   79200: 
                   79201: # now begins the actual material extracted from the file
                   79202: gsave
                   79203: %ps_include: inclusion begin
                   79204: 
                   79205: 
                   79206: 
                   79207: -> PS_tail
                   79208: 
                   79209: %ps_include: inclusion end
                   79210: grestore
                   79211: 
                   79212: # within the context of the local dictionary ...
                   79213: PS-include-dict-dw begin
                   79214: 
                   79215: o 0 ne {gsave A defaultmatrix /A ed llx lly nice urx ury nice
                   79216:        initgraphics 0.1 setlinewidth boxpath stroke grestore} if
                   79217: 
                   79218: # ... restore the operand stack and the save context
                   79219: clear o-stack aload pop
                   79220: context end restore
                   79221: %ps_include: end
                   79222: 0707070014231311221006440057030057030000011035040522627505300001300000000000TRAILER!!!f
                   79223: 
                   79224: # ... restore the operand stack and the save context
                   79225: clear o-stack aload pop
                   79226: context end restore
                   79227: %ps_include: end
                   79228: 0707070014231311221006440057030057030000011035040522627505300001300000000000TRAILER!!!f
                   79229: 
                   79230: # ... restore the operand stack and the save context
                   79231: clear o-stack aload pop
                   79232: context end restore
                   79233: %ps_

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.