2010-10-04 30 views
2

在我们的言语中,我们使用阿拉伯字符书写有一些差异, icu的ushape.c(阿拉伯语成形器)只适用于主要阿拉伯字符和dosn't形状我的语言特定字符(即0x6D5等)我已经改变了us形状。 c与我的语言一起工作,除了在字符方面运行良好,即0x649,阿拉伯语只有2个形状,在我的语言中我们有4个形状。icu4c - > ushape.c塑造中缺少字符?

心中已经改变线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 
    }; 

from ushape.c

现在它可以产生3个形状没有问题(开始,孤立和最终),但中间形状显示为正方形(缺少字符)。

我试着用其他数字代替“* 0x98”,但是这个最好的我可以得到。

我该怎么办?

回答

0

维吾尔族?我与几个人讨论了维吾尔族的渲染,而不是这个问题,但总的来说。

当你说你得到一个正方形时,你会得到什么Unicode字符?

你真的应该做的是向ICU提交一个错误并在那里讨论它。这是功能请求,而不是使用问题。

我生疏的回忆是,对于维吾尔族来说,它对造型有不同的用途,并且你希望在造型上基本上有不同的模式。

+0

是的,它是维吾尔族。 我不知道哪个字符是suqare,它只出现在webkit浏览器中。 顺便说一句,jave版本的阿拉伯语整形器(icu4j)没有这个问题,相反它有一个给中间形式0x649的问题,它应该给孤立的形式 感谢您的回复,我会尝试与icu的邮件列表 – avar 2010-10-05 09:39:36

+0

欢迎:您应该直接调用该函数并测试其输入/输出。否则,我们不知道其他层是否在操纵它。如果你写ML和/或提交一个bug,你应该注意你期望和得到的是什么输入/输出。如果你能用Java和C编写一个测试,显示出更好的问题。 – 2010-10-05 18:58:33

+0

好吧,我会尝试一个只有塑形的测试,看看那个suqare是什么角色。 – avar 2010-10-06 06:29:12

0

ICU确实似乎在使用某些语言进行整形时存在问题,例如,乌尔都语。

但是,您的特定字符649可能不是您正在查找的字符。

U+649 is alef maksura看起来与Farsi Yeh U+6cc相同,它由ICU正确成形。

他们有不同的表现形式: Alef的maksura只具有隔离和最终形式:U+feefU+fef0 波斯语叶有四种形式:U+fbfcU+fbfdU+fbfeU+fbff