libGDX,打印非西方字体

时间:2015-02-09 13:09:16

标签: java fonts libgdx arabic chinese-locale

我正在完成我的libGDX安卓游戏,我在制作本地化时遇到了问题。

我希望我的游戏本地化为波兰语,英语,阿拉伯语和中文。要做到这一点,我正在使用libgdx I18NBundle,它工作得非常好。我对前2没有任何问题,他们用我的BitmapFont打印得非常好(我通过Hiero制作了它)。

我完全不知道如何渲染后者2. Hiero似乎无法从非西方字体生成位图,并且尝试Gdx freetype扩展让我更加困惑(打印西方符号不起作用 - 显示的另一个角色,当我试图打印中文/阿拉伯字符时,我得到的只是空格。)

这是问题的第二部分。让我们假设我/我们设法实现了工作字体渲染。很明显,我将需要3种字体(波兰语/英语,中文和阿拉伯语)。我必须以某种方式检测系统的语言,然后加载适当的字体。加载正确的字体似乎不是一个大问题,问题是,我如何检测语言(不是整个语言环境)。

2 个答案:

答案 0 :(得分:0)

  1. Hiero为非西方字体生成位图字体。我为我的游戏生成了几种西里尔语位图字体。我刚刚从这个page尝试了几种阿拉伯字体 - 一切都很顺利。可能你应该问另一个问题,更详细地描述你对Hiero的问题。

  2. 您可以在Locale.getDefault().getLanguage()类中使用方法AndroidLauncher(更多信息here)在运行时获取设备上的当前语言。

  3. 然后你应该决定你将使用的本地化语言,并将这些信息传递给主游戏类。

    protected void onCreate (Bundle savedInstanceState) {
        ...
        String sysLang = Locale.getDefault().getLanguage();
        String i18nLang;
        if ((sysLang == "en") || (sysLang == "de")) {
            i18nLang = "en";
        } else if (...) {...}
    
        initialize(new MyGame(i18nLang), config);
    }
    

答案 1 :(得分:0)

如果您手动选择字体文件,它将起作用。显然,默认系统列表中的非西方字体在Hiero中不起作用。

enter image description here