The SEQUITUR is an algorithm that forms a CF Grammar from an input string in linear time. I think it can be used in CFF subroutinization with some slight modifications:
SEQUITUR is used to compress one string, but CFF CharStrings are multiple characters. Solution: in the two-component searching part, when any one in them is ENDCHAR, than add it directly to rule S.
The recursion depth and subroutine quantity limit. May be work-arounded by expanding some subroutine calls into their expanded form.
cf. http://www.sequitur.info/ https://arxiv.org/pdf/cs/9709102v1.pdf