This article is about a tool which creates electronic documents with a real handwritten-like font (download link).
Sometimes it is desirable to use a font which looks similar to a handwritten text. Those fonts typically are called script fonts and a quick Google search results in several million hits. Although many of them look as designed by a calligraphist, all of those fonts work in the same way as every other font does (such as Times, Helvetica, and even Microsoft’s ugly Comic Sans.). Text is combined out of a set of static glyphs, one for each character.
Good Presentation Design is Time-consuming
In most cases script fonts are actually useless except for some party or wedding invitations. But what if you want to do something really special, e.g. creating a completely new and fancy style of presentation slides? Designing good slides is not a trivial task. It is very time consuming and much more than just compiling a little bit of text, bullet points, images and Microsoft’s Arial within Powerpoint. If you just do that and don’t pay more attention to your presentation, it simply will suck.1 Although this article is not about design of presentation slides, this was actually the trigger for my Handwriting Generator.
A New Design Was Born
Several years ago I was unexpectedly invited to do a presentation at a conference as a compensation for another speaker who couldn’t give his talk for some reason. There were just about two or three hours of time and I chose a topic that I could talk about. But I had no appropriate slides. Usually I pay much attention on slides, thus, it was impossible to compile something useful and nice within that short amount of time, mainly because (IMO) all those presentation tools (Powerpoint, Libreoffice, Latex+Beamer) are much too difficult and complex to use. In this time of need I accidentally invented a new style of slide design. I basically used the following recipe.
- Take a set of colored pencils and a pile of white paper.
- Write your thoughts in large letters, one on each page.
- Enhance the pages with some drawings and smileys.
- Put it on the scanner and scan it one by one.
- Fill it into ImageMagick and “shake it well”. 😉
- Concatenate all pages into a single PDF. Voila!
It was a great success 😀 Several people in the audience came to me after the presentation to ask how I did this. Actually, I didn’t reveal it publicly until now. I improved the technique and used it in many other presentations. Here is an example of a talk at the 27C3 in Berlin. One year later at another conference I had to give a talk together with @Creolys who was always a fan of this slide style and he adopted it. Because of his more beautiful handwriting his slides looked much better than mine (see slides about anonymous DNS).
The big advantages are that you are not limited to the functionality of any software, you can create your absolute individual style, and each slide is absolute unique. Unfortunately, it is hard to reuse or modify slides, since you are dealing with an analogue system 😉
A Handwriting Generator
Thus, I came to the idea to create a software to support this type of slide design. And one fact that makes them up is the use of handwriting. Handwriting is everything else than precise and mathematical. Thus, even if you use a high quality script font you can detect that it’s not handwritten because characters of the same type (e.g. all ‘A’s) are exactly equal. So I created Hwgen, basically a character generator which adds randomness to the glyphs.
Hwgen uses a “font definition database” (which is currently an array in C), which defines the glyphs for each letter as a set of b-splines. When rendering a specific glyph Hwgen slightly randomizes the nodes of the splines. Thus, each glyph looks similar but not identical. I created these glyphs manually within many hours of work, one by one. For the tool to be more useful, I implemented a small HTML-like parser which converts an HTML document directly into a PDF or into several JPGs.
And it worked 🙂 I used it already for several presentations and some people indeed asked me if this is handwritten and somehow digitally enhanced.
The parser does not implement the full HTML standard. It is a simplified version. It understands the tags HTML, BODY, H[1-5], FONT, STRONG, EM, U, P, UL, LI, BR, IMG, and DIV. Furthermore the attributes BORDER, COLOR, BGCOLOR, SIZE, FACE,2 and ALIGN are known. It does neither implement tables, nor CSS. It allows to put several BODYs into one HTML document. Hwgen will put each BODY section onto a separate page of the output PDF. There is a set of command line options available. See option -h for information. The option -a and -A control the baseline deviation. To completely disable this feature set it to “-a 0 -A 0”.
The Handwriting Generator can be downloaded from here. Please don’t hesitate to contact me!