使用Open-Sans字体时,它显示不可解析的阿拉伯语unicodes。但java会做后备并显示这些阿拉伯字符。
File fontFile = new File(new URI("file:///C:/Open-Sans.ttf"));
Font font = Font.createFont(Font.TRUETYPE_FONT, fontFile);
font = font.deriveFont(Font.PLAIN, 24f);
if (font.canDisplayUpTo("\u0639\u0631\u0636\u0627\u0644\u0639\u0645\u064a\u0644"
+ "\u0627\u0644\u0627\u0641\u062a\u0631\u0627\u0636\u064a") == -1) {
System.out.println("arabic unicode parseable");
}
Frame f = new Frame();
f.setFont(font);
f.setBounds(50, 50, 400, 400);
Label l = new Label("\u0639\u0631\u0636\u0627\u0644\u0639\u0645\u064a\u0644"
+ "\u0627\u0644\u0627\u0641\u062a\u0631\u0627\u0636\u064a");
f.add(l);
f.setVisible(true);
输出: java如何实际处理这个回退,它用于显示这些字符的字体。在 java \ jdk1.8.0_102 \ jre \ lib \ fontconfig.properties :
sequence.fallback= lucida,\
chinese-ms950,chinese-hkscs,chinese-ms936,chinese-gb18030,\
japanese,korean,chinese-ms950-extb,chinese-ms936-extb
我尝试设置空的后备,
sequence.fallback=
但是,仍然会显示阿拉伯字符。因此,在fontconfig.properties中设置的回退功能无效。我尝试调试java源代码, java.awt.Font 和 java.awt.Component ,但没有找到这种回退发生的位置/方式。