Skip to content

Latest commit

 

History

History
1454 lines (757 loc) · 100 KB

2018-03-08_robothon.md

File metadata and controls

1454 lines (757 loc) · 100 KB

Robothon 2018 Live Notes

Usual disclaimer for live blogging: These are informal notes taken by me, Dave Crossland, at the event, and may or may not be similar to what was said by the people who spoke on these topics. This is probably FULL of errors. What do you want for free? :) If something here is incorrect it is probably because I mistyped it or misunderstood, and if anyone wants corrections, just should tweet me – @davelab6 - or file an issue - or email me dave@lab6.com

Nothing here is the opinion of my employer.

2018-03-08

Marieke Schoenmakers

The first Robothhon was in 1999 with just 30 people, and today we have 180

We have speakers from Adobe, Monotype, Google, and

Paul van der Laan

Hello World! Especially to those who are not Type Media graduates, this is a working art school and you might see something that confuses you, or is blocking your way, dont mind it too much :) Also you can drop by the t&m classroom to see work in progress. T shirts are available from the desk and lunch and snacks are available.

[ program ]

[ sponsors ]

Special mention for Rich Roat who passed last year, and was a great supporter of Robothon, we all miss him.

Next up is Françoise Berserik, a University of Reading graduate ;) who is talking about keeping it simple

Program

Time	 Presentation
08:30 - 09:15		Doors open, registration, tickets	Hall
09:15 - 09:45		Welcome!    Marieke Schoenmakers, Paul van der Laan
09:45 - 10:30	Keep it Simple	Françoise Berserik
10:30 - 11:00	Coffee break	☕️
11:00 - 11:30	Oh dear, Python 3 is here.	Just van Rossum
11:30 - 12:00	RoboFont #.#	Frederik Berlaen
12:00 - 13:00	Lunch	 ☕️ð
13:00 - 13:30	PageBot	 Petr van Blokland
13:30 - 14:00	Robofab is dead, long live fontParts: a rationale, overview, and starter	Ben Kiel
14:00 - 14:30	       Software-agnostic Font Development	Bianca Berning, Denis Jacquerye
14:30 - 15:00	Coffee break	☕️
15:00 - 15:30	99-Proof Small-Batch Distillery: Overflow-resistant GSUB/GPOS table packing	 Behdad Esfahbod
15:30 - 16:00	   Homestyle Coding (or: Code Like Nobody’s Watching)   Nina Stössinger
16:00 - 16:30  Boring Fonts	    Indra Kupferschmid
16:30 - 17:00  Round up, party info, directions	::     [dinner suggestions ð]   :
20:00 - 23:00 DesignDesignSpace party! 

Day 2

Time	 Presentation :
08:30 - 09:15	      Doors open, coffee	Hall
09:15 - 09:45	      Free / Instagram		Auditorium
09:45 - 10:30	      D.I.Y design: negotiating a space between agency + redundancy	Catherine Dixon
10:30 - 11:00	      Coffee break  ☕️
11:00 - 11:30	      Kerning Analytics	Frank Grießhammer
11:30 - 11:30	      Type World	Yanone
12:00 - 13:00	      Lunch		☕️ð
13:00 - 13:30	      Speed up!		Mark Frömberg
13:30 - 14:00	      Linebreaking, justification and variable fonts	Bram Stein
14:00 - 14:30	      What makes a script modular?
Code as a research tool	   Maurice Meilleur
14:30 - 15:15	   Movie Screening: Letras Que Flutuam	:
15:45 - 16:00	   Wrapping up!	    :
16:00 - 19:00	   Opening Gerrit Noordzij prize Exhibition 
for Cyrus Highsmith and book presentation "Products of a Thinking Hand"
Drinks. Bookmarket by Uitgeverij de Buitenkant.	    Gallery of the Royal Academy of Art
19:00 - 22:00	   Indonesian Buffet Rijsttafel
for Robothon attendees, guests and invitees (badges and invitations checked!)	Hall

Keep it Simple Françoise Berserik

I am a stone carver, letter carver, and book designer who told others to do the work.

Today is the i18nal womens day, my Mum did interior designer training in WW2 and my parents met in 1942 at the college. Dad was an illustrator.

My earliest childrens books had a layout and pictures I loved. My first book, made when I was 6. Great typography :) I did a series on nature later on, as I wanted ot be a biologist - still do.

Here is a later book, De Ark. My father did 100s of book cover illustrations with hand lettering. He was very good, and Jan Middendorp mentions him in the Dutch Type book, on page 102 and 103 ;)

Here is Edward Johnston. Here I am at Arnhem art college, becoming a graphic designer. This painting [of a page of text] is a typographic dream. Here is a photo of me redistributing metal tpes in the college. They organized a trip to a NL island in the nrth. I saw these gravestones with letter carvings painted black. These stones with a chapter by Gill [a book] on letter carving inspired me. I was encouraged by Alexaner [???] to take up the craft. In 1970, he encouraged us to paint letters big and fast, an x height of 20-25cm, and then we spaced out a word using the letters on a wall, and took a photo with a high contrast b&w film from the back of the room, and made prints much smaller - x height of 4-5 cm - to make text. Stiff numbers, punctuation much too small.

Here was a photosetting system that Gerrit Noordzji made to do a similar thing. GN was an important person in my life, here he is at 30 years old as a colleague of my father at the art college. He and my father proposed I go to Reading's "typography unit" that Michael Twyman founded that became the department. Here is my timetable there in 1972-73. James Mosley lectures, and bookbinding, letter carving.

Wooden type of Fry's Baskerville from teh dept. Only 1 photo of me working there. Here is a timetable for public transport. An instruction for setting type for news at a publishing house. The highlight was a dept trip to Florence, and I show the photos I took there at the start of every carving class. Here we are at the Trajan col; a huge disappintment as the letters are so high up, and we soon found MUCH MORE interesting lettering around. Here we are taking a nap, and Twyman is on the very right, and also Robin Kinross is there. There is regularlity, irregularity, and smoothness. This is some of my work, in French Sandstone, this is a poem by Philip Larkin, about life and death. This is a detail of a Mondrian painting in blue Belgian stone.

After Reading I got a job at a London printing house production dept, doing binding schemes. Here is the only piece I have left, showing a biology book. After that I went freelance and I am still. A honey label. A magazine on censorship. An art gallery, here is the staff. The Whitechapel Art Gallery, design that was very economical.

I wanted to go back to school to learn to draw. I could only do cats ;) I did 'scientific illustration' at Middlesex Polytechnic. This is defining an object with shade. This is pen and ink, with no pencil sketching, which taught me a lot. This is the skeleton of a hen.

Another big leap; back to Den Haag, and the house I am still living in. Numbers and other signs painted onit, and a chance for collection. I love these small penguin books, pelican paperbacks. I had a room full. I also collected book bindings. Here are some cover designs, one by van Krimpen. Here are binding designs I did for an American publisher; I thought science books could have very bright colors. My brother worked as an illustrator after I commissioned him.

You can't imagine how hard it was to get good letter designs on book covers then. Here is a specimen of Cloister Old Style by Bendon at Lanston Monotype, that I cut to use on a cover. A nice Gill Shadow. Some rub down method covers, in Gill and Futura. It was a LOT of work to make a same size model of a cover. Bottom right is the real cover; the other 3 paint on platsic and colored paper and photocopies.

Another leap: This is Hank Bell, a freelance editor who HAD A COMPUTER. The first editor in NL with one. I asked him to help me. I tried to sort out editorial problems myself. I could draw layouts for him, and take on many large productions. We still do. This is our work room; with rubbings from Rome and Florence on the wall, with many other pieces pinned up. Viktor and Hattie, cats, asleep. A garden corner. Some Hanzi calligraphy. A piece for Anthony Frohaug, a well known English typographer.

I am always discussing how to stone carve printing type. This is Gill, on a stone I erected myself at highgate cemetary for Anthony with special non-ranging figures.

This is a headpiece for a bauhaus teacher Paul Citroen, with a typeface by Fred Smiejers, who made a Bold face specially for this job. This is the finished stone.

here is an experiment, a date on top of a small stone for a cat, Sadja.

I loved smooth letters, completely worn out, in the floors of Dutch churches with 300 years of feet shuffling on them. This is another experiment that went wrong, a bread stamp, about the size of a bar of soap. A nice thing but not working as a bread stamp.

I took on a large commission to make formulas for the Haag Art Commission. I learned a lot about scale. Then I was commissioned in England. This design is based on 5 layers of brick. We had to lay the carved bricks back into the wall "van ostanskool" (?) here in Den Haag. Then Martin Majoor called me out of the blue to teach his beginners class which was great, students who never used a broad nib brush before. I asked them to work fast and it was great fun.

Here is on the left is the first letter-carving class in teh garden of the colege in 1995, the course would become type & media.

Clients ask me for relief work, but I'd never done it before. This is my first relief in marble, a goose with wings far too short. This is in blue belgian stone. Another bird, more lettering by fred. A dog in stone and in granite that is painted. You can see how I paint stone.

Robin Kinross asked me to design a standard for a series of paperbacks for Hyphen Press: Counter Punch, Type Now, Modern Typgoraphy. We commiicated by fax, it was before email, and you could send letters and sketches. Left is ToC, right is a series of piectures to start each chapter with. More sketches by Fred. We discussed a lot of things. Here is the 'mini mini' page 26.

I designed many compicated books, such as this one for music. This is a binding scheme for a book in duotone, 3 tone and full color, for a well known dutch illustrator. I wroked for an American publisher with offices in illustrator and amsterdam; the large monitors date the photos. This is a house that does its own typesetting. We defined a method for doing layouts and covers quickly. All these books, 250-300, I designed. I can't even remember them all. But we had defined a quick method. I did a 8cm high sketch. Over the years they bought some nice typfaces.

Back to carving, this is a 17th centory like sign for the top of a warehouse. Another house sign with a badger. Then my father died in 2002. This is the stone that I put in the walls of his house. Above, one of the earliest stones I made. The workshop I used had a large space. I like to do small stones, but some are so mig that they were carved at the quarries. This status of a famous Dutch poet, you see the moment of erecting it. The stone supplier's work is dirty and cold usually. Here I am in a client's garden. These serifs are rounded off which made them more legible; this was for a statue in front of a station in Wolle (?)

I met [ pip? ] in 1997 in Reading ATypI, and I went up to Cumbria to work on a landscape-poetry stone carving project. She came to NL to work on the Garden of Realistic Art, doing 4 poems by local poets.

...

