summaryrefslogtreecommitdiff
path: root/fonts/utilities/ttf2pt1/app/X11/t1-xf86.334.patch
diff options
context:
space:
mode:
Diffstat (limited to 'fonts/utilities/ttf2pt1/app/X11/t1-xf86.334.patch')
-rw-r--r--fonts/utilities/ttf2pt1/app/X11/t1-xf86.334.patch199
1 files changed, 199 insertions, 0 deletions
diff --git a/fonts/utilities/ttf2pt1/app/X11/t1-xf86.334.patch b/fonts/utilities/ttf2pt1/app/X11/t1-xf86.334.patch
new file mode 100644
index 0000000000..31e98e2d01
--- /dev/null
+++ b/fonts/utilities/ttf2pt1/app/X11/t1-xf86.334.patch
@@ -0,0 +1,199 @@
+*** fontfcn.c 2000/01/02 18:55:56 1.1
+--- fontfcn.c 2000/01/02 19:00:17
+***************
+*** 33,38 ****
+--- 33,39 ----
+ #include <string.h>
+ #include "t1imager.h"
+ #include "util.h"
++ #include "t1stdio.h"
+ #include "fontfcn.h"
+ #include "fontmisc.h"
+
+***************
+*** 117,132 ****
+ resetFont(env);
+ /* This will load the font into the FontP */
+ rcode = scan_font(FontP);
+! if (rcode == SCAN_OUT_OF_MEMORY) {
+ /* free the memory and start again */
+ xfree(vm_base);
+ if (!(initFont(vm_size * 2))) {
+ /* we are really out of memory */
+ return(SCAN_OUT_OF_MEMORY);
+ }
+ resetFont(env);
+ rcode = scan_font(FontP);
+- /* only double the memory once, then report error */
+ }
+ return(rcode);
+ }
+--- 118,151 ----
+ resetFont(env);
+ /* This will load the font into the FontP */
+ rcode = scan_font(FontP);
+! if (rcode != SCAN_OUT_OF_MEMORY)
+! return rcode;
+!
+! if (T1FileSize > VM_SIZE) {
+! /* use the file size as estimation */
+!
+ /* free the memory and start again */
+ xfree(vm_base);
++ if (!(initFont(T1FileSize))) {
++ /* we are really out of memory */
++ return(SCAN_OUT_OF_MEMORY);
++ }
++ resetFont(env);
++ rcode = scan_font(FontP);
++ if (rcode != SCAN_OUT_OF_MEMORY)
++ return rcode;
++ }
++
++ /* if still not enough, increase up to maximum */
++ while (rcode == SCAN_OUT_OF_MEMORY
++ && vm_size <= VM_SIZE_MAX/2 ) {
++ xfree(vm_base);
+ if (!(initFont(vm_size * 2))) {
+ /* we are really out of memory */
+ return(SCAN_OUT_OF_MEMORY);
+ }
+ resetFont(env);
+ rcode = scan_font(FontP);
+ }
+ return(rcode);
+ }
+*** paths.c 2000/01/02 18:55:56 1.1
+--- paths.c 2000/01/02 18:56:27
+***************
+*** 584,590 ****
+ CONCAT(before, r);
+ r = before;
+ }
+! else
+ r->context = after->context;
+ if (after != NULL)
+ CONCAT(r, after);
+--- 584,590 ----
+ CONCAT(before, r);
+ r = before;
+ }
+! else if (after != NULL)
+ r->context = after->context;
+ if (after != NULL)
+ CONCAT(r, after);
+*** scanfont.c 2000/01/02 18:55:56 1.1
+--- scanfont.c 2000/01/02 18:56:26
+***************
+*** 1383,1388 ****
+--- 1383,1390 ----
+ /* point to name and search for leading blanks */
+ nameP= FontP->FontFileName.data.nameP;
+ namelen = FontP->FontFileName.len;
++ if (namelen > (128-1) ) /* prevent getting out of filename[] */
++ namelen = (128-1);
+ while (nameP[0] == ' ') {
+ nameP++;
+ namelen--;
+*** t1io.c 2000/01/02 18:55:56 1.1
+--- t1io.c 2000/01/02 18:56:32
+***************
+*** 54,59 ****
+--- 54,62 ----
+ /* Our single FILE structure and buffer for this package */
+ STATIC F_FILE TheFile;
+ STATIC unsigned char TheBuffer[F_BUFSIZ];
++
++ /* the size of the file we read */
++ int T1FileSize;
+
+ /* Our routines */
+ F_FILE *T1Open(), *T1Eexec();
+***************
+*** 87,92 ****
+--- 90,96 ----
+ of->flags = 0;
+ of->error = 0;
+ haveextrach = 0;
++ T1FileSize = 0;
+ return &TheFile;
+ } /* end Open */
+
+***************
+*** 165,171 ****
+--- 169,181 ----
+ int T1Close(f) /* Close the file */
+ F_FILE *f; /* Stream descriptor */
+ {
++ int rc;
++
+ if (f->b_base == NULL) return 0; /* already closed */
++
++ while ( (rc = read(f->fd, f->b_base, F_BUFSIZ)) >0)
++ T1FileSize += rc; /* count the rest of the file */
++
+ f->b_base = NULL; /* no valid stream */
+ return close(f->fd);
+ } /* end Close */
+***************
+*** 289,294 ****
+--- 299,305 ----
+ }
+ }
+ f->b_ptr = f->b_base;
++ T1FileSize += rc; /* remember how many bytes we have */
+ if (Decrypt) rc = T1Decrypt(f->b_base, rc);
+ return rc;
+ } /* end Fill */
+*** type1.c 2000/01/02 18:55:56 1.1
+--- type1.c 2000/01/02 18:56:27
+***************
+*** 365,378 ****
+ /* ADJUST STEM WIDTHS */
+ /**********************/
+
+! widthdiff = 0.0;
+
+ /* Find standard stem with smallest width difference from this stem */
+ if (stems[stemno].vertical) { /* vertical stem */
+ if (blues->StdVW != 0) /* there is an entry for StdVW */
+ widthdiff = blues->StdVW - stemwidth;
+ for (i = 0; i < blues->numStemSnapV; ++i) { /* now look at StemSnapV */
+! if (blues->StemSnapV[i] - stemwidth < widthdiff)
+ /* this standard width is the best match so far for this stem */
+ widthdiff = blues->StemSnapV[i] - stemwidth;
+ }
+--- 365,380 ----
+ /* ADJUST STEM WIDTHS */
+ /**********************/
+
+! /* a big value to not compete with StemSnap */
+! /* if there is no StemSnap it will be caught later */
+! widthdiff = onepixel*2;
+
+ /* Find standard stem with smallest width difference from this stem */
+ if (stems[stemno].vertical) { /* vertical stem */
+ if (blues->StdVW != 0) /* there is an entry for StdVW */
+ widthdiff = blues->StdVW - stemwidth;
+ for (i = 0; i < blues->numStemSnapV; ++i) { /* now look at StemSnapV */
+! if ( FABS(blues->StemSnapV[i] - stemwidth) < FABS(widthdiff) )
+ /* this standard width is the best match so far for this stem */
+ widthdiff = blues->StemSnapV[i] - stemwidth;
+ }
+***************
+*** 380,386 ****
+ if (blues->StdHW != 0) /* there is an entry for StdHW */
+ widthdiff = blues->StdHW - stemwidth;
+ for (i = 0; i < blues->numStemSnapH; ++i) { /* now look at StemSnapH */
+! if (blues->StemSnapH[i] - stemwidth < widthdiff)
+ /* this standard width is the best match so far for this stem */
+ widthdiff = blues->StemSnapH[i] - stemwidth;
+ }
+--- 382,388 ----
+ if (blues->StdHW != 0) /* there is an entry for StdHW */
+ widthdiff = blues->StdHW - stemwidth;
+ for (i = 0; i < blues->numStemSnapH; ++i) { /* now look at StemSnapH */
+! if ( FABS(blues->StemSnapH[i] - stemwidth) < FABS(widthdiff) )
+ /* this standard width is the best match so far for this stem */
+ widthdiff = blues->StemSnapH[i] - stemwidth;
+ }