Django and Cairo: Rendering Pretty Titles

Posted

Categories

Well, perhaps this isn't the sole reason, but nonetheless it's a more than feasible idea these days to have headings, titles and short lines of text using fonts a user doesn't have installed on their system. And, until the spec for embedding fonts is finialised in around 2065, there are two main options:

Render the text using *cough* Flash. While Flash is perhaps not as bad as some would make out, it's still horribly proprietary as well as having a noticeable loading time and a few other invented disadvantages that strengthen my case for using...

Images. They're lighterweight, and have been used for showing custom graphics since the dawn of [UNIX] time.

So, we need header images. One horribly labour-intensive way of doing this is making them manually in Generic Graphics Editor 8.6. However, since we're sensible people, we'll generate them on the fly. And, since we're sensible people, we'll be using Django*, so we need to write some nice Python code.

I'll be using Cairo to generate graphics, in part because it's a nice library, and is pretty common these days. You'll need the Python Cairo bindings; on debian-like systems, this is the package python-cairo; in other places, your mileage may vary.

The key to making Cairo work with Django is wrapping a Cairo canvas in a django view. For this reason, I have this function lying around: