Hi, Profiling PDF text rendering with openhtmltopdf (PDFBox 3.0.4, but I also checked 3.0.8 and trunk), I found that GsubWorkerForLatin.applyGsubFeature builds a new GlyphArraySplitterRegexImpl on every call. That regex depends only on the font, not on the text, but it gets rebuilt on every showText call, because PDAbstractContentStream recreates the GsubWorker in setFont on every call instead of keeping the one already cached in gsubWorkers.
In our specific case, on a 14-page PDF, using a font with a ccmp feature (Inter), this rebuilding represents most of the time spent drawing text. Caching the splitter regex per font (local test with patched PDFBox) saves about 250 ms. The output is unchanged. I'm not familiar with the PDFBox code, so I'd appreciate your advice on whether this is the best way to fix this. I'm happy to open a JIRA issue and a PR if that's useful. Thanks, Olivier
