source: trunk/filemanager/tp/dompdf/lib/ttf2ufm/ttf2ufm-src/app/X11/t1-xf86.334.patch @ 2000

Revision 2000, 6.0 KB checked in by amuller, 14 years ago (diff)

Ticket #597 - Implementação do módulo gerenciador de arquivos

Line 
1*** fontfcn.c   2000/01/02 18:55:56     1.1
2--- fontfcn.c   2000/01/02 19:00:17
3***************
4*** 33,38 ****
5--- 33,39 ----
6  #include <string.h>
7  #include "t1imager.h"
8  #include "util.h"
9+ #include "t1stdio.h"
10  #include "fontfcn.h"
11  #include "fontmisc.h"
12   
13***************
14*** 117,132 ****
15    resetFont(env);
16    /* This will load the font into the FontP */
17    rcode = scan_font(FontP);
18!   if (rcode == SCAN_OUT_OF_MEMORY) {
19      /* free the memory and start again */
20      xfree(vm_base);
21      if (!(initFont(vm_size * 2))) {
22        /* we are really out of memory */
23        return(SCAN_OUT_OF_MEMORY);
24        }
25      resetFont(env);
26      rcode = scan_font(FontP);
27-     /* only double the memory once, then report error */
28    }
29    return(rcode);
30  }
31--- 118,151 ----
32    resetFont(env);
33    /* This will load the font into the FontP */
34    rcode = scan_font(FontP);
35!   if (rcode != SCAN_OUT_OF_MEMORY)
36!     return rcode;
37!
38!   if (T1FileSize > VM_SIZE) {
39!     /* use the file size as estimation */
40!
41      /* free the memory and start again */
42      xfree(vm_base);
43+     if (!(initFont(T1FileSize))) {
44+       /* we are really out of memory */
45+       return(SCAN_OUT_OF_MEMORY);
46+     }
47+     resetFont(env);
48+     rcode = scan_font(FontP);
49+     if (rcode != SCAN_OUT_OF_MEMORY)
50+       return rcode;
51+   }
52+
53+   /* if still not enough, increase up to maximum */
54+   while (rcode == SCAN_OUT_OF_MEMORY
55+   && vm_size <= VM_SIZE_MAX/2 ) {
56+     xfree(vm_base);
57      if (!(initFont(vm_size * 2))) {
58        /* we are really out of memory */
59        return(SCAN_OUT_OF_MEMORY);
60        }
61      resetFont(env);
62      rcode = scan_font(FontP);
63    }
64    return(rcode);
65  }
66*** paths.c     2000/01/02 18:55:56     1.1
67--- paths.c     2000/01/02 18:56:27
68***************
69*** 584,590 ****
70                 CONCAT(before, r);
71                 r = before;
72         }
73!        else
74                 r->context = after->context;
75         if (after != NULL)
76                 CONCAT(r, after);
77--- 584,590 ----
78                 CONCAT(before, r);
79                 r = before;
80         }
81!        else if (after != NULL)
82                 r->context = after->context;
83         if (after != NULL)
84                 CONCAT(r, after);
85*** scanfont.c  2000/01/02 18:55:56     1.1
86--- scanfont.c  2000/01/02 18:56:26
87***************
88*** 1383,1388 ****
89--- 1383,1390 ----
90      /* point to name and search for leading blanks */
91      nameP= FontP->FontFileName.data.nameP;
92      namelen  = FontP->FontFileName.len;
93+     if (namelen > (128-1) ) /* prevent getting out of filename[] */
94+       namelen = (128-1);
95      while (nameP[0] == ' ') {
96          nameP++;
97          namelen--;
98*** t1io.c      2000/01/02 18:55:56     1.1
99--- t1io.c      2000/01/02 18:56:32
100***************
101*** 54,59 ****
102--- 54,62 ----
103  /* Our single FILE structure and buffer for this package */
104  STATIC F_FILE TheFile;
105  STATIC unsigned char TheBuffer[F_BUFSIZ];
106+
107+ /* the size of the file we read */
108+ int T1FileSize;
109   
110  /* Our routines */
111  F_FILE *T1Open(), *T1Eexec();
112***************
113*** 87,92 ****
114--- 90,96 ----
115    of->flags = 0;
116    of->error = 0;
117    haveextrach = 0;
118+   T1FileSize = 0;
119    return &TheFile;
120  } /* end Open */
121   
122***************
123*** 165,171 ****
124--- 169,181 ----
125  int T1Close(f)       /* Close the file */
126    F_FILE *f;         /* Stream descriptor */
127  {
128+   int rc;
129+
130    if (f->b_base == NULL) return 0;  /* already closed */
131+
132+   while ( (rc = read(f->fd, f->b_base, F_BUFSIZ)) >0)
133+       T1FileSize += rc; /* count the rest of the file */
134+
135    f->b_base = NULL;  /* no valid stream */
136    return close(f->fd);
137  } /* end Close */
138***************
139*** 289,294 ****
140--- 299,305 ----
141      }
142    }
143    f->b_ptr = f->b_base;
144+   T1FileSize += rc; /* remember how many bytes we have */
145    if (Decrypt) rc = T1Decrypt(f->b_base, rc);
146    return rc;
147  } /* end Fill */
148*** type1.c     2000/01/02 18:55:56     1.1
149--- type1.c     2000/01/02 18:56:27
150***************
151*** 365,378 ****
152    /* ADJUST STEM WIDTHS */
153    /**********************/
154   
155!   widthdiff = 0.0;
156   
157    /* Find standard stem with smallest width difference from this stem */
158    if (stems[stemno].vertical) { /* vertical stem */
159      if (blues->StdVW != 0)      /* there is an entry for StdVW */
160        widthdiff = blues->StdVW - stemwidth;
161      for (i = 0; i < blues->numStemSnapV; ++i) { /* now look at StemSnapV */
162!       if (blues->StemSnapV[i] - stemwidth < widthdiff)
163          /* this standard width is the best match so far for this stem */
164          widthdiff = blues->StemSnapV[i] - stemwidth;
165      }
166--- 365,380 ----
167    /* ADJUST STEM WIDTHS */
168    /**********************/
169   
170!   /* a big value to not compete with StemSnap */
171!   /* if there is no StemSnap it will be caught later */
172!   widthdiff = onepixel*2;
173   
174    /* Find standard stem with smallest width difference from this stem */
175    if (stems[stemno].vertical) { /* vertical stem */
176      if (blues->StdVW != 0)      /* there is an entry for StdVW */
177        widthdiff = blues->StdVW - stemwidth;
178      for (i = 0; i < blues->numStemSnapV; ++i) { /* now look at StemSnapV */
179!       if ( FABS(blues->StemSnapV[i] - stemwidth) < FABS(widthdiff) )
180          /* this standard width is the best match so far for this stem */
181          widthdiff = blues->StemSnapV[i] - stemwidth;
182      }
183***************
184*** 380,386 ****
185      if (blues->StdHW != 0)      /* there is an entry for StdHW */
186        widthdiff = blues->StdHW - stemwidth;
187      for (i = 0; i < blues->numStemSnapH; ++i) { /* now look at StemSnapH */
188!       if (blues->StemSnapH[i] - stemwidth < widthdiff)
189          /* this standard width is the best match so far for this stem */
190          widthdiff = blues->StemSnapH[i] - stemwidth;
191      }
192--- 382,388 ----
193      if (blues->StdHW != 0)      /* there is an entry for StdHW */
194        widthdiff = blues->StdHW - stemwidth;
195      for (i = 0; i < blues->numStemSnapH; ++i) { /* now look at StemSnapH */
196!       if ( FABS(blues->StemSnapH[i] - stemwidth) < FABS(widthdiff) )
197          /* this standard width is the best match so far for this stem */
198          widthdiff = blues->StemSnapH[i] - stemwidth;
199      }
Note: See TracBrowser for help on using the repository browser.