I want to thank Erik and the typemedia students for cleaning up my grotty slides. Here is my walls today, more of the same. Also I am happy for finishing my carving alphabet design, a sample stone that comes with it. This is a project that takes forever. I still have a method for producing covers for the american publisher. Here is the copyshop where they print my emails, book covers, and complete books if needed. This is the copyshop dog.

And this is my cat. I recommend to be like him. Sit in your own niche and always look out.

Thank you.

Erik: When I asked her to do a presntation, and she said she had 160 slides, I got nervous. I tried to say, maybe fewer. And you are 15 mins faster than the talk

Marieke: Yes, I practiced :)

Erik; So, we have more time. Lets show the movie with the test stones.

Marieke: I will be around the event for any questions.

Stephen Nixon: Is your stone alphabet a full glyph set?

Marieke: Yes, it was done for a particular job and then expanded


Oh dear, Python 3 is here

Erik: We have been ignorig p3 for too long. Get your notebook out, this is important stuff

Just van Rossum: Hello!

This event gets more and more inimidating, and Paul gave my talk in the introduction already ;)

So good to see all the typemedia gradautes, I'm overwhelmed with everone here, we could do an event with just coffeebreaks ;)

So, this talk is a technical one for those scripting things with Python.

Python 3.0 came out in 2008.

First RoboFog was in 1996, we built the application, who remembers it? [ 10-20 ] It was Fontographer 3.5 using Python 1.4 or so. I set out to do a timeline slide but didnt manage. Python 1.5.2 was a very stable release we used a long time.

Python 2 had new things, largely compatible, and biggest thing was unicode. But then fog fell apart; Fontographer 3.x didn't support unicode.

Then Yuri came with FontLab and at the time he wanted a scripting lagnuage. FL4 in 2001 had Python support, a big thing for us, so we could continue building thing our own way. We made scripts that became RoboFab and then UFO.

We were in Python 2 land and it was a gradual transitoin. People didecided that Python 2 was not good enough for the futre. Do I mhave 10 mins left? ;)

Python 3 is not backward compatible. pretty annoying. Some syntactic changes, and some fundemental changes, including Standard LIbrary chagnes.

BUT WHY??!?! :)

Guido van Russom did a talk at a Vancouver pythong talk, The 'unicode mess' could not be fixed without breaking compatiblity. The "warts" were things badly designed that required a single incomatible chagne.

Ptyhon 2 is now nearing End Of Life. No Python 2.8, the 2.7.14 is the latest and the final final updates are planned in 2020.

Python 3 is the future, it is better, and there is no way around it.

Why do we bother now? Its been 10 years. Well, we stuck our heads in our sand and hoped the problem would go away. Didn't happen.

Python 2.7 is feature rich enough for us. We are mostly not professional developers. In early days we lacked 3rd library support, migration was a hassle with questionable benefits, and being 2 and 3 compatible was hassle too. "Do we LOOK like programmers?" Our community don't get jobs in IT soon with their skills and wouldn't want to.

So, Guido presented this and "what went wrong," the popularitty and importance of 3rd party packages, a workflow for migration was clumsy, and so on.

So, today 3.6.4 is nicely stable, its faster, and it has MUCH BETTER unicode support. I should have put that on each slide :) And migration isn't as bad as we feared, and there are more tools for doing it.

# python2
print "Hello World"

# python 2 and 3
print("Hello World")

So, could this have been done another way? Maybe, but having print as a method like any other is nice, so eg string redirection is east.

def moveTo((x,y)):  # SyntaxError in v2
  ...
def moveTo(pt):  # works everywhere
  x, y = py

This was needed for code introspection.

>>> 5 / 2  # v2
2
>>> 5 / 2  # v3
2.5

This is now what you expect as a regular person.

There is a 'future' mode that we enabled in RoboFont, so that Python 2 does what Python 3 would do. Also, you can make v2 deny code that won't work in v3.

>>> 5 // 2
2
>>> 5 % 2
1

There is a new double-slash for dividing in the old way, and the modulo operator returns the remainder. This can be used to check if its odd or even, as 1 is odd and 0 is an even number; a trick everyone should know.

import submodule # could be from global or local source, v2 only
from . import submodule # Unambiguous, v2 and v3

If you write a module, you can import another submodule from the package.

Finally, Uncode vs binary data.

Python 1 is from 1994, its predecessor began in 1985, and had string and binary literals.

Python 2 adds a new unicode type, but when dealing with file data it was string data, and you think your code is working nicely, but then unexpected data could make it go awry. Conversion of str and unicode was common and error prone. Silent bugs were common.

So, python 3 separates binary data from text; bytes for binary and str which is pretty much the unicode type from v2. if you want to convert bytes to str, you have to do that explicitly. This makes a clear distinciton between literal text and literal data, and once you go over your code to make those distinctions, you will be guarnatteed to be free of silent errors.

data = getSomeBinaryData()
s = unicode (data, "utf-8")  # v2 only
s = data.decode("utf-8")     # v2 and v3
data = s.encode("utf-8")     # v2 and v3

The unicode and basestring builtins are gone

The b"\xff\x00" does nothing in v2 and u"Unicode" does nothing in v3 (although its valid)

Iterators are more widespread in v3, esp in the range() method. in v2 it returns a list, but in v3 it returns an iterable, which means if you want a list, you need to convert.

l = list(range(5)) # inefficient in v2!!
l.append(123)

And the same for zip() and map(). The xrange() builtin is gone, its no longer needed.

There is a new sorted() builtin that returns a sorted list. iterkeys etc are gone. Good.

One gotcha is that in Python 2 you can iterate over the list and change it while you go, but in v3 you can't change the dictionary size during iteration. This is a sound idea so its good to disallow it.

So, what to do if you want to take your head out of the sand as we are doing now?

You can stay with v2 but slowly prepare for v3

You can move to v3 wholesale

Youc an adaprt v3 but maintain v2 compatibiliy using some glue code, eg __future__ directives, the six module and fontTools.misc.py23 that thanks to Behdad and Cosimo help with subtle things.

from __future__ import division # 5/2 returns 2.5
from __future__ import print # require print()
# etc

from fontTools.misc.py23 import *
range() # brings v3 to v2
round()
# etc

What is cool in v3?

Much better unicode support, a single class system and argumentless super() calls that are much nicer.

And string formatting is new and nicer, what are called "f strings" or "format strings"

In v2 the .format string method was added, that replaced % placeholders with {}.

now you can do print(f"Math: {a} + {b} = {a+b}") which is nice.

I ported DrawBot to v3 to see how to do it. Behdad took on fontTools in 2013 and began work on this, and community began work on ufoLib and defcon, and then quietly PyObjC had full v3 support. Cosimo ported vanilla, after much delay from us, and that made things much easier.

What helped me port DrawBot a lot was:

  • automated tests, YOU MUST WRITE TESTS if you take your code seriously. Cosimo has done an awesome job at fontTools to set that up and make tests run automatically on Github so you can see it tested.

www.python-future.org/compatible_idioms.html has many good tips for this.

Thank you!


RoboFont #.#

Frederik Baerlan

Good afternoon! Good to be back, see all the familiar faces from all around the world.

RoboFont v3.0 will be the 14th release of RoboFont, released at 2011 in Iceland, a long time ago. 2 releases a year, a good average compared to, no ;)

It has UFOv3, Python v3, finally finally. When you download it later today or tomorrow, a lot didnt change for you; a lot of internal changes.

The core idea of what a type designer's applciation is a solid point that works for many people.

  • It is a simple UFO editor. Its a public format specified so you know what goes in and out. it edits what goes into a UFO, nothing more and nothing less.

  • It has "no knowledge", i do not push my way to look at a design to my users. users have to make their own way to work with a tool, when you have offices around the world you can make your own workflows that are different for different people.

  • It is a platform and environment for design. I think it is important that you can get stuff done.

The RoboFont 2.x line is over with ufo THREE and python THREE, so now RoboFOnt is v3. The versions of v2.something with their v3 support are rare, if you have them, keep them.

www.UnifiedFontObject.org has the ufo specs, and ufo2 has 3 files and then a glyphs folder with GLIF files and a contents.plist. v3 introduces more folders; an images folder for background images, named layers like glyphs.background that has a new layerinfo.plist, and a data folder for any other data you want.

Since UFO2 was released, a lot of industry changes happened, WOFF, Color Fonts, and Variable Fonts.

RoboFont v1.x had support for many of these things already, so for users not much changed; it used to store that data inside the 'lib.plist' or glif 'lib' element, but it was a hacky way to go based on drafts that Erik and Tal wrote. So now they are implemented differently in a better way that is compatible with different implementations like FontLab, GlyphsApp and other things.

Your precoius UFO2 data has to be upgraded to UFO3, scary! There is ufoLib, the library does that a lot of this conversion which works very well. But its very strict on data that comes in and out. If you send a float to an int value, it complains. That is good. Your data stored on your disk should be valid data!

python3 was introduced nicely by Just, and the thing that inspires me to write RoboFont for v3 was Just's work on DrawBot; it was just one evening of work for me. Print works differently, all strings are unicode with emoji, and division and other things are different.

You have to upgrade your UFO data, and then your code. It was important that the change was done for the core, and the extensions and scripts. There is also some convenience things:

from vanilla.py23 import *
import mojo.py23
help(mojo.py23)

So, freaky, you have to get to work on MOnday and deal with this. One thing is, RoboFab is discontinued and replaced with fontParts, as Ben Kiel will talk about next, RoboFab was coupled to what FontLab v4 did, and fontParts has the convenience of fab and the independence of defcon, which was too low level. fontParts has methods like getLayer() which was already in RoboFont v1.

RoboFab's Pens have spread out to fontTools, ufoLib and fontPens; the latter has the pens that are more fun and cool.

For RoboFont extension, I made the one2three.roboFontExt extension that helps with the API differences, warning when things moved around in defcon. Eg, notifications are coming from another place, or problems where RoboFab isn't going to be there. This will help you write extensions.

RoboFont 3 can require other extensions. If you try to write extensions for both, you can require that extension, and keep on working.

The app itself didn't change much, it has FAST start up thanks to Georg; and opening any kind of UFO is fast in 4-5 seconds. Hopefully you can draw a lot more ;)

The Space Center is now super fast with 1,000s of glyphs, so Nina's extension will work well.

And it validates incoming UFO2 files and report back; if its really bad it wont open and just give a report.

The independent layers are now there from UFO3, and you can generate from a specific layer; components can refer to their own layer.

A lot of preferences changed, you can make your own shortcuts, for any menu item.

There is also a preferences editor, a simple JSON thing that you can edit.

The script editor has syntax completion so quotes and brackets auto-close. This will be in DrawBot soon too.

