从freetype(SHIFT JIS编码)中检索指定的字形?

时间:2010-12-09 07:29:06

标签: encoding freetype2 shift-jis

到目前为止,我使用纹理(bitmapfont)进行字体渲染,但我正在尝试让freetype2正常工作。我的所有字符串都是SHIFT_JIS编码的,我现在唯一的问题就是从正确的字形到正确的SHIFT_JIS位序列。但它似乎比我预期的更难。例如,“亜”具有charcode“0x889F”(字节1设置为136,字节2为159) - 这是根据SHIFT_JIS编码。所以我调用了函数:

FT_Select_Charmap(face, FT_ENCODING_SJIS);

然后尝试使用该charcode加载字形:

FT_Load_Char(face, 0x889F, FT_LOAD_RENDER ); 

但我收到一些随机字形。它不能是一个特定于字体的问题,因为我尝试了不同的字体具有相同的结果(是的,它们提供了shift-jis charmap)。例如,“0”(零)应位于0x0030位置 - 但实际上它位于0x002D。并非所有字符都有3的常量偏移量,否则就没有问题......我认为我的“FT_Load_Char”调用以错误的方式传递charcode参数 - 但是无法猜测它是如何正确的。已经尝试过:

FT_Load_Char(face, FT_Get_Char_Index(face, 0x889F), FT_LOAD_RENDER ); 

然后我收到另一个随机字形。 那么,如果没有选择默认的charmap,我如何将charcode传递给FT_Load_Char呢?

任何建议都会有所帮助。谢谢。

1 个答案:

答案 0 :(得分:0)

如果有人会在稍后发现类似问题: 我最终将动态字符代码转换为unicode(使用icu4c)。似乎很多日文SJIS字体标题存在问题(它们不能通过freetype枚举选择 - 只有当你列出其中一种字体的所有可用字符集然后手动选择 - 平台ID和编码ID所有这些字体都不相同)。但这不适合我的需要(因为使用不同的字体),所以我最终决定使用Icu4c。

希望这会对某人有所帮助。

相关问题