0

我通常每种字体有 4 个文件。例如

menu-ipadhd.fnt
menu-ipadhd.png
menu.fnt
menu.png

问题是,我应该本地化所有 4 个文件还是.fnt本地化就足够了?Cocos2D 可以从对应的 .png 文件中找到 png 文件.lproj吗?本地化位图字体的正确方法是什么?

4

1 回答 1

0

cocos2d是否根据语言查找文件很容易测试,将两个不同的文件放在en.lproj中,另一个放在其他语言文件夹中,然后更改设备或模拟器的语言,看看它是否为每种语言选择了正确的。

如果您要本地化文本(使用位图字体显示的字符串),您实际上只需要本地化字符串并确保对于所有支持的语言,所有语言特定的字符(äéøß 等)都包含在位图字体的图像中。至少您的本地化字符串实际使用的所有这些。

如果您要本地化到完全不同的字符集,例如从英语到西里尔语、亚洲或阿拉伯语,您需要提供完全不同的位图字体,即 fnt 和 png 文件并根据语言加载它们。这是本地化文本本身的下一步。

原因是这些非拉丁字符集包含成百上千个不同的字符,因此将它们包含在单个位图字体中是不可取的,甚至可能无法将它们全部放入 4096x4096(或更小)的纹理空间中。

一些 cocos2d 版本的位图字体类将位图字体中的字符数限制为 2048 - 这可能仅适用于 v1.x 我没有检查该限制是否仍然存在于 2.x 中,我只是找不到它在 2.1 了。对于超过此字符数的字符集,您必须在 CCBMFontLabel 的标题中增加该数字 - 如果可用。

使用大位图字体时要小心,因为每个字母的存储空间可能会相当大,整个字体可以使用几兆字节 - 不包括纹理本身!

于 2013-10-25T18:50:08.390 回答