ALT Linux Bugzilla
– Attachment 753 Details for
Bug 6151
Патчи для улучшения визуального качества системы печати
New bug
|
Search
|
[?]
|
Help
Register
|
Log In
[x]
|
Forgot Password
Login:
[x]
|
EN
|
RU
[patch]
see #234035
234035.patch.4xftonly (text/plain), 6.74 KB, created by
Konstantin A Lepikhov (L.A. Kostis)
on 2005-02-22 00:57:11 MSK
(
hide
)
Description:
see #234035
Filename:
MIME Type:
Creator:
Konstantin A Lepikhov (L.A. Kostis)
Created:
2005-02-22 00:57:11 MSK
Size:
6.74 KB
patch
obsolete
>? gfx/src/ps/.nsType8.cpp.swp >? gfx/src/ps/UnBatang.raw >? gfx/src/ps/nsType8.cpp.new >? gfx/src/ps/output.ps >Index: gfx/src/ps/nsFontMetricsPS.cpp >=================================================================== >RCS file: /cvsroot/mozilla/gfx/src/ps/nsFontMetricsPS.cpp,v >retrieving revision 1.45 >diff -u -7 -p -r1.45 nsFontMetricsPS.cpp >--- gfx/src/ps/nsFontMetricsPS.cpp 20 Aug 2004 09:11:25 -0000 1.45 >+++ gfx/src/ps/nsFontMetricsPS.cpp 15 Oct 2004 22:55:11 -0000 >@@ -1024,28 +1024,14 @@ nsFontPSXft::FindFont(PRUnichar aChar, c > > FcPatternDestroy(pattern); > } > > return nsnull; > } > >-/*FT_CALLBACK_DEF*/ >-FT_Error >-nsXftFaceRequester(FTC_FaceID face_id, FT_Library lib, >- FT_Pointer request_data, FT_Face* aFace) >-{ >- nsXftEntry *faceID = (nsXftEntry *)face_id; >- >- FT_Error fterror = FT_New_Face(lib, faceID->mFontFileName.get(), >- faceID->mFaceIndex, aFace); >- if (fterror) >- *aFace = nsnull; >- return 0; >-} >- > nsFontPSXft::nsFontPSXft(const nsFont& aFont, > nsFontMetricsPS* aFontMetrics) > :nsFontPS(aFont, aFontMetrics) > { > } > > nsresult >@@ -1059,63 +1045,46 @@ nsFontPSXft::Init(nsXftEntry* aEntry, > float app2dev; > nsIDeviceContext* dc = mFontMetrics->GetDeviceContext(); > NS_ENSURE_TRUE(dc, NS_ERROR_NULL_POINTER); > app2dev = dc->AppUnitsToDevUnits(); > > mPixelSize = NSToIntRound(app2dev * mFont->size); > >- mImageDesc.font.face_id = (void*)mEntry; >- mImageDesc.font.pix_width = mPixelSize; >- mImageDesc.font.pix_height = mPixelSize; >- mImageDesc.image_type = 0; >- > FT_Error fterror; > fterror = FT_Init_FreeType(&mFreeTypeLibrary); > if (fterror) { >- NS_ASSERTION(!fterror, "failed to initialize FreeType library"); >+ NS_ERROR("failed to initialize FreeType library"); > mFreeTypeLibrary = nsnull; > return NS_ERROR_FAILURE; > } >- fterror = FTC_Manager_New(mFreeTypeLibrary, 0, 0, 0, nsXftFaceRequester, >- NULL, &mFTCacheManager); >- NS_ASSERTION(!fterror, "failed to create FreeType Cache manager"); >- if (fterror) >- return NS_ERROR_FAILURE; >- >- fterror = FTC_Image_Cache_New(mFTCacheManager, &mImageCache); >- NS_ASSERTION(!fterror, "failed to create FreeType image cache"); >- if (fterror) >- return NS_ERROR_FAILURE; >- > return NS_OK; > } > > nsFontPSXft::~nsFontPSXft() > { >- FTC_Manager_Done(mFTCacheManager); >+ if (mEntry->mFace) >+ FT_Done_Face(mEntry->mFace); > > if (FT_Done_FreeType(mFreeTypeLibrary)) > return; > > mEntry = nsnull; > } > > FT_Face > nsFontPSXft::getFTFace() > { >- FT_Error error; > FT_Face face = mEntry->mFace; > > if (face) > return (face); > >- error = FTC_Manager_Lookup_Size(mFTCacheManager, &mImageDesc.font, >- &face, nsnull); >- NS_ASSERTION(error == 0, "failed to get face/size"); >- if (error) >+ if (FT_New_Face(mFreeTypeLibrary, mEntry->mFontFileName.get(), >+ mEntry->mFaceIndex, &face) || >+ FT_Set_Pixel_Sizes(face, mPixelSize, 0)) > return nsnull; > > mEntry->mFace = face; > return face; > } > > nscoord >@@ -1145,23 +1114,24 @@ nsFontPSXft::GetWidth(const PRUnichar* a > > // get the face/size from the FreeType cache > FT_Face face = getFTFace(); > NS_ASSERTION(face, "failed to get face/size"); > if (!face) > return 0; > >+ // XXX : we might need some caching here > for (PRUint32 i=0; i<aLength; i++) { > glyph_index = FT_Get_Char_Index((FT_Face)face, aString[i]); >- FT_Error error = FTC_Image_Cache_Lookup(mImageCache, &mImageDesc, >- glyph_index, &glyph); >- if (error) { >+ if (FT_Load_Glyph(face, glyph_index, FT_LOAD_DEFAULT) || >+ FT_Get_Glyph(face->glyph, &glyph)) { > origin_x += FT_REG_TO_16_16(face->size->metrics.x_ppem/2 + 2); > continue; > } > origin_x += glyph->advance.x; >+ FT_Done_Glyph(glyph); > } > > NS_ENSURE_TRUE(mFontMetrics, 0); > > nsDeviceContextPS* dc = mFontMetrics->GetDeviceContext(); > NS_ENSURE_TRUE(dc, 0); > >@@ -2407,52 +2377,40 @@ nsXftType8Generator::Init(nsXftEntry* aE > > FT_Error error = FT_Init_FreeType(&mFreeTypeLibrary); > NS_ASSERTION(!error, "failed to initialize FreeType library"); > if (error) { > mFreeTypeLibrary = nsnull; > return NS_ERROR_FAILURE; > } >- error = FTC_Manager_New(mFreeTypeLibrary, 0, 0, 0, nsXftFaceRequester, >- NULL, &mFTCacheManager); >- NS_ASSERTION(!error, "failed to create FreeType Cache manager"); >- if (error) >- return NS_ERROR_FAILURE; > > return NS_OK; > } > > nsXftType8Generator::~nsXftType8Generator() > { >- FTC_Manager_Done(mFTCacheManager); >+ if (mEntry->mFace) >+ FT_Done_Face(mEntry->mFace); > > if (FT_Done_FreeType(mFreeTypeLibrary)) > return; > > mEntry = nsnull; > } > > void nsXftType8Generator::GeneratePSFont(FILE* aFile) > { >- FT_Error error; > FT_Face face = mEntry->mFace; > > if (face == nsnull) { >- mImageDesc.font.face_id = (void*)mEntry; >- mImageDesc.font.pix_width = 16; >- mImageDesc.font.pix_height = 16; >- mImageDesc.image_type = 0; >- error = FTC_Manager_Lookup_Size(mFTCacheManager, &mImageDesc.font, >- &face, nsnull); >- if (error) >- return; >+ if (FT_New_Face(mFreeTypeLibrary, mEntry->mFontFileName.get(), mEntry->mFaceIndex, &face) || >+ face == nsnull /* || FT_Set_Pixel_Sizes(face, 16, 0) */) >+ return; >+ mEntry->mFace = face; > } > >- if (face == nsnull) >- return; >- > int wmode = 0; > if (!mSubset.IsEmpty()) > FT2SubsetToType8(face, mSubset.get(), mSubset.Length(), wmode, aFile); > } > > #else > #ifdef MOZ_ENABLE_FREETYPE2 >Index: gfx/src/ps/nsFontMetricsPS.h >=================================================================== >RCS file: /cvsroot/mozilla/gfx/src/ps/nsFontMetricsPS.h,v >retrieving revision 1.26 >diff -u -7 -p -r1.26 nsFontMetricsPS.h >--- gfx/src/ps/nsFontMetricsPS.h 20 Aug 2004 09:11:25 -0000 1.26 >+++ gfx/src/ps/nsFontMetricsPS.h 15 Oct 2004 22:55:12 -0000 >@@ -337,18 +337,15 @@ public: > #endif > > nsXftEntry *mEntry; > FT_Face getFTFace(); > > protected: > PRUint16 mPixelSize; >- FTC_Image_Desc mImageDesc; > FT_Library mFreeTypeLibrary; >- FTC_Manager mFTCacheManager; >- FTC_Image_Cache mImageCache; > > int ascent(); > int descent(); > PRBool getXHeight(unsigned long &aVal); > int max_ascent(); > int max_descent(); > int max_width(); >@@ -474,17 +471,15 @@ public: > nsXftType8Generator(); > ~nsXftType8Generator(); > nsresult Init(nsXftEntry* aFce); > void GeneratePSFont(FILE* aFile); > > protected: > nsXftEntry *mEntry; >- FTC_Image_Desc mImageDesc; > FT_Library mFreeTypeLibrary; >- FTC_Manager mFTCacheManager; > }; > #else > #ifdef MOZ_ENABLE_FREETYPE2 > class nsFT2Type8Generator : public nsPSFontGenerator { > public: > nsFT2Type8Generator(); > ~nsFT2Type8Generator();
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 6151
:
752
| 753