<AWT Dev> Proposal: Windows IME related patch

Ichiroh Takiguchi takiguc at linux.vnet.ibm.com
Thu Jun 14 17:14:40 UTC 2018


Hello,
IBM would like to contribute Windows IME related Java Input Method 
Framework patch to OpenJDK project.

Issue:
This patch can fix following issues.
A: Cannot display surrogate pair character on Windows floating IME 
window for passive component
B: Control Windows IME status by using InputSubset and UnicodeBlock for 
CJK countries
C: Check preedit string availability for Windows Chinese IME

To recreate each issue.

Issue A:
1. Run SwingSet2 Java demo program with Japanese IME.
2. Click InternalFrameDemo's "Frame 0".
3. Turn on Japanese IME, then type "2000B" and press F5 key.
The character is not displayed properly. [1]

Issue B:
Test program (ImSubsetsTest.java) is as follow:
http://cr.openjdk.java.net/~aleonard/winime/ImSubsetsTest.java

1. Compile and run ImSubsetsTest with CJK IMEs
2. Select language (ja:Japanese, ko:Korean, zh: Chinese).
Windows IME (same langugae's one) should be turned on.
3. Click  JTextField (active component) or JButton (passive component)
(Please check IM status is changed or not)
4. Click different color's JTextField (active component) or JButton 
(passive component)
(Please check IM status is changed or not)
5. Following operations did not work
Korean IME : HANJA->LATIN_DIGIT,BASIC_LATIN
Chinese IME : FULLWIDTH_DIGITS->LATIN_DIGIT,BASIC_LATIN

Issue C:
Test program is as follows:
======
import javax.swing.*;

public class IMFTestA extends JFrame {
   IMFTestA(int width, int height, int x, int y) {
     super("JTextArea");
     add(new JTextArea());
     setSize(width, height);
     setLocation(x, y);
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     setVisible(true);
   }
   public static void main(String[] args) {
     new IMFTestA(300, 200, 0, 0);
     new IMFTestA(300, 200, 300, 0);
   }
}
======

On Chinese IME (Microsoft Pinyin ABC),
1. Compile and run IMFTestA
2. Click one of JTextArea window, turn ON Chinese IME
3. Click the other window, turn ON Chinese IME
4. Type "nihao", then preedit string is displayed
5. Click the other window, turn OFF Chinese IME
6. Click the other window, preedit string is still displayed but it's 
not convertable

Reason:
Issue A, proper font is not specified for passive component
Issue B, IME mode setting for CJK Windows IME is not correct
Issue C, Chinese Windows IME shares IME status between windows, Java 
needs to check preedit string is available or not

I'd like contribute following 3 files:
M src/java.desktop/windows/classes/sun/awt/windows/WInputMethod.java
M src/java.desktop/windows/native/libawt/windows/awt_Component.cpp
M src/java.desktop/windows/native/libawt/windows/awt_InputMethod.cpp
http://cr.openjdk.java.net/~aleonard/winime/webrev.00/

I appreciate any feedback please, and how I would go about obtaining a 
sponsor and contributor?

[1] http://unicode.org/cgi-bin/GetUnihanData.pl?codepoint=2000B

Thanks,
Ichiroh Takiguchi
IBM Japan, Ltd.



More information about the awt-dev mailing list