Closed
Bug 234035
Opened 21 years ago
Closed 13 years ago
freetype2 2.1.8 compile error: FTC_Image_Cache_* APIs are not available any more
Categories
(Core Graveyard :: GFX: Gtk, defect)
Tracking
(Not tracked)
RESOLVED
FIXED
mozilla1.5alpha
People
(Reporter: jshin1987, Assigned: jshin1987)
References
Details
(Keywords: intl)
Attachments
(5 files, 6 obsolete files)
20.05 KB,
text/plain
|
Details | |
6.74 KB,
patch
|
jshin1987
:
review+
bryner
:
superreview+
|
Details | Diff | Splinter Review |
32.48 KB,
patch
|
Details | Diff | Splinter Review | |
282.44 KB,
application/x-gzip
|
Details | |
17.14 KB,
patch
|
Details | Diff | Splinter Review |
FTC_Image_Cache_* APIs are not available any more in recent freetype2 library.
They're replaced by FTC_ImageCache* APIs, but their calling sequences are
different. I wrote to the freetype list how long ago new APIs were introduced to
determine whether or not check it at a run-time.
Summary: freetype2 : FTC_Image_Cache_* APIs are not available any more → freetype2 : FTC_Image_Cache_* APIs are not available any more
I can't compile Mozilla, presumably because of this bug and because my version
of freetype is too recent (9.6.3). I tried substituting version 2.0.9 of
freetype, and that eliminated complaints about a missing FTC_Image_Cache, but
led to other compilation and linking errors -- just too much for me to deal
with. So I hope someone can fix this.
I also noticed this problem and when I changed all FTC_Image_Cache to
FTC_ImageCache the build crossed that stage and again failed at FTC_Image_Desc
for same reason . Looks like FTC_Image_Desc is also deprecated.
Please see this URL for about comments on Freetype 2.1.8
http://mail.gnome.org/archives/epiphany-list/2004-April/msg00057.html
When I tried compiling Mozilla with freetype 2.1.7 it went fine. So probably we
can wait on this bug for the next release of freetype?
Comment 4•21 years ago
|
||
There are patches in NetBSD package.
See cvsweb or commit messages for detail.
http://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/www/mozilla/patches/
http://mail-index.netbsd.org/pkgsrc-changes/2004/04/29/0025.html
Updated•21 years ago
|
Severity: normal → major
Summary: freetype2 : FTC_Image_Cache_* APIs are not available any more → freetype2 2.1.8 compile error: FTC_Image_Cache_* APIs are not available any more
Comment 5•21 years ago
|
||
*** Bug 241290 has been marked as a duplicate of this bug. ***
Comment 6•20 years ago
|
||
(In reply to comment #4)
> There are patches in NetBSD package.
> See cvsweb or commit messages for detail.
>
> http://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/www/mozilla/patches/
> http://mail-index.netbsd.org/pkgsrc-changes/2004/04/29/0025.html
I had the same problem compiling mozilla with freetype 2.1.8. Those patches
solved the problem. I am typing this up in my patched mozilla right now. There
appear to be no ill effects from the patches. Will they be integrated into the
main mozilla tree anytime soon, because as distributions begin upgrading their
freetype libraries more and more people will have this problem compiling mozilla.
Comment 7•20 years ago
|
||
Attached patch contains (as its name implies) all modifications to FreeType and
Mozilla CVS source trees du jour.
Updated•20 years ago
|
Flags: blocking1.8a2?
Flags: blocking1.7?
Updated•20 years ago
|
Flags: blocking1.7?
Comment 8•20 years ago
|
||
Has this patch been applied to the source tree yet? If not, any idea when?
Assignee | ||
Comment 9•20 years ago
|
||
Thanks for the patch.
This is a thorny issue. mozilla.org build machines still have old freetype
library and so do most developers' machines. Therefore, the patch as it stands
cannot be committed.
We can add a lot of #ifdef'd code, but I'm not sure how to handle this problem.
Actually, it's a bit more complicated than that because we have to deal with
both compile-time and run-time dependency. I guess we have to worry less about
the latter than the former because new APIs appear to have been introduced quite
a long time ago.
Comment 10•20 years ago
|
||
0 prob. Wait & C until this issue becomes real issue.
Assignee | ||
Comment 11•20 years ago
|
||
Comment on attachment 149334 [details] [diff] [review]
FreeType-2.1.9 patch
Thanks for the patch. I realized that new APIs have been around for over a
year (if not a lot longer) and most Linux distributions have a version of
freetype with them (including RH9, FC1, SuSE 9.x, Mandrake) although legacy
APIs (currently used by Mozilla) were removed only recently. So, this patch
should be rather safe.
>- void imageCacheLookup(in FTC_Image_Cache cache, in FTC_Image_Desc_p desc,
>+ void imageCacheLookup(in FTC_ImageCache cache, in FTC_ImageType_p desc,
Perhaps, 's/desc/type/' would be better.
>Index: gfx/src/freetype/nsFreeType.cpp
>-nsFreeType2::ImageCacheLookup(FTC_Image_Cache cache, FTC_Image_Desc *desc,
>+nsFreeType2::ImageCacheLookup(FTC_ImageCache cache, FTC_ImageType *desc,
> FT_UInt glyphID, FT_Glyph *glyph)
same here.
>Index: gfx/src/ps/nsFontMetricsPS.cpp
>- mImageDesc.font.face_id = (void*)mEntry;
>- mImageDesc.font.pix_width = mPixelSize;
>- mImageDesc.font.pix_height = mPixelSize;
>- mImageDesc.image_type = 0;
>+ mImageDesc->face_id = (FTC_FaceID)&mEntry;
>+ mImageDesc->width = mPixelSize;
>+ mImageDesc->height = mPixelSize;
>+ mImageDesc->flags = 0;
same here: s/mImageDesc/mImageType/
>Index: gfx/src/ps/nsFontMetricsPS.h
>- FTC_Image_Desc mImageDesc;
>+ FTC_ImageType mImageDesc;
ditto and a couple of other places.
>- if (nsFreeType2::gFreeType2Autohinted)
>- mImageDesc.image_type |= ftc_image_flag_autohinted;
>-
>- if (nsFreeType2::gFreeType2Unhinted)
>- mImageDesc.image_type |= ftc_image_flag_unhinted;
Shouldn't we 'OR' |mImageType->flag| with FT_LOAD_FORCE_AUTOHINT and
FT_LOAD_NO_HINTING, respectively?
>-
> PRUint32 num_embedded_bitmaps, i;
> PRInt32* embedded_bitmapheights;
> mFaceID->GetEmbeddedBitmapHeights(&num_embedded_bitmaps,
>@@ -218,7 +211,6 @@ nsFreeTypeFont::nsFreeTypeFont(nsITrueTy
> if (embedded_bitmapheights[i] == aPixelSize) {
> embedded_bimap = PR_TRUE;
> // unhinted must be set for embedded bitmaps to be used
>- mImageDesc.image_type |= ftc_image_flag_unhinted;
> break;
> }
> }
same here.
Attachment #149334 -
Flags: review+
Assignee | ||
Comment 12•20 years ago
|
||
(In reply to comment #11)
> (From update of attachment 149334 [details] [diff] [review])
> Thanks for the patch. I realized that new APIs have been around for over a
> year (if not a lot longer) and most Linux distributions have a version of
> freetype with them (including RH9, FC1, SuSE 9.x, Mandrake) although legacy
> APIs (currently used by Mozilla) were removed only recently. So, this patch
> should be rather safe.
As far as FTC_ImageCache* APIs are concerend, the above is the case. However,
the signature of FTC_ImageType (FTC_ImageTypeRec_) has changed recently. For
instance, in freetype 2.1.5, it's defined as
typedef struct FTC_ImageTypeRec_
{
FTC_FontRec font;
FT_Int32 flags;
} FTC_ImageTypeRec;
while in freetype 2.1.9, it's defined as
typedef struct FTC_ImageTypeRec_
{
FTC_FaceID face_id;
FT_Int width;
FT_Int height;
FT_Int32 flags;
} FTC_ImageTypeRec;
This difference is a real headache....
Status: NEW → ASSIGNED
Updated•20 years ago
|
Flags: blocking1.8a2? → blocking1.8a2-
Comment 13•20 years ago
|
||
*** Bug 252218 has been marked as a duplicate of this bug. ***
Comment 14•20 years ago
|
||
freetype 2.1.9 API
http://freetype.sourceforge.net/freetype2/docs/reference/ft2-cache_subsystem.html#FTC_ImageCache_Lookup
FT_EXPORT( FT_Error )
FTC_ImageCache_Lookup( FTC_ImageCache cache,
FTC_ImageType type,
FT_UInt gindex,
FT_Glyph *aglyph,
FTC_Node *anode );
different with the patch.
Comment 15•20 years ago
|
||
The patch works for me with freetype 2.1.9. I had to fix Xft.h too but that's
not mozilla's fault.
Attachment #149334 -
Flags: superreview?(blizzard)
Assignee | ||
Comment 16•20 years ago
|
||
Comment on attachment 149334 [details] [diff] [review]
FreeType-2.1.9 patch
this cannot go in as it is. The way FT2 library has changed over the time makes
it rather hard to come up with a patch that will build and run across versions
of FT2.
Attachment #149334 -
Flags: superreview?(blizzard)
Attachment #149334 -
Flags: review+
Comment 17•20 years ago
|
||
I've applied the patch and it works well for normal builds but I'm having
problems with an SVG-enabled build. It fails at line 443 in
/mozilla/layout/svg/renderer/src/libart/nsSVGLibartGlyphMetricsFT.cpp with the
error
nsSVGLibartGlyphMetricsFT.cpp:443: error: `FTC_Image_Desc' undeclared (first use
this function)
I've tried hacking at it with gedit but I know nothing about c++ and I've only
got the patch for guidance so I've only succeeded in changing the error
Comment 18•20 years ago
|
||
I had this problem too -- I had to disable SVG. And although the patch worked
on Firefox, it caused certain crashers in Mozilla (mail). So in the end I
simply downgraded my Freetype to 2.1.7 and make do with hoping that the Freetype
interface gets unbroken, as this never should have happened anyway during a
stable release series...
Comment 19•20 years ago
|
||
*** Bug 247430 has been marked as a duplicate of this bug. ***
Comment 20•20 years ago
|
||
*** Bug 255259 has been marked as a duplicate of this bug. ***
Comment 21•20 years ago
|
||
The dependency on Freetype 2.1.7 should be mentioned in the build instructions
at http://www.mozilla.org/build/unix-details.html, with warnings that newer
versions will not work, similar to libIDL.
Assignee | ||
Comment 22•20 years ago
|
||
That's a good idea. I wrote to leaf (the author of the document) to add such a
warning.
Comment 23•20 years ago
|
||
Those build instructions http://www.mozilla.org/build/unix-details.html seem to
be a bit out of date. They say libIDL-0.8.x won't work but I have no problem
building with libIDL-0.8.3. Same thing with autoconf - it says autoconf-2.5x
won't work but autoconf-2.59 doesn't give me any trouble
Comment 24•20 years ago
|
||
If freetype > 2.1.7 doesn't work, we should have a configure check to stop the
build. People generally don't read the build instructions.
libIDL-0.8.x only works if you're building against gtk2. Are you actually using
autoconf-2.59 to regenerate mozilla/configure and running a full build or do you
just have it installed? 2.59 still fails to regenerate configure here.
Comment 25•20 years ago
|
||
libIDL-0.8.3 works for gtk1 if you make a symbolic link called
/usr/bin/libIDL-config pointing at /usr/bin/libIDL-config-2 . I think you're
probably right about autoconf, I either do ./configure, make or make -f client
make so maybe autoconf isn't used at all.
I don't think a check in the configure script is the answer as the patch
http://bugzilla.mozilla.org/attachment.cgi?id=149334&action=view works and a
configure check would need to be removed by the patch. The Mozilla code needs to
be updated to live with the current tools people are using. It shouldn't stay
fixed in the past depending on legacy versions. Gnome and everything else on my
computer built cleanly with freetype-2.1.9. Nothing else needed patching. The
Mozilla code is the odd one out.
Assignee | ||
Comment 26•20 years ago
|
||
(In reply to comment #25)
> be updated to live with the current tools people are using. It shouldn't stay
> fixed in the past depending on legacy versions.
Not everyone is actively updating their libraries to the bleeding-edge
version. FC1 has FT 2.1.3 and FC2 has FT 2.1.7. I guess other major
distributions haven't updated their FT2 to 2.1.8 or newer, either.
> Gnome and everything else on my
> computer built cleanly with freetype-2.1.9.
That doesn't say much. Most, if not all, of Gnome don't directly rely on
freetype. Pango takes a special measure to protect itself against the whim of
FT2 APIs (basically, it's statically linked against FT2)
> Nothing else needed patching. The
> Mozilla code is the odd one out.
Mozilla can be made to compile both with 2.1.7 or earlier and 2.1.8 or later
with #ifdef's. However, that doesn't solve the problem of Mozilla compiled with
one version of FT2 not being runnable where the other version of FT2 is
installed. If there's a way for that, let me know.
Comment 27•20 years ago
|
||
FC3 will most likely have FT2 > 2.1.8 as Rawhide now contains 2.1.9.
Assignee | ||
Comment 28•20 years ago
|
||
I want some feedback as to how to proceed. We have three options:
1) keep our code as it is now and block building with FT 2.1.8 or later at the
configuration time : new Linux distribution users would suffer. Even if we do
this, this bug should be kept open because eventually more and more people will
have 2.1.8 or later.
2) check the FT2 version at the configuration time and add #ifdef'd blocks so
that Mozilla will build with both FT <= 2.1.7 and FT >= 2.1.8. However, a binary
built with FT <= 2.1.7 won't run where FT >= 2.1.8 is installed and vice versa.
For instance, mozilla.org's tinder boxes have FT <= 2.1.7 so that nightlies
built there won't be run on upcoming FC3 with FT 2.1.9.
3) In addition to what we do at 2), add some wrappers over FT2 APIs so that a
binary built with FT <= 2.1.7 can be run where FT >= 2.1.8 is available and vice
versa (if it can be done with not much hassle)
4) statically build with libfreetype2 ......
What would you say?
Comment 29•20 years ago
|
||
I've started mozilla building with static FT 2.1.7. Is it's licence unrestrictive
enough to include the source tree into the mozilla source (just like XFree86
does) ? Ideally freetype.org developers shouldn't have changed their API without
bumping up the major version of the library. This is what library versioning
is for.
Comment 30•20 years ago
|
||
I see in-tree FT2 and static linking to be the only solution, personally. :(
The mostly-BSD-ish license looks amenable to this (but IANAL):
http://www.freetype.org/license.html
Comment 31•20 years ago
|
||
Oh, of course there is potentially another option: don't use FT2's glyph cache
at all (which in fairness they've always described as 'experimental' AFAICS).
Moz's codebase has its own tried-and-tested cache classes out of the wazoo I
think. What's more, assuming that we end up shunting the glyph pixel data off
to belong to the X server (or other rendering device) eventually and that the X
server's capacity for glyphs is as large as we might want to cache, there's
probably no reason to keep the glyph pixel data around at the library or
application level at all, so we can save memory.
Comment 32•20 years ago
|
||
Another possible solution to the FreeType version madness would be compilation
with the latest release and runtime detection like this 1:
FT_Error ftError;
FT_Library ftLibrary;
FT_Int ftMajor, ftMinor, ftPatch;
ftError = FT_Init_FreeType(&ftLibrary);
FT_Library_Version(ftLibrary, &ftMajor, &ftMinor, &ftPatch);
Assignee | ||
Comment 33•20 years ago
|
||
*** Bug 258829 has been marked as a duplicate of this bug. ***
Comment 34•20 years ago
|
||
Why don't we just stick with stable apis? Do we really need the caching apis?
Comment 35•20 years ago
|
||
current checkouts still don't work!!
though patch seems to be applied.
Comment 36•20 years ago
|
||
Did you apply the patch in comment #56 of this bug
http://bugzilla.mozilla.org/show_bug.cgi?id=190031#c56 and add this to your
mozconfig
ac_add_options --disable-freetype2
Comment 37•20 years ago
|
||
yes. tried a current checkout with and without patch.
and i always use --disable-freetype2.
i don't use any .mozconfig file.
Comment 38•20 years ago
|
||
The patch attached as FreeType-2.1.9.patch solved the compile issues I had with
mozilla-1.7.3 on slackware 8.0, gcc-3.4.2, glibc-2.3.2 and freetype-2.1.9
Comment 39•20 years ago
|
||
It seems that the current trunk source includes additional freetype2-related codes.
I had compile errors in nsFontMetricsPS.cpp, and manually modified it by
following the existing patch, but I couldn't get rid of this error.
/usr/X11R6/include/freetype2/freetype/ftcache.h: in member function `virtual
nscoord nsFontPSXft::GetWidth(const PRUnichar*, unsigned int)':
/usr/X11R6/include/freetype2/freetype/ftcache.h:661: error: too few arguments
to function `FT_Error FTC_ImageCache_Lookup(FTC_ImageCacheRec_*,
FTC_ImageTypeRec_*, unsigned int, FT_GlyphRec_**, FTC_NodeRec_**)'
nsFontMetricsPS.cpp:1155: error: at this point in file
Maybe this error is related to the things written in comment #14, but it is too
much for me because I have no experience in programming.
Could someone solve this problem?
Comment 40•20 years ago
|
||
Here is the patch I used to build recent trunk Firefox. However, now I got
segfault every time I print preview in nsFontPSXft::Init().
Comment 41•20 years ago
|
||
you can refer to the patch bug
http://bugzilla.mozilla.org/show_bug.cgi?id=190031#c56
FTC_Manager_Lookup_Size() need be devided into two steps in FT2.1.8:
1. first do FTC_Manager_LookupSize()
2. then do FTC_Manager_LookupFace().
After do that, mozilla will not crash now.
Comment 42•20 years ago
|
||
Thanks, Ervin. Print Preview works fine now.
Comment 43•20 years ago
|
||
I tried to patch firefox 1.0pr sources and current cvs with patches available
here and also with those from http://bugzilla.mozilla.org/show_bug.cgi?id=190031
Yup, at least it compiles.
But it seems that selecting Helvetica (or some other fonts) as standard serif
font and exiting from firefox preferences is still enough to make it crash with
the following:
/home/james/files/firefox/run-mozilla.sh: line 159: 4665 Segmentation fault
"$prog" ${1+"$@"}
Updated•20 years ago
|
Attachment #159821 -
Attachment is obsolete: true
Comment 44•20 years ago
|
||
Here is updated patch I used to build my trunk Firefox. There is no problem so
far. I am sure about 1.0PR, but if it applied okay, should work as well.
Comment 45•20 years ago
|
||
I have a mozilla built from CVS on Oct 2. I applied the patch from attachment
159281 [details] [diff] [review]. I am using freetype 2.1.9 and enabled gtk2 and xft. The patch applied
fine and mozilla built without problems. Whenver I try to click OK after
changing a font in edit -> preferences or whenever I visit certain webpages that
I frequent, mozilla segfaults with an error of "$prog" ${1+"$@"}. Any ideas or
what else should I submit to help track this down?
Comment 46•20 years ago
|
||
Oops, I meant 159844 in the previous comment.
Comment 47•20 years ago
|
||
*** Bug 263199 has been marked as a duplicate of this bug. ***
Comment 48•20 years ago
|
||
patch works but printing to a file creates a coredump!
Comment 49•20 years ago
|
||
Which patch? Printing to a file works for me with a build patched with both
https://bugzilla.mozilla.org/attachment.cgi?id=149334&action=view and
https://bugzilla.mozilla.org/attachment.cgi?id=156865&action=view
Comment 50•20 years ago
|
||
Any progress on this guys ? Jungshik what's you decision on this ?
Comment 51•20 years ago
|
||
(In reply to comment #49)
> Which patch? Printing to a file works for me with a build patched with both
> https://bugzilla.mozilla.org/attachment.cgi?id=149334&action=view and
> https://bugzilla.mozilla.org/attachment.cgi?id=156865&action=view
second one with mozilla 1.8a4 release :-(
Comment 52•20 years ago
|
||
This patch https://bugzilla.mozilla.org/attachment.cgi?id=159844&action=view
solved my compilation problem in 1.8alpha4 please remove the other patches as
they are causing confusion and are out dated
Comment 53•20 years ago
|
||
to comment #52: This patch crashes my mozilla when I try to print :-(
Comment 54•20 years ago
|
||
I'm afraid that you are right. After recompiling I got seg faults when trying to
print. This happens all the time. I've created a trace and attached that to the
bug report.
Comment 55•20 years ago
|
||
After applying the patch as in comment 52 mozilla now crashes while trying to
print. A trace has been attached I hope this helps on the debugging of the
problem
Assignee | ||
Comment 56•20 years ago
|
||
I'm trying to implement what's suggested in comment #31 and comment #34. That
is, get rid of all the dependence on FT2 cache APIs. For the screen rendering,
it shouldn't make much difference in perf. because X server itself has caching
mechanism as suggested in comment #31. For printing, perf. shouldn't be much of
a concern in the first place.
Assignee | ||
Comment 57•20 years ago
|
||
This should fix the problem for Xft + gtk2 (--enable-xft, --disable-freetype2)
that uses FT2 APIs only for printing.
I'll extend this to fix the problem for a build with freetype2 enabled.
Assignee | ||
Comment 58•20 years ago
|
||
In the previous patch, I forgot to get rid of a few lines of FT-cache related
member variables in nsFontMetricsPS.h
Attachment #162199 -
Attachment is obsolete: true
Assignee | ||
Comment 59•20 years ago
|
||
Comment on attachment 162207 [details] [diff] [review]
fix v2 for Xft+gtk2 that should work for any version of FT2
>@@ -337,18 +337,16 @@ public:
> #endif
>
> nsXftEntry *mEntry;
> FT_Face getFTFace();
>
> protected:
> PRUint16 mPixelSize;
>- FTC_Image_Desc mImageDesc;
> FT_Library mFreeTypeLibrary;
> FTC_Manager mFTCacheManager;
>- FTC_Image_Cache mImageCache;
'FTC_Manager mFTCacheManager' should be removed as well.
Assignee | ||
Comment 60•20 years ago
|
||
With or without freetype2 enabled, printing works fine. However, with freetype
enabled, the screen rendering with FT2 doesn't work. For gtk2(+xft), this
doesn't matter because freetype is not used for the screen rendering.
Attachment #162207 -
Attachment is obsolete: true
Comment 61•20 years ago
|
||
I've tested the patch in comment 58 and it works fine at first sight. Mozilla
also stopped crashing when doing any print related stuff. I'll test the newer
patch tomorrow.
Assignee | ||
Comment 62•20 years ago
|
||
I'm gonna fix this bug in two steps (and maybe one more step in which I'll add
caching if necessary). In the first step, I'll just fix gtk2+xft build which is
the default build option for firefox. It's also used by most Linux distribution
builders. This patch also includes the fix for gtk2 + xft.
In the second step, I'll fix x11core + freetype. Attachment 162239 [details] [diff] is my first
shot at that, but the screen rendering doesn't work while the printing works
fine.
re: comment #61
Thanks for testing. You don't need to test attachment 162239 [details] [diff] [review] because you must
be building with gtk2=xft (otherwise, my previous patch wouldn't have changed
anything). This patch is almost identical to attachment 162207 [details] [diff] [review]. Nonetheless,
it'd be nice if you could test this with FT 2.1.8 or later.
Attachment #149334 -
Attachment is obsolete: true
Attachment #159844 -
Attachment is obsolete: true
Attachment #162239 -
Attachment is obsolete: true
Assignee | ||
Comment 63•20 years ago
|
||
Comment on attachment 162261 [details] [diff] [review]
patch for gtk2+xft only
asking for review.
Attachment #162261 -
Flags: review?(Ervin.Yan)
Comment 64•20 years ago
|
||
I tested version 3 of the patch. It's working fine with Freetype-2.1.9 here on
linux from scratch. I also installed Slackware 10 so I could test it building
against freetype-2.1.7 and it works fine there too.
Assignee | ||
Comment 65•20 years ago
|
||
Now this works fine with my build with 'enable-freetype2' and FT 2.1.7 or
earlier, but it should work just fine with FT 2.1.8 or later because it doesn't
use any FT2 caching APIs.
Assignee | ||
Comment 66•20 years ago
|
||
Comment on attachment 162272 [details] [diff] [review]
patch part 2 (for builds with '--enable-freetype2' )
FYI, I could apply this patch to 1.7/1.0 aviary branch as well. I haven't tried
to build a branch build with this patch (I need to enable freetype2, but my
branch build is configured for gtk2+xft)
Assignee | ||
Comment 67•20 years ago
|
||
(In reply to comment #62)
> I'm gonna fix this bug in two steps (and maybe one more step in which I'll add
> caching if necessary).
The last step (adding our own glyph caching) seems to be necessary. I've been
testing it with a debug build (with zillions of lines of debug output passing by
in my xterm) and the debug output kinda of hides the perf. degradation caused by
my patch (that does not use FT2 glyph caching any more). When I made an
optimized build, the perf. difference became too obvious to miss. It may not be
so conspicuous when printing non-CJK pages, though. Even for CJK pages, it's
still 'tolerable' (it's only for printing as far as the patch for gfx2+xft is
concerned). It's rather simple to add our own glyph caching, but I'd rather get
attachment 162261 [details] [diff] [review] checked in first before adding it (which I expect to be able
to work on next weekend)
Comment 68•20 years ago
|
||
I'm currently testing patch 8&9 combined and all works fine so far. I've tried
to compile gnome with xft and freetype2 but the ./configure script doesn't allow
for this. So I'm running with xft only for now.
Comment 69•20 years ago
|
||
confirming. both patches works ok on Slack current (10+)
Comment 70•20 years ago
|
||
I'm not all that concerned about printing performance, as long as we're not
talking minutes. I think that working slowly is better than not working faster.
Assignee | ||
Comment 71•20 years ago
|
||
Comment on attachment 162261 [details] [diff] [review]
patch for gtk2+xft only
asking for r/sr.
I'm not concerned about the printing perf. much either. I planned to work on
it this weekend, but I'm afraid I can't. I'll next week when I'll also try to
fix SVG.
Attachment #162261 -
Flags: superreview?(dbaron)
Attachment #162261 -
Flags: review?(blizzard)
Attachment #162261 -
Flags: review?(Ervin.Yan)
Comment 72•20 years ago
|
||
current firefox checkout, patch 162261:
CC -o nsPostScriptObj.o -c -DOSTYPE=\"IRIX6\" -DOSARCH=\"IRIX\"
-DHAVE_DEPENDENT_LIBS -I../.. -I../../../../mozilla/gfx/src/ps/..
-I../../../../mozilla/gfx/src/ps/../shared -I../../../dist/include/xpcom
-I../../../dist/include/string -I../../../dist/include/widget
-I../../../dist/include/pref -I../../../dist/include/caps
-I../../../dist/include/locale -I../../../dist/include/uconv
-I../../../dist/include/view -I../../../dist/include/necko
-I../../../dist/include/imglib2 -I../../../dist/include/unicharutil
-I../../../dist/include/gfx -I../../../dist/include
-I/mnt/3/moz/obj2/dist/include/nspr -I. -I/usr/nekoware/include
-I/usr/nekoware/include/freetype2 -KPIC -I/usr/local/include
-I/usr/nekoware/include -LANG:exceptions=OFF -woff 3262 -G 4 -n32 -DNDEBUG
-DTRIMMED -O3 -I/usr/nekoware/include/glib-2.0
-I/usr/nekoware/lib/glib-2.0/include -I/usr/nekoware/include/pango-1.0
-I/usr/nekoware/include -I/usr/nekoware/include/freetype2
-I/usr/nekoware/include/gtk-2.0 -I/usr/nekoware/include/atk-1.0
-I/usr/nekoware/lib/gtk-2.0/include -I/usr/local/include
-I/usr/nekoware/include -DMOZILLA_VERSION=\"1.8a5\" -DIRIX=1
-DNSCAP_DISABLE_DEBUG_PTR_TYPES=1 -DD_INO=d_ino -DSTDC_HEADERS=1
-DHAVE_ST_BLKSIZE=1 -DHAVE_SIGINFO_T=1 -DHAVE_INT16_T=1 -DHAVE_INT32_T=1
-DHAVE_INT64_T=1 -DHAVE_UINT=1 -DHAVE_UINT_T=1 -DHAVE_UINT16_T=1
-DHAVE_DIRENT_H=1 -DHAVE_GETOPT_H=1 -DHAVE_MEMORY_H=1 -DHAVE_UNISTD_H=1
-DHAVE_NL_TYPES_H=1 -DHAVE_MALLOC_H=1 -DHAVE_X11_XKBLIB_H=1
-DHAVE_SYS_STATVFS_H=1 -DHAVE_SYS_STATFS_H=1 -DHAVE_SYS_CDEFS_H=1 -DHAVE_LIBM=1
-DHAVE_LIBDL=1 -DHAVE_LIBSOCKET=1 -DFUNCPROTO=15 -DHAVE_XSHM=1 -DHAVE_RANDOM=1
-DHAVE_STRERROR=1 -DHAVE_LCHOWN=1 -DHAVE_FCHMOD=1 -DHAVE_SNPRINTF=1
-DHAVE_MEMMOVE=1 -DHAVE_RINT=1 -DHAVE_STAT64=1 -DHAVE_LSTAT64=1
-DHAVE_FLOCKFILE=1 -DHAVE_LOCALTIME_R=1 -DHAVE_STRTOK_R=1
-DHAVE_LANGINFO_CODESET=1 -DHAVE_I18N_LC_MESSAGES=1
-DMOZ_DEFAULT_TOOLKIT=\"gtk2\" -DMOZ_WIDGET_GTK2=1 -DMOZ_ENABLE_XREMOTE=1
-DMOZ_X11=1 -DMOZ_DISTRIBUTION_ID=\"org.mozilla\" -DMOZ_PHOENIX=1
-DMOZ_XUL_APP=1 -DMOZ_APP_NAME=\"firefox\" -DMOZ_ENABLE_XFT=1
-DMOZ_ENABLE_COREXFONTS=1 -DMOZ_EXTRA_X11CONVERTERS=1 -DOJI=1 -DIBMBIDI=1
-DMOZ_VIEW_SOURCE=1 -DACCESSIBILITY=1 -DMOZ_XPINSTALL=1 -DMOZ_JSLOADER=1
-DHAVE_GSSAPI_GSSAPI_H=1 -DMOZ_MATHML=1 -DMOZ_LOGGING=1
-DMOZ_USER_DIR=\".mozilla\" -DMOZ_XUL=1 -DMOZ_PROFILELOCKING=1
-DMOZ_DLL_SUFFIX=\".so\" -DXP_UNIX=1 -DUNIX_ASYNC_DNS=1 -DJS_THREADSAFE=1
-DNS_PRINT_PREVIEW=1 -DNS_PRINTING=1 -DMOZ_ACCESSIBILITY_ATK=1
-DMOZILLA_LOCALE_VERSION=\"1.8a\" -DMOZILLA_REGION_VERSION=\"1.8a\"
-DMOZILLA_SKIN_VERSION=\"1.5\" -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT
../../../../mozilla/gfx/src/ps/nsPostScriptObj.cpp
cc-1253 CC: WARNING File = ../../../../mozilla/gfx/src/ps/nsFontMetricsPS.h,
Line = 289
The declaration of a member with the same name as its class is invalid.
nsFontPS *fontps;
^
cc-1552 CC: WARNING File = ../../../../mozilla/gfx/src/ps/nsFontMetricsPS.cpp,
Line = 947
The variable "rv" is set but never used.
nsresult rv;
^
cc-1020 CC: ERROR File = ../../../../mozilla/gfx/src/ps/nsFontMetricsPS.cpp,
Line = 1064
The identifier "nsXftFaceRequester" is undefined.
fterror = FTC_Manager_New(mFreeTypeLibrary, 0, 0, 0, nsXftFaceRequester,
^
cc-1552 CC: WARNING File = ../../../../mozilla/gfx/src/ps/nsFontMetricsPS.cpp,
Line = 1360
The variable "leading" is set but never used.
nscoord leading, emHeight, emAscent, emDescent;
^
cc-1253 CC: WARNING File = ../../../../mozilla/gfx/src/ps/nsFontMetricsPS.h,
Line = 289
The declaration of a member with the same name as its class is invalid.
nsFontPS *fontps;
^
cc-1020 CC: ERROR File = ../../../../mozilla/gfx/src/ps/nsFontMetricsPS.cpp,
Line = 2412
The identifier "nsXftFaceRequester" is undefined.
error = FTC_Manager_New(mFreeTypeLibrary, 0, 0, 0, nsXftFaceRequester,
^
2 errors detected in the compilation of
"../../../../mozilla/gfx/src/ps/nsFontMetricsPS.cpp".
gmake[4]: *** [nsFontMetricsPS.o] Error 2
gmake[4]: *** Waiting for unfinished jobs....
gmake[4]: Leaving directory `/mnt/3/moz/obj2/gfx/src/ps'
Assignee | ||
Comment 73•20 years ago
|
||
did you apply the patch at all? If you did, how come you got an error like this?
The identifier "nsXftFaceRequester" is undefined.
fterror = FTC_Manager_New(mFreeTypeLibrary, 0, 0, 0, nsXftFaceRequester,
Note that the line was removed by my patch.
Comment 74•20 years ago
|
||
(In reply to comment #73)
> did you apply the patch at all? If you did, how come you got an error like this?
>
> The identifier "nsXftFaceRequester" is undefined.
>
> fterror = FTC_Manager_New(mFreeTypeLibrary, 0, 0, 0, nsXftFaceRequester,
>
> Note that the line was removed by my patch.
>
sure i did.
checked out before, applied the patch and made a firefox.
anyway, trying 1.8a4 at the moment. let's see...
Comment 75•20 years ago
|
||
I checked out aviary branch @ Mon Oct 25 20:09:33 CDT 2004, applied patch 8 and
I get these failures:
Hunk #1 FAILED at 1024.
Hunk #2 FAILED at 1045.
Hunk #3 FAILED at 1114.
Hunk #4 FAILED at 2377.
4 out of 4 hunks FAILED -- saving rejects to file gfx/src/ps/nsFontMetricsPS.cpp.rej
patching file gfx/src/ps/nsFontMetricsPS.h
Hunk #1 FAILED at 337.
Hunk #2 FAILED at 471.
2 out of 2 hunks FAILED -- saving rejects to file gfx/src/ps/nsFontMetricsPS.h.rej
I've been using the same commands as in the past to apply the patch with no
problem. First I saw this was about 3 days ago I think.
Comment 76•20 years ago
|
||
Comment on attachment 162261 [details] [diff] [review]
patch for gtk2+xft only
Jshin, this patch look OK for me. I test it to print 27000 Chinese characters
with GB18030 encoding, the performance seems not regressive.
sorry for late reply.
Assignee | ||
Comment 77•20 years ago
|
||
Comment on attachment 162261 [details] [diff] [review]
patch for gtk2+xft only
Ervin, thanks for testing. Can you add 'r' flag to this patch?
In my test, the perf. loss couldn't be missed although tolerable. Perhaps,
we're just applying slightly different metrics to the same phenonmenon :-).
Anyway, if there's any need to deal with perf., I'll do it after landing this.
Attachment #162261 -
Flags: review?(blizzard) → review?(Ervin.Yan)
Comment 78•20 years ago
|
||
jshin: I have no permission to edit the attachment 162261 [details] [diff] [review].
maybe you need ask someone else to give "r=" flag for your this patch.
Assignee | ||
Comment 79•20 years ago
|
||
Ervin, can you go through the patch to see if there's anything wrong and let me
know the result? Then, I'll flag it per your review.
Comment 80•20 years ago
|
||
Asking for consideration here: Firefox 1.0 will fail to compile on FC3 and RHEL4
without this bug fixed.
Flags: blocking-aviary1.0?
Assignee | ||
Comment 81•20 years ago
|
||
(In reply to comment #80)
> Asking for consideration here: Firefox 1.0 will fail to compile on FC3 and RHEL4
> without this bug fixed.
As I wrote in my reply to your query a week ago, that's not the case (although I
like to fix this bug asap and like to get your support :-)) *unless* you want to
compile with '--enable-freetype2'. (So far, RedHat hasn't enabled freetype2 in
any of Mozilla builds made for RHEL and FCs). Note that my patch for bug 190031
hasn't been landed in aviary-1.0/mozilla 1.7 branches so that you don't need
attachment 162261 [details] [diff] [review].
Comment 82•20 years ago
|
||
(In reply to comment #80)
> Asking for consideration here: Firefox 1.0 will fail to compile on FC3 and RHEL4
> without this bug fixed.
That may be so, but even without the fix, the binaries provided by mozilla.org
will run just fine on FC3, won't they? If so, then I don't see why this bug
should be a blocker.
It should be high priority (for the reason you mentioned), but not a blocker, IMO.
Comment 83•20 years ago
|
||
> *unless* you want to compile with '--enable-freetype2'.
note that this is the default...
Assignee | ||
Comment 84•20 years ago
|
||
(In reply to comment #83)
> > *unless* you want to compile with '--enable-freetype2'.
>
> note that this is the default...
Actually, RedHat has always compiled their Mozilla builds with
'--disable-freetype2'. So what I meant was that 'unless you enable freetype2 by
not adding '--enable-freetype2'.
Comment 85•20 years ago
|
||
(In reply to comment #84)
> '--disable-freetype2'. So what I meant was that 'unless you enable freetype2 by
> not adding '--enable-freetype2'.
You mean --disable-freetype2
Comment 86•20 years ago
|
||
jshin, I have go through the patch in attachment 162261 [details] [diff] [review], they are all OK for me.
Thanks.
Assignee | ||
Comment 87•20 years ago
|
||
Comment on attachment 162261 [details] [diff] [review]
patch for gtk2+xft only
flagging with 'r' per Ervin's review. (thanks).
Attachment #162261 -
Flags: review?(Ervin.Yan) → review+
Assignee | ||
Comment 88•20 years ago
|
||
Ervin, can you also test 'patch part2' (for builds with '--enable-freetype2')
attachment 162272 [details] [diff] [review]? I ran out of the disk space to build an optimized build with
freetype2 enabled. (as I wrote before, with a debug build, it's sorta hard to
tell the perf. loss). This patch affects the screen rendering (which is more
critical than printing) as well. Well, not many people are interested in
freetype builds any more. Nonetheless, I don't wanna make it regress perf-wise .
Comment 89•20 years ago
|
||
got the following with a current firefox checkout (normal head, not aviary):
Hmm... Looks like a unified diff to me...
The text leading up to this was:
--------------------------
|? 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
--------------------------
Patching file gfx/src/ps/nsFontMetricsPS.cpp using Plan A...
Reversed (or previously applied) patch detected! Assume -R? [y] n
Apply anyway? [n]
Hunk #1 ignored at 1024.
Hunk #2 ignored at 1045.
Hunk #3 ignored at 1114.
Hunk #4 ignored at 2377.
4 out of 4 hunks ignored--saving rejects to gfx/src/ps/nsFontMetricsPS.cpp.rej
Hmm... The next patch looks like a unified diff to me...
The text leading up to this was:
--------------------------
|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
--------------------------
Patching file gfx/src/ps/nsFontMetricsPS.h using Plan A...
Hunk #1 failed at 337.
Hunk #2 failed at 471.
2 out of 2 hunks failed--saving rejects to gfx/src/ps/nsFontMetricsPS.h.rej
done
Comment 90•20 years ago
|
||
jshin: I will test the patch part2 these days and give you the result.
Comment 91•20 years ago
|
||
we may be able to add this to the branch after 1.0 but the patch is large and
we're not going to block on this. distributors are encouraged to add this or
similar patch to their builds if needed.
Flags: blocking-aviary1.0? → blocking-aviary1.0-
Attachment #162261 -
Flags: superreview?(dbaron) → superreview?(bryner)
Assignee | ||
Comment 92•20 years ago
|
||
*** Bug 257160 has been marked as a duplicate of this bug. ***
Updated•20 years ago
|
Attachment #162261 -
Flags: superreview?(bryner) → superreview+
Assignee | ||
Comment 93•20 years ago
|
||
attachment 162261 [details] [diff] [review] was landed.
Assignee | ||
Comment 94•20 years ago
|
||
*** Bug 262263 has been marked as a duplicate of this bug. ***
Comment 95•20 years ago
|
||
Comment on attachment 162272 [details] [diff] [review]
patch part 2 (for builds with '--enable-freetype2' )
FYI, this patch fixes my builds on Fedora Core 3 w/2.6.9 kernel.
Assignee | ||
Comment 96•20 years ago
|
||
Comment on attachment 162272 [details] [diff] [review]
patch part 2 (for builds with '--enable-freetype2' )
According to my *very unscientific* test (just browsing a dozen web sites in
English, Chinese, Japanese, and Korean) with and without this patch, we don't
have to worry about perf. loss much. I'll take a profile with and without the
patch.
Comment 97•20 years ago
|
||
*** Bug 271761 has been marked as a duplicate of this bug. ***
Assignee | ||
Comment 98•20 years ago
|
||
I finally took profiles of two optimized builds (one with and the other without
attachment 162272 [details] [diff] [review] applied. actually, I was leaking mFace so that I filled it
up). With the patch applied (no glyph image cache utilized), about a fifth of
the total running time was spent in nsFreeTypeXImage::DrawString() (and
functions called by it) while the figure is about 5% without the patch. A
similar increase (3% -> 12%) was observed for nsFreeTypeFont::GetWidth. In both
cases, LoadGlyph() was responsible for about 90% of time. So, glyph image
caching is rather critical.
Here comes my dillemma. Given that these days few Linux users use X11core+FT2
builds, is it worth adding our own glyph caching?
Assignee | ||
Comment 99•20 years ago
|
||
for the record, I'm uploading the profiling results with and without attachment
162272 [details] [diff] [review] applied.
Updated•20 years ago
|
Flags: blocking1.8b?
Comment 100•20 years ago
|
||
This patch (part 2) fixes build on Slackware current.
Updated•20 years ago
|
Flags: blocking1.8b? → blocking1.8b-
Comment 101•20 years ago
|
||
Asa: why?
This is a ready to go patch, fixing the bug, and it would be great to have it
for beta cycle to test if this will not regress.
I can't find any reason to leave this not checked in :(
Comment 102•20 years ago
|
||
it doesn't have reviews, and there seems to be some severe perf issues
associated with the patch, isn't that reason enough?
Assignee | ||
Comment 103•20 years ago
|
||
On a 'modern' machine, it's not so noticable (before taking a profile, I didn't
notice it on my P3 800MHz, 512MB). Anway, I rolled out my own 'glyph/font
cache', but have had a trouble making it work right. Actually, Mozilla keeps
crashing in ft_new_glyph() with my patch (not uploaded). I'll try to get this
done before 1.8beta...
asa, how much do we care about the perf. of X11core/freetype2 build (on Linux)?
On linux, only few would use such a build these days (well, some people don't
like Xft) although it's still the default build config for the suite. [1] Is it
important to embedders? If not, we may just go ahead with the current patch
pending r/sr (I'll ask for r/sr later if we decide we don't care about the perf.)
[1] With dbaron's recent fix of a long standing Xft-build crash, it may be
finally time to switch to Xft.
Target Milestone: --- → mozilla1.5alpha
Comment 104•20 years ago
|
||
*** Bug 281166 has been marked as a duplicate of this bug. ***
Comment 105•20 years ago
|
||
(In reply to comment #104)
> *** Bug 281166 has been marked as a duplicate of this bug. ***
Well, but _Sunbird_ fails to *run* on a FT 2.1.8 machine while here's we talk
only about _Firefox_ fails to *compile*.
Assignee | ||
Comment 106•20 years ago
|
||
*Birds, FF, and Mozilla suite all share the same Gfx code. Note that this bug is
filed under 'Core : Gfx'.
Comment 107•20 years ago
|
||
The issue in both cases is that we use freetype APIs that aren't available any
longer on some systems. Whether we detect it at compile time or runtime is not
really interesting here.
Is "patch part 2" obsolete, here, or should it have review requests associated
with it?
Assignee | ||
Comment 108•20 years ago
|
||
It still works, but I'm waiting for some 'policy' input from drivers or some
people like that. See comment #98 and comment #103.
Comment 109•20 years ago
|
||
If you have questions for drivers, you're best to mail drivers@mozilla.org;
bugmail's a bad way to get policy issues discussed properly.
Comment 110•20 years ago
|
||
(In reply to comment #107)
> The issue in both cases is that we use freetype APIs that aren't available any
> longer on some systems. Whether we detect it at compile time or runtime is not
> really interesting here.
But why does a Thunderbird 1.0 binary print without problems where a Sunbird 0.2
binary does "crash"?
Comment 111•20 years ago
|
||
Because they're different from different branch-points, I suspect. Reading the
code might tell you more; I'm relatively confident that this bug is isomorphic
to the one I dup'd here.
Comment 112•20 years ago
|
||
(In reply to comment #111)
> Because they're different from different branch-points, I suspect. Reading the
> code might tell you more; I'm relatively confident that this bug is isomorphic
> to the one I dup'd here.
Yes, I share your opinion.
But: It might be that Sunbird and Thunderbird/Firefox use different compile
options so that changing the compile options in Sunbird can solve the bug for
the user temporaraly.
If I look at the first reporting date, I'll suspect that the bug will be fixed
in ~ 2 month. :(
Assignee | ||
Comment 113•20 years ago
|
||
(In reply to comment #111)
> Because they're different from different branch-points, I suspect.
TB 1.0 is built with gtk2 + xft and it doesn't rely on FT2 at all. Freetype
printing in gtk2+xft was added in bug 190031 after aviary 1.0 branch was cut in
last May. As for SB 0.2, there are two possibilities. If it's built with gtk1 +
freetype2, it'll be fixed by my patch part2. If it's built with gtk2+xft, but
still has a problem with freetype printing, it's probably because it's built
before my patch part1 - attachment 162261 [details] [diff] [review] (that fixed the problem with FT2
printing in gtk2+xft) was checked in
> Reading the code might tell you more; I'm relatively confident that this bug
is isomorphic
> to the one I dup'd here.
Yes, you're absolutely right. Bug 281166 is a dupe of this bug whichever (of two
possibilites mentioned above) may be the case. In both cases, one can work
around the problem by disabling freetype printing (go to 'about:config', look
for 'freetype' and you'll see which pref. to set to false).
re comment #109 : yeah, I know. I was kinda lazy. I wrote to drivers@....
Comment 114•20 years ago
|
||
Comment on attachment 162272 [details] [diff] [review]
patch part 2 (for builds with '--enable-freetype2' )
This patch is starting to suffer from bitrot.
Comment 115•20 years ago
|
||
*** Bug 284763 has been marked as a duplicate of this bug. ***
Comment 116•20 years ago
|
||
*** Bug 284942 has been marked as a duplicate of this bug. ***
Comment 117•20 years ago
|
||
*** Bug 288882 has been marked as a duplicate of this bug. ***
Comment 118•20 years ago
|
||
What is the status of this bug? I failed to build Mozilla Suite 1.7.6 with
Freetype 2.1.9. I can attach the build log from my own mozilla build script if
necessary.
Does a GTK2+Xft2 build also needs a patch? My (need to be updated) Firefox build
is GTK+Xft2 and did not suffer from the FT2 2.1.4 to 2.1.9 migration, unlike my
Seamonkey 1.7.5 (which is GTK1+Freetype2) where I lost the font anti-aliasing.
I have to update as soon as possible (security!) and I cannot use the official
binaries because I changed a lot of things on my Linux system.
Assignee | ||
Comment 119•20 years ago
|
||
(In reply to comment #118)
> Does a GTK2+Xft2 build also needs a patch? My (need to be updated)
No, it doesn't. The necessary patch (attachment 162261 [details] [diff] [review]) has already been landed.
Mozilla 1.7.6/Firefox 1.0.x don't have that patch (because it's not necessary)
but should be fine if gtk2+xft is used instead of the default gtk1+freetype2+X11.
Comment 120•20 years ago
|
||
This patch modifies the mozilla-1.7.7 release to use freetype 2.1.8 as provided
with X-4.5.0. I have run it for a day and it seems OK but of course it needs
more testing. The patch also modifies the svg renderer interface file that
comes with the release. but because libart is not included, I can't test this
at all. It may not even compile. Sorry, but I just don't have time to mess
with the CVS version. Apply the patch from the top level mozilla directory
with -p1.
Assignee | ||
Comment 121•20 years ago
|
||
(In reply to comment #120)
> Created an attachment (id=181857) [edit]
> Freetype 2.1.8 patch for mozilla 1.7.7
>
> This patch modifies the mozilla-1.7.7 release to use freetype 2.1.8 as provided
> with X-4.5.0. I have run it for a day and it seems OK but of course it needs
Thanks for the patch, but your approach has already been tried. Due to the
incompatible change made by freetype folks, we have some headache here and I
decided to take a different approach. See comment #28 and comment #62 (and
other related comments).
Anyway, it's not a high priority item any more because we chagned the default
build option to gtk2 + xft even for suite. Firefox had been built with gtk2+xft
for a while when we switched.
Comment 122•20 years ago
|
||
It is my understanding that the X guys plan to eliminate Xft in upcoming
releases in favor of freetype. That was my main motivation for fixing this
now.
As has already been pointed out, the freetype guys have made the serious
error of changing the ABI without changing the libfreetype version number.
This has been further compounded by the release of X-4.5.0 with freetype
2.1.8. The previous version X-4.4.0 had freetype 2.1.4 with the old ABI.
So now we're stuck with incompatible versions of libfreetype.so.6, depending
on which version of X is installed.
If Xft disappears, it seems to me that until the libfreetype version issue
is resolved the only viable solution for binary releases to the general
public is to statically link libfreetype. At least with this patch, you can
statically link a newer version.
Static linking of included source can be set as the build default in the
source package, with an option to use the system libfreetype. If this
option is selected, the configure script tests for a compatible version of
libfreetype on the system and dies if it is not available. As time passes
and systems are upgraded, the problem will go away (assuming the freetype
guys refrain from introducing more ABI changes under libfreetype.so.6).
Yours,
Joseph
(In reply to comment #122)
> It is my understanding that the X guys plan to eliminate Xft in upcoming
> releases in favor of freetype. That was my main motivation for fixing this
> now.
That doesn't make sense. They're not competitors; they're different layers.
(As I understand it, Freetype deals with font data, Xft deals with doing
client-side font rendering, and fontconfig deals with finding fonts.)
Assignee | ||
Comment 124•20 years ago
|
||
(In reply to comment #122)
> It is my understanding that the X guys plan to eliminate Xft in upcoming
> releases in favor of freetype. That was my main motivation for fixing this
> now.
Where did you hear that? As David wrote, it doesn't make any sense.
Comment 125•20 years ago
|
||
OK, I misread the documentation and the comment above is silly. Moreover, had I
not gotten confused in this way, I would never have bothered to make this patch.
Sorry for the noise. Do with the patch as you see fit.
However, doing font rendering without Xft does make sense. Xft is a wrapper
around freetype, fontconfig, and Xrender. The freetype cache issue aside, it is
probably just as easy to access fontconfig directly to select fonts, and to
render glyphs directly with freetype. One then has the option of composing an
image with the resulting bitmap/graymap using Xrender, or to just pass it to
core X when that isn't necessary.
(In reply to comment #125)
> One then has the option of composing an
> image with the resulting bitmap/graymap using Xrender, or to just pass it to
> core X when that isn't necessary.
...which is a lot of code. It's also already been written in a library called Xft.
Comment 127•20 years ago
|
||
Since it seems that no one has mentioned it, I wish to report that Firefox 1.0.4
seems to be no longer compilable with Freetype2 "9.7.3", with the same symptoms;
the patch also fails to apply. (Mozilla 1.0.0 was compilable.)
Comment 128•20 years ago
|
||
*** Bug 294883 has been marked as a duplicate of this bug. ***
Comment 129•20 years ago
|
||
Hello, all:
I am compiling mozilla 1.7.8 in my FreeBSD 5.3 (i386), in which FreeType 2.1.9
is installed.
There are so many patches here. Which one shall I apply?
If I want to build with the option "--enable-default-toolkit=gtk2 --enable-xft -
-enable-freetype2", does that mean I must apply "patch for gtk2+xft only"
(162261) and "patch part 2 (for builds with '--enable-freetype2' )" (162272)?
Or just one of them is enough?
I am really lossed in this long thread.
Thank you,
Comment 130•20 years ago
|
||
(In reply to comment #129)
> If I want to build with the option "--enable-default-toolkit=gtk2 --enable-xft -
> -enable-freetype2", does that mean I must apply "patch for gtk2+xft only"
> (162261) and "patch part 2 (for builds with '--enable-freetype2' )" (162272)?
You can not enable xft and freetype2 at the same time.
Comment 131•20 years ago
|
||
(In reply to comment #130)
> You can not enable xft and freetype2 at the same time.
I know this should be a separate bug, but as recent as 1.0.0 this was "possible"
(i.e., it did not generate compile time errors).
Comment 132•20 years ago
|
||
1.0.x is not "recent"
Comment 133•20 years ago
|
||
(In reply to comment #132)
> 1.0.x is not "recent"
What do you mean by that? The most current version is 1.0.4 but 1.0.x is "not
recent"?
We can't have the case where the most recent version is not recent!
Assignee | ||
Comment 134•20 years ago
|
||
(In reply to comment #133)
> (In reply to comment #132)
> > 1.0.x is not "recent"
>
> What do you mean by that? The most current version is 1.0.4 but 1.0.x is "not
> recent"?
1.0.4 is the most recent *released* version, but the development efforts are put
on the trunk. 1.0.x branched off the trunk more than a year ago.
Anyway, you're right that it's possible to have both xft and freetype for 1.0.x
branch. The patch to block freetype from being enabled with xft+gtk2 was landed
only on the trunk. (for bug 190031)
http://bonsai.mozilla.org/cvsview2.cgi?diff_mode=context&whitespace_mode=show&root=/cvsroot&subdir=mozilla&command=DIFF_FRAMESET&file=configure.in&rev2=1.1361&rev1=1.1360
Anyway, can you tell me why you wanna enable freetype for gtk2+xft? Is it for
printing? Then, I'll tell you what patches to apply (there are a few patches to
apply)
Comment 135•20 years ago
|
||
(In reply to comment #134)
> Anyway, can you tell me why you wanna enable freetype for gtk2+xft? Is it for
> printing? Then, I'll tell you what patches to apply (there are a few patches
to
> apply)
Actually, I don't mind whether freetype2 is enabled or not. What I care is to
successfully compile mozilla 1.7.8 by the option "--enable-default-
toolkit=gtk2 --enable-xft".
Can you tell me which patch(es) I should apply to the src?
Thanks,
Comment 136•20 years ago
|
||
(In reply to comment #135)
> Actually, I don't mind whether freetype2 is enabled or not. What I care is to
> successfully compile mozilla 1.7.8 by the option "--enable-default-
> toolkit=gtk2 --enable-xft".
> Can you tell me which patch(es) I should apply to the src?
Btw, my OS is FreeBSD 5.3 (i386), on which FreeType 2.1.9 was installed before.
With the above mentioned configure options, I compiled the src and met the
following error:
------------------------------------------------
In file included from nsFreeType.h:39,
from nsFreeType.cpp:48:
../../../dist/include/gfx/nsIFreeType2.h:53: error: `GetImageCache' declared as
a `virtual' field
...[snipped]
nsFreeType.cpp:392: error: `FTC_Image_Cache' was not declared in this scope
nsFreeType.cpp:392: error: `aCache' was not declared in this scope
nsFreeType.cpp:393: error: expected `,' or `;' before '{' token
nsFreeType.cpp: In member function `void nsFreeType2::ClearGlobals()':
nsFreeType.cpp:429: error: `mImageCache' undeclared (first use this function)
nsFreeType.cpp:429: error: (Each undeclared identifier is reported only once
for each function it appears in.)
nsFreeType.cpp: In member function `PRBool nsFreeType2::InitLibrary()':
nsFreeType.cpp:668: error: `mImageCache' undeclared (first use this function)
gmake[4]: *** [nsFreeType.o] Error 1
gmake[4]: Leaving directory `/usr/src/mozilla/gfx/src/freetype'
gmake[3]: *** [libs] Error 2
gmake[3]: Leaving directory `/usr/src/mozilla/gfx/src'
gmake[2]: *** [libs] Error 2
gmake[2]: Leaving directory `/usr/src/mozilla/gfx'
gmake[1]: *** [tier_9] Error 2
gmake[1]: Leaving directory `/usr/src/mozilla'
gmake: *** [default] Error 2
------------------------------------------------
Pls advise me on which patch(es) to apply,
Thanks.
Assignee | ||
Comment 137•20 years ago
|
||
I've already answered off-line, but to prevent others from asking the same
question again (in addition, because the build document, having been revised for
the trunk, doesn't mention about this), I'll answer here. If you don't care
about printing in gtk2+xft, just disable freetype2 using '--disable-freetype2'
(in mozconfig, it's 'ac_add_options --disable-freetype2'). You don't need any
patch for the 1.0.x/1.7.x branches.
Comment 138•19 years ago
|
||
(In reply to comment #137)
> I've already answered off-line, but to prevent others from asking the same
> question again (in addition, because the build document, having been revised for
> the trunk, doesn't mention about this), I'll answer here. If you don't care
> about printing in gtk2+xft, just disable freetype2 using '--disable-freetype2'
> (in mozconfig, it's 'ac_add_options --disable-freetype2'). You don't need any
> patch for the 1.0.x/1.7.x branches.
(I'm attempting to compile Firefox 1.0.4 so I can try to implement a fix to the
old "geometry" resource problem--hopefully in a way that can be accepted into
the code base.)
Does disabling freetype2 prevent any printing, assuming the default toolkit is
gtk2/xft, or is the impact less severe that that?
I do need to print, but if the only impact is that the characters might have
slightly different appearance and/or spacing, I could live with that.
Assignee | ||
Comment 139•19 years ago
|
||
(In reply to comment #138)
> Does disabling freetype2 prevent any printing, assuming the default toolkit is
> gtk2/xft, or is the impact less severe that that?
It doesn't unless you need to print characters other than Latin. Non-latin
characters can be printed, too, but the result is not so good. Anyway, those who
care about that can apply my latest patch to bug 215219 to 1.0.x branch source.
(it does more than just enabling a better quality printing)
Comment 140•19 years ago
|
||
These patches are not meeting this problem. With the freetype2 build they
disable the lib when >2.1.8 is used and with <2.1.8 they cause anomalies. I
dont think its fair to really say the issue is the versioning (I assume you
expect them to call this freetype3) when the makefile doesnt actually use the
the freetype-config it calls. Freetype is a non-issue for every other build
that uses it and can be built w/ either version. The major action of the lib
has not as far as I understand, only the names of a couple functions. It takes
a real CS to jam up a major project that has enough headaches as is for written
code as piddly as freetype is.
Comment 141•19 years ago
|
||
> only the names of a couple functions
AIUI the functions were removed, not renamed
Comment 142•19 years ago
|
||
*** Bug 301051 has been marked as a duplicate of this bug. ***
Comment 143•19 years ago
|
||
Hi,
I'm having a problem with the freetype apparently asswell. I get the following
message when compliling:
In file included from
/home/cputter/Sandbox_Alpha/mozilla/gfx/src/ps/nsDeviceContextPS.h:50,
from
/home/cputter/Sandbox_Alpha/mozilla/gfx/src/ps/nsDeviceContextPS.cpp:55:
/home/cputter/Sandbox_Alpha/mozilla/gfx/src/ps/nsFontMetricsPS.h:344: error: '
FTC_Image_Desc' is used as a type, but is not defined as a type.
/home/cputter/Sandbox_Alpha/mozilla/gfx/src/ps/nsFontMetricsPS.h:347: error: '
FTC_Image_Cache' is used as a type, but is not defined as a type.
/home/cputter/Sandbox_Alpha/mozilla/gfx/src/ps/nsFontMetricsPS.h:481: error: '
FTC_Image_Desc' is used as a type, but is not defined as a type.
gmake[5]: *** [nsDeviceContextPS.o] Error 1
gmake[5]: Leaving directory
`/home/cputter/Sandbox_Alpha/mozilla/objdir-x86_64-linux-gnu/gfx/src/ps'
gmake[4]: *** [libs] Error 2
gmake[4]: Leaving directory
`/home/cputter/Sandbox_Alpha/mozilla/objdir-x86_64-linux-gnu/gfx/src'
gmake[3]: *** [libs] Error 2
gmake[3]: Leaving directory
`/home/cputter/Sandbox_Alpha/mozilla/objdir-x86_64-linux-gnu/gfx'
gmake[2]: *** [tier_9] Error 2
gmake[2]: Leaving directory
`/home/cputter/Sandbox_Alpha/mozilla/objdir-x86_64-linux-gnu'
gmake[1]: *** [default] Error 2
gmake[1]: Leaving directory
`/home/cputter/Sandbox_Alpha/mozilla/objdir-x86_64-linux-gnu'
gmake: *** [build] Error 2
I'm running Suse 9.3, on Athlon 64. Here's my mozconfig file:
#
# See http://www.mozilla.org/build/ for build instructions.
#
# Options for client.mk.
mk_add_options MOZ_CO_PROJECT=calendar
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/objdir-x86_64-linux-gnu
# Options for 'configure' (same as command-line options).
ac_add_options --enable-application=calendar
ac_add_options --disable-mailnews
ac_add_options --disable-tests
ac_add_options --enable-optimize
ac_add_options --enable-static
ac_add_options --disable-debug
ac_add_options --disable-shared
ac_add_options --enable-plaintext-editor-only
ac_add_options --enable-necko-protocols=about,http,ftp,file,jar,res
ac_add_options --enable-storage
ac_add_options --disable-accessibility
ac_add_options --disable-activex
ac_add_options --disable-activex-scripting
ac_add_options --disable-installer
ac_add_options --disable-jsd
ac_add_options --disable-mathml
ac_add_options --disable-necko-disk-cache
ac_add_options --disable-oji
ac_add_options --disable-view-source
ac_add_options --disable-logging
ac_add_options --disable-plugins
ac_add_options --disable-cookies
ac_add_options --enable-default-toolkit=gtk2
ac_add_options --disable-freetype2
ac_add_options --enable-xft
Is this related to the same bug, or something totally different?
Updated•16 years ago
|
Product: Core → Core Graveyard
Comment 145•16 years ago
|
||
the third patch from the top works well with 1.5.0.12 final (17.26 KB)
only required one minor correction and that was all
Comment 146•13 years ago
|
||
We now bundle a much later version of Freetype (2.4.6) so I believe this has been fixed.
Status: ASSIGNED → RESOLVED
Closed: 13 years ago
Resolution: --- → FIXED
You need to log in
before you can comment on or make changes to this bug.
Description
•