Thanks for your optimization work, Glen. Just a note: the method addALetterSpaceTo() is defined in the interface InlineLevelLayoutManager and is still used.
It is called by LineLM.collectInlineKnuthElements(), if the last element returned by a child LM and the first returned by the next child LM are both boxes. So, the CharacterLM and LeaderLM (extending LeafNodeLM, that implements InlineLevelLM) should really implement it. For example, if we have <fo:block>a <fo:character character="w"/>ord</fo:block> we must tell the CharacterLM that the "w" is followed by a letter space, as it is not a whole word. Regards Luca