diff options
Diffstat (limited to 'firefox-1.5-pango-justified-range.patch')
-rw-r--r-- | firefox-1.5-pango-justified-range.patch | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/firefox-1.5-pango-justified-range.patch b/firefox-1.5-pango-justified-range.patch new file mode 100644 index 0000000..7614d0e --- /dev/null +++ b/firefox-1.5-pango-justified-range.patch @@ -0,0 +1,53 @@ +diff -pruN -x '.moz*' -x .deps -x 'thunderbird*' -x '*.mk' -x 'config*' -x dist -x build -x toolkit -x '*o' -x '*a' -x '*html' -x 'firefox*' mozilla.orig/layout/generic/nsTextFrame.cpp mozilla/layout/generic/nsTextFrame.cpp +--- mozilla.orig/layout/generic/nsTextFrame.cpp 2006-12-20 12:15:38.000000000 +0900 ++++ mozilla/layout/generic/nsTextFrame.cpp 2006-12-20 21:29:39.000000000 +0900 +@@ -2973,15 +2973,16 @@ nsTextFrame::RenderString(nsIRenderingCo + + nsIFontMetrics* lastFont = aTextStyle.mLastFont; + PRInt32 pendingCount; +- PRUnichar* runStart = bp; ++ PRUnichar* runStart = bp, *top = aBuffer; + nscoord charWidth, width = 0; + PRInt32 countSoFar = 0; ++ PRUint32 offset; + // Save the color we want to use for the text, since calls to + // PaintTextDecorations in this method will call SetColor() on the rendering + // context. + nscolor textColor; + aRenderingContext.GetColor(textColor); +- for (; --aLength >= 0; aBuffer++) { ++ for (offset = 0; offset < aLength; aBuffer++, offset++) { + nsIFontMetrics* nextFont; + nscoord glyphWidth = 0; + PRUnichar ch = *aBuffer; +@@ -3038,7 +3039,7 @@ nsTextFrame::RenderString(nsIRenderingCo + else if (ch == ' ') { + glyphWidth += aTextStyle.mSpaceWidth + aTextStyle.mWordSpacing + aTextStyle.mLetterSpacing; + } +- else if (IS_HIGH_SURROGATE(ch) && aLength > 0 && ++ else if (IS_HIGH_SURROGATE(ch) && (offset + 1) < aLength && + IS_LOW_SURROGATE(*(aBuffer+1))) { + + // special handling for surrogate pair +@@ -3046,7 +3047,7 @@ nsTextFrame::RenderString(nsIRenderingCo + glyphWidth += charWidth + aTextStyle.mLetterSpacing; + // copy the surrogate low + *bp++ = ch; +- --aLength; ++ offset++; + aBuffer++; + ch = *aBuffer; + // put the width into the space buffer +@@ -3058,10 +3059,10 @@ nsTextFrame::RenderString(nsIRenderingCo + glyphWidth = 0; + } + else { +- aRenderingContext.GetWidth(ch, charWidth); ++ aRenderingContext.GetRangeWidth(top, aLength, offset, offset + 1, (PRUint32&)charWidth); + glyphWidth += charWidth + aTextStyle.mLetterSpacing; + } +- if (justifying && (!isEndOfLine || aLength > 0) ++ if (justifying && (!isEndOfLine || (offset + 1) < aLength) + && IsJustifiableCharacter(ch, isCJ)) { + glyphWidth += aTextStyle.mExtraSpacePerJustifiableCharacter; + if ((PRUint32)--aTextStyle.mNumJustifiableCharacterToRender |