One of the goals of WeSay is to support user interfaces in languages with scripts that require complex shaping. Microsoft Windows has the ability to render complex scripts using their shaping engine called Uniscribe. However, some languages, such as Burmese, are not yet supported by Uniscribe. SIL has Graphite technology that deals with this, but up until now, a programmer had to do lots of difficult, custom work to enable Graphite support in an application on Windows.
Without Graphite, Burmese is all a jumble, showing the underlying characters and their basic forms but without any special contextual forms or reordering.

With a Graphite font and a Graphite shaping engine, we get the correct shapes and orders for the various glyphs.

I spent the last month working on a project we have been calling Multiscribe. With Multiscribe, users can get the benefits of the Graphite shaping engine in their existing applications including Internet Explorer, Firefox, and even Word.
Uniscribe does not yet support Burmese. But now, with Multiscribe, WeSay will be able to properly display Burmese in our user interface.
Multiscribe works by wrapping Uniscribe so that any time an application would have called Uniscribe, the Graphite engine gets a chance to do its work. The Graphite engine only works with Graphite fonts and the rest are passed on to Uniscribe. Linux already has similar functionality in the form of PangoGraphite.
Thanks to Martin, I finally was able to get pango to use the graphite engine. I had to install the debs that he gave me (as far as I know they haven’t made it to a universe repository yet). My attempt to download the source, compile and install it led to frustration, first because pango wasn’t picking it up (this I found out was due to the lack of a ModuleFiles entry in my .pangorc file. But then all I got was boxes. That’s when I installed from the debs and everything works as you can see in the screenshots I uploaded. Notice the Pig-Latin-ization of the labels. One of our goals is to make the interface itself easily localizable which needs to include the ability to handle complex scripts which require graphite. Currently, this is only supported on Linux since the pango-graphite module for Windows hasn’t been written yet. Hopefully I’ll have that done in another month (we don’t consider this high priority at this time so I’m only doing that on the side).
The other thing I’ve been working on was integrating the word list view with the detail view (see screenshot). The current path we are taking is for each tab to have a filter associated with it that will provide the set of words that need to be addressed for the task at hand. So if the task at hand is assigning glosses to each of the words that have been entered, the filter may display only those words which do not have a gloss. This also means that each tab saves its own state (current entry) so when you switch to another tab and come back, you are where you left off.