-
Bug
-
Resolution: Fixed
-
P4
-
5.0u2
OPERATING SYSTEM(S): Windows 2003 Server SP1 (64bit)
FULL JDK VERSION(S):
java full version "1.5.0_02-b09"
DESCRIPTION:
Testcase is:
-----------------------------------------
import java.awt.*;
import java.awt.event.*;
import java.awt.font.*;
import java.awt.geom.*;
import java.text.Bidi;
public class vGlyphVectorGLFTest{
static String sSCCSid = "@(#) @(#)43 1.2 fvigsi/java2d/GlyphVector/vGlyphVectorGLFTest.java, fvigsi, fvigsi 4/29/02 15:27:09";
static public void main(String[] args) {
new TestFrame().setVisible(true);
}
static class TestFrame extends Frame {
GlyphVector[] gvs;
TestFrame() {
super("Test Font.layoutGlyphVector");
setSize(300, 300);
setBackground(Color.white);
setForeground(Color.black);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D)g;
//String str = "This \u05d1\u05d2\u05d3 123 \u0644\u0627\u0646\u0646\u0646 has \u0939\u093f\u0928\u0921\u0940 in it.";
String str = "\u0939\u093f\u0928\u0921\u0940 \u05d1\u05d2\u05d3";
Font font = new Font("Lucida Sans", Font.PLAIN, 18);
float x = 50;
float y = 100;
g2d.setFont(font);
g2d.drawString(str, x, y);
if (gvs == null) {
FontRenderContext frc = g2d.getFontRenderContext();
char[] text = str.toCharArray();
Bidi bidi = new Bidi(str, Bidi.DIRECTION_DEFAULT_LEFT_TO_RIGHT);
gvs = new GlyphVector[bidi.getRunCount()];
byte levels[] = new byte[gvs.length];
for (int i = 0; i <gvs.length ; ++i) {
levels[i] = (byte)bidi.getRunLevel(i);
int flags = ((levels[i] & 1) == 1) ?
Font.LAYOUT_RIGHT_TO_LEFT :
Font.LAYOUT_LEFT_TO_RIGHT;
int start = bidi.getRunStart(i);
int limit = bidi.getRunLimit(i);
try {
gvs[i] = font.layoutGlyphVector(frc, text, start, limit, flags);
}catch (UnsupportedOperationException e) {
System.out.println(e);
}
}
if(gvs[0].getLayoutFlags()==gvs[0].FLAG_COMPLEX_GLYPHS && gvs[1].getLayoutFlags()==gvs[1].FLAG_RUN_RTL)
{
System.out.println("TEST PASSED");
}
else
{
System.out.println("TEST FAILED");
}
System.exit(0);
}
}
}
}
_______________________________
Compile the testcase.
Test should pass without any exception.
Exception which we are getting are:
E=Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException
E= at sun.font.GlyphLayout.layout(GlyphLayout.java:309)
E= at java.awt.Font.layoutGlyphVector(Font.java:2250)
E= at vGlyphVectorGLFTest$TestFrame.paint(vGlyphVectorGLFTest.java:78)
E= at sun.awt.RepaintArea.paintComponent(RepaintArea.java:278)
E= at sun.awt.RepaintArea.paint(RepaintArea.java:254)
E= at sun.awt.windows.WComponentPeer.handleEvent(WComponentPeer.java:286)
E= at java.awt.Component.dispatchEventImpl(Component.java:4062)
E= at java.awt.Container.dispatchEventImpl(Container.java:2054)
E= at java.awt.Window.dispatchEventImpl(Window.java:1806)
E= at java.awt.Component.dispatchEvent(Component.java:3834)
E= at java.awt.EventQueue.dispatchEvent(EventQueue.java:541)
E= at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:265)
E= at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:194)
E= at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
E= at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:180)
E= at java.awt.EventDispatchThread.run(EventDispatchThread.java:141)
###@###.### 2005-05-05 19:45:20 GMT
FULL JDK VERSION(S):
java full version "1.5.0_02-b09"
DESCRIPTION:
Testcase is:
-----------------------------------------
import java.awt.*;
import java.awt.event.*;
import java.awt.font.*;
import java.awt.geom.*;
import java.text.Bidi;
public class vGlyphVectorGLFTest{
static String sSCCSid = "@(#) @(#)43 1.2 fvigsi/java2d/GlyphVector/vGlyphVectorGLFTest.java, fvigsi, fvigsi 4/29/02 15:27:09";
static public void main(String[] args) {
new TestFrame().setVisible(true);
}
static class TestFrame extends Frame {
GlyphVector[] gvs;
TestFrame() {
super("Test Font.layoutGlyphVector");
setSize(300, 300);
setBackground(Color.white);
setForeground(Color.black);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
public void paint(Graphics g) {
Graphics2D g2d = (Graphics2D)g;
//String str = "This \u05d1\u05d2\u05d3 123 \u0644\u0627\u0646\u0646\u0646 has \u0939\u093f\u0928\u0921\u0940 in it.";
String str = "\u0939\u093f\u0928\u0921\u0940 \u05d1\u05d2\u05d3";
Font font = new Font("Lucida Sans", Font.PLAIN, 18);
float x = 50;
float y = 100;
g2d.setFont(font);
g2d.drawString(str, x, y);
if (gvs == null) {
FontRenderContext frc = g2d.getFontRenderContext();
char[] text = str.toCharArray();
Bidi bidi = new Bidi(str, Bidi.DIRECTION_DEFAULT_LEFT_TO_RIGHT);
gvs = new GlyphVector[bidi.getRunCount()];
byte levels[] = new byte[gvs.length];
for (int i = 0; i <gvs.length ; ++i) {
levels[i] = (byte)bidi.getRunLevel(i);
int flags = ((levels[i] & 1) == 1) ?
Font.LAYOUT_RIGHT_TO_LEFT :
Font.LAYOUT_LEFT_TO_RIGHT;
int start = bidi.getRunStart(i);
int limit = bidi.getRunLimit(i);
try {
gvs[i] = font.layoutGlyphVector(frc, text, start, limit, flags);
}catch (UnsupportedOperationException e) {
System.out.println(e);
}
}
if(gvs[0].getLayoutFlags()==gvs[0].FLAG_COMPLEX_GLYPHS && gvs[1].getLayoutFlags()==gvs[1].FLAG_RUN_RTL)
{
System.out.println("TEST PASSED");
}
else
{
System.out.println("TEST FAILED");
}
System.exit(0);
}
}
}
}
_______________________________
Compile the testcase.
Test should pass without any exception.
Exception which we are getting are:
E=Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException
E= at sun.font.GlyphLayout.layout(GlyphLayout.java:309)
E= at java.awt.Font.layoutGlyphVector(Font.java:2250)
E= at vGlyphVectorGLFTest$TestFrame.paint(vGlyphVectorGLFTest.java:78)
E= at sun.awt.RepaintArea.paintComponent(RepaintArea.java:278)
E= at sun.awt.RepaintArea.paint(RepaintArea.java:254)
E= at sun.awt.windows.WComponentPeer.handleEvent(WComponentPeer.java:286)
E= at java.awt.Component.dispatchEventImpl(Component.java:4062)
E= at java.awt.Container.dispatchEventImpl(Container.java:2054)
E= at java.awt.Window.dispatchEventImpl(Window.java:1806)
E= at java.awt.Component.dispatchEvent(Component.java:3834)
E= at java.awt.EventQueue.dispatchEvent(EventQueue.java:541)
E= at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:265)
E= at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:194)
E= at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
E= at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:180)
E= at java.awt.EventDispatchThread.run(EventDispatchThread.java:141)
###@###.### 2005-05-05 19:45:20 GMT