Basically different devices and browsers render high-level graphical objects, such as fonts, differently. When you visit a site that does canvas tracking, a small javascript snippet will ask your browser to render a few graphical things on an html5 canvas and export that canvas to a png. The hash of that png is a good fingerprint of your hardware, browser and rendering software.