changeset 1191:7175ea5857e4

* patches/icedtea-6761856-freetypescaler.patch: New patch. * Makefile.am (ICEDTEA_PATCHES): Add new patch. * HACKING: Document new patch.
author Mark Wielaard <mark@klomp.org>
date Fri, 07 Nov 2008 13:47:41 +0100
parents 5176cf42d236
children cb1f68e8019a
files ChangeLog HACKING Makefile.am patches/icedtea-6761856-freetypescaler.patch
diffstat 4 files changed, 59 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Wed Oct 29 11:29:20 2008 -0400
+++ b/ChangeLog	Fri Nov 07 13:47:41 2008 +0100
@@ -1,3 +1,9 @@
+2008-10-29  Mark Wielaard  <mark@klomp.org>
+
+	* patches/icedtea-6761856-freetypescaler.patch: New patch.
+	* Makefile.am (ICEDTEA_PATCHES): Add new patch.
+	* HACKING: Document new patch.
+
 2008-10-29  Gary Benson  <gbenson@redhat.com>
 
 	PR icedtea/238:
--- a/HACKING	Wed Oct 29 11:29:20 2008 -0400
+++ b/HACKING	Fri Nov 07 13:47:41 2008 +0100
@@ -62,8 +62,10 @@
 * icedtea-arch.patch: Add support for additional architectures.
 * icedtea-alt-jar.patch: Add support for using an alternate jar tool in JDK building. 
 * icedtea-hotspot7-tests.patch: Adds hotspot compiler tests from jdk7 tree.
-* patches/icedtea-renderer-crossing.patch: Check whether crossing is
-  initialized in Pisces Renderer.
+* icedtea-renderer-crossing.patch: Check whether crossing is initialized
+  in Pisces Renderer.
+* icedtea-6761856-freetypescaler.patch: Fix IcedTea bug #227, OpenJDK bug
+  #6761856, swing TextLayout.getBounds() returns shifted bounds.
 
 The following patches are only applied to OpenJDK6 in IcedTea6:
 
--- a/Makefile.am	Wed Oct 29 11:29:20 2008 -0400
+++ b/Makefile.am	Fri Nov 07 13:47:41 2008 +0100
@@ -532,7 +532,8 @@
 	$(VISUALVM_PATCH) \
 	patches/icedtea-javac-debuginfo.patch \
 	patches/icedtea-xjc.patch \
-	patches/icedtea-renderer-crossing.patch
+	patches/icedtea-renderer-crossing.patch \
+	patches/icedtea-6761856-freetypescaler.patch
 
 if WITH_RHINO
 ICEDTEA_PATCHES += \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/icedtea-6761856-freetypescaler.patch	Fri Nov 07 13:47:41 2008 +0100
@@ -0,0 +1,47 @@
+# User igor
+# Date 1225234342 -10800
+# Node ID 9cdababf6179bd03270d881740fbb5dcc405854f
+# Parent 594c52582b21063bdbc36b38d9f73a3c46abe041
+6761856: OpenJDK: vertical text metrics may be significanly different from those returned by Sun JDK
+Reviewed-by: bae, prr
+
+--- openjdk.orig/jdk/src/share/native/sun/font/freetypeScaler.c	Tue Oct 28 14:47:14 2008 -0700
++++ openjdk/jdk/src/share/native/sun/font/freetypeScaler.c	Wed Oct 29 01:52:22 2008 +0300
+@@ -1281,7 +1281,7 @@ Java_sun_font_FreetypeFontScaler_getGlyp
+                                    sunFontIDs.rect2DFloatClass,
+                                    sunFontIDs.rect2DFloatCtr4,
+                                    F26Dot6ToFloat(bbox.xMin),
+-                                   F26Dot6ToFloat(bbox.yMax),
++                                   F26Dot6ToFloat(-bbox.yMax),
+                                    F26Dot6ToFloat(bbox.xMax-bbox.xMin),
+                                    F26Dot6ToFloat(bbox.yMax-bbox.yMin));
+     }
+--- openjdk.orig/jdk/test/java/awt/font/TextLayout/TextLayoutBounds.java	Tue Oct 28 14:47:14 2008 -0700
++++ openjdk/jdk/test/java/awt/font/TextLayout/TextLayoutBounds.java	Wed Oct 29 01:52:22 2008 +0300
+@@ -22,7 +22,7 @@
+  */
+ /* @test
+  * @summary verify TextLayout.getBounds() return visual bounds
+- * @bug 6323611
++ * @bug 6323611 6761856
+  */
+ 
+ import java.awt.*;
+@@ -39,10 +39,15 @@ public class TextLayoutBounds {
+        Rectangle2D tlBounds = tl.getBounds();
+        GlyphVector gv = f.createGlyphVector(frc, s);
+        Rectangle2D gvvBounds = gv.getVisualBounds();
++       Rectangle2D oBounds = tl.getOutline(null).getBounds2D();
+        System.out.println("tlbounds="+tlBounds);
+        System.out.println("gvbounds="+gvvBounds);
++       System.out.println("outlineBounds="+oBounds);
+        if (!gvvBounds.equals(tlBounds)) {
+-          throw new RuntimeException("Bounds differ");
++          throw new RuntimeException("Bounds differ [gvv != tl]");
++       }
++       if (!tlBounds.equals(oBounds)) {
++          throw new RuntimeException("Bounds differ [tl != outline]");
+        }
+     }
+ }
+