ONJava.com -- The Independent Source for Enterprise Java
oreilly.comSafari Books Online.Conferences.


AddThis Social Bookmark Button

Java Internationalization and Localization
Pages: 1, 2, 3, 4, 5

Demo Applet

An applet was created as shown in Figure 4, with the following applet parameters.

  • File -- the text file to be displayed in applet.
  • Encoding -- the encoding to be used during reading of the text file
  • Country -- the upper-case two-letter codes as defined by ISO-3166
  • Lang -- the lower-case two-letter codes as defined by ISO-639
  • FontName -- the preferred font name to be used in displaying the text by default
  • FontSize -- the preferred font size by default

The applet reads the file with the specified encoding, then displays the text using the preferred font name and size. The country and lang parameters are used to create the java.util.Locale object. The text is displayed using java.awt.Canvas. Line wrapping is performed using java.text.BreakIterator.

Some Observations

What follows are some observations when the demo applet is executed on IE, Navigator 4.76, and 6 for Chinese, Japanese, and Korean text.

Encoding in IE
IE does not support every encoding supported in the JDK. For example, if you try reading a native Korean character in our test applet you will encounter the following:

  Related Reading:
Java Internationalization

Java Internationalization
By Andy Deitsch & David Czarnecki
March 2001
0-596-00019-7, Order Number: 0197
51 pages, $39.95


In order to display Korean characters correctly in all browsers, we need to do some preprocessing. We need to perform transcoding, where the Korean text file is transformed from one encoding to another; in this case, EUC-KR to UTF8. Transcoding can be implemented easily in Java. We read in the data in one encoding and write out the data in another encoding.

After transcoding the Korean text files to UTF8, we specify the encoding parameter in the applet as UTF8. Then use the preferred font name "Batang" to display Korean characters in the applet.

Screen shot.
Figure 4. Korean Text Demo Applet on IE Browser.

IE Java VM
If the Font object is not created with FontX class but, rather, with

new Font("system font name") 

then our Korean characters will be displayed as follows on IE Java VM, using the "Batang" and "Dialog" font names.

Screen shot.
Figure 5. Display of Korean text for a 'Batang' font name if we did not make use of FontX class.

Screen shot.
Figure 6. Display of Korean text when we use 'Dialog' logical font name

Netscape Navigator 6 JDK 1.3
Navigator 6 with Sun JDK 1.3 VM works well, except for updated fonts with only a change of font style.

For example, if the current Font setting in the applet is

Font name = 'Batang'
Font size = 14
Italic = No
Bold = No

and we want to have the same font name, size, but with italic rather than bold, then if we just check the Italic checkbox, and depress the 'Update' button, it will not work.

Instead, we need to set Font Size to any value other than 14 (the current value), and set Italic to "Yes". Then depress the "Update" button. Then set Font Size back to 14. Depress the "Update" button again. You can then get what you wanted as follows:

Font name = 'Batang'
Size = 14
Italic = Yes
Bold = No

On IE and Navigator 4.76 (assuming the necessary changes to font.properties.en), we do not have this problem.

When we run the Korean character demo in Navigator 6, the loading of the applet took much longer to load than with IE. It may be due to the size of this TrueType Font (15157KB) (see Figure 2). Another reason is likely due to IE being integrated with the OS.

Pages: 1, 2, 3, 4, 5

Next Pagearrow