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

Putty: meeting's log

salam all.. main ideas : 1. disabling Windows from shaping and messing up the letters. 2. getting the bidi and shaping into putty(as specified later in the log).

here is the log for yesterdays meeting... Enjoy it :)

- Musab.
"The Glory Is not In Never Falling, But In Rising EveryTime You Fall."

--- Log opened Tue Jan 27 11:57:49 2004
11:57 -!- Irssi: Log file putty opened
11:57 #arabeyes: <@nadim> osd1000: simon, I take it ?
11:58 #arabeyes: <osd1000> No, another PuTTY developer. Simon should be here soon, I gather.
11:58 #arabeyes: <@nadim> osd1000: ah, welcome then.
11:58 #arabeyes: <@nadim> Al-Rawi: you here ?
11:58 #arabeyes: <Al-Rawi> hi osd1000 how are u
11:58 #arabeyes: <osd1000> (I'm Owen; I did Arabic for my degree, so that's my interest.)
11:58 #arabeyes: <osd1000> I'm well, thanks.
11:58 #arabeyes: <Al-Rawi> nadim: avilable with different flavors :)
11:58 #arabeyes: <@nadim> osd1000: excellent
11:58 #arabeyes: <@nadim> Al-Rawi: vanilla please :-)
11:58 -!- sgt [Robaw4AGJ9 at cpc2-cmbg2-6-0-cust74 dot cmbg dot cable dot ntl dot com] has joined #arabeyes
11:59 #arabeyes: <Al-Rawi> osd1000: i am working on Putty's bidi ..
11:59 #arabeyes: <osd1000> Aha, that's a Simon.
11:59 #arabeyes: <Al-Rawi> nadim: :)
11:59 #arabeyes: <sgt> Hello.
11:59 #arabeyes: <@nadim> sgt: howdy there
11:59 #arabeyes: <Al-Rawi> hello sgt
11:59 #arabeyes: <@nadim> should we get this party started ?
11:59 #arabeyes: <@nadim> Al-Rawi: you have an agenda in mind ?
11:59 #arabeyes: <@nadim> ie. to drive
12:00 #arabeyes: <Al-Rawi> nadim: sure .. lets start with my ideas about the solution
12:00 #arabeyes: <@nadim> sgt: as you are well aware we (the Arab community) would very much like to see proper Bidi in Putty as it is a very limiting option not to have.
12:01 #arabeyes: <@nadim> Al-Rawi and Kamal before him (kamal moved on to something else) are looking very seriously into what is needed to get that done and accomplished.
12:01 #arabeyes: <@nadim> </end of background> :-)
12:04 #arabeyes: <@nadim> I'm having horrible Lag time btw (200+)
12:06 #arabeyes: <Al-Rawi> sgt: well .. putty doesn't show arabic letters in the proper way .. order and shaping
12:06 #arabeyes: <nadim> sorry - I had 200+ lag time
12:07 #arabeyes: <sgt> Al-Rawi: Yes, that much is obvious :-) But partly that's because the terminal emulator doesn't handle Arabic characters any differently from (say) Roman ones, but also it's because the Windows text display has its own ideas about this. Which half are we trying to solve right now?
12:07 #arabeyes: <nadim> Al-Rawi: actually putty (in windows-XP and 2000) shows shaping very well
12:08 #arabeyes: <nadim> Al-Rawi: the Arabic is rendered fine, it is missing the Bidi - I don't think the rendering of arabic was intended (from what I gather), but it is there posibly as a relic of windows' way of doing things
12:08 #arabeyes: <sgt> nadim: Is that actually true, or is it only true as long as you don't try to move the cursor back over the text?
12:08 #arabeyes: <Al-Rawi> sgt: well since in windows XP shaping is fine then it is bidi
12:08 #arabeyes: <sgt> No, I don't think shaping *is* fine.
12:08 #arabeyes: <sgt> My understanding of the current situation is:
12:08 #arabeyes: <nadim_> sgt: I'm not 100% sure - but visually you can see things (I can 'less' file without issue)
12:10 #arabeyes: <Al-Rawi> are we all fine here ? :)
12:10 #arabeyes: <sgt> The PuTTY terminal emulator doesn't handle Arabic characters specially at all. It stores them in the screen array in the order it's given them.
12:10 #arabeyes: <@nadim> yup
12:10 #arabeyes: <@nadim> sgt: so why do they "appear" to look OK then - is windows getting involved somehow ?
12:10 #arabeyes: <sgt> Then, when the Windows front end tries to display those characters, it *also* does not handle them specially, and it passes a string to the Windows TextOut function containing precisely the characters that were originally sent to the terminal emulator, in the same order they were sent.
12:11 #arabeyes: <@nadim> ah.
12:11 #arabeyes: <sgt> But the Windows TextOut function tries to be clever, and does shaping and stuff, and that's why it currently looks shaped.
12:11 #arabeyes: <Al-Rawi> sgt: putty should deal with arabic letters so that windows wont do anything about them
12:11 #arabeyes: <osd1000> al-rawi: are you sure? That sounds like a bad idea to me since it requires that all the knowledge is in PuTTY when it is _already_ in Windows.
12:11 #arabeyes: <@nadim> sgt: is there a way to disable that TextOut function in windows (in passing) ?
12:11 #arabeyes: <sgt> So if you just display text, it might look as if it's worked. But the terminal emulator has its own idea of what characters are where on the screen, and it doesn't know about what TextOut did to them on display. So although it looks fine to begin with, if you then move the cursor back over the text, I predict that it will go weird.
12:12 #arabeyes: <sgt> nadim: I don't know. That's one for the Windows manuals, which I haven't studied yet.
12:12 #arabeyes: <sgt> Al-Rawi: The first question, I think, is what *should* be done by a terminal emulator to Arabic text.
12:12 #arabeyes: <Al-Rawi> sgt: ok continue plz
12:13 #arabeyes: <sgt> Suppose you're using a text editor, or some sort of application which displays full-screen text.
12:13 #arabeyes: <sgt> It needs to allow you to move the cursor to any point on the screen, and insert text there. So it needs to know _precisely_ what is shown on the screen at a given cursor position.
12:14 #arabeyes: <sgt> The xterm philosophy, as I understand it, is that this means the text editor - or in general the server-side application - should handle bidi and shaping, because then it can know exactly what ended up where. If it leaves it to the terminal emulator, it needs to make its own guess about what the terminal emulator actually did.
12:14 #arabeyes: <sgt> On the other hand, obviously if your application is `cat', you don't want _that_ to have to handle shaping.
12:15 #arabeyes: <sgt> So there are certainly _some_ situations in which you obviously want the terminal to do it, but it isn't clear to me that you want it to do it in all situations.
12:15 #arabeyes: <sgt> How much of that makes sense?
12:16 #arabeyes: <@nadim> lots of it does
12:16 #arabeyes: <@nadim> sgt: have you heard of mlterm ?
12:16 #arabeyes: <Al-Rawi> yes
12:16 #arabeyes: <sgt> No, I haven't.
12:16 #arabeyes: <sgt> Does it already deal with this sort of problem?
12:16 #arabeyes: <@nadim> sgt: well mlterm is a bidi terminal emulator that works 99% perfectly with arabic
12:16 #arabeyes: <Naim> Asalamu Alaikum
12:17 #arabeyes: <@nadim> sgt: well, it works with emacs/vim/vi/less/cat/mutt/etc
12:17 #arabeyes: <@nadim> Naim: salam
12:17 #arabeyes: <sgt> OK. And how does it resolve the confusion I describe above? :-)
12:17 #arabeyes: <@nadim> Naim: we are in the middle of meeting
12:17 #arabeyes: <Naim> sorry akhee
12:17 #arabeyes: <@nadim> sgt: the display is dealt with on a line-by-line basis
12:18 #arabeyes: <@nadim> what really happens is the applications don't know anything
12:18 #arabeyes: <@nadim> ie. for instance vim - it can do its own shaping when run stand-alone, but when mlterm is detected - it simply disables that feature and leaves it all to mlterm
12:19 #arabeyes: <@nadim> sgt: does that make sense ?
12:19 #arabeyes: <sgt> nadim: I *think* so. So if the application doesn't know anything, does that mean that mlterm *transforms* the cursor position?
12:19 #arabeyes: <Osax> salma all
12:19 #arabeyes: <@nadim> sgt: yeah
12:19 #arabeyes: <@nadim> Osax: putty meeting (salam)
12:19 #arabeyes: <Osax> nadim, acknowledged. salam
12:19 #arabeyes: <sgt> Right. So where the application thinks it's put the cursor isn't where the cursor ended up, but the cursor and the text are always consistent.
12:19 #arabeyes: * Osax on silent mode
12:19 #arabeyes: <@nadim> sgt: the cursor location is really nothing magical as far as bisi is concerned
12:20 #arabeyes: <@nadim> sgt: yup
12:20 #arabeyes: <sgt> OK, that seems simple enough.
12:20 #arabeyes: <Osax> s/bisi/bidi
12:20 #arabeyes: <sgt> (Any idea how vim `detects' mlterm?)
12:20 #arabeyes: <@nadim> sgt: everything is consistant since there is no magic involved :-) just a systematic visual transformation
12:20 #arabeyes: <@nadim> sgt: environment var
12:20 #arabeyes: <@nadim> sgt: and you are also tell it
12:21 #arabeyes: <osd1000> Presumably mlterm knows not to apply this transformation to Roman script?
12:21 #arabeyes: <@nadim> sgt: keep in mind that ALL bidi-aware applications (and thus shaping friendly) are able to disable both (or either)
12:21 #arabeyes: <@nadim> Osax: bidi works for is you have 100% roman
12:21 #arabeyes: <sgt> nadim: I didn't know that in the first place :-)
12:21 #arabeyes: <@nadim> sorry s/Osax/osd1000/
12:22 #arabeyes: <osd1000> nadim: I think the case where you have a mixture will be quite common in Unix systems.
12:22 #arabeyes: * Osax silentOsax
12:22 #arabeyes: <@nadim> ie. if you run Bidi on all your text _now_ it would look exactly the same - ie. NO harm done at all
12:22 -!- Osax is now known as silentOsax
12:22 #arabeyes: <@nadim> osd1000: it already is :-) and that's why bidi is so needed
12:22 #arabeyes: <@nadim> osd1000: for instance.
12:23 #arabeyes: <@nadim> I get mail in both english and arabic
12:23 #arabeyes: <osd1000> In the same message, yes?
12:23 #arabeyes: <@nadim> if I have bidi enabled, I can see both 100% without any issues.
12:23 #arabeyes: <@nadim> osd1000: your browser _today_ works that way.
12:23 #arabeyes: <@nadim> osd1000: yup
12:23 #arabeyes: <sgt> osd1000: Presumably even if the whole message is in Arabic, parts of the headers will still be in Roman...
12:23 #arabeyes: <@nadim> sgt: yeah, that is fine
12:23 #arabeyes: <osd1000> Good point. (And yes, my browser works that way, at least with most Arabic sites)
12:24 #arabeyes: <@nadim> osd1000: for instance -- http://arabeyes.org/~nadim/ar_utf8
12:25 #arabeyes: <sgt> OK. So is this what you're proposing to do to PuTTY? To keep most of the terminal emulation unchanged, but have it run the bidi+shaping algorithms to transform each line of terminal data on output, and also disable Windows's attempts to do the same thing so that it only gets done once?
12:25 #arabeyes: <@nadim> osd1000: that is a file with both arabic and english (mostly arabic) that I personally use for my tests (to see if arabic is fully there)
12:25 #arabeyes: <Al-Rawi> i think that windows trys to do things by itself becuz it can see that there are RL tages .. so if putty deals with these tags Windows wont interrupt the process and show letters that it wants
12:25 #arabeyes: <@nadim> osd1000: it is UTF-8 encoded
12:25 #arabeyes: <Al-Rawi> i.e this way windows will be diabled .
12:26 #arabeyes: <@nadim> sgt: I think having windows do it for us would be an easier thing to do, no ? and would keep putty small
12:26 #arabeyes: <@nadim> sgt: there are 2 options here
12:26 #arabeyes: <sgt> But if Windows does it, the cursor position and cut and paste won't work properly.
12:26 #arabeyes: <@nadim> 1. go with windows' impleenetaion (whatever that is)
12:27 #arabeyes: <@nadim> 2. disable windows' implementation and include our own (fully)
12:27 #arabeyes: <@nadim> which is easier (or makes more sense) is upto debate, I guess.
12:27 #arabeyes: <sgt> I prefer 2.
12:27 #arabeyes: <@nadim> sgt: why, if you don't mind me asking ?
12:27 #arabeyes: <sgt> Because Windows isn't the only OS to consider. PuTTY already has a Unix port, and at some point it will have a Mac port (or possibly two), and others as well.
12:28 #arabeyes: <@nadim> sgt: noted - but it is a "Win" client :-)
12:28 #arabeyes: <sgt> Windows's implementation of bidi+shaping might work for you, but I'd bet money that not all of the other platforms will work the same.
12:28 #arabeyes: <@nadim> sgt: I'd bet on that too :-)
12:28 #arabeyes: <@nadim> sgt: when do you expect to see other ports (to Mac, etc) ?
12:28 #arabeyes: <@nadim> ie. what timeframe ?
12:29 #arabeyes: <sgt> nadim: At the moment that's how it's advertised, but in the next release the Unix port will be acknowledged as well. PuTTY is becoming a multi-platform piece of software, and I don't want to _start_ tying it to Windows at this stage.
12:29 #arabeyes: <@nadim> sgt: noted.
12:29 #arabeyes: <sgt> Mac port: I don't know. It's half-finished, but our Mac developer has other calls on his time and it's unclear when he'll be back on PuTTY.
12:29 #arabeyes: <@nadim> well, then the discussion is made for us :-)
12:29 #arabeyes: <@nadim> Al-Rawi: I think you are happier that way anyways :-)
12:30 #arabeyes: <sgt> I do think that PuTTY needs to do _something_ about Arabic. (In fact I expected _you_ to be trying to persuade _me_ of that!)
12:30 #arabeyes: <osd1000> sgt: it basically works, as far as having a terminal emulator and being able to make (sortof) SSH connections. IIRC.
12:30 #arabeyes: <Al-Rawi> nadim: yup :)
12:30 #arabeyes: <sgt> osd1000: yes, but there's an enormous to-do-before-release list :-)
12:30 #arabeyes: <@nadim> sgt: that's why we are here
12:30 #arabeyes: <@nadim> sgt: we are not only looking to persuade you - we are looking to work with you to make it happen
12:30 #arabeyes: <sgt> Fine :-)
12:31 #arabeyes: <@nadim> ok, so we kinda know what direction to go with.
12:31 #arabeyes: <osd1000> It's also important to me as a linguist that any support we do isn't tied to Arabic but will work fine with Hebrew, Syriac, and other RTL languages.
12:31 #arabeyes: <@nadim> sgt: we need to know how to disable windows' TextOut abilities then, right ?
12:31 #arabeyes: <@nadim> osd1000: it will
12:31 #arabeyes: <sgt> osd1000: Presumably if we just implement full Unicode bidi+shaping, then other RTL languages will use the bidi and not need the shaping?
12:32 #arabeyes: <sgt> nadim: Yes, I think we do.
12:32 #arabeyes: <@nadim> osd1000: Bidi is a unicode standard that is NOT specific to arabic alone.
12:32 #arabeyes: <@nadim> sgt: exactly
12:32 #arabeyes: <osd1000> sgt: Syriac needs shaping, I think. But yeah.
12:32 #arabeyes: <@nadim> osd1000: don't forget farsi as well :-)
12:32 #arabeyes: <osd1000> That's Arabic script :-)
12:33 #arabeyes: <@nadim> sgt: so there is a way to disable windows' "smarts" (if there is such a thing ;-)
12:33 #arabeyes: <osd1000> Can we disable Windows TextOut functionality just by giving it the pre-shaped Unicode code points?
12:33 #arabeyes: <@nadim> Al-Rawi: you ok with this direction - all makes sense ?
12:33 #arabeyes: <Al-Rawi> TextOut is activated becuz of the tags in the text which putty shows on the screen ...
12:33 #arabeyes: <Al-Rawi> nadim: yes
12:34 #arabeyes: <sgt> What tags? Surely if you just send Arabic and Roman text (like the text file you provided the URL for earlier), there won't *be* any tags? PuTTY won't insert them currently, I'm sure.
12:34 #arabeyes: <@nadim> Al-Rawi: actually TextOut gets activated due to seeing characters in certain region in the character space
12:34 #arabeyes: <Al-Rawi> what i am trying to say .. when putty deals with the tags there wont be any tags that will activat TextOut.
12:34 #arabeyes: <@nadim> sgt: there are no tags
12:34 #arabeyes: <@nadim> Al-Rawi: there are no tags
12:34 #arabeyes: <Al-Rawi> nadim: ic
12:35 #arabeyes: <Al-Rawi> the how can we disable TextOut ?
12:35 #arabeyes: <sgt> Hmmm. I'm currently looking at the documentation for ExtTextOut() on the MSDN website. It has a flag ETO_RTLREADING which claims to affect Arabic and Hebrew.
12:35 #arabeyes: <@nadim> Al-Rawi: bidi (and windows) looks at the line - it seens a character in character-space (unicode space) and says "ah, this character is a RTL (right-to-left) character", let me enable bidi (and/or shaping), etc.
12:35 #arabeyes: <sgt> http://msdn.microsoft.com/library/en-us/gdi/fontext_2ks4.asp?frame=true
12:35 #arabeyes: <uwe> Q:did BiCon compiler and run fine , or is it still under heavy construction ,and will it work for console-emulators in X or will it have "sort of" support for shaping in text mode?
12:36 #arabeyes: <osd1000> I think Windows sees the bog-standard Arabic code points and substitutes in the shaped forms from U+FExx
12:36 #arabeyes: <@nadim> uwe: ask on the 'developer' list - it should be OK though
12:36 #arabeyes: <@nadim> osd1000: I think so too
12:36 #arabeyes: <@nadim> osd1000: and I'm not sure if that is disable'able :-)
12:37 #arabeyes: <osd1000> My theory is that if you pre-shape by doing this substitution yourself, Windows won't touch it.
12:37 #arabeyes: <@nadim> osd1000: it will
12:37 #arabeyes: <@nadim> osd1000: there are certain characters that you can't substiture for
12:37 #arabeyes: <@nadim> like commas or question marks, etc.
12:37 #arabeyes: <osd1000> So they'll be left alone. I don't see the problem.
12:38 #arabeyes: <@nadim> those would show up as Arabic characters and might trigger windows' bidi/shaper, no ?
12:38 #arabeyes: <osd1000> It doesn't matter if Windows' shaper is activated if it has no work to do. If it's already dealing with presentation forms, its work has been done for it.
12:38 #arabeyes: <sgt> osd1000: How about unshaped languages (Hebrew?)? In that case there aren't any pre-shaped code points you can substitute, so it _can't_ be possible to disable Windows bidi by this means.
12:39 #arabeyes: <@nadim> osd1000: in short, I'm not sure what would happen - if you shape/bidi and then give it to windows' API to possible do the same.
12:39 #arabeyes: <@nadim> sgt: agreed.
12:40 #arabeyes: <@nadim> so unless there is an explicit means to disable this, I don't think we can trick it (without getting REALLY nasty)
12:40 #arabeyes: <sgt> I have a feeling the answer might be the ETO_GLYPH_INDEX flag in ExtTextOut().
12:40 #arabeyes: <osd1000> Step back. What feature of Windows bidi (never mind shaping) are we trying to disable here? Do we think that if we give it ayn-lam-mim preshaped and bidid it'll give us mim-lam-ayn?
12:41 #arabeyes: <@nadim> osd1000: it might
12:41 #arabeyes: <sgt> osd1000: As I understand it, we're trying to disable _everything_. We want to pass ExtTextOut() a list of code points, and have it display precisely those glyphs, in precisely the order _we_ specify.
12:42 #arabeyes: <@nadim> sgt: yup, that's option #1 (the one decided upon)
12:42 #arabeyes: <@nadim> sgt: so you are saying with ETO_GLYPH_INDEX we can get that ?
12:42 #arabeyes: <osd1000> ETO_GLYPH_INDEX looks like it might work.
12:42 #arabeyes: * nadim didn't look at the MSDN site
12:42 #arabeyes: <sgt> nadim: That's how I read the manual.
12:43 #arabeyes: <sgt> I think you can call GetCharacterPlacement() to get a list of character positions, and you can pass that lots of nice flags like `don't do bidi' and `don't do shaping'.
12:43 #arabeyes: <sgt> Then you can pass the resulting character placement array to ExtTextOut() via ETO_GLYPH_INDEX, and it ought to work.
12:43 #arabeyes: <sgt> Mind you, I'm currently sitting at a Linux box reading web pages, so this is all theoretical :-)
12:43 #arabeyes: <@nadim> sgt: should be simple enough to test as XP does shaping now :-)
12:44 #arabeyes: <@nadim> sgt: theory leads to practice :-)
12:44 #arabeyes: <@nadim> sgt: putty increasing in the size is not an issue ?
12:44 #arabeyes: <@nadim> sgt: ie. since the library will have to be embedded within ?
12:45 #arabeyes: <osd1000> Which library?
12:45 #arabeyes: <@nadim> bidi
12:45 #arabeyes: <@nadim> and shaping
12:45 #arabeyes: <sgt> nadim: It's a question of not _wasting_ space. I don't mind spending code size on features that are genuinely useful.
12:45 #arabeyes: <osd1000> nadim: What are the licences on that library?
12:45 #arabeyes: <@nadim> sgt: excellent
12:45 #arabeyes: <@nadim> GPL
12:45 #arabeyes: <osd1000> Argh.
12:45 #arabeyes: <@nadim> osd1000: fribidi.sf.net
12:45 #arabeyes: <sgt> And if PuTTY is currently unusable by the Arabic community, that strikes me as a good argument for spending some space :-)
12:45 #arabeyes: <@nadim> or maybe LGPL - not sure
12:45 #arabeyes: <@nadim> sgt: great.
12:46 #arabeyes: <@nadim> osd1000: the shaping code is homegrown - simple stuff
12:46 #arabeyes: <@nadim> Al-Rawi: do you have enough leads to get going ?
12:46 #arabeyes: <@nadim> sgt: how best to work on this then ?
12:46 #arabeyes: <Al-Rawi> nadim: yes except for the part that deals with disabling windows functions
12:47 #arabeyes: <@nadim> Al-Rawi: noted.
12:47 #arabeyes: <sgt> nadim: I think a good starting point would be to see if we really can get Windows behaving linearly. If you can produce a patch to PuTTY that turns the TextOut() calls into something simple and predictable, that would be a good start.
12:47 #arabeyes: <sgt> Though of course we need not _apply_ that patch until the replacement shaping algorithm is available.
12:47 #arabeyes: <Al-Rawi> sgt: i have an idea about where the work should take place i mean the file and the function .
12:47 #arabeyes: <osd1000> fribidi is LGPL; we can't incorporate that in PuTTY but we might be able to link against it as a DLL. I can't remember the LGPL terms.
12:48 #arabeyes: <@nadim> sgt: maybe it would be best for you to drive and for Al-Rawi to assist (via your directions)
12:48 #arabeyes: <sgt> osd1000: There's always the MDPI if we really can't get round the licence issues :-)
12:48 #arabeyes: <osd1000> True...
12:48 #arabeyes: <Naim> meeting finished?
12:48 #arabeyes: <@nadim> Naim: not yet :-)
12:48 #arabeyes: <@nadim> Naim: whatcha need ?
12:49 #arabeyes: <sgt> nadim: I don't have a lot of time to work on this at the moment; I'm currently in the middle of doing some work on my mail client to help me handle the large volume of PuTTY mail.
12:49 #arabeyes: <@nadim> sgt: hehee
12:49 #arabeyes: <sgt> I think it would be better if we agree an outline of how the changes should be made, and then you people work on them and come back to me if you've got something or if you need my help.
12:49 #arabeyes: <@nadim> sgt: could Al-Rawi bother you with emails and the occational IRC session then ?
12:49 #arabeyes: <Naim> nothing, just a chat thats all
12:49 -!- sebfrance3 [seb at lns-th2-11-82-64-171-63 dot adsl dot proxad dot net] has quit ["Client exiting"]
12:49 #arabeyes: <@nadim> Naim: hold then
12:49 #arabeyes: <sgt> Al-Rawi: go on ... ?
12:50 #arabeyes: <Al-Rawi> sgt: would be fine if i ask some technical Q's ?
12:50 #arabeyes: <@nadim> Al-Rawi: before that.
12:50 #arabeyes: <sgt> Al-Rawi: here, or by email? (Either is fine.)
12:50 #arabeyes: <@nadim> sgt: about the outline - will you generate it ?
12:50 #arabeyes: <Al-Rawi> nadim: ?
12:51 #arabeyes: <@nadim> I'm thinking - how/who will we generate that first patch (to disable TextOut), etc - I'd guess we can do the work given some direction/guidence from you, right ?
12:52 #arabeyes: <@nadim> Al-Rawi: just trying to figure out how we will proceed in terms of work and who does what and how to cooperate more closley
12:54 #arabeyes: <@nadim> you guys there ?
12:54 #arabeyes: <sgt> OK. For the TextOut work: I see four calls to ExtTextOutW() in window.c. I think probably the simplest thing is to replace each of those with a call to a wrapper function which does the GetCharacterPlacement bit and adds ETO_GLYPH_INDEX to the flags.
12:54 #arabeyes: <sgt> That shouldn't be a large patch at all; my guess is 20 lines for the wrapper function.
12:55 #arabeyes: <sgt> For the shaping-before-display in the terminal emulator, my immediate thought is that the place to do it is inside do_paint(). That routine loops over every line of the screen, taking data out of the internal terminal structures and copying it into term->disptext. So it probably wants to do shaping while it does that.
12:55 #arabeyes: <sgt> (Probably right at the top of the big loop that iterates over each row.)
12:56 #arabeyes: <Al-Rawi> sgt: what about from_backend() ??
12:56 #arabeyes: <sgt> Then the difficult bit is translating screen positions _back_ into terminal coordinates: when the user clicks on text to select it, they need to select the characters they actually pointed at.
12:56 #arabeyes: <Al-Rawi> i mean shouldn't we do both of bidi and shaping there b4 calling the add function ?
12:57 #arabeyes: <sgt> Al-Rawi: I thought we agreed half an hour ago that the right thing to do is to keep the _internal_ terminal data structures the way they always have been, but to transform them on output.
12:57 #arabeyes: <@nadim> its only the visual that we need to change
12:57 #arabeyes: <Al-Rawi> sgt: the data structure wont change .. it is the contents that will
12:58 #arabeyes: <sgt> Al-Rawi: sorry, the contents is what I meant. My understanding is that we aren't changing the terminal _emulation_ algorithm, only putting a filter on how the results of that algorithm are seen by the user.
12:59 #arabeyes: <Al-Rawi> sgt: so the displaying function will take care of bidi and shaping ..
12:59 #arabeyes: <sgt> That's what I thought we decided, yes.
12:59 #arabeyes: <Al-Rawi> ic
12:59 #arabeyes: <@nadim> sgt: I do all my development on linux/unix and know close to nothing on how things are done on windows (not sure Al-Rawi is any better there), what do you recommend ? How do you do it, using what exactly ?
13:00 #arabeyes: <@nadim> mingw, etc ?
13:00 #arabeyes: <sgt> nadim: mingw mostly works fine. (It has trouble with one or two areas of the Windows API, but they're things like multi-monitor support and Windows NT security features, which won't bother this work.)
13:00 #arabeyes: <sgt> Alternatively, there's a free C compiler you can download from Borland's web site (I'm not sure of the URL because they keep changing it).
13:01 #arabeyes: <sgt> Or you can pay lots of money for a copy of Visual C if you really want to...
13:01 #arabeyes: <@nadim> sgt: nope :-) and no money :-)
13:01 #arabeyes: <sgt> Didn't think you would :-)
13:01 #arabeyes: <Al-Rawi> i already have the VC
13:01 #arabeyes: <@nadim> Al-Rawi: have enough info to get this patch done (in say a week) ?
13:02 #arabeyes: <@nadim> Al-Rawi: dang :-)
13:02 #arabeyes: <Al-Rawi> i am not sure of how long it will take .. but i can start soon .. that i know for sure
13:02 #arabeyes: <@nadim> Al-Rawi: did you get all your preliminary questions answered ?
13:02 #arabeyes: <Al-Rawi> yes.
13:02 #arabeyes: <@nadim> Al-Rawi: you sure ? :-)
13:03 #arabeyes: <sgt> What did we decide about actually implementing bidi + shaping?
13:03 #arabeyes: <sgt> (I lost track; sorry.)
13:03 #arabeyes: <@nadim> sgt: well, we need an outline of things to do post this initial patch
13:03 #arabeyes: <sgt> *nods8
13:03 #arabeyes: <sgt> *nods*
13:03 #arabeyes: <@nadim> sgt: and we'll leave that outline for you
13:04 [msg(Al-Rawi)] yeah
13:04 #arabeyes: <@nadim> sgt: so you can direct us and we'll happily run around and try to get things done and once you have time, certainly jump in :-)
13:04 #arabeyes: <sgt> I'm still concerned about the licensing, in particular. Are you intending to find or write a bidi implementation that's usable with PutTY's MIT licence? Or is the aim to find a way that fribidi can legally be used?
13:04 #arabeyes: <@nadim> sgt: for communcation please mail to 'developer-at-arabeyes.org'
13:05 #arabeyes: <@nadim> I'll approve all your posts once I see/figure your email address
13:05 #arabeyes: <@nadim> sgt: I know nothing about licenses.
13:05 #arabeyes: <sgt> Well, somebody needs to...
13:05 #arabeyes: <@nadim> sgt: but the fribidi author is on the 'developer' mailing-list, so we can talk about things there if you like (his name is 'behdad')
13:06 #arabeyes: <@nadim> I take it GPL is more restrictive than MIT license ?
13:07 #arabeyes: <sgt> nadim: Yes. Linking a GPLed library with the MIT PuTTY code would require the result to be distributed under GPL, which I don't want.
13:07 #arabeyes: <@nadim> noted.
13:07 #arabeyes: <@nadim> sgt: what is the best email to reach you on ?
13:07 #arabeyes: <osd1000> fribidi is LGPLed which is slightly better, but I think it may suffer from the same problem in many circumstances.
13:07 #arabeyes: <@nadim> we can mail about this license and CC you on it to get that ball rolling.
13:08 #arabeyes: <sgt> For communications about PuTTY, please mail <putty at projects dot tartarus dot org> unless there's a specific reason not to. That way the rest of the team can keep track of what's going on as well as me.
13:08 #arabeyes: <@nadim> osd1000: would you like to be invovled as well (emails, etc) ?
13:08 #arabeyes: <@nadim> sgt: ok - all questions from Al-Rawi (techincal ones) to go there as well ?
13:08 #arabeyes: <sgt> Definitely, yes.
13:09 #arabeyes: <@nadim> ok
13:09 #arabeyes: <@nadim> anything else ?
13:09 #arabeyes: <osd1000> nadim: go for the PuTTY address, since that's the thing I read when it's to do with PuTTY.
13:09 #arabeyes: <osd1000> (Section 6 of the LGPL _may_ mean fribidi isn't a problem, btw)
13:09 #arabeyes: <@nadim> ah - so its a mailing-list, cool.
13:09 #arabeyes: <sgt> Before we finish up, I want to be completely sure we agree on whose move it is next.
13:09 #arabeyes: <@nadim> osd1000: behdad is very easy going and I don't forsee a major problem
13:10 #arabeyes: <@nadim> sgt: its ours :-) from what I understood.
13:10 #arabeyes: <@nadim> to get you the patch
13:10 #arabeyes: <@nadim> then you will generate an outline
13:10 #arabeyes: <sgt> Right. So you'll work on the TextOut stuff, and I'll write up a technical outline of what work needs doing and roughly where in the PuTTY code I think it ought to go. Is that right?
13:10 #arabeyes: <@nadim> then we work (possible together) to complete what is needed.
13:10 #arabeyes: <@nadim> right ?
13:10 #arabeyes: <sgt> (I can work on the outline _while_ you're working on the patch.)
13:10 #arabeyes: <@nadim> great
13:10 #arabeyes: <@nadim> that's what I understood
13:11 #arabeyes: <sgt> Yes. OK, then I think we're finished, unless anyone else has anything.
13:11 #arabeyes: <@nadim> we'll be shooting for something in a week (or so we hope)
13:11 #arabeyes: <osd1000> Excellent. Thanks for all your enthusiasm!
13:11 #arabeyes: <Al-Rawi> things are clear enough for me thanks
13:11 #arabeyes: <@nadim> sgt, osd1000: thank you guys VERY much for coming !!!!
13:11 #arabeyes: <osd1000> A pleasure.
13:11 #arabeyes: <sgt> You're welcome. It's been good talking with you.
13:11 #arabeyes: <Al-Rawi> thanks sgt and osd1000 u are very helpful
13:12 #arabeyes: <@nadim> communication is always nice ;-)
13:12 #arabeyes: <sgt> I need to go now; someone's just come to visit me :-)
13:12 #arabeyes: <osd1000> Farewell all.

Check out the coupons and bargains on MSN Offers! http://shopping.msn.com/softcontent/softcontent.aspx?scmId=1418