Thats a good question. I know you can do that with SVG. It would make sense that canvas would/should also have such a feature. According to the specification clip() uses the area described by the current path and follows the non-zero winding number rule which i think means that if you specify both the region and the hole then it should work