From dfa9bd5ea2eb85b592d3b955df334b246a6db877 Mon Sep 17 00:00:00 2001 From: "jaggernaut%netscape.com" Date: Thu, 18 Jul 2002 04:26:35 +0000 Subject: [PATCH] Bug 140673: Some Arabic/Hebrew bitmap fonts printed way too small with Xprint. Patch by Roland.Mainz@informatik.med.uni-giessen.de, r=smontagu, sr=dveditz, a=scc git-svn-id: svn://10.0.0.236/trunk@125443 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/gfx/src/gtk/nsFontMetricsGTK.cpp | 19 ++++++++++++++++++- mozilla/gfx/src/xlib/nsFontMetricsXlib.cpp | 19 ++++++++++++++++++- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/mozilla/gfx/src/gtk/nsFontMetricsGTK.cpp b/mozilla/gfx/src/gtk/nsFontMetricsGTK.cpp index 36250388827..5e1163ee932 100644 --- a/mozilla/gfx/src/gtk/nsFontMetricsGTK.cpp +++ b/mozilla/gfx/src/gtk/nsFontMetricsGTK.cpp @@ -4079,9 +4079,26 @@ GetFontNames(const char* aPattern, PRBool aAnyFoundry, PRBool aOnlyOutlineScaled continue; if (gScaleBitmapFontsWithDevScale && (gDevScale > 1.0f)) { + /* Add a font size which is exactly scaled as the scaling factor ... */ if (!NodeAddSize(stretch, pixels, points, gDevScale, resX, resY, name, familyName, weightName, - slant, setWidth, addStyle, spacing, charSetName, charSetInfo)) + slant, setWidth, addStyle, spacing, charSetName, charSetInfo)) continue; + + /* ... and offer a range of scaled fonts with integer scaling factors + * (we're taking half steps between integers, too - to avoid too big + * steps between font sizes) */ + float minScaler = PR_MAX(gDevScale / 2.0f, 1.5f), + maxScaler = gDevScale * 2.f, + scaler; + for( scaler = minScaler ; scaler <= maxScaler ; scaler += 0.5f ) + { + if (!NodeAddSize(stretch, pixels, points, scaler, resX, resY, name, familyName, weightName, + slant, setWidth, addStyle, spacing, charSetName, charSetInfo)) + break; + } + if (scaler <= maxScaler) { + continue; /* |NodeAddSize| returned an error in the loop above... */ + } } } } diff --git a/mozilla/gfx/src/xlib/nsFontMetricsXlib.cpp b/mozilla/gfx/src/xlib/nsFontMetricsXlib.cpp index 1c3a8ee52bb..cfcefc4f4bf 100644 --- a/mozilla/gfx/src/xlib/nsFontMetricsXlib.cpp +++ b/mozilla/gfx/src/xlib/nsFontMetricsXlib.cpp @@ -4467,9 +4467,26 @@ GetFontNames(const char* aPattern, PRBool aAnyFoundry, PRBool aOnlyOutlineScaled continue; if (gScaleBitmapFontsWithDevScale && (gDevScale > 1.0f)) { + /* Add a font size which is exactly scaled as the scaling factor ... */ if (!NodeAddSize(stretch, pixels, points, gDevScale, resX, resY, name, familyName, weightName, - slant, setWidth, addStyle, spacing, charSetName, charSetInfo)) + slant, setWidth, addStyle, spacing, charSetName, charSetInfo)) continue; + + /* ... and offer a range of scaled fonts with integer scaling factors + * (we're taking half steps between integers, too - to avoid too big + * steps between font sizes) */ + float minScaler = PR_MAX(gDevScale / 2.0f, 1.5f), + maxScaler = gDevScale * 2.f, + scaler; + for( scaler = minScaler ; scaler <= maxScaler ; scaler += 0.5f ) + { + if (!NodeAddSize(stretch, pixels, points, scaler, resX, resY, name, familyName, weightName, + slant, setWidth, addStyle, spacing, charSetName, charSetInfo)) + break; + } + if (scaler <= maxScaler) { + continue; /* |NodeAddSize| returned an error in the loop above... */ + } } } }