/* $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 #include #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); }