Suprising? This is not a free ugprade. I can not do it again as a free update. The last 7 years only 3 were paid. I think its now a good time for another. It is the same pricing, and free if you bought it in the last 12 months, and there is a 30% discount the next 3 months.

There is a lot of work on documentation. The online docs were old and not updated; I have a new way to write docs, and XXX is helping with this. He looks at me writing code, and writes his docs, with the perspectives of a user. This is rewritten and expanded in a good direction.

We made a new font; what kind of font do you make for a font edior? Not boring, something personal. My intern helped me finish this, an ex-student from Ghent.

www.robofont.com/documentation/how-tos has lots of tips ,and www.robofont.com/documentation/extensions has tips for writing them.

www.robofont.com/documetnation/tools too.

education.robofont.com also has options for schools; a trial is 30 days, a student is 1 year (not extensible) and a Student lincense service that is extendable for a yearly subscription. I think RoboFont should be free for all students and the school should pay just a little bit and admin the licensing.

forum.robofont.com/recent is there

extensionstore.robofont.com is all new. The problem was this; there is Github/mechanic, its free and public but dev doesnt get paid which is important. Or, they get paid making custom extensions which are not free or public. It is nice to share tools, so I came up with a middle man, the Store is not free but it is publilc and they do get paid. fi you are in the extensions store, you get a T shirt ;) and a stick that says you are a certified developer. 80% for the develoeprs and 20% goes to maintainng the website and so on. Just contact me, the reqs are valid RoboFont v3 code.

An example is Find & Replace. This finds a selection of points. It can also fit and rotate. Its a cheap one.

MetricsMachine is coming to the extension store, a big annoucment, and it will live in your menu bar. Its a complete thing.

Tal wrote a dramatic post that he was spending time on drawing, so I helped him out in NYC to move to the UFO3 world. It isn't a separate application, it is an extension, so you can edit bulid drawing. It has the UI as it was, ported to be the same, and we have ideas for new versions when Tal is more available.

Prepolator is also there. There is an Extension Store extension, like Mechanik. If you want to be listed, contact me.

Thank you.


PageBot

Every design can be scripted. You do it all the time scriptping in PostScript with InDesign as a UI; HTML/CS witha human coder you hired

Scripting corp identities through an English Manual.

How can ou then make a living, when everything can be scripted? Ycaou you make any design afterwards, reusing 80% of your previous rules and design parameters?

If you ask a developer, would you start from scartch? They say no, you reuse some code as a library, after a few times of copy and paste that happens.

But as a designer you would. If you make a 500 page book, the first day is design, then the rest of work Same thing as kerning pairs, first hours is nice and the next month is horrribl work.

DrwaBot is fantastic. How to ffer designers a drawing environment? Default python is a command line interface. This is a educational tool, a clear separation of program, output drawing, and progam output. This is going a few years, Frederick took it over, and now both are working on it. Its a great fundemntal course on programing environment.

But it is using simple pieces, and while it has all the essential pieces, it is not used for huge things. It is like being given brushes and canvas and asked to make a book; there is a large gap from the drawbot squares and circles to a book. Compared to InDesign there is a big gap.

How to get from "this is a nice animation" to "i can make a newspaper this way". We had some jobs in my studio in the past that were pre-drawbot, when saing a GIF was not simple, when the libraries were not there. It is programmers work that as a designer you dont want to be.

I want to do top down deevelopment: stat from the publication and work down, not from code and working up.

Documents, pages, graphs, linked text boxes, styles, fonts, and then automatic layouts that export to HTML CSS, and PDF.

Again we did a lot of the work in a week, and then the rest takes a year.

PageBot is all on DrawBot, it has everything that designers need to make scripted publications. It is a workshop to make document generating applications. It is huge now. Much larger than we first foresaw. It is also WIP and we could use help. But ist is a direction that approahces an answer from my ATypI Amsterdam leture some years back. Why isnt ptyhon connected to InDesign? Well this is it, without indesign ;)

So, the dream is that you import a magaine and specimen classes fom pagebot.publications module, then knowing what parameters you need, you plug them in. You can see we have baseline shift and gutters defined. It is a bit like naming for powerusrs, you can type mt is "margintop" so you can type it often quickly. Just said always make tests and we use "docstrings" a lot with doctests that prove the system is alive, when you change things you can be sure you'll get the same as you got before.

One issue is that we wanted to test fonts, and they may not be part of the open source codebase, and luckily Google was interested and added resources and developers for this aspect. One issue is that we could not run on a server because we depend on macOS, so while the base is drawbot, we made some move to add in another drawing tool "flat" which i all python, independent on mac, but also makes PDF. They are not quite the sae - flat has spot colors which is not in drawbot, but it does not have animated GIF. How to manage those differences? We started that after Montreal, which took more time than we though. If you knew how much work it is then you'd never start ;) So we started a 'context' layer that abstracts DrawBot and Flat. The system is based on fontTools and it is NOT a drawing tool. You already made the fonts and want to use them in an app that goes to a customer.

Or, read a VF axes and make a specimen for it. It is available from http://github.com/typenetwork/pagebot

Publicatoin calsses: For English, from the POV of a designer, you make a lot of knowledge about what these publications do, what the elements of a news paper are. And then there are Element classes that are generic like TextBox and Image and Cirlce.e

What can this be used for?

Create print and web document using the same source.

Sell typefaces, giving away their usage as scripts for free. Cheap printers and expensive cartridges. That is a different concept.

So, Original design thinking in MM is not soething I... It is hard to use the capabilities of RoboFont in MM.

This is a sketch that DB and I did in 1986.

1 axis = 2 masters

2 axes = 3 mastrs

4 axes = 5 masters

The outcome of thse infographics are from the nowledge embeedded int he fonts.

A lot of knowledge by Jill Pichota in QA has been emdedded in some pagebot documents inside type network.

I have a 10 axes varfont with a specimen made in pagebot.

A nice way to prove the funationality is to remake existing documents; we can do revivials of fonts, so now we revive specimens.

here is a scan of the Font Bureua specimen that was revived.

Here is a 1923 ATF big red book page. Here is the pagebot version, and in several TypeNetwork fonts. here the code to make it. Everything you would do in a dialog in InDesign is now a variable or a method in Python. Everything that is a parameter in InDesign or CSS is there. It is a heg sytse and you may need time to learn it, but this is your profession.

So, we can take old documents from Quark XPress 4 that dont work any moer and recreate them. You cam open an image and find the contrast with your text color to decide if you need a dropshadow or stroke.

For you, many parts are under construction that we could use hands. using contexts to run on servers is nice but we are still recovering.

You can design the algorithms behind your design - AND TEST THEM.

PageBot does not need a UI; the UI is your product that you give to your customer. a full UI is indesign.

Learn to disconnect "this" from "this kind" is a hard process, but essential to separate design from production. And ultimately, to survive the autoamtion of design as we know it.

http://www.designdesign.space is a place where you can join for 3 days or 3 weeks or longer. That website is generated with pagebot; its all content in markdown and the website is hosted on github. If you seee the poster, the poster is also made with pagebot.

There is work to do, more than learning InDesign.

If you dont want to program, be able to connect to people who can do it for you. Directing people to do something you never did before is very hard. So if you dont want to do it, that is even more reason to learn how to do it.


fontParts

Erik: Next up is Ben Kiel, who is writing to us about the death of a friend.

Ben Kiel: We have seen a lo of code. here's more.

Here's the thing: RoboFab is dead.

Speaking for the people who have been involved in it; we have decided to kill it. It is archived on Github, but no development will happen.

Erik, Tal and Just started it in 2003 at TypoTechnica. A LOT HAS CHANGED IN 15 YEARS.

UFO came out from the code in RoboFab that was made around that time. It began with RoboFab, then Glyphs and RoboFont.

UFO3 happened. The problem with RoboFab was that the object model was written before UFO3, there was 15 years of "that will be nice" and maintaining that is not so nice. The code was written mainly for a specifci application with things tied to that app that doesnt make sense in tother contexts. The rebuilds of FL5 would beak things that we had to fix. Sebveral parts o the library needed to go in other places. And we all got better at writing Ptyhon.

So, lessons learned: Dont build scripting layers for specific apps that you do not control. Csonder if it belongs in a better libary do that. And keep the focus on a scripting environemtn, not adding special features. There are kerning methods that ere specific to someones workflow not needed in a general purposes applicatoin.

But, a c ommn scrpiting environemtn is SUPER helpful to switch between app. This makes life easier. Most designers dont want to build extensitons or worry about a UI, they want a tool to solve a partiuclar need. ANd most designers are not afraid of code. I joke at Cooper type, you dont have to be python superman to write code. People who are not that techincal can write RoboFab tools. They need a scripting alayer focused n the needs of scripters.

RoboFab is a scripting API for folks who dont care what API stands for.

ufoLib and fontPens are split out so that parts of RoboFab live on.

FontLarts is a wrewrite of th ideas behind RoboFa b for modern editors and UFO3

http://fontparts.readthedocs.io

This is all the code for objects in RoboFab, one file with everything, which is a bad idea. On the left, you see each object has its own file.

Status: We have v0.1.3 tagged today, sorta meanginless, its stable and things work, its python 3 and 2, in order for a reason as we'll drop v22 support some day.

RoboFont has things like Seletion that are missing from fontParts that we plan to add.

nonelab still exists, with fontlabs build on top of defcon, and yes it also needs a better name.

pip install fontParts

v1.0 will be when we have a test suite, documentation, and so on. Maybe in the next 3 months. If YOU ALL help us write testsa nd docs, we can get there pretty quickly.

How to use this in a tool that you have: [ code presented ]

We designed this to be subclassed. If you subclass fontParts with well defined classes, you can do it in a day or two. or you can write from scratch. Some comments say 'subclasses must override this method' and then fontParts will do all the generic things for you, so you don't have to.

fontParts.ui is formerly known as RoboFab.dialogs, which had a lot of app specific code. As the apps chagned, the maintenance got annoying and then an impossible task.

For fontparts, we dont do that. we have a list of simple tings that ar general purpose script things. All we say its, th is what it takes in and out, and whatever your app deos with them is up to you. UI is optional. these are all optional; no UI for cmd line.

and fontParts.world and your app should be able top en fonts, make new fonts, current fonts and glyphs, and all fonst and rfont and rglyph objects. These are all optional. allfonts is not for cmdline, so none lab doesnt have it.

we also added the idea of datanormalizers. we rided the line between being overhearing paretnts and too lose. We want to make sure that what things we set nake sense; the widths of glyphs are numbers, not strings. THis was a big thing added to fontParts.

import unittest

