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

isComplexCharCode() returns false for U+11FF

XMLWordPrintable

    • x86_64
    • generic

      ADDITIONAL SYSTEM INFORMATION :
      All OS

      A DESCRIPTION OF THE PROBLEM :
      "=" is missing in following line of isComplexCharCode().
      modules/javafx.graphics/src/main/java/com/sun/javafx/text/ScriptMapper.java

          else if (code < 0x11ff) { // U+1100 - U+11FF Old Hangul
              return true;
          }

      ----> Fix

          else if (code <= 0x11ff) { // U+1100 - U+11FF Old Hangul
              return true;
          }

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      Nothing specially.
      Attached test case is displayed correctly in both case before/after modify (code <= 0x11ff).

      If you would like to check modify is correct, Please run jdb.
      # LANG=C ./jdk/build/linux-x86_64-normal-server-release/images/jdk/bin/jdb U_11FF_Test
      [#jdb] stop in com.sun.javafx.text.PrismTextLayout.shape
      [#jdb] run
      [#jdb] print layout

      OK : layout = PangoGlyphLayout (Linux), DWGlyphLayout (Windows)
      NG : layout = null

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      JavaFX Application Thread[1] print layout
       layout = "com.sun.javafx.font.freetype.PangoGlyphLayout@2c8a795"

      ACTUAL -
      JavaFX Application Thread[1] print layout
       layout = null

      ---------- BEGIN SOURCE ----------
      import javafx.application.Application;
      import static javafx.application.Application.launch;
      import javafx.scene.Group;
      import javafx.scene.Scene;
      import javafx.scene.layout.VBox;
      import javafx.scene.text.Font;
      import javafx.scene.text.Text;
      import javafx.stage.Stage;

      public class U_11FF_Test extends Application {

          public void start(Stage stage) {
              final String family = "Unifont";
              // download GNU Unifont and install
              // http://www.unifoundry.com/unifont.html
              // http://unifoundry.com/pub/unifont-11.0.01/font-builds/unifont-11.0.01.ttf

              Font font = Font.font(family, 48.0);
              if (font == null || !family.equals(font.getFamily())) {
                  System.err.println("# You need to install font "+family);
                  System.exit(0);
              }

              stage.setWidth(140);
              stage.setHeight(160);
              Group g = new Group();
              final Scene scene = new Scene(new Group());
              VBox box = new VBox();
              ((Group)scene.getRoot()).getChildren().add(box);
              stage.setScene(scene);

              Text txt = new Text("\u11ff"); // U+11FF (Old Hangul)
              txt.setFont(font);
              box.getChildren().add(txt);

              stage.show();
          }
      }
      ---------- END SOURCE ----------

      FREQUENCY : always


            prr Philip Race
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: