Monitor performance issues & errors in your code

#47: Python in Typeface and Font Development Transcript

Recorded on Tuesday, Feb 2, 2016.

00:00 This week on Talk Python To Me, we'll dive into the world of typeface and font development. Even though we spend our days immersed in fonts, from our computer interfaces, signs, books, televisions and more, much of the process and thinking about fonts is invisible to us. If we did dig into font development, we'd see that Python is a key component of the font developer's toolkit.

00:00 This week we have a very special guest to tell us all about it. We'll talk with Just van Rossum about how he has helped pioneer the use of Python for font development.

00:00 This is episode #47, recorded February 3rd, 2016.

00:00 [music intro]

00:00 Welcome to Talk Python to Me. A weekly podcast on Python- the language, the libraries, the ecosystem, and the personalities.

00:00 This is your host, Michael Kennedy. Follow me on twitter where I'm @mkennedy

00:00 Keep up with the show and listen to past episodes at talkpython.fm and follow the show on twitter via @talkpython.

00:00 This episode is brought to you by Hired and Snap CI. Thank them for supporting the show on twitter via @snap_ci and @hired_hq.

00:00 Michael: Hey everyone, I have a great conversation with Just today. But before we get to that, I want to give you a quick update on my online course project. Recall from last week, I announced I am starting work on a large set of online training courses for Python. You can read about the whole story on my blog post which I'll add at the show notes. To launch this project, I put the first course and intro to Python course called "Python Jumpstart by Building 10 apps on Kickstarter". The campaign has been out for a week and the response has been amazing, the kickstarter was funded in 12 hours, met almost all of its stretch calls and it's still going strong. I want to say thanks to all of you who backed it, I know many of the backers are podcast listeners. If this sounds interesting, check out the course at talkpython.fm/course and if someone you know or work with would benefit from it, send them a link. Speaking of great ways to learn more about Python, Euro Python 2016 has announced their call for proposals, if you are interested to speak in there, just visit europython.eu and click on speakers in the menu bar. Now, let's hear form Just van Rossum about fonts in Python.

02:30 Michael: Just, welcome to the show.

02:32 Just: Thank you, thanks for having me.

02:32 Michael: I am really interested to learn about how python is involved with font development. This is something I knew nothing about, and one of the listeners Chris Simpkins sent me a message and said, "Oh you have to have Just on the show, he is doing all these cool things with Python and fonts," and so I am ready to learn all about it.

02:51 Just: Ha, that's cool. Well, font production is a pretty rare professional field, so it's kind of a niche market for tools. I mean, there are many graphic designers, and in that group there is a smaller group of typographic designers, and within that group there is an even smaller group of type designers who are designing typefaces which become fonts. I tend to make a distinction between the word _typeface_ and fonts, that might be a technicality, but I mean, we see the word _font_- font is a technical representation of a typeface, we design a typeface and we produce a font.

03:25 Michael: I see, so like font might be, that's the thing like in the ttf file?

03:30 Just: Right, the ttf file _is_ the font, and the font describes the typeface with coordinates and curves and splines and beziers, whatever the format does.

03:39 Michael: Awesome. So, I totally want to dig into that. Before we do that, maybe we could hear your story, how did you get into programming and then Python?

03:47 Just: I am the younger brother of Guido van Rossum, the inventor of Python as you know. We are about 10 years apart, he just turned 60, I will be 50 soon, but when I was 15, in 1981, it was like a pioneering time of home computers, our dad bought a little Sinclair ZX81 computer, which then you hooked up to your television and the only thing you could do with that is to program it. And, my brother had already been studying maths and or computer science, I don't even know exactly, and he was working in that field, so he wasn't living at home anymore, but he was close by enough to teach me the basics, like- what do you do with such a machine? how does- it was a variation of Basic that computer did, so I had a nice introduction of relatively experienced programmer, somehow yeah, that fascinated me, I liked working with that at the age of 15. Actually, I got into programming before I got into graphic design, typographic design, I studied so that I was trained as a graphic designer, typographic designer, later on. I never got a formal training as a programmer.

04:58 Michael: Interesting. So you got into programming first, and then you got into this font development?

05:03 Just: Yeah.

05:03 Michael: I'm sure you are thinking like, how can we automate this, how can we build tools to do all these things, right?