We use that test frameowrk and its a little unusual because the main package needs glyph objects to test, but fontParts doesnt provide them. So you can do

from fontParts.test import # ...incomplete, see slides

So we can generate the data and run the tests. This is a test for GlyphsApp and testFont. When you need to make a font, you can create a font object using the objectGenerator(). Because font objects are needed, automated testing happens in noneLab.

So, for toolmakers, you can subclass a lot of stuff, all you have to do is wrap obejcts you already have, and you have a test framework to check it all worked out OK.

FontParts will not create dialogs. Your code needs to do that.

Switching!

So, if you are a tool makers with RoboFab scripts, you might get nervous. Syntax changes? Yes. Not all RoboFab scripts will work. But most will work with very littel changes.

.box == .bounds

.mark == .markColor

We made languages changes like this to make the code environemnt make more sense.

Contour.reverseContour() == Contour.reverse()

.generatIdentifier == .getIdentifier()

Thanks to Frederik, there is fontParts.deprecated so you can get a RemovedWarning and DeprecationWarning so if you use .box then it tells you to use .bounds can get warnings with running code. Then you change your script and the warnings go away.

We will eventually kill that submodule! Just so you know.

What is missing?

Here is a list. gString is gone. app specific code/tools, gone. accentbuilder is one, and Frederik's GlyphConstruction is here for you. preferences for scripts is gone. prood tools for inDesign Tagged Text is gone. Feature WRiting code, gone. rasterizepen, gone (moans from crowd) well you can make a PR for fontPens, and there are some kerning methods like .getAverage() and .getMin() that are gone. We did some kerning interpolation then that should be done elsewhere. If you didn't use any of that, great.

Community! Help is wanted. This is used to make a lot of stuff, but not any direct client paying for this. It is a volunteer effort. Contribuitng to FontParts is not hard. Docs is not hard to write. I started by writing a Typographica about a release of it in 2005. You don't need to be into coding to write documetnation.

TODOs: If you search for XXX you find code not done. Documentation, coding and tickets. We would LOVE someone to CSS up the docs so its not the generic Sphinx template.

"Checkout a fork and submit pull requests" sounds like a weird BBQ restaurant in Brooklyn, but it is that simple. We are VERY happy to get PRs.

"What about my editor does this"? Well we are not tied to editors, and you can always get the object.naked() verion.

"Just use defocn" Well a font editor is different to a scriptipng environemtn; lower level access than a scripter needs. It is not the right thing.

"You had UFO3 roboab branch!" That is how we knew we had to kill it.

Thanks to all the contributors, here is a

Thanks to Rich Roat, who allowed people to noodle on this on company time with no clear benefit.

Tal wrote the bulk of the initial bit and thanks to everyone else.

I finish with this great qote from Dwiggins [it is a great quote, about getting closer to The Machine from 1932]

Erik: Thank you ben and XYZ Type for sponsoring the coffee. Next up, Bianca and Denis from DaMa


Software-agnostic Font Development

Bianca Berning: first background info. My team's tool development. I attended the last 2 robothons, my first ever type conference in 2012 :) I like best talks that show the background thinking so I wanted to present this. I wwill tell you WHY we have a team of people dedicated to tools in the first place.

In the last 7 years of my life is related to this. I joined after MATD in 2011 and just beore i arrived they got a big custom type deal from nokia with a large scrope; 18 scripts ordered in 2010. Klingon for fun ;) Back then DaMa had not enough people to do this project or other big projects since. So we expanded quickly. 2010 had 13 and in 2013 here were 51. We trid to stop the rapid growth and then restructure. We are now 47, divided in font developres, as 2/3rds, and then 1/3rd are support staff in operations, client services, business development, and skills & process dept. Making fonts is like riding bikes in a pack.

A pelleton is a cyclist gropu who steer close together to protect themselves from the wind. The formation is varying with the wind direction bu you can say it is a collaborative effort; the front person sets pace and sharing the effort preserves energy and covers a longer distance together. If you try to make it on your own then you know that the more you can focus on the fun parts the better. We have a core who do the work and then the people who get you new projects [ lol video ] and help you hand off to clients [lol video] and then the learning and skills dept that I was in. Imagine you have a workflow where everyoe did their own way, and then you scale to 30 people.

Paolo Mazzetti joined at the end of 2011 and I joined him; he and I started to put order into the workflow and this became a "QA Dept" in late 2011 and then Michele and Denis joined the team and we rebranded as "Font Reliability Engineering" and I dont quite know why they used that name, but the idea

Paolo left in 2013 and we took this as a way to step back and review what we did and what we should do. Every designer and engineer should have the same foundation to maket he same quality. So we added training to the team's scope. So you get people to learn the company culture and tools. Michele had a lot of time spent on training. He went to become a designer, but he wants people to speak the same language. When all people understand all other people's jobs, then that freed us up. We had time to look at workflows and make desigenrs' lives easier.

Sam Desborough joied in 2014 and then and Cosimo Lupo joined in early 2015. This introduced FontTools, and sadly for us but good for the community he left to maintain FontTools full time at Google.

Jany Belluz and Nikolaus Waxweiler joined the team.

Jose Sole made this 'gext' axis demo.

Another project for a client to reduce food waste; we made a script to autotrace with variable path length a

Our aim is to get a font editor agnostic workflow. Editors available today are fine for small teams, but for a team of 30 you need to swtich apps to get the strongest parts of each. GlyphsApp is used for the isolated tasks, quickly designing with MM, but maybe moving to FontLab for the next stages. Large teams on multi weight, script, style projects are not typical users of font editors. I am not pointing fingers. We are not the ordinary team.

But that is why we have a team who are trying to work around what is out there.

An insignificant example, why we dont just use one. In FontLab v5.0.4 all units are shifted by 1 unit wen you export if they have a negative position. We noticed 4-5 years ago. It is hardly noticable, and our large customers need releases remade after years. If clients ask for an update with more language supoprt then we need to be able to pick up VFB files and if we use ANY OTHER VERSION then we have to fix the offset or WORSE, fake the bug. That is what we mean by uber reliable softare. We do not want to break something else. That is why we have this team "skills and process" that helps us be less reliable on any one font editor. Denis has led the project and will walk you through the details now :)

Denis Jacquerye:

Hi, I'm Dennis or Deni, and we have been working a while now on "reproducible font buildling" with control on our source files. With clients you need to pay attension to many deatils, and you hae to make a release. When you look at our company, we want anyone to make a rlease with the samd standard. Some proejcts run very long so we need to be sure prevoius parts dont tall apart. We sometime need to be able to work under time pressure for a client.

So we looked at source formats; of text formats, UFO was the best option, it is readable, close to plain text.

We wanted version control, with text source files that can really help to compare versions, so we use Git like everyone else.

Controlled Builds, with Fontlab we didnt control changes from version to version like the 1 unit thing, and preferences on one machine it may not be the same TTF output on another machine, so we fully embraced fontmake to build OTFs and TTFs.

Automatable Builds, we looked at makeFiles, you define the source files and how to produce them, so if nothing changed in the sources, it will do nothing, and if only 1 part changed, only those parts will change. We used the pyton library doit and a Github Continuous Integration.

We looked at UFOCentral, a RoboFab macro for exporting UFO2s and non standard things like glyph colors, layers, guidlines, and hint. It was slow, 50 seconds to save a UFO, because our desigenrs would be frustrated.

ufoLab was a similar things we built, it was MUCH faster, instead of the RoboFab stack, it went from FontLab API to ufoLib, it was UFO3, 10x faster, standard colors layers and guideliens.

We also used MS VTT for hitning, which allows where to snap points on the pixel grid, and stores that in plain text format, VTTalk.

We have vttLib online as open source, so you have UFO source, then make TTF and add VTT hinting, and there is VTT data in a binary that is added to the UFO deerived data. So we put that VTT TTX back into the UFO, and then can compile that.

So we can generate and ship fonts with no human errors.

fontmake is the TT generation tool, based on many open source libraries like ufoLib, defon, ufo2ft, fontTools, glyphsLib, cu2qu, MutatorMath, booleanOperations, and we've had a hand in pushing all these forwards to Python 3.

We also haev internal tools.

ttfix is a cmd line tool to change flags, like the font name or other things.

ufofix that does similar things to UFOs, and also normalizes.

ufo.merge and ufo.update allow us to take glyphs and kerning pairs from one UFO to another. We use them for Latin + Arabic fonts, instead of copy and paste, we use this to quickly update the arabic font.

kerntable is used for powerpoint users to make a KERN table.

damafont is used for things specific to our foundry.

We also contribute to glyphsLib as it is a great tool for some things and Glyphs.App goes to UFO + DesignSPace, but we didn't like having 2 source files, so we decided to focus on UFO as our main source and generate glyphs files to work on temporarily. That will be merged soon.

Git is used a lot, and you use it to save your files, save the new state that shows you what has changed. You can make a branch and if you are happy you can merge.

CI is so when you commit a change in Git, if it breaks our tests, you make a branch to fix it, and you see it pass the tests in the branch, tenn merge that branch.

Our pipeline starts with unhinted fonts, then we build ttfa and vtt if it is availabe, and so on. This allows us to be confident about larger projects.

Thank you


Behdad

At Montreal I got a report of a lookup overflow. They got around it by rewriting the feature

We don't charge for report but we do need bug reports to come in. we cant fix it if we dont know about it.

Who has expereinced overflows? [30+] good.

So, this is building a merged Noto font, and this is the final compile stage of the thing. It should be done before I finish talking ;)

So, when fontmake takes your features.fea file it takes the ScriptList, FeatureList and LookupList, and we have the PairPos1 and PairPos2 lists and tables, and to write the data is is "serializing the font data"

This is a "simple directed acyclic graph". A simple tree is such a graph. DFS is Depth First Search, made with topological sorting and specifically Post Order Traversal is ucrrently used. This makes A to B, B1, B2, then back up to C, then C1, C2.

Another ordering is to go level wise, A, B, C, B1, B2, C1, C2.

You can also have elements that are deduplicated and thus have several parents; thats a DAG. The sorting can't work the same way. Similarly with a simple tree if I reorder things, it won't work.

Overflows happen because the format doesn't allow such long lists. With a simple sort, encoding the largest one at the end is nice as if it doesn't overflow then its good.

To be able to design a sort that considers size, I moved to a Simple Weighted Acyclic Directed Graph; where each edge has a length. This object can have a better packing algo. SWADG or "WAG" has mutliple strategies for resolving overflows.

There is an extension mechanism. What Just did 15 years ago.

...

A 3rd way is to duplicate.

I also have Dijkstra's Algorithm. He is a good fella, born about 90 years ago in Gouda, and is a major computer scientists. This algo finds the shorted path: take the note you are interested in and pull it up and see the lengths to it.

