-
Bug
-
Resolution: Duplicate
-
P1
-
None
-
1.1.4, 1.2.0
-
x86, sparc
-
solaris_2.5.1, windows_nt
Name: paC48320 Date: 10/15/97
I am a licensee(Oki Electric Industry Co., Ltd.).
sun.java2d.SunGraphics2D.drawString doesn't allow Japanese charcters.
I am using JTextArea of Swing-0.5 on JDK 1.2P.
But I caught following Exception.
Exception occurred during event dispatching:
java.lang.ArrayIndexOutOfBoundsException: 6
at java.awt.Font.getGlyphSet(Font.java:1213)
at java.awt.Font.getGlyphSet(Font.java:1256)
at java.awt.font.StyledString.getGlyphSets(StyledString.java:277)
at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:1126)
at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:597)
at java.awt.Graphics.drawChars(Graphics.java:770)
at com.sun.java.swing.text.Utilities.drawTabbedText(Utilities.java:76)
at com.sun.java.swing.text.PlainView.drawLine(PlainView.java:394)
at com.sun.java.swing.text.PlainView.paint(PlainView.java:162)
at com.sun.java.swing.text.DefaultTextUI$RootView.paint(DefaultTextUI.java:549)
at com.sun.java.swing.text.DefaultTextUI.paint(DefaultTextUI.java:293)
at com.sun.java.swing.JComponent.paintComponent(JComponent.java:341)
at com.sun.java.swing.JComponent.paint(JComponent.java:507)
at com.sun.java.swing.JComponent.paintChildren(JComponent.java:397)
at com.sun.java.swing.JComponent.paint(JComponent.java:510)
at com.sun.java.swing.JComponent.paintWithBuffer(JComponent.java:2774)
at com.sun.java.swing.JComponent._paintImmediately(JComponent.java:2740)
at com.sun.java.swing.JComponent.paintImmediately(JComponent.java:2661)
at com.sun.java.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:283)
at com.sun.java.swing.RepaintManager.actionPerformed(RepaintManager.java:214)
at com.sun.java.swing.Timer.fireActionPerformed(Timer.java:113)
at com.sun.java.swing.Timer$DummyComponent.processEvent(Timer.java:288)
at java.awt.Component.dispatchEventImpl(Component.java:1908)
at java.awt.Component.dispatchEvent(Component.java:1823)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:45)
Exception occurred during event dispatching:
java.lang.ArrayIndexOutOfBoundsException: 6
at java.awt.Font.getGlyphSet(Font.java:1213)
at java.awt.Font.getGlyphSet(Font.java:1256)
at java.awt.font.StyledString.getGlyphSets(StyledString.java:277)
at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:1126)
at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:597)
at java.awt.Graphics.drawChars(Graphics.java:770)
at com.sun.java.swing.text.Utilities.drawTabbedText(Utilities.java:76)
at com.sun.java.swing.text.PlainView.drawLine(PlainView.java:394)
at com.sun.java.swing.text.PlainView.paint(PlainView.java:162)
at com.sun.java.swing.text.DefaultTextUI$RootView.paint(DefaultTextUI.java:549)
at com.sun.java.swing.text.DefaultTextUI.paint(DefaultTextUI.java:293)
at com.sun.java.swing.JComponent.paintComponent(JComponent.java:341)
at com.sun.java.swing.JComponent.paint(JComponent.java:507)
at com.sun.java.swing.JComponent.paintChildren(JComponent.java:397)
at com.sun.java.swing.JComponent.paint(JComponent.java:495)
at java.awt.Container.paint(Container.java:696)
at java.awt.Component.dispatchEventImpl(Component.java:1864)
at java.awt.Container.dispatchEventImpl(Container.java:934)
at java.awt.Window.dispatchEventImpl(Window.java:462)
at java.awt.Component.dispatchEvent(Component.java:1823)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:45)
Exception occurred during event dispatching:
java.lang.ArrayIndexOutOfBoundsException: 6
at java.awt.Font.getGlyphSet(Font.java:1213)
at java.awt.Font.getGlyphSet(Font.java:1256)
at java.awt.font.StyledString.getGlyphSets(StyledString.java:277)
at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:1126)
at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:597)
at java.awt.Graphics.drawChars(Graphics.java:770)
at com.sun.java.swing.text.Utilities.drawTabbedText(Utilities.java:76)
at com.sun.java.swing.text.PlainView.drawLine(PlainView.java:394)
at com.sun.java.swing.text.PlainView.paint(PlainView.java:162)
at com.sun.java.swing.text.DefaultTextUI$RootView.paint(DefaultTextUI.java:549)
at com.sun.java.swing.text.DefaultTextUI.paint(DefaultTextUI.java:293)
at com.sun.java.swing.JComponent.paintComponent(JComponent.java:341)
at com.sun.java.swing.JComponent.paint(JComponent.java:507)
at com.sun.java.swing.JComponent.paintChildren(JComponent.java:397)
at com.sun.java.swing.JComponent.paint(JComponent.java:495)
at java.awt.Container.paint(Container.java:696)
at java.awt.Component.update(Component.java:1380)
at java.awt.Container.update(Container.java:718)
at java.awt.Component.dispatchEventImpl(Component.java:1866)
at java.awt.Container.dispatchEventImpl(Container.java:934)
at java.awt.Window.dispatchEventImpl(Window.java:462)
at java.awt.Component.dispatchEvent(Component.java:1823)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:45)
Exception occurred during event dispatching:
java.lang.ArrayIndexOutOfBoundsException: 6
at java.awt.Font.getGlyphSet(Font.java:1213)
at java.awt.Font.getGlyphSet(Font.java:1256)
at java.awt.font.StyledString.getGlyphSets(StyledString.java:277)
at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:1126)
at sun.java2d.SunGraphics2D.drawString(SunGraphics2D.java:597)
at java.awt.Graphics.drawChars(Graphics.java:770)
at com.sun.java.swing.text.Utilities.drawTabbedText(Utilities.java:76)
at com.sun.java.swing.text.PlainView.drawLine(PlainView.java:394)
at com.sun.java.swing.text.PlainView.paint(PlainView.java:162)
at com.sun.java.swing.text.DefaultTextUI$RootView.paint(DefaultTextUI.java:549)
at com.sun.java.swing.text.DefaultTextUI.paint(DefaultTextUI.java:293)
at com.sun.java.swing.JComponent.paintComponent(JComponent.java:341)
at com.sun.java.swing.JComponent.paint(JComponent.java:507)
at com.sun.java.swing.JComponent.paintChildren(JComponent.java:397)
at com.sun.java.swing.JComponent.paint(JComponent.java:495)
at java.awt.Container.paint(Container.java:696)
at java.awt.Component.dispatchEventImpl(Component.java:1864)
at java.awt.Container.dispatchEventImpl(Container.java:934)
at java.awt.Window.dispatchEventImpl(Window.java:462)
at java.awt.Component.dispatchEvent(Component.java:1823)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:45)
My test program is following.
import java.awt.*;
import java.awt.event.*;
import com.sun.java.swing.*;
public class JTextAreaTest {
public static void main(String args[]) {
Frame frame = new Frame("JTextArea Test");
frame.setLayout(new FlowLayout());
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
MenuBar menuBar = new MenuBar();
Menu menu = new Menu("File");
MenuItem quitMenuItem = new MenuItem("Quit");
quitMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
menu.add(quitMenuItem);
menuBar.add(menu);
frame.setMenuBar(menuBar);
JPanel panel = new JPanel();
JTextArea textArea = new JTextArea(3,3);
//textArea.setFont(new Font("SansSerif", Font.PLAIN, 14));
textArea.setText("\u3053\u308c\u306f\u3001is\na JTextArea.\n");
textArea.append("But it\ncannot scroll.\n");
panel.add(textArea);
frame.add(panel);
frame.pack();
frame.setVisible(true);
}
}
Command is following.
java -classpath $SWINGHOME/swing.jar:$SWINGHOME/rose.jar:$JDK12HOME/lib/classes.zip JTextAreaTest
======================================================================
There are some reasons for this problem.
1. Japanese TrueType fonts in Windows have the
filename extension of ".ttc", e.g., msmincho.ttc.
But the code in sun.awt.font.FontObjectCollection
does not list up such fonts.
2. There is a hard-coded value "Times-Roman" and "Ariel" in
sun.java2d.SunGraphicsEnvironment#getAllFonts() for
the defaultFont.
3. There are hard-coded values as follows, in
sun.awt.font.SfntAccess#getFontFullName()
platform=1
specific=0
language=0
and in sun.awt.font.SfntAccess#canDisplay()
return c < 256;
ronan.mandel@Eng 1998-01-23
- duplicates
-
JDK-4100565 JDK1.2 's java.awt.Font does not support Not-8859-1 character set
-
- Closed
-