Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Encoding 从freetype(SHIFT JIS编码)检索指定的标志符号?_Encoding_Freetype2_Shift Jis - Fatal编程技术网

Encoding 从freetype(SHIFT JIS编码)检索指定的标志符号?

Encoding 从freetype(SHIFT JIS编码)检索指定的标志符号?,encoding,freetype2,shift-jis,Encoding,Freetype2,Shift Jis,到目前为止,我使用纹理(bitmapfont)进行字体渲染,但我正在尝试让freetype2正常工作。我所有的字符串都是SHIFT_-JIS编码的,现在唯一的问题是从freetype获取正确的glyph到正确的SHIFT_-JIS位序列。但这似乎比我想象的要难。“以身作则”亜" 具有字符码“0x889F”(字节1设置为136,字节2设置为159)-这是根据SHIFT_JIS编码的。因此我调用了函数: FT_Select_Charmap(face, FT_ENCODING_SJIS); 然后尝试

到目前为止,我使用纹理(bitmapfont)进行字体渲染,但我正在尝试让freetype2正常工作。我所有的字符串都是SHIFT_-JIS编码的,现在唯一的问题是从freetype获取正确的glyph到正确的SHIFT_-JIS位序列。但这似乎比我想象的要难。“以身作则”亜" 具有字符码“0x889F”(字节1设置为136,字节2设置为159)-这是根据SHIFT_JIS编码的。因此我调用了函数:

FT_Select_Charmap(face, FT_ENCODING_SJIS);
然后尝试加载带有该字符码的图示符:

FT_Load_Char(face, 0x889F, FT_LOAD_RENDER ); 
但我收到一些随机字形。这不可能是字体特定的问题,因为我已经尝试了不同的字体,结果相同(是的,它们提供了一个shift-jis字符映射)应位于位置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呢


任何建议都会非常有用。谢谢。

如果以后有人发现类似问题: 最后,我将字符代码实时转换为unicode(使用icu4c)。看起来很多日文SJIS字体头都有问题(不能通过freetype枚举选择它们-只有列出其中一种字体的所有可用字符集,然后手动选择正确的字符集-平台ID和编码ID对于所有这些字体也不相同)。但这不是适合我需要的解决方案(因为使用不同的字体),所以我最终决定使用Icu4c

希望这将有助于某人