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

Incorrect processing of supplementary-plane characters in text fields

    Details

    • Subcomponent:
      2d
    • Introduced In Build:
      b96
    • Introduced In Version:
      9
    • Resolved In Build:
      b158
    • CPU:
      generic
    • OS:
      generic

      Backports

        Description

        FULL PRODUCT VERSION :
        java version "9-ea"
        Java(TM) SE Runtime Environment (build 9-ea+152)
        Java HotSpot(TM) 64-Bit Server VM (build 9-ea+152, mixed mode)

        ADDITIONAL OS VERSION INFORMATION :
        Microsoft Windows [Version 10.0.14393]

        A DESCRIPTION OF THE PROBLEM :
         Supplementary-plane characters in text fields are sometimes treated as two characters - it must be caused by their internal representation as surrogate pairs.

        REGRESSION. Last worked in version 8u112

        ADDITIONAL REGRESSION INFORMATION:
        java version "1.8.0_112"
        Java(TM) SE Runtime Environment (build 1.8.0_112-b15)
        Java HotSpot(TM) 64-Bit Server VM (build 25.112-b15, mixed mode)

        STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
        Run sample program given below. In opened text field, press Left first, then Backspace.

        EXPECTED VERSUS ACTUAL BEHAVIOR :
        EXPECTED -
        First character is deleted (completely), second remains.
        ACTUAL -
        First character is replaced with some undisplayable character, probably because only a part of surrogate pair was deleted.

        REPRODUCIBILITY :
        This bug can be reproduced always.

        ---------- BEGIN SOURCE ----------
        import javax.swing.*;

        public class JTextFieldTest {
            public static void main(String[] args) {
                SwingUtilities.invokeLater(() -> {
                    JFrame frame = new JFrame();
                    JTextField field = new JTextField(20);
                    field.setText(new String(new int[]{0x1d400, 0x61}, 0, 2));
                    frame.add(field);
                    frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
                    frame.pack();
                    frame.setLocationRelativeTo(null);
                    frame.setVisible(true);
                });
            }
        }

        ---------- END SOURCE ----------

          Attachments

            Issue Links

              Activity

                People

                • Assignee:
                  prr Philip Race
                  Reporter:
                  webbuggrp Webbug Group
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  7 Start watching this issue

                  Dates

                  • Due:
                    Created:
                    Updated:
                    Resolved: