libGDX,如何打印非西方字体?

4

我正在完成我的libGDX安卓游戏,但在实现本地化方面遇到了问题。

我希望我的游戏能够支持波兰语、英语、阿拉伯语和中文等多种语言。为此,我使用了libgdx I18NBundle,并且效果非常好。前两者没有任何问题,它们可以很好地与我的BitmapFont(通过Hiero制作)打印出来。

然而,对于后两种语言我完全不知道该如何呈现。Hiero似乎无法从非西方字体生成位图,尝试使用Gdx freetype扩展让我更加困惑(打印西方符号不起作用 - 另外的字符会显示出来,当我尝试打印中文/阿拉伯文时,得到的只是空格)。

下面是第二个问题。假设我/我们成功实现了工作中的字体渲染。显然,我需要三种字体(波兰语/英语,中文和阿拉伯语)。我必须以某种方式检测系统的语言,然后加载合适的字体。加载合适的字体似乎并不是一个大问题,问题在于如何检测语言(而不是整个语言环境)。


我曾经遇到过同样的问题,阿拉伯语显示为空白。你是如何解决这个问题的? - Netero
2个回答

1
  1. Hiero可以为非西文字体生成位图字体。我已经为我的游戏生成了几个西里尔字母的位图字体。我刚刚从这个页面尝试了几种阿拉伯字体,全部都很好用。也许你应该提出另一个问题,更详细地描述你在使用Hiero时遇到的问题。

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

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

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

你说得对,阿拉伯语非常好用。有什么关于中文的想法吗?感谢你解决了第二个问题。 - Kierek93
中文字体的问题到底是什么? - Rara

0

如果您手动选择字体文件,则可以正常工作。显然,默认系统列表中的非西方字体在Hiero中无法工作。

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接