I'm curious to why you did this with composite images and not layered images?
Viewing post in Lip Flaps and Blinks comments
Easy answer: We built on top of the old lip flap code from over a decade ago and never considered switching to another technology if the old one works fine.
More thoughts on the matter: I have limited experience with Layered Images, so feel free to correct me where I'm wrong. To my understanding they are calculated whenever shown instead of once when created. This might be a burden to browser players, but I would need to test that out and see which works better.
They are also not displayables, just usable as such. I think we ran into issues with return types in custom code at some point, but that was ages ago.
An obvious advantage would be the change in code size. We already addressed that somewhat with our code, but I feel like if you would want to put outfits or wounds or such on your characters and are able to deal with the complexity of Layered Images then they would make a good alternative to our solution, instead of nesting Composites or badly adding if clauses into them. If my concerns are unwarranted shifting to Layered Images might be a good idea.