diff options
Diffstat (limited to 'fonts/utilities/ttf2pt1/app/X11/t1-xf86.334.patch')
-rw-r--r-- | fonts/utilities/ttf2pt1/app/X11/t1-xf86.334.patch | 199 |
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; + } |