The extensoin mechanism is prone to overflow; breaks object reuse.

Dijkstra's ordering is efficient, duplicates breakup, and I only retry on breakup.

My biggest obstacle is finding fonts that overflow. Recently people are building more complex fonts; if it overflows, send it to me.

So, this font build in 7 minutes, and I took a little longer.

Thank you :)

Erik: I will be looking up Dijkstra graphs :)


Homestyle Coding

Nina Stossinger

I think of code as a tool in my daily work. It is intimidating to speak to that perspective here. That's why I'm happy to give this perspective some airtime.

So, how I got to coding was atypical; I started with finished and polished tools. The word-o-mat is a RoboFont extension that has gone the furthest, a small hacky thing, I got ambitous to make it better. Georg made a Glyphs version. It gave me as much satisfaction as to publish a font.

I made a thing that people find useful. I was excited to be part of a scene, where people build and share things made so well. That is the impression I got, that is how thins works.

But no, that is only part of the story. It is published which is why it is so polished. Much happens behind the scene. Its like home style cooking; it is healthier and cheaper than eating out of microwave meals, but I could not sell that food.

The woodsman sharpening his axe quote.

"Ideal depth of execution is variable."

Here is a list of ideals for code; RoboFont has introduced a thing so if you have a single point, it will refuse to remove overlap and it will not tell you which glyph. So I had a student with this, so I wrote a script to find the glyph with this.

Buildilng a similar thing, that is agnostic to specific input, is ideal.

Clean modular code is ideal.

Being modular to integrate into existing code/data is ideal.

Easy of use, a UI...

Depending on your situation, those are all good to consider, but they can also be optional.

Eg, Ben Kiel said "I tend not to write GUIs for things, as it an take 2-3x olnger to write the GUI than what the GUI is for"

here is a graph; here are Lines Of Code for the actual funtionalit, then the same again for error cathing, input sanitizing, data handling; and nearly as much for UI.

I have a similar ratio for other libre tools - Suffixer, Touche - and the Biggest FJT Tool I wrote there.

DJR said "if you are doing to do polished stuff, that is a commitment. I ahven't figured out a way to make a plished tool that doesn't became brittle."

Someone asked me for the suffixer, and it worked for me, I had no time to pull it apart, so I wrote the 3 line core of teh method, and that worked for him.

It is amazing time that we are in right now where we can so easily make our own tools. It is revoluationary and exciting that today we can stop repeating work to make tools for outselves.

One off scripts are on a scape of depth of execution that ends up with RoboFont at the extreme end.

Dyana Weissman wrote this nice python haiku generator.

Tim Ripper made this nice lunch picker for COmmerial Type.

RF3 has a keyboard shortcut picker UI; you can make a simple script and bind a hotkey to it, that is a super power.

Shortcuts are OK; this is homestyle cooking, so if your chicken is pre-marinaded that is ok.

I made a right side bearing script that allows me to move a glyph's points on the right side by X units, hit a key, type the units to move the RSB, and it does it. There are 2 scripts for LSB and RSB. I copy and pasted the script for each one. I then went to make a script with classes that would not have the duplication.

But then I decided no, I don't need to; keeping them in sync is easy has its 25 lines of code. I don't need to do that. I can get on with my life.

On the other hand, some things are good to have around for reuse, Eg, the mmpt(v) converter uses a magic number that I don't want to remember.

Lets see a live coding example.

Robin Mientjes made a thing that I wish i thoght of earlier; a die cutter. It takes base glyphs and other mask glyphs and makes 'inline' glyphs. This is really handy.

She also made this flexible enough to apply various operations.

This feels endless. It always amazes me what is possible. There are strenghts to writing one-off scripts.

They are effective and quick to apply practically.

They have condensed functionality.

There is transparency through brevity and simplicity.

And there is a 'practice' effect from writing code regularly that reinforces these.

If you build a huge tool then there is a list of things to maintain, it becomes a separate job to handling the design.

There's code as a noun, the thing you build, and the thing as a practice, a thing that is going on. That is progresaionlly relevant and I don't want one to overpower the other too much.

There is a challanege to writing scripts; Ben Kiel said he often has found himself writing scripts to solve things he already wrote something to solve. And DJR said it can be faster to write a new script than find the old one.

Tim Ripper said that if he could forecast what would be useful again he would then spend more time on best practices.

Henrik Kniberg has this nice cartoon for "making sense of MVP" with "big bang development" where only at the last moment do you have something that works.

Whereas slowly you have something that is ok and slowly add to it.

I had a great idea for a tool, started the UI, and then I have a thing that looks really cool but doesn't do anything.

So this guy has this question relation to the cartoon: "What is your skateboard?" What can you build really fast that can turn into a car?

Think about one-offs this way.

I liked to talk about thing like this, as building a skateboard is less scary/intimidating than building a car. I did a python intro at ASAD Amien, and quickly as possible I taught the class to make assignments with project briefings of things to do. One thing that really suprised me is hat students teamed up, surveyed assignments, decided which wa most useufl, and split the work so they had tools that they shared that would actually be useful.

So, starting with something small can deliver usable results very quickly. This is great for novices to get experience that poewrfully communicates WHY this is valuable.

Now you have a thing that YOU built that you can use in your real work.

Coding is an awesome extra superpower for designers, and i doesn't have to felel like a whole extra job.

So lets collectively raise the bar as high as we can, but also keep the threashold as low as we can.

Python is an amazing gift to humanity to enable that.

I have shared some 'one time' scripts from myself and friends at http://www.ninastoessinger.com/posted/miniscripts.zip only available while RoboThon is happening to review and play with.


Boring Fonts

Indra Kupferschmid:

So, there is the production processes to make correctly made fonts, interpolation compatibilty.

There is a question

I say "yes," Matthew Carter says "no" which he mentions in his TED talk; he is working against limitations of technology. Eg, Charter was written with minimal points and by the time he finished it the problem was gone. Also Nina just spoke on limitations that you can overcome.

but I believe tech limits our work; we amke the type families that are possible and easy to make with out fonts.

We make extensive families that are now easy to do. Sure, why not.

What does our current technology promite? Iam not judging, well you know I am ;) but

  • smooth linear ranges of weights and widths
  • smooth adjustments for optical size, maybe not linear but interpolatied
  • family variations out of the same typeface, a sans begets a serif and slab and decorated as its easy to do
  • consistent details, and certain lettersforms (like my pet peeve, the K with the bar)

I see the K and wonder where it comes from; i guess it easy to come

There was another shocker at TypoLabs in Berlin, a talk from Bob from Monotype, talking about making older type into VFs, and I tought "no no no" as I use Monotype Grotesque a lot, and this is a great thing that will be sad if it is regularlized as a variable font. It is very diverse and not harmonious at all. It is easy to use; only some styles can be used at certain hierarchies. It never bothered me that the wieght can not anumate.

If not all the variants are useful, you dont need to make it variable. This is a historical typeface that will not benefit from this.

This is from the 1926 hot metal specimen from Letterform Archive. This was influenced by Venus and others, I see a lot of Stephenson Blake styles, these are collections of typefaces that were never planned as a series. The weight and widths came one after another, randomly based on what clients were ordering. In this series there is a cohesnve design. That is not as prominent in other series. The S&B people could draw their style.

Also in large wood type, there were made widths with a pantograph that look the same, especially this "R"

But not all type series were made that way; all sizes were different. Bauer foundry especially; here is their specimen with a chunky sans and these are the prominent sans from Stempel and so on. Bauer did EVERYTHING by hand, each size, so the 'a' or 'e' has huge difference. The infamous Breite.

Then stempel in frankfurt, had regular versions of the same typeface. Their Breiten Mageren Grotesk. They adopted the latest tech early.

...

There is a nice analysis of AG in "programme entwerfen". he shows terminals and angles that AG is warmer and all the sizes were cut by hand, not pantographically, and thats why swiss designers preferred it; but then using it interchangably was hard. So then he proposed to make it to a univers system.

Stefan Muller made a restoration of the face on lineto.com and on gardenshapes website soon.

Type Production has always striven towards regularization and there is nothing that speaks against it. Fred Smeijers showed that with counterpunch then regularization is setting in; you make similar stems, and strike a punch at different depths for scaling, and if you mess up you can restart half way. Later in history the Romain Du Roi uses a grid to regularize it; then there is electroplating so you didnt need a punch and matrices, you could buy type and copy them.

German word for copying is "apkufon" [ lol at my notation of that ] where you could make a sans serif from a slab, and make decorated versions with ornamentatation into the soft metal.

The pantographic method was first used in wood type production, and that made also possible the large poster types with widths and sizes and things. Reuse of letterparts for different letters so the detailing or corners were similar.

When the pantographic punch engraver, patendd by Benon in 1885, and 10 years later the engraver meant you didnt need a punch any more. Then on the left, you see how you could make adaptations.

Cheltenham was the first "largest type family ever brought out - and it is sitll growing" says this ATF specimen. Inline and decorated styles. Before large sans serif families spead in Euroep and US, this was THE advertising family.

Then Stempel Reform Grotesque had 322 sizes, many widths, this is the chunky bold serif that we saw, and it may remind you of Venus; it was a huge family. They wanted them all under one name for marketing reasons.

Here are dfferent weights. Bauer adopted the pantograph late. There are regularized sans from them.

Wagner & Schmidt in 1909-1914 sold matrices to 20 foundries across europe under many names. There are many differences aross sizes. Also italics.

Wood type had still arger range; the Unit Gothics from Hamilton, with 7 weights and 7 wdiths; James Todd revived it recently.

Then jumping to phototype, everything was possible to scale and skew and whatever with the negatives; the good foundries still had different models for different point sizes. Berthold had text and display. Good foundries did not do everything that was possible. Bauer's Volta shows a "normgrad" and then the variations.

They saw that scaling had poor qulaity effects.

Georg Trump in 1938 - 1942 made Schadow, a very inconsistent family. So the 7 is straight or bending, the ? is right side heavy or centered; the umlouts are so different. There are also different styles that were never produced.

how to make that a digital typeface? Bitstream preserved everything nicely.

DJR made Gimlet with this design; he made 3 opsizes with 4 widths and 9 weights. Its s nice to have everything available. It is so wonky and crazy anyway so that the regularization of the series doesnt do it much harm. It is still exciting.

Here is some glyps like Trump's design, the 'a' has a more organic form in the default but the 'belly' design is an alt. If you see it used then you are remidned of schadow but it is not a revivial, an interpretation of the same thing, and thus its good with another name.

I liek these 'resurrectoins' and 'interpretations' and Id like to see those used more clearly in our community.

Also a typeface using type techn in a creative way is Alice Savoye's Faune. I like that the roman and italic are so different. The italic is not a secondary style for sligh emphasis; its for completely different things. It will be a variable font and roxanne is working on the tech part of the thing.

Another thing I really like is Buendia, by Cesar Puertas and published with Bold Monday. This is not a type family, it is a set of typefaces that work well together. This is what I describe; you design styles for different functionality, not just a range of weights and widths. the design suggests how to use itself, and the specimen shows that you are using them in different roles and then there is harmony as each style works well in its role.

Some suggestions:

Make more masters, to make designs less linear.

Make more rules, in superpolator, so you can change design features without compatible drawings; at this size or point in a design space then swap the design. superpolator is the one most people know about. THis hamilton Unit Gothic 'a' has a helvetica like belly that becomes a bowl counter at another size. You might want straight sides in the condensed style that become rounded.

Make more gsub and gpos rules.

Do less copy and paste

Make less use of components. Not make everything so same same.

Here is a comparison by Peter Karow, an analysis. Here is Georgia compared to Quadraat, you see how everything is different, but it feels harmonious and warmth, and it gives a good readability (maybe even for dyslexics although maybe we didnt agree on that yet ;)

Do rethink family structure. Sorry this slide illustration totally sucks :) Don't photograph it! To be a variable font, a jobbing typeface might need axes for jobbing that has subtle variatoins. Or an in-your-face set of axes that have huge range, so that the users have a way to know what to do.

When I used MM fonts in the 90s, you did not know what the possiblities are. We have to give users help. Document the possiblities. Dont prescribe, but show what is possible with them.

Do less directly derivative design variants. Maybe your slab variant is named something else, not "Whatever Slab", so that people pick it up by itself and pair it with another sans, so people make less predictable designs.

Thank you.


Catherine Dixon

Hello Dan Haag!

Its noce to be back; I was invited to give to TypMedia students last year, on making things and why it still matters and a talk I did at typoday berlow.

In eye, I wrote about David Pye's concept of workmanship, "Strategy is not enough"

As a set of thoughts, some resonance with the DIY theme of Robothon. 6 years ago I watched the livestream and all I could remember is 'blue fuzz' ;) My slides are abstracted words from a few quotes.

Some DIY is just about another kind of need. Here is the DIY Dalek blueprints from the 1970s published online. Thanks to Tim Donaldson for sending this.

DIY can be a craft activity, a financial neccessity, a lifestyle choice?

DIY in design is a kind of 'Design democracy'; it is more self dricen, amateur design that is carried out closer to the end user?

This democracy has been enabled by new tools; eg Letraset, and Dan Rhatigan has 2 great talks about how that opened up design on Vimeo.

Graphic Means is a great documentary and here is a post screening Q&A at St Brides where I chaired a panel. There is a talk about liberation about how tols freed people up to try things out. There was a complex politics to an industry shifting; the agency of some came at the expense or redundancy of a lot of people, literally, and things changed for some people in a not good way.

DTP opened up layout and design tools, even type design, as a space for 'ordinary' people and even automation. Does DIY free other people from our professional grip as designers? Eg, the Google logo is designed in-house.

Here is a poem 'hand and brain'; Laura Potter says that the screen making things all in one place and seem to be flatter, this may not be a good experience for those trying to make a living through making.

Where is your added value as a designer? If it just taste then prepare for redundancy, as the world is questioning why your taste is better than theirs.

This leads to a rejection of form and an emphasis on thinking. Here is visible language 50.1 in April 2016 from Meredith Davis. Here is Kenneth Fitzgerald about the existing order that is being destroyed; a lot of what graphic designers are doing is causing chaos.

It is ironic that desigenrs instagram the vernacular to package back to the world as 'design.'

The retreat to thinking: Adandon ship or play on? (Titanic band played to the end, headline page image)

Norman Potter in 'What is a Designer?' in 1989 says desing is ...

For me, 'Richard Hollis Designs for the whitechapel' published in late 2017; Chris wilson takes one client and talks about how graphic design practice emerged with this. I had a twitter rant (in a good way) about it a few weeks ago, saying how useful this book it; it hsa a chapter on our keynote :)

A great quote, ge talks about the "dismal uncoupling of head and hand" when thinking about design. A similar from Matthew Carter that Nick Sherman tweeted recently.

Making is a means to understanding; lettering is not type. If they can understand where letterforms came from, what they were made for and how to use the, then they can understand the forms and the world might be a richer place.

Paul Barnes "Marian" is an extraordinary piece of historical design for understanding the origins of things. Innovation lies in tradition. The methods of the past are instrumental in how to move forwards.

You have to be wary of fetish and nostalgia; this is a great quote from William Gibson.

Making things matters. Making as a means of knowing, really knowing. Here is matthew crawford, 'the world beyond your head,' 2015. "The less situated [workers are] the better."

Then this quote about outsourcing making to those who have the skills, or learning the skills from youtue videos. Collaboration can be positive, youtube has a place, but what we do is more complciated than that.

Norman Potter says "it is not difficult to be personally creative and culturally inconsequential" in his matchbox maxims in 'what is a designer.'

The murti literature project relies on people who know what they are talking about; John Hudson and Fiona Ross and Rathna worked on this, so that for the first time peopel can read their own literature mass; a 100 year publishing project. That can only come about as people know what they are talking about and specialise knowledge that you can not find on YouTube. There is a common framework for the design and the types used in these books.

Ideas can't make themselves. WHy does so much of what is talked about in TED not make real world impact? We have a low cost of prototypes and this makes tinkerers and inventors more prominent.

Here is a UK shed catalog; a symbol of that culture. We can have great ideas but they need to land.

Making is a way of thinking; I like Cyrus' exhibition title this evening.

David Pye, a ceramacist, on 'the nature of workmanship,' and he says 'design is what can be conveyed in words and images, and workmanship is what cannot.' There is workmanship that can be automated, as Petr warns that will be automated, and then there is workmanship of risk; that the quality of the result is continually at risk.

I think new formal possiblities open up the space for new thinking.

Tobias in Q&A he says 'it is a solution in search of a problem' which I think is a helpful thing; design does not always need to solve problems. I like the potential for VF in complex scripts. I see collective discussion of possiblities, and see a model of design where we create new forms and then find the problems that they can solve. Sahar is central in this imaeg at typolabs talking about complex scripts VFs.

How to repond? We should talk more about why we do what we do; in emphasising surface, people dont learn how they work.

I am sick of type as a mood board. I don't want typefaces as friends. Substance not surface. I would like us to talk more about what we do; the mistakes, the confusion, what we tried that did not work. There is no failure in experimentation, only results that are all useful.

...

Here is a nice tweet about the need to engage with others from Jared Spool.

Type is a little bubble within the typgoraphy bubble within the graphic design bubble. Who else do we let play in our area? Peter Hall said there is

Indra said yesterday we need to help out graphic designers.

When are user options failures to edit and make a decision?

in VF, people talk about designers, but I am not sure that they really know who is using type. Given how fast graphic design is changing, do these people really exist any more?

What do we do about seeing a shop sign of misused swash features? Critique, how helpful is it? Would a blog about how to avoid this be more helpful?

Too generous? I'm a teacher so I am not trying to stake out a professional territory. I think designers will lose that terroritory anyway.

Here is Paul Stiff in 1993, saying graphic design traditoinally done will die.

here is a piece on automated graphic design, speculating from 2025, all the designs that have been released have been learned by a roboto. "The death of DIY" it says.

Just talked about how burying our heads in the sand is one way to deal. Johanna Drucker says that we are so caught up in these complex systems, our agency is reduced.

Fracoise said "find our niche and keep looking out" and my last words build on her optimism. So I close with a quote on the 40th anniversary of Douglas Adams radio play THHGTTG.

Thank you.


Kerning Analytics

Frank: My first Robothon was 2009 and this is an amazing confernce; it changed my life.

So this is an A and V and then this: this is kerning.

We love kerning.

Multiple people in this room are CURRENTLY kerning. It is a meditation for typeface designers

What is the problem? I think it has to be done, and by humans, but it is a lot of work. Here is a family I worked on, 12 masters, 6x roman x italic, and we have SUperpolator to deal with these masters.

And metric machine, also just as advanced.

With 6 or 12 masters, it is a lot of work. Almost 12x as much work as 1 master.

Kerning is not as so simtline. Just tweeted 2016-12-20 aout how it is non linear.

Here is L'A which is common. We are using advanced tools but somtimes dated methods. Tal is a great developer and a blessing to us all.

We use scripts to transfer, scale, interpolate, extrapolate, randomize ;) And we need to still kern one master.

How to scripts look in a design space like THIS (not rectilinear)

Relationships are more important than the poiles. How can we visualize relatinoship between masters?

Drawbot is the best way to do it. I use it a lot for production work and generating a repreationation of kerning across the 12 maters that looks something like this.

This is a random page of a PDF with 1000s of pages.

It is painful to see this kerning value stick out like a sore thumb; this is a pointless kerning pair.

The most frustrating thing is that this curve can not be adjusted; it is not interactive, these PDFs just create more work.

When you think about kerning and think about how to handle a big amoun, you write scripts; remove small kerning pairs.py and remove small kerning exceptions.py and specific pairs, and cross script pairs, and stupid ones; this thing gets frustrating really fast.

You write a script, it becomes a complex script, then there are 2 and then 3 of them. Too much code!

What is the real solution?

Nina mentioned this; A UI.

I made a UI. Here is the PDF turned into a UI. This opens 3 masters, this opens 6 masters. We have the graph as before; the main point of the extension; ou move the slides to adjust, double click to remove a value. Uunder the graph there is the 31,784 kern pairs for Latin, IPA and Armenian. I made some filters for this; what about pairs with the same values across all values; should that be the caes? Zero value pairs? Long distance pairs? Outliers that are 5x above the averge, and the exeception of course.

There are buttons to do common operations; delete, average, equalize, interpolate, +10, -10, +10% and -10%. The graph has checkmarks for saying which is the source pair. The percentage ones seem to not make any sense, they are not even hooked up, but they nicely fill in the space ;)

Demo!

You can go through the lists, here is long distance pairs, the 200 pairs that cover the most distance. Good to look at them. Same for kerns less than 5. Maybe not really needed.

The interpolation operation is maybe not really needed. In a "v" shape it will invert the V and make it wider and wider, lol

A good extension needs a good name. THis reminded me of a graphic equalizer on a music tool. So I added the presets on the right with names like 'acoutic' 'jazz' 'rock; [ lol ]

