On Friday 06 January 2006 16:43, Frank Meies wrote:
> Rajeev J Sebastian wrote:
> > On Friday 06 January 2006 13:28, Frank Meies wrote:
> >>3. does the error occur, when using only character clusters without any
> >>diacritics/tone marks/etc. (i.e., only use the base character)?
> >
> > I tested this again. It seems, there is no issue when all the characters
> > are only base characters (i.e., no ligatures or other CTL/OTF stuff).
> > Then, I simpy added a single ligature within this text, and immediately
> > the cursor problem became apparent.
>
> ok, one more thing to check: In SwScriptInfo::ThaiJustify(), there is a
> if statement, that should only be passed for base characters. Please
> change the if statement so that it is not true for Malayalam non-base
> characters check what happens.
I will check this though, I'm not very sure what I should do ... for e.g.,

one of the ligatures of Malayalam (unlike Thai) consists of the following:

ka + cd + ka ... of which ka is a base character, and cd is not a combining 
mark. 

In Malayalam, for proper typography, if there are component glyphs within the 
cluster, then they too can be given a additional space, though this must be 
smaller than the space given to clusters. This is probably problematic, so 
let's not get into that here.

>
> One more note: I suspect that the problem lies in the icu layout engine,
> because even without using the thai justified alignment, the text looks
> good on my windows machine, using the Arial Unicode font.
The issue is not of the beauty of the text, rather it is a problem of the 
cursor movement. The problem is that the spaces between characters are not 
computed properly (for some reason). For e.g.,

in one of the tests, I did the following:

ga + cd + la <space> sa

In this, ga+cd+la forms a ligature and is rendered as a single element; so we 
have:

gla <space> sa

Now consider the cursor is just before the ligature gla. Pressing right arrow 
key once, it should move to the left side of the space (right side of gla). 
This happens properly, no problem. 

Pressing it again, we expect the cursor to land on the left side of sa (right 
side of space), but it does not: it lands on top of sa (in other experiments, 
it lands either on the character i.e., <space> has greater than display 
width, or just before the character i.e., <space> has smaller than display 
width).

Another thing to note is that the display is perfect. So, then how can it be 
an ICU issue ? If it was an ICU issue then wouldn't the display also seem to 
have problems ? Also, what about the symptom that changing the zoom level 
sometimes corrects the cursor ?

Looking at the source code and the document that you had referenced, there is 
a kern array which stores the gaps between character (or character 
clusters ?). The cursor uses this for computing the widths for travelling ? 
Does the rendering engine also use this same kern array for the purpose ?

Regards,
Rajeev J Sebastian

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to