Am 19.11.2014 um 17:58 schrieb Philippe Mouawad:
Hi,
I tested on windows 7 , issue is not reproduced.
Don't have Linux to test.

Maybe other member of team can do this.
Looks good on (well, I can read all text and none is mirrored).
ubuntu 14.04 and

java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)

and

java version "1.7.0_65"
OpenJDK Runtime Environment (IcedTea 2.5.3) (7u71-2.5.3-0ubuntu0.14.04.1)
OpenJDK 64-Bit Server VM (build 24.65-b04, mixed mode)

Regards
 Felix

Regards

On Wed, Nov 19, 2014 at 4:45 PM, Balchandra Vaidya <
[email protected]> wrote:

Hi Philippe,

Here is the JBS ID - https://bugs.openjdk.java.net/browse/JDK-8065373.
Did you see this issue only on Mac OS or did you see it on another
OS/platform such as Windows?

Thanks for reporting it.

Regards,
Balchandra




On 11/19/14 03:11 PM, Philippe Mouawad wrote:

Hi,
JI-9016915 Regards
Philippe

On Wed, Nov 19, 2014 at 4:10 PM, Philippe Mouawad <
[email protected]> wrote:

   Hello Rory,
  I posted a bug, waiting for mail notification.
  It seems bug appeared after Java 7 u40 as I just tested now with Java7
u71 and it is also broken there.
  I didn't test versions between 7u40 and 7u71.

  Regards
Philippe

On Wed, Nov 19, 2014 at 3:44 PM, Rory O'Donnell <[email protected]
wrote:
Hi Philippe,

Can you log a Java Incident and send us the JI  number ?

Rgds,Rory
On 19/11/2014 14:36, Philippe Mouawad wrote:

Hello Rory,
For information, I submitted this question on Swing-dev , I am not sure
it
is the right list, if so hope you can help.

Regards
Philippe
---------- Forwarded message ----------
From: Philippe Mouawad <[email protected]>
Date: Wed, Nov 19, 2014 at 3:34 PM
Subject: JAVA8u20 and JAVA8u25 Regression in Graphics2D drawing of
derived
Fonts ?
To: [email protected]


Hello,
We had recently a report of a bug on Apache JMeter:

      - https://issues.apache.org/bugzilla/show_bug.cgi?id=57221


The bug only occurs on Java 8 (u20 and u25).

We use jCharts library.

I narrowed the bug and it seems to come from the way derived fonts are
drawn:

Library uses:

      public static final AffineTransform VERTICAL_ROTATION =
AffineTransform.getRotateInstance( -Math.PI / 2 );

Then

          this.affineTransform= VERTICAL_ROTATION;
this.font.deriveFont( this.affineTransform )

So I build a stupid and ugly isolated class to show issue, run it on
Java 7
display is fine , run it on Java8 result is strange.

package org.jCharts;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.font.FontRenderContext;
import java.awt.font.LineMetrics;
import java.awt.geom.AffineTransform;
import java.awt.geom.GeneralPath;
import java.awt.geom.Rectangle2D;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class Test extends JPanel {
      Rectangle2D.Float rect = new Rectangle2D.Float(200, 200, 220, 35);
      // float theta = 1.1748778437843f;
      double theta = Math.PI / 6;

      @Override
      protected void paintComponent(Graphics g) {
          super.paintComponent(g);
          Graphics2D g2 = (Graphics2D) g;
          g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                  RenderingHints.VALUE_ANTIALIAS_ON);
          g2.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS,
                  RenderingHints.VALUE_FRACTIONALMETRICS_ON);
          g2.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL,
                  RenderingHints.VALUE_STROKE_PURE);
          g2.setPaint(Color.blue);
          Font font = g2.getFont().deriveFont(18f);
          g2.setFont(font);
          FontRenderContext frc = g2.getFontRenderContext();
          String s = "This text should be rotated";
          float width = (float) font.getStringBounds(s, frc).getWidth();
          LineMetrics lm = font.getLineMetrics(s, frc);
          float height = lm.getAscent() + lm.getDescent();
          // Scale text into rect.
          float xScale = rect.width / width;
          float yScale = rect.height / height;
          float scale = (xScale > yScale) ? yScale : xScale;
          // Locate string origin.
          double x = rect.x;
          double y = rect.y + (rect.height + scale * height) / 2 - scale
                  * lm.getDescent();
          AffineTransform at = AffineTransform.getTranslateInstance(x,
y);
          at.scale(scale, scale);
          AffineTransform rotator = new AffineTransform();
          rotator.rotate(theta, rect.getCenterX(), rect.getCenterY());
          GeneralPath rect2 = new GeneralPath(
                  rotator.createTransformedShape(rect));
          // Draw with no rotation.
          g2.draw(rect);
          g2.setPaint(Color.red);
          g2.setFont(font.deriveFont(at));
          g2.drawString(s, 0, 0);
          // Rotate once.
          g2.setPaint(Color.blue);
          g2.draw(rect2);
          rotator.concatenate(at);
          g2.setFont(font.deriveFont(rotator));
          g2.setPaint(Color.red);
          g2.drawString(s, 0, 0);
          // Rotate again.
          rotator.setToIdentity();
          rotator.rotate(2 * theta, rect.getCenterX(),
rect.getCenterY());
          rect2 = new GeneralPath(rotator.createTransformedShape(rect));
          g2.setPaint(Color.blue);
          g2.draw(rect2);
          rotator.concatenate(at);
          g2.setFont(font.deriveFont(rotator));
          g2.setPaint(Color.red);
          g2.drawString(s, 0, 0);
          // Check scaled string bounds.
          // this was handled by the fractional metrics rendering hint
      }

      public static void main(String[] args) {
          Test test = new Test();
          test.setPreferredSize(new Dimension(800, 600));
          JFrame f = new JFrame();
          f.getContentPane().add(test);
          f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          f.pack();
          f.setVisible(true);
      }
}

Regards
Philippe M.




--
Rgds,Rory O'Donnell
Quality Engineering Manager
Oracle EMEA , Dublin, Ireland



  --
Cordialement.
Philippe Mouawad.




--
Cordialement.
Philippe Mouawad.






Reply via email to