Closed Bug 147743 Opened 22 years ago Closed 22 years ago

Xprint prints some (non-scaleable) bitmap fonts far too small

Categories

(Core Graveyard :: Printing: Xprint, defect, P1)

All
Linux
defect

Tracking

(Not tracked)

RESOLVED FIXED
mozilla1.0.1

People

(Reporter: roland.mainz, Assigned: roland.mainz)

References

()

Details

(Keywords: regression)

Attachments

(5 files, 7 obsolete files)

113.40 KB, image/gif
Details
115.87 KB, image/gif
Details
382.93 KB, text/plain
Details
820.90 KB, application/postscript
Details
13.17 KB, patch
bstell
: review+
dveditz
: superreview+
jesup
: approval+
Details | Diff | Splinter Review
Xprint prints some bitmap fonts far too small.

The root of this evil problem seems to be that we have a hardcoded font ban in
our code which tries to "ban" ugly-looking bitmap fonts.
I used the following fonts for Xprt:
/home/gisburn/tmp/Type1_iso8859-8/Type1   # hebrew
/home/gisburn/tmp/Type1_koi8-r/Type1	  # cyrillic (koi8-r)
/home/gisburn/mathml_fonts/wolfram/Type1  # mathml fonts 1
/home/gisburn/mathml_fonts/tex_cmps/Type1 # mathml fonts 1
/usr/openwin/lib/X11/fonts/Type1	  # misc PS Type1 fonts
/home/gisburn/tmp/arabic		  # iso10646-1 fonts from
http://crl.nmsu.edu/~mleisher/cu.html
Taking myself...
Assignee: katakai → Roland.Mainz
QA Contact: Roland.Mainz → katakai
Status: NEW → ASSIGNED
Target Milestone: --- → mozilla1.0
Comment on attachment 85354 [details] [diff] [review]
Workaround for 2002-05-24-08-trunk (relaxes the ban little bit)

Sorry... that was the wrong patch (however it has nearly the same effect... :)
Attachment #85354 - Attachment is obsolete: true
Attachment #85354 - Flags: needs-work+
I am adding a new rule to the hardcoded font which limits the ban to Xserver
screens running at resolutions lower than 200 DPI.
Maybe we should file a bug to remove the ban and add an another list of fonts
which gets searched in |nsFontMetrics{Xlib|GTK}::FindFont()| after
|FindAnyFont()|. We could put all fonts in the matching list which do not look
"good" but are the only ones available for a matching locale (like arabic/thai
etc. in the example here).
Requesting r=/sr= for the current patch, I'll file a RFE for the idea in comment
#7 later...
Keywords: patch, review
Keywords: regression
Keywords: mozilla1.0
Priority: -- → P1
Roland: did you test that the fonts banned by the existing hack are still
banned with the hack of the hack?
My problem in bug 140673 can not be solved by this patch.
(Also the patch of bug 129666 is applied)

I found the problem happens when I choose -dt- fonts at
font prefs. here is the exact steps to reproduce,

1. start Xprt with the following font path,

/usr/openwin/lib/X11/fonts/F3
/usr/openwin/lib/X11/fonts/misc
/usr/openwin/lib/X11/fonts/Type1
/usr/openwin/lib/locale/iso_8859_5/X11/fonts/75dpi

2. Start Mozilla in ru_RU.ISO8859-5 locale
3. Set font for Russian as lucidasans-iso8859-5
   Try to print via Xprint
   Good!!

4. Set font for Russian as -dt-...-iso8859-5
   Try to print via Xprint
   Small!!

So the problem happens on my environment when
we use alised bitmap fonts like -dt-...-iso8859-5.
The same problem happens in all locales and all
characters. We're planning to define -dt- fonts
by defaults for Solaris Netscape. So this bug
is really serious.

Brian Stell wrote:
> did you test that the fonts banned by the existing hack are still
> banned with the hack of the hack?

Yes, they are still banned on normal displays since the hardcoded ban only gets
deactivated on Xservers with resolutions greater than 200 DPI.
Masaki Katakai wrote:
> My problem in bug 140673 can not be solved by this patch.
> (Also the patch of bug 129666 is applied)
> 
> I found the problem happens when I choose -dt- fonts at
> font prefs. here is the exact steps to reproduce,
> 
> 1. start Xprt with the following font path,
> 
> /usr/openwin/lib/X11/fonts/F3
> /usr/openwin/lib/X11/fonts/misc
> /usr/openwin/lib/X11/fonts/Type1
> /usr/openwin/lib/locale/iso_8859_5/X11/fonts/75dpi
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

