Bug 192934

Summary: [ml_IN]Triple Combination not working
Product: [Fedora] Fedora Reporter: Ani Peter <apeter>
Component: fonts-indicAssignee: Rahul Bhalerao <b.rahul.pm>
Status: CLOSED RAWHIDE QA Contact:
Severity: medium Docs Contact:
Priority: medium    
Version: rawhideCC: b.rahul.pm, eng-i18n-bugs, swgoswam
Target Milestone: ---Keywords: i18n
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2007-05-02 07:34:51 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 150223    
Attachments:
Description Flags
Patch none

Description Ani Peter 2006-05-24 11:36:33 UTC
Description of problem:
In Malayalam, we have a lot of conjuncts. 
The conjuncts(lets call X) are formed with the combination of two consonants(say
A and B) with another character called chillu (U + 0D4D). 
Thus we have the equation A + chillu + B = X

Here, if we use another chillu and then another consonant(say C), the conjuct X
gets splitted up into its original form ie, A and B, and the final result will be 
     A  with chillu and another conjuct formed using B and C if any GSUB rule
exist for these B and C.

This splitting doesnt happen if C = U + 0D35 or U + 0D2F or U + 0D30

This is found to happen with the following conjuncts:
  U+0d15  U+0d4d  U+0d35 
  U+0d16  U+0d4d  U+0d35 
  U+0d17  U+0d4d  U+0d35 
  U+0d18  U+0d4d  U+0d35 
  U+0d19  U+0d4d  U+0d35 
  U+0d1a  U+0d4d  U+0d35 
  U+0d1b  U+0d4d  U+0d35 
  U+0d1c  U+0d4d  U+0d35 
  U+0d1d  U+0d4d  U+0d35 
  U+0d1e  U+0d4d  U+0d35 
  U+0d1f  U+0d4d  U+0d35 
  U+0d20  U+0d4d  U+0d35 
  U+0d21  U+0d4d  U+0d35 
  U+0d22  U+0d4d  U+0d35 
  U+0d23  U+0d4d  U+0d35 
  U+0d24  U+0d4d  U+0d35 
  U+0d25  U+0d4d  U+0d35 
  U+0d26  U+0d4d  U+0d35 
  U+0d27  U+0d4d  U+0d35 
  U+0d28  U+0d4d  U+0d35 
  U+0d2a  U+0d4d  U+0d35 
  U+0d2b  U+0d4d  U+0d35 
  U+0d2c  U+0d4d  U+0d35 
  U+0d2d  U+0d4d  U+0d35 
  U+0d2e  U+0d4d  U+0d35 
  U+0d30  U+0d4d  U+0d35 
  U+0d31  U+0d4d  U+0d35 
  U+0d32  U+0d4d  U+0d35 
  U+0d33  U+0d4d  U+0d35 
  U+0d34  U+0d4d  U+0d35 
  U+0d35  U+0d4d  U+0d35 
  U+0d36  U+0d4d  U+0d35 
  U+0d37  U+0d4d  U+0d35 
  U+0d38  U+0d4d  U+0d35 
  U+0d39  U+0d4d  U+0d35 
  U+0d15  U+0d4d  U+0d15 
  U+0d1a  U+0d4d  U+0d1a 
  U+0d1f  U+0d4d  U+0d1f 
  U+0d24  U+0d4d  U+0d24 
  U+0d2a  U+0d4d  U+0d2a 
  U+0d17  U+0d4d  U+0d17 
  U+0d1c  U+0d4d  U+0d1c 
  U+0d21  U+0d4d  U+0d21 
  U+0d26  U+0d4d  U+0d26 
  U+0d2c  U+0d4d  U+0d2c 
  U+0d19  U+0d4d  U+0d19 
  U+0d1e  U+0d4d  U+0d1e 
  U+0d23  U+0d4d  U+0d23 
  U+0d28  U+0d4d  U+0d28 
  U+0d2e  U+0d4d  U+0d2e 
  U+0d2f  U+0d4d  U+0d2f 
  U+0d32  U+0d4d  U+0d32 
  U+0d35  U+0d4d  U+0d35 
  U+0d36  U+0d4d  U+0d36 
  U+0d38  U+0d4d  U+0d38 
  U+0d33  U+0d4d  U+0d33 
  U+0d15  U+0d4d  U+0d24 
  U+0d15  U+0d4d  U+0d37 
  U+0d17  U+0d4d  U+0d28 
  U+0d17  U+0d4d  U+0d2e 
  U+0d19  U+0d4d  U+0d15 
  U+0d1a  U+0d4d  U+0d1b 
  U+0d1c  U+0d4d  U+0d1e 
  U+0d1e  U+0d4d  U+0d1a 
  U+0d23  U+0d4d  U+0d1f 
  U+0d23  U+0d4d  U+0d2e 
  U+0d24  U+0d4d  U+0d25 
  U+0d24  U+0d4d  U+0d2e 
  U+0d24  U+0d4d  U+0d2d 
  U+0d24  U+0d4d  U+0d38 
  U+0d26  U+0d4d  U+0d27 
  U+0d28  U+0d4d  U+0d24 
  U+0d28  U+0d4d  U+0d25 
  U+0d28  U+0d4d  U+0d26 
  U+0d28  U+0d4d  U+0d27 
  U+0d28  U+0d4d  U+0d2a 
  U+0d28  U+0d4d  U+0d2e 
  U+0d28  U+0d4d  U+0d31 
  U+0d2c  U+0d4d  U+0d26 
  U+0d2c  U+0d4d  U+0d27 
  U+0d36  U+0d4d  U+0d1a 
  U+0d37  U+0d4d  U+0d1f 
  U+0d38  U+0d4d  U+0d25 
  U+0d39  U+0d4d  U+0d28 
  U+0d39  U+0d4d  U+0d2e 


