编辑:在这里描述了同样的问题http://www.tonypottier.info/Unicode_And_Japanese_Kanji/,但它没有提供如何将这些位图字体映射保存到utf-8空间中的真正解决方案。因此,欢迎任何进一步的帮助!
编辑2:
非常感谢您的回答。很抱歉,我的问题没有描述清楚。
我真正想解决的问题是:CJK Unicode范围超过20000个字符。但只有大约2000个字符的子集是必要的,以正确显示日文文本。这些字符分布在U+4E00到U+9FA5的范围内。因此,我需要将这些Unicode代码点(仅适用于日语的2000个代码点)转换为我创建的纹理的坐标(在其中我也可以按照自己的意愿排序字符)。
即U+4E03是一个日本字符,但U+4E04、U+4E05、U+4E06不是。然后U+4E07也是一个日本字符。所以我能看到的最简单的解决方案是:在字符U+4E03之后,在我的纹理中留下三个空格(或在那里写下不必要的字符U+4E04、U+4E05、U+4E06),然后写下U+4E07。但这将浪费很多纹理空间(20000个字符,即使只有2000个是必要的)。所以我想能够在我的纹理中只放入:"...U+4E03,U+4E07..."。但我不知道如何编写我的displayText函数-因为我无法知道我想要显示的字形的纹理坐标在哪里。这将需要一个哈希表或类似的东西,但我不知道如何存储这些数据(为每个字符编写像...{U+4E03,128},{U+4E07,129}...这样的东西来填充哈希表会很混乱)。
以下是问题的回答: 1)没有特定的格式 - 所以我将自己编写displayText函数。 2)没有反对Unicode的理由 - 只是我的位图字体有CJK范围问题。 3)我认为,这通常是平台和语言无关的,但在我的情况下,我使用的是Mac OS X/iOS上的C++和OpenGL。
非常感谢您的帮助!如果您对此有任何进一步的想法,那真的会对我很有帮助!