So Kerning EQ was a possible name. But I finally deiced on:

http://Github.com/adobe-type-tools/font-a-lytics

it is a WIP, only for RoboFont 3, it is in Python 3, and place back up your UFOs before you use it as it might do strange things. Always back up your UFOs.

What is this for? Post processing existing kerning. Quality control. Also extending kerning to additional masters.

What is it not for?

I don't want to replace Metrics Machine, and I don't want to automate it.

KNown bugs?

Interpolation button is strange.

...

Roadmap?

Add a way to reorder UFOs; drag 2 sliders at once. Load design space files. Have better keyboard operations. I would like to work with Andy Clymer on kernTroller. And I would like iTunes style list filter options. If you want to make a list of music, you can add many filters, and that's the kind of OCD thing you need for kerning. The current filter list is just what I came up with.

Nice to have things: Undo, MM pair lists, colored exception pairs; kerning in Context (that will make the window big), and even supporting unrelated masters. Can you kern 2 type families at once? And making the window truly resizable, as the canvas is not quite working well.

Existential questions: Once a design space is loaded, how to visualize kerning values in a multi-dimensional design space?

SO, please use this extension.

Sadly this was NOT written in Kern County, California.

I would like to see UFO extended for kerning.

We nneed to store contextual kerning; we have only 2 pairs but we need triplets.

And Just's video shows that we may need a "for kerning only" master, that has no glyphs. That may be a can of worms.

John Cleese didn't think about kerning, but here is something different; Some FDK News.

Some keybaords like code testing pep8, code review, git flow, and so on are not commonly heard around that project.

Christopher Chapman has inspired us, a round of applause for him. Read ROberts and Miguel have been working with me on FDK with renewed interest, and working with Khaled on various tasks.

Teh biggest news is that it is now installable with PypI using Pip! We are still in the brooklyn BBQ restaurant: Now you can run pip install --user afdko

This is now all in the README.

Also its possible to use your own python, like on Homebrew.

The "finish install" script is gone. We are using modern tools, code coverty is now 1% and this will improve; that is infinitely more than 0%.

CheckoutlinesUFO.py is changing a lot; major code cleanup and improvement, preparation for UFO3, and adding back some options from original checkoutlines.

We are rewriting the autohinter, untouched for 20 years which had some pride for some reason; we are wanting to hint variable CFFs.

PSAutoHint has 64% coverage. As a result, our FDK repo is like this shower; a lot of ocmmits now.

https://github.com/adobe-type-tools/afdko

Finally, back to the kerning extension. It was a lot of work. It is not perfect. But I work on this not only as a hobby but 2 weeks of company time on this. I am very grateful. This is the right way. Companies shoudl give you time to contribute to the community.

My extension has no effect on Adobe's stock price, but it is useflu in the long run.

Extension Ethics, or Extension Karma.

RoboFont extensions are great; They have freedom and they are free. You should dedicate time back to "the Community" and this is them, here today. They are all here. I want you to invite you to appreciate them. Youc an donate money to repos, or donate time. I want to invite you all to consider that.

I appreciate the community a lot, also the Python mentors, Frederik and Luke Lemontree. F told me something I loved to learn: Eerything you can draw in Drawbot you can also draw in a NSView; you can draw your own UI. This blew my mind, and it was very useful for me.

Also: Here is Yanone talking about Autopsy in 2009. Without that I would not have had this idea. Thank you.

I appreciate all of you, this is a great conference, thanks for listening to me.

@adobetype and @kioskfonts is me.

Thank you.


Type World

Thanks for inviting me to be here after a long absense.

I have been thinking; I want to sell my own fonts a year from now. I am still a type designer. I dont like the optinos for distrubiton channels.

The same corproation taxes you 50% to acess that market. No other industry charges 50% comissiosn; I don't like the bounty of my labour goes to shareholders only interested in profit, not type. Profit for profit is not a model I want to support. Complaining about capitalism doens't work, god knows I try. When you complain, it gets better at profitting from you.

Type Drawers tosses aronud ideas, a crowd of indivisuals can not agree to join forces to focus and donate time. That is a prpbolem. Captialism has no trouble to focus on tprojects with professionalized profits. I will publish my fonts on MyFonts, as I need the revenue. I know many do it the same way.

But how to increase visibility of independent type founders? It is not like the internet age needs middlemen.

My first answer to the question: how to connect customer to producer directly?

A one click installer.

Demo.

http://github.com/typeWorld/referenceServer

This is a python program on Github, you can start it, ir runs Flask server, a URL you put to your browser, and you see JSON respnoses like this one.

A canonicalURL, who to contact about it, then supported commands; then a licenseID that you publish your API data under. It is mandatory adn teh default is the most restricted CC liense that prevents commerical use, so you can retain full control over who uses the API endpoints. This is machine readable so that you can write clitents that act on it.

So here is a full response for the installableFonts command; the userID is anonymous and you ned to connect that to your license list.

Here is the desktop client, you see there are 3 fonts, not sorted as its WIP, you can install them. The UI is lcoalized in german, only English and German exist. The reponses contain all the descriptions in all localizations. All strings are multi language. Living in Jordan has changed my view on non western thinking; RTL is not fully supported yet but wil come soon.

There is a object model diagram.

Here is another demo, my yanone.de website has a new downloads page that uses this; say a customer purchases 2 seats, they have a link that opens the app, and you see the font has 3 versions that I can install. later say you purchase another font, well, this is not working on my laotp. But hte points is that a subsetter will be included in the UI so hat you can make a small caps only versin of a font or so on for larger fileszie desktop fonts subsetting for web fonts is important.

So now you can refresh the installer app and you see the font is now available int he list, and I install it, and i see it here.

SO you have your own choice.

http://www.typeworldserver.com is a service if you dont want to run your own server. You can see I have an org account there too, I clik the app link and the org appears in the apps list, and you can see how this installer allos you to install versions. I plan to add a auto update feature that users can opt in after they understand what can happen (reflow)

The typeworld server is targetted at custom type crowd who dont want their own server but upload and share fonts with clients. The UI is very rapid prototyped but it all works, you can upload a new version as a type designer.

So, next? There is Github based subscriptions; this is a example with Yanone Kaffeesatz. The UI reads the commits and parses the commit message, so it sees this Version: 1.003 commit and uses that to show the version in the app.

Don't copy and paste Github URLs into the app at the moment, it can brck the app. But you see the "add supscription" FAB. The UI is all made in JS, and I can see the app and websites using the same UI code. The Github user auth works too.

This github thing is not yet documented but this is how the layout in the folders can be made to work in a practical way.

There is also a https://typeworldserver.com/validator to vlaidate your APIs.

I need financial support. this will be open source. I did not deide the license but it will be permissive so that commerical operations can use the code. but you as type publishers are protected because your API end points can only allow non commercial use. I didnt decide a fincnial support system; corwdfunding or a few company patrons (especialy custom type people who can use this in a daily workflow.)

I acept beers but to say that you can support me seroiuesly, a 5 euro donation wont help so it starts at 100 euros.

I want this to be widely localized, so there is a translations sectoin of the website.

Why is it free and open source? Why not monetize it?

Open soruce is a good way to earn your trust, because why would you trust yet another project that wants to profit from your work?

On the other hand, I do need support to make this. The timeline... Today is the first public announcement, so this begins the public alpha phase. I think i've made it simple enough to start with.

Please play around with it, point your app at it. Try it out, prpopse changes. I may hae overlooked things; I only started it 3 months ago. Propose changes, there may be serious logic issues.

The API will change in future, so be prepared for that. I expect in 6-9 mnths it will be stable and then bug fix only.

Why typeworld? It is braoder than a font installer app. I think many interesting things can be done with APIs! So the name does not limit it.

The future is unclear but I hope it will help everyone.

Erik: That was almost subversive ;) AFter lunch, a few more talks and a movie. We should be done around 3pm, an exhibition, a party, and a dinner :)


Speed up!

Mark Frömberg:

Hello, welcome back :)

Show of hands: Who uses the main editors?

I hope you can cut your own cloth from these ideas. I hope to have a versatile collection of tools.

mark2mark is my alias, I graduate here in 2014, my best year ever, and my final project was a tyeface for ...

I have some LGC and recently Thai, Khmer, and Myanmar. I learned working on those scripts to have ideas that would not come up in Latin. Changing perspective is great in general and to inspire new ideas.

At the last robothon, Rainer showed plugin development for glyphs, and was excited as I had learned how to write extensions at typemedia to customize my workflow. My own tools shaped my output and how to get to the output.

RoboGlyphs? These are not tied to a specific editor.

Why do I do this?

I am not a big mathematician. I can be plegmatic. I try to avoid laziness by coding. If I see something being done over and over and I can't sleep if I don't automate it. Many daily tasks are comparing and analysis, and I like to react to things you see right away.

Why tools?

Speed. Sure you can do things by hand but producing things in less time makes products cheaper or even possible at all.

Health. 1,200 mouse clips can hurt you. CJK fonts!

Errors. We are human and make mistakes on seemly routine tasks.

Freedom. There is versatility, you dont wait for anyone, you go do it now.

So, what can tools offer? In Glyphs you toggle things in a View menu; this is clear in a default set up but with a lot of tools it mounts up. I cloned the menu in the sidebar to make them all one click away, so I never use the View menu any more.

Also a 'blindfold' mode to cover everything on the x height, so you can focus on the spacing pattern.

Arranging windows so that you click one button to arrange things.

Sync tabs, after I saw Toshi's extension to do this it had too much clicking, so that regular/italic views are synced all the time.

Show Rotated was easy; to show symmetric shapes, its nice to see a rotated copy under itself.

Kern Groupie, for setting up groups in a visual way.

Last quickie is "Show Stems Pro" which shows measurements of stems against the key values you record. It works not only for Latin.

So, now to the actual stuff. From problem to solution.

Skedge.

Is anyone else annoyed by the effort to sketch out a plugin? You have many steps; go to the GlyphsSDK repo on Github and download it, then you find many folders, templates, samples. You get to the reporter whch you copy and rename to what you want. Then you open it in a code editor and rename placeholders with your own nmae. finally you write your plugin.py code. Then you restart glyphsapp, and then you see a glyph drawn in blue, that is what the template does. Cool?

Too many steps for me. To make a glyph red, you go back to the code, restart glyphs, and hope there are no syntax errors or you have to repeat. A lot of steps. This is intimidating. Can it be faster?

Say you change the color and see it.

So, install Skedge and then you have a code editor and you can write a simple code of the script.

I used this to make an offsetPath script, that had a lot of trial and error.

Or, a nearest point on path method. You can check mathods this way.