05:08 Just: Well, that is what happened later, while studying graphic design, I had an awesome teacher called Gerrit Noordzij who was a type design and calligraphy teacher, and he had a very open mind for technology, and you know, at some point I was still playing with that old computer when I was 18 and produced some experiments that I programmed, I programmed some letter forms and showed it to class and showed it to my teacher, and he was supportive of that, it was kind of a new thing at a time, people didn't have PCs at home yet, so to work with a computer, it was a very nerdish thing, so that's kind of the context.

05:46 Michael: Yeah, so, that's like back when like you said you had to program the computer to get it to do anything, that's before they had programs in themselves, that's crazy. But very cool. How did that evolve into working with Python, I mean obviously, your brother invented it, which is, you've got to be just so amazed at how that's going, which is cool, but it seems like it's not just hey you're using Python for font development, but the font industry is.

06:12 Just: I was working with Petr van Blokland and also Erik van Blokland, those are two brothers that actually are in age similarly as me and my brother. Petr is the older one, Erik is the one of my generation pretty much, and we were making fonts and exploring the technology and Petr actually have been involved in the development of font editor called Mac Ikarus or Ikarus M, and that was a Macintosh version of Ikarus font digitizing software, he was really experienced with that stuff and actually had started writing another font editor, he was never happy with the font editors that were out there, and so he started creating his own stuff, several times actually.

06:52 And he is also a graphic designer, that somehow accidentally got into programming, without the formal training, so we are kind of a small group of graphic people who happen to be programming, and we do our best but we were amateurs at best, but Petr realized that it's such a specific thing to do, you have to have control over your tools. So he was really, so like I said, he wasn't happy with the tools that were there, it's very difficult to make a full working application, the font editor is actually a pretty difficult thing to make, and being the busy person he is he never got around to completely finishing it. So, he realized, well, maybe we should start with an existing font editor and make it programmable.

07:35 And that is how RoboFog came about, in like the mid 1990s, 1995 I think, we started roughly with that project, it's based on Fontographer, which was a very popular font editor at the time, made by the same people who made Freehand which is like, it was a competitor to Illustrator, really smart people, nice small company from Texas who developed that. And somehow through context at the Font Bureau, this is font foundry in Boston, Dave Berlow is the founder and owner of that company, we were in contact with those people, and they allowed us to use their source code and build this programmable font editor. It was actually the old version they had, a new generation lined up, which was a complete rewrite in C++, but the old version was written in C, and Petr van Blokland was playing, sorry I am getting perhaps a bit long winded about this-

08:29 Michael: No, it's interesting that you contacted this company, and this was a commercial product at a time?

08:34 Just: Yeah.

08:34 Michael: And then they gave you their source code to build an API, that's really interesting.

08:40 Just: Yeah, it was their obsolete version pretty much. So, they had the new generation which was much nicer and fancier, whatever, but they allowed us to use their old codebase, not to publish their codebase but we were allowed to play with that. And Petr initially started, he realized he wanted to hook it up to a scripting language, and he wasn't into Python yet, he tried AWK, which well, it was awkward, at best I suppose-

09:05 Michael: It's all in the name already. You know it's a bad idea.

09:07 Just: Yeah, it's all in the name, exactly. And somehow, I had just gotten seriously into Python, I think the first Python version I had on my computer was maybe version 1.2, and the first version that I did some serious work with I think was Python 1.3, I just looked it up before the interview, I think it must have been around 1995 when Python 1.3 was released, I think 1.4 became even better with the Mac support. Anyway, because this Fontographer application was written in C, CPython is written in C, and I infected Petr van Blokland with the Python virus, I showed him that we could compile this stuff, with C compiler for Macintosh, and we actually managed to compile those two worlds into one application, and so once that physically worked which was pretty hard for us, because we were not really programmers, once that physically worked, we could start making the connections, making the API indeed, making Fontographer scriptable. So that turned to became RoboFog which was, well, minorly successful within the niche market, we had some colleagues and friends in our business that really could use those features, we managed to build a little toolkit so you could build your own UI, on top of that, in pure Python. So people had a lot of fun with it and produced really useful tools for their production work, font production workflow.

10:28 Michael: That's cool, so you actually took like the CPython interpreter and compiled it straight into their C app?

10:35 Just: Exactly.

10:36 Michael: Oh, that's pretty good work for formally trained programmers, right?

10:40 Just: Yeah, we were pretty proud that we pulled that off indeed.

10:43 Michael: Yeah, that's really cool. So that worked really well for a while, but then it was showing its age, right?

