-
Bug
-
Resolution: Fixed
-
P4
-
jfx11
-
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
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
- relates to
-
JDK-8220803 Old Hangul range is incomplete in FontUtilities.java
-
- Open
-
- links to