diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /dviware/dvi2pcl/openpkfile.c |
Initial commit
Diffstat (limited to 'dviware/dvi2pcl/openpkfile.c')
-rw-r--r-- | dviware/dvi2pcl/openpkfile.c | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/dviware/dvi2pcl/openpkfile.c b/dviware/dvi2pcl/openpkfile.c new file mode 100644 index 0000000000..b3a6c9dfc4 --- /dev/null +++ b/dviware/dvi2pcl/openpkfile.c @@ -0,0 +1,91 @@ +/* $Log: openpkfile.c,v $ + * Revision 0.8 92/11/23 19:46:50 19:46:50 bt (Bo Thide') + * Fixed resolution bug. Portable downloading. Added/changed options. PJXL color support + * + * Revision 0.7 92/11/13 02:41:35 02:41:35 bt (Bo Thide') + * More bug fixes and improvements. Support for PaintJet XL + * + * Revision 0.6 92/11/10 21:47:51 21:47:51 bt (Bo Thide') + * Bug fixes. Added -R option. Better font handling. + * + * Revision 0.5 92/11/09 16:25:38 16:25:38 bt (Bo Thide') + * Rewrite of dospecial.c. Extended \special support + * + * Revision 0.4 92/11/08 02:45:54 02:45:54 bt (Bo Thide') + * Changed to portable bit manipulations. Replaced strrstr for non-POSIX compliant C. Fixed numerous bugs. Added support for more \special's. + * + * Revision 0.3 92/08/24 12:45:45 12:45:45 bt (Bo Thide') + * Fixed 8 bit (dc font) support. + * + * Revision 0.2 92/08/23 17:28:58 17:28:58 bt (Bo Thide') + * Source cleaned up. Changed certain function calls. Removed globals. + * + * Revision 0.1 92/08/22 23:58:48 23:58:48 bt (Bo Thide') + * First Release. + * */ + +#include <stdio.h> +#include <string.h> +#include "globals.h" +#include "paths.h" + +static char rcsid[] = "$Header: openpkfile.c,v 0.8 92/11/23 19:46:50 bt Exp $"; + +FILE *openpkfile() +{ + FILE *fileptr; + char *fptr, *nptr, *pptr; + char *pt_chrs = "0123456789", *pt_ptr; + int pt_value; + + nptr = &names[font->name]; + fptr = pkname; + pptr = fontpath; + + if(*nptr) + while(*nptr) + *fptr++ = *nptr++; + else + while(*pptr) + *fptr++ = *pptr++; + nptr++; + + /* Find the pt size from the font name string */ + pt_ptr = strpbrk(nptr, pt_chrs); + sscanf(pt_ptr, "%d", &pt_value); + + /* Look for the pk fonts in pk300/10pt/cmr10.300pk etc.*/ + sprintf(fptr,"/%dpt/%s.%dpk", pt_value, nptr, font->dir_size); + + /* Try to open pk font file */ + if((fileptr = fopen(pkname,"r")) != NULL) + return fileptr; + + /* Look for the pk fonts in pk300/cmr10.300pk etc.*/ + sprintf(fptr,"/%s.%dpk", nptr, font->dir_size); + if((fileptr = fopen(pkname,"r")) != NULL) + return fileptr; + + fprintf(stderr,"Cannot find pk font file %s\n",pkname); + + /* Try to substitute at base resolution */ + font->dir_size = pt_value = RESOLUTION; + + sprintf(fptr, "/%dpt/%s.%dpk", pt_value,nptr, font->dir_size); + if((fileptr = fopen(pkname,"r")) != NULL){ + fprintf(stderr,"Substituting %s at %d points\n", nptr,pt_value); + return fileptr; + } + + sprintf(fptr, "/%s.%dpk",nptr,font->dir_size); + if((fileptr = fopen(pkname,"r")) != NULL){ + fprintf(stderr,"Substituting %s at %d points\n", nptr,pt_value); + return fileptr; + } + + fprintf(stderr,"Substituting cmr10 at ten points . . .\n"); + if ((fileptr = fopen(defaultpk,"r")) != NULL) + return 0; + fprintf(stderr, "Killed in openpkfile()\n"); + exit(-1); +} |