BTW: In real life we should use the PS Type1 fonts
(/usr/openwin/lib/locale/iso_8859_5/X11/fonts/Type1) here instead of the 75 DPI
bitmap fonts ... :)

> 2. Start Mozilla in ru_RU.ISO8859-5 locale
> 3. Set font for Russian as lucidasans-iso8859-5
>    Try to print via Xprint
>    Good!!
> 
> 4. Set font for Russian as -dt-...-iso8859-5
>    Try to print via Xprint
>    Small!!

;-(

> So the problem happens on my environment when
> we use alised bitmap fonts like -dt-...-iso8859-5.
> The same problem happens in all locales and all
> characters. We're planning to define -dt- fonts
> by defaults for Solaris Netscape. So this bug
> is really serious.

My feeling is that we need the X font banning code here to _ban_ the "-dt-*"
aliases from the Xprt display... I'll file a patch for that...
I assume I figured out what is going wrong - the whole bitmap-font-scaling code
is "gone" (I assume it has been "replaced" by the AASB code).
katakai
Can you test wither this patch fixes your problem, please
> I assume I figured out what is going wrong - the whole bitmap-font-scaling 
> code is "gone" (I assume it has been "replaced" by the AASB code).

To my knowledge the bitmap scaling code was not deleted when AASB was added.
AASB was just one more layer.

Did you actually find something "gone"?
Brian Stell wrote:
> > I assume I figured out what is going wrong - the whole bitmap-font-scaling 
> > code is "gone" (I assume it has been "replaced" by the AASB code).
>
> To my knowledge the bitmap scaling code was not deleted when AASB was added.
> AASB was just one more layer.

I agree with you... I searched the code up and down nearly half a day, tracking
all checkins in the last months...

> Did you actually find something "gone"?

Well, I could swear that it worked long long ago - but maybe I am wrong here...
I can now reproduce this issue on my box.
For iso-8859-1 simply add these lines to ~/.mozilla/default/*/prefs.js and you
get only (super-small) bitmap fonts in the printout:
-- snip --
user_pref("font.name.cursive.x-western", "dt-interface user-iso8859-1");
user_pref("font.name.fantasy.x-western", "dt-application-iso8859-1");
user_pref("font.name.monospace.x-western", "dt-interface system-iso8859-1");
user_pref("font.name.sans-serif.x-western", "dt-interface system-iso8859-1");
user_pref("font.name.serif.x-western", "dt-application-iso8859-1");
-- snip --
For reference: List of att "-dt-*"-aliases on Solaris 2.7

(I created the list via '% cat $(find /usr/openwin/lib/locale -name
fonts.alias) | fgrep "dt-" | sort | uniq')
Attachment #85861 - Attachment description: For reference: List of att "-dt-*"-aliases on Solaris 2.7 → For reference: List of all "-dt-*"-aliases on Solaris 2.7
Comment on attachment 85504 [details] [diff] [review]
Test patch which makes all bitmap fonts "scaleable"

The patch fixes the problem - but in an "unexpected" way:

I am getting tons of:
-- snip --
nsFontXlib::LoadFont(): loading of font
'-dt-application-medium-r-normal-sans-45-*-*-*-p-*-iso8859-5' failed
nsFontXlib::LoadFont(): loading of font
'-dt-application-medium-r-normal-sans-54-*-*-*-p-*-iso8859-5' failed
nsFontXlib::LoadFont(): loading of font
'-dt-application-bold-r-normal-serif-54-*-*-*-m-*-iso8859-5' failed
nsFontXlib::LoadFont(): loading of font
'-dt-application-bold-r-normal-serif-108-*-*-*-m-*-iso8859-5' failed
nsFontXlib::LoadFont(): loading of font
'-dt-application-bold-i-normal-sans-54-*-*-*-p-*-iso8859-5' failed
nsFontXlib::LoadFont(): loading of font
'-dt-application-bold-r-normal-serif-81-*-*-*-m-*-iso8859-5' failed
nsFontXlib::LoadFont(): loading of font
'-dt-application-bold-r-normal-serif-64-*-*-*-m-*-iso8859-5' failed
nsFontXlib::LoadFont(): loading of font
'-dt-application-medium-i-normal-sans-54-*-*-*-p-*-iso8859-5' failed
nsFontXlib::LoadFont(): loading of font
'-dt-application-medium-r-normal-sans-40-*-*-*-p-*-iso8859-5' failed
-- snip --
when I print with this patch...
Attachment #85504 - Flags: needs-work+
fork()'ed two spinn-offs to get the CDE/Solaris-specific issue with the "-dt-*"
font aliases under control:
- [Bug 148468] Xprint-specific X font banning code is broken
- [Bug 148470] Ban "-dt-*" (bitmap!!) fonts from Xprint
Depends on: 148468, 148470
The remaining issue is (AFAIK, please correct me if I am wrong):
How can we get a scaled version of a bitmap font if the system does not provide
one itself (via XListFonts()) ?

Can we modify nsFontMetrics*::PickASizeAndLoad() to create a bitmap scaled font
from an exiting non-scaled bitmap font if there is noone which matches the size
requirements ?
Attached patch Patch for 2002-05-31-08-trunk (obsolete) — Splinter Review
This patch does the following things:
1. If there is a canonical pixel scale > 1.0 (this is the case for printer
devices) we create two fonts entries per bitmap font: One entry for the
original size and one entry where the same font has been scaled up using the
pixel scaler value from the device
2. |PickASizeAndLoad()| will now refuse to use bitmap fonts when the resulting
font is less then two times smaller than the requested size

The combination of [1] and [2] seems to be sufficient to prevent that we'll get
bitmap fonts which are far too small for the destination device.
Attachment #85357 - Attachment is obsolete: true
Attachment #85504 - Attachment is obsolete: true
Attachment #85949 - Attachment is obsolete: true
+      if (bitmap_size < (mPixelSize/2)) {
+        if (!aStretch->mScalable)
+          return nsnull;
+      }

Does this say give up if we only have bitmaps and the nearest is less than 1/2 of
desired?

-NodeAddSize(nsFontStretchXlib* aStretch, int aSize, const char *aName,
-        nsFontCharSetInfoXlib* aCharSetInfo)
+NodeAddSize(nsFontStretchXlib* aStretch, 
+            int aPixelSize, int aPointSize,
+            float scaler,
+            int aResX,      int aResY,
+            const char *aDashFoundry, const char *aFamily, 
+            const char *aWeight,      const char * aSlant, 
+            const char *aWidth,       const char *aStyle, 
+            const char *aSpacing,     const char *aCharSet,
+            nsFontCharSetInfoXlib* aCharSetInfo)

Would you expound on the advantage of passing in Foundry, Family, Weight, Slant, 
Width, Style, Spacing, and Charset as separate values instead of in a string?

+    int pixels = atoi(pixelSize),
+        points = atoi(pointSize);

How about using a semi colon here to reduce possible confusion?

Brian Stell wrote:
> +      if (bitmap_size < (mPixelSize/2)) {
> +        if (!aStretch->mScalable)
> +          return nsnull;
> +      }
> 
> Does this say give up if we only have bitmaps and the nearest is
> less than 1/2 of desired?

Yes - this is more or less a "safeguard" to avoid that - for example - a 12pixel
font is used where a 36pixel font was requested... however this safeguard should
never "kick-in" since we should always have (in theory :) fixed-size-bitmap-font
entries (see [2] below) with the correct size (assuming we use the same font
path on both Xprt(=Xprint Xserver) and main Xserver).

> -NodeAddSize(nsFontStretchXlib* aStretch, int aSize, const char *aName,
> -        nsFontCharSetInfoXlib* aCharSetInfo)
> +NodeAddSize(nsFontStretchXlib* aStretch, 
> +            int aPixelSize, int aPointSize,
> +            float scaler,
> +            int aResX,      int aResY,
> +            const char *aDashFoundry, const char *aFamily, 
> +            const char *aWeight,      const char * aSlant, 
> +            const char *aWidth,       const char *aStyle, 
> +            const char *aSpacing,     const char *aCharSet,
> +            nsFontCharSetInfoXlib* aCharSetInfo)
> 
> Would you expound on the advantage of passing in Foundry, Family,
> Weight, Slant,  Width, Style, Spacing, and Charset as separate
> values instead of in a string?

Well, the idea of this patch is following:
Since the nsIDeviceContext member mCanonicalPixelScale in print device contexts
describes the DPI difference between the main nsIDeviceContext and the print
nsIDeviceContext (for example: if main display has 100 DPI and print display is
300 DPI |aDevice->GetCanonicalPixelScale()| would return |3.0| as scaler value)
the patch now creates two font entries for each bitmap font:
1. one entry for the normal bitmap font
2. one entry for a scaled version of the bitmap font (orginal_bitmap_font_size *
mCanonicalPixelScale)
Note that the entry [2] is not treated as bitmap scaleable font (we are using
|NodeAddSize()| and not |NodeAddScaleable()| (which answers your question about
all the single args for |NodeAddSize()| - we have to build the XLFD name "by
hand" for those fixed-size-like bitmap fonts)), we still treat it as fixed size
bitmap font to make sure that the fontmetrics system in the print device context
makes similar choices as the fontmetrics system on the main display (that's why
I am passing all those args).

This is a hack... but hopefully a "good" hack which tries to avoid breaking
existing things (I fear that just making all bitmap fonts scaleable may cause
much trouble) ...
Attachment #86500 - Attachment is patch: false
Attachment #86500 - Attachment mime type: text/plain → application/postscript
Updating sample postscript job, I forgot to add japanese fonts to Xprt's font
path (which means that previous job has '?' chars instead of the
chinese/japanese glyphs.... ;-( ).
Attachment #86500 - Attachment is obsolete: true
Keywords: mozilla1.0mozilla1.0.1
Target Milestone: mozilla1.0 → mozilla1.0.1
Blocks: xprint_machv
Attachment #86498 - Attachment description: Slightly patch for 2002-05-31-08-trunk+attachment_86073_from_bug_148690 per bstell's comment → Slightly better patch for 2002-05-31-08-trunk+attachment_86073_from_bug_148690 per bstell's comment
> > Does this say give up if we only have bitmaps and the nearest 
> > is less than 1/2 of desired?
> 
> Yes - this is more or less a "safeguard" to avoid that - for
> example - a 12pixel font is used where a 36pixel font was
> requested... however this safeguard should never "kick-in" since
> we should always have (in theory :) fixed-size-bitmap-font entries
> (see [2] below) with the correct size (assuming we use the same
> font path on both Xprt(=Xprint Xserver) and main Xserver).

I'll bet ya a dollar that this bites you in the butt, but since this is only
in the Xlib version: r=bstell@ix.netcom.com
Attachment #86498 - Flags: review+
Brian Stell wrote:
> > Does this say give up if we only have bitmaps and the nearest 
> > is less than 1/2 of desired?
[snip]
I'll bet ya a dollar that this bites you in the butt,

OKOK, I remove that part, I do not like when someone tried to bite me... :)

> but since this is only in the Xlib version

Actually this is Xprint only since the |devscale| is |1.0| for normal devices (I
wish this would be different and we would support real "zooming" via this API -
but we don't use it (yet)).
Requesting r=/sr= ...
Attachment #87220 - Flags: review+
Comment on attachment 87220 [details] [diff] [review]
Better patch for 2002-06-07-08-trunk per bstell's comment, non-mandatory code which may bite butts removed :-)

r=bstell@ix.netcom.com
Comment on attachment 87220 [details] [diff] [review]
Better patch for 2002-06-07-08-trunk per bstell's comment, non-mandatory code which may bite butts removed :-)

>+ PRBool scale_bitmap_fonts_with_devscale = gScaleBitmapFontsWithDevScale;

Why do you bother to initialize this? If the pref getting fails
you leave the global alone, and if it succeeds this gets set to
the actual pref. Just curious in case I'm missing something.

>+#ifdef USE_XPRINT
>+  if (nsFontMetricsXlib::mPrinterMode) {
>+    rv = gPref->GetBoolPref("print.xprint.font.scale_bitmap_fonts_with_devscale", &scale_bitmap_fonts_with_devscale);
>+  }  
>+  if (!nsFontMetricsXlib::mPrinterMode || NS_FAILED(rv)) {
>+#endif /* USE_XPRINT */
>+    rv = gPref->GetBoolPref("font.x11.scale_bitmap_fonts_with_devscale", &scale_bitmap_fonts_with_devscale);
>+#ifdef USE_XPRINT
>+  }
>+#endif /* USE_XPRINT */
>+  if (NS_SUCCEEDED(rv)) {
>+    gScaleBitmapFontsWithDevScale = scale_bitmap_fonts_with_devscale;
>+  }