10:49 Just: Exactly, yeah, we started, the first Fontographer that we used was pretty much obsolete at the time we started using it, so obviously it suffered bit rot, but also a lack of new features. This is a time when Unicode became more and more important, the international encoding standard, I should probably not have to introduce that for this audience, new type technology came about called OpenType, which came largely from Microsoft but was a collaboration between Adobe and Microsoft, allowing all kind of fancy typesetting stuff, but also non latin support for all kinds of languages, that were not available for simple font developers earlier. So, larger character sets, unicode features, OpenType stuff, that was just no longer, it was not possible in RoboFog, and we were pretty much at the same problem, I mean, it would pretty much require a full rewrite of Fontographer to support those things that we needed.

11:45 And yeah, we were kind of not up to that. But then, there was a program called FontLab from Yuri Yarmola, a very smart programmer from St Petersburg in Russia, he came from the Windows world, but it was ported to macOS at some point becoming more and more popular and we met him at a conference in 1997 in Moscow, and we showed him RoboFog and he was actually looking, or shopping around for a scripting language, because he realized that that's indeed something that is needed within this kind of workflow. Again, that's a little side bar, I mean, it's a very specialized profession, but there are not many people who are doing it at that high level, so there is not a huge market, so for a company like Adobe, it's not interesting for them to develop a font editor, at such a scale.

12:34 Michael: Right, maybe they would make something like Illustrator

12:35 Just: Exactly.

12:37 Michael: But not really completely focused. So it sounds like you have these smaller companies written by one or two guys, right?

12:43 Just: Exactly, and type designers are very- well, it's a specialized thing, but they are also very stubborn people, you ask ten type designers a question and you will get ten different answers, they will not agree with each other, simply, especially regarding tools. So to have this editor that you can enhance, or you can script, or automate, or write plugins for, it's just the thing, because people can just make their own stuff, right, and Python is awesome for that, because people with little or no programming experience can get into it relatively quickly, so that whole model proved for us pretty successful. So this Russian guy, Yuri Yarmola, saw that and realized, yeah, Python is a cool language, easy to learn and it's easy to integrate in C and I think his application was written in C++ but still, that integrates pretty well. He chose Python as a scripting language for that.

13:33 Michael: Yeah, and he had a working example from RoboFog as well, so it's like let's just do that again, over here right?

13:39 Just: Yeah, exactly. But it was a cool thing because suddenly, I mean we could use our own thing less and less because it was missing the features that we desperately needed, in the late 1990s, so he wrote an API for that and actually rewrote, we weren't quite happy with the way he wrote that API because we were used to our way, so we actually wrote a whole library on top of his API, his API was a little low level, we wanted to have something more high level, that was scripting APIs concerned, we called that RoboFab, I forgot where that name came from but it must have been something pretty meaningless. Yeah, so we worked with that for better or for worse, I mean, it was at that time the only tool on the market at all that supported all the features we needed. So they were a bit in a monopoly position, at the time.

14:28 Michael: Yeah, and that was another commercial product.

14:30 Just: Yeah, that was another commercial product, roughly at the same time, I should have looked that up before the interview- I have written a library called FontTools/TTX, TTX is more like the tool side, the user of the tool, which is a library that deals with several font formats but mostly TrueType and OpenType and can read binary data and you can change that in Python and then compile it back to a binary font. And also, that's the TTX part, it can convert a whole binary font to an improvised xml format that you can edit that text format and compile it back to a working font. So that's two things that this library does, which was great for reverse engineering things, for fixing up things that editors, font editors didn't generate correctly, to learn about the formats. I open sourced that so that was not a commercial thing, I put it all on SourceForge if anyone remembers that-

15:25 Michael: I've heard of that thing.

15:27 Just: Yeah, it was like the MySpace of version control.

15:31 Michael: Yeah, exactly.

15:31 Just: It was a cool time, we had some contributors, Werner Lemberg got involved, I think he is now doing some work for Google, for TrueType autohinting stuff and Adam Twardoch who is actually on the FontLab team, at the time there was a small community of people who used that stuff, and actually even for the non programmers, the non programming type or font developers, they could use that tool to decompile fonts, peak and poke to the insides and then compile it the back to working fonts, so that was a pretty neat tool to have.

16:01 Michael: And it's on GitHub now, is that right?

16:03 Just: Yeah, yeah, it's by now it's maintained by Behdad (Esfahbod), I can't pronounce his last name, he works for Google, so if you actually Google for FontTools GitHub you should end up at his repository, they kind of took over the maintenance together with a fresh young team of people. In my professional life I had less and less direct use for it and the kind of things that I needed, it did, in a fairly stable way, so I kind of backed out of developing it. I was kind of what you call it, the maintainer that disappeared.

