[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: CALL FOR HELP ON ABIWORD
- To: General Arabization Discussion <general at arabeyes dot org>
- Subject: Re: CALL FOR HELP ON ABIWORD
- From: Mohammed Yousif <mhdyousif at gmx dot net>
- Date: Mon, 14 Jun 2004 23:22:44 +0300
- User-agent: KMail/1.6.1
On إثنين 14 يونيو 2004 10:54, Mohammed Sameer wrote:
>
> Guys, Please keep all the discussions on the mailing list.
Sorry, that was because we were using Arabic, and Arabic shouldn't be used
in this list but ISA we will keep the discussions here.
> I want to help, Mohammed yousef, what's there to be done ?
> I'm not a C++ coder, But i'll try to help if I can.
Excellent timing!
The only thing left (besides the other issues that will show up while
testing) is the ligatures drawing code.
Currently, there is a non-working algorithm (but a brilliant one) that
is supposed to handle this.
Shaping is done normally, for ligatures, the two characters are removed
and the ligature is added in the position of the first one.
In the position of the second character, a special indicator(called a
Ligature Place Holderin abiword) is added.
All of this is working good.
To draw the text, it's first shaped like I explained above, then the shaped
text is fed to the function GR_XPRenderInfo::_stripLigaturePlaceHolders in
the file abi/src/af/gr/xp/gr_RenderInfo.cpp.
This function is responsible for removing the place holders and setting the
widths of each glyph in the shaped text.
It removes any place holder it sees from the buffer, and add the appropriate
width for it (currently it assumes the width of the ligature is the sum of
the widths of the two original characters).
It also handles Latin ligatures (i.e. the text can be fed to it as
placeholder then the ligature or the ligature then the placeholder
depending on whether the text being either RTL or LTR)
It also tried to be even smarter and draws the two separate characters
instead of the ligature if needed (i.e while selecting the lam but not the
alef)
But as you will see, this function doesn't work as expected, it needs to be
fixed.
I could really use your help, please get the snapshot from the link in my
previous post.
Thanks,
--
Mohammed Yousif
Egypt