This #ifdef style is confusing and ugly, and is asking for future
bugs (especially with braces in the #ifdef) -- all to save duplicating
that one lone line in the middle. Go ahead and repeat it, the gain in
clarity is worth it. If you're worried about duplicating the pref string
(good) then make it a #define or constant.

You filed bug 151032 on this so I'm OK with this for now
sr=dveditz



>+
>   gFFRENodes = new nsHashtable();
>   if (!gFFRENodes) {
>     FreeGlobals();
>@@ -3955,15 +3980,30 @@
> }
> 
> static PRBool
>-NodeAddSize(nsFontStretchXlib* aStretch, int aSize, const char *aName,
>-        nsFontCharSetInfoXlib* aCharSetInfo)
>+NodeAddSize(nsFontStretchXlib* aStretch, 
>+            int aPixelSize, int aPointSize,
>+            float scaler,
>+            int aResX,      int aResY,
>+            const char *aDashFoundry, const char *aFamily, 
>+            const char *aWeight,      const char * aSlant, 
>+            const char *aWidth,       const char *aStyle, 
>+            const char *aSpacing,     const char *aCharSet,
>+            nsFontCharSetInfoXlib* aCharSetInfo)
> {
>+  if (scaler!=1.0f)
>+  {
>+    aPixelSize = int(float(aPixelSize) * scaler);
>+    aPointSize = int(float(aPointSize) * scaler);
>+    aResX = 0;
>+    aResY = 0;
>+  }
>+
>   PRBool haveSize = PR_FALSE;
>   if (aStretch->mSizesCount) {
>     nsFontXlib** end = &aStretch->mSizes[aStretch->mSizesCount];
>     nsFontXlib** s;
>     for (s = aStretch->mSizes; s < end; s++) {
>-      if ((*s)->mSize == aSize) {
>+      if ((*s)->mSize == aPixelSize) {
>         haveSize = PR_TRUE;
>         break;
>       }
>@@ -3982,8 +4022,11 @@
>       delete [] aStretch->mSizes;
>       aStretch->mSizes = newSizes;
>     }
>-    char* copy = PR_smprintf("%s", aName);
>-    if (!copy) {
>+    char *name = PR_smprintf("%s-%s-%s-%s-%s-%s-%d-%d-%d-%d-%s-*-%s", 
>+                             aDashFoundry, aFamily, aWeight, aSlant, aWidth, aStyle, 
>+                             aPixelSize, aPointSize, aResX, aResY, aSpacing, aCharSet);  
>+
>+    if (!name) {
>       return PR_FALSE;
>     }
>     nsFontXlib* size = new nsFontXlibNormal();
>@@ -3991,9 +4034,9 @@
>       return PR_FALSE;
>     }
>     aStretch->mSizes[aStretch->mSizesCount++] = size;
>-    size->mName           = copy;
>+    size->mName           = name;
>     // size->mFont is initialized in the constructor
>-    size->mSize           = aSize;
>+    size->mSize           = aPixelSize;
>     size->mBaselineAdjust = 0;
>     size->mCCMap          = nsnull;
>     size->mCharSetInfo    = aCharSetInfo;
>@@ -4101,9 +4144,9 @@
>            outline_scaled = PR_FALSE;
> #ifdef USE_XPRINT
>     PRBool builtin_printer_font = PR_FALSE;
>+#endif /* USE_XPRINT */
>     int    resX = -1,
>            resY = -1;
>-#endif /* USE_XPRINT */
> 
> #ifdef FIND_FIELD
> #undef FIND_FIELD
>@@ -4150,18 +4193,14 @@
>       scalable = PR_TRUE;
>     }
>     FIND_FIELD(resolutionX);
>-#ifdef USE_XPRINT
>     resX = atoi(resolutionX);
>     NS_ASSERTION(!(resolutionX[0] != '0' && resX == 0), "atoi(resolutionX) failure.");
>-#endif /* USE_XPRINT */
>     if (resolutionX[0] == '0') {
>       scalable = PR_TRUE;
>     }
>     FIND_FIELD(resolutionY);
>-#ifdef USE_XPRINT
>     resY = atoi(resolutionY);
>     NS_ASSERTION(!(resolutionY[0] != '0' && resY == 0), "atoi(resolutionY) failure.");
>-#endif /* USE_XPRINT */
>     if (resolutionY[0] == '0') {
>       scalable = PR_TRUE;
>     }
>@@ -4405,19 +4444,22 @@
>     }
>   
>     // get pixel size before the string is changed
>-    int pixels = atoi(pixelSize);
>+    int pixels,
>+        points;
>+
>+    pixels = atoi(pixelSize);
>+    points = atoi(pointSize);
> 
>-    p = name;
>-    while (p < charSetName) {
>-      if (!*p) {
>-        *p = '-';
>-      }
>-      p++;
>-    }
>- 
>     if (pixels) {
>-      if (!NodeAddSize(stretch, pixels, name, charSetInfo))
>+      if (!NodeAddSize(stretch, pixels, points, 1.0f, resX, resY, name, familyName, weightName, 
>+                  slant, setWidth, addStyle, spacing, charSetName, charSetInfo))
>         continue;
>+
>+      if (gScaleBitmapFontsWithDevScale && (gDevScale > 1.0f)) {
>+        if (!NodeAddSize(stretch, pixels, points, gDevScale, resX, resY, name, familyName, weightName, 
>+                    slant, setWidth, addStyle, spacing, charSetName, charSetInfo))
>+          continue;
>+      }
>     }
>   }
>   XFreeFontNames(list);
>diff -N -r -u original/mozilla/modules/libpref/src/unix/unix.js mozilla/modules/libpref/src/unix/unix.js
>--- original/mozilla/modules/libpref/src/unix/unix.js	Mon Jun 10 00:59:49 2002
>+++ mozilla/modules/libpref/src/unix/unix.js	Tue Jun 11 18:40:35 2002
>@@ -334,6 +334,7 @@
> 
> /* Xprint print module prefs */
> pref("print.xprint.font.force_outline_scaled_fonts", true);
>+pref("print.xprint.font.scale_bitmap_fonts_with_devscale", true);
> 
> /* PostScript print module prefs */
> pref("print.postscript.paper_size",    "letter");
Attachment #87220 - Flags: superreview+
dveditz wrote:
> (From update of attachment 87220 [details] [diff] [review])
> >+ PRBool scale_bitmap_fonts_with_devscale = gScaleBitmapFontsWithDevScale;
> 
> Why do you bother to initialize this? If the pref getting fails
> you leave the global alone, and if it succeeds this gets set to
> the actual pref. Just curious in case I'm missing something.

That should be the initalisation to the builtin default settings... however that
may be little bit over-cooked at some point. I'll look at that in bug 151032 and
fix that if it is "too much"...

[snip]
> >+#endif /* USE_XPRINT */
> >+  if (NS_SUCCEEDED(rv)) {
> >+    gScaleBitmapFontsWithDevScale = scale_bitmap_fonts_with_devscale;
> >+  }
> 
> This #ifdef style is confusing and ugly, and is asking for future
> bugs (especially with braces in the #ifdef) -- all to save duplicating
> that one lone line in the middle. Go ahead and repeat it, the gain in
> clarity is worth it. If you're worried about duplicating the pref string
> (good) then make it a #define or constant.
> 
> You filed bug 151032 on this so I'm OK with this for now
> sr=dveditz

Thanks!
Fix checked-in into "trunk"
(http://bonsai.mozilla.org/cvsquery.cgi?module=MozillaTinderboxAll&branch=HEAD&cvsroot=/cvsroot&date=explicit&mindate=1023927960&maxdate=1023928680&who=timeless%25mac.com),
marking bug as "FIXED" ...
Status: ASSIGNED → RESOLVED
Closed: 22 years ago
Resolution: --- → FIXED
Requesting a= for 1.0.1-branch...
Keywords: approval
Comment on attachment 87220 [details] [diff] [review]
Better patch for 2002-06-07-08-trunk per bstell's comment, non-mandatory code which may bite butts removed :-)

Approved for 1.0 branch.  Please remove mozilla1.0.1+ when it's fixed and add
fixed1.0.1
Attachment #87220 - Flags: approval+
checked in to branch
Follow-up to this bug was bug 140673 ("Some Arabic/Hebrew bitmap fonts printed
way too small with Xprint") ...
Product: Core → Core Graveyard
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: