如何使用swing将桌面应用程序中的英文字体转换为telugu字体

时间:2013-03-01 09:08:37

标签: java swing fonts

最近我使用Swing开发了一个桌面应用程序“酒店管理系统”,并且运行良好!

但是现在最新的要求是应用程序应该是 telugu 字体!这意味着应用程序的GUI应该在 telugu 中,账单和报告以及应用程序中的所有内容都应该在 telugu ...

所以我的问题是,这可能吗?如果是这样,那么应该使用什么技术和波动来实现这一目标呢? 如果有任何新的东西应该与Swing一起应用,那么我很想学习它并在我的应用程序中使用它!

请帮帮我。我不知道如何做到这一点。

2 个答案:

答案 0 :(得分:1)

只要您做好准备,更改默认字体并不是特别困难。

看看Custom Fonts for Jasper Reports如何将字体与Jasper Reports捆绑在一起。建议您与官方文档和论坛核实更多最新信息。

网上有很多例子,只需为Google做“Jasper Reports自定义字体”

为Swing设置所需的字体并不困难,但很多情况将取决于您使用的外观如何存储它的属性。

现在,根据系统上是否安装了字体,或者您是否将字体作为嵌入资源提供,您可能需要也可能不需要执行以下操作。

如果您不依赖于系统上安装的字体,而是自己提供,则需要加载它。

// Load the font, for example "Telugu.ttf"
String fName = "/fonts/" + name;
InputStream is = null;
try {
    InputStream is = DemoFonts.class.getResourceAsStream(fName);
    font = Font.createFont(Font.TRUETYPE_FONT, is);
} finally {
    try {
        is.close();
    } catch (Exception exp) {
    }
}

否则,您应该能够使用所请求的Font字体系列名称简单地创建Telugu对象。

接下来,您要将当前外观使用的默认字体更改为您要使用的字体。这必须在您安装外观之后以及创建任何UI元素之前。

Object[] keys = keySet.toArray(new Object[keySet.size()]);

for (Object key : keys) {

    if (key != null && key.toString().toLowerCase().contains("font")) {

        Object oValue = UIManager.getDefaults().get(key);

        if (oValue != null) {

            String value = oValue == null ? null : UIManager.getDefaults().get(key).toString();
            UIManager.put(key, font);

        }

    }

}

现在,您需要注意Swing倾向于使用固定宽度字体,因为它的外观和感觉,将字体更改为可变宽度字体将改变您的布局。

答案 1 :(得分:0)

也可以不使用字体。使用泰卢固语Unicode显示泰卢固语,甚至是JASPER报告。我使用telugu unicode开发英语到Telugu Transliterator而不使用任何字体系统。只需在telugu,kannada,hindi中配置所有标签名称,并使用音译器加载。