-
Bug
-
Resolution: Fixed
-
P4
-
7
-
b28
-
generic, x86
-
generic, linux
-
Verified
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-2194400 | OpenJDK6 | Igor Nekrestyanov | P3 | Resolved | Fixed | b20 |
When freetype scaler is used outline is not translated correctly along y axis.
Testcase:
============
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.font.FontRenderContext;
import java.awt.font.GlyphVector;
import javax.swing.JComponent;
import javax.swing.JFrame;
public class BugDemo {
public static class DemoComponent extends JComponent {
@Override
public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
FontRenderContext frc = new FontRenderContext(null, false, false);
g2.translate(100, 100);
g2.setColor(Color.GRAY);
g2.drawLine(0,0,150,0);
g2.drawLine(0,150,0,0);
g2.setColor(Color.BLACK);
GlyphVector gv = g.getFont().createGlyphVector(frc, "test");
g2.drawGlyphVector(gv, 20, 20);
g2.setColor(Color.RED);
g2.fill(gv.getOutline(20,20));
}
}
private static void createAndShowGUI() {
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame("BugDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new DemoComponent());
frame.pack();
frame.setSize(200,200);
frame.setVisible(true);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
Testcase:
============
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.font.FontRenderContext;
import java.awt.font.GlyphVector;
import javax.swing.JComponent;
import javax.swing.JFrame;
public class BugDemo {
public static class DemoComponent extends JComponent {
@Override
public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
FontRenderContext frc = new FontRenderContext(null, false, false);
g2.translate(100, 100);
g2.setColor(Color.GRAY);
g2.drawLine(0,0,150,0);
g2.drawLine(0,150,0,0);
g2.setColor(Color.BLACK);
GlyphVector gv = g.getFont().createGlyphVector(frc, "test");
g2.drawGlyphVector(gv, 20, 20);
g2.setColor(Color.RED);
g2.fill(gv.getOutline(20,20));
}
}
private static void createAndShowGUI() {
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame("BugDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new DemoComponent());
frame.pack();
frame.setSize(200,200);
frame.setVisible(true);
}
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
- backported by
-
JDK-2194400 freetype: glyph vector outline is not translated correctly
-
- Resolved
-