16:38 Michael: The spark that created the project, that other people run away, there you go.

16:41 Just: Right, yeah.

16:43 Michael: One thing I saw that you can do with that that's interesting, I wanted to ask you about, is you said you can debug fonts, what does debugging fonts involve, what does that mean?

16:52 Just: Font is an interesting technology, fonts in general, because they are supposed to have long lifetime, people do not tend to upgrade their fonts, and they are still, they are pieces of software if you look at it, I mean it's to an extent data but there is actually some aspects of various font formats, you can really call it software, it is software, so you have different operating systems and different applications have different quirks with respect to handling fonts, like a font may work in one application, and fail in another, while if they are made properly, then they work everywhere, obviously. But, that is not how the real world works, so there is this whole bunch of vaguely documented things like, if you want your fonts to also work in Word for Windows 95, then you should make sure that that value and that specific table is set in this particular way, otherwise it will not work. It's a whole bunch of legacy, I was going to say crap, I don't know if I can say that on your show- but it's really a fairly chaotic, for instance, the TrueType specification is fairly well maintained by Microsoft these days, TrueType is an invention from Apple and they maintained their own documentation where there's different versions also, of the specification.

18:05 Michael: That's interesting, that sounds a little bit like the issues you run into when you are doing like CSS and web design, but across different browsers right?

18:14 Just: Yeah, probably, yeah, I know of those issues but I'm not a web developer so I don't run into them on a day to day basis. But the cool thing is, I mean, there are fonts that were generated by font editors 25 years ago, and they still work, in some context, maybe not everywhere. But like PostScript Type 1 fonts, I mean, yeah on Mac OS you can still install those old fonts and they will work. Well, it's limited of course, they will have a small character set, people expect- especially graphic designers who actually buy fonts, right, so fonts are often a commercial product, they don't expect to have to upgrade their stuff every couple of years, like they are- they are familiar with that with their applications, I mean Adobe pretty much pushes their InDesign and Illustartor upgrades and everyone knows the annoying Acrobat upgrade messages, so that stuff just doesn't happen in the font world as much. I mean, if people need new characters, like an interesting time was when the Euro was introduced in Europe, suddenly all in the European Union decided well hey, if US dollars have a nice dollar sign, we have to have a sign for the Euro, so they have this logo designed for the Euro which we now all roughly know, but initially, they thought, it's really a logo that was formally specified with a compass and rulers and measurements, and that's what we are supposed to use, not realizing that there is a different dollar sign in every font out there, so font designers soon ignored the specification and just designed their own Euro sign, but yeah, all commercial fonts, all fonts out there had to be upgraded to contain the Euro symbol which was a huge amount of work, which cost a font industry a lot of money. But I think there was also some opportunities there, so those relatively ridiculous stories are fairly common in the font world.

20:02 Michael: Yeah that's- I guess I'd never really thought about it, that new symbols appear and you need them to show up.

20:07 Just: with every update of Unicode we look a little bit like, ok, are we really going to support that? then suddenly math people decided that there is a bold variation of lower case letters that are semantically different from regular, so they need their own unicode code points in Unicode, so, suddenly, there is a whole set of lower case letters or maybe even capital, I don't know, that are just bold, because math people want that. I don't know, I am not convinced of the making sense part of that. Anyway, that's from my perspective, at least.

20:40 Michael: Sure, interesting.

20:40 [music]

20:40 This episode is brought to you by Hired. Hired is a two-sided, curated marketplace that connects the world's knowledge workers to the best opportunities.

20:40 Each offer you receive has salary and equity presented right up front and you can view the offers to accept or reject them before you even talk to the company.

20:40 Typically, candidates receive 5 or more offers in just the first week and there are no obligations ever.

20:40 Sounds awesome, doesn't it? Well did I mention the signing bonus? Everyone who accepts a job from Hired gets a $2,000 signing bonus. And, as Talk Python listeners, it get's way sweeter! Use the link hired.com/talkpythontome and Hired will double the signing bonus to $4,000!

20:40 Opportunity is knocking, visit hired.com/talkpythontome and answer the call.

20:40 [music]

21:41 Michael: So, another thing that is sort of related to the font tools is this thing called DrawBot, that's more of a visual editor right?

