Behdad's Pango roadmap
[I updated the previous post about gnome-terminal performance
extensively. In short, g-t is faster than xterm. Xft is to be blamed (Hi Keith) :-D]
I see Pango
mentioned quite a lot these days, mostly as the bottleneck to desktop rendering. So I thought I may write a bit about my view of how things are going in Pango.
First, in reply to Federico's comments
- Zero is indeed a valid Unicode character, but not used that much, like it's not used that much in C strings.
- I like your patch. I don't quite like a cache of 1kb or 2kb per font per size per process, but hey, we just ripped off 100kb per process in fontconfig... so. Please post the patch on bugzilla. Owen doesn't scan planet for patches ;).
- I think your patch performs good enough to be applied, without too much worrying about CJK. Most of the scripts encoded in Unicode fit in a block, and so your cache performs pretty good. For those that it doesn't, all you lose is still small compared to the route you should take anyway (cairo / xft).
- It's true that Pango cannot be easily optimized. All the time spent inside is balanced. That's were we need more tools to exactly see what's going on. But I don't agree that optimization in Pango modules is worth it. The text rendering pipeline is so deep and heavy that the modules are really negligible anyway. And if you really want to do that, just keep it on bugzilla and there are people that know how any particular module works.
Generally, I'm quite amazed by how stable Pango has become these days, no major features lacking, not much serious bugs. Now here are the major items in my Pango todo list, most of them are in bugzilla already:
- Update mini-fribidi to match upstream. (patch)
- Update line-breaking to follow Unicode 4.1 UAX#14. (patch)
- Rewrite word-boundaries to follow Unicode 4.1 UAX#29. (working)
- Optimize the OpenType code (patch), and fix a couple bugs too.
- Add back Arabic shape-to-presentation-form. May merge Arabic joining algorithm in Arabic and Syriac modules too.
- Review Damon's TeX-style justification. (patch)
- Simplify the module interface, factoring away the common bits (in particular, mirroring and reordering which don't belong in the shaper at all). I would like to add one more level before shaping, something like language analysis, which doesn't depend on the font, only language/script. Some bugs with Arabic shaping will be really solved that way. Last but not least, Owen suggested, to aim for a declarative module API for simple modules, where you only specify a table of OpenType tags.
- Finally, merge the OpenType code with Qt's copy, move it away to fd.o, make a copy in Pango.
Now how many of these I'll make for 1.12, no idea. The ones with a patch are mostly waiting for Owen
[damn, internet is slow these days.]Update:
There's this huge patch
to shut various gcc warnings off too.