【问题标题】:Using custom font in Swing to display text in Russian在 Swing 中使用自定义字体以俄语显示文本
【发布时间】:2014-12-02 13:36:46
【问题描述】:

我在我的 Swing 应用程序中使用自定义字体并像这样加载它:

URL l = ClassLoader.class.getResource("/resource/template/CarroisGothic-Regular.ttf");
Font font = Font.createFont(Font.TRUETYPE_FONT, l.openStream());
font = font.deriveFont(Font.PLAIN, 13);
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
ge.registerFont(font);

UIManager.put("ComboBox.font", font);

它在区域设置/语言设置为英语的系统上运行良好,但对于其他语言(例如俄语),它会显示乱码。

这就是我显示月份名称的方式:

String[] months = new DateFormatSymbols().getMonths();
for (int i = 0; i < months.length && i < 12; i++) {
     cmbMonth.addItem(months[i]);

     if(i == Calendar.getInstance().get(Calendar.MONTH) + 1) {
            cmbMonth.setSelectedIndex(i);
     }
}

【问题讨论】:

  • 听起来那个字体不包含西里尔符号。正方形而不是正确的符号通常表示缺少字形。我认为它适用于系统字体。
  • 可能也需要this

标签: java swing


【解决方案1】:

您的标记中定义的字体名称将指向系统的字体缓存,而不是您的应用程序的,这就是您的应用程序不显示所需字体的原因。

您应该尝试在机器上本地安装字体并在您的应用程序中使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多