Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

Though some might disagree, I think the Bill of Rights is a beautiful piece of typography.

Bill of Rights

I would like to reproduce this using TeX and friends, but have no idea where to start. How, for example, would I reproduce the beautiful g with the extra swash? Would I have to create the glyph myself, or are there such fonts available?

Also, is there a package that makes it possible to get the proper typesetting of "Article the first .... Text here"?

share|improve this question
this answer might be an interesting place to start. I also think it is a very beautiful looking document. –  Scribblemacher Aug 17 '12 at 0:01
You definitely need to either find an appropriate calligraphic font or craft it yourself. Regarding the "Article the first ………" thing, I think you should ask it as a separate question for more answers. It can be done with the usual list environments, but not many people will help you on this point with such a purely (typo)graphical question. –  ienissei Aug 17 '12 at 7:16
add comment

2 Answers

up vote 33 down vote accepted

Attention: this is a failed attempt. Feel free to not upvote it. :)

Since you mentioned about reproducing the Bill of Rights, I thought it would be interesting to come up with a TeX example as close as possible as the original. But, oh boy, it was hard for me. And - spoiler alert - I failed miserably. On the other hand, I think it be worthy mentioning my method. :)

We are talking here about a calligraphical font. To get the beautiful g, we need to choose a font which provides this feature (see How is the effect (swash) achieved?). Once we have this font, we only need to use it. Engines like LuaTeX and XeTeX are great with dealing with system fonts.

Now, I really don't know any font which is similar to the title of the Bill of Rights. When everything fails, time to use some brute force. :)

My plan, initially: how about coming up with my own font? (see What is the most appropriate tool to develop a new font for LaTeX?) Looks like a crazy idea: I'm in! :)

First of all, I had to copy the countours of the title. To be honest, I was just looking for specific letters, so it wouldn't be necessary to map all glyphs to their "positions" in the font file. I lost half an hour to reach this:

Bill of Rights

My soundtrack while tracing the title. :)

So far, so good. Now, time to travel to the unknown land of font creation. I opened FontForge and imported all the letters I extracted to their corresponding glyphs. The letters: B, i, l, o, f, R, g, h, t, s.


It was my first interaction with FontForge - quite traumatic, I'd say. :) I managed to import all the letters and fixed some errors. Creating your own font is hard! You need to adjust the kerning, scaling, etc. I was not ready for that hurricane of information. :) FontForge did its best to help me, though. Then I exported the file to an OpenType Font format - .otf. Let's see how my BillOfRights.otf looks like:


Yikes. I really failed with font settings. Surprisingly, I managed to get at least some letters into their correct display. :) Anyway, as a proof of concept, I tried a sample TeX file with LuaTeX, as provided by Khaled Hosny in luaotfload: how to use font in current directory?:

\input luaotfload.sty
\test Bill of Rights

My output:

My FrankenFont

The Rights part didn't appear. Probably some error in the font. Nevertheless, I was closer than I thought. In any case, I decided to export my attempt to PSTricks. Here's the code (the SE framework doesn't allow entries with more than 30k characters, so I'm relying on GitHub), run it with XeLaTeX.

The output:

XeLaTeX output

Moral of the story: It is possible to reproduce (very near to 1:1) the Bill of Rights, provided that we have time - and patience - to play with. :)

share|improve this answer
add comment

@Paulo Cereda's answer is really cool. I would like to propose a change in one of the steps. Doing the countours by hand can be very time consuming (Paulo took half an hour). @Werner gave a very good solution to automatize this task. I reproduced the title and it took me 30 secs. He proposes to use either potrace or autotrace. I found that potrace does a better job. They have precomplied distributions for several OSs. Here is the input image:

enter image description here

Following this simple command:

potrace Bill.bmp -b PDF -o Bill.pdf

Go to the original answer for better details. Here is the output in PDF (It supports also SVG,EPS,PS, etc..):

enter image description here

You can either exploit the file to later import each letter to a glyph in FontForge or you can just input the PDF to your final document.

share|improve this answer
If you prefer a more user-friendly way, you can also use Inkscape to vectorize your bitmaps. –  Philippe Goutet Aug 24 '12 at 11:33
Is there an automatic way to do it with inkscape? I know you can do it manually with inkscape, but it takes time to do it. Potrace does it autmatically... –  Felipe Aguirre Aug 24 '12 at 11:41
Something being automatic does not necessarily make it better or quicker in all situations. If you need to find the right parameters for an optimal vectorization, an interactive WYSIWYG solution is often much quicker as you can just go back and forth between the parameters and the result. Not to mention the fact that you can immediately fiddle the output to make it better if need be. Of course, if you have many bitmap files to vectorize, the command line will be quicker. –  Philippe Goutet Aug 24 '12 at 12:37
That is a good point. You make me think of another idea. A first vectorization can be made with potrace, then, the result is superposed to the original bitmap and corrected using Inkscape. It "may" be easier, it all depends... –  Felipe Aguirre Aug 24 '12 at 12:52
add comment

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.