TYPO Labs: Stop clicking: an introduction to shell scripting (Workshop)

Nicole Dotin introduced bash, a command language to be written in a shell script, run by Terminal. Exactly! The powerful tool, that can do terrible damage to your computer!

By Rik Watkinson

Phew… But let’s face it: TYPO Labs is not all guns and roses. If all my precious project data should collapse one day, then preferably on TYPO Labs. Nicole is a typeface designer and partner at the Process Type Foundry in Minnesota. She taught herself shell scripting to solve certain problems in her font production and distribution workflow.

TYPO Labs 2017

In a concentrated almost reverent atmosphere, Nicole Dotin introduced the workshop members into shell, photo: Normann Posselt


Today her goal was to overcome our fear of command lines. Tough job though. But let’s face the attraction: Nicoles work on font sensitive code takes less time than, for instance, doing one custom font packaging job by hand. Considering the time saved at all packaging jobs, the benefits are obvious. For the workshop she teached us to how to copy separate font files of a family into one desired package, including HTML specimens for each font.

All we got were the font files, a HTML template and a CSS file. The work is done by applying less than 20 lines of code. Mission complete. Certainly one main benefit for type designers is to save time through running python scripts on files without touching a font editor. Furthermore it encourages work-sharing. Ben Kiel wrote a python script to be run in bash on font files in order to fix metrics conflicts in print and screen output in Microsoft Office. A quick solution for the clients line height disputes. Not least, designers can execute ttfautohint on font files and choose from the full range of options.

TYPO Labs 2017

After 90 minutes of concentrated command-line environment scripts had been created and fonts packaged, photo: Normann Posselt


Again, without touching the glyphs. Working in the U.S. and serving clients worldwide, Process Type relies on time-sensitive email dispatch. By providing a CSV file with client data, the dispatch can be delayed to the intended local breakfast time. After all, the biggest relief was to hear even a scripting professional like Nicole repeating: “I must have made a mistake somewhere…” and to always bear in mind that if you’re stuck: “Internet is your friend”.