I'm surprised he didn't use SVG - it provides an object graph, and will handle clipping/rendering for you.
A low level API like canvas probably isn't necessary for this kind of work.
A low level API like canvas probably isn't necessary for this kind of work.