Learning Python Makes You A Better Designer: An Interview with Just van Rossum
The scripting language Python has been a core part of typeface design for decades now. How has Python been applied to typeface design? How can learning Python make you a better designer? TypeThursday sat down with typeface designer Just van Rossum to learn more.
Ready to see your own work jump from the lower to uppercase?
We’re growing — find out if TypeThursday has a chapter near you.
TypeThursday: Just, thanks for being here for TypeThursday.
Just van Rossum: Hi. Nice to meet you and thanks for having me.
TT: Absolutely. You’ve done a lot to contribute to the tools type designers use. One of the tools most used is Python scripting. I’d like to hear more about your relationship to Python.
JvR: Right, well, as you may know, Python was developed by my older brother, Guido van Rossum. He lives in California, works for Dropbox. He started inventing Python in 1989.
I got into programming relatively early, but I didn’t pursue it as a career option as I got older.
As a kid, I remember we had a little computer at home that my dad bought. It was so primitive the only thing you could do with that was to program it, using the BASIC language. So I got into programming relatively early, but I didn’t pursue it as a career option as I got older. Instead, I studied graphic design.
During my studies, I did some type experiments with programming and realized that programming and type can be combined in interesting ways. I had a wonderful teacher, Gerrit Noordzij, who was really encouraging. He has a very free mind about how this technology could be applied, so I felt really supported with that. Later on, I started collaborating with Erik van Blokland and we did some programming experiments together.
We created a typeface called Beowolf, which is based on changing the programming of PostScript fonts. PostScript is not just a “page description language”, but also a full programming language. In fact the original PostScript fonts were programs that you could mess with. You could open them in a text editor and just change things and see what would happen. So we learned how to do that. And as we progressed, programming became more and more important. I wanted to progress and learn more. I was not trained as a programmer, and traditional programming languages like C or Pascal were relatively difficult to work with.
I just want to get some things done in a way that allows me to focus on the problem instead of on the difficulties of programming.
I was in relative close contact with my brother Guido, who would often give me programming tips. Eventually, he introduced me to this language he was working on, called Python. He created Python as a scripting language for this experimental operating system that he was involved with at a research institution in the Netherlands. There was a good Mac version at that point, and he said, “Well, hey, why don’t you try that? And let’s see if the things that you would like to experiment with are easier with Python, because Python is just a friendlier language.” And indeed, it has a much simpler syntax than the more common languages at the time, especially compared to C. I mean, I was an okay programmer, but my main job is not programming. I just want to get some things done in a way that allows me to focus on the problem instead of on the difficulties of programming.
Python became the dominant programming language in the fields of type design and font engineering.
Python In The Type Design Process
It turned out that Python was indeed the perfect tool for the kind of things that I needed and wanted to do. I infected Erik van Blokland with it and he picked it up pretty quickly. I infected Petr van Blokland, Erik’s older brother, with it, too. In the late 90s, we developed an application called RoboFog, which was a hybrid version of Fontographer 3.5 with a Python scripting layer added to it. It was initially for our own use, but we eventually did sell some licenses to others. For example, Jonathan Hoefler was really enthusiastic about that stuff. He learned Python and built a pretty elaborate toolchain for his foundry.
At some point the people at Adobe also picked up Python; they were using Python more and more in their internal tools. So the scope of what to do with Python in the context of type design grew bigger and bigger. FontLab followed by also choosing Python as a scripting language. So almost accidentally, Python became the dominant programming language in the fields of type design and font engineering.
So on the one hand you have these options for experimentation, to create things that are just hard to do by hand, even on a computer, because they’re too time consuming. For example to generate complex lines or patterns or shapes. You can often do that more effectively with an algorithm. There are all kinds of things you can play with that are outside your reach if you’re doing things manually. And on the other hand there’s font production. If you want to make things ready to sell on the market, there’s a lot of different work involved there, that is potentially repetitive or boring or just really difficult. You need to do a lot of consistency checking, the kind of things that humans are usually pretty bad at, yet can be automated relatively easily with Python scripts.
TT: To summarize, Python has two uses according to what you just said. One is the technical production of type faces. Getting typefaces ready for commercial use. The other side is more the visual exploration and executions visually that may be too difficult or cumbersome to do manually that a computer program like Python allows for easy usage and creation of.
JvR: Yeah, that sounds about right. An good example of that is Federal, Erik van Blokland’s typeface that he designed in the late 90s. It was inspired by the fat, high-contrast capital letters on dollar bills. He created shaded versions with lines in different resolutions with his own algorithms in RoboFog. That is an early example of how one can use this technology. It wouldn’t be completely impossible to do manually, but it would be tedious and time consuming, therefore you tend to just not to go into that direction.
To have these kinds of skills available to you broadens your mind. There are classes of ideas, of which you would have said, “Okay, that’s a lot of work to do.” And now we think, “But, if I turn it into rules, if I turn it into an algorithm, it may actually be possible, so let’s give it a shot.” So through programming, you expand the range of things you can do.
TT: One of your projects is called DrawBot. Could you give us a context for anyone who doesn’t know what is it?
JvR: It’s a free application for OSX. It allows you to write Python code that can generate visual output relatively easily. It’s not unlike Processing in the sense that you have a window where you type some code and you run it and then visual output will appear.
The main reason for its existence is education. Around 2003, when I started teaching at TypeMedia (a Master program in type design at KABK in The Hague), we decided it’s important for our students to learn some Python. Programming can be difficult, so we needed a way to make it slightly more accessible. In DrawBot you can start drawing simple things like rectangles with simple commands. You just give some numbers like position, width and height, and there are some commands to specify the color or other drawing properties. You can start with really small programs and you quickly get some visual output. You can save that as a PDF or as a JPEG or whatever image format. The application itself is written in Python, too.
TT: What was your involvement with DrawBot?
JvR: I wrote the original version back in 2003. It has a little text editor and it has an area where you see your visual output. And students happily learned the basics of Python with that, and many went on to make much more complex things.
After several years it started to become more and more outdated. It needed new features and needed to be updated for newer versions of the OS. It was picked up by a former student of mine, Frederik Berlaen, who, if you have a chance, you should definitely also interview. He is also the author of RoboFont, a Python-based font editor, as you probably know.
Frederik had worked a lot with the original DrawBot, knew it inside out, and in 2013 he pretty much rewrote it from scratch. He made the application much more user friendly and added cool features like multi-page PDF and animation support. So that opened up a whole new range of possibilities.
TT: According to what you’re saying, it’s more of a tool to help visual designers come to a way to grasp and kind of understand programming in a visual way.
JvR: Yeah, that sounds about right. It used to be fairly primitive, yet fairly successful as a teaching tool. The new generation of DrawBot (version 3) is much more useful in a general way, and people use it for all kinds of visualization purposes.
DrawBot in The Modern Type Design Process
In addition to the things I already mentioned, Frederik has been adding really good typographic features, so you can do advanced typography with it. For example you have fine-grained control over OpenType features. You can program your designs to a pretty deep level and output high-quality PDFs, allowing for all kinds of things that would be much more cumbersome to create with applications such as InDesign.
So DrawBot has grown beyond its original scope. It became more than just a teaching tool. People actually use it to create stuff. For example, it’s used by type designers to automatically create complex proofs.
There’s actually a version of DrawBot that runs inside RoboFont. You have those two worlds nicely integrated together. You can access your font data with Python and you can generate and create proofs based, for instance, on the glyphs that you actually have finished at the moment. Your work is always in progress, it’s growing. Proofing is super important and if you have to go to InDesign or if you want to try different things, sometimes it’s just easier to have this in code and you change some parameters and just regenerate your five pages of proofs or get an overview of all the glyphs. Anything goes. So that’s one other thing that it’s been used for. People also use DrawBot to create specimen images for foundry websites.
Learning Python with DrawBot
TT: I think that’s really informative. I didn’t even know that. That’s great. These are the possibilities of using DrawBot. I know that you’re teaching a workshop on how to use DrawBot over the summer in New York City. If someone were to take your class, what would they expect to learn and walk away from that weekend workshop?
JvR: I’ll be doing four days of workshops right after the Typographics conference in June, from monday the 20th to thursday the 23rd.
They are formally two separate two-day workshops, you can also take them as one four-day workshop.
The first workshop, Monday-Tuesday, we will be working with DrawBot, where I’ll give an introduction to Python for anyone who would like to experience what it is like to use code to create visual output, or if you already know a little bit about it of Python and you want to develop it further.
So for that part of the workshop, you can start at any level, with little or no programming experience at all. There are different levels at which you can participate. We will run through the basics of Python, like how to create loops and functions, how to structure your code, but also how to use DrawBot to get visual output. What are the commands to create a drawing or a shape or a bit of text? How to program a simple animation. It’s going to be a very compact but dense workshop.
Then the last two days are more tuned toward type designers, where I’ll focus on scripting RoboFont, and you’ll definitely need a little Python knowledge to enroll in that one, if you decide not to do the first workshop.
So they are formally two separate workshops that you have to sign up for independently, but you can see it as one big workshop. That’s how it’s structured, they kind of follow up on each other.
TT: And so the second workshop is for more experienced type designers who might have some knowledge about Python. What should they expect to learn from the second workshop?
JvR: In the second workshop, we’ll be working in RoboFont, the font editor written by Frederik Berlaen. We’ll go through the kinds of things can you do there, with specific examples. For example, how to automate certain tasks, how to programmatically create shapes, how to write scripts that do consistency checking, etc. We’ll continue also developing more advanced scripting techniques, but we’ll be using less of DrawBot.
These are potentially big subjects. I’ll try to cram as much information in that as possible so that everyone can get as much out of the workshops as they want, while hopefully keeping it accessible and lively. There’s a limited amount of seats so that I can be sure to have enough attention for all participants individually, too.
On the one hand, I’ll be showing stuff, like, “Hey, this is how it’s done.” Just look at that and you can follow along. It often looks fairly easy. But once you start doing it yourself, it turns out to be a lot harder and you just have to practice, and learn to pay attention to small details and we will do that during the workshop as well.
People will get to practice and also learn how to solve problems. I hope to inspire people to do interesting things, and discover new things. I hope they will continue to learn after the workshops. Perhaps they will work on things together and ask each other for help. That is such a fruitful way of working. Having a small network of people is often much more effective than to just google stuff on your own. People can learn so much from each other.
TT: Just, it’s been a pleasure talking to you. Thank you so much.
JvR: You’re welcome. It was a pleasure.
We’ll help you dot your i’s and cross your t’s
TypeThursday attendees love letterforms. Big-time. This means you’ll get detailed advice, delivered with care by fellow creators who know how much time goes into crafting crisp characters. Your work will emerge refined … no dots left behind. Submit your work to a TypeThursday near you.
Want to learn about Python and DrawBot? Sign up for Just’s workshop at CooperType NYC.
Was this article interesting to you? Give us a clap below.