21:46 Just: Well, yeah, it's not directly related to the font part, but it's a little application for macOS that is pretty much a Python editor and you run some code, and you can get some textual outputs, but also visual outputs. It's a bit like Processing, the famous application, Java-based application from the MIT people, from John Maeda, who was a professor at MIT who created this thing called Design By Numbers, which was pretty much an experimental thing to teach graphic designers some things about programming, and that was a very simple thing, almost like turtle graphics, I forgot the details, he made a very nice book about it. Anyway, his students Casey Reas and other people wrote Processing, which became hugely successful, but I wrote this little thing called Drawbot which is not really equivalent because it's very simple and primitive and much more 2D and vector based, that allows people to write a small program and get a vector based graphic output that you can save as a pdf or maybe also as pixel images. And I used that on my students in The Hague where I teach at the bachelor graphic design department, but I only recently started teaching coding there. We have a master program for type designers where people from all over the world come to The Hague and study type design for a year, so that's between 10 and 12 people who really intensively study type design. And the whole tool issue, we think tools are, digital tools, are important to have control over, so we want them to at least learn the basics of programming.

23:19 Michael: Right, they are definitely not going to become professional programmers, but they should be empowered right?

23:25 Just: Some people indeed you know, some people are just not wired for programming and they will actually struggle to get something going, that's fine too, and they still learn the thing or two. One student I should single out, specifically that is Frederik Berlaen, from Gent in Belgium, he had a decent maths background, but really no programming background when he started studying with us. And he turned out to be super fast in picking up Python and making awesome stuff, and he went on to author a font editor called RoboFont, which was published like a couple of years ago, only, it's fairly successful, it's written in Python obviously and very extensible-

24:03 Michael: That's cool, yeah, I was going to ask you about RoboFont, I didn't realize the connection. That's cool!

24:05 Just: Yeah, but let's get back to DrawBot because it was a primitive tool, that had taught our students the basics of programming. But also, there I mean, I didn't really maintain it properly, and it fell apart a little bit, and at some point actually Frederik picked it up and pretty much rewrote it almost from scratch. Adding all sorts of new features, adding support that we can export, animations, animated gifs, and much nicer preview of the graphic output. So, that's been a lot of fun, that's been the generation 3, it's completely open source, now it is I think drawbot.com is the main website, there is the sources are on GitHub. Unfortunately it's a Mac only application at moment, we are still hoping that someone will at least pick up the drawing API and make cross platform or Linux and/or Windows versions of that. Because it's a simple drawing API, I am not saying it's perfect but it's small, and you can do cool things with it, with color and shapes and text even.

25:11 Michael: Yeah, I've seen a lot of really cool pictures, people have generated with it, they are pretty detailed.

25:17 Just: Yeah.

25:18 Michael: Even fractal looking things.

25:21 Just: Right, yeah, yeah, you can write your loops in Python because things people turn to pick up relatively quickly. So it's been a really nice little tool for type design students to get started with Python, and then they move over to do the serious scripting work for font editors, there used to be FontLab, now obviously RoboFont, but also there is yet another commercial font editor called Glyphs from Georg Seifert, a guy in Berlin, very smart programmer, so now there are actually three commercial font editors out there that all support Python. I mean, only one, only RoboFont is written in Python, and there is actually, there is an open source one, I don't know how alive that is, called FontForge, that also has some Python support, so yes somehow Python is all over the place, in font development land if I can call it that.

26:12 Michael: Yeah, yeah. That's really interesting and so it makes perfect sense, you would teach the students Python, so that they can basically script these editors they have to work with, right?

26:23 Just: Yeah, exactly, yeah. And you know, we have maybe one little bit of background like why do these guys need that- imagine developing a font family, that has several weights or many weights, it has to support many languages, so there are many characters in there, well, then imagine all the European accented letters, there is a whole bunch of- there is just one example like there is a whole bunch of letters that are derived from normal latin letters but have an accent placed on them or several accents, placed on top of them, or underneath them; there are all kinds of tools to work with that but this is just one example of things that are pretty tedious to make by hand in a font editor so you want to have, to write maybe some rules of how to build those characters, that you are not going to draw them one by one by hand, that's just going to take too long, and things have to be consistent within a font, so you can write tools that check certain things, metrics, or whether things should align or whatever, there is all kinds of things that you want to control or check or build in ways that can vary greatly from designer to designer, or could change from design to design, so the approaches and philosophies or design principles that people apply can be different, so to have these programmable environments is a real boon for many of our colleagues.

