Recortar automáticamente el lienzo HTML5 a los contenidos

Digamos que este es mi lienzo, con una cara de aspecto malvado dibujada en él. Quiero usartoDataURL() para exportar mi malvado rostro como PNG; sin embargo, todo el lienzo se rasteriza, incluido el "espacio en blanco" entre la cara del mal y los bordes del lienzo.

+---------------+
|               |
|               |
|     (.Y. )    |
|      /_       |
|     \____/    |
|               |
|               |
+---------------+

¿Cuál es la mejor manera de recortar / recortar / encoger ajustando mi lienzo a su contenido, de modo que mi PNG no sea más grande que el 'recuadro' de la cara, como a continuación? La mejor manera parece ser escalar el lienzo, pero suponiendo que los contenidos son dinámicos ... Estoy seguro de que debería haber una solución simple para esto, pero se me está escapando, con mucho googlear.

+------+
|(.Y. )|
| /_   |
|\____/|
+------+

¡Gracias!

Respuestas a la pregunta(2)

Su respuesta a la pregunta