Why would you want to implement an entire typesetting engine yourself?