Hi CE,
I've read your roadmap carefully and thought I would share some of my thoughts with you.
First, some cheerleader's work :
Congratulations for this roadmap (and for the work you already did). I am quite pleased with a lot of things I read on it, especially the Treeview widget, the scripting module and the "Falagard" widget set.
Not mentioning the sample framework and the disappearance of Boost(which is not on this roadmap but is a great achievement. I still can't believe it is true 8O )
There is another "feature" I am particularly interested in : the internationalisation of the system. The Full Unicode support being one the most significant step of this process and I am looking forward to this.
I worked quite a bit on this topic in the past and here are my thoughts on the matter:
* You are considering right-to-left rendering. A must have feature to support some languages. Although it might not be so important, you might want to consider vertical text rendering while you are at it. Some languages are traditionnaly (Japanese being a good example) written vertically from top to bottom and from right to left. However, in everyday life, it is very common to write it like english. That's why I say we can live without it.
* To have a better support of languages like chinese with a lot of glyphs available, it might be necessary to allow several textures per font. We already discussed that but I thought I would write it again, just to be complete here.
* I would love to have the possibility to load/save texture and glyphs information once generated from a TTF font. This would allow to save the time to generate the texture at runtime. It would also allow to modify the texture font in an external program once generated.
* The possibility to add new glyphs on the texture at the moment they are used would be great, especially when using EditBox.
* Have you considered the usage of String Tables ? Having one string table per language, it would help to switch from one language to another at runtime. It can be done in the application (I did it for myself) but you might want to consider implementing it in the system. Of course, it would probably imply a lot of difficulties as switching strings could also mean having to switch texture font.
* Now forgive me if I say something stupid. I want to talk about line breaking functionnality but I don't have CEGUI's code with me and I might say something irrelevant. I think you are using the space character when breaking lines in text rendering. While this behaviour is good in most languages you will encounter as a European (you are British, aren't you ?), there are languages that don't use space and use subtle rules to break text. For example, japanese can be cut everywhere, even in the middle of a word with a few special cases related to punctuation symbols
(these are called Kinsoku rules IIRC). Thai(again, IIRC) doesn't use spaces but needs to be cut between words. To do that, we had to ask the translators to insert special codes(codes that were not part of the language) in the text to replace spaces so we could break the text correctly. Of course, these codes were to be considered in the breaking
process but were not to be rendered in any case.
Well, this part of my own experience is just to say that some languages have breaking rules that can be pretty different of english rules. To handle these situations, we had a special object, the LineBreaker which had a default implementation that broke lines on spaces. And we had several specialized objects derived from the base one for special languages : JapaneseLineBreaker, KoreanLineBreaker... to implement special behaviours. While this might not be applicable to CEGUI, I thought you might be interested in reading from past experiences.
Well, these are my humble thoughts on the matter. I'll let you think about this. I hope that I was clear enough.....and that it doesn't sound too much like a Feature Request list

. Because it isn't, it is just a discussion on the system because I don't need these features now, although I would probably if I were to use CEGUI for a commercial project destined to be localized in twenty languages.
Keep up the very good work ! And good luck with your world domination ! Hope you will still have time to work on the system once you are the master of the world......