summaryrefslogtreecommitdiff
path: root/dviware/dvi2pcl/openpkfile.c
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /dviware/dvi2pcl/openpkfile.c
Initial commit
Diffstat (limited to 'dviware/dvi2pcl/openpkfile.c')
-rw-r--r--dviware/dvi2pcl/openpkfile.c91
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);
+}