在我们的语言中,我们在写作中使用阿拉伯字符,但存在一些差异, icu的ushape.c(阿拉伯塑造者)只适用于主要的阿拉伯字符,并且不能塑造我的语言特定字符(即0x6D5等)我改变了ushape.c以使用我的语言并且它在字符上工作得很好,是0x649,在阿拉伯语中他们只有2个形状,在我的语言中我们有4个形状。
我改变了第183行
1 + 256 * 0x7F,/*0x0649*/
到
1+2+8 + 256 * 0x98 /*0x649*/
并更改第121行
static const UChar yehHamzaToYeh[] =
{
/* isolated*/ 0xFEEF,
/* final */ 0xFEF0
};
到
static const UChar yehHamzaToYeh[] =
{
/* isolated */0xFEEF,
0xFBE8, // my language specific
0xFBE9,// my language specific
/* final */ 0xFEF0
};
来自ushape.c
现在它可以生成3个没有问题的形状(开始,隔离和最终),但中间形状显示为正方形(缺少字符)。
我尝试用其他数字替换“* 0x98”,但这是我能得到的最好的结果。
我该怎么办?
答案 0 :(得分:0)
维吾尔人?我与几个人讨论了维吾尔族的渲染问题,而不是这个问题,但总的来说。
当你说你得到一个正方形时,你会得到什么Unicode字符?
你真正应该做的是向ICU提交一个错误并在那里讨论它。这是功能请求,而不是使用问题。
我生锈的回忆是,对于维吾尔来说,它会对形状进行不同的使用,你会希望在整形器上有一个不同的模式。
答案 1 :(得分:0)
ICU确实似乎在使用某些语言进行整形方面存在问题,例如:乌尔都语。
然而,您的特定角色649可能不是您正在寻找的角色。
U+649 is alef maksura看起来与ICU正确塑造的Farsi Yeh U+6cc相同。
他们有不同的演示形式: Alef maksura只有孤立的最终形式:U+feef U+fef0 Farsi yeh有四种形式:U+fbfc U+fbfd U+fbfe U+fbff