27:44 Michael: That makes a lot of sense. Do you have problems where like you've got to say an O with an umlaut, and a regular O and if you change the O you want to obviously change all the sort of O derivative ones, and you want to script that so maybe as your developing fonts?

27:59 Just: Yeah, well that particular problem has actually been solved for a long time in a non programming way, because indeed that's a good question but it's such a common problem that in fact in most editors you can build a glyph referencing other glyphs-

28:14 Michael: Right, ok.

28:15 Just: Yeah, so those things will stay pretty much consistent if you are not completely careless, but indeed, that is the kind of things indeed that you can do with these tools.

28:24 Michael: One of the things that I ran across looking through this space was these things called UFOs. And not the ones with aliens in them but Unified Font Objects, right?

28:34 Just: Exactly, yeah. That's an interesting thing, this is a file format, yeah, Unified Font Object it's also more or less an API if you want to deal with those files, it's actually me and my colleague Erik van Blokland started because of this thing, because we lived in different cities and we were working on a fonts project together, and we needed a way to share the glyph data and we were actually using cvs, this is like early 2000.

29:04 Michael: I remember cvs.

29:05 Just: You remember that? That is like before Subversion, it was pretty awesome. It was a super old and clumsy version control system but we decided we needed a version control system for our glyphs, so we defined a text format for glyph outline data, and well, we put it in xml format, at a single file under version control for each glyph and that way we could cooperate on one font remotely. So this tool which was made by and for programmers for code, we started to use for outline data, which was pretty nice, but that idea kind of caught on and people thought 'hey, we could use that as well', and we teamed up with a guy called Tal Leming in the US, who was at the time working for a small font company called House Industries. And the three of us went on and developed this a little more seriously, with place for meta info and all kinds of metrics data, and we improved the glyph format that it would be more generally useful. Because it started as this ad hoc homemade, you know how all these things probably start, and still, we are amateur programmers and definitely not experienced in the specification of file formats, and we're pretty much winded with some xml knowledge and in the end, a UFO file is not really a file, it's the folder or a directory containing a bunch of files.

30:30 Michael: And you need this so that you can put it in version control and diff it, not have it, always conflict, right?

30:36 Just: Yeah, that was the starting point, actually so we made an import/export tool for FontLab, the dominant font editor at the time, and then it kind of became an exchange format, because people started writing other tools that were not necessarily complete font editors, for instance, Tal Leming, the guy I just mentioned, one of the coauthors of the UFO specification, he wrote a very cool tool to edit metrics, within font editing you can say editing spacing and kerning metrics is another specialization, and it's a tedious kind of work, so to have a good tool for that, that makes things easier, was really much needed, and he wrote that, it's called MetricsMachine, it's still around. So, we needed a way to transfer data from FontLab, which used its own proprietary binary goo unspecified unpublished format, to MetricsMachine and other tools. So the UFO format was just the thing for that. So, to just go back and forth between those applications, because we needed FontLab to edit outlines and we needed MetricsMachine to do the proper metrics editing. So, it became this exchange format and caught on. A little further Tal Leming pretty much took over the specification and wrote a really nice formal specification for that, he learned how to do all that and spent many, many hours getting that done.

32:07 Michael: Getting it just right, yeah, I am sure.

32:09 Just: Yeah, the world of specification writing is also one, he and Erik van Blokland were also involved in the development of the WOFF format, the web fonts format, so they got into the W3C world of writing specifications, which well, I wasn't involved in that, I've seen it from the sideline and it's wow- a lot of work, very tedious. It's very important work, I don't want to underestimate that, but it's not easy for us simple graphic designers if I have to put it that way.

32:45 Michael: Yeah, I'm sure, when it gets down to that you've got to exactly the right detail and so on, yeah, the everything.

32:51 Just: Yeah, the terminology like this _must_ be like that, that _should_ be like that, with the right use of capital letters in your language, it's you almost have to become a lawyer for that stuff, it's very interesting.

33:03 Michael: Yeah, it sounds a little bit like that.

33:03 [music]

33:03 Gone are the days of tweaking your server, emerging your code and just hoping it works in your production environment. With SnapCi's cloud based, hosted continuous delivery tool you simply do a git push and they autodetect and run all the necessary tests through their multistage pipelines. If something fails, you can even debug it directly in the browser.

33:03 With the one click deployment that you can do from your desk or from 30 000 feet int he air, Snap offers flexibility and ease of mind. Imagine all the time you'll save. Thank SnapCI for sponsoring this episode by trying them for free at snap.ci/talkpython.

