We're updating the issue view to help you get more done. 

incorrect mark positioning, e.g. on some Telugu clusters

Description

(Note that although this issue is being reported for ICU 3.6, the current code in Subversion does not appear to be changed in this area, so I believe it will still be present.)

ICU layout does not position marks (diacritics) correctly using MarkToBase attachment if there are other marks with non-zero advance between the mark being positioned and its base. This leads to incorrect rendering of the Gautami font (Telugu font shipped with Windows XP, etc).

Compare the character sequence <U+0C30, U+0C4D, U+0C30, U+0C3E> (RA, VIRAMA, RA, AA) as rendered by Uniscribe and by ICU (images to be attached). In both cases, the glyph sequence generated is <ra-consonant, aa-diacritic, conjunct-ra>. With Uniscribe, the conjunct-ra diacritic is placed directly below the base ra glyph, but with ICU it is offset to the right.

This happens because the intervening aa-diacritic has non-zero advance width, which shifts the default (unattached) position of the conjunct-ra. But in performing the mark-to-base attachment action, ICU just looks at the anchor points of the base and the mark, and makes the adjustment on the assumption that the mark is initially positioned at the advance of the base.

In investigating this issue, I have patched MarkToBasePosnSubtables (see attached patch file). This change gives correct rendering for the problem syllables with the Gautami font; however, I expect that similar problems in right-to-left text, and with LigatureToMark and MarkToMark attachments also need to be addressed. It may be that rather than patching all these places individually, there is a better place to make the correction.

Environment

Status

Assignee

John Emmons

Reporter

TracBot

Time Needed

Weeks

tracCreated

Dec 30, 2007, 6:56 PM

tracOwner

emmons

tracProject

ICU4C

tracReporter

jonathan_kew@1a5ff5f8ad9961c8

tracResolution

wontfix

tracStatus

closed

tracWeeks

2

Components

Priority

medium