Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8212678

Windows IME related patch

XMLWordPrintable

    • b09
    • windows

        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"
        (See attached SwingSet2-1.png)
        4. Press F5 key.
        The character is not displayed properly.
        (See attached SwingSet2-2.png)
        Withfix screen shot is available on SwingSet2-3.png

        I used Japanese Windows 7 for this testing.
        (I could not recreate this issue on English Windows Server 2012 R2.
        But I could recreate this issue Japanese Windows 10)

        Issue B:
        Test program (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

        I think you can see this issue with English Windows.
        I used English Windows Server 2012 R2 for this testing.
        Movies are available, you may see how it works:
        Without fix: B-ChineseIME-withoutfix.mov, B-KoreanIME-withoutfix.mov
        With fix: B-ChineseIME-withfix.mov, B-KoreanIME-withfix.mov

        Issue C:
        Test program (IMFTestA):

        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

        I used English Windows Server 2012 R2 for this testing.
        Movies are available, you may see how it works:
        Without fix: C-ChineseIME-withoutfix.mov
        With fix: C-ChineseIME-withfix.mov

        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

          1. SwingSet2-3.png
            SwingSet2-3.png
            80 kB
          2. SwingSet2-2.png
            SwingSet2-2.png
            67 kB
          3. SwingSet2-1.png
            SwingSet2-1.png
            65 kB
          4. ImSubsetsTest.java
            7 kB
          5. IMFTestA.java
            0.4 kB
          6. C-ChineseIME-withoutfix.mov
            807 kB
          7. C-ChineseIME-withfix.mov
            763 kB
          8. B-KoreanIME-withoutfix.mov
            3.96 MB
          9. B-KoreanIME-withfix.mov
            3.25 MB
          10. B-ChineseIME-withoutfix.mov
            2.97 MB
          11. B-ChineseIME-withfix.mov
            2.87 MB

              itakiguchi Ichiroh Takiguchi
              itakiguchi Ichiroh Takiguchi
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated:
                Resolved: