summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Kabaev <kan@FreeBSD.org>2003-08-12 15:32:13 +0000
committerAlexander Kabaev <kan@FreeBSD.org>2003-08-12 15:32:13 +0000
commit55fc6b08a75996e09c1ef2ce416290fc4ba2091b (patch)
tree32083d29d0ef4ae5f39a4e1972c848071089bd42
parentRemove libpanel. It has sered us well, but now that the GNOME 1.4 desktop (diff)
Restore the patch to stop mozilla from crashing on some russian sites.
Notes
Notes: svn path=/head/; revision=86833
Diffstat (limited to '')
-rw-r--r--www/firefox-devel/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp57
-rw-r--r--www/firefox-esr/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp57
-rw-r--r--www/firefox/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp57
-rw-r--r--www/firefox10/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp57
-rw-r--r--www/firefox15/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp57
-rw-r--r--www/firefox3-devel/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp57
-rw-r--r--www/firefox35/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp57
-rw-r--r--www/firefox36/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp57
-rw-r--r--www/flock/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp57
-rw-r--r--www/mozilla-firebird/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp57
10 files changed, 570 insertions, 0 deletions
diff --git a/www/firefox-devel/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp b/www/firefox-devel/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp
new file mode 100644
index 000000000000..0b0e08247101
--- /dev/null
+++ b/www/firefox-devel/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp
@@ -0,0 +1,57 @@
+--- gfx/src/gtk/nsFontMetricsXft.cpp.save Thu Aug 7 12:14:49 2003
++++ gfx/src/gtk/nsFontMetricsXft.cpp Thu Aug 7 12:33:45 2003
+@@ -106,6 +106,7 @@
+ FcPattern *mPattern;
+ FcPattern *mFontName;
+ FcCharSet *mCharset;
++ int mNotXft;
+ };
+
+ class nsFontXftInfo;
+@@ -1051,7 +1052,7 @@
+ // font in our loaded list that supports the character
+ for (PRInt32 i = 0, end = mLoadedFonts.Count(); i < end; ++i) {
+ nsFontXft *font = (nsFontXft *)mLoadedFonts.ElementAt(i);
+- if (font->HasChar(PRUint32(aChar)))
++ if (font->HasChar(PRUint32(aChar)) && font->GetXftFont())
+ return font;
+ }
+
+@@ -1492,7 +1493,7 @@
+ // this character.
+ for (PRInt32 j = 0, end = mLoadedFonts.Count(); j < end; ++j) {
+ font = (nsFontXft *)mLoadedFonts.ElementAt(j);
+- if (font->HasChar(c)) {
++ if (font->HasChar(c) && font->GetXftFont()) {
+ currFont = font;
+ goto FoundFont; // for speed -- avoid "if" statement
+ }
+@@ -1922,6 +1923,7 @@
+ FcPatternReference(mFontName);
+
+ mXftFont = nsnull;
++ mNotXft = 0;
+
+ // set up our charset
+ mCharset = nsnull;
+@@ -1948,7 +1950,7 @@
+ XftFont *
+ nsFontXft::GetXftFont(void)
+ {
+- if (!mXftFont) {
++ if (!mXftFont && !mNotXft) {
+ FcPattern *pat = FcFontRenderPrepare(0, mPattern, mFontName);
+ if (!pat)
+ return nsnull;
+@@ -1967,8 +1969,10 @@
+ FcPatternDel(pat, FC_SPACING);
+
+ mXftFont = XftFontOpenPattern(GDK_DISPLAY(), pat);
+- if (!mXftFont)
++ if (!mXftFont) {
+ FcPatternDestroy(pat);
++ mNotXft = 1;
++ }
+ }
+
+ return mXftFont;
diff --git a/www/firefox-esr/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp b/www/firefox-esr/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp
new file mode 100644
index 000000000000..0b0e08247101
--- /dev/null
+++ b/www/firefox-esr/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp
@@ -0,0 +1,57 @@
+--- gfx/src/gtk/nsFontMetricsXft.cpp.save Thu Aug 7 12:14:49 2003
++++ gfx/src/gtk/nsFontMetricsXft.cpp Thu Aug 7 12:33:45 2003
+@@ -106,6 +106,7 @@
+ FcPattern *mPattern;
+ FcPattern *mFontName;
+ FcCharSet *mCharset;
++ int mNotXft;
+ };
+
+ class nsFontXftInfo;
+@@ -1051,7 +1052,7 @@
+ // font in our loaded list that supports the character
+ for (PRInt32 i = 0, end = mLoadedFonts.Count(); i < end; ++i) {
+ nsFontXft *font = (nsFontXft *)mLoadedFonts.ElementAt(i);
+- if (font->HasChar(PRUint32(aChar)))
++ if (font->HasChar(PRUint32(aChar)) && font->GetXftFont())
+ return font;
+ }
+
+@@ -1492,7 +1493,7 @@
+ // this character.
+ for (PRInt32 j = 0, end = mLoadedFonts.Count(); j < end; ++j) {
+ font = (nsFontXft *)mLoadedFonts.ElementAt(j);
+- if (font->HasChar(c)) {
++ if (font->HasChar(c) && font->GetXftFont()) {
+ currFont = font;
+ goto FoundFont; // for speed -- avoid "if" statement
+ }
+@@ -1922,6 +1923,7 @@
+ FcPatternReference(mFontName);
+
+ mXftFont = nsnull;
++ mNotXft = 0;
+
+ // set up our charset
+ mCharset = nsnull;
+@@ -1948,7 +1950,7 @@
+ XftFont *
+ nsFontXft::GetXftFont(void)
+ {
+- if (!mXftFont) {
++ if (!mXftFont && !mNotXft) {
+ FcPattern *pat = FcFontRenderPrepare(0, mPattern, mFontName);
+ if (!pat)
+ return nsnull;
+@@ -1967,8 +1969,10 @@
+ FcPatternDel(pat, FC_SPACING);
+
+ mXftFont = XftFontOpenPattern(GDK_DISPLAY(), pat);
+- if (!mXftFont)
++ if (!mXftFont) {
+ FcPatternDestroy(pat);
++ mNotXft = 1;
++ }
+ }
+
+ return mXftFont;
diff --git a/www/firefox/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp b/www/firefox/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp
new file mode 100644
index 000000000000..0b0e08247101
--- /dev/null
+++ b/www/firefox/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp
@@ -0,0 +1,57 @@
+--- gfx/src/gtk/nsFontMetricsXft.cpp.save Thu Aug 7 12:14:49 2003
++++ gfx/src/gtk/nsFontMetricsXft.cpp Thu Aug 7 12:33:45 2003
+@@ -106,6 +106,7 @@
+ FcPattern *mPattern;
+ FcPattern *mFontName;
+ FcCharSet *mCharset;
++ int mNotXft;
+ };
+
+ class nsFontXftInfo;
+@@ -1051,7 +1052,7 @@
+ // font in our loaded list that supports the character
+ for (PRInt32 i = 0, end = mLoadedFonts.Count(); i < end; ++i) {
+ nsFontXft *font = (nsFontXft *)mLoadedFonts.ElementAt(i);
+- if (font->HasChar(PRUint32(aChar)))
++ if (font->HasChar(PRUint32(aChar)) && font->GetXftFont())
+ return font;
+ }
+
+@@ -1492,7 +1493,7 @@
+ // this character.
+ for (PRInt32 j = 0, end = mLoadedFonts.Count(); j < end; ++j) {
+ font = (nsFontXft *)mLoadedFonts.ElementAt(j);
+- if (font->HasChar(c)) {
++ if (font->HasChar(c) && font->GetXftFont()) {
+ currFont = font;
+ goto FoundFont; // for speed -- avoid "if" statement
+ }
+@@ -1922,6 +1923,7 @@
+ FcPatternReference(mFontName);
+
+ mXftFont = nsnull;
++ mNotXft = 0;
+
+ // set up our charset
+ mCharset = nsnull;
+@@ -1948,7 +1950,7 @@
+ XftFont *
+ nsFontXft::GetXftFont(void)
+ {
+- if (!mXftFont) {
++ if (!mXftFont && !mNotXft) {
+ FcPattern *pat = FcFontRenderPrepare(0, mPattern, mFontName);
+ if (!pat)
+ return nsnull;
+@@ -1967,8 +1969,10 @@
+ FcPatternDel(pat, FC_SPACING);
+
+ mXftFont = XftFontOpenPattern(GDK_DISPLAY(), pat);
+- if (!mXftFont)
++ if (!mXftFont) {
+ FcPatternDestroy(pat);
++ mNotXft = 1;
++ }
+ }
+
+ return mXftFont;
diff --git a/www/firefox10/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp b/www/firefox10/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp
new file mode 100644
index 000000000000..0b0e08247101
--- /dev/null
+++ b/www/firefox10/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp
@@ -0,0 +1,57 @@
+--- gfx/src/gtk/nsFontMetricsXft.cpp.save Thu Aug 7 12:14:49 2003
++++ gfx/src/gtk/nsFontMetricsXft.cpp Thu Aug 7 12:33:45 2003
+@@ -106,6 +106,7 @@
+ FcPattern *mPattern;
+ FcPattern *mFontName;
+ FcCharSet *mCharset;
++ int mNotXft;
+ };
+
+ class nsFontXftInfo;
+@@ -1051,7 +1052,7 @@
+ // font in our loaded list that supports the character
+ for (PRInt32 i = 0, end = mLoadedFonts.Count(); i < end; ++i) {
+ nsFontXft *font = (nsFontXft *)mLoadedFonts.ElementAt(i);
+- if (font->HasChar(PRUint32(aChar)))
++ if (font->HasChar(PRUint32(aChar)) && font->GetXftFont())
+ return font;
+ }
+
+@@ -1492,7 +1493,7 @@
+ // this character.
+ for (PRInt32 j = 0, end = mLoadedFonts.Count(); j < end; ++j) {
+ font = (nsFontXft *)mLoadedFonts.ElementAt(j);
+- if (font->HasChar(c)) {
++ if (font->HasChar(c) && font->GetXftFont()) {
+ currFont = font;
+ goto FoundFont; // for speed -- avoid "if" statement
+ }
+@@ -1922,6 +1923,7 @@
+ FcPatternReference(mFontName);
+
+ mXftFont = nsnull;
++ mNotXft = 0;
+
+ // set up our charset
+ mCharset = nsnull;
+@@ -1948,7 +1950,7 @@
+ XftFont *
+ nsFontXft::GetXftFont(void)
+ {
+- if (!mXftFont) {
++ if (!mXftFont && !mNotXft) {
+ FcPattern *pat = FcFontRenderPrepare(0, mPattern, mFontName);
+ if (!pat)
+ return nsnull;
+@@ -1967,8 +1969,10 @@
+ FcPatternDel(pat, FC_SPACING);
+
+ mXftFont = XftFontOpenPattern(GDK_DISPLAY(), pat);
+- if (!mXftFont)
++ if (!mXftFont) {
+ FcPatternDestroy(pat);
++ mNotXft = 1;
++ }
+ }
+
+ return mXftFont;
diff --git a/www/firefox15/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp b/www/firefox15/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp
new file mode 100644
index 000000000000..0b0e08247101
--- /dev/null
+++ b/www/firefox15/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp
@@ -0,0 +1,57 @@
+--- gfx/src/gtk/nsFontMetricsXft.cpp.save Thu Aug 7 12:14:49 2003
++++ gfx/src/gtk/nsFontMetricsXft.cpp Thu Aug 7 12:33:45 2003
+@@ -106,6 +106,7 @@
+ FcPattern *mPattern;
+ FcPattern *mFontName;
+ FcCharSet *mCharset;
++ int mNotXft;
+ };
+
+ class nsFontXftInfo;
+@@ -1051,7 +1052,7 @@
+ // font in our loaded list that supports the character
+ for (PRInt32 i = 0, end = mLoadedFonts.Count(); i < end; ++i) {
+ nsFontXft *font = (nsFontXft *)mLoadedFonts.ElementAt(i);
+- if (font->HasChar(PRUint32(aChar)))
++ if (font->HasChar(PRUint32(aChar)) && font->GetXftFont())
+ return font;
+ }
+
+@@ -1492,7 +1493,7 @@
+ // this character.
+ for (PRInt32 j = 0, end = mLoadedFonts.Count(); j < end; ++j) {
+ font = (nsFontXft *)mLoadedFonts.ElementAt(j);
+- if (font->HasChar(c)) {
++ if (font->HasChar(c) && font->GetXftFont()) {
+ currFont = font;
+ goto FoundFont; // for speed -- avoid "if" statement
+ }
+@@ -1922,6 +1923,7 @@
+ FcPatternReference(mFontName);
+
+ mXftFont = nsnull;
++ mNotXft = 0;
+
+ // set up our charset
+ mCharset = nsnull;
+@@ -1948,7 +1950,7 @@
+ XftFont *
+ nsFontXft::GetXftFont(void)
+ {
+- if (!mXftFont) {
++ if (!mXftFont && !mNotXft) {
+ FcPattern *pat = FcFontRenderPrepare(0, mPattern, mFontName);
+ if (!pat)
+ return nsnull;
+@@ -1967,8 +1969,10 @@
+ FcPatternDel(pat, FC_SPACING);
+
+ mXftFont = XftFontOpenPattern(GDK_DISPLAY(), pat);
+- if (!mXftFont)
++ if (!mXftFont) {
+ FcPatternDestroy(pat);
++ mNotXft = 1;
++ }
+ }
+
+ return mXftFont;
diff --git a/www/firefox3-devel/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp b/www/firefox3-devel/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp
new file mode 100644
index 000000000000..0b0e08247101
--- /dev/null
+++ b/www/firefox3-devel/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp
@@ -0,0 +1,57 @@
+--- gfx/src/gtk/nsFontMetricsXft.cpp.save Thu Aug 7 12:14:49 2003
++++ gfx/src/gtk/nsFontMetricsXft.cpp Thu Aug 7 12:33:45 2003
+@@ -106,6 +106,7 @@
+ FcPattern *mPattern;
+ FcPattern *mFontName;
+ FcCharSet *mCharset;
++ int mNotXft;
+ };
+
+ class nsFontXftInfo;
+@@ -1051,7 +1052,7 @@
+ // font in our loaded list that supports the character
+ for (PRInt32 i = 0, end = mLoadedFonts.Count(); i < end; ++i) {
+ nsFontXft *font = (nsFontXft *)mLoadedFonts.ElementAt(i);
+- if (font->HasChar(PRUint32(aChar)))
++ if (font->HasChar(PRUint32(aChar)) && font->GetXftFont())
+ return font;
+ }
+
+@@ -1492,7 +1493,7 @@
+ // this character.
+ for (PRInt32 j = 0, end = mLoadedFonts.Count(); j < end; ++j) {
+ font = (nsFontXft *)mLoadedFonts.ElementAt(j);
+- if (font->HasChar(c)) {
++ if (font->HasChar(c) && font->GetXftFont()) {
+ currFont = font;
+ goto FoundFont; // for speed -- avoid "if" statement
+ }
+@@ -1922,6 +1923,7 @@
+ FcPatternReference(mFontName);
+
+ mXftFont = nsnull;
++ mNotXft = 0;
+
+ // set up our charset
+ mCharset = nsnull;
+@@ -1948,7 +1950,7 @@
+ XftFont *
+ nsFontXft::GetXftFont(void)
+ {
+- if (!mXftFont) {
++ if (!mXftFont && !mNotXft) {
+ FcPattern *pat = FcFontRenderPrepare(0, mPattern, mFontName);
+ if (!pat)
+ return nsnull;
+@@ -1967,8 +1969,10 @@
+ FcPatternDel(pat, FC_SPACING);
+
+ mXftFont = XftFontOpenPattern(GDK_DISPLAY(), pat);
+- if (!mXftFont)
++ if (!mXftFont) {
+ FcPatternDestroy(pat);
++ mNotXft = 1;
++ }
+ }
+
+ return mXftFont;
diff --git a/www/firefox35/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp b/www/firefox35/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp
new file mode 100644
index 000000000000..0b0e08247101
--- /dev/null
+++ b/www/firefox35/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp
@@ -0,0 +1,57 @@
+--- gfx/src/gtk/nsFontMetricsXft.cpp.save Thu Aug 7 12:14:49 2003
++++ gfx/src/gtk/nsFontMetricsXft.cpp Thu Aug 7 12:33:45 2003
+@@ -106,6 +106,7 @@
+ FcPattern *mPattern;
+ FcPattern *mFontName;
+ FcCharSet *mCharset;
++ int mNotXft;
+ };
+
+ class nsFontXftInfo;
+@@ -1051,7 +1052,7 @@
+ // font in our loaded list that supports the character
+ for (PRInt32 i = 0, end = mLoadedFonts.Count(); i < end; ++i) {
+ nsFontXft *font = (nsFontXft *)mLoadedFonts.ElementAt(i);
+- if (font->HasChar(PRUint32(aChar)))
++ if (font->HasChar(PRUint32(aChar)) && font->GetXftFont())
+ return font;
+ }
+
+@@ -1492,7 +1493,7 @@
+ // this character.
+ for (PRInt32 j = 0, end = mLoadedFonts.Count(); j < end; ++j) {
+ font = (nsFontXft *)mLoadedFonts.ElementAt(j);
+- if (font->HasChar(c)) {
++ if (font->HasChar(c) && font->GetXftFont()) {
+ currFont = font;
+ goto FoundFont; // for speed -- avoid "if" statement
+ }
+@@ -1922,6 +1923,7 @@
+ FcPatternReference(mFontName);
+
+ mXftFont = nsnull;
++ mNotXft = 0;
+
+ // set up our charset
+ mCharset = nsnull;
+@@ -1948,7 +1950,7 @@
+ XftFont *
+ nsFontXft::GetXftFont(void)
+ {
+- if (!mXftFont) {
++ if (!mXftFont && !mNotXft) {
+ FcPattern *pat = FcFontRenderPrepare(0, mPattern, mFontName);
+ if (!pat)
+ return nsnull;
+@@ -1967,8 +1969,10 @@
+ FcPatternDel(pat, FC_SPACING);
+
+ mXftFont = XftFontOpenPattern(GDK_DISPLAY(), pat);
+- if (!mXftFont)
++ if (!mXftFont) {
+ FcPatternDestroy(pat);
++ mNotXft = 1;
++ }
+ }
+
+ return mXftFont;
diff --git a/www/firefox36/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp b/www/firefox36/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp
new file mode 100644
index 000000000000..0b0e08247101
--- /dev/null
+++ b/www/firefox36/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp
@@ -0,0 +1,57 @@
+--- gfx/src/gtk/nsFontMetricsXft.cpp.save Thu Aug 7 12:14:49 2003
++++ gfx/src/gtk/nsFontMetricsXft.cpp Thu Aug 7 12:33:45 2003
+@@ -106,6 +106,7 @@
+ FcPattern *mPattern;
+ FcPattern *mFontName;
+ FcCharSet *mCharset;
++ int mNotXft;
+ };
+
+ class nsFontXftInfo;
+@@ -1051,7 +1052,7 @@
+ // font in our loaded list that supports the character
+ for (PRInt32 i = 0, end = mLoadedFonts.Count(); i < end; ++i) {
+ nsFontXft *font = (nsFontXft *)mLoadedFonts.ElementAt(i);
+- if (font->HasChar(PRUint32(aChar)))
++ if (font->HasChar(PRUint32(aChar)) && font->GetXftFont())
+ return font;
+ }
+
+@@ -1492,7 +1493,7 @@
+ // this character.
+ for (PRInt32 j = 0, end = mLoadedFonts.Count(); j < end; ++j) {
+ font = (nsFontXft *)mLoadedFonts.ElementAt(j);
+- if (font->HasChar(c)) {
++ if (font->HasChar(c) && font->GetXftFont()) {
+ currFont = font;
+ goto FoundFont; // for speed -- avoid "if" statement
+ }
+@@ -1922,6 +1923,7 @@
+ FcPatternReference(mFontName);
+
+ mXftFont = nsnull;
++ mNotXft = 0;
+
+ // set up our charset
+ mCharset = nsnull;
+@@ -1948,7 +1950,7 @@
+ XftFont *
+ nsFontXft::GetXftFont(void)
+ {
+- if (!mXftFont) {
++ if (!mXftFont && !mNotXft) {
+ FcPattern *pat = FcFontRenderPrepare(0, mPattern, mFontName);
+ if (!pat)
+ return nsnull;
+@@ -1967,8 +1969,10 @@
+ FcPatternDel(pat, FC_SPACING);
+
+ mXftFont = XftFontOpenPattern(GDK_DISPLAY(), pat);
+- if (!mXftFont)
++ if (!mXftFont) {
+ FcPatternDestroy(pat);
++ mNotXft = 1;
++ }
+ }
+
+ return mXftFont;
diff --git a/www/flock/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp b/www/flock/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp
new file mode 100644
index 000000000000..0b0e08247101
--- /dev/null
+++ b/www/flock/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp
@@ -0,0 +1,57 @@
+--- gfx/src/gtk/nsFontMetricsXft.cpp.save Thu Aug 7 12:14:49 2003
++++ gfx/src/gtk/nsFontMetricsXft.cpp Thu Aug 7 12:33:45 2003
+@@ -106,6 +106,7 @@
+ FcPattern *mPattern;
+ FcPattern *mFontName;
+ FcCharSet *mCharset;
++ int mNotXft;
+ };
+
+ class nsFontXftInfo;
+@@ -1051,7 +1052,7 @@
+ // font in our loaded list that supports the character
+ for (PRInt32 i = 0, end = mLoadedFonts.Count(); i < end; ++i) {
+ nsFontXft *font = (nsFontXft *)mLoadedFonts.ElementAt(i);
+- if (font->HasChar(PRUint32(aChar)))
++ if (font->HasChar(PRUint32(aChar)) && font->GetXftFont())
+ return font;
+ }
+
+@@ -1492,7 +1493,7 @@
+ // this character.
+ for (PRInt32 j = 0, end = mLoadedFonts.Count(); j < end; ++j) {
+ font = (nsFontXft *)mLoadedFonts.ElementAt(j);
+- if (font->HasChar(c)) {
++ if (font->HasChar(c) && font->GetXftFont()) {
+ currFont = font;
+ goto FoundFont; // for speed -- avoid "if" statement
+ }
+@@ -1922,6 +1923,7 @@
+ FcPatternReference(mFontName);
+
+ mXftFont = nsnull;
++ mNotXft = 0;
+
+ // set up our charset
+ mCharset = nsnull;
+@@ -1948,7 +1950,7 @@
+ XftFont *
+ nsFontXft::GetXftFont(void)
+ {
+- if (!mXftFont) {
++ if (!mXftFont && !mNotXft) {
+ FcPattern *pat = FcFontRenderPrepare(0, mPattern, mFontName);
+ if (!pat)
+ return nsnull;
+@@ -1967,8 +1969,10 @@
+ FcPatternDel(pat, FC_SPACING);
+
+ mXftFont = XftFontOpenPattern(GDK_DISPLAY(), pat);
+- if (!mXftFont)
++ if (!mXftFont) {
+ FcPatternDestroy(pat);
++ mNotXft = 1;
++ }
+ }
+
+ return mXftFont;
diff --git a/www/mozilla-firebird/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp b/www/mozilla-firebird/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp
new file mode 100644
index 000000000000..0b0e08247101
--- /dev/null
+++ b/www/mozilla-firebird/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp
@@ -0,0 +1,57 @@
+--- gfx/src/gtk/nsFontMetricsXft.cpp.save Thu Aug 7 12:14:49 2003
++++ gfx/src/gtk/nsFontMetricsXft.cpp Thu Aug 7 12:33:45 2003
+@@ -106,6 +106,7 @@
+ FcPattern *mPattern;
+ FcPattern *mFontName;
+ FcCharSet *mCharset;
++ int mNotXft;
+ };
+
+ class nsFontXftInfo;
+@@ -1051,7 +1052,7 @@
+ // font in our loaded list that supports the character
+ for (PRInt32 i = 0, end = mLoadedFonts.Count(); i < end; ++i) {
+ nsFontXft *font = (nsFontXft *)mLoadedFonts.ElementAt(i);
+- if (font->HasChar(PRUint32(aChar)))
++ if (font->HasChar(PRUint32(aChar)) && font->GetXftFont())
+ return font;
+ }
+
+@@ -1492,7 +1493,7 @@
+ // this character.
+ for (PRInt32 j = 0, end = mLoadedFonts.Count(); j < end; ++j) {
+ font = (nsFontXft *)mLoadedFonts.ElementAt(j);
+- if (font->HasChar(c)) {
++ if (font->HasChar(c) && font->GetXftFont()) {
+ currFont = font;
+ goto FoundFont; // for speed -- avoid "if" statement
+ }
+@@ -1922,6 +1923,7 @@
+ FcPatternReference(mFontName);
+
+ mXftFont = nsnull;
++ mNotXft = 0;
+
+ // set up our charset
+ mCharset = nsnull;
+@@ -1948,7 +1950,7 @@
+ XftFont *
+ nsFontXft::GetXftFont(void)
+ {
+- if (!mXftFont) {
++ if (!mXftFont && !mNotXft) {
+ FcPattern *pat = FcFontRenderPrepare(0, mPattern, mFontName);
+ if (!pat)
+ return nsnull;
+@@ -1967,8 +1969,10 @@
+ FcPatternDel(pat, FC_SPACING);
+
+ mXftFont = XftFontOpenPattern(GDK_DISPLAY(), pat);
+- if (!mXftFont)
++ if (!mXftFont) {
+ FcPatternDestroy(pat);
++ mNotXft = 1;
++ }
+ }
+
+ return mXftFont;