Version-Release number of selected component (if applicable):


How reproducible:
Always

Steps to Reproduce:
Explaining with one example.
1.Open kbabel application
2.Type U + 0D15 (say A)
3.Type U + 0D4D (chillu)
4.Type U + 0D15 (say B)
5.Type U + 0D4D (chillu)
6.Type any consonant from (U + 0D15) - (U + 0D39) except (U + 0D35),(U + 0D2F),
(U + 0D30) (say C)

  
Actual results:
When the above steps are done, if there exists a conjuct for the combination B
and C, then the already formed conjuct of A and B gets splitted and new conjuct
is formed using B and C, else they are simply displayed in the key sequence.

Expected results:
When the above steps are done, the second chillu must be applied to the conjuct
formed using A and B ie, this must be considered as a single character and then
the rule must be aplied to that.

Additional info:

Comment 1 Darshan Santani 2006-05-25 09:37:00 UTC
*Wrong glyph class for ligatures* might be causing this issue.

Comment 2 Rahul Bhalerao 2006-05-25 10:38:19 UTC
This is not a problem at all! Infact the font has been developed with that intent.
The class definition is not a problem. Though the shape change of ligatures can
be avoided by changing the flag for ligature to be 'akhn' i.e. the feature
'Akhand', which generally can not be expected for all the ligatures. Though if
there are some special features in malayalam regarding the more than two
consonant combinations, Ani will have to give detailed requirements, shapes of
the final glyphs. The problem can be then solved in font file, by changing
feature flags and  may require additional intermediate half glyphs for the
ligatures, as in case of the ligature 'kSsa'(u0915+u094d+u0937). 

Ani, please give your shape requirements for the final glyphs in all these
cases, so that the solution can be finalized.

Comment 3 Ani Peter 2006-05-26 06:27:01 UTC
Rahul,
In malayalam we have different type of conjuncts. Each conjunct once formed are
considered as another stand alone characters and if a chillu is followed by them
it should be applied to the the conjuct considering it as one single character.
Here, problem occurs in two type of conjuncts 
Type 1:
(consonant + chillu + same consonant), which is used to stress emphasis on that
consonant.
They are:
[unicodes and the corresponding keys]
(U +0D15) + (U + 0D4D) + (U + 0D15)   // key K + key D + key K
(U +0D17) + (U + 0D4D) + (U + 0D17)   //  key I + key D + key I
(U +0D19) + (U + 0D4D) + (U + 0D19)   // (shift+key U) + key D + (shift+key U)
(U +0D1A) + (U + 0D4D) + (U + 0D1A)   // key ; + key D + key ;
(U +0D1C) + (U + 0D4D) + (U + 0D1C)   // key P + key D + key P
(U +0D1E) + (U + 0D4D) + (U + 0D1E)   // (shift+key ]) + key D + (shift+key ])
(U +0D1F) + (U + 0D4D) + (U + 0D1F)   // key ' + key D + key '
(U +0D21) + (U + 0D4D) + (U + 0D21)   // key [ + key D + key [
(U +0D23) + (U + 0D4D) + (U + 0D23)   // (shift+key C) + key D + (shift+key C)
(U +0D24) + (U + 0D4D) + (U + 0D24)   // key L + key D + key L
(U +0D26) + (U + 0D4D) + (U + 0D26)   // key O + key D + key O
(U +0D28) + (U + 0D4D) + (U + 0D28)   // key V + key D + key V
(U +0D2A) + (U + 0D4D) + (U + 0D2A)   // key H + key D + key H
(U +0D2C) + (U + 0D4D) + (U + 0D2C)   // key Y + key D + key Y
(U +0D2E) + (U + 0D4D) + (U + 0D2E)   // key C + key D + key C
(U +0D2F) + (U + 0D4D) + (U + 0D2F)   // key / + key D + key /
(U +0D32) + (U + 0D4D) + (U + 0D32)   // key N + key D + key N
(U +0D33) + (U + 0D4D) + (U + 0D33)   // (shift+key N) + key D + (shift+key N)
(U +0D35) + (U + 0D4D) + (U + 0D35)   // key B + key D + key B
(U +0D36) + (U + 0D4D) + (U + 0D36)   // (shift+key M) + key D + (shift+key M)
(U +0D38) + (U + 0D4D) + (U + 0D38)   // key M + key D + key M

