creator 字体渲染问题

吐个槽

游戏内用到很多种fnt字体,每个字体纹理都不大,一张张放着浪费,所以想办法做二次合图,节省内存.

项目的所有字体纹理合集用 2048尺寸差不多刚刚好

第一个办法直接简单

所有字体拷贝到一个fonts目录下,设置自动图集配置AutoPac,构建运行,运行不报错,但是所有的字体显示都错乱了。

第二个办法

构建以后,写个脚本,把jsb-default/res/raw-assets/fonts/resources/fonts 目录的png全部合成一张图(fnt文件会被creator序列化成json文件,文件名也改的不认识),然后去res/import目录(从1800+json文件内容里搜索)搜索匹配对应的fnt原始文件内容,修改,保存。运行报错,然后又去修改对应的SpriteFrame json文件,运行,继续报错,前后检查几遍,发现貌似得修改settting.jsc,只得放弃,抓狂!

第三个办法,跟第二个办法原理类似,只不过这个是构建前操作。

写了脚本

  1. TP把所有fnt对应的png合成一张纹理 fonts.png fonts.plist
  2. 解析plist,修改fnt文件内容:修改file、scaleW/scaleH以及每个字符的x/y偏移值,保存新的fnt
    3.去掉之前生成的fnt同文件名png图,只用一张fonts.png
    运行以后在浏览器和creator编辑器上一切显示如预期效果。字体显示都正常。但运行真机(PC模拟器),发现全部只显示一种字图,空格丢失。 检查fnt修改记录,也没发现明显问题, wtf!

官方有空检查下这个问题吧,移动、浏览器总是有点什么差异,这难道是2dx的包袱?

吐槽一点,搞creator,稍微抄点小道就翻车。

[假装有一张老罗打自己脸的动图.gif]

能否给个测试例子? 之前的版本是有问题,目前 1.5.2 应该已经修复。

如果你的版本有这个问题,可以参考这个 PR 解决一下。

https://github.com/cocos-creator/cocos2d-x-lite/pull/668/files

多谢子龙回复,根据这个PR的修改提示,问题得到了解决,非常感谢!

另外这个PR严格来说不太准确,建议把 ATLAS_MAP_KEY_BUFFER 这个宏的值也改下,ios上文件资源路径非常长,加上spriteFrame的指针,很容易就超过255(Xcode调试)
我的工程设成512就能完美运行,显示效果也一致。

#define ATLAS_MAP_KEY_BUFFER 512

希望能在1.6的正式版上修复(就一行改动),我们老大考虑准备1.6发布后升级。

路径过长的问题,512 严格来说也不太准确,这里的 texture path 其实不用完整的路径,我回头再提供一个 PR。