Magellan Linux

Contents of /trunk/mozilla/patches/mozilla-1.7.3-4ft2.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 153 - (show annotations) (download)
Tue May 8 20:52:56 2007 UTC (17 years ago) by niro
File size: 22360 byte(s)
-import

1 This patch is from
2 https://bugzilla.mozilla.org/show_bug.cgi?id=234035#c65 to enable
3 linking against freetype-2.1.8+. It disables the experimental
4 freetype caching. I modified this patch slightly to apply to 1.7.3;
5 some things had moved around in the files since the original patch.
6
7 Note this is the same patch as we apply to mozilla-firefox-1.0
8
9 15 Nov 2004 agriffis
10
11 --- gfx/idl/nsIFreeType2.idl.agriffis 2004-04-15 21:09:33.000000000 -0400
12 +++ gfx/idl/nsIFreeType2.idl 2004-11-15 13:29:05.120343408 -0500
13 @@ -98,8 +98,6 @@
14 {
15
16 readonly attribute FT_Library library;
17 - readonly attribute FTC_Manager FTCacheManager;
18 - readonly attribute FTC_Image_Cache ImageCache;
19
20 void doneFace(in FT_Face face);
21 void doneFreeType(in FT_Library lib);
22 @@ -114,17 +112,8 @@
23 in FT_Long face_num, out FT_Face face);
24 void outlineDecompose(in FT_Outline_p outline,
25 in const_FT_Outline_Funcs_p funcs, in voidPtr p);
26 + void setPixelSizes(in FT_Face face, in FT_UInt width, in FT_UInt height);
27 void setCharmap(in FT_Face face, in FT_CharMap charmap);
28 - void imageCacheLookup(in FTC_Image_Cache cache, in FTC_Image_Desc_p desc,
29 - in FT_UInt gindex, out FT_Glyph glyph);
30 - void managerLookupSize(in FTC_Manager manager, in FTC_Font font,
31 - out FT_Face face, out FT_Size size);
32 - void managerDone(in FTC_Manager manager);
33 - void managerNew(in FT_Library lib, in FT_UInt max_faces,
34 - in FT_UInt max_sizes, in FT_ULong max_bytes,
35 - in FTC_Face_Requester requester, in FT_Pointer req_data,
36 - out FTC_Manager manager);
37 - void imageCacheNew(in FTC_Manager manager, out FTC_Image_Cache cache);
38 /* #ifdef MOZ_SVG */
39 void glyphTransform(in FT_Glyph glyph, in FT_Matrix_p matrix,
40 in FT_Vector_p delta);
41 --- gfx/src/ps/nsFontMetricsPS.h.agriffis 2003-04-22 12:25:09.000000000 -0400
42 +++ gfx/src/ps/nsFontMetricsPS.h 2004-11-15 13:37:58.431267824 -0500
43 @@ -320,7 +320,8 @@
44 nsCOMPtr<nsITrueTypeFontCatalogEntry> mFaceID;
45 nsCOMPtr<nsIFreeType2> mFt2;
46 PRUint16 mPixelSize;
47 - FTC_Image_Desc mImageDesc;
48 + FT_Face mFace;
49 + FT_Library mFreeTypeLibrary;
50
51
52 static PRBool AddUserPref(nsIAtom *aLang, const nsFont& aFont,
53 @@ -363,7 +364,8 @@
54 protected:
55 nsCOMPtr<nsITrueTypeFontCatalogEntry> mEntry;
56 nsCOMPtr<nsIFreeType2> mFt2;
57 - FTC_Image_Desc mImageDesc;
58 + FT_Face mFace;
59 + FT_Library mFreeTypeLibrary;
60 };
61 #endif
62
63 --- gfx/src/ps/nsFontMetricsPS.cpp.agriffis 2004-02-04 20:57:05.000000000 -0500
64 +++ gfx/src/ps/nsFontMetricsPS.cpp 2004-11-15 13:29:05.123342952 -0500
65 @@ -1141,21 +1141,26 @@
66
67 mPixelSize = NSToIntRound(app2dev * mFont->size);
68
69 - mImageDesc.font.face_id = (void*)mEntry;
70 - mImageDesc.font.pix_width = mPixelSize;
71 - mImageDesc.font.pix_height = mPixelSize;
72 - mImageDesc.image_type = 0;
73 -
74 nsresult rv;
75 mFt2 = do_GetService(NS_FREETYPE2_CONTRACTID, &rv);
76 if (NS_FAILED(rv)) {
77 + NS_ERROR("failed to get ft2 service");
78 + return NS_ERROR_FAILURE;
79 + }
80 +
81 + if (NS_FAILED(mFt2->GetLibrary(&mFreeTypeLibrary))) {
82 + NS_ERROR("failed to get ft2 library");
83 return NS_ERROR_FAILURE;
84 }
85 +
86 + mFace = nsnull;
87 return NS_OK;
88 }
89
90 nsFontPSFreeType::~nsFontPSFreeType()
91 {
92 + if (mFace)
93 + mFt2->DoneFace(mFace);
94 mEntry = nsnull;
95 }
96
97 @@ -1180,32 +1185,26 @@
98 nscoord
99 nsFontPSFreeType::GetWidth(const PRUnichar* aString, PRUint32 aLength)
100 {
101 - FT_UInt glyph_index;
102 - FT_Glyph glyph;
103 - double origin_x = 0;
104 -
105 // get the face/size from the FreeType cache
106 FT_Face face = getFTFace();
107 NS_ASSERTION(face, "failed to get face/size");
108 if (!face)
109 return 0;
110
111 - FTC_Image_Cache iCache;
112 - nsresult rv = mFt2->GetImageCache(&iCache);
113 - if (NS_FAILED(rv)) {
114 - NS_ERROR("Failed to get Image Cache");
115 - return 0;
116 - }
117 + FT_UInt glyph_index;
118 + FT_Glyph glyph;
119 + double origin_x = 0;
120
121 + // XXX : we might need some caching here
122 for (PRUint32 i=0; i<aLength; i++) {
123 - mFt2->GetCharIndex((FT_Face)face, aString[i], &glyph_index);
124 - nsresult rv = mFt2->ImageCacheLookup(iCache, &mImageDesc,
125 - glyph_index, &glyph);
126 - if (NS_FAILED(rv)) {
127 + mFt2->GetCharIndex(face, aString[i], &glyph_index);
128 + if (NS_FAILED(mFt2->LoadGlyph(face, glyph_index, FT_LOAD_DEFAULT)) ||
129 + NS_FAILED(mFt2->GetGlyph(face->glyph, &glyph))) {
130 origin_x += FT_REG_TO_16_16(face->size->metrics.x_ppem/2 + 2);
131 continue;
132 }
133 origin_x += glyph->advance.x;
134 + mFt2->DoneGlyph(glyph);
135 }
136
137 NS_ENSURE_TRUE(mFontMetrics, 0);
138 @@ -1224,16 +1223,26 @@
139 FT_Face
140 nsFontPSFreeType::getFTFace()
141 {
142 - FT_Face face = nsnull;
143 -
144 - FTC_Manager cManager;
145 - mFt2->GetFTCacheManager(&cManager);
146 - nsresult rv = mFt2->ManagerLookupSize(cManager, &mImageDesc.font,
147 - &face, nsnull);
148 + if (mFace) return mFace;
149 +
150 + nsCAutoString fileName;
151 + PRInt16 faceIndex;
152 + mEntry->GetFileName(fileName);
153 + mEntry->GetFaceIndex(&faceIndex);
154 +
155 + nsresult rv =
156 + mFt2->NewFace(mFreeTypeLibrary, fileName.get(), faceIndex, &mFace);
157 +
158 NS_ASSERTION(rv==0, "failed to get face/size");
159 - if (rv)
160 - return nsnull;
161 - return face;
162 + if (NS_FAILED(rv)) {
163 + return nsnull;
164 + }
165 +
166 + if (NS_FAILED(mFt2->SetPixelSizes(mFace, mPixelSize, 0))) {
167 + return nsnull;
168 + }
169 +
170 + return mFace;
171 }
172
173 nscoord
174 @@ -1618,26 +1627,23 @@
175
176 void nsFT2Type8Generator::GeneratePSFont(FILE* aFile)
177 {
178 - nsCAutoString fontName, styleName;
179 - mEntry->GetFamilyName(fontName);
180 - mEntry->GetStyleName(styleName);
181 -
182 - mImageDesc.font.face_id = (void*)mEntry;
183 - // TT glyph has no relation to size
184 - mImageDesc.font.pix_width = 16;
185 - mImageDesc.font.pix_height = 16;
186 - mImageDesc.image_type = 0;
187 - FT_Face face = nsnull;
188 - FTC_Manager cManager;
189 - mFt2->GetFTCacheManager(&cManager);
190 - nsresult rv = mFt2->ManagerLookupSize(cManager, &mImageDesc.font,
191 - &face, nsnull);
192 - if (NS_FAILED(rv))
193 - return;
194 + if (mFace == nsnull) {
195 + nsCAutoString fileName;
196 + PRInt16 faceIndex;
197 +
198 + mEntry->GetFileName(fileName);
199 + mEntry->GetFaceIndex(&faceIndex);
200 + if (NS_FAILED(mFt2->
201 + NewFace(mFreeTypeLibrary, fileName.get(), faceIndex, &mFace))) {
202 + return;
203 + }
204 + NS_ASSERTION(mFace != nsnull, "mFace is null");
205 + }
206 +
207
208 int wmode = 0;
209 if (!mSubset.IsEmpty())
210 - FT2SubsetToType8(face, mSubset.get(), mSubset.Length(), wmode, aFile);
211 + FT2SubsetToType8(mFace, mSubset.get(), mSubset.Length(), wmode, aFile);
212 }
213 #endif //MOZ_ENABLE_FREETYPE2
214
215 --- gfx/src/x11shared/nsFontFreeType.cpp.agriffis 2003-12-25 03:24:52.000000000 -0500
216 +++ gfx/src/x11shared/nsFontFreeType.cpp 2004-11-15 13:29:05.125342648 -0500
217 @@ -173,15 +173,22 @@
218 FT_Face
219 nsFreeTypeFont::getFTFace()
220 {
221 - FT_Face face = nsnull;
222 - FTC_Manager mgr;
223 + if (mFace) return mFace;
224 +
225 + nsCAutoString fileName;
226 + PRInt16 faceIndex;
227 + mFaceID->GetFileName(fileName);
228 + mFaceID->GetFaceIndex(&faceIndex);
229 +
230 nsresult rv;
231 - mFt2->GetFTCacheManager(&mgr);
232 - rv = mFt2->ManagerLookupSize(mgr, &mImageDesc.font, &face, nsnull);
233 + rv = mFt2->NewFace(mFreeTypeLibrary, fileName.get(), faceIndex, &mFace);
234 NS_ASSERTION(NS_SUCCEEDED(rv), "failed to get face/size");
235 if (NS_FAILED(rv))
236 return nsnull;
237 - return face;
238 + rv = mFt2->SetPixelSizes(mFace, mPixelSize, 0);
239 + if (NS_FAILED(rv))
240 + return nsnull;
241 + return mFace;
242 }
243
244 nsFreeTypeFont::nsFreeTypeFont(nsITrueTypeFontCatalogEntry *aFaceID,
245 @@ -191,21 +198,20 @@
246 PRBool embedded_bimap = PR_FALSE;
247 mFaceID = aFaceID;
248 mPixelSize = aPixelSize;
249 - mImageDesc.font.face_id = (void*)mFaceID;
250 - mImageDesc.font.pix_width = aPixelSize;
251 - mImageDesc.font.pix_height = aPixelSize;
252 - mImageDesc.image_type = 0;
253 +//mLoadFlag = FT_LOAD_RENDER;
254 + mLoadFlag = 0;
255 + mFace = nsnull;
256
257 if (aPixelSize < nsFreeType2::gAntiAliasMinimum) {
258 - mImageDesc.image_type |= ftc_image_mono;
259 + mLoadFlag |= FT_LOAD_MONOCHROME;
260 anti_alias = PR_FALSE;
261 }
262
263 if (nsFreeType2::gFreeType2Autohinted)
264 - mImageDesc.image_type |= ftc_image_flag_autohinted;
265 + mLoadFlag |= FT_LOAD_FORCE_AUTOHINT;
266
267 if (nsFreeType2::gFreeType2Unhinted)
268 - mImageDesc.image_type |= ftc_image_flag_unhinted;
269 + mLoadFlag |= FT_LOAD_NO_HINTING;
270
271 PRUint32 num_embedded_bitmaps, i;
272 PRInt32* embedded_bitmapheights;
273 @@ -218,7 +224,7 @@
274 if (embedded_bitmapheights[i] == aPixelSize) {
275 embedded_bimap = PR_TRUE;
276 // unhinted must be set for embedded bitmaps to be used
277 - mImageDesc.image_type |= ftc_image_flag_unhinted;
278 + mLoadFlag |= FT_LOAD_NO_HINTING;
279 break;
280 }
281 }
282 @@ -230,6 +236,11 @@
283 mFt2 = do_GetService(NS_FREETYPE2_CONTRACTID, &rv);
284 NS_ASSERTION(NS_SUCCEEDED(rv), "failed to find FreeType routines");
285
286 + if (mFt2) {
287 + rv = mFt2->GetLibrary(&mFreeTypeLibrary);
288 + NS_ASSERTION(NS_SUCCEEDED(rv), "failed to find FreeType library");
289 + }
290 +
291 FREETYPE_FONT_PRINTF(("anti_alias=%d, embedded_bitmap=%d, "
292 "AutoHinted=%d, gFreeType2Unhinted = %d, "
293 "size=%dpx, \"%s\"",
294 @@ -288,8 +299,6 @@
295 PRInt32* aDescent,
296 PRInt32* aWidth)
297 {
298 - nsresult rv;
299 -
300 *aLeftBearing = 0;
301 *aRightBearing = 0;
302 *aAscent = 0;
303 @@ -312,11 +321,6 @@
304 if (!face)
305 return NS_ERROR_FAILURE;
306
307 - FTC_Image_Cache icache;
308 - mFt2->GetImageCache(&icache);
309 - if (!icache)
310 - return NS_ERROR_FAILURE;
311 -
312 // get the text size
313 PRUint32 i, extraSurrogateLength;
314 for (i=0; i<aLength; i+=1+extraSurrogateLength) {
315 @@ -337,16 +341,17 @@
316 }
317 mFt2->GetCharIndex(face, code_point, &glyph_index);
318
319 - //NS_ASSERTION(glyph_index,"failed to get glyph");
320 - if (glyph_index) {
321 - rv = mFt2->ImageCacheLookup(icache, &mImageDesc, glyph_index, &glyph);
322 - NS_ASSERTION(NS_SUCCEEDED(rv),"error loading glyph");
323 - }
324 - if ((glyph_index) && (NS_SUCCEEDED(rv))) {
325 + // XXX : we need some caching here
326 + if (glyph_index &&
327 + NS_SUCCEEDED(mFt2->LoadGlyph(face, glyph_index, mLoadFlag)) &&
328 +// NS_SUCCEEDED(mFt2->LoadGlyph(face, glyph_index, FT_LOAD_DEFAULT)) &&
329 + NS_SUCCEEDED(mFt2->GetGlyph(face->glyph, &glyph))) {
330 mFt2->GlyphGetCBox(glyph, ft_glyph_bbox_pixels, &glyph_bbox);
331 advance = FT_16_16_TO_REG(glyph->advance.x);
332 + mFt2->DoneGlyph(glyph);
333 }
334 else {
335 + NS_ERROR("failed to get or load glyph");
336 // allocate space to draw an empty box in
337 GetFallbackGlyphMetrics(&glyph_bbox, face);
338 advance = glyph_bbox.xMax + 1;
339 @@ -401,11 +406,6 @@
340 if (!face)
341 return 0;
342
343 - FTC_Image_Cache icache;
344 - mFt2->GetImageCache(&icache);
345 - if (!icache)
346 - return 0;
347 -
348 PRUint32 i, extraSurrogateLength;
349 for (i=0; i<aLength; i+=1+extraSurrogateLength) {
350 extraSurrogateLength=0;
351 @@ -418,15 +418,18 @@
352 // skip aString[i+1], it is already used as low surrogate
353 extraSurrogateLength = 1;
354 }
355 +
356 + // XXX : we need some caching here
357 mFt2->GetCharIndex((FT_Face)face, code_point, &glyph_index);
358 - nsresult rv;
359 - rv = mFt2->ImageCacheLookup(icache, &mImageDesc, glyph_index, &glyph);
360 - NS_ASSERTION(NS_SUCCEEDED(rv),"error loading glyph");
361 - if (NS_FAILED(rv)) {
362 + if (NS_FAILED(mFt2->LoadGlyph(face, glyph_index, mLoadFlag)) ||
363 +// if (NS_FAILED(mFt2->LoadGlyph(face, glyph_index, FT_LOAD_DEFAULT)) ||
364 + NS_FAILED(mFt2->GetGlyph(face->glyph, &glyph))) {
365 + NS_ERROR("error loading glyph");
366 origin_x += face->size->metrics.x_ppem/2 + 2;
367 continue;
368 }
369 origin_x += FT_16_16_TO_REG(glyph->advance.x);
370 + mFt2->DoneGlyph(glyph);
371 }
372
373 return origin_x;
374 @@ -723,11 +726,6 @@
375 if (y%4==0) (*blendPixelFunc)(sub_image, y, ascent-1, black, 255/2);
376 #endif
377
378 - FTC_Image_Cache icache;
379 - mFt2->GetImageCache(&icache);
380 - if (!icache)
381 - return 0;
382 -
383 //
384 // Get aa glyphs and blend with background
385 //
386 @@ -736,7 +734,6 @@
387 for (i=0; i<aLength; i+=1+extraSurrogateLength) {
388 FT_UInt glyph_index;
389 FT_Glyph glyph;
390 - nsresult rv;
391 FT_BBox glyph_bbox;
392 FT_ULong code_point = aString[i];
393 extraSurrogateLength = 0;
394 @@ -750,11 +747,12 @@
395 extraSurrogateLength = 1;
396 }
397
398 + // XXX : we need some caching here
399 mFt2->GetCharIndex(face, code_point, &glyph_index);
400 - if (glyph_index) {
401 - rv = mFt2->ImageCacheLookup(icache, &mImageDesc, glyph_index, &glyph);
402 - }
403 - if ((glyph_index) && (NS_SUCCEEDED(rv))) {
404 + if (glyph_index &&
405 + NS_SUCCEEDED(mFt2->LoadGlyph(face, glyph_index, mLoadFlag)) &&
406 +// NS_SUCCEEDED(mFt2->LoadGlyph(face, glyph_index, FT_LOAD_DEFAULT)) &&
407 + NS_SUCCEEDED(mFt2->GetGlyph(face->glyph, &glyph))) {
408 mFt2->GlyphGetCBox(glyph, ft_glyph_bbox_pixels, &glyph_bbox);
409 }
410 else {
411 @@ -775,13 +773,26 @@
412 continue;
413 }
414
415 - FT_BitmapGlyph slot = (FT_BitmapGlyph)glyph;
416 + FT_BitmapGlyph slot;
417 +
418 + if (glyph->format != FT_GLYPH_FORMAT_BITMAP)
419 + {
420 + if (mFt2->GlyphToBitmap(&glyph, FT_RENDER_MODE_NORMAL, 0, 1)) {
421 + NS_ERROR("failed to convert outline to bitmap ");
422 + XDestroyImage(sub_image);
423 + mFt2->DoneGlyph(glyph);
424 + return 0;
425 + }
426 + }
427 +
428 + slot = (FT_BitmapGlyph)glyph;
429 nsAntiAliasedGlyph aaglyph(glyph_bbox.xMax-glyph_bbox.xMin,
430 glyph_bbox.yMax-glyph_bbox.yMin, 0);
431 PRUint8 buf[IMAGE_BUFFER_SIZE]; // try to use the stack for data
432 if (!aaglyph.WrapFreeType(&glyph_bbox, slot, buf, IMAGE_BUFFER_SIZE)) {
433 NS_ERROR("failed to wrap freetype image");
434 XDestroyImage(sub_image);
435 + mFt2->DoneGlyph(glyph);
436 return 0;
437 }
438
439 @@ -815,6 +826,7 @@
440 x_pos + aaglyph.GetLBearing(), ascent-glyph_bbox.yMax);
441
442 x_pos += aaglyph.GetAdvance();
443 + mFt2->DoneGlyph(glyph);
444 }
445
446 //
447 --- gfx/src/x11shared/nsFontFreeType.h.agriffis 2003-04-22 12:25:13.000000000 -0400
448 +++ gfx/src/x11shared/nsFontFreeType.h 2004-11-15 13:29:05.125342648 -0500
449 @@ -110,8 +110,10 @@
450 XImage *GetXImage(PRUint32 width, PRUint32 height);
451 nsITrueTypeFontCatalogEntry *mFaceID;
452 PRUint16 mPixelSize;
453 - FTC_Image_Desc mImageDesc;
454 nsCOMPtr<nsIFreeType2> mFt2;
455 + FT_Face mFace;
456 + FT_Int32 mLoadFlag;
457 + FT_Library mFreeTypeLibrary;
458 };
459
460 void WeightTableInitCorrection(PRUint8*, PRUint8, double);
461 --- gfx/src/freetype/nsFreeType.cpp.agriffis 2004-02-07 10:22:30.000000000 -0500
462 +++ gfx/src/freetype/nsFreeType.cpp 2004-11-15 13:29:05.121343256 -0500
463 @@ -109,12 +109,8 @@
464 {"FT_Load_Glyph", NS_FT2_OFFSET(nsFT_Load_Glyph), PR_TRUE},
465 {"FT_New_Face", NS_FT2_OFFSET(nsFT_New_Face), PR_TRUE},
466 {"FT_Outline_Decompose", NS_FT2_OFFSET(nsFT_Outline_Decompose), PR_TRUE},
467 + {"FT_Set_Pixel_Sizes", NS_FT2_OFFSET(nsFT_Set_Pixel_Sizes), PR_TRUE},
468 {"FT_Set_Charmap", NS_FT2_OFFSET(nsFT_Set_Charmap), PR_TRUE},
469 - {"FTC_Image_Cache_Lookup", NS_FT2_OFFSET(nsFTC_Image_Cache_Lookup), PR_TRUE},
470 - {"FTC_Manager_Lookup_Size", NS_FT2_OFFSET(nsFTC_Manager_Lookup_Size), PR_TRUE},
471 - {"FTC_Manager_Done", NS_FT2_OFFSET(nsFTC_Manager_Done), PR_TRUE},
472 - {"FTC_Manager_New", NS_FT2_OFFSET(nsFTC_Manager_New), PR_TRUE},
473 - {"FTC_Image_Cache_New", NS_FT2_OFFSET(nsFTC_Image_Cache_New), PR_TRUE},
474 // #ifdef MOZ_SVG
475 {"FT_Glyph_Transform", NS_FT2_OFFSET(nsFT_Glyph_Transform), PR_TRUE},
476 {"FT_Get_Kerning", NS_FT2_OFFSET(nsFT_Get_Kerning), PR_TRUE},
477 @@ -274,59 +270,21 @@
478 }
479
480 NS_IMETHODIMP
481 -nsFreeType2::SetCharmap(FT_Face face, FT_CharMap charmap)
482 -{
483 - // call the FreeType2 function via the function pointer
484 - FT_Error error = nsFT_Set_Charmap(face, charmap);
485 - return error ? NS_ERROR_FAILURE : NS_OK;
486 -}
487 -
488 -NS_IMETHODIMP
489 -nsFreeType2::ImageCacheLookup(FTC_Image_Cache cache, FTC_Image_Desc *desc,
490 - FT_UInt glyphID, FT_Glyph *glyph)
491 -{
492 - // call the FreeType2 function via the function pointer
493 - FT_Error error = nsFTC_Image_Cache_Lookup(cache, desc, glyphID, glyph);
494 - return error ? NS_ERROR_FAILURE : NS_OK;
495 -}
496 -
497 -NS_IMETHODIMP
498 -nsFreeType2::ManagerLookupSize(FTC_Manager manager, FTC_Font font,
499 - FT_Face *face, FT_Size *size)
500 +nsFreeType2::SetPixelSizes(FT_Face face, FT_UInt width, FT_UInt height)
501 {
502 // call the FreeType2 function via the function pointer
503 - FT_Error error = nsFTC_Manager_Lookup_Size(manager, font, face, size);
504 + FT_Error error = nsFT_Set_Pixel_Sizes(face, width, height);
505 return error ? NS_ERROR_FAILURE : NS_OK;
506 }
507 -
508 -NS_IMETHODIMP
509 -nsFreeType2::ManagerDone(FTC_Manager manager)
510 -{
511 - // call the FreeType2 function via the function pointer
512 - nsFTC_Manager_Done(manager);
513 - return NS_OK;
514 -}
515 -
516 +
517 NS_IMETHODIMP
518 -nsFreeType2::ManagerNew(FT_Library library, FT_UInt max_faces,
519 - FT_UInt max_sizes, FT_ULong max_bytes,
520 - FTC_Face_Requester requester, FT_Pointer req_data,
521 - FTC_Manager *manager)
522 +nsFreeType2::SetCharmap(FT_Face face, FT_CharMap charmap)
523 {
524 // call the FreeType2 function via the function pointer
525 - FT_Error error = nsFTC_Manager_New(library, max_faces, max_sizes, max_bytes,
526 - requester, req_data, manager);
527 + FT_Error error = nsFT_Set_Charmap(face, charmap);
528 return error ? NS_ERROR_FAILURE : NS_OK;
529 }
530
531 -NS_IMETHODIMP
532 -nsFreeType2::ImageCacheNew(FTC_Manager manager, FTC_Image_Cache *cache)
533 -{
534 - // call the FreeType2 function via the function pointer
535 - FT_Error error = nsFTC_Image_Cache_New(manager, cache);
536 - return error ? NS_ERROR_FAILURE : NS_OK;
537 -}
538 -
539 // #ifdef MOZ_SVG
540 NS_IMETHODIMP
541 nsFreeType2::GlyphTransform(FT_Glyph glyph, FT_Matrix * matrix, FT_Vector * delta)
542 @@ -389,20 +347,6 @@
543 }
544
545 NS_IMETHODIMP
546 -nsFreeType2::GetImageCache(FTC_Image_Cache *aCache)
547 -{
548 - *aCache = mImageCache;
549 - return NS_OK;
550 -}
551 -
552 -NS_IMETHODIMP
553 -nsFreeType2::GetFTCacheManager(FTC_Manager *aManager)
554 -{
555 - *aManager = mFTCacheManager;
556 - return NS_OK;
557 -}
558 -
559 -NS_IMETHODIMP
560 nsFreeType2::GetLibrary(FT_Library *aLibrary)
561 {
562 *aLibrary = mFreeTypeLibrary;
563 @@ -425,8 +369,6 @@
564 {
565 mSharedLib = nsnull;
566 mFreeTypeLibrary = nsnull;
567 - mFTCacheManager = nsnull;
568 - mImageCache = nsnull;
569 }
570
571 // I would like to make this a static member function but the compilier
572 @@ -456,12 +398,6 @@
573 delete gFreeTypeFaces;
574 gFreeTypeFaces = nsnull;
575 }
576 - // mImageCache released by cache manager
577 - if (mFTCacheManager) {
578 - // use "this->" to make sure it is obivious we are calling the member func
579 - this->ManagerDone(mFTCacheManager);
580 - mFTCacheManager = nsnull;
581 - }
582 if (mFreeTypeLibrary) {
583 // use "this->" to make sure it is obivious we are calling the member func
584 this->DoneFreeType(mFreeTypeLibrary);
585 @@ -658,17 +594,6 @@
586 mFreeTypeLibrary = nsnull;
587 goto cleanup_and_return;
588 }
589 - // use "this->" to make sure it is obivious we are calling the member func
590 - rv = this->ManagerNew(mFreeTypeLibrary, 0, 0, 0, nsFreeTypeFaceRequester,
591 - this, &mFTCacheManager);
592 - NS_ASSERTION(NS_SUCCEEDED(rv), "failed to create FreeType Cache manager");
593 - if (NS_FAILED(rv))
594 - goto cleanup_and_return;
595 - // use "this->" to make sure it is obivious we are calling the member func
596 - rv = this->ImageCacheNew(mFTCacheManager, &mImageCache);
597 - NS_ASSERTION(NS_SUCCEEDED(rv), "failed to create FreeType image cache");
598 - if (NS_FAILED(rv))
599 - goto cleanup_and_return;
600 return PR_TRUE;
601
602 cleanup_and_return:
603 --- gfx/src/freetype/nsFreeType.h.agriffis 2004-04-16 17:31:42.000000000 -0400
604 +++ gfx/src/freetype/nsFreeType.h 2004-11-15 13:29:05.122343104 -0500
605 @@ -102,15 +102,8 @@
606 typedef FT_Error (*FT_Outline_Decompose_t)
607 (FT_Outline*, const FT_Outline_Funcs*, void*);
608 typedef FT_Error (*FT_New_Face_t)(FT_Library, const char*, FT_Long, FT_Face*);
609 +typedef FT_Error (*FT_Set_Pixel_Sizes_t)(FT_Face face, FT_UInt, FT_UInt);
610 typedef FT_Error (*FT_Set_Charmap_t)(FT_Face face, FT_CharMap charmap);
611 -typedef FT_Error (*FTC_Image_Cache_Lookup_t)
612 - (FTC_Image_Cache, FTC_Image_Desc*, FT_UInt, FT_Glyph*);
613 -typedef FT_Error (*FTC_Manager_Lookup_Size_t)
614 - (FTC_Manager, FTC_Font, FT_Face*, FT_Size*);
615 -typedef FT_Error (*FTC_Manager_Done_t)(FTC_Manager);
616 -typedef FT_Error (*FTC_Manager_New_t)(FT_Library, FT_UInt, FT_UInt, FT_ULong,
617 - FTC_Face_Requester, FT_Pointer, FTC_Manager*);
618 -typedef FT_Error (*FTC_Image_Cache_New_t)(FTC_Manager, FTC_Image_Cache*);
619 // #ifdef MOZ_SVG
620 typedef FT_Error (*FT_Glyph_Transform_t)(FT_Glyph, FT_Matrix*, FT_Vector*);
621 typedef FT_Error (*FT_Get_Kerning_t)
622 @@ -163,12 +156,8 @@
623 FT_Load_Glyph_t nsFT_Load_Glyph;
624 FT_New_Face_t nsFT_New_Face;
625 FT_Outline_Decompose_t nsFT_Outline_Decompose;
626 + FT_Set_Pixel_Sizes_t nsFT_Set_Pixel_Sizes;
627 FT_Set_Charmap_t nsFT_Set_Charmap;
628 - FTC_Image_Cache_Lookup_t nsFTC_Image_Cache_Lookup;
629 - FTC_Manager_Lookup_Size_t nsFTC_Manager_Lookup_Size;
630 - FTC_Manager_Done_t nsFTC_Manager_Done;
631 - FTC_Manager_New_t nsFTC_Manager_New;
632 - FTC_Image_Cache_New_t nsFTC_Image_Cache_New;
633 // #ifdef MOZ_SVG
634 FT_Glyph_Transform_t nsFT_Glyph_Transform;
635 FT_Get_Kerning_t nsFT_Get_Kerning;
636 @@ -181,9 +170,9 @@
637 // this array needs to be big enough to hold all the function pointers
638 // plus one extra for the null at the end
639 // #ifdef MOZ_SVG
640 - static FtFuncList FtFuncs[24];
641 + static FtFuncList FtFuncs[20];
642 // #else
643 -// static FtFuncList FtFuncs[20];
644 +// static FtFuncList FtFuncs[17];
645 // #endif
646
647 protected:
648 @@ -212,8 +201,6 @@
649
650 PRLibrary *mSharedLib;
651 FT_Library mFreeTypeLibrary;
652 - FTC_Manager mFTCacheManager;
653 - FTC_Image_Cache mImageCache;
654
655 static nsHashtable *sFontFamilies;
656 static nsHashtable *sRange1CharSetNames;