DrawBot is an enviroment for creating graphics programatically in macOS using Python. It is open-source and can be downloaded gratis from drawbot.com.

Developed originally as an educational tool for teaching programming to designers, DrawBot has grown into a full-fledged platform for automating the creation of all kinds of graphic material.

multiple output formats
DrawBot can save vector graphics (SVG, PDF), raster images (PNG, JPEG, TIFF, GIF, BMP) and animations (GIF, mov, mp4).
advanced typography
DrawBot offers a full range of typographic controls, including support for OpenType features and variable fonts, hyphenation, tabulation, access to font metrics etc.
interaction with code
DrawBot includes a small set of UI controls – sliders, buttons, input fields, etc. – which can be used to add interaction to your scripts. The code editor has special code interaction features for some types of values, and a live coding mode which executes the code as you type.

DrawBot as RoboFont extension

DrawBot is also available as a RoboFont extension. Because it runs inside RoboFont, this version of DrawBot has access to the entire RoboFont API, including fontParts.world objects such as CurrentFont, CurrentGlyph, AllFonts etc. It has also a handy drawGlyph(glyph) function which draws an RGlyph object into the DrawBot canvas.

DrawBot as a module

DrawBot can also be used as a Python module, without the UI. After you install the module, you can import drawBot into your scripts and create images with code.

DrawBot package format

DrawBot scripts often require additional files such as image resources, Python modules, data files, etc. The .drawbot package format makes it easier to share and distribute such multi-file projects.

DrawBot packages can be built using the Package Builder window included in DrawBot. Open a .drawbot file by double-clicking or dropping it on top of DrawBot.

DrawBot Forum
A living archive of questions & answers, examples, discussions, etc.
Daily DrawBot
Animated gifs made with Python in DrawBot, mostly by Just van Rossum
Rob Stenson — How to Say “Crunch” in Portuguese
Article about using DrawBot and variable fonts to design dynamic interfaces for multiple languages.
Last edited on 02/06/2020