33:03 [music]

34:03 Michael: So, can you talk about what it's like to, like create fonts for these embeddable web, like the WOFF font type things versus a print, versus computer screen, is this all the same or how do you think about that?

34:17 Just: I'm not that active in creating web fonts, and stuff, I know roughly how the stuff works, there are different philosophies and, I mean on the one hand technology is always important for type design and like even- historically this is a very interesting story that starts pretty much at Gutenberg, like how this old invention of print and how that goes through analog typesetting systems, through digital, anyway, ending up now at fonts for applications and websites, yeah, somehow to get the best results you have to have some grasp of the technology, right, so as a type designer, you better know to a fairly deep level how things work, how rasterizers work, what kind of rasterizers are there, maybe come less and less relevant with screens getting better and higher resolutions, I mean, I am looking at a Retina screen here that I cannot literally with my old eyes distinguish the individual pixels anymore.

35:14 Michael: Yeah, so in some sense, maybe font design is getting a little bit easier than it used to be?

35:18 Just: Oh yeah!

35:20 Michael: Is that a controversial question?

35:22 Just: No, no, no, tools are getting more accessible, but that's with all, like you can give an amateur a high end digital camera and they can make technically great photos, there will be some talents who have a flair or natural talent for that and become great photographers. That's the same pretty much, I think that's a fair parallel to my profession, but most of the time people will work hard and have an education and learn about the basics, not only technical but on a visual level, on a design level, like what makes a font work well, especially in text sizes for instance, that is just not a simple thing that even if an amateur can relatively easily learn the tools, that will not allow that person to create a high quality font easily. That's kind of an interesting thing.

36:10 Michael: Yeah, there is a lot of non obvious things that make it really different on reading something or how it's even, how easy is it for you to absorb, right?

36:19 Just: Yeah, one of the favorite aspects of type design is the paradox, you are designing a group of shapes that are letters that are designed to be used in context and in different orders, so the set of shapes, they belong together, right, they have to work together, they have to form words and sentences, and people need to read that. So, on that level they have to be very similar and equal and nicely balanced to make it work as a group of shapes. On the other hand, if you make everything as the same as possible things become illegible, because the letters need to be- you need to be able to distinguish the letters, right? So on another level, you have to make the letters as different from each other as possible. So that's kind of like, this whole paradox that we try to balance in between and it kind of totally depends on the application of your typeface, I mean if you are designing a wild headline thing for the hippest magazine, or flyers or whatever, then obviously you will have very different set of rules to work with than if you are designing a typeface for a newspaper that needs to use the paper as efficiently as possible, so as to cram as much text in there without becoming illegible.

37:28 Michael: Yeah, that's really interesting. I've always appreciated fonts and being able to look at the screen and see, even look at some and know they are beautiful than others, you rather not have when you are writing your paper, whatever, when I was younger, but then I watched the movie Helvetica, have you seen that?

37:44 Just: Right, yeah, that's an awesome movie.

37:46 Michael: Oh my God, I have ten times as much respect for fonts and the history and the thought and the detail, that goes into it- did you like that show?

37:56 Just: It was a fantastic movie, I saw a lecture of the director of that, I mean it was very obviously popular within my field, because you know, it was the first big full length documentary that really showed something I didn't know if it's really the first, but it was an important documentary for our field and I am glad that it got out there, outside of our field as well, that people saw it and then learned something about that and make people realize what it is. I remember long time ago on a party, I was I think I was still studying but I was sort of deeply into type design, someone asked type design- is that something like macaroni design? I was like, well, not quite, but... But that was probably at a time, we're deeply in words now, they know you have your font menu, everyone knows there is a font menu and there is stuff in there, but not everyone realizes that comes from people who make those things, right?

38:49 Michael: Yeah, and I didn't really appreciate the depth of thought, that goes into these things and so now, when I am looking into something in, and I really think about the fonts and how much must be behind it, and I am just enjoying working in or reading in or whatever. So if people are out there listening, check out the Helvetica.

39:07 Just: It's an awesome movie.

39:08 Michael: Yeah, it's really good I think it might be on Netflix, but it's definitely online you can stream it from somewhere.

39:13 Just: Absolutely.

39:13 Michael: All right, Just, we are sort of coming up to the end of the show, there is a couple of questions I ask everybody on the way out the door, So let me ask you, if you are going to sit down and write some Python code, what editor do you open up?