https://Github.com/mark2mark/Skedge

I link to the GlyphsSDK and The dveloper Kit to help you play arond with it.

It is free and open source.

Next, Show Siblings.

I see myself and many type designers doing this: You draw letters and want to compare to similar shapes. You want to use background latyers; components are live updated hwhich is good, but if you want the points, you must instantiate it, and this makes a lot of background layers which are junk after a while. I expect we all do something similar; that is how things are.

But it makes my head steam. So, this plugin feeds your canvas with these siblings, and htis is (like all my extensions) in the plugins extension packager. But only in a basic earlier form.

Show Sibglins Pro 2.6 is proprietary version that has different fills/stokes and on overlap or not, cna have several siblings ar once, with an offset.

It highlight when the nodes are compatible.

This is not released yet but will be out later this month.

Next, "OT Peeper"

You have OT code that is simple, sub a by a.ss01 but this gets tricker with non latin. eg, raMedial-myanmar.bt is not unusual, but it taeks a lot longer to read it and understand what it does. That is a simple one! A stnadard 3 glyph ligature is like this, there are 100s of things with 2 or even 3 glyph name extensions. And they all have their own behaviours.

How to deal with this naming? The Glyphs search field is OK.

But, i n the Font Info > Features tab, I have a visualization at the cursor which shows you the glyphs when their name is selected. This also shows sub rules. It can be used to insert glyph names.

There is an ellipsis to show many glyphs.

I would also like to preview GPOS features.

If you open a TTF file, Glyphs decompiles feature code, and all these auto named glyphs can now be understood.

4th and last, Stem Rhythm.

In Khmer, you see this works different to Latin. This is a recent design I started, its a demo. You see the distinctive texture.

Usually they line the stems on a grid. There is letters with 1 to 4 stems. In Latin we reduce the counterforms with 3 stems like 'm'; the same happens in Khmer.

Romnea by Sovichet Tep, a very smart Cambodian type designer. What is this pattern? We have a side bearing from stem to origin/advance width. Then stem width. Then counter. The sidebeeaings and stem widths should be the same, but counters can change.

You could manage this by hand. Or you could automate it :)

So, we have a pattern in stems; every master has a customParameter that specifies a key glyph name, and then you add the stem width. Then you see that glyph's values as bars that you can draw to. The red lines turn green when the layer advanceWidth is corect. There are surely optical corrections needed by you can use this as a way to start spacing your typeface.

I developed most of this in GlyphsApp and then made a plugin.

To conclude, some tips!

First, see the problems in your workflow; dont take it for granted that it was always done tht way. When there are huge unsolbable tasks, just go to small tasks one by one and it will build up. Change your perspetive can help, consider your users, and get beta testers to help you find flaws you would never see.

Your quality is only as good as your testing and proofing setup. Set yourself up to catch errors.

Finally, james Edmonson asked me to show the greatest tool of all. Back in TypeMedia days we 2 collaborated with Alex S-D on this: "Butt on".

All the not public plugins will be soon on Github or my website.

If you want me to make tools for you, ask me.

Thank you to all those here, and thanks especially for the big shoulders to stand on.


Linebreaking, justification and variable fonts

Bram Stein

Here is steve jobs on the original iPad, flipping pages.

"This is what its like to read a book" he says.

Here is Jeff Bezos on "the paperwhite display, with 25% more contrast, whiter white, blacker blacks, 62% more pixels."

So there are major issues I noticed with these annoucements. The word spacing!

You can drive a truck through them.

Those 2 products are fixed, but this is still aproblem in browsers. Here is Chrome on Android and Safari on macOS.

This is caused by bad line breaking and the lack of hyphenation.

So lets look at how they work.

The principle is simple; The letters are block with space as a regular block size. The first word first my col width, then the 4th word does not fit. So we move to the next line and repeat. Then we are done.

But we have a large red margin.

How to use that extra space? We can see this is all left aligned; we can right align easily, and also center easily. No rebreaking.

Justification is harder; you can count the number of word spaces, then devided the remainder space by that, and add it to each space. Last line is a special case, we leave it alone. In this example, its a 'greedy' algo.

Here is the same algo on a real world paragraph. How bad is this? We can draw the extra space to see where it was added to each line. And we can graph the spaces. This is live, so you can see me resizeing the col to see how it changes; and you can see in narrow cols it gets very bad.

To improve the score, we can set break points; where a line COULD be broken. Without hyphenation this is where the word spaces are. If you look at the col width against a long single line, you can see that the col edge is in the middle of a word. So we deactivate the prior breakpoints. This is a visualation of the greedy algo.

We can do better by adding more breakpooints. 'hyphenation' becomes 'hy-phen-a-tion'. Now we see the breakpoints have 2 kinds, word space and hyphen. My engine ignores hyphenation for very short words.

So this is ehond and this is after; you see the change it has on the overall score.

Hypehnation can work for left, right and center aligned text too, to get a more even rag. It has a lot of value!

Its possible to do even better.

We can use flexible word spacing. When a word ALMOST fits on a line, we have to move it to the next line, which creates a LOT of extra space. Instead, if we slightly contract the word spacing then it fits nicely.

A short word can move to the next line if we increase the word space before it a little bit. If you do this for every line, it makes a lot more break points.

This means that we have sevearl break points that could be used for a line; and as this goes long the paragraph, we get more and more paths.

This is a mathematical graph, and I used some clever dynamic programming to search the graph in a managable amount of time. Here is the optimal path.

Hypehnation introduces more breakpoints, and flexible word spaces too. Here ie simple greedy before, and here is the fancy after. In a wider col this is sublte, but in a narrow 250px col, it looks MUCH better.

This is what TeX and InDesign and other professional algos do; its the Knuth-Plass algo. In 2018, browsers still do not use it because it is too expensive computationally, they say. I do not buy that, but still.

Variable fonts add to the picture!

VF have a width axis which is interesting for line spacing. Inspired by DJR, I started to wonder if the width axis can be used this way. I modified a JS algo of the KP algo that I made a few years ago to test this.

Here is before and here is after with a VF. This now hsa ZERO word space differences, but the 3rd and 5th lines are quite wide and the 4th line is quite narrow. Overall I found that the maximum of + and - 5% of the regular is better; after that I can really percieve it. It is subtle stuff.

With only a 5% change, there is only a little extra space left.

There is another before/after with a 250px width. This reduces the score by around half again!

Next steps?

Try with more Variable Fonts; I only have a few VFs to test. 'wdth' axes may only be codensed which is not ideal, please EXTEND your typefaces :)

I would like to figure out better percentage, and have smarter consecutive designs.

Demo!

I wrote it in JS, not python ;)

Georg: [ some suggestion ]


What makes a script modular? Code as a research tool

Erik: I saw these great movies on Twitter so invited Maurice to speak here

Maurice Meilleur:

I am used to speaking to big crowds but this is my first design conference. I teach design in Appalachia.

You all know www.fontstruct.com and you know it. I give it to my students to use as a first type proejct, and most of their stuff is like this; an arbitrary shape and tracing preformed letter ideas.

I wanted them to dig deeper and move past what an 'a' looks like and tracing that.

So, Wikimedia Commons has this Trajan col photo. A script is a system of forms to represent a writing system; and modular is a structure expressed independently of its traditioanl relationships.

Obviously, scripts have writing systems and vice versa. script are traditionally used to represent other things; stylistic models like roman square caps, italian chancery hands. Also tools used to render them; chisel and stone, Seb Lester's quill. Dan Rhatigan's type on screens. Somehing rendered in one may reference another; Trajan font references stone. Many distressed wood type fonts.

Scripts rep entire cultures or genres of writing. Traditionally the script itself is not considered on its own right; but there are scripts that do not rep tools or materials or genres, it is independent of them. The Albers alphabet; where you can only decipher the letter in reference to other letters.

Radim Pesko's is nice, Muir McNeil's.

I am trying to account not what every designer goes through but what constitutes these scripts as modular. I use Paul Lohse and Paul Berger with a famous essay on cubism. This is a WIP but where I am right now.

There are 3 stages. A script is a design space, a matrix of spaces, spatial relatinoship, and rules.

Alber's kombinatrix script shows the regularlization, which becomes anonymous and interchangbable. Really here are 3 forms used over and over, square, circle, and quarter cirlce. Here is Arnhem, bdpq, here is the forms becoming more anonymous. Albers had simple rules; only certain orentations were allowed. When the rules are constrained, the design space takes on its own life. this 3x5 grid separates letters from traditoinal relationships. What is an F? If you see this on its own, you wont see it as an 'f' but when you see the system then it becomes legible.

Here is a typeface of my design that I'll return to. Wim Crowels' "new alphabet" and the "A" is this the "moment of modularity" where a script becoes independently expressing structre.

If I accept this 'f' as an 'f', what does the extention of that to eh alphabet look like?

"Kast" is a teaching aid typeface I designed for students; its a 2x2x4 cube structure with shading, and lighting from various directions, and what if you instead of removing cubes colored them.

Then I built the letters in paper and photographed them. I realised it would take 25 years of nonstop work to make all possible combinations of this design space. So I gave up on that ;) No, that brought me to Python. I took Just's 2016 Typographics Drawbot workshop.

Here is my output; its a complex project but this is "all I had to do." Describe the projections of the 3D cubes in code, how to position them in a stack; how to describe contiguous faces if they are touching, as a single shape. Count in binary, so there's a cube there or not; some 65,536 options. A 16 bit binary array that maps the space. then make frames from that. Then animate the frames.

This is a few dozen lines, tops. This should not be your first project after an itnro workshop :)

Here is the /mp4 output, its 4.5 hours to visualize half the space, because of the memory limits of my computer I had to stop there. Then I output 64 cubes in a 8x8 grid so its just 4 minutes :) This is projected at the faculty gallery in Boon and you can visit to see this on our wall :)

Then I applied this to Alber's kombinaschrift. http://www.monoskop.org His description of the concept is crazy; this is something to apply to metal or glass. Then he has an idea that metal typesetters can use it; this would not help cold metal press type setters ;)

So there is 7^9 shapes, 40,353,607 possible results; this is a 10h53m long video.

Then a 2x3 grid.

The original had 3x5 grid is 4,747,000,000,000 possible results.

A revival of this has 7^21

Letterform Archive is amazing, in San Francisco.

This is the cover of a 1966 grid based typeface on the cover of a magazine by Gurtler.

So, this is where I am now; exploring different shapes in different grids.

I started with python as a tool to do something else; but encoding the work created a dialog about it. Code as tool, code as conversation. Explaining soething to students or computers means you have to really understand it.

I had to explain to drawbot what 'touching' meant.

...