我通常每个字体有4个文件。例如
menu-ipadhd.fnt
menu-ipadhd.png
menu.fnt
menu.png
问题是,我应该本地化所有4个文件还是.fnt
本地化是否足够? Cocos2D可以从相应的.lproj
找到png文件吗?本地化位图字体的正确方法是什么?
答案 0 :(得分:0)
cocos2d是否根据语言查找文件很容易测试,将两个不同的文件放在en.lproj中,另一个放在其他语言文件夹中,然后更改设备或模拟器语言,看它是否为每个文件选择正确的文件语言。
如果您对localize the text(用位图字体显示的字符串)有意义,您实际上只需要对字符串进行本地化,并确保对于所有支持的语言,所有特定于语言的字符(äéøß等)都包含在位图字体的图像。至少所有本地化字符串实际使用的那些。
如果要本地化为完全不同的字符集,例如从英语到西里尔语,亚洲语言或阿拉伯语,则需要提供不同的位图字体,即fnt和png文件,并根据语言加载它们。接下来是本地化文本本身。
原因是这些非拉丁字符集包含数百个(如果不是数千个)不同的字符,因此将它们包含在单个位图字体中是不可取的,甚至可能无法将它们全部放入4096x4096(或更少)纹理中空间。
某些cocos2d版本的位图字体类将位图字体中的字符数限制为2048 - 这可能仅适用于v1.x我没有检查该限制是否仍然存在于2.x中,我只是可以' t再将它定位在2.1中。对于超过此字符数的字符集,您必须在CCBMFontLabel的标题中增加该数字 - 如果可用。
使用大型位图字体要小心,因为每个字母的存储空间可以相当大,整个字体可以使用几兆字节 - 不计算纹理本身!