39:26 Just: Well, I'm on a Mac, and actually I am little out of date, I am still using TextMate which is an awesome text editor I think, but most of my colleagues have switched to Sublime which is apparently awesome, but like within my frame of reference, VI, Vim and Emacs don't really exist.

39:44 Michael: Yeah, those are definitely popular programmer choices for the main devs but- TextMate, that's cool.

39:49 Just: Do you ask about taps versus spaces or is that- that's probably done deal

39:55 Michael: Yeah, it's a done deal. Oh, I wanted to ask you about tabs and spaces. My other question though, I will ask you is if go out to the Python package index, there are thousands, 60, 70 thousands whatever, I haven't looked the top numbers right now, but many packages that are amazing- are there any that you can think of, like I just found this and I really love it, and I should tell the world about it?

40:17 Just: Well, you know I am not a heavy user of external packages, but I've been a long time user of NumPy which I have probably used like half a percent of its functionality, I don't have a background in math, but like many of the features, the vector multi dimensional array stuff is just super awesome, but I've recently only for the first time, I've heard of it for a long time, I've actually used some code from the SciPy module, or package, because it has some really neat like triangulation algorithms and the Voronoi tiling algorithms it's just in there that I actually use to create some funny graphic animations.

40:55 Michael: Oh yeah, how nice.

40:56 Just: And now it's a huge package and again, from that I probably used like even less than what I used from NumPy, but that I've been recently having a lot of fun with this tiny part of the SciPy package.

41:09 Michael: Yeah, that's really cool, I suspect that most people that use those packages do not use all of them or I can't imagine, even as a scientist, you probably have your slice that really applies to your problem, right?

41:19 Just: Probably, yeah. And then there is this whole plotting stuff that in there that I am not even sure if that works well, within the environments that I use, I use a lot of Mac specific UI stuff, so like Tkinter for instance, somehow not an option in my field, I mean it's technically, it works on Mac.

41:37 Michael: It's not a lovely UI experience.

41:40 Just: No, and you know, within my field, still I have mixed feelings about that, I don't want to be seen as an Apple fan boy at all, but within my field, the Macs are so dominantly around.

41:53 Michael: So, your tools have to support it, right?

41:55 Just: For the tools that we write, to not have Windows or Linux support is totally fine.

42:00 Michael: Yeah, so I am recording on a Mac as well, so- they are nice pieces of software, they definitely are.

42:06 Just: And actually the FontTools library that I've been working on that is completely welcome in most platforms, I mean, I am very open to- I've been a Linux user to some extent, so I am very in favor of cross platform code as much as possible, but for user interface, for GUI stuff, it's just difficult to get the right look and feel.

42:26 Michael: Yeah, that's actually a big challenge, and people who listen to the show they have written me recently and said, can we have like a conversation, how to do this well because it really is hard to do it, both cross platform and nicely I think.

42:38 Just: Exactly. I have no answer to that, I've seen nice results from Qt, I hear things about GTK but I don't know anything about it.

42:48 Michael: Yeah, it sounds like Qt is a good bet from what I hear as well. Just, this has been fantastic I now know a lot more about how Python and fonts go together and it's fascinating. Thank you.

42:59 Just: Thank you very much. Pleasure to talk to you.

43:01 Michael: Yeah, you as well, see you later.

43:01 This has been another episode of Talk Python To Me.

43:01 Today's guest was Just van Rossum, and this episode has been sponsored by SnapCI and Hired. Thank you guys for supporting the show!

43:01 Hired wants to help you find your next big thing. Visit hired.com/talkpythontome to get 5 or more offers with salary and equity right up front and a special listener signing bonus of $2,000 USD.

43:01 Snap CI is modern continuous integration and delivery. Build, test, and deploy your code directly from github, all in your browser with debugging, docker, and parallelism included. Try them for free at snap.ci/talkpython

43:01 Did you check out the video course that I am building? The kickstarter is open until March 18th, and you will find all the details at talkpython.fm/course.

43:01 You can find the links from the show at talkpython.fm/episodes/show/47

43:01 Be sure to subscribe to the show. Open your favorite podcatcher and search for Python. We should be right at the top. You can also find the iTunes and direct RSS feeds in the footer on the website.

43:01 Our theme music is Developers Developers Developers by Cory Smith, who goes by Smixx. You can hear the entire song on our website.

43:01 This is your host, Michael Kennedy. Thanks for listening!

43:01 Smixx, take us out of here.

Back to show page
Talk Python's Mastodon Michael Kennedy's Mastodon