1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
--- qt-x11-free-3.3.6/src/kernel/qscriptengine_x11.cpp.bak 2006-10-13 13:21:37.000000000 +0800
+++ qt-x11-free-3.3.6/src/kernel/qscriptengine_x11.cpp 2006-10-13 13:57:36.000000000 +0800
@@ -868,7 +868,7 @@
None, None, None, None,
None, None, None, Post,
- Post, None, Below, None,
+ None, None, None, None,
None, Post, None, None,
None, None, None, None,
None, None, Post, Post,
@@ -1271,6 +1271,16 @@
int base = 0;
int reph = -1;
+ //for the special conjuctions about Cons+0d4d+0d30 and Cons+0d40+0d31 of Malayalam
+ bool is_special_conjuction_malayalam = false;
+
+ if ((len == 3) &&
+ ((reordered[2] == 0x0d30) || (reordered[2] == 0x0d31)) &&
+ (reordered[1] == 0x0d4d) &&
+ ((reordered[0] >= 0x0d15) && (reordered[0] <= 0x0d39))) {
+ is_special_conjuction_malayalam = true;
+ }
+
#ifdef INDIC_DEBUG
IDEBUG("original:");
for (i = 0; i < len; i++) {
@@ -1547,6 +1557,15 @@
reph = i;
}
+ //for the special conjuctions about Cons+0d4d+0d30 and Cons+0d40+0d31 of Malayalam
+ if (is_special_conjuction_malayalam) {
+ unsigned short temp;
+
+ temp = reordered[0];
+ reordered[0] = reordered[2];
+ reordered[2] = temp;
+ }
+
if (item->font->stringToCMap((const QChar *)reordered.data(), len, item->glyphs, item->advances,
&item->num_glyphs, item->flags & QTextEngine::RightToLeft) != QFontEngine::NoError)
return FALSE;
@@ -1658,6 +1677,15 @@
// halant always applies
+ //for the special conjuctions about Cons+0d4d+0d30 and Cons+0d40+0d31 of Malayalam
+ if (is_special_conjuction_malayalam) {
+ unsigned int temp;
+
+ temp = properties[0];
+ properties[0] = ~PreSubstProperty;
+ properties[2] = temp;
+ }
+
#ifdef INDIC_DEBUG
{
IDEBUG("OT properties:");
|