libGDX, 打印非西方字体

libGDX, printing non-western fonts

我正在完成我的 libGDX android 游戏,我在进行本地化时遇到了问题。

我希望我的游戏本地化为波兰语、英语、阿拉伯语和中文。为此,我使用了 libgdx I18NBundle,它工作得很好。我对前 2 个没有问题,它们用我的 BitmapFont 打印得很好(我已经通过 Hiero 做到了)。

我完全不知道如何渲染后 2。Hiero 似乎无法从非西方字体生成位图,并且尝试 Gdx freetype 扩展让我更加困惑(打印西方符号没有'不起作用 - 显示的另一个字符以及当我尝试打印 Chinese/Arabic 个字符时,我得到的都是空白 space)。

这是问题的第二部分。假设 I/we 成功实现了字体渲染。很明显我需要 3 种字体(Polish/English,中文和阿拉伯语)。我必须以某种方式检测系统的语言,然后加载正确的字体。加载正确的字体似乎不是什么大问题,问题是我如何检测语言(不是整个语言环境)。

  1. Hiero 为非西方字体生成位图字体。我为我的游戏生成了几种西里尔文位图字体。我刚刚尝试了这个 page 中的几种阿拉伯字体 - 一切都很好。也许你应该问另一个问题,更详细地描述你与 Hiero 的问题。

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

然后您应该决定您将使用哪种本地化语言,并将此信息传递给主游戏 class。

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);
}

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