Java字体回退机制

时间:2017-12-17 22:18:18

标签: java unicode fonts awt fallback

使用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);

输出: enter image description here 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 ,但没有找到这种回退发生的位置/方式。

0 个答案:

没有答案