Name: mt13159 Date: 10/01/2001
On Windows, there are two kinds of EUDC fonts, integrated and separate. Integrated fonts contain the normal characters as well as EUDC. Separate EUDC fonts contain only user defined characters. Separate EUDC fonts are associated with non-EUDC fonts, so that normal characters are rendered using the non-EUDC font, and user defined characters are rendered using the associated separate EUDC font.
Specific separate EUDC fonts can be assocated with specific non-EUDC fonts. In addition, there is a system default EUDC font, specified by the registry key SystemDefaultEUDCFont. This is a separate EUDC font that is associated with all fonts on the system that do not have a specific separate EUDC font associated with them. So any application can display EUDC characters with any font. Windows will render non-EUDC characters with the font specified by the application, and will automatically switch to the default EUDC font to render user defined characters.
In JDK 1.2 and later, however, this doesn't work. EUDC characters can only be displayed by eplicitly rendering them using an integrated EUDC font. In JDK 1.1.8, it was possible to use associated separate EUDC fonts to display EUDC. I believe this is because in JDK 1.1, Java used the native font rasterizer to render characters. But in JDK 1.2 and later, Java uses its own font rasterizer, which bypasses the native EUDC handling.
You can test this by bringing up the Windows EUDC editor (eudcedit.exe) on any Windows 2000 or CJK version of Windows NT/95/98. Create a user defined character and link it to all fonts on the system. This will store the character in the system EUDC font. Now start the JDK 1.3 SymbolTest demo. Go to the character range which includes the character you just created. The UDC you crearted will show up as a box. If you use the JDK 1.1.8 SymbolTest demo, on the other hand, the UDC displays correctly (assuming you have modified your font.properties file to have the NEED_CONVERTED flag, as mentioned in bug 4369905 part 4).
This is an important bug for us, because it prevents our products from being able to display user defined characters on Windows.
(Review ID: 132746)