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 118301 - ba + halant applied to wrong character
ba + halant applied to wrong character
Status: RESOLVED FIXED
Product: pango
Classification: Platform
Component: indic
1.2.x
Other Linux
: High normal
: 1.4.1
Assigned To: Pango Indic
Pango Indic
Depends on:
Blocks: 113551
 
 
Reported: 2003-07-25 14:28 UTC by Owen Taylor
Modified: 2004-12-22 21:47 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Owen Taylor 2003-07-25 14:28:59 UTC
Trying to keep track of the four different issues in 
bug 113551 was pretty much impossible for me, so splitting
up the comments into separate bug reports.

* unmadindu@Softhome.net (Sayamindu Dasgupta):

2. Baphala
---------------

Pango, for some reasons is confusing between the sequence 09AC 09CD. This
sequence can be substituted by two different lookups  - pres, and blws.
Examples are given below.

pres - জব্দ 
blws - জ্বদ 

[ See:

http://www.nongnu.org/freebangfont/pango_bugs/shot_bugs_gedit.jpg 
http://www.nongnu.org/freebangfont/pango_bugs/shot_bugs_yudit.jpg

for screenshots  - OT ]

I have attached a screenshot of how the above two examples look in Yudit.
More details on blws can be found at
http://www.microsoft.com/typography/otfntdev/bengalot/features.htm
(section on Below-base substitutions)

* Additional Comments From Taneem Ahmed 2003-06-01 01:05

The second patch includes the previous fix for 1a, and fix for 2. 
[ http://bugzilla.gnome.org/showattachment.cgi?attach_id=17022 ]

* Additional Comments From Owen Taylor 2003-06-01 02:55

Regarding 2. - it seems that your change disallows below-base-forms
for all characters, which can't be right, can it?

In a brief look, perhaps the problem is that "reph" is not
being done for U+9AC, which I believe, as the Bengali Ra
should be getting it?

If I make the change of U+9AC from _cb (consonant with below-base,
to _rb, consonant with below base and reph), I get the image
that I've attached above. I have no idea if this is correct
or not, though at least there are different results for the
two sequences....

(If this change is correct, then ICU needs it as well.)

* Additional Comments From Taneem Ahmed 2003-06-01 03:13

U+9AC should be _bb (right now in CVS it is _bb not _cb). Reph is only 
for U+9B0. I am attaching two screenshots with _bb and _rb. As you can 
see for _rb the result is the same, which is not correct. The result should 
be as produced by _bb. 

* Additional Comments From Owen Taylor 2003-06-01 04:04
For 2, OK, my change wasn't right .... I really don't know
anything about Bengali, as you can tell :-). So, do we
have any idea *what* is going wrong? 

The output of indic_ot_reorder, with the features *not*
applied is:

 U+99C U+9AC U+9CD U+9A6
 dist  dist  dist  dist
 rphf  rphf  rphf  rphf
 bwlf              bwlf
 half              half
 pstf              pstf


Tracing through TT_GPOS_Apply_String, the features that
take effect are first, the middle two characters are
combined into a ra-below-base form by 'blwf', then
second, 'blws' combines the first and second glyphs.

Eric would have know better, but I'm wondering if the
problem isn't simply that the features are supposed
to be applied syllable by syllable and we're doing
the whole string at once.

* Additional Comments From Taneem Ahmed 2003-06-01 04:54

For 2, the problem is with the tags. Consider the following two inputs: 
U+99C U+9AC U+9CD U+9A6 
U+99C U+9CD U+9AC U+9A6 
 
After reorder, both should be (and is): 
U+99C U+9AC U+9CD U+9A6 
 
The difference is in the tags. For the first case, we should have blwf_p 
for U+9AC U+9CD. With out the patch I proposed, pango sets blwf_p by 
default to everything, as result to the second case too. 

* Additional Comments From Owen Taylor 2003-06-01 10:49

About 2, one concern would be a case where you have 
a subscript form beneath a dead consonant 
(C + virama + C_below + virama + C)
or devanagari ra, this is described in R8 of the
Unicode book's Devanagari section (Chapter is available
for download from 
http://www.unicode.org/versions/Unicode4.0.0/.)

R8 is specifically mentioned as applying to other subscript
consonants for Gurmukhi in the Unicode chapter as well.

So, you only want to supress blwf on the *first* 
consonant of the syllable, not on all pre-base consonants.

So, something as simple as:

 gulong tag = (i == baseLimit) ? half_p : blwf_p

may be right, but I'd really like to get Eric Mader to 
look at this before we change things, since this affects
all Indic scripts.

* Additional Comments From Taneem Ahmed 2003-06-01 16:50

And your suggestion "gulong tag = (i == baseLimit) ? half_p : blwf_p" 
does work.
Comment 1 Owen Taylor 2004-07-30 17:50:22 UTC
Filed as ICU bug:

 http://www.jtcsv.com/cgibin/icu-bugs?findid=4025

change committed:

Fri Jul 30 13:33:49 2004  Owen Taylor  <otaylor@redhat.com>
 
        * modules/indic/indic-ot.c (indic_ot_reorder): Suppress
        blwf on the first consonant in a syllable. (#118301,
        Taneem Ahmed)