ComicsML: A Simple Markup Language for Comics
Introduction
I like comics. I like the Web. I like comics on the Web. But I could like them a lot more, especially if more of them would realize they're not on paper, taking advantage of their electronic format and globally-linked positions. So I propose a simple XML-based markup language which, I believe, could help digital comics assert their value as online resources and as art forms.
Colliding XML and Comics
Not too long ago, I started a job that required me to learn XML, the "Tupperware of the Internet", as a coworker calls it . People have created XML-based languages for everything from technical documentation to mathematical notation to spelunking.
At about the same time, I read Scott McCloud's Reinventing Comics, which is basically a call to arms to revolutionize comics by capitalizing on the largely untapped power that the Internet can offer this art form. A long-time comics fan, occasional comics creator, and student of Marshall McLuhan, I found myself wholly taken in by McCloud's arguments that the many comics now available on the Web represent a good first step, but few if any of them manage to take advantage of their new location, being presented as if they were still on paper. What we need now, McCloud argues, is new ideas for presenting comics digitally, which will inevitably emerge from many directions; but we'll also need new technologies to make digital delivery easier.
| Table of Contents |
|
Colliding XML and Comics
|
So I thought I would try to combine XML with online comics to see what would happen. I began to toy with the notion before I could think of good reasons why anyone would want to use such a thing, but, thankfully, I eventually came up with some of those, too, and I'll get to them after I describe how this thing works.
The ComicsML Language
Like any other XML language, the kernel of ComicsML is its DTD, which I've tried to keep relatively simple. Experienced DTD users may note its similarity to RSS, and there's good reason for that, which I'll explain below. Much of the rest is inspired by John Bosak's play.dtd, which he wrote so he could mark up the complete works of Shakespeare.
ComicML's atomic element is the panel, which is inspired by
the McCloud/Eisner reading of comics as being an art form based around
the magic that occurs when images appear in a juxtaposed
sequence. Comics artists most often use individual panels as their
images, and so that's the word I picked for my core element. These
panel elements hold all the information about a comic's words and
pictures, and panels are bundled together into elements called
strips, which in turn can live in the DTD's root element,
comic.
The use of multiple levels was also inspired by RSS. The
comic element contains various bits of static metadata
about the comic in question, including name, a list of its artists, or
a clever tagline. Each strip represents a separate
instance of that comic, the meat of which is held within
panel. Pretty simple.
Each panel may hold elements that describe what's
going on, with special attention given to the characters' words and
actions. I included rudimentary (and optional) text markup so one
could precisely markup the shape of the text, and I treated word
balloons similarly. It's fine to use the default speech
element for everything, but you can stick attributes in to follow
along with the balloons' various shapes. Please see the DTD
for a complete listing of all the different flavors of speech,
thought, and narration I've included. I can't account for
everything a comics artist can pull off, of course, but I did
try to cover the major, conventional visual idioms that have developed
in Western comics over the last century.