forked from mikeckennedy/talk-python-transcripts
-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy path047_fonts_and_python.txt
More file actions
1336 lines (668 loc) · 49.6 KB
/
047_fonts_and_python.txt
File metadata and controls
1336 lines (668 loc) · 49.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
00:00:00 This week on Talk Python To Me, we'll dive into the world of typeface and font development.
00:00:04 Even though we spend our days immersed in fonts, from computer interfaces, signs, books, televisions, and more,
00:00:11 much of the process and thinking about fonts is invisible to us.
00:00:14 If we did dig into font development, we'd see that Python is a key component of the Font Developers Toolkit.
00:00:20 This week, we have a very special guest to tell us all about it.
00:00:24 We'll talk to Jost van Rossum about how he has helped pioneer the use of Python for font development.
00:00:30 This is episode number 47, recorded February 3rd, 2016.
00:00:49 Welcome to Talk Python To Me, a weekly podcast on Python, the language, the libraries, the ecosystem, and the personalities.
00:01:05 This is your host, Michael Kennedy.
00:01:07 Follow me on Twitter, where I'm @mkennedy.
00:01:09 Keep up with the show and listen to past episodes at talkpython.fm, and follow the show on Twitter via at Talk Python.
00:01:16 This episode is brought to you by Hired and SnapCI.
00:01:19 Thank them for supporting the show on Twitter via at Hired underscore HQ and at Snap underscore CI.
00:01:26 Hey, everyone.
00:01:28 I have a great conversation with Jost on Tap today.
00:01:30 But before we get to that, I want to give you a quick update on my online course project.
00:01:34 Recall from last week, I announced I'm starting work on a large set of online training courses for Python.
00:01:40 You can read about the whole story on my blog post, which I'll add to the show notes.
00:01:44 To launch this project, I put the first course, an intro to Python course called Python Jumpstart by building 10 apps, on Kickstarter.
00:01:52 The campaign has been out for a week, and the response has been amazing.
00:01:56 The Kickstarter was funded in 12 hours, met almost all of its stretch goals, and is still going strong.
00:02:01 I want to say thanks to all of you who backed it.
00:02:03 I know many of the backers are podcast listeners.
00:02:06 If this sounds interesting, check out the course at talkpython.fm/course.
00:02:10 And if someone you know or work with would benefit from it, send them a link.
00:02:14 Speaking of great ways to learn more about Python, EuroPython 2016 has announced their call for proposals.
00:02:20 If you're interested in speaking there, just visit europython.eu and click on Speakers in the menu bar.
00:02:25 Now, let's hear from Jost van Rossum about fonts and Python.
00:02:29 Jost, welcome to the show.
00:02:31 Thank you.
00:02:32 Thanks for having me.
00:02:32 Yeah, I'm really interested to learn about how Python is involved with font development.
00:02:38 This is something I knew nothing about, and one of the listeners, Chris Simpkins, sent me a message and said,
00:02:44 oh, you have to have Jost on the show?
00:02:46 He's doing all these cool things with Python and fonts, and so I'm ready to learn all about it.
00:02:51 Huh, that's cool.
00:02:52 Well, font production is a pretty rare profession or field, so it's kind of a niche market for tools.
00:03:00 I mean, there are many graphic designers and that group there are, there's a smaller group of typographic designers, and within that group, there's an even smaller group of type designers who are designing typefaces, which become fonts.
00:03:13 I tend to make a distinction between the word typeface and font.
00:03:15 It might be a technicality, but I mean, we see the word font.
00:03:19 A font is a technical representation of a typeface.
00:03:22 We design a typeface and we produce a font.
00:03:25 I see.
00:03:25 So, like, font might be, that's the thing, like, in the TTF file.
00:03:29 Right.
00:03:30 The TTF file is the font, and the font describes the typeface with coordinates and curves and splines and bases, whatever the format does.
00:03:38 Awesome.
00:03:39 So, I totally want to dig into that.
00:03:41 Before we do, though, maybe we could hear your story.
00:03:43 How did you get into programming and then Python?
00:03:46 You know, I'm the younger brother of Guido, Guido van Rossen, the inventor of Python, as you know.
00:03:51 We're about 10 years apart.
00:03:53 He just turned 60.
00:03:55 I will be 50 soon.
00:03:56 But when I was 15, so this must have been calculating, 1981.
00:04:01 This is like a pioneering time of home computers.
00:04:05 Our dad bought a little Sinclair 81, a ZX81 computer, which I hooked up to your television.
00:04:12 The only thing you could do with that is to program it, and my brother had already been studying math and or computer science.
00:04:20 I don't even know exactly, and he was working in that field.
00:04:22 So, he wasn't living at home anymore, but he was close by enough to teach me the basics.
00:04:27 Like, what do you do with such a machine?
00:04:30 How does, it was a variation of basic that computer did.
00:04:34 So, I had a nice introduction of a relatively experienced programmer.
00:04:39 Somehow, yeah, that fascinated me.
00:04:41 I liked working with that at the age of 15.
00:04:44 So, actually, I got into programming before I got into graphic design, a typographic designer.
00:04:50 I started so that I was trained as a graphic designer, typographic designer.
00:04:53 Later on, I never got a formal training as a programmer.
00:04:57 Interesting.
00:04:58 So, you got into programming first, and then you got into this font development.
00:05:03 Yeah.
00:05:03 I'm sure you're thinking, like, how can we automate this?
00:05:05 How can we build tools to do all these things, right?
00:05:08 Well, that is what happened later.
00:05:09 While studying graphic design, I had an awesome teacher called Gerard Nortzey, who was a type
00:05:16 design and calligraphy teacher.
00:05:18 And he had a very open mind for technology.
00:05:21 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.
00:05:28 I programmed some letter forms and showed it to class and showed it to my teacher.
00:05:33 And, yeah, he was supportive of that.
00:05:36 It was kind of a new thing at the time.
00:05:38 People didn't have PCs at home yet.
00:05:40 So, to work with a computer was a very nerdish thing.
00:05:43 So, that's kind of the context.
00:05:45 Yeah.
00:05:46 So, that's like back when, like you said, you had to program the computer to get it to do anything.
00:05:50 That's before they had programs.
00:05:52 And so, that's crazy.
00:05:52 Yeah.
00:05:53 But very cool.
00:05:54 Right.
00:05:54 How did that evolve into working with Python?
00:05:57 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.
00:06:04 But it seems like it's not just, hey, you're using Python for font development, but the font industry is.
00:06:12 I was working with Peter from Blockland and also Eric from Blockland.
00:06:15 Those are two brothers that actually are in age similarly as me and my brother.
00:06:21 So, Peter is the older one.
00:06:22 Eric is the one of my generation, pretty much.
00:06:24 And we were making fonts and exploring the technology.
00:06:29 And Peter actually had been involved in the development of a font editor called MacIcarus or Icarus M.
00:06:36 It was a MacIcarus version of the Icarus font digitizing software.
00:06:40 He was really experienced with that stuff and actually had started writing another font editor.
00:06:45 He was never happy with the font editors that were out there.
00:06:47 And so, he created his own stuff, well, several times, actually.
00:06:53 And he is also a graphic designer that somehow accidentally got into programming without a formal training.
00:06:59 So, we're kind of a small group of graphic people who happen to be programming.
00:07:03 And, well, we do our best, but we're amateurs at best.
00:07:07 But Peter realized that it's such a specific thing to do.
00:07:13 You have to have control over your tools.
00:07:15 So, he was really – like I said, he wasn't happy with the tools that were there.
00:07:19 It's very difficult to make a full working application.
00:07:22 A font editor is actually a pretty difficult thing to make.
00:07:25 And being the busy person he is, he never got around to completely finishing it.
00:07:29 So, he realized, well, maybe we should start with an existing font editor and make it programmable.
00:07:34 And that is how Robofog came about in the mid-90s, 95.
00:07:40 I think we started roughly with that project.
00:07:42 It's based on Fontographer, which was a very popular font editor at the time.
00:07:46 Made by the same people who made Freehand, which is like – was a competitor to Illustrator.
00:07:51 Really smart people.
00:07:53 A nice small company from Texas who developed that.
00:07:56 And somehow through contacts at the Font Bureau, this is Font Foundry in Boston, and David Burlow, the founder and owner of that company, we were in contact with those people.
00:08:07 And they allowed us to use their source code and build this programmable font editor.
00:08:14 It was actually the old version.
00:08:15 They had a new generation lined up, which was a complete rewrite in C++.
00:08:19 But the old version was written in C.
00:08:21 And Peter from Blockland was playing – I'm sorry, I'm getting perhaps a little long-minded about this, if you want to interrupt.
00:08:27 No, it's interesting, though, that you contacted this company.
00:08:31 And this was a commercial product at the time?
00:08:33 Yeah.
00:08:33 And then they gave you the source code to build an API.
00:08:37 That's really interesting.
00:08:39 Yeah, it was their obsolete version, pretty much, right?
00:08:42 So, they had the new generation, which was much nicer and fancier and whatever.
00:08:46 But they allowed us to use their old code base, not to publish the code base, but we were allowed to play with that.
00:08:52 And Peter initially started – he realized I wanted to hook it up to a scripting language.
00:08:57 And he wasn't into Python yet.
00:08:59 He tried AUK, which, well, it was awkward at best, I suppose.
00:09:03 It's all in the name already.
00:09:04 You knew it was a bad idea.
00:09:06 Yeah, it's all in the name.
00:09:07 Exactly.
00:09:07 And somehow I had just gotten seriously into Python.
00:09:10 I think the first Python version I had on my computer was maybe version 1.2.
00:09:15 And the first version that I did some serious work with, I think, was Python 1.3.
00:09:20 I just looked it up before the interview.
00:09:21 I think it must have been around 1995 when Python 1.3 was released.
00:09:26 I think 1.4 became even better with a Mac support.
00:09:30 Anyway, because this photographer application was written in C, CPython is written in C.
00:09:35 And I infected Peter from Blockland with the Python virus and showed him that we could compile this stuff with C compiler for Macintosh.
00:09:45 And we actually managed to compile those two worlds into one application.
00:09:49 And so once that physically worked, which was pretty hard for us because we're not really programmers,
00:09:54 once that physically worked, we could start making the connections, making the API indeed, making Photographer scriptable.
00:10:02 So that turned became Robofog, which was, well, minorly successful within a niche market.
00:10:08 We had some colleagues and friends in our business that really could use those features.
00:10:13 We managed to build a little toolkit so you could build your own UI on top of that in pure Python.
00:10:20 So people had a lot of fun with it and produced really useful tools for their production work, font production workflow.
00:10:27 That's cool.
00:10:28 So you actually took like the CPython interpreter.
00:10:31 Yeah.
00:10:31 And compiled it straight into their C app.
00:10:34 Exactly.
00:10:35 Oh, that's pretty good work for formally trained programmers, right?
00:10:39 Yeah, we were pretty proud that we got that, that we pulled that off indeed.
00:10:42 Yeah, that's really cool.
00:10:43 That's really cool.
00:10:44 So that worked really well for a while, but then it was showing its age, right?
00:10:48 Exactly.
00:10:49 Yeah, we started, the version of Photography we used was pretty much obsolete at the time we started using it.
00:10:54 So obviously it suffered a bit rot, but also a lack of new features.
00:10:58 This is a time when Unicode became more and more important.
00:11:02 The international encoding standards.
00:11:05 I should probably not have to introduce that for this audience.
00:11:08 New type technology came about called OpenType, which came largely from Microsoft, but was a cooperation between Adobe and Microsoft, allowing all kinds of fancy typesetting stuff, but also non-Latin support for all kinds of languages that were not available for us simple font developers earlier.
00:11:28 So larger character sets, Unicode features, OpenType stuff, that was just no longer, it was not possible in Robofog.
00:11:37 And we were pretty much at the same problem.
00:11:39 I mean, it would pretty much require a full rewrite of Photographer to support those things that we needed.
00:11:45 And yeah, we were kind of not up to that.
00:11:48 But then there was a program called FontLab from Yuri Yarmola, a very smart programmer from St. Petersburg in Russia.
00:11:55 It came from the Windows world, but it was ported to macOS at some point, becoming more and more popular.
00:12:01 And we met him at a conference in 97 in Moscow, and we showed him Robofog.
00:12:07 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.
00:12:16 Again, that's a little sidebar.
00:12:19 I mean, it's a very specialized profession, but there are not many people who are doing it at that high level.
00:12:25 So there's not a huge market.
00:12:26 So like a company like Adobe, it's not interesting for them to develop a font editor at such a scale.
00:12:33 Right.
00:12:33 Maybe they'd make something like Illustrator.
00:12:35 Exactly.
00:12:37 But not really completely focused.
00:12:39 So it sounds like you have these smaller companies written by one or two guys, right?
00:12:43 Exactly.
00:12:44 And type designers are very, well, it's a specialized thing, but they're also very stubborn people.
00:12:48 But you ask 10 type designers a question, you will get 10 different, they will not agree with each other, simply, especially regarding tools.
00:12:54 So to have this editor that you can enhance or can script or automate or write plugins for is just the thing because people can just make their own stuff, right?
00:13:05 And Python is awesome for that because people with little or no programming experience can get into it relatively quickly.
00:13:12 So that whole model proved for us pretty successful.
00:13:17 So the Russian guy, Yuri Ramola, saw that and realized, yeah, Python is a cool language, easy to learn, and it's easy to integrate in C.
00:13:25 And I think his application was written in C++, but still that integrates pretty well.
00:13:30 So he chose Python as a scripting language for that.
00:13:32 Yeah.
00:13:32 And he had a working example from Robofog as well.
00:13:36 So he's like, let's just do that again over here, right?
00:13:38 Yeah, exactly.
00:13:39 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.
00:13:47 In the late 90s.
00:13:48 So he wrote an API for that.
00:13:50 And actually, we weren't quite happy with the way he wrote that API because we were used to our way.
00:13:55 So we actually wrote a whole library on top of his API.
00:13:59 His API was a little low level.
00:14:00 We wanted to have something more high level as far as scripting API is concerned.
00:14:06 We called that Robofab.
00:14:08 I forgot where that name came from, but it must have been something pretty meaningless.
00:14:12 Yeah.
00:14:13 So we worked with that for better or for worse.
00:14:16 I mean, it was at that time the only tool on the market at all that supported all the features we needed.
00:14:22 So they were a bit in a monopoly position at the time.
00:14:27 Yeah.
00:14:28 And that was another commercial product.
00:14:29 Yeah.
00:14:30 That's another commercial product.
00:14:31 Roughly at the same time, I should have looked that up before the interview.
00:14:34 I have written a library called Font Tools slash TTX.
00:14:38 TTX is more like the tool side, the user end of the tool, which is a library that deals with several font formats, but mostly true type and open type.
00:14:48 And can read binary data.
00:14:56 And also that's the TTX part.
00:14:57 It can convert a whole binary font to an improvised XML format.
00:15:04 It can be able to do that.
00:15:05 So that's the two things that that 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.
00:15:19 I open sourced that, so that was not a commercial thing.
00:15:21 I put it on SourceForge, if anyone remembers that.
00:15:25 I've heard of that thing.
00:15:25 Yeah.
00:15:26 It was like the MySpace of version control, right?
00:15:30 Yeah, exactly.
00:15:30 It was a cool time.
00:15:31 And we had some contributors.
00:15:33 Werner Lemberg got involved.
00:15:35 I think he's now doing some work for Google for true type auto hinting stuff.
00:15:39 Adam Twardock, who's actually on the FontLab team.
00:15:41 At the time, there was a small community of people who used that stuff.
00:15:45 And actually, even for the non-programmers, non-programming type or font developers, they could use that tool to decompile fonts, peek and poke to the insides, and then compile it back to a working font.
00:15:58 So that was a pretty neat tool to have.
00:16:01 And it's on GitHub now, is that right?
00:16:02 Yeah, yeah, yeah.
00:16:03 By now, it's maintained by Bedat.
00:16:06 I can't pronounce his last name.
00:16:08 He works for Google.
00:16:09 So if you actually Google for font tools GitHub, you should end up at his repository.
00:16:14 He kind of took over the maintenance together with a fresh young team of people.
00:16:20 In my professional life, I had less and less direct use for it.
00:16:25 And the kind of things that I needed, it did in a fairly stable way.
00:16:29 So I kind of backed out of developing it.
00:16:32 I was kind of the, well, what do you call it?
00:16:35 The maintainer that disappeared.
00:16:37 The spark that created the project that other people ran off.
00:16:40 There you go.
00:16:41 Right, yeah.
00:16:42 So one thing I saw that you can do with that that's interesting and I wanted to ask you about is you said you can debug fonts.
00:16:49 What does debugging fonts involve?
00:16:51 What does that mean?
00:16:52 Fonts is an interesting technology, fonts in general, because they are supposed to have a long lifetime.
00:16:58 People do not tend to upgrade their fonts.
00:17:02 And they're still there pieces of software if you look at it.
00:17:05 I mean, to an extent it's data, but there's actually some aspects of various font formats.
00:17:10 You can really call it software.
00:17:11 It is software.
00:17:12 So, yeah, different operating systems and different applications have different quirks with respect to handling fonts.
00:17:19 Like a font may work in one application and fail in another.
00:17:22 Well, if they're made properly, then they work everywhere, obviously.
00:17:26 But that is not how the real world works.
00:17:29 So there's this whole bunch of vaguely documented things.
00:17:32 Like if you want your fonts to also work in Word from Windows 95, then you should make sure that that value in that specific table is set in this particular way.
00:17:44 Otherwise, it will not work.
00:17:45 It's a whole bunch of legacy.
00:17:48 I was going to say crap.
00:17:49 I don't know if I can say that on your show.
00:17:50 But it's really fairly chaotic.
00:17:52 For instance, the TrueType specification is very well maintained by Microsoft these days.
00:17:57 TrueType is an invention from Apple, and they maintain their own documentation.
00:18:01 But there's different versions also of the specification.
00:18:04 That's interesting.
00:18:05 It sounds a little bit like the issues you run into when you're doing like CSS and web design, but across different browsers, right?
00:18:13 Yeah, probably.
00:18:14 Yeah, I know of those issues, but I'm not a web developer.
00:18:16 So I don't run into them on a day-to-day basis.
00:18:18 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 contexts.
00:18:27 Maybe not everywhere.
00:18:28 But like PostScript Type 1 fonts, I mean, yeah, on macOS, you can still install those old fonts, and they will work.
00:18:36 Well, it's limited, of course.
00:18:37 They will have a small character set.
00:18:39 People expect, especially graphic designers who actually buy fonts, right?
00:18:43 So fonts are often a commercial product.
00:18:46 They don't expect to have to upgrade their stuff every couple years like they are.
00:18:50 Well, they are familiar with that with their applications.
00:18:52 I mean, Adobe pretty much pushes their InDesign and Illustrator upgrades.
00:18:56 And, well, everyone knows the annoying Acrobat upgrade messages.
00:19:02 Oh, yeah.
00:19:03 So that stuff just doesn't happen in the font world as much.
00:19:06 I mean, if people need new characters.
00:19:08 Like an interesting time was when the euro was introduced in Europe.
00:19:11 Suddenly, well, the European Union had decided, well, hey, if U.S. dollars, they have a nice dollar sign.
00:19:18 We have to have a sign for the euro.
00:19:20 So they had this logo designed for the euro, which we now all roughly know.
00:19:24 But initially, they thought it's really a logo that was formally specified with a compass and rulers and measurements.
00:19:31 And that's what we were supposed to use, not realizing that there is a different dollar sign in every font out there.
00:19:38 So the font designers soon ignored the specification and just designed their own euro sign.
00:19:44 But, yeah, all commercials, all fonts out there had to be upgraded to contain the euro symbol, which was a huge amount of work, which cost the font industry a lot of money.
00:19:52 But I think there was also some opportunities there.
00:19:55 So those relatively ridiculous stories are fairly common in the font world.
00:20:01 Yeah, that's, I guess I never really thought about it, that new symbols appear and you need them to show up.
00:20:06 With every update of Unicode, we look a little bit like, okay, are we really going to support that?
00:20:13 Then suddenly math people decided that there is a bold variation of lowercase letters that are semantically different from regular.
00:20:21 So they need their own Unicode code points in Unicode.
00:20:24 So suddenly there's a whole set of lowercase letters or maybe even capital, I don't know, that are just bold because math people want that.
00:20:32 I don't know.
00:20:33 I'm not convinced of the making sense part of that.
00:20:37 Anyway, that's from my perspective, at least.
00:20:38 Sure.
00:20:39 Interesting.
00:20:50 This episode is brought to you by Hired.
00:20:53 Hired is a two-sided, curated marketplace that connects the world's knowledge workers to the best opportunities.
00:20:58 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.
00:21:06 Typically, candidates receive five or more offers within the first week, and there are no obligations ever.
00:21:11 Sounds awesome, doesn't it?
00:21:13 Well, did I mention the signing bonus?
00:21:15 Everyone who accepts a job from Hired gets a $1,000 signing bonus.
00:21:18 And as Talk Python listeners, it gets way sweeter.
00:21:21 Use the link Hired.com slash Talk Python To Me, and Hired will double the signing bonus to $2,000.
00:21:26 Opportunity's knocking.
00:21:29 Visit Hired.com slash Talk Python To Me and answer the call.
00:21:38 So another thing that is sort of related to the font tools is this thing called DrawBot, and that's more of a visual editor, right?
00:21:45 Well, yeah.
00:21:47 No, 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 output, but also visual output.
00:21:59 So it's a bit like processing the famous Java-based application from the MIT people, from John Maeda, who was the 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.
00:22:18 And that was a very simple thing, maybe almost like Turtle Graphics.
00:22:21 I forgot the details.
00:22:22 He made a very nice book about it.
00:22:24 Anyway, his students, Casey Reyes and other people, wrote processing, which became hugely successful.
00:22:31 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.
00:22:39 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.
00:22:48 And I use that on my students in The Hague.
00:22:51 Well, I teach at the Bachelor of Graphic Design Department, but I only recently started teaching coding there.
00:22:56 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.
00:23:03 So that's between 10 and 12 people who really intensively study type design.
00:23:08 And the whole tool issue, we think tools are – digital tools are important to have control over.
00:23:15 So we want them to at least learn the basics of programming.
00:23:19 Right.
00:23:19 They're definitely not going to become professional programmers, but they should be empowered, right?
00:23:24 Some people, indeed, you know, some people are just not wired for programming and they will actually struggle to get something going.
00:23:30 That's fine, too.
00:23:31 And they still learn a thing or two.
00:23:33 One student I should single out specifically, that is Frederik Berlan from Ghent in Belgium.
00:23:38 Well, he had a decent math background, but really no programming background when he started studying with us.
00:23:44 And he turned out to be super fast in picking up Python and making awesome stuff.
00:23:50 And he went on to author a font editor called RoboFont, which was published like a couple years ago only.
00:23:57 It's fairly successful.
00:23:58 It's written in Python, obviously, and very extensible.
00:24:01 That's cool.
00:24:01 Yeah, I was going to ask you about RoboFont.
00:24:03 I didn't realize the connection.
00:24:04 That's cool.
00:24:05 Yeah, but okay.
00:24:06 But let's get back to Drawbots because it was a primitive tool that taught our students the basics of programming.
00:24:12 But also there, I mean, I didn't really maintain it properly and it fell apart a little bit.
00:24:19 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 and animated GIFs and a much nicer preview of the graphic output.
00:24:35 So that's been a lot of fun.
00:24:37 It's been a great – that's the generation three.
00:24:39 It's completely open source now.
00:24:41 It's – I think the main site – drawbot.com is the main website.
00:24:46 There is – the source is on GitHub.
00:24:48 Unfortunately, it's a Mac-only application at the moment.
00:24:51 We're still hoping that someone will at least pick up the drawing API and make cross-platform or Linux and or Windows versions of that.
00:25:00 So that's – because it's a simple drawing API.
00:25:03 I'm not saying it's perfect, but it's small.
00:25:06 And you can do cool things with it, with color and shapes and text even.
00:25:10 Yeah, I've seen a lot of really cool pictures that people have generated within.
00:25:15 They're pretty detailed.
00:25:17 Yeah.
00:25:17 Even fractal-looking things.
00:25:19 Right.
00:25:20 Yeah, yeah, yeah.
00:25:20 Well, you can write your loops in Python or even recursive things.
00:25:24 People tend to pick that up relatively quickly.
00:25:26 So it's been a really nice little tool for our type design students to get started with Python.
00:25:33 And then they move over to do the serious scripting work for font editors.
00:25:37 Well, that used to be FontLab.
00:25:39 Now, obviously, RoboFont.
00:25:41 But also, there's yet another commercial font editor called Glyphs from Georg Seifert, a guy in Berlin.
00:25:47 He's a very smart programmer.
00:25:48 So now there are actually three commercial font editors out there that all support Python.
00:25:53 I mean, only one, only RoboFont, is written in Python.
00:25:57 And there's actually, there is an open source one.
00:25:59 I don't know how alive that is called FontForge that also has some Python support.
00:26:05 So yeah, somehow, Python is all over the place in font development land, if I can call it that.
00:26:12 Yeah, yeah.
00:26:13 That's really interesting.
00:26:14 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?
00:26:22 Yeah, exactly.
00:26:22 Yeah.
00:26:23 And, you know, yeah, maybe one little bit of background, like why do these guys need that?
00:26:27 Well, imagine developing a font family that has several weights or many weights, has to support many languages.
00:26:33 So there are many characters in there.
00:26:35 Well, then imagine all the European accented letters.
00:26:38 There's a whole bunch of, it's just one example.
00:26:42 Like there's a whole bunch of letters that are derived from normal Latin letters, but have an accent placed on them or several accents placed under them or on top of them or underneath them.
00:26:50 Well, there are all kinds of tools to work with that.
00:26:53 But this is just one example of things that are pretty tedious to make by hand in a font editor.
00:27:00 So you want to have to write maybe some rules of how to build those characters that you're not going to draw them one by one by hand.
00:27:08 That's just going to take too long.
00:27:10 And things have to be consistent within a font.
00:27:14 So you can write tools that check certain things, metrics, whether certain things align or whatever.
00:27:19 There's all kinds of things that you want to control or check or build in ways that can vary greatly from designer to designer to or could change from design to design.
00:27:32 So the approaches and philosophies or design principles that people apply can be different.
00:27:37 So to have this programmable environment is a real boon for many, many of our colleagues.
00:27:43 That makes a lot of sense.
00:27:44 Do you have problems where, like, you've got, say, an O with an umlaut and a regular O?
00:27:50 And if you change the O, you want to obviously change all the sort of O derivative ones and you want to script that.
00:27:57 So maybe as you're developing fonts.
00:27:59 Yeah, well, that particular problem has actually been solved for a long time in a non-programming way,
00:28:04 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.
00:28:13 Right, okay.
00:28:14 Yeah, so those things will stay pretty much consistent if you're not completely careless.
00:28:19 But indeed, but that is the kind of things, indeed, that you can do with these tools.
00:28:24 One of the things I ran across looking through this space was these things called UFOs.
00:28:29 Right.
00:28:30 Not the ones with aliens in them, but unified font objects, right?
00:28:33 Exactly.
00:28:34 Yeah, that's an interesting thing.
00:28:35 This is a file format.
00:28:37 Yeah, unified font object.
00:28:39 It's also more or less an API if you want to deal with those files.
00:28:42 It's pretty much it's actually me and my colleague Eric from Blockland started a precursor of this thing,
00:28:49 because we lived in different cities and we were working on a font project together.
00:28:54 And we needed a way to share the glyph data.
00:28:58 And we were actually using CVS.
00:29:01 This is like early 2000s.
00:29:03 I remember CVS.
00:29:04 Remember that?
00:29:05 That is like before Subversion.
00:29:07 Yes.
00:29:07 It was pretty awesome.
00:29:08 It was a super old and clumsy version control system.
00:29:11 But we decided we needed a version control system for our glyph.
00:29:16 So we defined a text format for glyph outline data.
00:29:20 And, well, we put it in XML format at a single file under version control for each glyph.
00:29:27 And that way we could cooperate on one font remotely.
00:29:32 So this tool, which was made by and for programmers for code, we started to use for outline data, which was pretty nice.
00:29:39 But that idea kind of caught on and or people thought, hey, we could use that as well.
00:29:44 And we teamed up with a guy called Tel Lemming in the U.S., who was at the time working for a small font company called House Industries.
00:29:52 And the three of us went on and developed this a little more seriously with a place for meta info and all kinds of metrics data.
00:30:02 And we improved the glyph formats that would be more generally useful because it started as this ad hoc homemade.
00:30:09 You know how all these things probably start.
00:30:11 And still, yeah, we're amateur programmers and definitely not experienced in the specification of file formats.
00:30:18 We pretty much winged it with some XML knowledge.
00:30:22 And in the end, it's a UFO file.
00:30:26 It's not really a file.
00:30:27 It's a folder or a directory containing a bunch of files.
00:30:30 And you need this so that you can put it in version control and diff it and not have it always come to it, right?
00:30:35 Yeah.
00:30:36 That was the starting point.
00:30:37 Actually, so we made an import-export tool for FontLab, the dominant font editor at the time.
00:30:44 And then it kind of became an exchange format because people started writing other tools that were not necessarily complete font editors.
00:30:54 For instance, Tal Lemming, the guy I just mentioned, one of the co-authors of the UFO specification, he wrote a very cool tool to edit metrics.
00:31:03 Well, within font editing, you can say editing spacing and kerning metrics is another specialization.
00:31:10 And it's a tedious kind of work.
00:31:13 So to have a good tool for that that makes things easier was really much needed.
00:31:18 And he wrote that.
00:31:19 It's called Metrics Machine.
00:31:20 It's still around.
00:31:21 So we needed a way to transfer data from FontLab, which used its own proprietary binary GU unspecified unpublished format, to Metrics Machine and other tools.
00:31:34 So the UFO format was just the thing for that.
00:31:38 So to just go back and forth between those applications because we needed FontLab to edit outlines and, well, we needed Metrics Machine to do the proper metrics editing.
00:31:47 So it became this exchange format and caught on a little further.
00:31:53 Tal Lemming pretty much took over the specification and wrote a really nice formal specification for that.
00:32:00 He learned how to do all that.
00:32:02 Spent many, many, many hours getting that done.
00:32:06 Getting it just right.
00:32:07 Yeah, I'm sure.
00:32:09 Yeah, yeah.
00:32:09 The world of specification writing is also wonderful.
00:32:12 Well, he and Eric from Blockland were also involved in the development of the WOFF format, the W-O-F-F, web fonts format.
00:32:20 So they got into the W3C world of writing specifications, which, well, I wasn't involved with that.
00:32:29 I've seen it from the sideline.
00:32:30 And it's, well, a lot of work.
00:32:33 It's very tedious.
00:32:33 It's very important work.
00:32:36 I don't want to underestimate that.
00:32:38 But it's not easy for us simple graphic designers, if I can put it that way.
00:32:44 Yeah, I'm sure.
00:32:45 When it gets down to that, you've got to, you know, exactly the right detail and so on.
00:32:50 Yeah, everything.
00:32:50 Yeah, the terminology, like, this must be like that.
00:32:54 That should be like that with the right to use of capital letters in your language.
00:32:58 It's, you almost have to become a lawyer for that stuff.
00:33:02 It's very interesting.
00:33:03 Yeah, it sounds a little bit like that.
00:33:19 Gone are the days of tweaking your server, merging your code, and just hoping it works in your production environment.
00:33:24 With SnapCI's cloud-based, hosted, continuous delivery tool, you simply do a get push, and they auto-detect and run all the necessary tests through their multi-stage pipelines.
00:33:34 Something fails, you can even debug it directly in the browser.
00:33:38 With a one-click deployment that you can do from your desk or from 30,000 feet in the air, Snap offers flexibility and ease of mind.