Skip to main content
This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (
Help us improve Python packaging - Donate today!

Typography related template filters for Django & Jinja2 applications

Project Description

Note: This is a fork of the original `typogrify` project made especially
for `Engineer<>`_. The
modifications are very minor:

- SmartyPants defaults changed so that `--` is interpreted as an en-dash
and `---` is interpreted as an em-dash. I don't know why in the world this
isn't the default.

typogrify: Filters to make web typography easier

This application provides a set of custom filters for the Django
template system which automatically apply various transformations to
plain text in order to yield typographically-improved HTML.

Version 2 changes

* Django is no longer a requirement. The typogrify filters can be used in any
environment by importing them from typogrify.filters
* Experimental jinja2 support added in typogrify.templatetags.jinja_filters –
untested and defintely needs some eyes on it. Might trigger a point release
soon to update.


``typogrify`` is a set of functions that take text or html input and mark them up with HTML.
it requires `the Python port of John Gruber's SmartyPants`_ for tokenization.

It includes optional template filters for Django. So you'll need Django if you want to use those.

.._ The Python port of John Gruber's SmartyPants:

To use with Django

BACKWARDS INCOMPATIBILTY NOTE: Version 2 of typogrify has moved the typogrify
tag to {% load typogrify_tags %} – This necessary to allow the tags files to
import from the rest of the library.

Once ``typogrify`` is installed on your system, you can add it to the
``INSTALLED_APPS`` setting of any Django project in which you wish to
use it, and then use ``{% load typogrify_tags %}`` in your templates to
load the filters it provides.

Included filters


Wraps ampersands in HTML with ``<span class="amp">`` so they can be
styled with CSS. Ampersands are also normalized to ``&amp;``. Requires
ampersands to have whitespace or an ``&nbsp;`` on both sides. Will not
change any ampersand which has already been wrapped in this fashion.


Wraps multiple capital letters in ``<span class="caps">`` so they can
be styled with CSS.


Wraps initial quotes in ``<span class="dquo">`` for double quotes or
``<span class="quo">`` for single quotes. Works inside these block

* ``h1``, ``h2``, ``h3``, ``h4``, ``h5``, ``h6``

* ``p``

* ``li``

* ``dt``

* ``dd``

Also accounts for potential opening inline elements: ``a``, ``em``,
``strong``, ``span``, ``b``, ``i``.


Applies ``SmartyPants``.


Applies all of the following filters, in order:

* ``amp``

* ``widont``

* ``smartypants``

* ``caps``

* ``initial_quotes``


Based on Shaun Inman's PHP utility of the same name, replaces the
space between the last two words in a string with ``&nbsp;`` to avoid
a final line of text with only one word.

Works inside these block elements:

* ``h1``, ``h2``, ``h3``, ``h4``, ``h5``, ``h6``

* ``p``

* ``li``

* ``dt``

* ``dd``

Also accounts for potential closing inline elements: ``a``, ``em``,
``strong``, ``span``, ``b``, ``i``.

Release History

This version
History Node


History Node


Download Files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

File Name & Hash SHA256 Hash Help Version File Type Upload Date
(14.5 kB) Copy SHA256 Hash SHA256
Source Oct 2, 2013

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting