WARNING: This server is unstable and will be retired in the next days.
If you want to keep this forum available, please request immediately a migration
on the Nabble Support forum.
Forums that don't receive any migration request will be deleted forever.
Medhi and Glenn thanks for your quick replies and especially for immediately taking care of this. I investigated it a little further by creating a proof of concept font caching implementation so that we can measure the benefits. After this, it does not seem to me like too much work - it could be roughly a couple of days. Our primary target here was to improve FOP performance when used as a service in a multi-threaded application and not to externalize and decouple the font subsystem from FOP's layout system (although some improvements could be included).
So, here are a few numbers to share. Using a single thread, after a good warm up of about 200 FOP executions (XSL:FO to PDF with TTF embedding), the time to load arial.ttf or arialb.ttf gets about 5ms on a 2.66GHz Intel Core 2 Duo (from about 250ms the first time) on JDK_1.6.0_31 (FOP trunk). In our use cases, the frequently requested transformations are for documents having 4-10 pages and about 10 different fonts. The execution time for 4-10 pages (and the given complexity of layout) is 400-900ms. Font caching would save us about 50ms per execution, which is a 5.5%-12.5% improvement. For this use case (which I guess is not popular among FOP users) font caching is a marginally interesting improvement. If the use cases or those estimations change for some reason, I will open a new issue, work on properly implementing this and attach a patch.
On Apr 24, 2012, at 10:06 AM, mehdi houshmand wrote:
> No, as far as I know font caching isn't really on anyone's agenda. If someone wanted to do this properly it would be a significant amount of work. The fonts system would have to be externalized so that it behaved more like a font provision service rather than the tight coupling to FOPs layout system. This would mean a lot of code redesign and that's no small feat.