NOTE: 0D31 (key J) also falls in this category, but does not have  problem.

Type 2:
(consonant + chillu + another consonant)

(U + 0D15) + (U + 0D4D) + (U + 0D24)  // key K + key D + key H
(U + 0D15) + (U + 0D4D) + (U + 0D37)  // key K + key D + (shift+key ,)
(U + 0D17) + (U + 0D4D) + (U + 0D28)  // key I +key D + key V
(U + 0D1A) + (U + 0D4D) + (U + 0D1B)  // key; + key D + (shift+key ;)
(U + 0D1C) + (U + 0D4D) + (U + 0D1E)  // key P + key D + (shift+key ])
(U + 0D1E) + (U + 0D4D) + (U + 0D1A)  // (shift+key ]) + key D + key ;
(U + 0D23) + (U + 0D4D) + (U + 0D1F)  // (shift+key C) + key D + key '
(U + 0D23) + (U + 0D4D) + (U + 0D2E)  // (shift+key C) + key D + key C
(U + 0D24) + (U + 0D4D) + (U + 0D25)  // key L + key D + (shift+key L)
(U + 0D24) + (U + 0D4D) + (U + 0D2E)  // key L + key D + key C
(U + 0D24) + (U + 0D4D) + (U + 0D2D)  // key L + key D + (shift+key Y)
(U + 0D24) + (U + 0D4D) + (U + 0D38)  // key L + key D + key M
(U + 0D26) + (U + 0D4D) + (U + 0D27)  // key O + key D + (shift+key O)
(U + 0D28) + (U + 0D4D) + (U + 0D25)  // key V + key D + (shift+key L)
(U + 0D28) + (U + 0D4D) + (U + 0D26)  // key V + key D + key O
(U + 0D28) + (U + 0D4D) + (U + 0D27)  // key V + key D + (shift+key O)
(U + 0D28) + (U + 0D4D) + (U + 0D2A)  // key V + key D + key H
(U + 0D28) + (U + 0D4D) + (U + 0D2E)  // key V + key D + key C
(U + 0D2C) + (U + 0D4D) + (U + 0D26)  // key Y + key D + key O
(U + 0D2C) + (U + 0D4D) + (U + 0D27)  // key Y + key D + (shift+key O)
(U + 0D36) + (U + 0D4D) + (U + 0D1A)  // (shift+key M) + key D + key ;
(U + 0D37) + (U + 0D4D) + (U + 0D1F)  // (shift+key ,) + key D + key '
(U + 0D38) + (U + 0D4D) + (U + 0D25)  // key M + key D + (shift+key L)
(U + 0D39) + (U + 0D4D) + (U + 0D28)  // key U + key D + key V



Comment 5 Rahul Bhalerao 2006-09-26 22:10:01 UTC
Created attachment 137177 [details]
Patch 

This patch changes all the ligature tags to 'akhn', and thus solve the problem
of triple combinations. It also fixes few other bugs, #206387, #202163.

Comment 6 Lawrence Lim 2006-09-29 03:11:10 UTC
Which group (Pri A, B, or C) of the bugs does this belong to??

Comment 7 Rahul Bhalerao 2006-09-29 04:20:39 UTC
Its a Pri B bug.

Comment 8 A S Alam 2007-05-02 07:34:51 UTC
it is working fine, as mention in comment #3,

tested with following version:
fonts-malayalam-2.1.5-1.fc7