关于纹理字体的使用有关问题。

关于纹理字体的使用问题。。
我用FreeType2将一种ttf字体输出到了图片中,
但有个很棘手的使用问题就是,在这个巨型图片上,我该如何排列这些字体?

首先,如果要将纹理坐标索引与字符码作匹配排列的话,会有个问题,就是并不是0~65535的所有字符码都有对应的字形,如果强制填充上空余的位置的话,将会浪费巨大空间(实际能使用的汉字加上英文字符以及特殊字符,也就三四千而已)

其次,如果不将纹理坐标索引与字符码作完全匹配的话,那么为了能够实现快速定为字符,恐怕就只有给所有字符的纹理坐标写一个映射表到ini文件了。然后程序启动的时候,加载这个映射表,根据此映射表来读取字符纹理坐标。不过得需要至少3000种映射,也就意味着程序要从ini文件中读3000个映射数据,这也仅仅是一种字体文件,实际游戏中可能会用到两三种,比如楷体,隶书,行书,这么多一起读取,这CPU可就有得耗了。

有没有做过的朋友,有什么好的方法?

------解决方案--------------------
为什么要这么搞?
没见过引擎这么整啊。
------解决方案--------------------
探讨

引用:
为什么要这么搞?
没见过引擎这么整啊。


因为DX9的字体渲染速度极慢,用这种方法比DX9提供的接口,效率更高。
http://www.cppblog.com/richardhe/archive/2009/01/04/63851.html

------解决方案--------------------
楼主可以考虑动态缓存字符。

需要某个字的时候,如果该字形没有缓存,则用FT2生成对应的字形到纹理;
如果已经缓存,就直接使用。

准备N个512p的预备纹理,并寻求一个好的字形排列,管理机制
------解决方案--------------------
看来是我想的太复杂了。没事不要用什么ini,用XML也不要用INI
------解决方案--------------------
这些二进制数据,读进内存后,就直接使用下标寻找吧。
data[character]
线性速度
------解决方案--------------------
data[二次映射[character]]
把常用字映射到前面
data是字形位置数组
二次映射是int数组