--- tqt3/src/kernel/qscriptengine_x11.cpp.fontrendering-ml_IN-bz#209097 2012-02-13 19:10:01.000000000 +0100 +++ tqt3/src/kernel/qscriptengine_x11.cpp 2012-02-13 21:36:07.227917886 +0100 @@ -871,7 +871,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, @@ -1274,6 +1274,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++) { @@ -1550,6 +1560,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 TQChar *)reordered.data(), len, item->glyphs, item->advances, &item->num_glyphs, item->flags & TQTextEngine::RightToLeft) != TQFontEngine::NoError) return FALSE; @@ -1661,6 +1680,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:");