After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 356685 - [or_IN] Rendering of consonant+0x0B4D+0x0B2F is wrong
[or_IN] Rendering of consonant+0x0B4D+0x0B2F is wrong
Status: RESOLVED FIXED
Product: pango
Classification: Platform
Component: indic
unspecified
Other All
: Normal normal
: ---
Assigned To: Behdad Esfahbod
Pango Indic
Depends on:
Blocks:
 
 
Reported: 2006-09-19 06:53 UTC by Rahul Bhalerao
Modified: 2006-10-02 21:38 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
my patch (876 bytes, patch)
2006-09-20 08:49 UTC, LingNing Zhang
rejected Details | Review
My Patch for Oriya rendering (1.58 KB, patch)
2006-09-21 11:50 UTC, Rahul Bhalerao
committed Details | Review

Description Rahul Bhalerao 2006-09-19 06:53:02 UTC
Please describe the problem:
Comnination of (0x0B4D+0x0B2F) does not work. This is due to the reordering done by pango. If the GSUB in font is written according to Pango's order, i.e.(0x0B2F+0x0B4D) then the consonant following this combination gets combined with the 0x0B4D to form its own below-base form.

Steps to reproduce:
1. Install an Oriya font
2. Open gedit
3. Enable Oriya inscript keymap
4. Type the key sequence:  k + d + /
5. a] the combination will not work
   b] if it works, type any other consonant, e.g. keystroke 'p'   


Actual results:
Either the key sequence "k + d + / " does not produce required combination or
if it produces the combination, then on following consonant the combination gets changed.

Expected results:
The combinations of form (consonant+0x0B4D+0x0B2F) should produce proper post base form of 0x0B2F. And this combination should not get changed if any other consonant follows it.

Does this happen every time?
yes

Other information:
In the indic-ot-class-table.c, oriya character 0B2F is declared as 'pb'. Changing it to 'ct' solves the problem.
Comment 1 LingNing Zhang 2006-09-20 08:49:44 UTC
Created attachment 73073 [details] [review]
my patch

I wrote a patch for fixing this bug.
Comment 2 Rahul Bhalerao 2006-09-21 06:37:49 UTC
The problem described above occurs only in case of the oriya characters which have '_ct' bit in the oryaCharClass[]. For all other consonants which have '_bb' bit do not have this problem. Thus the '_pb' bit for 0b2f is actually correct.

In Oriya, except for 0b2f and 0b5f which are post base, all other consonants have below base form in their conjuncts with other consonants. 
Since most of these consonants have '_ct' bit, the below base ligture rules for them have to be written accordingly in the font. Due to this, when post base form ends with a 0b4d at the end of cluster, a following '_ct' consonant forms its own below base form since its GSUB is not according to the reordering required.

The solution to this problem is to assign '_bb' to all of the consonants which form below base form. I have created and tested a patch with this implementation.
This makes pango even compatible with uniscribe. 
Comment 3 Rahul Bhalerao 2006-09-21 11:50:34 UTC
Created attachment 73134 [details] [review]
My Patch for Oriya rendering

This patch fixes the rendering problem of oriya consonants in their below base or post base forms.
Comment 4 Behdad Esfahbod 2006-10-02 21:38:56 UTC
2006-10-02  Behdad Esfahbod  <behdad@gnome.org>

        Bug 356685 – [or_IN] Rendering of consonant+0x0B4D+0x0B2F is wrong
        Patch from Rahul Bhalerao

        * modules/indic/indic-ot-class-tables.c:  Change _ct to _bb for
        various Orya characters.