[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: test putty's shaping



--- ahmad khalifa <ahmadkhalifa at hotmail dot com> wrote:
> shaping should be working almost fine BUT, you have to minimise and maximize 
> for the shaping to be done... i.e the characters will look broken, minimize
> the window and then pull it back up, everything should look fine...

Sounds like you need to inject a 'redraw' here and there to flush out
your visual buffer's content to the screen - no biggie.

> note: i have implemented a simple flipping function, that flips arabic
> chars so each word's chars will be laid from R to L, but the words
> themselves from L to R...

I don't think this will last, but its a good proofing exercise.

> the .exe is here
> http://ahmadkhalifa.tripod.com/putty/putty.exe

Will give it a try (are others testing as well ??)

> some issues left...
> - the redraw thing... (will ask Simon about.. although he said in his chat 
>   session that it should be done at the top of the big FOR loop.. between
>   that and the display function inside the loop, all FEXX values are
>   changed to 06XX !!!!)

Yeah, I think the only person that can answer this question correctly
would be the owner of the application's code (ie. Simon), but in all
its no big deal.

> - some chars' spacing is a bit bad.. (no big deal actually)

Not sure I understand - maybe upload some screenshots and provide URLs ?

> - Bidi support... (or should we just keep the flipping function..?)

Definitely Bidi - this flipping, in my opinion, should not even be
considered as an option.

> - Backspacing deletes 4 chars at a time (will check later)

Hehehe.

> - when changing Lam-Alef to its coresponding Glyph, the Alef is left as it 
>   is and the value 06 is changed to FE... i.e the Alef is changed from 0627
>   to FE27, this way it doesnt appear... any 1 know how to deal with this..?
>   keep in mind that i cant mess with the actual buffer, or the display
>   buffer...  should i just leave it as space..?? what if its Medial..?
>   (will keep this issue for later)

I'm not sure how (and I haven't looked at the patch/code), but usually the
way things are done is you have 2 array buffers.  One is the actual content
(call it physical array) and the other is strictly for display (call it
visual).  You need the physical array for such things as cut-n-paste,
inserting within a line, deleting of characters, etc.  With that said, when
you see a LAM followed by ALEF, the visual array should dump the ALEF and
simply replace it with a LAA.  If/when someone goes to delete that LAA, the
physical array should be inspected and its normal to see the LAM pop-up in
its place (mind you shaping is always done on current character, next
character and previous character - or at least that's how I think of it).
Again, this concept of physical/visual array is crucial (also consider
cut-n-pasting - your captured buffer when you cut some text should hold
NON-Shaped characters).

> i'll look at ICU, but i dont think it would benefit much, because its a 
> large Library and Simon wont like that... i do prefer the flipping function,
> maybe a better one that flips the words too...

IBM's ICU is a _massive_ library, PuTTY by all mean will not need or
require most of it.  The idea was to extract the Bidi code from ICU 
(and that should be rather small anyways) and bundle it into PuTTY
(ie. create our own bidi.[ch] files).

> nadim, would you like to give him the update or do we wait for a reply to 
> the first letter..?

I'll ping him again (do please write all you questions down somewhere
so that we can get the most of our time with him).

Keep up the wonderful progress & Salam.

 - Nadim


__________________________________
Do you Yahoo!?
Yahoo! Mail SpamGuard - Read only the mail you want.
http://antispam.yahoo.com/tools